From 24e1f618a7800f5c02844985355b01689be1244f Mon Sep 17 00:00:00 2001 From: Su TT Date: Mon, 30 Dec 2024 09:32:52 -0500 Subject: [PATCH 001/262] Update logo size to be dynamic across different screen sizes --- .../onboarding/welcome/ui/WelcomeContent.kt | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt b/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt index 915585227f..d2151c38f5 100644 --- a/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt +++ b/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt @@ -4,11 +4,13 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.shape.CircleShape import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -19,6 +21,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.coerceAtMost import androidx.compose.ui.unit.dp import app.k9mail.core.ui.compose.designsystem.atom.Surface import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonFilled @@ -88,25 +91,34 @@ internal fun WelcomeContent( private fun WelcomeLogo( modifier: Modifier = Modifier, ) { - Column( - modifier = modifier, - horizontalAlignment = Alignment.CenterHorizontally, - ) { + BoxWithConstraints ( + modifier = modifier + .fillMaxWidth() + .wrapContentHeight(), + contentAlignment = Alignment.Center, + ) { + val maxLogoSize = maxWidth * 0.3f + val circleSize = maxLogoSize.coerceAtMost(150.dp) + val logoSize = (circleSize * 0.7f).coerceAtMost(100.dp) + Box( modifier = Modifier .clip(CircleShape) .background(Color(CIRCLE_COLOR)) - .size(CIRCLE_SIZE_DP.dp), + .size(circleSize), ) { Image( painter = painterResource(id = MainTheme.images.logo), contentDescription = null, modifier = Modifier - .size(LOGO_SIZE_DP.dp) + .size(logoSize) .align(Alignment.Center), ) } + + } + } @Composable -- GitLab From 6ea149e59222fba6bc0d4cc55767cf7ebe0f37d1 Mon Sep 17 00:00:00 2001 From: Su TT Date: Thu, 6 Feb 2025 16:03:16 -0500 Subject: [PATCH 002/262] Slighty reduce logo size, Fix footer visibility and ensure scroll indicator appears correctly in WelcomeContent.kt --- .../onboarding/welcome/ui/WelcomeContent.kt | 308 +++++++++++++++--- 1 file changed, 255 insertions(+), 53 deletions(-) diff --git a/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt b/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt index d2151c38f5..a4ac56c6bf 100644 --- a/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt +++ b/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt @@ -1,42 +1,68 @@ package app.k9mail.feature.onboarding.welcome.ui + +import android.util.Log +import androidx.compose.animation.core.animateFloatAsState import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.gestures.Orientation +import androidx.compose.foundation.gestures.draggable +import androidx.compose.foundation.gestures.rememberDraggableState +import androidx.compose.foundation.gestures.scrollBy import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.CircleShape import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.composed +import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.onGloballyPositioned +import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.unit.coerceAtMost import androidx.compose.ui.unit.dp +import app.k9mail.core.ui.compose.common.window.WindowSizeClass +import app.k9mail.core.ui.compose.common.window.getWindowSizeInfo import app.k9mail.core.ui.compose.designsystem.atom.Surface import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonFilled import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonText import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyLarge +import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyMedium import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodySmall import app.k9mail.core.ui.compose.designsystem.atom.text.TextDisplayMedium import app.k9mail.core.ui.compose.designsystem.template.LazyColumnWithHeaderFooter import app.k9mail.core.ui.compose.designsystem.template.ResponsiveContent import app.k9mail.core.ui.compose.theme2.MainTheme import app.k9mail.feature.onboarding.welcome.R +import kotlinx.coroutines.launch private const val CIRCLE_COLOR = 0xFFEEEEEE -private const val CIRCLE_SIZE_DP = 300 -private const val LOGO_SIZE_DP = 200 +private const val CIRCLE_SIZE_DP = 200 +private const val LOGO_SIZE_DP = 125 @Composable internal fun WelcomeContent( @@ -46,79 +72,255 @@ internal fun WelcomeContent( showImportButton: Boolean, modifier: Modifier = Modifier, ) { - Surface( - modifier = modifier, - ) { + val itemHeights = remember { mutableStateOf>(emptyMap()) } + val lazyListState = rememberLazyListState() + val totalItemsCount = 5 + + Surface(modifier = modifier) { + Box(Modifier.fillMaxSize()) { ResponsiveContent { - LazyColumnWithHeaderFooter( - modifier = Modifier.fillMaxSize(), - footer = { - WelcomeFooter( - showImportButton = showImportButton, - onStartClick = onStartClick, - onImportClick = onImportClick, - modifier = Modifier - .fillMaxWidth() - .padding(top = MainTheme.spacings.quadruple), - ) - }, - verticalArrangement = Arrangement.SpaceEvenly, - ) { - item { - WelcomeLogo( - modifier = Modifier - .defaultItemModifier() - .padding(top = MainTheme.spacings.double), - ) - } - item { - WelcomeTitle( - title = appName, - modifier = Modifier.defaultItemModifier(), - ) - } - item { - WelcomeMessage( - modifier = Modifier.defaultItemModifier(), - ) - } + LazyColumnWithHeaderFooter( + state = lazyListState, + verticalArrangement = Arrangement.SpaceEvenly, + header = { + Box( + modifier = Modifier + .fillMaxWidth() + .defaultItemModifier() + .padding(top = MainTheme.spacings.double) + .onGloballyPositioned { coordinates -> + itemHeights.value = itemHeights.value.toMutableMap().apply { + put(0, coordinates.size.height) + } + }, + contentAlignment = Alignment.Center + ) { + WelcomeLogo() + } + }, + footer = { + Box( + modifier = Modifier + .fillMaxWidth() + .padding(top = MainTheme.spacings.quadruple) + .onGloballyPositioned { coordinates -> + itemHeights.value = itemHeights.value.toMutableMap().apply { + put(totalItemsCount - 1, coordinates.size.height) + } + } + ) { + WelcomeFooter( + showImportButton = showImportButton, + onStartClick = onStartClick, + onImportClick = onImportClick, + modifier = Modifier + .fillMaxWidth() + .padding(top = MainTheme.spacings.quadruple) + ) + } + }, + content = { + item { + Box( + modifier = Modifier + .defaultItemModifier() + .onGloballyPositioned { coordinates -> + itemHeights.value = itemHeights.value.toMutableMap().apply { + put(1, coordinates.size.height) + + } + } + ) { + WelcomeTitle( + title = appName, + modifier = Modifier.defaultItemModifier(), + ) + } + } + item { + Box( + modifier = Modifier + .defaultItemModifier() + .onGloballyPositioned { coordinates -> + itemHeights.value = itemHeights.value.toMutableMap().apply { + put(2, coordinates.size.height) + } + + } + ) { + WelcomeMessage( + modifier = Modifier.defaultItemModifier(), + ) + } + } + item { + Spacer( + modifier = Modifier + .fillMaxWidth() + .height(40.dp) + .onGloballyPositioned { coords -> + itemHeights.value = itemHeights.value.toMutableMap().apply { + put(3, coords.size.height) + } + } + ) + } + + } + ) + } + VerticalScrollIndicator( + listState = lazyListState, + totalItemsCount = totalItemsCount, + itemHeights = itemHeights.value, + modifier = Modifier + .align(Alignment.CenterEnd) + .padding(end = MainTheme.spacings.quarter) + + ) } + } } + + + @Composable -private fun WelcomeLogo( +fun VerticalScrollIndicator( + listState: LazyListState, + totalItemsCount: Int, + itemHeights: Map, modifier: Modifier = Modifier, ) { - BoxWithConstraints ( - modifier = modifier - .fillMaxWidth() - .wrapContentHeight(), - contentAlignment = Alignment.Center, - ) { - val maxLogoSize = maxWidth * 0.3f - val circleSize = maxLogoSize.coerceAtMost(150.dp) - val logoSize = (circleSize * 0.7f).coerceAtMost(100.dp) + val coroutineScope = rememberCoroutineScope() + + BoxWithConstraints( + modifier = modifier.fillMaxSize(), + contentAlignment = Alignment.TopEnd + ) { + val density = LocalDensity.current + val viewportHeightPx = with(density) { maxHeight.toPx() } + + val averageHeight: Float = if (itemHeights.isNotEmpty()) { + itemHeights.values.sum().toFloat() / itemHeights.size + } else { + viewportHeightPx / 2f + } + + val totalContentHeightPx = (0 until totalItemsCount).sumOf { idx -> + val measuredHeight = itemHeights[idx] + (measuredHeight ?: averageHeight).toDouble() + }.toFloat() + + val isScrollable = totalContentHeightPx > viewportHeightPx + + val firstVisibleIndex by remember { derivedStateOf { listState.firstVisibleItemIndex } } + val firstVisibleItemOffset by remember { derivedStateOf { listState.firstVisibleItemScrollOffset.toFloat() } } + + val offsetBeforeFirst = (0 until firstVisibleIndex).sumOf { index -> + (itemHeights[index] ?: averageHeight).toDouble() + }.toFloat() + + val currentScrollOffsetPx = offsetBeforeFirst + firstVisibleItemOffset + + val scrollableRange = (totalContentHeightPx - viewportHeightPx).coerceAtLeast(1f) + val scrolledFraction = (currentScrollOffsetPx / scrollableRange).coerceIn(0f, 1f) + + val visibleFraction = (viewportHeightPx / totalContentHeightPx).coerceIn(0.1f, 1f) + + val rawScrollbarHeightPx = viewportHeightPx * visibleFraction + val scrollbarHeightPx = rawScrollbarHeightPx + .coerceAtMost(viewportHeightPx * 0.2f) + .coerceAtLeast(20f) + val scrollbarHeight = with(density) { scrollbarHeightPx.toDp() } + val scrollbarWidth = 4.dp + + val scrollbarOffsetY = with(density) { + (scrolledFraction * (viewportHeightPx - scrollbarHeightPx)).toDp() + } + + val targetAlpha = if (isScrollable) 1f else 0f + val animatedAlpha by animateFloatAsState(targetValue = targetAlpha, label = "") + + val draggableState = rememberDraggableState { delta -> + val scrollDelta = delta * (scrollableRange / (viewportHeightPx - scrollbarHeightPx)) + coroutineScope.launch { + listState.scrollBy(scrollDelta) + } + } + + Box( + modifier = Modifier + .padding(end = MainTheme.spacings.default) + .width(scrollbarWidth) + .height(scrollbarHeight) + .offset(y = scrollbarOffsetY) + .alpha(animatedAlpha) + .draggable( + orientation = Orientation.Vertical, + state = draggableState + ) + .background( + color = MainTheme.colors.onSurfaceVariant, + shape = MainTheme.shapes.extraSmall + ) + ) + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + +@Composable +private fun WelcomeLogo( + modifier: Modifier = Modifier, +) { + Column( + modifier = modifier, + horizontalAlignment = Alignment.CenterHorizontally, + ) { Box( modifier = Modifier .clip(CircleShape) .background(Color(CIRCLE_COLOR)) - .size(circleSize), + .size(CIRCLE_SIZE_DP.dp), ) { Image( painter = painterResource(id = MainTheme.images.logo), contentDescription = null, modifier = Modifier - .size(logoSize) + .size(LOGO_SIZE_DP.dp) .align(Alignment.Center), ) } - - } - } @Composable -- GitLab From 0910586d4211bf23ab80d94e79381a28065b19e6 Mon Sep 17 00:00:00 2001 From: Su TT Date: Mon, 10 Feb 2025 11:22:04 -0500 Subject: [PATCH 003/262] Ran and applied Spotless Check --- .../onboarding/welcome/ui/WelcomeContent.kt | 70 ++++--------------- 1 file changed, 13 insertions(+), 57 deletions(-) diff --git a/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt b/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt index a4ac56c6bf..557f0b2e14 100644 --- a/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt +++ b/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt @@ -1,7 +1,5 @@ package app.k9mail.feature.onboarding.welcome.ui - -import android.util.Log import androidx.compose.animation.core.animateFloatAsState import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -14,7 +12,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height @@ -22,7 +19,6 @@ import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.CircleShape @@ -39,19 +35,15 @@ import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.onGloballyPositioned -import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import app.k9mail.core.ui.compose.common.window.WindowSizeClass -import app.k9mail.core.ui.compose.common.window.getWindowSizeInfo import app.k9mail.core.ui.compose.designsystem.atom.Surface import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonFilled import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonText import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyLarge -import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyMedium import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodySmall import app.k9mail.core.ui.compose.designsystem.atom.text.TextDisplayMedium import app.k9mail.core.ui.compose.designsystem.template.LazyColumnWithHeaderFooter @@ -78,7 +70,7 @@ internal fun WelcomeContent( Surface(modifier = modifier) { Box(Modifier.fillMaxSize()) { - ResponsiveContent { + ResponsiveContent { LazyColumnWithHeaderFooter( state = lazyListState, verticalArrangement = Arrangement.SpaceEvenly, @@ -93,7 +85,7 @@ internal fun WelcomeContent( put(0, coordinates.size.height) } }, - contentAlignment = Alignment.Center + contentAlignment = Alignment.Center, ) { WelcomeLogo() } @@ -107,7 +99,7 @@ internal fun WelcomeContent( itemHeights.value = itemHeights.value.toMutableMap().apply { put(totalItemsCount - 1, coordinates.size.height) } - } + }, ) { WelcomeFooter( showImportButton = showImportButton, @@ -115,7 +107,7 @@ internal fun WelcomeContent( onImportClick = onImportClick, modifier = Modifier .fillMaxWidth() - .padding(top = MainTheme.spacings.quadruple) + .padding(top = MainTheme.spacings.quadruple), ) } }, @@ -127,9 +119,8 @@ internal fun WelcomeContent( .onGloballyPositioned { coordinates -> itemHeights.value = itemHeights.value.toMutableMap().apply { put(1, coordinates.size.height) - } - } + }, ) { WelcomeTitle( title = appName, @@ -145,8 +136,7 @@ internal fun WelcomeContent( itemHeights.value = itemHeights.value.toMutableMap().apply { put(2, coordinates.size.height) } - - } + }, ) { WelcomeMessage( modifier = Modifier.defaultItemModifier(), @@ -162,13 +152,11 @@ internal fun WelcomeContent( itemHeights.value = itemHeights.value.toMutableMap().apply { put(3, coords.size.height) } - } + }, ) } - - } + }, ) - } VerticalScrollIndicator( listState = lazyListState, @@ -176,17 +164,13 @@ internal fun WelcomeContent( itemHeights = itemHeights.value, modifier = Modifier .align(Alignment.CenterEnd) - .padding(end = MainTheme.spacings.quarter) + .padding(end = MainTheme.spacings.quarter), ) } - } } - - - @Composable fun VerticalScrollIndicator( listState: LazyListState, @@ -198,7 +182,7 @@ fun VerticalScrollIndicator( BoxWithConstraints( modifier = modifier.fillMaxSize(), - contentAlignment = Alignment.TopEnd + contentAlignment = Alignment.TopEnd, ) { val density = LocalDensity.current val viewportHeightPx = with(density) { maxHeight.toPx() } @@ -260,44 +244,16 @@ fun VerticalScrollIndicator( .alpha(animatedAlpha) .draggable( orientation = Orientation.Vertical, - state = draggableState + state = draggableState, ) .background( color = MainTheme.colors.onSurfaceVariant, - shape = MainTheme.shapes.extraSmall - ) + shape = MainTheme.shapes.extraSmall, + ), ) } } - - - - - - - - - - - - - - - - - - - - - - - - - - - - @Composable private fun WelcomeLogo( modifier: Modifier = Modifier, -- GitLab From 6a4304ee198c52ae028b7cb9d8c92ece70651d2b Mon Sep 17 00:00:00 2001 From: "m.farzanegan" Date: Fri, 21 Feb 2025 01:31:37 +0330 Subject: [PATCH 004/262] Prevent activity overlap when toggling "Show Unified Inbox" --- .../main/java/com/fsck/k9/activity/MessageList.kt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageList.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageList.kt index 450dd0538b..93b1cb4458 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageList.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageList.kt @@ -537,7 +537,7 @@ open class MessageList : if (messageListActivityConfig == null) { messageListActivityConfig = MessageListActivityConfig.create(generalSettingsManager) } else if (messageListActivityConfig != MessageListActivityConfig.create(generalSettingsManager)) { - recreateCompat() + recreateMessageList(this) } if (displayMode != DisplayMode.MESSAGE_VIEW) { @@ -1606,6 +1606,16 @@ open class MessageList : val intent = shortcutIntentForAccount(context, accountUuid) context.startActivity(intent) } + + @JvmStatic + fun recreateMessageList(context: Context) { + val intent = Intent(context, MessageList::class.java).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) + } + + context.startActivity(intent) + } } } -- GitLab From 80612c4c33d732ca2488de472ef55bfb82fbb45c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 14:57:07 +0000 Subject: [PATCH 005/262] Bump actions/cache from 4.2.0 to 4.2.2 Bumps [actions/cache](https://github.com/actions/cache) from 4.2.0 to 4.2.2. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/1bd1e32a3bdc45362d1e726936510720a7c30a57...d4323d4df104b026a6aa633fdb11d772146be0bf) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/deploy-docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index cc8d74ef09..ef41b39a32 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -25,7 +25,7 @@ jobs: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 + - uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2 with: path: | ~/.cargo/.crates.toml -- GitLab From 89f4d573acb3187d463a3cd25ee716874a87a81d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 14:57:09 +0000 Subject: [PATCH 006/262] Bump actions/download-artifact from 4.1.8 to 4.1.9 Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.8 to 4.1.9. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/fa0a91b85d4f404e444e00e005971372dc801d16...cc203385981b70ca67e1cc392babf9cc229d5806) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/shippable_builds.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/shippable_builds.yml b/.github/workflows/shippable_builds.yml index 885d821b25..500f4c4e50 100644 --- a/.github/workflows/shippable_builds.yml +++ b/.github/workflows/shippable_builds.yml @@ -569,7 +569,7 @@ jobs: env: RELEASE_TYPE: ${{ needs.dump_config.outputs.releaseType }} steps: - - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + - uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9 with: name: unsigned-${{ matrix.appName }}-${{ matrix.packageFormat }}-${{ matrix.packageFlavor }} path: uploads/ @@ -690,7 +690,7 @@ jobs: ref: ${{ steps.shanotes.outputs.app_sha }} - name: Download Artifacts - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9 with: name: signed-${{ matrix.appName }}-${{ matrix.packageFormat }}-${{ matrix.packageFlavor }} path: "uploads/" -- GitLab From 2aa5dbb45876050e100507a811841f20c9cc29f9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 14:57:14 +0000 Subject: [PATCH 007/262] Bump actions/upload-artifact from 4.6.0 to 4.6.1 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.0 to 4.6.1. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08...4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/fluidscan.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/shippable_builds.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/fluidscan.yml b/.github/workflows/fluidscan.yml index 68627945ea..2a57d4f3fe 100644 --- a/.github/workflows/fluidscan.yml +++ b/.github/workflows/fluidscan.yml @@ -27,7 +27,7 @@ jobs: bash scripts/run-fluidattacks-scanner.sh - name: "Upload scan results" - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 with: name: SARIF scan results path: fluidscan-results.sarif diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index aac3968620..fed84c419e 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -54,7 +54,7 @@ jobs: # Upload the results as artifacts. - name: "Upload artifact" - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 with: name: SARIF file path: results.sarif diff --git a/.github/workflows/shippable_builds.yml b/.github/workflows/shippable_builds.yml index 885d821b25..4b912613de 100644 --- a/.github/workflows/shippable_builds.yml +++ b/.github/workflows/shippable_builds.yml @@ -549,7 +549,7 @@ jobs: ls -l ${UPLOAD_PATH}/ - name: Upload unsigned - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 env: UPLOAD_PATH: "uploads" with: @@ -598,7 +598,7 @@ jobs: rm -f uploads/*.jks - name: Upload signed - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 with: name: signed-${{ matrix.appName }}-${{ matrix.packageFormat }}-${{ matrix.packageFlavor }} if-no-files-found: error -- GitLab From 8c83be3c7dc918ec5108472e1b53ace219a57cdf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 14:57:17 +0000 Subject: [PATCH 008/262] Bump ossf/scorecard-action from 2.4.0 to 2.4.1 Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.0 to 2.4.1. - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/62b2cac7ed8198b15735ed49ab1e5cf35480ba46...f49aabe0b5af0936a0987cfb85d86b75731b0186) --- updated-dependencies: - dependency-name: ossf/scorecard-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index aac3968620..35ac7dbea1 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -38,7 +38,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0 + uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1 with: results_file: results.sarif results_format: sarif -- GitLab From 01a3c349be7d3f0fc4faaaad03adace656f27320 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 14:57:27 +0000 Subject: [PATCH 009/262] Bump github/codeql-action from 3.28.9 to 3.28.10 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.9 to 3.28.10. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0...b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/fluidscan.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index dbba88843d..34a0e1cf32 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -32,13 +32,13 @@ jobs: with: cache-read-only: true - - uses: github/codeql-action/init@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9 + - uses: github/codeql-action/init@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 with: languages: java - name: Autobuild - uses: github/codeql-action/autobuild@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9 + uses: github/codeql-action/autobuild@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9 + uses: github/codeql-action/analyze@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 diff --git a/.github/workflows/fluidscan.yml b/.github/workflows/fluidscan.yml index 68627945ea..68e9621a29 100644 --- a/.github/workflows/fluidscan.yml +++ b/.github/workflows/fluidscan.yml @@ -35,6 +35,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9 + uses: github/codeql-action/upload-sarif@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 with: sarif_file: fluidscan-results.sarif diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index aac3968620..a7544bdcdf 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -62,6 +62,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9 + uses: github/codeql-action/upload-sarif@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 with: sarif_file: results.sarif -- GitLab From 76c97c1ac53d3e5ce0a2ddc4b9d5d7c6b5ecd997 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Fri, 21 Feb 2025 11:20:58 +0100 Subject: [PATCH 010/262] Fix docs deploy path --- .github/workflows/deploy-docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index cc8d74ef09..abac1a3df1 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -44,7 +44,7 @@ jobs: uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5.0.0 - name: Build docs - run: mdbook build docs --dest-dir=book/docs/latest + run: mdbook build docs --dest-dir=./../book/docs/latest - name: Test docs run: mdbook test docs -- GitLab From 6a5b486b3044bdbefde09627d0bc11452e83d38a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Mon, 3 Mar 2025 16:08:11 +0100 Subject: [PATCH 011/262] Change to manual deployment to gh-pages branch --- .github/workflows/deploy-docs.yml | 53 +++++++++++++++++++------------ 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index abac1a3df1..257dca1d9a 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -10,9 +10,7 @@ on: workflow_dispatch: permissions: - contents: read - pages: write - id-token: write + contents: write concurrency: group: "pages" @@ -39,28 +37,41 @@ jobs: - name: Install mdbook and extensions run: ./docs/install.sh - - name: Setup Pages - id: pages - uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5.0.0 - - name: Build docs run: mdbook build docs --dest-dir=./../book/docs/latest - name: Test docs run: mdbook test docs - - name: Upload artifact - uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3.0.1 - with: - path: ./book/docs + - name: Clean docs + run: | + rm -rf book/docs/latest/assets/draw.io + rm book/docs/latest/.gitignore + rm book/docs/latest/install.sh - deploy-docs: - environment: - name: pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build-docs - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4.0.5 + - name: Deploy docs to gh-pages + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + + # Fetch the gh-pages branch + git fetch origin gh-pages || git checkout --orphan gh-pages + git checkout gh-pages + + # Get the short commit hash + COMMIT_HASH=$(git rev-parse --short "$GITHUB_SHA") + + # Keep necessary files and clean `docs/latest/` + mkdir -p docs/latest # Ensure the folder exists + find docs/latest -mindepth 1 -delete # Delete old files inside docs/latest + + # Copy new docs to gh-pages branch + cp -r book/docs/latest/* docs/latest/ + + # Remove + rm -rf book + + # Add, commit, and push changes + git add . + git commit -m "Deploy docs update from [${COMMIT_HASH}]" || echo "No changes to commit" + git push --force-with-lease origin gh-pages -- GitLab From 8d93d5a11715c0308f0f20126b9940d8cc1350f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Mon, 3 Mar 2025 16:41:18 +0100 Subject: [PATCH 012/262] Prevent docs publishing when forked --- .github/workflows/deploy-docs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index 257dca1d9a..c0f6b83aaa 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -18,6 +18,7 @@ concurrency: jobs: build-docs: + if: ${{ github.repository_owner == 'thunderbird' }} runs-on: ubuntu-latest steps: - name: Checkout -- GitLab From 8ddfc195e6deef235e3a1a054e7d573a643168ff Mon Sep 17 00:00:00 2001 From: Corey Bryant Date: Mon, 3 Mar 2025 10:57:31 -0500 Subject: [PATCH 013/262] Bump versionName to 11.0 --- app-k9mail/build.gradle.kts | 2 +- app-thunderbird/build.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app-k9mail/build.gradle.kts b/app-k9mail/build.gradle.kts index ebd361df00..15323aabea 100644 --- a/app-k9mail/build.gradle.kts +++ b/app-k9mail/build.gradle.kts @@ -21,7 +21,7 @@ android { testApplicationId = "com.fsck.k9.tests" versionCode = 39004 - versionName = "10.0" + versionName = "11.0" versionNameSuffix = "a1" // Keep in sync with the resource string array "supported_languages" diff --git a/app-thunderbird/build.gradle.kts b/app-thunderbird/build.gradle.kts index fb65819285..8a6108c751 100644 --- a/app-thunderbird/build.gradle.kts +++ b/app-thunderbird/build.gradle.kts @@ -21,7 +21,7 @@ android { testApplicationId = "net.thunderbird.android.tests" versionCode = 4 - versionName = "10.0" + versionName = "11.0" // Keep in sync with the resource string array "supported_languages" resourceConfigurations.addAll( -- GitLab From ff2c5d8abf80ba749b238cc02b1972651c25e9c3 Mon Sep 17 00:00:00 2001 From: Corey Bryant Date: Mon, 3 Mar 2025 16:56:46 -0500 Subject: [PATCH 014/262] Handle new changelog_master.xml directories in shippable builds workflow --- .github/workflows/shippable_builds.yml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.github/workflows/shippable_builds.yml b/.github/workflows/shippable_builds.yml index 885d821b25..50cb3d69ff 100644 --- a/.github/workflows/shippable_builds.yml +++ b/.github/workflows/shippable_builds.yml @@ -368,6 +368,7 @@ jobs: APPLICATION_ID: ${{ steps.appinfo.outputs.APPLICATION_ID }} APP_NAME: ${{ matrix.appName }} FULL_VERSION_NAME: ${{ steps.appinfo.outputs.VERSION_NAME }}${{ steps.bump_version_suffix.outputs.SUFFIX || steps.appinfo.outputs.VERSION_NAME_SUFFIX }} + RELEASE_TYPE: ${{ vars.RELEASE_TYPE }} run: | git config --global user.name "GitHub Actions Bot" git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" @@ -382,7 +383,21 @@ jobs: # Add changelogs, build version changes and metadata symlink git add ./app-metadata/${APPLICATION_ID}/en-US/changelogs/* - git add ./app-${APP_NAME}/src/main/res/raw/changelog_master.xml + if [[ "$APP_NAME" = "k9mail" ]]; then + git add ./app-${APP_NAME}/src/main/res/raw/changelog_master.xml + elif [[ "$APP_NAME" = "thunderbird" ]]; then + case "$RELEASE_TYPE" in + "daily") + git add ./app-${APP_NAME}/src/daily/res/raw/changelog_master.xml + ;; + "beta") + git add ./app-${APP_NAME}/src/beta/res/raw/changelog_master.xml + ;; + "release") + git add ./app-${APP_NAME}/src/release/res/raw/changelog_master.xml + ;; + esac + fi git add ./app-${APP_NAME}/build.gradle.kts git add metadata -- GitLab From 2223e6c71d7b3abf72f33789baf4558acfd6dfde Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 3 Mar 2025 13:18:17 +0100 Subject: [PATCH 015/262] Update translations (Weblate) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: A. Wang Co-authored-by: AO Localisation Lab Co-authored-by: Andreas Pettersson Co-authored-by: Besnik Bleta Co-authored-by: Bård Sigurd Møller Co-authored-by: DISU1950 Co-authored-by: Doğaç Tanrıverdi Co-authored-by: Hosted Weblate Co-authored-by: Ihor Hordiichuk Co-authored-by: João Henrique de Souza Silva Co-authored-by: Kazushi Hayama Co-authored-by: Lordicode Co-authored-by: Nikolas Co-authored-by: Nuno Bentes Co-authored-by: Pablo González Troyano Co-authored-by: Remus-Gabriel Chelu Co-authored-by: Ricky Tigg Co-authored-by: Rimas Kudelis Co-authored-by: ShouldbeReal Co-authored-by: Takeshi Kovacs Co-authored-by: Tom Golden Co-authored-by: cketti Co-authored-by: contoriano Co-authored-by: nhman Co-authored-by: solokot Translate-URL: https://hosted.weblate.org/projects/tb-android/account-common/en_GB/ Translate-URL: https://hosted.weblate.org/projects/tb-android/account-edit/en_GB/ Translate-URL: https://hosted.weblate.org/projects/tb-android/account-edit/hr/ Translate-URL: https://hosted.weblate.org/projects/tb-android/account-edit/pt_PT/ Translate-URL: https://hosted.weblate.org/projects/tb-android/account-oauth/el/ Translate-URL: https://hosted.weblate.org/projects/tb-android/account-oauth/en_GB/ Translate-URL: https://hosted.weblate.org/projects/tb-android/account-oauth/nn/ Translate-URL: https://hosted.weblate.org/projects/tb-android/account-oauth/sq/ Translate-URL: https://hosted.weblate.org/projects/tb-android/account-oauth/uk/ Translate-URL: https://hosted.weblate.org/projects/tb-android/account-oauth/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/tb-android/account-server-certificate/el/ Translate-URL: https://hosted.weblate.org/projects/tb-android/account-server-settings/hr/ Translate-URL: https://hosted.weblate.org/projects/tb-android/account-server-validation/hr/ Translate-URL: https://hosted.weblate.org/projects/tb-android/account-setup/el/ Translate-URL: https://hosted.weblate.org/projects/tb-android/account-setup/hr/ Translate-URL: https://hosted.weblate.org/projects/tb-android/account-setup/lt/ Translate-URL: https://hosted.weblate.org/projects/tb-android/account-setup/pt/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-k9mail/pt/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-store-metadata-k9mail/el/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-store-metadata-k9mail/lt/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-store-metadata-k9mail/ro/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-store-metadata-thunderbird-beta/el/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-store-metadata-thunderbird-beta/hr/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-store-metadata-thunderbird-beta/nn/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-store-metadata-thunderbird-beta/ro/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-store-metadata-thunderbird/el/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-store-metadata-thunderbird/hr/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-store-metadata-thunderbird/nn/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-store-metadata-thunderbird/ro/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/da/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/el/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/en_GB/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/es/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/fi/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/fr/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/he/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/it/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/ja/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/lt/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/nn/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/pt/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/ru/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/sq/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/sv/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/tr/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/uk/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-ui-base/el/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-ui-base/en_GB/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-ui-base/lt/ Translate-URL: https://hosted.weblate.org/projects/tb-android/funding-googleplay/el/ Translate-URL: https://hosted.weblate.org/projects/tb-android/funding-googleplay/lt/ Translate-URL: https://hosted.weblate.org/projects/tb-android/funding-googleplay/nn/ Translate-URL: https://hosted.weblate.org/projects/tb-android/funding-googleplay/uk/ Translate-URL: https://hosted.weblate.org/projects/tb-android/funding-googleplay/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/tb-android/migration-qrcode/el/ Translate-URL: https://hosted.weblate.org/projects/tb-android/navigation-drawer/el/ Translate-URL: https://hosted.weblate.org/projects/tb-android/navigation-drawer/lt/ Translate-URL: https://hosted.weblate.org/projects/tb-android/onboarding-migration/lt/ Translate-URL: https://hosted.weblate.org/projects/tb-android/onboarding-migration/uk/ Translate-URL: https://hosted.weblate.org/projects/tb-android/onboarding-permissions/el/ Translate-URL: https://hosted.weblate.org/projects/tb-android/onboarding/ Translate-URL: https://hosted.weblate.org/projects/tb-android/onboarding/el/ Translate-URL: https://hosted.weblate.org/projects/tb-android/onboarding/hr/ Translate-URL: https://hosted.weblate.org/projects/tb-android/onboarding/lt/ Translate-URL: https://hosted.weblate.org/projects/tb-android/onboarding/sq/ Translate-URL: https://hosted.weblate.org/projects/tb-android/settings-import/el/ Translate-URL: https://hosted.weblate.org/projects/tb-android/settings-import/lt/ Translate-URL: https://hosted.weblate.org/projects/tb-android/settings-import/sq/ Translate-URL: https://hosted.weblate.org/projects/tb-android/widget-message-list/en_GB/ Translate-URL: https://hosted.weblate.org/projects/tb-android/widget-shortcut/en_GB/ Translation: Thunderbird for Android / K-9 Mail/App Store Metadata (K-9 Mail) Translation: Thunderbird for Android / K-9 Mail/App Store Metadata (Thunderbird Beta) Translation: Thunderbird for Android / K-9 Mail/App Store Metadata (Thunderbird) Translation: Thunderbird for Android / K-9 Mail/account-common Translation: Thunderbird for Android / K-9 Mail/account-edit Translation: Thunderbird for Android / K-9 Mail/account-oauth Translation: Thunderbird for Android / K-9 Mail/account-server-certificate Translation: Thunderbird for Android / K-9 Mail/account-server-settings Translation: Thunderbird for Android / K-9 Mail/account-server-validation Translation: Thunderbird for Android / K-9 Mail/account-setup Translation: Thunderbird for Android / K-9 Mail/app-k9mail Translation: Thunderbird for Android / K-9 Mail/feature-funding-googleplay Translation: Thunderbird for Android / K-9 Mail/legacy-ui-base Translation: Thunderbird for Android / K-9 Mail/legacy-ui-legacy Translation: Thunderbird for Android / K-9 Mail/migration-qrcode Translation: Thunderbird for Android / K-9 Mail/navigation-drawer Translation: Thunderbird for Android / K-9 Mail/onboarding-migration Translation: Thunderbird for Android / K-9 Mail/onboarding-permissions Translation: Thunderbird for Android / K-9 Mail/onboarding-welcome Translation: Thunderbird for Android / K-9 Mail/settings-import Translation: Thunderbird for Android / K-9 Mail/widget-message-list Translation: Thunderbird for Android / K-9 Mail/widget-shortcut # Conflicts: # legacy/ui/legacy/src/main/res/values-en-rGB/strings.xml --- .../src/main/res/values-en-rGB/strings.xml | 3 ++- .../src/main/res/values-en-rGB/strings.xml | 6 +++++- .../src/main/res/values-en-rGB/strings.xml | 4 +++- .../src/main/res/values-en-rGB/strings.xml | 3 ++- .../src/main/res/values-en-rGB/strings.xml | 4 +++- .../src/main/res/values-en-rGB/strings.xml | 1 + .../src/main/res/values-en-rGB/strings.xml | 20 +++++++++++++++++++ 7 files changed, 36 insertions(+), 5 deletions(-) diff --git a/feature/account/common/src/main/res/values-en-rGB/strings.xml b/feature/account/common/src/main/res/values-en-rGB/strings.xml index f05bd1f909..4db5deaa9c 100644 --- a/feature/account/common/src/main/res/values-en-rGB/strings.xml +++ b/feature/account/common/src/main/res/values-en-rGB/strings.xml @@ -2,4 +2,5 @@ Next Back - \ No newline at end of file + The server returned the following message:\n%s + diff --git a/feature/account/edit/src/main/res/values-en-rGB/strings.xml b/feature/account/edit/src/main/res/values-en-rGB/strings.xml index a6b3daec93..5c0abf6b1d 100644 --- a/feature/account/edit/src/main/res/values-en-rGB/strings.xml +++ b/feature/account/edit/src/main/res/values-en-rGB/strings.xml @@ -1,2 +1,6 @@ - \ No newline at end of file + + Saving server settings… + Failed to save server settings + Server settings saved + diff --git a/feature/account/oauth/src/main/res/values-en-rGB/strings.xml b/feature/account/oauth/src/main/res/values-en-rGB/strings.xml index 496e93c1f0..78f7f74ff2 100644 --- a/feature/account/oauth/src/main/res/values-en-rGB/strings.xml +++ b/feature/account/oauth/src/main/res/values-en-rGB/strings.xml @@ -9,4 +9,6 @@ Signing in using OAuth We\'ll redirect you to your email provider to sign in. You need to grant the app access to your email account. Sign in - \ No newline at end of file + If you\'re experiencing problems when signing in with Google, please consult our {placeHolder}. + support article + diff --git a/feature/widget/message-list/src/main/res/values-en-rGB/strings.xml b/feature/widget/message-list/src/main/res/values-en-rGB/strings.xml index 853281a5e7..498ee58f4c 100644 --- a/feature/widget/message-list/src/main/res/values-en-rGB/strings.xml +++ b/feature/widget/message-list/src/main/res/values-en-rGB/strings.xml @@ -1,7 +1,8 @@ - + Compose Loading… Loading… Unified Inbox + Message List diff --git a/feature/widget/shortcut/src/main/res/values-en-rGB/strings.xml b/feature/widget/shortcut/src/main/res/values-en-rGB/strings.xml index a6b3daec93..31802d1500 100644 --- a/feature/widget/shortcut/src/main/res/values-en-rGB/strings.xml +++ b/feature/widget/shortcut/src/main/res/values-en-rGB/strings.xml @@ -1,2 +1,4 @@ - \ No newline at end of file + + Accounts + diff --git a/legacy/ui/base/src/main/res/values-en-rGB/strings.xml b/legacy/ui/base/src/main/res/values-en-rGB/strings.xml index 44dda2f85a..b069cd113a 100644 --- a/legacy/ui/base/src/main/res/values-en-rGB/strings.xml +++ b/legacy/ui/base/src/main/res/values-en-rGB/strings.xml @@ -2,4 +2,5 @@ OK Cancel + Star diff --git a/legacy/ui/legacy/src/main/res/values-en-rGB/strings.xml b/legacy/ui/legacy/src/main/res/values-en-rGB/strings.xml index ff719b3778..4d3cf93c0a 100644 --- a/legacy/ui/legacy/src/main/res/values-en-rGB/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-en-rGB/strings.xml @@ -884,4 +884,24 @@ Empty Spam About %s The account \\%1$s\" will be removed from %2$s. + Save attachment + The app OpenKeychain is required to enable support for end-to-end encryption. + Missing permission to schedule alarms + Show hidden folders + Shares performance, usage, hardware and customisation data about this app with Mozilla to help us make Thunderbird better + Volume key navigation + Navigate between messages using the volume keys in message view + Confirm empty spam + Do you want to empty the spam folder? + Support %s + Expand + Usage and technical data + Remove User-Agent from mail headers + Enable Push + Notifications + Data collection + Tap to grant permission. + When using Push, %1$s maintains a connection to the mail server. Android requires displaying an ongoing notification while the app is active in the background. %2$s + Enable sync + Show folder -- GitLab From 13fb3c35774799bfc918e7451991eedbd76cf34f Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Sat, 22 Feb 2025 01:30:21 +0600 Subject: [PATCH 016/262] Added LazyListState in FolderList --- .../k9mail/feature/navigation/drawer/ui/folder/FolderList.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/folder/FolderList.kt b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/folder/FolderList.kt index 5fd5fcb7b7..a806d3690b 100644 --- a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/folder/FolderList.kt +++ b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/folder/FolderList.kt @@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier @@ -26,8 +27,10 @@ internal fun FolderList( ) { val resources = LocalContext.current.resources val folderNameFormatter = remember { FolderNameFormatter(resources) } + val listState = rememberLazyListState() LazyColumn( + state = listState, modifier = modifier .fillMaxWidth(), contentPadding = PaddingValues(vertical = MainTheme.spacings.default), -- GitLab From baa1d7e4eafe24abd44b6cdf0da7e08ea20a4ebb Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Thu, 20 Feb 2025 02:16:38 +0600 Subject: [PATCH 017/262] Clean up folder settings UX:Change the remaining settings from checkboxes to switches --- .../legacy/src/main/res/xml/folder_settings_preferences.xml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/legacy/ui/legacy/src/main/res/xml/folder_settings_preferences.xml b/legacy/ui/legacy/src/main/res/xml/folder_settings_preferences.xml index ec788c7367..197588aca0 100644 --- a/legacy/ui/legacy/src/main/res/xml/folder_settings_preferences.xml +++ b/legacy/ui/legacy/src/main/res/xml/folder_settings_preferences.xml @@ -20,10 +20,9 @@ - - -- GitLab From 9dedf4e2f4b597869a791bc076848706622b1efd Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Tue, 4 Mar 2025 22:22:06 +0600 Subject: [PATCH 018/262] Removed folder_settings_in_top_group_summary from all strings.xml --- legacy/ui/legacy/src/main/res/values-ar/strings.xml | 3 +-- legacy/ui/legacy/src/main/res/values-be/strings.xml | 3 +-- legacy/ui/legacy/src/main/res/values-bg/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-br/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-ca/strings.xml | 3 +-- legacy/ui/legacy/src/main/res/values-co/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-cs/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-cy/strings.xml | 3 +-- legacy/ui/legacy/src/main/res/values-da/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-de/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-el/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-en-rGB/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-eo/strings.xml | 3 +-- legacy/ui/legacy/src/main/res/values-es/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-et/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-eu/strings.xml | 3 +-- legacy/ui/legacy/src/main/res/values-fa/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-fi/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-fr/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-fy/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-ga/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-gd/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-gl/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-hr/strings.xml | 3 +-- legacy/ui/legacy/src/main/res/values-hu/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-in/strings.xml | 3 +-- legacy/ui/legacy/src/main/res/values-is/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-it/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-iw/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-ja/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-ko/strings.xml | 3 +-- legacy/ui/legacy/src/main/res/values-lt/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-lv/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-ml/strings.xml | 3 +-- legacy/ui/legacy/src/main/res/values-nb/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-nl/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-nn/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-pl/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-pt-rBR/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-pt-rPT/strings.xml | 3 +-- legacy/ui/legacy/src/main/res/values-ro/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-ru/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-sk/strings.xml | 3 +-- legacy/ui/legacy/src/main/res/values-sl/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-sq/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-sr/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-sv/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-tr/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-uk/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-vi/strings.xml | 3 +-- legacy/ui/legacy/src/main/res/values-zh-rCN/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-zh-rTW/strings.xml | 1 - legacy/ui/legacy/src/main/res/values/strings.xml | 1 - 53 files changed, 13 insertions(+), 66 deletions(-) diff --git a/legacy/ui/legacy/src/main/res/values-ar/strings.xml b/legacy/ui/legacy/src/main/res/values-ar/strings.xml index edac02fef2..45fb26f050 100644 --- a/legacy/ui/legacy/src/main/res/values-ar/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ar/strings.xml @@ -405,7 +405,6 @@ تطبيق OpenPGP مفقود - هل تم إلغاء تثبيته؟ إعدادات المجلد العرض في قمة المجموعة - اعرض بالقرب من أعلى قائمة المجلدات امحوا الرسائل المحلية خادم الوارد إعداد خادم البريد الوارد @@ -856,4 +855,4 @@ فريق ثَندَربِرْد للهواتف الذكيّة - \ No newline at end of file + diff --git a/legacy/ui/legacy/src/main/res/values-be/strings.xml b/legacy/ui/legacy/src/main/res/values-be/strings.xml index 402c7b8118..0a4b2eb2a3 100644 --- a/legacy/ui/legacy/src/main/res/values-be/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-be/strings.xml @@ -401,7 +401,6 @@ Праграма OpenPGP адсутнічае. Яна была выдаленая? Налады каталога Паказваць у пачатку - Паказваць бліжэй да спіса каталогаў Выдаліць лакальныя лісты Сервер уваходных лістоў Наладжванне сервера ўваходнай пошты @@ -909,4 +908,4 @@ не прачытана, %s Выдаленне акаўнта… Абагульвае з Mozilla даныя прадукцыйнасці, выкарыстання, абсталявання і налад гэтай праграмы, каб дапамагчы палепшыць Thunderbird - \ No newline at end of file + diff --git a/legacy/ui/legacy/src/main/res/values-bg/strings.xml b/legacy/ui/legacy/src/main/res/values-bg/strings.xml index c47a983fb3..f66115be9f 100644 --- a/legacy/ui/legacy/src/main/res/values-bg/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-bg/strings.xml @@ -359,7 +359,6 @@ Липсва OpenPGP приложение - да не сте го деинсталирали? Настройки на папка Показвай в основната група - Показвай в началото на списъка с папки Изчисти локалните съобщения Сървър за входяща поща Конфигуриране на сървър за входяща поща diff --git a/legacy/ui/legacy/src/main/res/values-br/strings.xml b/legacy/ui/legacy/src/main/res/values-br/strings.xml index d459d57a04..f113cc5352 100644 --- a/legacy/ui/legacy/src/main/res/values-br/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-br/strings.xml @@ -333,7 +333,6 @@ Diouer a arload OpenPGP - ha staliet eo bet? Arventennoù an teuliad Diskouez er strollad uhelañ - Diskouez e-kichen krec’h roll an teuliadoù Skarzhañ ar c’hemennadennoù lec’hel Dafariad degemer Kefluniañ an dafariad postel degemer diff --git a/legacy/ui/legacy/src/main/res/values-ca/strings.xml b/legacy/ui/legacy/src/main/res/values-ca/strings.xml index 8433de543f..90fc9bd932 100644 --- a/legacy/ui/legacy/src/main/res/values-ca/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ca/strings.xml @@ -400,7 +400,6 @@ Falta una aplicació d\'OpenPGP. S\'ha desinstal·lat\? Configuració de les carpetes Mostra al grup superior - Mostra a prop del capdamunt de la llista de carpetes Neteja els missatges locals Servidor d\'entrada Configura el servidor d\'entrada @@ -900,4 +899,4 @@ Desa l\'adjunt Navegació amb els botons de volum Navegueu entre missatges mitjançant les tecles de volum a la vista de missatges - \ No newline at end of file + diff --git a/legacy/ui/legacy/src/main/res/values-co/strings.xml b/legacy/ui/legacy/src/main/res/values-co/strings.xml index 61fe6ac635..17c67d6367 100644 --- a/legacy/ui/legacy/src/main/res/values-co/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-co/strings.xml @@ -352,7 +352,6 @@ i 3 ultimi mesi i 6 ultimi mesi l’ultimu annu - Affissà in a parte superiore di a lista di i cartulari Squassà i messaghji lucale Cunfigurà u servitore d’esciuta (SMTP) di i messaghji Vibrazione diff --git a/legacy/ui/legacy/src/main/res/values-cs/strings.xml b/legacy/ui/legacy/src/main/res/values-cs/strings.xml index f063bb25a8..5cee5f0ecd 100644 --- a/legacy/ui/legacy/src/main/res/values-cs/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-cs/strings.xml @@ -401,7 +401,6 @@ Chybí OpenPGP aplikace – byla odinstalována? Nastavení složky Zobrazit v nejvyšší skupině - Zobrazit blízko špičky seznamu složek Vyčistit místní zprávy Server příchozí pošty Nastavení serveru příchozí pošty diff --git a/legacy/ui/legacy/src/main/res/values-cy/strings.xml b/legacy/ui/legacy/src/main/res/values-cy/strings.xml index 573a4c3120..43836722fd 100644 --- a/legacy/ui/legacy/src/main/res/values-cy/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-cy/strings.xml @@ -387,7 +387,6 @@ Map OpenPGP ar goll. A chafodd ei osod? Gosodiadau ffolder Dangos yn y grŵp uchaf - Dangos yn agos at frig y rhestr ffolderi Clirio negeseuon lleol Gweinydd Ffurfweddu\'r gweinydd derbyn @@ -852,4 +851,4 @@ Mae\'n bosib i ti gadw\'r neges hon a\'i ddefnyddio wrth gefn fel dy allwedd gyf - \ No newline at end of file + diff --git a/legacy/ui/legacy/src/main/res/values-da/strings.xml b/legacy/ui/legacy/src/main/res/values-da/strings.xml index 80aa1c98d0..cad31e8023 100644 --- a/legacy/ui/legacy/src/main/res/values-da/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-da/strings.xml @@ -394,7 +394,6 @@ Mangler OpenPGP program - er det afinstalleret? Mappe opsætning Vis i topgruppen - Vis nær toppen af mappelisten Fjern lokalt lagrede mails Indgående server Konfigurer indgående mail server diff --git a/legacy/ui/legacy/src/main/res/values-de/strings.xml b/legacy/ui/legacy/src/main/res/values-de/strings.xml index dfe0ce2999..bf8136ea85 100644 --- a/legacy/ui/legacy/src/main/res/values-de/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-de/strings.xml @@ -395,7 +395,6 @@ Fehlende OpenPGP-App – wurde sie deinstalliert? Ordnereinstellungen Oben anzeigen - Ordner am Anfang der Ordnerliste anzeigen Lokale Nachrichten löschen Posteingangsserver Einstellungen des Posteingangsservers bearbeiten diff --git a/legacy/ui/legacy/src/main/res/values-el/strings.xml b/legacy/ui/legacy/src/main/res/values-el/strings.xml index 1147cf24b6..50cdf1b913 100644 --- a/legacy/ui/legacy/src/main/res/values-el/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-el/strings.xml @@ -397,7 +397,6 @@ Λείπει η εφαρμογή OpenPGP - απεγκαταστήθηκε; Ρυθμίσεις φακέλων Προβολή στην ομάδα κορυφής - Προβολή κοντά στην κορυφή της λίστας των φακέλων Καθαρισμός τοπικών μηνυμάτων Ρυθμίσεις εισερχομένων Ρύθμιση εξυπηρετητή εισερχόμενης αλληλογραφίας diff --git a/legacy/ui/legacy/src/main/res/values-en-rGB/strings.xml b/legacy/ui/legacy/src/main/res/values-en-rGB/strings.xml index ff719b3778..1058008abb 100644 --- a/legacy/ui/legacy/src/main/res/values-en-rGB/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-en-rGB/strings.xml @@ -258,7 +258,6 @@ Sync messages from Folder settings Every 60 minutes - Show near the top of the folder list Star %s wrote: Hide timezone diff --git a/legacy/ui/legacy/src/main/res/values-eo/strings.xml b/legacy/ui/legacy/src/main/res/values-eo/strings.xml index ed55df48b4..b5f928fdc3 100644 --- a/legacy/ui/legacy/src/main/res/values-eo/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-eo/strings.xml @@ -372,7 +372,6 @@ Mankas OpenPGP-aplikaĵo - eble malinstalita? Agordoj de mesaĝujo Montri supre - Montras ĉe supro de mesaĝuj-listo Forviŝi lokajn mesaĝojn Enira servilo Agordoj de enira retpoŝta servilo @@ -892,4 +891,4 @@ Vi povas konservi tiun ĉi mesaĝon kaj uzi ĝin kiel sekurkopion de via privata Ritmo 4 Ritmo de vibrado Ritmo 2 - \ No newline at end of file + diff --git a/legacy/ui/legacy/src/main/res/values-es/strings.xml b/legacy/ui/legacy/src/main/res/values-es/strings.xml index cfe5acabed..766e9f9a53 100644 --- a/legacy/ui/legacy/src/main/res/values-es/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-es/strings.xml @@ -398,7 +398,6 @@ Falta la aplicación OpenPGP, ¿se ha desinstalado? Ajustes de carpetas Mostrar al principio - Mostrar cerca del principio de la lista Borrar correos locales Servidor de entrada Configurar servidor de entrada diff --git a/legacy/ui/legacy/src/main/res/values-et/strings.xml b/legacy/ui/legacy/src/main/res/values-et/strings.xml index 3c99be8d5c..1462e8731d 100644 --- a/legacy/ui/legacy/src/main/res/values-et/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-et/strings.xml @@ -397,7 +397,6 @@ OpenPGP rakendus puudub - kas see on eemaldatud? Kausta sätted Näita tipp grupis - Näita kaustade loendi tippu lähedal Puhasta kohalikud kirjad Sissetuleva meili server Konfigureeri sisse tuleva meili server diff --git a/legacy/ui/legacy/src/main/res/values-eu/strings.xml b/legacy/ui/legacy/src/main/res/values-eu/strings.xml index 7dffdec379..fb3bcdf70a 100644 --- a/legacy/ui/legacy/src/main/res/values-eu/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-eu/strings.xml @@ -396,7 +396,6 @@ OpenPGP aplikazioa falta da, desinstalatu da? Karpeta ezarpenak Erakutsi goiko taldean - Erakutsi karpeta zerrendaren goialdetik hurbil Garbitu mezu lokalak Sarrerako zerbitzaria Konfiguratu sarrerako posta zerbitzaria @@ -894,4 +893,4 @@ Mezu hau gorde dezakezu eta zure gako sekretuaren babes-kopia gisa erabili. Hau Nabigatu mezuen artean bolumen-teklak erabiliz mezuen ikuspegian Gaitu Push %s laguntza - \ No newline at end of file + diff --git a/legacy/ui/legacy/src/main/res/values-fa/strings.xml b/legacy/ui/legacy/src/main/res/values-fa/strings.xml index 6734968b3f..86fc8823c2 100644 --- a/legacy/ui/legacy/src/main/res/values-fa/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-fa/strings.xml @@ -398,7 +398,6 @@ برنامهٔ OpenPGP نیست - حذف شده؟ تنظیمات پوشه نمایش در بالا - نمایش در بالای سیاههٔ پوشه‌ها پاک‌کردن پیام‌ها از روی دستگاه کارساز ورودی کارساز ورودی رایانامه را پیکربندی کنید diff --git a/legacy/ui/legacy/src/main/res/values-fi/strings.xml b/legacy/ui/legacy/src/main/res/values-fi/strings.xml index b215ddfdda..7115433d1c 100644 --- a/legacy/ui/legacy/src/main/res/values-fi/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-fi/strings.xml @@ -396,7 +396,6 @@ OpenPGP-sovellus puuttuu - poistettiinko se? Kansioiden asetukset Näytä yläryhmässä - Näytä yläosassa lähellä kansiolistaa Poista paikalliset viestit Saapuvan postin palvelin Määritä saapuvan postin palvelin diff --git a/legacy/ui/legacy/src/main/res/values-fr/strings.xml b/legacy/ui/legacy/src/main/res/values-fr/strings.xml index 8c971411d8..ec3f3d2945 100644 --- a/legacy/ui/legacy/src/main/res/values-fr/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-fr/strings.xml @@ -398,7 +398,6 @@ L’appli OpenPGP manque. A-t-elle été désinstallée ? Paramètres du dossier Afficher dans le groupe supérieur - Afficher dans le haut de la liste des dossiers Effacer les courriels locaux Serveur entrant Configurer le serveur de courriel entrant diff --git a/legacy/ui/legacy/src/main/res/values-fy/strings.xml b/legacy/ui/legacy/src/main/res/values-fy/strings.xml index baae5f7467..81b1ff6cd2 100644 --- a/legacy/ui/legacy/src/main/res/values-fy/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-fy/strings.xml @@ -396,7 +396,6 @@ OpenPGP-app net oanwêzich – is de app fuortsmiten? Mapynstellingen Yn topgroep toane - By top fan de maplist toane Lokale berjochten wiskje Ynkommende server Ynkommende mailserver ynstelle diff --git a/legacy/ui/legacy/src/main/res/values-ga/strings.xml b/legacy/ui/legacy/src/main/res/values-ga/strings.xml index 9566249f56..8ec37b6908 100644 --- a/legacy/ui/legacy/src/main/res/values-ga/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ga/strings.xml @@ -457,7 +457,6 @@ Sioncronaigh scriosadh an fhreastalaí Bain teachtaireachtaí nuair a scriostar iad ar an bhfreastalaí Taispeáin sa ghrúpa is fearr - Taispeáin gar do bharr liosta na bhfillteán Taispeáin fillteán Cumasaigh sioncronú Cumasaigh Brúigh diff --git a/legacy/ui/legacy/src/main/res/values-gd/strings.xml b/legacy/ui/legacy/src/main/res/values-gd/strings.xml index 891aa4fc8d..e6076feae4 100644 --- a/legacy/ui/legacy/src/main/res/values-gd/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-gd/strings.xml @@ -350,7 +350,6 @@ Thoir air falbh teachdaireachdan a chaidh a sguabadh às an fhrithealaiche Roghainnean a’ phasgain Seall aig a’ bhàrr sa bhuidheann - Seall faisg air bàrr liosta nam pasganan Falamhaich na teachdaireachdan ionadail Am frithealaiche a-steach Rèitich frithealaiche a’ phuist a-steach diff --git a/legacy/ui/legacy/src/main/res/values-gl/strings.xml b/legacy/ui/legacy/src/main/res/values-gl/strings.xml index d43d1d0a92..7c20aa1c17 100644 --- a/legacy/ui/legacy/src/main/res/values-gl/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-gl/strings.xml @@ -376,7 +376,6 @@ Falta o aplicativo OpenPGP - foi desinstalado? Configuración de carpeta Amosar ao principio - Amosar cerca do principio da lista Borrar mensaxes locais Servidor de entrada Configurar servidor de entrada diff --git a/legacy/ui/legacy/src/main/res/values-hr/strings.xml b/legacy/ui/legacy/src/main/res/values-hr/strings.xml index 63b03ef5d4..f15db55493 100644 --- a/legacy/ui/legacy/src/main/res/values-hr/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-hr/strings.xml @@ -352,7 +352,6 @@ OpenPGP aplikacija nedostaje - da li je deinstalirana? Postavke mape Prikaži na vrhu grupe - Prikaži blizu vrha na popisu mapa Očistiti lokalne poruke Dolazni poslužitelj Postavite dolazni poslužitelj e-pošte @@ -800,4 +799,4 @@ Web stranica Zatraži pomoć Korisnički forum - \ No newline at end of file + diff --git a/legacy/ui/legacy/src/main/res/values-hu/strings.xml b/legacy/ui/legacy/src/main/res/values-hu/strings.xml index 3a9bbda2d7..a6dc163f75 100644 --- a/legacy/ui/legacy/src/main/res/values-hu/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-hu/strings.xml @@ -396,7 +396,6 @@ Hiányzó OpenPGP alkalmazás – talán eltávolításra került\? Mappa beállításai Megjelenítés a felső csoportban - Megjelenítés a mappalista teteje környékén Helyi üzenetek törlése Bejövő kiszolgáló A bejövő levelek kiszolgálójának beállítása diff --git a/legacy/ui/legacy/src/main/res/values-in/strings.xml b/legacy/ui/legacy/src/main/res/values-in/strings.xml index 0ebef8a6da..c92bc9521f 100644 --- a/legacy/ui/legacy/src/main/res/values-in/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-in/strings.xml @@ -358,7 +358,6 @@ Aplikasi OpenPGP tidak ada - apakah sudah dihapus? Pengaturan folder Perlihatkan di grup teratas - Tunjukkan di dekat bagian atas daftar folder Bersihkan pesan lokal Server masuk Konfigurasikan server surat masuk @@ -884,4 +883,4 @@ Tampilkan folder Tampilkan folder tersembunyi Notifikasi - \ No newline at end of file + diff --git a/legacy/ui/legacy/src/main/res/values-is/strings.xml b/legacy/ui/legacy/src/main/res/values-is/strings.xml index e368c90656..4999b0f0b6 100644 --- a/legacy/ui/legacy/src/main/res/values-is/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-is/strings.xml @@ -397,7 +397,6 @@ OpenPGP-forrit vantar - var það fjarlægt? Stillingar möppu Birta í efsta hópi - Sýna nálægt efri enda möppulista Hreinsa staðvær skilaboð Inn-póstþjónn Stilla móttöku-póstþjón diff --git a/legacy/ui/legacy/src/main/res/values-it/strings.xml b/legacy/ui/legacy/src/main/res/values-it/strings.xml index 655963b371..6ebc8a3deb 100644 --- a/legacy/ui/legacy/src/main/res/values-it/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-it/strings.xml @@ -398,7 +398,6 @@ Applicazione OpenPGP non trovata, è stata disinstallata\? Impostazioni cartella Mostra in alto - Mostra nella parte superiore dell\'elenco delle cartelle Pulisci messaggi locali Server posta in arrivo Configura server della posta in arrivo diff --git a/legacy/ui/legacy/src/main/res/values-iw/strings.xml b/legacy/ui/legacy/src/main/res/values-iw/strings.xml index 32795ab597..9e67223d8b 100644 --- a/legacy/ui/legacy/src/main/res/values-iw/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-iw/strings.xml @@ -313,7 +313,6 @@ הסר הודעות כאשר נמחק בשרת הגדרות תיקייה הצג בקבוצה העליונה - הצג בחלק העליון של רשימת התיקיות נקה הודעות מקומיות שרת הודעות נכנסות הגדר את שרת הדואר הנכנס diff --git a/legacy/ui/legacy/src/main/res/values-ja/strings.xml b/legacy/ui/legacy/src/main/res/values-ja/strings.xml index 96aa2602df..12d166890f 100644 --- a/legacy/ui/legacy/src/main/res/values-ja/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ja/strings.xml @@ -396,7 +396,6 @@ OpenPGP アプリが見つかりません - アンインストールしましたか? フォルダー設定 一覧の先頭グループに表示する - フォルダー一覧の先頭に表示します ローカルのメッセージをクリア 受信メールサーバー設定 受信メールサーバーを設定します diff --git a/legacy/ui/legacy/src/main/res/values-ko/strings.xml b/legacy/ui/legacy/src/main/res/values-ko/strings.xml index b508bca1ba..c053a56c21 100644 --- a/legacy/ui/legacy/src/main/res/values-ko/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ko/strings.xml @@ -339,7 +339,6 @@ 서버에서 삭제된 메시지를 앱에서도 삭제합니다 폴더 설정 첫번째 그룹에 보여짐 - 폴더 목록의 가장 위에 보여짐 로컬 메시지 삭제 수신 서버 메일 수신 서버 수정 @@ -850,4 +849,4 @@ 이 아이콘을 클릭하면 암호화가 전환됩니다. 자세한 내용은여기를 클릭하십시오. 종단간 설정을 다른 장치와 안전하게 공유 - \ No newline at end of file + diff --git a/legacy/ui/legacy/src/main/res/values-lt/strings.xml b/legacy/ui/legacy/src/main/res/values-lt/strings.xml index c7b611c0e6..8ee0723e25 100644 --- a/legacy/ui/legacy/src/main/res/values-lt/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-lt/strings.xml @@ -389,7 +389,6 @@ Trūksta OpenPGP programos - ar ji buvo pašalinta? Aplanko nustatymai Rodyti viršutinėje grupėje - Rodyti aplankų sąrašo viršuje Išvalyti vietinius laiškus Laiškų gavimo serveris Konfigūruoti gaunamųjų laiškų serverį diff --git a/legacy/ui/legacy/src/main/res/values-lv/strings.xml b/legacy/ui/legacy/src/main/res/values-lv/strings.xml index 82609caca5..307f415778 100644 --- a/legacy/ui/legacy/src/main/res/values-lv/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-lv/strings.xml @@ -400,7 +400,6 @@ Trūkst OpenPGP lietotnes - vai tā noinstalēta\? Mapes iestatījumi Parādīt augšējā grupā - Rādīt līdzās mapju saraksta augšgalam Dzēst ierīcē atrodošās ziņas Ienākošais serveris Iestatīt ienākošā pasta serveri diff --git a/legacy/ui/legacy/src/main/res/values-ml/strings.xml b/legacy/ui/legacy/src/main/res/values-ml/strings.xml index 02ba4ab78a..8cc0ff33a2 100644 --- a/legacy/ui/legacy/src/main/res/values-ml/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ml/strings.xml @@ -378,7 +378,6 @@ OpenPGP അപ്ലിക്കേഷൻ കാണുന്നില്ല - ഇത് അൺ‌ഇൻ‌സ്റ്റാൾ‌ ചെയ്‌തോ? ഫോൾഡർ ക്രമീകരണങ്ങൾ മുകളിലെ ഗ്രൂപ്പിൽ കാണിക്കുക - ഫോൾഡർ ലിസ്റ്റിന്റെ മുകളിൽ കാണിക്കുക പ്രാദേശിക സന്ദേശങ്ങൾ മായ്‌ക്കുക ഇൻകമിംഗ് സെർവർ ഇൻകമിംഗ് മെയിൽ സെർവർ ക്രമീകരിക്കുക @@ -803,4 +802,4 @@ - \ No newline at end of file + diff --git a/legacy/ui/legacy/src/main/res/values-nb/strings.xml b/legacy/ui/legacy/src/main/res/values-nb/strings.xml index 414ec4f8ef..0ed18abb9d 100644 --- a/legacy/ui/legacy/src/main/res/values-nb/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-nb/strings.xml @@ -355,7 +355,6 @@ Manglende OpenPGP-program - ble det avinstallert? Mappeinnstillinger Vis i toppgruppe - Vis nær toppen av mappelisten Fjern lokale meldinger Innkommende tjener Sett opp innkommende e-posttjener diff --git a/legacy/ui/legacy/src/main/res/values-nl/strings.xml b/legacy/ui/legacy/src/main/res/values-nl/strings.xml index ba8505e2e7..3dcf2a88b2 100644 --- a/legacy/ui/legacy/src/main/res/values-nl/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-nl/strings.xml @@ -396,7 +396,6 @@ OpenPGP-app niet aanwezig – is de app verwijderd? Mapinstellingen In topgroep tonen - Bij de top van de maplijst tonen Lokale berichten wissen Inkomende server Inkomende mailserver instellen diff --git a/legacy/ui/legacy/src/main/res/values-nn/strings.xml b/legacy/ui/legacy/src/main/res/values-nn/strings.xml index db3d0420b8..1436d96d38 100644 --- a/legacy/ui/legacy/src/main/res/values-nn/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-nn/strings.xml @@ -605,7 +605,6 @@ Synkroniser serversletting Manglande OpenPGP app - var den avinstallert? Vis i toppgruppe - Vi nær toppen av mappelista Fjern signaturar under svar Lesing av e-post 64 KiB diff --git a/legacy/ui/legacy/src/main/res/values-pl/strings.xml b/legacy/ui/legacy/src/main/res/values-pl/strings.xml index 4bde1d7ecb..907eaaf0c5 100644 --- a/legacy/ui/legacy/src/main/res/values-pl/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-pl/strings.xml @@ -401,7 +401,6 @@ Brakuje aplikacji OpenPGP. Czy została odinstalowana\? Ustawienia folderu Umieść na początku - Umieść na początku wyświetlanej listy folderów Wyczyść wiadomości lokalne Serwer poczty przychodzącej Ustawienia serwera poczty przychodzącej diff --git a/legacy/ui/legacy/src/main/res/values-pt-rBR/strings.xml b/legacy/ui/legacy/src/main/res/values-pt-rBR/strings.xml index c99994d02d..199a63d98c 100644 --- a/legacy/ui/legacy/src/main/res/values-pt-rBR/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-pt-rBR/strings.xml @@ -398,7 +398,6 @@ O aplicativo de OpenPGP não foi encontrado - ele foi desinstalado? Configurações da pasta Exibir no grupo superior - Exibir perto do alto da lista de pastas Limpar mensagens locais Servidor de recebimento Configure o servidor recebimento de mensagens diff --git a/legacy/ui/legacy/src/main/res/values-pt-rPT/strings.xml b/legacy/ui/legacy/src/main/res/values-pt-rPT/strings.xml index 532efe343f..25abd7b139 100644 --- a/legacy/ui/legacy/src/main/res/values-pt-rPT/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-pt-rPT/strings.xml @@ -399,7 +399,6 @@ Falta uma aplicação OpenPGP; foi desinstalada? Configurações da pasta Mostrar no grupo do topo - Mostrar junto ao topo da lista de pastas Apagar mensagens locais Servidor de entrada Configure o servidor de email de entrada @@ -890,4 +889,4 @@ Pode manter esta mensagem e usá-la como uma cópia de segurança para a sua cha Acerca de %s Ao usar o Push, %1$s mantém uma conexão ao servidor de e-mail. O Android requer que uma notificação seja mostrada enquanto a app é executada em segundo plano. %2$s A app OpenKeychain é necessária para ativar o apoio de criptografia de ponta a ponta. - \ No newline at end of file + diff --git a/legacy/ui/legacy/src/main/res/values-ro/strings.xml b/legacy/ui/legacy/src/main/res/values-ro/strings.xml index 9d5f423833..b881daa782 100644 --- a/legacy/ui/legacy/src/main/res/values-ro/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ro/strings.xml @@ -398,7 +398,6 @@ Aplicație OpenPGP lipsă - a fost dezinstalată? Setări dosar Arată în grupul de sus - Arată aproape de partea de sus a listei de dosare Curăță mesajele locale Server primire Configurare server primire diff --git a/legacy/ui/legacy/src/main/res/values-ru/strings.xml b/legacy/ui/legacy/src/main/res/values-ru/strings.xml index 30e672827c..5168cf56e0 100644 --- a/legacy/ui/legacy/src/main/res/values-ru/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ru/strings.xml @@ -402,7 +402,6 @@ Отсутствует OpenPGP-приложение – было удалено? Настройки папки Начало списка - Отображать ближе к началу списка папок Стереть локальные Сервер входящих Настройки сервера входящей почты diff --git a/legacy/ui/legacy/src/main/res/values-sk/strings.xml b/legacy/ui/legacy/src/main/res/values-sk/strings.xml index 8d5d4a70bd..17912e0ab9 100644 --- a/legacy/ui/legacy/src/main/res/values-sk/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-sk/strings.xml @@ -360,7 +360,6 @@ Aplikácia pre OpenPGP chýba - bola odinštalovaná? Nastavenia priečinku Zobraziť v najvyššej skupine - Zobraziť v hornej časti zoznamu priečinkov Vymazať správy Server prichádzajúcej pošty Nastaviť server prichádzajúcej pošty @@ -897,4 +896,4 @@ Kliknite aby ste sa dozvedeli viac. Zobraziť plávajúce tlačidlo na vytvorenie novej správy Nastala chyba počas načítania podrobností správy. - \ No newline at end of file + diff --git a/legacy/ui/legacy/src/main/res/values-sl/strings.xml b/legacy/ui/legacy/src/main/res/values-sl/strings.xml index 9421639ae8..a31fa475ce 100644 --- a/legacy/ui/legacy/src/main/res/values-sl/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-sl/strings.xml @@ -396,7 +396,6 @@ Ni programa OpenPGP – ali je bila namestitev odstranjena? Nastavitve mape Pokaži mapo v zgornji skupini - Razvrsti mapo v zgornjo skupino map na seznamu Počisti krajevna sporočila Dohodni strežnik Nastavitev strežnika dohodne pošte diff --git a/legacy/ui/legacy/src/main/res/values-sq/strings.xml b/legacy/ui/legacy/src/main/res/values-sq/strings.xml index 143d2860aa..ae4111e733 100644 --- a/legacy/ui/legacy/src/main/res/values-sq/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-sq/strings.xml @@ -395,7 +395,6 @@ Mungon aplikacioni OpenPGP - mos është çinstaluar? Rregullime dosjeje Shfaqe në grupin e epërm - Shfaqe pranë kreut të listës së dosjeve Pastro mesazhet vendore Shërbyes për marrje Formësoni shërbyesin për marrje diff --git a/legacy/ui/legacy/src/main/res/values-sr/strings.xml b/legacy/ui/legacy/src/main/res/values-sr/strings.xml index 091c4a7e0f..d6f4529081 100644 --- a/legacy/ui/legacy/src/main/res/values-sr/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-sr/strings.xml @@ -359,7 +359,6 @@ Нема апликације за OpenPGP. Можда је деинсталирана? Подешавање фолдера Прикажи на врху у групи - Прикажи при врху на листи фолдера Очисти локалне поруке Долазни сервер Конфигуришите долазни сервер мејла diff --git a/legacy/ui/legacy/src/main/res/values-sv/strings.xml b/legacy/ui/legacy/src/main/res/values-sv/strings.xml index af0280d040..e5af7e8a3a 100644 --- a/legacy/ui/legacy/src/main/res/values-sv/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-sv/strings.xml @@ -397,7 +397,6 @@ Saknade OpenPGP-app - har den avinstallerats? Mappinställningar Visa i toppgruppen - Visa nära toppen av mapplistan Rensa lokalt lagrade meddelanden Inkommande server Konfigurera servern för inkommande e-post diff --git a/legacy/ui/legacy/src/main/res/values-tr/strings.xml b/legacy/ui/legacy/src/main/res/values-tr/strings.xml index 0144cf3101..00aaffc894 100644 --- a/legacy/ui/legacy/src/main/res/values-tr/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-tr/strings.xml @@ -385,7 +385,6 @@ OpenPGP uygulaması eksik. Kaldırılmış olabilir mi? Klasör ayarları Üst grupta göster - Klasör listesinin üstüne yakın göster Yerel iletileri temizle Gelen sunucusu Gelen posta sunucusunu yapılandır diff --git a/legacy/ui/legacy/src/main/res/values-uk/strings.xml b/legacy/ui/legacy/src/main/res/values-uk/strings.xml index 770cb5888d..18914bc23b 100644 --- a/legacy/ui/legacy/src/main/res/values-uk/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-uk/strings.xml @@ -400,7 +400,6 @@ Немає OpenPGP-застосунку — чи був він видалений? Налаштування тек Показувати у верхній групі - Показувати у верхній частині списку тек Очистити локальні повідомлення Сервер вхідної пошти Налаштувати сервер вхідної пошти diff --git a/legacy/ui/legacy/src/main/res/values-vi/strings.xml b/legacy/ui/legacy/src/main/res/values-vi/strings.xml index de2b61ab8a..972dd61aba 100644 --- a/legacy/ui/legacy/src/main/res/values-vi/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-vi/strings.xml @@ -428,7 +428,6 @@ 3 tháng qua Văn bản thuần túy (loại bỏ hình ảnh và định dạng) Đồng bộ tin nhắn từ - Hiển thị gần đầu danh sách thư mục Chỉ mã hóa bản nháp nếu bật mã hóa Tiền tố (như Gmail) hôm nay @@ -890,4 +889,4 @@ Thông báo Mục đích sử dụng và dữ liệu chuyên sâu Thu thập dữ liệu - \ No newline at end of file + diff --git a/legacy/ui/legacy/src/main/res/values-zh-rCN/strings.xml b/legacy/ui/legacy/src/main/res/values-zh-rCN/strings.xml index 6e108a58f5..9f74b75847 100644 --- a/legacy/ui/legacy/src/main/res/values-zh-rCN/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-zh-rCN/strings.xml @@ -394,7 +394,6 @@ 缺少 OpenPGP 应用 - 是否已卸载? 文件夹设置 显示在置顶的组中 - 显示在文件夹列表的顶部附近 清空本地邮件 收件服务器 配置收件服务器 diff --git a/legacy/ui/legacy/src/main/res/values-zh-rTW/strings.xml b/legacy/ui/legacy/src/main/res/values-zh-rTW/strings.xml index 7e9dc08cbe..75f585e75e 100644 --- a/legacy/ui/legacy/src/main/res/values-zh-rTW/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-zh-rTW/strings.xml @@ -394,7 +394,6 @@ 未發現 OpenPGP 應用程式 - 它已被解除安裝了嗎? 信件匣設定 顯示在置頂的組中 - 顯示在置頂的組之後 清除本地郵件 內送伺服器 設定內送伺服器 diff --git a/legacy/ui/legacy/src/main/res/values/strings.xml b/legacy/ui/legacy/src/main/res/values/strings.xml index d0f501bd29..17c60eebb1 100644 --- a/legacy/ui/legacy/src/main/res/values/strings.xml +++ b/legacy/ui/legacy/src/main/res/values/strings.xml @@ -491,7 +491,6 @@ Folder settings Show in top group - Show near the top of the folder list Show folder Enable sync -- GitLab From 17f57b336b72114ae0f5722287d149991f513539 Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Tue, 4 Mar 2025 22:29:32 +0600 Subject: [PATCH 019/262] Removed folder_settings_include_in_integrated_inbox_summary from all strings.xml --- legacy/ui/legacy/src/main/res/values-ar/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-be/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-bg/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-br/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-ca/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-co/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-cs/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-cy/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-da/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-de/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-el/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-en-rGB/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-eo/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-es/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-et/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-eu/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-fa/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-fi/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-fr/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-fy/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-ga/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-gd/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-gl/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-hr/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-hu/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-in/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-is/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-it/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-iw/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-ja/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-ko/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-lt/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-lv/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-ml/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-nb/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-nl/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-nn/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-pl/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-pt-rBR/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-pt-rPT/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-ro/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-ru/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-sk/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-sl/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-sq/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-sr/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-sv/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-tr/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-uk/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-vi/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-zh-rCN/strings.xml | 1 - legacy/ui/legacy/src/main/res/values-zh-rTW/strings.xml | 1 - legacy/ui/legacy/src/main/res/values/strings.xml | 1 - 53 files changed, 53 deletions(-) diff --git a/legacy/ui/legacy/src/main/res/values-ar/strings.xml b/legacy/ui/legacy/src/main/res/values-ar/strings.xml index 45fb26f050..a37cc8389b 100644 --- a/legacy/ui/legacy/src/main/res/values-ar/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ar/strings.xml @@ -537,7 +537,6 @@ البريد الوارد الموحَّد كل الرسائل في مجلدات موحَّدة التوحيد - يتم عرض جميع الرسائل في صندوق الوارد الموحد بدون تلقائي (%s) حجم الخط diff --git a/legacy/ui/legacy/src/main/res/values-be/strings.xml b/legacy/ui/legacy/src/main/res/values-be/strings.xml index 0a4b2eb2a3..4ce496c04c 100644 --- a/legacy/ui/legacy/src/main/res/values-be/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-be/strings.xml @@ -533,7 +533,6 @@ Усе атрыманыя Усе лісты са ўсіх каталогаў Усе атрыманыя - Усе лісты паказваюцца ў агульным каталозе Няма Аўтаматычна (%s) Памер шрыфту diff --git a/legacy/ui/legacy/src/main/res/values-bg/strings.xml b/legacy/ui/legacy/src/main/res/values-bg/strings.xml index f66115be9f..5e223a4ad1 100644 --- a/legacy/ui/legacy/src/main/res/values-bg/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-bg/strings.xml @@ -472,7 +472,6 @@ Обща входяща кутия Всички съобщения в общата входяща кутия Обедени - Всички съобщения ще бъдат показани в общата входяща кутия Никой Автоматично (%s) Размер на шрифта diff --git a/legacy/ui/legacy/src/main/res/values-br/strings.xml b/legacy/ui/legacy/src/main/res/values-br/strings.xml index f113cc5352..dd850e893a 100644 --- a/legacy/ui/legacy/src/main/res/values-br/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-br/strings.xml @@ -443,7 +443,6 @@ Boest degemer unanet Holl gemennadennoù an teuliadoù unanet Unanañ - An holl gemennadennoù a zo skrammet er voest degemer unanet Netra Ent emgefreek (%s) Ment an nodrezh diff --git a/legacy/ui/legacy/src/main/res/values-ca/strings.xml b/legacy/ui/legacy/src/main/res/values-ca/strings.xml index 90fc9bd932..bd00d36f0c 100644 --- a/legacy/ui/legacy/src/main/res/values-ca/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ca/strings.xml @@ -532,7 +532,6 @@ Bústia d\'entrada unificada Tots els missatges en carpetes unificades Unifica - Tots els missatges es mostren a la bústia d\'entrada unificada Cap Automàtic (%s) Mida de la lletra diff --git a/legacy/ui/legacy/src/main/res/values-co/strings.xml b/legacy/ui/legacy/src/main/res/values-co/strings.xml index 17c67d6367..cda39c8c37 100644 --- a/legacy/ui/legacy/src/main/res/values-co/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-co/strings.xml @@ -499,7 +499,6 @@ Affissà u numaru di stellati Tutti i messaghji in i cartulari cuncolti Unificà - Tutti i messaghji sò affissati in a scatula di ricezzione cuncolta Autumaticu (%s) Speditore Data diff --git a/legacy/ui/legacy/src/main/res/values-cs/strings.xml b/legacy/ui/legacy/src/main/res/values-cs/strings.xml index 5cee5f0ecd..1e25693e9c 100644 --- a/legacy/ui/legacy/src/main/res/values-cs/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-cs/strings.xml @@ -533,7 +533,6 @@ Jednotná schránka Všechny zprávy v integrovaných složkách Integrovat - Všechny zprávy jsou zobrazeny v Integrované doručené poště Žádné Automaticky (%s) Velikost písma diff --git a/legacy/ui/legacy/src/main/res/values-cy/strings.xml b/legacy/ui/legacy/src/main/res/values-cy/strings.xml index 43836722fd..016366eaf5 100644 --- a/legacy/ui/legacy/src/main/res/values-cy/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-cy/strings.xml @@ -519,7 +519,6 @@ Mewnflwch Unedig Holl negeseuon pob cyfrif mewn un ffolder unedig Uno - Mae\'r holl negeseuon yn cael eu dangos mewn un Mewnflwch Unedig Dim Awtomatig (%s) Maint ffont diff --git a/legacy/ui/legacy/src/main/res/values-da/strings.xml b/legacy/ui/legacy/src/main/res/values-da/strings.xml index cad31e8023..9d13da80f0 100644 --- a/legacy/ui/legacy/src/main/res/values-da/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-da/strings.xml @@ -525,7 +525,6 @@ Fælles indbakke Alle mails i fælles mapper Inkluder i fælles indbakke - Alle mails vises i fælles indbakke Ingen Automatisk (%s) Skriftstørrelse diff --git a/legacy/ui/legacy/src/main/res/values-de/strings.xml b/legacy/ui/legacy/src/main/res/values-de/strings.xml index bf8136ea85..006654610f 100644 --- a/legacy/ui/legacy/src/main/res/values-de/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-de/strings.xml @@ -527,7 +527,6 @@ Gemeinsamer Posteingang Alle Nachrichten aus integrierten Ordnern In gem. Posteingang integrieren - Nachrichten im gemeinsamen Posteingang anzeigen Keine Automatisch (%s) Schriftgröße diff --git a/legacy/ui/legacy/src/main/res/values-el/strings.xml b/legacy/ui/legacy/src/main/res/values-el/strings.xml index 50cdf1b913..013fa81e85 100644 --- a/legacy/ui/legacy/src/main/res/values-el/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-el/strings.xml @@ -529,7 +529,6 @@ Ενοποιημένα εισερχόμενα Όλα τα μηνύματα στους ενοποιημένους φακέλους Ενιαία Εισερχόμενα - Όλα τα μηνύματα προβάλλονται στα Ενιαία εισερχόμενα Κανένας Αυτόματα (%s) Μέγεθος γραμματοσειράς diff --git a/legacy/ui/legacy/src/main/res/values-en-rGB/strings.xml b/legacy/ui/legacy/src/main/res/values-en-rGB/strings.xml index 1058008abb..ada5d90cfe 100644 --- a/legacy/ui/legacy/src/main/res/values-en-rGB/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-en-rGB/strings.xml @@ -414,7 +414,6 @@ Sender Select OpenPGP app Upload sent messages - All messages are shown in Unified Inbox Pattern 2 Default Pattern 1 diff --git a/legacy/ui/legacy/src/main/res/values-eo/strings.xml b/legacy/ui/legacy/src/main/res/values-eo/strings.xml index b5f928fdc3..d23ef47607 100644 --- a/legacy/ui/legacy/src/main/res/values-eo/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-eo/strings.xml @@ -486,7 +486,6 @@ Unuigita ricevujo Ĉiuj mesaĝoj en unuigitaj mesaĝujoj Unuigi - Vidigas ĉiujn mesaĝojn en unuigita ricevujo Nenia Aŭtomate (%s) Tipara grando diff --git a/legacy/ui/legacy/src/main/res/values-es/strings.xml b/legacy/ui/legacy/src/main/res/values-es/strings.xml index 766e9f9a53..e22a6b7446 100644 --- a/legacy/ui/legacy/src/main/res/values-es/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-es/strings.xml @@ -530,7 +530,6 @@ Entrada unificada Todos los mensajes en la Entrada unificada Unificar - Todos los mensajes se mostrarán en una bandeja unificada Ninguna Automático (%s) Tamaño de letra diff --git a/legacy/ui/legacy/src/main/res/values-et/strings.xml b/legacy/ui/legacy/src/main/res/values-et/strings.xml index 1462e8731d..02b917bda6 100644 --- a/legacy/ui/legacy/src/main/res/values-et/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-et/strings.xml @@ -529,7 +529,6 @@ Koondsisendkaust Kõik kirjad koondkaustades Koonda - Kõiki kirju näidatakse koondsisendkaustas Mitte ükski Automaatne (%s) Fondi suurus diff --git a/legacy/ui/legacy/src/main/res/values-eu/strings.xml b/legacy/ui/legacy/src/main/res/values-eu/strings.xml index fb3bcdf70a..e6f0b30738 100644 --- a/legacy/ui/legacy/src/main/res/values-eu/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-eu/strings.xml @@ -528,7 +528,6 @@ Sarrerako ontzi bateratua Karpeta bateratuetako mezu guztiak Bateratu - Mezu guztiak sarrerako ontzi bateratutan erakusten dira Bat ere ez Automatikoa (%s) Letra-tamaina diff --git a/legacy/ui/legacy/src/main/res/values-fa/strings.xml b/legacy/ui/legacy/src/main/res/values-fa/strings.xml index 86fc8823c2..2a4efc4658 100644 --- a/legacy/ui/legacy/src/main/res/values-fa/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-fa/strings.xml @@ -530,7 +530,6 @@ صندوق ورودی یکپارچه همهٔ پیام‌های صندوق ورودی یکپارچه یکپارچگی - همهٔ پیام‌ها در صندوق ورودی یکپارچه نشان داده می‌شوند هیچ‌کدام خودکار (%s) اندازهٔ قلم diff --git a/legacy/ui/legacy/src/main/res/values-fi/strings.xml b/legacy/ui/legacy/src/main/res/values-fi/strings.xml index 7115433d1c..ed80e9a6b4 100644 --- a/legacy/ui/legacy/src/main/res/values-fi/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-fi/strings.xml @@ -528,7 +528,6 @@ Yhdistetty saapuneet Kaikki viestit Yhdistetty saapuneet -kansiossa Yhdistä - Kaikki viestit näytetään Yhdistetty saapuneet -kansiossa Ei mitään Automaattinen (%s) Kirjasinkoko diff --git a/legacy/ui/legacy/src/main/res/values-fr/strings.xml b/legacy/ui/legacy/src/main/res/values-fr/strings.xml index ec3f3d2945..62ac61d7cd 100644 --- a/legacy/ui/legacy/src/main/res/values-fr/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-fr/strings.xml @@ -530,7 +530,6 @@ Boîte de réception unifiée Tous les courriels dans les dossiers unifiés Unifier - Tous les courriels sont affichés dans la boîte de réception unifiée Aucun Automatique (%s) Taille des polices diff --git a/legacy/ui/legacy/src/main/res/values-fy/strings.xml b/legacy/ui/legacy/src/main/res/values-fy/strings.xml index 81b1ff6cd2..6b64239fb2 100644 --- a/legacy/ui/legacy/src/main/res/values-fy/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-fy/strings.xml @@ -528,7 +528,6 @@ Kombinearre Postfek YN Alle berjochten yn kombinearre mappen Kombinearje - Alle berjochten wurde yn it kombinearre Postfek YN toand Gjin Automatysk (%s) Lettergrutte diff --git a/legacy/ui/legacy/src/main/res/values-ga/strings.xml b/legacy/ui/legacy/src/main/res/values-ga/strings.xml index 8ec37b6908..23613448ed 100644 --- a/legacy/ui/legacy/src/main/res/values-ga/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ga/strings.xml @@ -579,7 +579,6 @@ Bosca Isteach Aontaithe Gach teachtaireacht i bhfillteáin aontaithe Aontú - Taispeántar gach teachtaireacht i mBosca Isteach Aontaithe Ceann ar bith Uathoibríoch (%s) Clómhéid diff --git a/legacy/ui/legacy/src/main/res/values-gd/strings.xml b/legacy/ui/legacy/src/main/res/values-gd/strings.xml index e6076feae4..d7d926d003 100644 --- a/legacy/ui/legacy/src/main/res/values-gd/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-gd/strings.xml @@ -461,7 +461,6 @@ An t-oll-bhogsa Na h-uile teachdaireachd ann am pasganan co-aonaichte Co-aonaich - Tha gach teachdaireachd ga shealltainn san oll-bhogsa Chan eil gin Meud a’ chrutha-chlò Rèitich meud a’ chrutha-chlò diff --git a/legacy/ui/legacy/src/main/res/values-gl/strings.xml b/legacy/ui/legacy/src/main/res/values-gl/strings.xml index 7c20aa1c17..1376d5be66 100644 --- a/legacy/ui/legacy/src/main/res/values-gl/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-gl/strings.xml @@ -490,7 +490,6 @@ Entrada unificada Mensajes na Entrada unificada Unificar - Todas as mensaxes amosaranse nunha bandexa unificada ningunha Automático (%s) Tamaño letra diff --git a/legacy/ui/legacy/src/main/res/values-hr/strings.xml b/legacy/ui/legacy/src/main/res/values-hr/strings.xml index f15db55493..eb6b1aee03 100644 --- a/legacy/ui/legacy/src/main/res/values-hr/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-hr/strings.xml @@ -464,7 +464,6 @@ Objedinjena Dolazna Pošta Sve poruke u objedinjenim mapama Objedini - Sve poruke su prikazane u Objedinjenoj Dolaznoj Pošti Nijedna Automatski (%s) Veličina fonta diff --git a/legacy/ui/legacy/src/main/res/values-hu/strings.xml b/legacy/ui/legacy/src/main/res/values-hu/strings.xml index a6dc163f75..22def9b98b 100644 --- a/legacy/ui/legacy/src/main/res/values-hu/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-hu/strings.xml @@ -528,7 +528,6 @@ Egységes beérkezett üzenetek Az összes üzenet egységes mappákban Egyesítés - Az összes üzenetet az egységes beérkezett üzenetekben van megjelenítve Nincs Automatikus (%s) Betűméret diff --git a/legacy/ui/legacy/src/main/res/values-in/strings.xml b/legacy/ui/legacy/src/main/res/values-in/strings.xml index c92bc9521f..2b8e5e0355 100644 --- a/legacy/ui/legacy/src/main/res/values-in/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-in/strings.xml @@ -471,7 +471,6 @@ Kotak Masuk Terpadu Semua pesan dalam folder terpadu Satukan - Semua pesan ditampilkan di Kotak Masuk Terpadu Tidak ada Otomatis (%s) Ukuran fon diff --git a/legacy/ui/legacy/src/main/res/values-is/strings.xml b/legacy/ui/legacy/src/main/res/values-is/strings.xml index 4999b0f0b6..f76fdf50e6 100644 --- a/legacy/ui/legacy/src/main/res/values-is/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-is/strings.xml @@ -529,7 +529,6 @@ Sameinað innhólf Öll skilaboð í sameinuðum möppum Sameina - Öll skilaboð eru birt í sameinuðu innhólfi Engin Sjálfvirkt (%s) Leturstærð diff --git a/legacy/ui/legacy/src/main/res/values-it/strings.xml b/legacy/ui/legacy/src/main/res/values-it/strings.xml index 6ebc8a3deb..2519e1634c 100644 --- a/legacy/ui/legacy/src/main/res/values-it/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-it/strings.xml @@ -530,7 +530,6 @@ Posta combinata Tutti i messaggi in Posta combinata Combina - Tutti i messaggi sono visualizzati in Posta combinata Nessuna Automatica (%s) Dimensione carattere diff --git a/legacy/ui/legacy/src/main/res/values-iw/strings.xml b/legacy/ui/legacy/src/main/res/values-iw/strings.xml index 9e67223d8b..6d9ffebe9b 100644 --- a/legacy/ui/legacy/src/main/res/values-iw/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-iw/strings.xml @@ -421,7 +421,6 @@ תיבת דואר נכנס אחידה כל ההודעות בתיקיות המאוחדות לאחד - כל ההדועות מוצגות בתיבת דואר נכנס אחידה כלום גודל גופן הגדר גודל גופן diff --git a/legacy/ui/legacy/src/main/res/values-ja/strings.xml b/legacy/ui/legacy/src/main/res/values-ja/strings.xml index 12d166890f..1c17960925 100644 --- a/legacy/ui/legacy/src/main/res/values-ja/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ja/strings.xml @@ -528,7 +528,6 @@ 統合受信トレイ 統合フォルダーのすべてのメッセージ 統合 - すべてのメッセージを統合受信トレイに表示します なし 自動 (%s) フォントサイズ diff --git a/legacy/ui/legacy/src/main/res/values-ko/strings.xml b/legacy/ui/legacy/src/main/res/values-ko/strings.xml index c053a56c21..8ed42345b6 100644 --- a/legacy/ui/legacy/src/main/res/values-ko/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ko/strings.xml @@ -447,7 +447,6 @@ 통합 편지함 통합 폴더의 모든 이메일 통합 - 통합 편지함에서 모든 메시지를 볼 수 있습니다 없음 글꼴 크기 글꼴 크기 수정 diff --git a/legacy/ui/legacy/src/main/res/values-lt/strings.xml b/legacy/ui/legacy/src/main/res/values-lt/strings.xml index 8ee0723e25..a7cbdabb9f 100644 --- a/legacy/ui/legacy/src/main/res/values-lt/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-lt/strings.xml @@ -521,7 +521,6 @@ Suvestiniai gautieji Visi laiškai suvestiniuose aplankuose Suvesti - Visi laiškai rodomi suvestiniame gautųjų aplanke Jokios Automatinis (%s) Šrifto dydis diff --git a/legacy/ui/legacy/src/main/res/values-lv/strings.xml b/legacy/ui/legacy/src/main/res/values-lv/strings.xml index 307f415778..ef483013e3 100644 --- a/legacy/ui/legacy/src/main/res/values-lv/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-lv/strings.xml @@ -532,7 +532,6 @@ Apvienotā Iesūtne Visas ziņas apvienotās mapēs Apvienot - Visas ziņas tiek rādītas Apvienotajā Iesūtnē Nevienā Automātiski (%s) Šrifta izmērs diff --git a/legacy/ui/legacy/src/main/res/values-ml/strings.xml b/legacy/ui/legacy/src/main/res/values-ml/strings.xml index 8cc0ff33a2..60c721aa3d 100644 --- a/legacy/ui/legacy/src/main/res/values-ml/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ml/strings.xml @@ -493,7 +493,6 @@ ഏകീകൃത ഇൻ‌ബോക്സ് ഏകീകൃത ഫോൾഡറുകളിലെ എല്ലാ സന്ദേശങ്ങളും ഏകീകരിക്കുക - എല്ലാ സന്ദേശങ്ങളും ഏകീകൃത ഇൻ‌ബോക്സിൽ കാണിച്ചിരിക്കുന്നു ഒന്നുമില്ല യാന്ത്രിക (%s) അക്ഷര വലിപ്പം diff --git a/legacy/ui/legacy/src/main/res/values-nb/strings.xml b/legacy/ui/legacy/src/main/res/values-nb/strings.xml index 0ed18abb9d..bb3a55be43 100644 --- a/legacy/ui/legacy/src/main/res/values-nb/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-nb/strings.xml @@ -467,7 +467,6 @@ Samlet innboks Alle meldinger i samlede mapper Samle - Alle meldinger vises i samlet innboks Ingen Automatisk (%s) Skriftstørrelse diff --git a/legacy/ui/legacy/src/main/res/values-nl/strings.xml b/legacy/ui/legacy/src/main/res/values-nl/strings.xml index 3dcf2a88b2..6b78bc1ff7 100644 --- a/legacy/ui/legacy/src/main/res/values-nl/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-nl/strings.xml @@ -528,7 +528,6 @@ Samengevoegd Postvak IN Alle berichten in gecombineerde mappen Combineer - Alle berichten worden in het samengevoegde Postvak IN getoond Geen Automatisch (%s) Lettergrootte diff --git a/legacy/ui/legacy/src/main/res/values-nn/strings.xml b/legacy/ui/legacy/src/main/res/values-nn/strings.xml index 1436d96d38..bd365af5c5 100644 --- a/legacy/ui/legacy/src/main/res/values-nn/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-nn/strings.xml @@ -725,7 +725,6 @@ Mottakarar Fjern lokale meldingar? Fjern meldingar - Alle meldingar er vist i samla innboks Samle Tekstinndatafelter Dette vil fjerne alle lokale meldingar frå mappa. Ingen meldingar vil bli sletta frå tenaren. diff --git a/legacy/ui/legacy/src/main/res/values-pl/strings.xml b/legacy/ui/legacy/src/main/res/values-pl/strings.xml index 907eaaf0c5..90246b23b0 100644 --- a/legacy/ui/legacy/src/main/res/values-pl/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-pl/strings.xml @@ -533,7 +533,6 @@ Zintegrowana odbiorcza Nieprzeczytane wiadomości ze wszystkich kont Integruj - Pokazuj nieprzeczytane wiadomości w zintegrowanym widoku Żaden Automatyczny (%s) Rozmiar czcionki diff --git a/legacy/ui/legacy/src/main/res/values-pt-rBR/strings.xml b/legacy/ui/legacy/src/main/res/values-pt-rBR/strings.xml index 199a63d98c..6c4c4f9d13 100644 --- a/legacy/ui/legacy/src/main/res/values-pt-rBR/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-pt-rBR/strings.xml @@ -530,7 +530,6 @@ Caixa de Entrada Unificada Todas as mensagens nas pastas unificadas Unificar - Todas as mensagens são exibidas na Caixa de Entrada Unificada Nenhuma Automático (%s) Tamanho da fonte diff --git a/legacy/ui/legacy/src/main/res/values-pt-rPT/strings.xml b/legacy/ui/legacy/src/main/res/values-pt-rPT/strings.xml index 25abd7b139..813f9d5fcb 100644 --- a/legacy/ui/legacy/src/main/res/values-pt-rPT/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-pt-rPT/strings.xml @@ -531,7 +531,6 @@ Caixa de entrada unificada Todas as mensagens em pastas unificadas Unificar - Todas as mensagens são mostradas na caixa de entrada unificada Nenhuma Automático (%s) Tamanho da letra diff --git a/legacy/ui/legacy/src/main/res/values-ro/strings.xml b/legacy/ui/legacy/src/main/res/values-ro/strings.xml index b881daa782..fac3781fbe 100644 --- a/legacy/ui/legacy/src/main/res/values-ro/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ro/strings.xml @@ -530,7 +530,6 @@ Căsuță poștală unificată Toate mesajele în dosare unificate Unifică - Toate mesajele sunt în Căsuța poștală unificată Nimic Automat (%s) Mărime font diff --git a/legacy/ui/legacy/src/main/res/values-ru/strings.xml b/legacy/ui/legacy/src/main/res/values-ru/strings.xml index 5168cf56e0..0ad05d2c13 100644 --- a/legacy/ui/legacy/src/main/res/values-ru/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ru/strings.xml @@ -534,7 +534,6 @@ Входящие из всех ящиков Общие \"Входящие\" - Показать почту в общих \"Входящих\" Нет Автоматически (%s) Шрифт diff --git a/legacy/ui/legacy/src/main/res/values-sk/strings.xml b/legacy/ui/legacy/src/main/res/values-sk/strings.xml index 17912e0ab9..da491aae6c 100644 --- a/legacy/ui/legacy/src/main/res/values-sk/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-sk/strings.xml @@ -473,7 +473,6 @@ Jednotná schránka Všetky správy v zjednotených priečinkoch Zjednotiť - Všetky správy budú zobrazené v Jednotnej schránke Žiadna Automaticky (%s) Veľkosť písma diff --git a/legacy/ui/legacy/src/main/res/values-sl/strings.xml b/legacy/ui/legacy/src/main/res/values-sl/strings.xml index a31fa475ce..54636161a2 100644 --- a/legacy/ui/legacy/src/main/res/values-sl/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-sl/strings.xml @@ -528,7 +528,6 @@ Skupna mapa prejetih sporočil Vsa sporočila v skupnih mapah Združi - Vsa sporočila so prikazana v skupni mapi prejetih sporočil Brez usklajevanja Samodejno (%s) Velikost pisave diff --git a/legacy/ui/legacy/src/main/res/values-sq/strings.xml b/legacy/ui/legacy/src/main/res/values-sq/strings.xml index ae4111e733..e4900055ac 100644 --- a/legacy/ui/legacy/src/main/res/values-sq/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-sq/strings.xml @@ -527,7 +527,6 @@ Kuti Poste e Njësuar Krejt mesazhet në dosje të njësuara Njësoji - Krejt mesazhet shfaqen në Kuti Poste të Njësuar Asnjë Automatik (%s) Madhësi shkronjash diff --git a/legacy/ui/legacy/src/main/res/values-sr/strings.xml b/legacy/ui/legacy/src/main/res/values-sr/strings.xml index d6f4529081..f3d8dc64c3 100644 --- a/legacy/ui/legacy/src/main/res/values-sr/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-sr/strings.xml @@ -472,7 +472,6 @@ Обједињено сандуче Све поруке у обједињеним фолдерима Обједини - Све поруке се приказују у обједињеном сандучету Ниједан Аутоматски (%s) Величина фонта diff --git a/legacy/ui/legacy/src/main/res/values-sv/strings.xml b/legacy/ui/legacy/src/main/res/values-sv/strings.xml index e5af7e8a3a..f72452e232 100644 --- a/legacy/ui/legacy/src/main/res/values-sv/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-sv/strings.xml @@ -529,7 +529,6 @@ Samlad inkorg Alla meddelanden i samlade mappar Förena - Alla meddelanden visas i samlad inkorg Inga Automatisk (%s) Teckenstorlek diff --git a/legacy/ui/legacy/src/main/res/values-tr/strings.xml b/legacy/ui/legacy/src/main/res/values-tr/strings.xml index 00aaffc894..82ce54a211 100644 --- a/legacy/ui/legacy/src/main/res/values-tr/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-tr/strings.xml @@ -515,7 +515,6 @@ Birleşik Gelen Kutusu Tüm iletiler birleşik klasörlerde Birleştir - Tüm iletiler Birleşik Gelen Kutusu\'nda gösterilir Hiçbiri Otomatik (%s) Yazı tipi boyutu diff --git a/legacy/ui/legacy/src/main/res/values-uk/strings.xml b/legacy/ui/legacy/src/main/res/values-uk/strings.xml index 18914bc23b..9a9e28952f 100644 --- a/legacy/ui/legacy/src/main/res/values-uk/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-uk/strings.xml @@ -532,7 +532,6 @@ Об\'єднані Вхідні Усі повідомлення в об\'єднаних теках Об’єднати - Усі повідомлення показуються у теці \"Об\'єднані Вхідні\" Жодної Автоматично (%s) Розмір шрифту diff --git a/legacy/ui/legacy/src/main/res/values-vi/strings.xml b/legacy/ui/legacy/src/main/res/values-vi/strings.xml index 972dd61aba..ee63dba8ad 100644 --- a/legacy/ui/legacy/src/main/res/values-vi/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-vi/strings.xml @@ -805,7 +805,6 @@ Tin nhắn sớm nhất trước Tin nhắn muộn nhất trước 10 thư mục - Tất cả tin nhắn đã được hiển thị trong Hộp thư đồng nhất Danh sách tin nhắn Bạn có thực sự muốn xóa %1$d tin nhắn? diff --git a/legacy/ui/legacy/src/main/res/values-zh-rCN/strings.xml b/legacy/ui/legacy/src/main/res/values-zh-rCN/strings.xml index 9f74b75847..cfe8626a6a 100644 --- a/legacy/ui/legacy/src/main/res/values-zh-rCN/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-zh-rCN/strings.xml @@ -526,7 +526,6 @@ 统一收件箱 统一文件夹中的所有邮件 统一 - 所有邮件都显示在统一收件箱中 自动(%s) 字体大小 diff --git a/legacy/ui/legacy/src/main/res/values-zh-rTW/strings.xml b/legacy/ui/legacy/src/main/res/values-zh-rTW/strings.xml index 75f585e75e..d29a2d3fb9 100644 --- a/legacy/ui/legacy/src/main/res/values-zh-rTW/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-zh-rTW/strings.xml @@ -526,7 +526,6 @@ 統一收件匣 統一資料夾中的所有訊息 統一 - 所有訊息都會顯示在統一收件匣中 自動 (%s) 字體大小 diff --git a/legacy/ui/legacy/src/main/res/values/strings.xml b/legacy/ui/legacy/src/main/res/values/strings.xml index 17c60eebb1..ec990bc04b 100644 --- a/legacy/ui/legacy/src/main/res/values/strings.xml +++ b/legacy/ui/legacy/src/main/res/values/strings.xml @@ -659,7 +659,6 @@ All messages in unified folders Unify - All messages are shown in Unified Inbox None Automatic (%s) -- GitLab From e5ad8b06c54234eae488f166641cd2ec298c2447 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 4 Mar 2025 18:10:49 +0100 Subject: [PATCH 020/262] Add gitkeep to keep the changelogs folder in the metadata --- app-metadata/com.fsck.k9/en-US/changelogs/.gitkeep | 0 .../net.thunderbird.android.beta/en-US/changelogs/.gitkeep | 0 app-metadata/net.thunderbird.android/en-US/changelogs/.gitkeep | 0 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 app-metadata/com.fsck.k9/en-US/changelogs/.gitkeep create mode 100644 app-metadata/net.thunderbird.android.beta/en-US/changelogs/.gitkeep create mode 100644 app-metadata/net.thunderbird.android/en-US/changelogs/.gitkeep diff --git a/app-metadata/com.fsck.k9/en-US/changelogs/.gitkeep b/app-metadata/com.fsck.k9/en-US/changelogs/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app-metadata/net.thunderbird.android.beta/en-US/changelogs/.gitkeep b/app-metadata/net.thunderbird.android.beta/en-US/changelogs/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app-metadata/net.thunderbird.android/en-US/changelogs/.gitkeep b/app-metadata/net.thunderbird.android/en-US/changelogs/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 -- GitLab From 0bde0dd091873f5d2a0afb4b54dd57e1e3ae2574 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 4 Mar 2025 18:11:08 +0100 Subject: [PATCH 021/262] Move daily changelog to right place --- app-thunderbird/src/daily/{ => res}/raw/changelog_master.xml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename app-thunderbird/src/daily/{ => res}/raw/changelog_master.xml (100%) diff --git a/app-thunderbird/src/daily/raw/changelog_master.xml b/app-thunderbird/src/daily/res/raw/changelog_master.xml similarity index 100% rename from app-thunderbird/src/daily/raw/changelog_master.xml rename to app-thunderbird/src/daily/res/raw/changelog_master.xml -- GitLab From 5a13059ff5a93ccaa18d419d2d315b17f28b5cdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 4 Mar 2025 18:15:47 +0100 Subject: [PATCH 022/262] Change changelog_master to long changelog list --- scripts/render-notes.py | 2 ++ scripts/templates/changelog_master.xml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/render-notes.py b/scripts/render-notes.py index b44c98cfe2..de8e787b12 100755 --- a/scripts/render-notes.py +++ b/scripts/render-notes.py @@ -74,6 +74,7 @@ def render_notes( render_data["releases"][vers]["date"] = release["release_date"] render_data["releases"][vers]["short_notes"] = [] render_data["releases"][vers]["notes"] = {} + render_data["releases"][vers]["long_notes"] = [] for note in yaml_content["notes"]: if ("0b" not in version) or ( "0b" in version and note["group"] == int(vers[-1]) @@ -89,6 +90,7 @@ def render_notes( render_data["releases"][vers]["notes"][tag].append( note["note"].strip() ) + render_data["releases"][vers]["long_notes"].append(note["note"].strip()) if "short_note" in note: render_data["releases"][vers]["short_notes"].append( note["short_note"].strip() diff --git a/scripts/templates/changelog_master.xml b/scripts/templates/changelog_master.xml index b4f1594cb6..784da71d5b 100644 --- a/scripts/templates/changelog_master.xml +++ b/scripts/templates/changelog_master.xml @@ -1,5 +1,5 @@ -{%- for note in short_notes %} +{%- for note in long_notes %} {{ note }} {%- endfor %} -- GitLab From 2ef5f889e5f0d052103fbffbd520affdfd56ff6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 5 Mar 2025 12:28:03 +0100 Subject: [PATCH 023/262] Fix K-9 Mail badging --- app-k9mail/badging/fossRelease-badging.txt | 4 ++-- app-k9mail/badging/fullRelease-badging.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app-k9mail/badging/fossRelease-badging.txt b/app-k9mail/badging/fossRelease-badging.txt index 036053d250..4a7b7cdb95 100644 --- a/app-k9mail/badging/fossRelease-badging.txt +++ b/app-k9mail/badging/fossRelease-badging.txt @@ -54,7 +54,7 @@ application-label-nb:'K-9 e-post' application-label-nl:'K-9 Mail' application-label-nn:'K-9 e-post' application-label-pl:'K-9 Mail' -application-label-pt:'K-9 Mail' +application-label-pt:'Email K-9' application-label-pt-BR:'K-9 Mail' application-label-pt-PT:'K-9 Mail' application-label-ro:'K-9 Mail' @@ -62,7 +62,7 @@ application-label-ru:'Почта K-9' application-label-sk:'K-9 Mail' application-label-sl:'Pošta K-9' application-label-sq:'K-9 Mail' -application-label-sr:'К-9 Пошта' +application-label-sr:'K-9 Mail' application-label-sv:'K-9 Mail' application-label-tr:'K-9 Posta' application-label-uk:'K-9 Mail' diff --git a/app-k9mail/badging/fullRelease-badging.txt b/app-k9mail/badging/fullRelease-badging.txt index 078ff87d9d..61adf00fca 100644 --- a/app-k9mail/badging/fullRelease-badging.txt +++ b/app-k9mail/badging/fullRelease-badging.txt @@ -55,7 +55,7 @@ application-label-nb:'K-9 e-post' application-label-nl:'K-9 Mail' application-label-nn:'K-9 e-post' application-label-pl:'K-9 Mail' -application-label-pt:'K-9 Mail' +application-label-pt:'Email K-9' application-label-pt-BR:'K-9 Mail' application-label-pt-PT:'K-9 Mail' application-label-ro:'K-9 Mail' @@ -63,7 +63,7 @@ application-label-ru:'Почта K-9' application-label-sk:'K-9 Mail' application-label-sl:'Pošta K-9' application-label-sq:'K-9 Mail' -application-label-sr:'К-9 Пошта' +application-label-sr:'K-9 Mail' application-label-sv:'K-9 Mail' application-label-tr:'K-9 Posta' application-label-uk:'K-9 Mail' -- GitLab From b8d380fd737ad19f6c3deeb5b4dd7f4e51b9a56f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 5 Mar 2025 13:11:05 +0100 Subject: [PATCH 024/262] Bump AndroidX Activity 1.9.3 -> 1.10.1 --- app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt | 7 ++++--- app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt | 7 ++++--- app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt | 7 ++++--- app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt | 7 ++++--- .../dependencies/fossReleaseRuntimeClasspath.txt | 7 ++++--- app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt | 7 ++++--- app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt | 7 ++++--- .../dependencies/fullReleaseRuntimeClasspath.txt | 7 ++++--- gradle/libs.versions.toml | 2 +- 9 files changed, 33 insertions(+), 25 deletions(-) diff --git a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt index 9b56e58c0b..629d8aaf43 100644 --- a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt +++ b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt @@ -1,6 +1,6 @@ -androidx.activity:activity-compose:1.9.3 -androidx.activity:activity-ktx:1.9.3 -androidx.activity:activity:1.9.3 +androidx.activity:activity-compose:1.10.1 +androidx.activity:activity-ktx:1.10.1 +androidx.activity:activity:1.10.1 androidx.annotation:annotation-experimental:1.4.1 androidx.annotation:annotation-jvm:1.9.1 androidx.annotation:annotation:1.9.1 @@ -57,6 +57,7 @@ androidx.constraintlayout:constraintlayout:2.2.0 androidx.coordinatorlayout:coordinatorlayout:1.2.0 androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 +androidx.core:core-viewtree:1.0.0 androidx.core:core:1.15.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 diff --git a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt index 7d61fb6c5c..611ed2ad4a 100644 --- a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt +++ b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt @@ -1,6 +1,6 @@ -androidx.activity:activity-compose:1.9.3 -androidx.activity:activity-ktx:1.9.3 -androidx.activity:activity:1.9.3 +androidx.activity:activity-compose:1.10.1 +androidx.activity:activity-ktx:1.10.1 +androidx.activity:activity:1.10.1 androidx.annotation:annotation-experimental:1.4.1 androidx.annotation:annotation-jvm:1.9.1 androidx.annotation:annotation:1.9.1 @@ -57,6 +57,7 @@ androidx.constraintlayout:constraintlayout:2.2.0 androidx.coordinatorlayout:coordinatorlayout:1.2.0 androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 +androidx.core:core-viewtree:1.0.0 androidx.core:core:1.15.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 diff --git a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt index 4f62e34144..2206eb3eef 100644 --- a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt @@ -1,6 +1,6 @@ -androidx.activity:activity-compose:1.9.3 -androidx.activity:activity-ktx:1.9.3 -androidx.activity:activity:1.9.3 +androidx.activity:activity-compose:1.10.1 +androidx.activity:activity-ktx:1.10.1 +androidx.activity:activity:1.10.1 androidx.annotation:annotation-experimental:1.4.1 androidx.annotation:annotation-jvm:1.9.1 androidx.annotation:annotation:1.9.1 @@ -62,6 +62,7 @@ androidx.constraintlayout:constraintlayout:2.2.0 androidx.coordinatorlayout:coordinatorlayout:1.2.0 androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 +androidx.core:core-viewtree:1.0.0 androidx.core:core:1.15.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 diff --git a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt index 4f62e34144..2206eb3eef 100644 --- a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt @@ -1,6 +1,6 @@ -androidx.activity:activity-compose:1.9.3 -androidx.activity:activity-ktx:1.9.3 -androidx.activity:activity:1.9.3 +androidx.activity:activity-compose:1.10.1 +androidx.activity:activity-ktx:1.10.1 +androidx.activity:activity:1.10.1 androidx.annotation:annotation-experimental:1.4.1 androidx.annotation:annotation-jvm:1.9.1 androidx.annotation:annotation:1.9.1 @@ -62,6 +62,7 @@ androidx.constraintlayout:constraintlayout:2.2.0 androidx.coordinatorlayout:coordinatorlayout:1.2.0 androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 +androidx.core:core-viewtree:1.0.0 androidx.core:core:1.15.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 diff --git a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt index 4f62e34144..2206eb3eef 100644 --- a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt @@ -1,6 +1,6 @@ -androidx.activity:activity-compose:1.9.3 -androidx.activity:activity-ktx:1.9.3 -androidx.activity:activity:1.9.3 +androidx.activity:activity-compose:1.10.1 +androidx.activity:activity-ktx:1.10.1 +androidx.activity:activity:1.10.1 androidx.annotation:annotation-experimental:1.4.1 androidx.annotation:annotation-jvm:1.9.1 androidx.annotation:annotation:1.9.1 @@ -62,6 +62,7 @@ androidx.constraintlayout:constraintlayout:2.2.0 androidx.coordinatorlayout:coordinatorlayout:1.2.0 androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 +androidx.core:core-viewtree:1.0.0 androidx.core:core:1.15.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 diff --git a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt index 6cd4f4741d..772d6913cb 100644 --- a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt @@ -1,6 +1,6 @@ -androidx.activity:activity-compose:1.9.3 -androidx.activity:activity-ktx:1.9.3 -androidx.activity:activity:1.9.3 +androidx.activity:activity-compose:1.10.1 +androidx.activity:activity-ktx:1.10.1 +androidx.activity:activity:1.10.1 androidx.annotation:annotation-experimental:1.4.1 androidx.annotation:annotation-jvm:1.9.1 androidx.annotation:annotation:1.9.1 @@ -62,6 +62,7 @@ androidx.constraintlayout:constraintlayout:2.2.0 androidx.coordinatorlayout:coordinatorlayout:1.2.0 androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 +androidx.core:core-viewtree:1.0.0 androidx.core:core:1.15.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 diff --git a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt index 6cd4f4741d..772d6913cb 100644 --- a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt @@ -1,6 +1,6 @@ -androidx.activity:activity-compose:1.9.3 -androidx.activity:activity-ktx:1.9.3 -androidx.activity:activity:1.9.3 +androidx.activity:activity-compose:1.10.1 +androidx.activity:activity-ktx:1.10.1 +androidx.activity:activity:1.10.1 androidx.annotation:annotation-experimental:1.4.1 androidx.annotation:annotation-jvm:1.9.1 androidx.annotation:annotation:1.9.1 @@ -62,6 +62,7 @@ androidx.constraintlayout:constraintlayout:2.2.0 androidx.coordinatorlayout:coordinatorlayout:1.2.0 androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 +androidx.core:core-viewtree:1.0.0 androidx.core:core:1.15.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 diff --git a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt index 6cd4f4741d..772d6913cb 100644 --- a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt @@ -1,6 +1,6 @@ -androidx.activity:activity-compose:1.9.3 -androidx.activity:activity-ktx:1.9.3 -androidx.activity:activity:1.9.3 +androidx.activity:activity-compose:1.10.1 +androidx.activity:activity-ktx:1.10.1 +androidx.activity:activity:1.10.1 androidx.annotation:annotation-experimental:1.4.1 androidx.annotation:annotation-jvm:1.9.1 androidx.annotation:annotation:1.9.1 @@ -62,6 +62,7 @@ androidx.constraintlayout:constraintlayout:2.2.0 androidx.coordinatorlayout:coordinatorlayout:1.2.0 androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 +androidx.core:core-viewtree:1.0.0 androidx.core:core:1.15.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 690686a734..70fdea445f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,7 +17,7 @@ androidMaterial = "1.12.0" # AGP and tools should be updated together androidGradlePlugin = "8.7.3" androidTools = "31.7.3" -androidxActivity = "1.9.3" +androidxActivity = "1.10.1" androidxAnnotation = "1.9.1" androidxAppCompat = "1.7.0" androidxBiometric = "1.1.0" -- GitLab From 2c27401cd8b51f10cc04bfa5cd903f47a38051e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 5 Mar 2025 13:11:41 +0100 Subject: [PATCH 025/262] Replace custom LocalActivity by new official LocalActivity --- .../app/k9mail/ui/catalog/CatalogActivity.kt | 4 ++-- config/detekt/detekt.yml | 1 - .../compose/common/activity/LocalActivity.kt | 21 ------------------- .../account/server/settings/build.gradle.kts | 1 + .../ui/common/ClientCertificateInput.kt | 5 +++-- .../TextFieldOutlinedPasswordBiometric.kt | 2 +- .../ui/contribution/ContributionScreen.kt | 5 +++-- .../contribution/ContributionScreenKtTest.kt | 13 ++++-------- feature/launcher/build.gradle.kts | 2 ++ .../launcher/FeatureLauncherActivity.kt | 4 ++-- .../navigation/FeatureLauncherNavHost.kt | 5 +++-- .../feature/launcher/ui/FeatureLauncherApp.kt | 5 +++-- .../qrcode/ui/QrCodeScannerActivity.kt | 4 ++-- feature/settings/import/build.gradle.kts | 1 + .../import/ui/SettingsImportScreen.kt | 2 +- 15 files changed, 28 insertions(+), 47 deletions(-) delete mode 100644 core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/activity/LocalActivity.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/CatalogActivity.kt b/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/CatalogActivity.kt index 41b45a446d..6d341644bd 100644 --- a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/CatalogActivity.kt +++ b/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/CatalogActivity.kt @@ -2,9 +2,9 @@ package app.k9mail.ui.catalog import android.os.Bundle import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen -import app.k9mail.core.ui.compose.common.activity.setActivityContent import app.k9mail.ui.catalog.ui.CatalogScreen class CatalogActivity : ComponentActivity() { @@ -14,7 +14,7 @@ class CatalogActivity : ComponentActivity() { super.onCreate(savedInstanceState) - setActivityContent { + setContent { CatalogScreen() } } diff --git a/config/detekt/detekt.yml b/config/detekt/detekt.yml index 9c372dbdd3..f11271b6d3 100644 --- a/config/detekt/detekt.yml +++ b/config/detekt/detekt.yml @@ -797,7 +797,6 @@ Compose: LocalShapes, LocalSizes, LocalSpacings, - LocalActivity, LocalThemeColorScheme, LocalThemeElevations, LocalThemeImages, diff --git a/core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/activity/LocalActivity.kt b/core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/activity/LocalActivity.kt deleted file mode 100644 index 84293ea292..0000000000 --- a/core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/activity/LocalActivity.kt +++ /dev/null @@ -1,21 +0,0 @@ -package app.k9mail.core.ui.compose.common.activity - -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionContext -import androidx.compose.runtime.CompositionLocalProvider -import androidx.compose.runtime.staticCompositionLocalOf - -val LocalActivity = staticCompositionLocalOf { - error("No value for LocalActivity provided") -} - -fun ComponentActivity.setActivityContent( - parent: CompositionContext? = null, - content: @Composable () -> Unit, -) { - setContent(parent) { - CompositionLocalProvider(LocalActivity provides this, content = content) - } -} diff --git a/feature/account/server/settings/build.gradle.kts b/feature/account/server/settings/build.gradle.kts index 73ba3fdb6e..c4cb69f8e4 100644 --- a/feature/account/server/settings/build.gradle.kts +++ b/feature/account/server/settings/build.gradle.kts @@ -15,6 +15,7 @@ dependencies { implementation(projects.mail.protocols.imap) implementation(projects.feature.account.common) + implementation(libs.androidx.activity.compose) implementation(libs.androidx.biometric) testImplementation(projects.core.ui.compose.testing) diff --git a/feature/account/server/settings/src/main/kotlin/app/k9mail/feature/account/server/settings/ui/common/ClientCertificateInput.kt b/feature/account/server/settings/src/main/kotlin/app/k9mail/feature/account/server/settings/ui/common/ClientCertificateInput.kt index b35095fc7a..ee10a9cd5e 100644 --- a/feature/account/server/settings/src/main/kotlin/app/k9mail/feature/account/server/settings/ui/common/ClientCertificateInput.kt +++ b/feature/account/server/settings/src/main/kotlin/app/k9mail/feature/account/server/settings/ui/common/ClientCertificateInput.kt @@ -1,6 +1,8 @@ package app.k9mail.feature.account.server.settings.ui.common +import android.app.Activity import android.security.KeyChain +import androidx.activity.compose.LocalActivity import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxWidth @@ -8,7 +10,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import app.k9mail.core.ui.compose.common.activity.LocalActivity import app.k9mail.core.ui.compose.designsystem.atom.textfield.TextFieldOutlinedFakeSelect import app.k9mail.core.ui.compose.designsystem.molecule.input.inputContentPadding import app.k9mail.feature.account.server.settings.R @@ -27,7 +28,7 @@ fun ClientCertificateInput( .fillMaxWidth() .then(modifier), ) { - val activity = LocalActivity.current + val activity = LocalActivity.current as Activity TextFieldOutlinedFakeSelect( text = alias ?: stringResource(R.string.account_server_settings_client_certificate_none_selected), onClick = { diff --git a/feature/account/server/settings/src/main/kotlin/app/k9mail/feature/account/server/settings/ui/common/TextFieldOutlinedPasswordBiometric.kt b/feature/account/server/settings/src/main/kotlin/app/k9mail/feature/account/server/settings/ui/common/TextFieldOutlinedPasswordBiometric.kt index b50bf5cca1..6e98079282 100644 --- a/feature/account/server/settings/src/main/kotlin/app/k9mail/feature/account/server/settings/ui/common/TextFieldOutlinedPasswordBiometric.kt +++ b/feature/account/server/settings/src/main/kotlin/app/k9mail/feature/account/server/settings/ui/common/TextFieldOutlinedPasswordBiometric.kt @@ -1,6 +1,7 @@ package app.k9mail.feature.account.server.settings.ui.common import android.view.WindowManager +import androidx.activity.compose.LocalActivity import androidx.biometric.BiometricManager import androidx.biometric.BiometricPrompt import androidx.compose.runtime.Composable @@ -11,7 +12,6 @@ import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.fragment.app.FragmentActivity -import app.k9mail.core.ui.compose.common.activity.LocalActivity import app.k9mail.core.ui.compose.designsystem.atom.textfield.TextFieldOutlinedPassword /** diff --git a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionScreen.kt b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionScreen.kt index af8df248b4..30b6ee412a 100644 --- a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionScreen.kt +++ b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionScreen.kt @@ -2,12 +2,13 @@ package app.k9mail.feature.funding.googleplay.ui.contribution import android.content.Intent import android.net.Uri +import androidx.activity.ComponentActivity import androidx.activity.compose.BackHandler +import androidx.activity.compose.LocalActivity import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource -import app.k9mail.core.ui.compose.common.activity.LocalActivity import app.k9mail.core.ui.compose.common.mvi.observe import app.k9mail.core.ui.compose.designsystem.organism.TopAppBarWithBackButton import app.k9mail.core.ui.compose.designsystem.template.Scaffold @@ -21,7 +22,7 @@ internal fun ContributionScreen( modifier: Modifier = Modifier, viewModel: ViewModel = koinViewModel(), ) { - val activity = LocalActivity.current + val activity = LocalActivity.current as ComponentActivity val context = LocalContext.current val (state, dispatch) = viewModel.observe { effect -> diff --git a/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionScreenKtTest.kt b/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionScreenKtTest.kt index 02c978b15e..d241a88618 100644 --- a/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionScreenKtTest.kt +++ b/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionScreenKtTest.kt @@ -1,8 +1,6 @@ package app.k9mail.feature.funding.googleplay.ui.contribution -import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.ui.test.performClick -import app.k9mail.core.ui.compose.common.activity.LocalActivity import app.k9mail.core.ui.compose.testing.ComposeTest import app.k9mail.core.ui.compose.testing.onNodeWithTag import app.k9mail.core.ui.compose.testing.pressBack @@ -12,7 +10,6 @@ import assertk.assertThat import assertk.assertions.isEqualTo import kotlin.test.Test import kotlinx.coroutines.test.runTest -import org.mockito.Mockito.mock internal class ContributionScreenKtTest : ComposeTest() { @@ -23,12 +20,10 @@ internal class ContributionScreenKtTest : ComposeTest() { var onBackCounter = 0 setContentWithTheme { - CompositionLocalProvider(LocalActivity provides mock()) { - ContributionScreen( - onBack = { onBackCounter++ }, - viewModel = viewModel, - ) - } + ContributionScreen( + onBack = { onBackCounter++ }, + viewModel = viewModel, + ) } assertThat(onBackCounter).isEqualTo(0) diff --git a/feature/launcher/build.gradle.kts b/feature/launcher/build.gradle.kts index 98683409fa..f2a6e9f26b 100644 --- a/feature/launcher/build.gradle.kts +++ b/feature/launcher/build.gradle.kts @@ -17,5 +17,7 @@ dependencies { implementation(projects.feature.funding.api) + implementation(libs.androidx.activity.compose) + testImplementation(projects.core.ui.compose.testing) } diff --git a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherActivity.kt b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherActivity.kt index a947a4e055..f86781eca3 100644 --- a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherActivity.kt +++ b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherActivity.kt @@ -3,8 +3,8 @@ package app.k9mail.feature.launcher import android.content.Context import android.content.Intent import android.os.Bundle +import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge -import app.k9mail.core.ui.compose.common.activity.setActivityContent import app.k9mail.feature.launcher.ui.FeatureLauncherApp import com.fsck.k9.ui.base.K9Activity @@ -15,7 +15,7 @@ class FeatureLauncherActivity : K9Activity() { enableEdgeToEdge() - setActivityContent { + setContent { FeatureLauncherApp() } } diff --git a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt index 71858fac52..ba9515aa06 100644 --- a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt +++ b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt @@ -1,10 +1,11 @@ package app.k9mail.feature.launcher.navigation +import androidx.activity.ComponentActivity +import androidx.activity.compose.LocalActivity import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost -import app.k9mail.core.ui.compose.common.activity.LocalActivity import app.k9mail.feature.account.edit.navigation.accountEditRoute import app.k9mail.feature.account.setup.navigation.accountSetupRoute import app.k9mail.feature.funding.api.FundingNavigation @@ -21,7 +22,7 @@ fun FeatureLauncherNavHost( accountSetupFinishedLauncher: AccountSetupFinishedLauncher = koinInject(), fundingNavigation: FundingNavigation = koinInject(), ) { - val activity = LocalActivity.current + val activity = LocalActivity.current as ComponentActivity NavHost( navController = navController, diff --git a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/ui/FeatureLauncherApp.kt b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/ui/FeatureLauncherApp.kt index dfaa5f9424..666b65e673 100644 --- a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/ui/FeatureLauncherApp.kt +++ b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/ui/FeatureLauncherApp.kt @@ -1,11 +1,12 @@ package app.k9mail.feature.launcher.ui +import androidx.activity.ComponentActivity +import androidx.activity.compose.LocalActivity import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.safeDrawingPadding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.compose.rememberNavController -import app.k9mail.core.ui.compose.common.activity.LocalActivity import app.k9mail.core.ui.compose.designsystem.atom.Surface import app.k9mail.core.ui.theme.api.FeatureThemeProvider import app.k9mail.feature.launcher.navigation.FeatureLauncherNavHost @@ -25,7 +26,7 @@ fun FeatureLauncherApp( .safeDrawingPadding() .then(modifier), ) { - val activity = LocalActivity.current + val activity = LocalActivity.current as ComponentActivity FeatureLauncherNavHost( navController = navController, diff --git a/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/ui/QrCodeScannerActivity.kt b/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/ui/QrCodeScannerActivity.kt index 905608b840..dffe995039 100644 --- a/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/ui/QrCodeScannerActivity.kt +++ b/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/ui/QrCodeScannerActivity.kt @@ -3,8 +3,8 @@ package app.k9mail.feature.migration.qrcode.ui import android.content.Intent import android.net.Uri import android.os.Bundle +import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge -import app.k9mail.core.ui.compose.common.activity.setActivityContent import app.k9mail.core.ui.theme.api.FeatureThemeProvider import com.fsck.k9.ui.base.K9Activity import org.koin.android.ext.android.inject @@ -17,7 +17,7 @@ class QrCodeScannerActivity : K9Activity() { enableEdgeToEdge() - setActivityContent { + setContent { themeProvider.WithTheme(darkTheme = true) { QrCodeScannerScreen( finishWithResult = ::finishWithResult, diff --git a/feature/settings/import/build.gradle.kts b/feature/settings/import/build.gradle.kts index 4f8cf89925..5cb07b7e00 100644 --- a/feature/settings/import/build.gradle.kts +++ b/feature/settings/import/build.gradle.kts @@ -23,6 +23,7 @@ dependencies { implementation(projects.feature.account.oauth) implementation(libs.appauth) + implementation(libs.androidx.activity.compose) implementation(libs.androidx.fragment.compose) implementation(libs.androidx.constraintlayout) implementation(libs.fastadapter) diff --git a/feature/settings/import/src/main/kotlin/app/k9mail/feature/settings/import/ui/SettingsImportScreen.kt b/feature/settings/import/src/main/kotlin/app/k9mail/feature/settings/import/ui/SettingsImportScreen.kt index 0097552e54..f3ad24baac 100644 --- a/feature/settings/import/src/main/kotlin/app/k9mail/feature/settings/import/ui/SettingsImportScreen.kt +++ b/feature/settings/import/src/main/kotlin/app/k9mail/feature/settings/import/ui/SettingsImportScreen.kt @@ -1,6 +1,7 @@ package app.k9mail.feature.settings.import.ui import android.os.Bundle +import androidx.activity.compose.LocalActivity import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding @@ -10,7 +11,6 @@ import androidx.compose.ui.res.stringResource import androidx.fragment.app.FragmentActivity import androidx.fragment.compose.AndroidFragment import androidx.lifecycle.compose.LocalLifecycleOwner -import app.k9mail.core.ui.compose.common.activity.LocalActivity import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonIcon import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons import app.k9mail.core.ui.compose.designsystem.organism.TopAppBar -- GitLab From 833ae0325e7f7065fa08740b6e18d520b9a40d76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 5 Mar 2025 16:20:56 +0100 Subject: [PATCH 026/262] Change root spotless setup to increase speed and fix markdown formatting --- README.md | 12 +--- build-plugin/README.md | 3 +- .../src/main/kotlin/SpotlessExtension.kt | 18 ------ .../thunderbird.quality.spotless.gradle.kts | 6 -- ...underbird.quality.spotless.root.gradle.kts | 60 +++++++++++++++---- core/ui/compose/designsystem/README.md | 1 + core/ui/compose/theme2/k9mail/README.md | 1 + core/ui/legacy/README.md | 3 + core/ui/legacy/designsystem/README.md | 3 + docs/CI/Release_Automation.md | 8 +-- docs/RELEASES.md | 9 +-- docs/RELEASING.md | 9 ++- docs/architecture/adr/0000-adr-template.md | 2 +- .../adr/0001-switch-from-java-to-kotlin.md | 4 +- ...rial-components-in-atomic-design-system.md | 4 +- ...h-test-assertions-from-truth-to-assertk.md | 4 +- ...or-interfaces-and-their-implementations.md | 4 +- .../adr/0005-central-project-configuration.md | 1 + .../adr/0006-white-label-architecture.md | 1 + .../adr/0007-project-structure.md | 10 +--- .../java-to-kotlin-conversion-guide.md | 1 + feature/migration/qrcode/qr-code-format.md | 1 + legacy/README.md | 1 + ui-utils/ItemTouchHelper/README.md | 1 + ui-utils/LinearLayoutManager/README.md | 1 + 25 files changed, 88 insertions(+), 80 deletions(-) diff --git a/README.md b/README.md index 3cf886b88c..f0fbdfe380 100644 --- a/README.md +++ b/README.md @@ -106,14 +106,4 @@ If you want to use a fork of this project please ensure that you replace the OAu ## License - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +Thunderbird for Android is licensed under the [Apache License, Version 2.0](LICENSE). diff --git a/build-plugin/README.md b/build-plugin/README.md index 80228b59ab..1e99fadedf 100644 --- a/build-plugin/README.md +++ b/build-plugin/README.md @@ -30,7 +30,7 @@ module's `build.gradle.kts`. - `thunderbird.dependency.check` - [Gradle Versions: Gradle plugin to discover dependency updates](https://github.com/ben-manes/gradle-versions-plugin) - Use `./gradlew dependencyUpdates` to generate a dependency update report -- `thunderbird.quality.detekt` - [Detekt - Static code analysis for Kotlin ](https://detekt.dev/) +- `thunderbird.quality.detekt` - [Detekt - Static code analysis for Kotlin](https://detekt.dev/) - Use `./gradlew detekt` to check for any issue and `./gradlew detektBaseline` in case you can't fix the reported issue. - `thunderbird.quality.spotless` - [Spotless - Code formatter](https://github.com/diffplug/spotless) @@ -75,3 +75,4 @@ plugins { - [Herding Elephants | Square Corner Blog](https://developer.squareup.com/blog/herding-elephants/) - [Idiomatic Gradle: How do I idiomatically structure a large build with Gradle](https://github.com/jjohannes/idiomatic-gradle#idiomatic-build-logic-structure) + diff --git a/build-plugin/src/main/kotlin/SpotlessExtension.kt b/build-plugin/src/main/kotlin/SpotlessExtension.kt index c4900b06c4..96efa9d2f5 100644 --- a/build-plugin/src/main/kotlin/SpotlessExtension.kt +++ b/build-plugin/src/main/kotlin/SpotlessExtension.kt @@ -36,24 +36,6 @@ fun SpotlessExtension.configureKotlinGradleCheck( } } -fun SpotlessExtension.configureMarkdownCheck( - targets: List, -) { - format("markdown") { - // Set the prettier version explicitly, as the default version set in Spotless is outdated. - // Check https://github.com/prettier/prettier for the latest version and update the version here. - prettier("3.3.3").config( - mapOf( - "parser" to "markdown", - ), - ) - target(*targets.toTypedArray()) - targetExclude( - "**/build/", - ) - } -} - fun SpotlessExtension.configureMiscCheck() { format("misc") { target( diff --git a/build-plugin/src/main/kotlin/thunderbird.quality.spotless.gradle.kts b/build-plugin/src/main/kotlin/thunderbird.quality.spotless.gradle.kts index a39cb8645b..c7aea9faff 100644 --- a/build-plugin/src/main/kotlin/thunderbird.quality.spotless.gradle.kts +++ b/build-plugin/src/main/kotlin/thunderbird.quality.spotless.gradle.kts @@ -21,11 +21,5 @@ configure { libs = libs, ) - configureMarkdownCheck( - listOf( - "*.md", - ), - ) - configureMiscCheck() } diff --git a/build-plugin/src/main/kotlin/thunderbird.quality.spotless.root.gradle.kts b/build-plugin/src/main/kotlin/thunderbird.quality.spotless.root.gradle.kts index 470a481450..388805fd44 100644 --- a/build-plugin/src/main/kotlin/thunderbird.quality.spotless.root.gradle.kts +++ b/build-plugin/src/main/kotlin/thunderbird.quality.spotless.root.gradle.kts @@ -5,21 +5,57 @@ plugins { } configure { - configureKotlinGradleCheck( - targets = listOf( + kotlin { + target( + "build-plugin/src/*/kotlin/*.kt", + "build-plugin/src/*/kotlin/**/*.kt", + ) + targetExclude( + "build/", + "build-plugin/build/", + ) + + ktlint(libs.versions.ktlint.get()) + .setEditorConfigPath("${project.rootProject.projectDir}/.editorconfig") + .editorConfigOverride(kotlinEditorConfigOverride) + } + + kotlinGradle { + target( "*.gradle.kts", - "build-plugin/**/*.gradle.kts", - ), - project = project, - libs = libs, - ) + "build-plugin/*.gradle.kts", + "build-plugin/src/*/kotlin/*.kts", + "build-plugin/src/*/kotlin/**/*.kts", + ) + targetExclude( + "build/", + "build-plugin/build/", + ) + + ktlint(libs.versions.ktlint.get()) + .setEditorConfigPath("${project.rootProject.projectDir}/.editorconfig") + .editorConfigOverride( + mapOf( + "ktlint_standard_function-signature" to "disabled", + "ktlint_code_style" to "intellij_idea", + ), + ) + } - configureMarkdownCheck( - targets = listOf( + flexmark { + target( "*.md", + "docs/*.md", "docs/**/*.md", - ), - ) + ) + targetExclude( + "build/", + ) + flexmark() + } - configureMiscCheck() + format("misc") { + target(".gitignore") + trimTrailingWhitespace() + } } diff --git a/core/ui/compose/designsystem/README.md b/core/ui/compose/designsystem/README.md index 18fbf0921b..9596293bbb 100644 --- a/core/ui/compose/designsystem/README.md +++ b/core/ui/compose/designsystem/README.md @@ -36,3 +36,4 @@ This can save time and improve the overall quality, as well as facilitate collab - [Atomic Design Methodology | Atomic Design by Brad Frost](https://atomicdesign.bradfrost.com/chapter-2/) - [Atomic Design: Getting Started | Blog | We Are Mobile First](https://www.wearemobilefirst.com/blog/atomic-design) + diff --git a/core/ui/compose/theme2/k9mail/README.md b/core/ui/compose/theme2/k9mail/README.md index c0c25acb29..1accfa7285 100644 --- a/core/ui/compose/theme2/k9mail/README.md +++ b/core/ui/compose/theme2/k9mail/README.md @@ -10,3 +10,4 @@ fun MyComposable() { } } ``` + diff --git a/core/ui/legacy/README.md b/core/ui/legacy/README.md index 369d593081..7946afc706 100644 --- a/core/ui/legacy/README.md +++ b/core/ui/legacy/README.md @@ -7,5 +7,8 @@ The modules in this section are dedicated to the legacy UI implementation based > > This is only maintained for the purpose of supporting the existing implementation. +--- + > [!IMPORTANT] > Use the Composable UI along our [theme 2](../compose/theme2) and [design system](../compose/designsystem) design system instead. + diff --git a/core/ui/legacy/designsystem/README.md b/core/ui/legacy/designsystem/README.md index e9b7a7ef7a..aa2c56b913 100644 --- a/core/ui/legacy/designsystem/README.md +++ b/core/ui/legacy/designsystem/README.md @@ -7,5 +7,8 @@ This is the design system dedicated to the legacy UI implementation based on XML > > This is only maintained for the purpose of supporting the existing implementation. +--- + > [!IMPORTANT] > Use the Composable UI along our [theme 2](../compose/theme2) and [design system](../compose/designsystem) design system instead. + diff --git a/docs/CI/Release_Automation.md b/docs/CI/Release_Automation.md index 419093162f..d62faf4b71 100644 --- a/docs/CI/Release_Automation.md +++ b/docs/CI/Release_Automation.md @@ -74,10 +74,10 @@ The environments are locked to the respective branch they belong to. These environments contain the secrets for signing. Their names follow this pattern: - __ - thunderbird_beta_full - thunderbird_beta_foss - k9mail_beta_foss + __ + thunderbird_beta_full + thunderbird_beta_foss + k9mail_beta_foss The following secrets are needed: diff --git a/docs/RELEASES.md b/docs/RELEASES.md index 3435a7d58c..bf75a2da33 100644 --- a/docs/RELEASES.md +++ b/docs/RELEASES.md @@ -50,8 +50,8 @@ This branch represents the stable version of Thunderbird, which is released to t ## Sample Release Timeline -| Milestone | Details | Date | -| ------------------------------ | --------- | ------ | +| Milestone | Details | Date | +|--------------------------------|-----------|--------| | TfA 11.0a1 starts | | Feb 28 | | TfA merge 11.0a1 main->beta | | May 2 | | TfA 11.0b1 | | May 5 | @@ -134,8 +134,8 @@ While the version name changes, it must be ensured that the version code stays t Merges are performed with the `git merge` command: ```sh - git checkout beta - git merge main +git checkout beta +git merge main ``` This approach enables various benefits, including: @@ -202,3 +202,4 @@ These are the general steps for a release: 7. Wait for Play Store review to complete. 8. Update F-Droid to new TfA and K-9 releases. 9. Send notification to Matrix channels, and beta or planning mailing lists. + diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 4f24b10731..d8b0da46e7 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -27,20 +27,24 @@ Example `..signing.properties` file: the [installation instructions](https://f-droid.org/docs/Installing_the_Server_and_Repo_Tools). 1. On MacOS, it's best to install the latest version from source, because the version in Homebrew has some issues. 1. Install the android command line tools if not available already. + ```shell brew install --cask android-commandlinetools ``` 2. Install latest _fdroidserver_ from source: + ```shell python -m venv fdroidserver-env source fdroidserver-env/bin/activate pip install git+https://gitlab.com/fdroid/fdroidserver.git ``` 3. To use _fdroidserver_ from the command line, you need to activate the virtual environment before each use: + ```shell source fdroidserver-env/bin/activate ``` 4. To deactivate the virtual environment: + ```shell deactivate ``` @@ -60,6 +64,7 @@ Example `..signing.properties` file: 4. Commit the changes. Message: "Version $versionName" 5. Run `./gradlew clean :app-k9mail:assembleRelease --no-build-cache --no-configuration-cache` 6. Update an existing installation to make sure the app is signed with the proper key and runs on a real device. + ```shell adb install -r app-k9mail/build/outputs/apk/release/app-k9mail-release.apk ``` @@ -108,7 +113,6 @@ Example `..signing.properties` file: scandelete: - build-plugin/build ``` - 4. Commit the changes. Message: "Update K-9 Mail to $newVersionName (beta)" 5. Run `fdroid build --latest com.fsck.k9` to build the project using F-Droid's toolchain. 6. Push the changes to your fork of the _fdroiddata_ repository. @@ -154,6 +158,7 @@ That way the new release won't contain any changes that weren't exposed to user 5. Commit the changes. Message: "Version $versionName" 6. Run `./gradlew clean :app-k9mail:assembleRelease --no-build-cache --no-configuration-cache` 7. Update an existing installation to make sure the app is signed with the proper key and runs on a real device. + ```shell adb install -r app-k9mail/build/outputs/apk/release/app-k9mail-release.apk ``` @@ -199,7 +204,6 @@ That way the new release won't contain any changes that weren't exposed to user scandelete: - build-plugin/build ``` - 4. Commit the changes. Message: "Update K-9 Mail to $newVersionName" 5. Run `fdroid build --latest com.fsck.k9` to build the project using F-Droid's toolchain. 6. Push the changes to your fork of the _fdroiddata_ repository. @@ -234,3 +238,4 @@ If the app doesn't show up in the F-Droid client: - Check the build cycle, maybe you just missed it and it will be available in the next cycle. (The cycle is usually every 5 days.) - Check [F-Droid Status](https://fdroidstatus.org/status/fdroid) for any issues. - Check [F-Droid Monitor](https://monitor.f-droid.org/builds) for any errors mentioning `com.fsck.k9`. + diff --git a/docs/architecture/adr/0000-adr-template.md b/docs/architecture/adr/0000-adr-template.md index cd074744a7..a6faf449fb 100644 --- a/docs/architecture/adr/0000-adr-template.md +++ b/docs/architecture/adr/0000-adr-template.md @@ -10,7 +10,6 @@ ## Status - - **Status** ## Context @@ -34,3 +33,4 @@ - consequence 1 - consequence 2 + diff --git a/docs/architecture/adr/0001-switch-from-java-to-kotlin.md b/docs/architecture/adr/0001-switch-from-java-to-kotlin.md index a8e317d5aa..5252c92a6e 100644 --- a/docs/architecture/adr/0001-switch-from-java-to-kotlin.md +++ b/docs/architecture/adr/0001-switch-from-java-to-kotlin.md @@ -22,13 +22,11 @@ refactor our existing Java codebase to Kotlin. ## Consequences - **Positive Consequences** - - Improved null safety, reducing potential for null pointer exceptions. - Increased code readability and maintainability due to less verbose syntax. - Availability of modern language features such as coroutines for asynchronous programming, and extension functions. - Officially supported by Google for Android development, ensuring future-proof development. - - **Negative Consequences** - - The process of refactoring existing Java code to Kotlin can be time-consuming. - Potential for introduction of new bugs during refactoring. + diff --git a/docs/architecture/adr/0002-ui-wrap-material-components-in-atomic-design-system.md b/docs/architecture/adr/0002-ui-wrap-material-components-in-atomic-design-system.md index 1e066ef934..0bad41405c 100644 --- a/docs/architecture/adr/0002-ui-wrap-material-components-in-atomic-design-system.md +++ b/docs/architecture/adr/0002-ui-wrap-material-components-in-atomic-design-system.md @@ -25,13 +25,11 @@ using to construct our application's UI. ## Consequences - **Positive Consequences** - - Increased reusability of components across the application, reducing code duplication. - More consistent UI and uniform styling across the entire application. - Improved maintainability, as changes to a component only need to be made in one place. - - **Negative Consequences** - - Initial effort and time investment needed to implement the atomic design system. - Developers need to adapt to the new system and learn how to use it effectively. - Potential for over-complication if simple components are excessively broken down into atomic parts. + diff --git a/docs/architecture/adr/0003-switch-test-assertions-from-truth-to-assertk.md b/docs/architecture/adr/0003-switch-test-assertions-from-truth-to-assertk.md index a1b7123d9d..3a1f9e6a0e 100644 --- a/docs/architecture/adr/0003-switch-test-assertions-from-truth-to-assertk.md +++ b/docs/architecture/adr/0003-switch-test-assertions-from-truth-to-assertk.md @@ -26,14 +26,12 @@ We've further committed to converting all pre-existing tests from Truth to asser **Note**: The migration of all Truth tests to assertk has already been completed. - **Positive Consequences** - - **Ease of Transition**: The syntax of assertk is very similar to Truth, which makes the migration process smoother. - **Kotlin-Friendly**: assertk is designed specifically for Kotlin, allowing us to write more idiomatic and expressive Kotlin tests. - - **Negative Consequences** - - **Dependency**: While we are replacing one library with another, introducing a new library always carries the risk of bugs or future deprecation. - **Migration Effort**: Existing tests written using Truth will need to be migrated to use assertk, requiring some effort, although mitigated by the similar syntax. + diff --git a/docs/architecture/adr/0004-naming-conventions-for-interfaces-and-their-implementations.md b/docs/architecture/adr/0004-naming-conventions-for-interfaces-and-their-implementations.md index cdc6a4d2d4..c90becdb41 100644 --- a/docs/architecture/adr/0004-naming-conventions-for-interfaces-and-their-implementations.md +++ b/docs/architecture/adr/0004-naming-conventions-for-interfaces-and-their-implementations.md @@ -36,10 +36,8 @@ We'll be using the following guidelines for naming interfaces and their implemen ## Consequences - **Positive Consequences** - - Improved code readability and maintainability through consistent naming. - Reduced confusion and misunderstandings by using clear and descriptive names. - - **Negative Consequences** - - Initial effort is required to rename existing classes that do not follow these naming conventions. + diff --git a/docs/architecture/adr/0005-central-project-configuration.md b/docs/architecture/adr/0005-central-project-configuration.md index 2064469568..8fdf015a86 100644 --- a/docs/architecture/adr/0005-central-project-configuration.md +++ b/docs/architecture/adr/0005-central-project-configuration.md @@ -31,3 +31,4 @@ To address these challenges, we have decided to establish a `build-plugin` modul 1. **Initial Overhead:** The setup of the build-plugin module with a Gradle Version Catalog and the migration of existing configurations required an initial investment of time and resources, but this has been completed. 2. **Complexity for New Developers:** The centralized build architecture, particularly with the use of a Gradle Version Catalog, may initially seem daunting to new team members who are unfamiliar with this level of abstraction. 3. **Dependency on the Build-Plugin Module:** The entire project becomes reliant on the stability and accuracy of the `build-plugin` module. Errors within this module or the catalog could impact the build process across all modules. + diff --git a/docs/architecture/adr/0006-white-label-architecture.md b/docs/architecture/adr/0006-white-label-architecture.md index cf8176bf86..9280197b8c 100644 --- a/docs/architecture/adr/0006-white-label-architecture.md +++ b/docs/architecture/adr/0006-white-label-architecture.md @@ -34,3 +34,4 @@ A central module named `app-common` acts as the central integration point for sh - Potential for configuration complexities as differentiations increase between the two applications. - Higher initial setup time and learning curve for new developers due to the modular and decoupled architecture. + diff --git a/docs/architecture/adr/0007-project-structure.md b/docs/architecture/adr/0007-project-structure.md index 09a21114a3..dc7ce15c83 100644 --- a/docs/architecture/adr/0007-project-structure.md +++ b/docs/architecture/adr/0007-project-structure.md @@ -16,23 +16,14 @@ The project consists of two distinct applications. To improve maintainability an To achieve the goals outlined in the context, we have decided to adopt the following modular structure: 1. **App Modules**: - - `app-thunderbird` and `app-k9mail` are the modules for the two applications, Thunderbird for Android and K-9 Mail respectively. These modules will contain app-specific implementations, configurations, resources, and startup logic. They should solely depend on the `app-common` module for shared functionalities and may selectively integrate `feature` and `core` to setup app-specific needs. - 2. **App Common Module**: - - `app-common`: Acts as the central hub for shared code between both applications. This module serves as the primary "glue" that binds various `feature` modules together, providing a seamless integration point. While it can depend on `library` modules for additional functionalities, its main purpose is to orchestrate the interactions among the `feature` and `core` modules, ensuring similar functionality across both applications. This module should be kept lean to avoid unnecessary dependencies and ensure it remains focused on shared functionality. - 3. **Feature Modules**: - - `feature:*`: These are independent feature modules, that encapsulate distinct user-facing features. They are designed to be reusable and can be integrated into any application module as needed. They maintain dependencies on `core` modules and may interact with other `feature` or `library` modules. - 4. **Core Module**: - - `core:*`: The core modules contain essential utilities and base classes used across the entire project. These modules are grouped by their functionality (e.g., networking, database management, theming, common utilities). This segmentation allows for cleaner dependency management and specialization within foundational aspects. - 5. **Library Modules**: - - `library:*` These modules are for specific implementations that might be used across various features or applications. They could be third-party integrations or complex utilities and eventually shared across multiple projects. ```mermaid @@ -164,3 +155,4 @@ graph TD - Initial complexity in setting up and managing multiple modules may increase the learning curve and setup time for new developers. - Over-modularization can lead to excessive abstraction, potentially impacting runtime performance and complicating the debugging process. - Legacy modules may require additional effort to migrate to the new structure, potentially causing delays in the adoption of the new architecture. + diff --git a/docs/contributing/java-to-kotlin-conversion-guide.md b/docs/contributing/java-to-kotlin-conversion-guide.md index 7532da5cfa..854013f3a8 100644 --- a/docs/contributing/java-to-kotlin-conversion-guide.md +++ b/docs/contributing/java-to-kotlin-conversion-guide.md @@ -37,3 +37,4 @@ See our [ADR-0001](../architecture/adr/0001-switch-from-java-to-kotlin.md) for m - [Calling Kotlin from Java](https://kotlinlang.org/docs/java-to-kotlin-interop.html) - [Calling Java from Kotlin](https://kotlinlang.org/docs/java-interop.html) - [Kotlin and Android | Android Developers](https://developer.android.com/kotlin?hl=en) + diff --git a/feature/migration/qrcode/qr-code-format.md b/feature/migration/qrcode/qr-code-format.md index eb0cf2eafd..9243322bd9 100644 --- a/feature/migration/qrcode/qr-code-format.md +++ b/feature/migration/qrcode/qr-code-format.md @@ -475,3 +475,4 @@ The name to use in outgoing messages. - Identity: - Email: `jane@domain.example` - Display name: `Jane` + diff --git a/legacy/README.md b/legacy/README.md index f344f134d3..d77c86a000 100644 --- a/legacy/README.md +++ b/legacy/README.md @@ -6,3 +6,4 @@ The submodules within this module are considered legacy code that will still be > It's not suggested to use the contained modules for new features! > > Please consider writing new features within the feature modules and migrate existing functionality there. + diff --git a/ui-utils/ItemTouchHelper/README.md b/ui-utils/ItemTouchHelper/README.md index d387a7b552..5d3f9914a4 100644 --- a/ui-utils/ItemTouchHelper/README.md +++ b/ui-utils/ItemTouchHelper/README.md @@ -10,3 +10,4 @@ This means… - we're not converting this class to Kotlin unless AndroidX changes their version, - we're ignoring warnings generated by unmodified code, - and we're leaving API checks that could be removed because our minSdkVersion is higher than that of the AndroidX library. + diff --git a/ui-utils/LinearLayoutManager/README.md b/ui-utils/LinearLayoutManager/README.md index 3225b61b90..9eb3a45134 100644 --- a/ui-utils/LinearLayoutManager/README.md +++ b/ui-utils/LinearLayoutManager/README.md @@ -9,3 +9,4 @@ This means… - we're not converting this class to Kotlin unless AndroidX changes their version, - and we're ignoring warnings generated by unmodified code. + -- GitLab From f80462e87740430ad1af524ddfe7ce37d7677d4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 5 Mar 2025 17:10:47 +0100 Subject: [PATCH 027/262] Change module Spotless config to speed up --- .../src/main/kotlin/SpotlessExtension.kt | 53 +---------------- .../thunderbird.quality.spotless.gradle.kts | 59 ++++++++++++++----- 2 files changed, 47 insertions(+), 65 deletions(-) diff --git a/build-plugin/src/main/kotlin/SpotlessExtension.kt b/build-plugin/src/main/kotlin/SpotlessExtension.kt index 96efa9d2f5..03a9698edc 100644 --- a/build-plugin/src/main/kotlin/SpotlessExtension.kt +++ b/build-plugin/src/main/kotlin/SpotlessExtension.kt @@ -1,58 +1,9 @@ -import com.diffplug.gradle.spotless.SpotlessExtension -import org.gradle.accessors.dm.LibrariesForLibs -import org.gradle.api.Project - -fun SpotlessExtension.configureKotlinCheck( - targets: List, - project: Project, - libs: LibrariesForLibs, -) { - kotlin { - ktlint(libs.versions.ktlint.get()) - .setEditorConfigPath("${project.rootProject.projectDir}/.editorconfig") - .editorConfigOverride(kotlinEditorConfigOverride) - target(targets) - targetExclude( - "**/build/", - ) - } -} - -fun SpotlessExtension.configureKotlinGradleCheck( - targets: List, - project: Project, - libs: LibrariesForLibs, -) { - kotlinGradle { - ktlint(libs.versions.ktlint.get()) - .setEditorConfigPath("${project.rootProject.projectDir}/.editorconfig") - .editorConfigOverride( - mapOf( - "ktlint_standard_function-signature" to "disabled", - ), - ) - target(*targets.toTypedArray()) - targetExclude("**/build/") - } -} - -fun SpotlessExtension.configureMiscCheck() { - format("misc") { - target( - "*.gradle", - ".gitignore", - ) - targetExclude( - "**/build/", - ) - trimTrailingWhitespace() - } -} val kotlinEditorConfigOverride = mapOf( + "ktlint_code_style" to "intellij_idea", + "ktlint_ignore_back_ticked_identifier" to "true", "ktlint_function_naming_ignore_when_annotated_with" to "Composable", "ktlint_standard_property-naming" to "disabled", "ktlint_standard_function-signature" to "disabled", "ktlint_standard_parameter-list-spacing" to "disabled", - "ktlint_ignore_back_ticked_identifier" to "true", ) diff --git a/build-plugin/src/main/kotlin/thunderbird.quality.spotless.gradle.kts b/build-plugin/src/main/kotlin/thunderbird.quality.spotless.gradle.kts index c7aea9faff..cb3c7dfd15 100644 --- a/build-plugin/src/main/kotlin/thunderbird.quality.spotless.gradle.kts +++ b/build-plugin/src/main/kotlin/thunderbird.quality.spotless.gradle.kts @@ -5,21 +5,52 @@ plugins { } configure { - configureKotlinCheck( - targets = listOf( - "**/*.kt", - ), - project = project, - libs = libs, - ) + kotlin { + target( + "src/*/java/*.kt", + "src/*/kotlin/*.kt", + "src/*/java/**/*.kt", + "src/*/kotlin/**/*.kt", + ) + targetExclude( + "build/", + ) - configureKotlinGradleCheck( - targets = listOf( + ktlint(libs.versions.ktlint.get()) + .setEditorConfigPath("${project.rootProject.projectDir}/.editorconfig") + .editorConfigOverride(kotlinEditorConfigOverride) + } + + kotlinGradle { + target( "*.gradle.kts", - ), - project = project, - libs = libs, - ) + ) + targetExclude( + "build/", + ) + + ktlint(libs.versions.ktlint.get()) + .setEditorConfigPath("${project.rootProject.projectDir}/.editorconfig") + .editorConfigOverride( + mapOf( + "ktlint_standard_function-signature" to "disabled", + "ktlint_code_style" to "intellij_idea", + ), + ) + } + + flexmark { + target( + "*.md", + ) + targetExclude( + "build/", + ) + flexmark() + } - configureMiscCheck() + format("misc") { + target(".gitignore") + trimTrailingWhitespace() + } } -- GitLab From 4d93c7acc87b91348ef4faccf63d04afabb5cc52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 5 Mar 2025 17:16:45 +0100 Subject: [PATCH 028/262] Bump Spotless Plugin 6.25.0 -> 7.0.2 --- gradle.properties | 2 +- gradle/libs.versions.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index e2367850b4..bfa1cda247 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,5 +13,5 @@ android.defaults.buildfeatures.shaders=false org.gradle.jvmargs=-Xmx6g -XX:MaxMetaspaceSize=1g -Dfile.encoding=UTF-8 -XX:+UseParallelGC -XX:+HeapDumpOnOutOfMemoryError org.gradle.parallel=true org.gradle.caching=true -org.gradle.configuration-cache=false +org.gradle.configuration-cache=true org.gradle.kotlin.dsl.allWarningsAsErrors=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 690686a734..127668dd17 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -93,7 +93,7 @@ preferencesFix = "1.1.0" robolectric = "4.14" safeContentResolver = "1.0.0" searchPreference = "v2.3.0" -spotlessPlugin = "6.25.0" +spotlessPlugin = "7.0.2" timber = "5.0.1" turbine = "1.2.0" xmlpull = "1.0" -- GitLab From 604191644e1b8ce4210d0ed72cf4f400fd162644 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 5 Mar 2025 17:29:47 +0100 Subject: [PATCH 029/262] Update markdown check --- .github/workflows/markdown.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/markdown.yml b/.github/workflows/markdown.yml index f8fc334ea4..435e140608 100644 --- a/.github/workflows/markdown.yml +++ b/.github/workflows/markdown.yml @@ -27,4 +27,4 @@ jobs: uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0 - name: Quality - Spotless Markdown Check - run: ./gradlew spotlessMarkdownCheck + run: ./gradlew spotlessFlexmarkCheck -- GitLab From a89be01a0d4ebc1b41668fd2f1f57848a5a7a5d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 5 Mar 2025 18:20:07 +0100 Subject: [PATCH 030/262] Add instruction for app name translations --- app-k9mail/src/main/res/values/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app-k9mail/src/main/res/values/strings.xml b/app-k9mail/src/main/res/values/strings.xml index f115016e41..7bf1920009 100644 --- a/app-k9mail/src/main/res/values/strings.xml +++ b/app-k9mail/src/main/res/values/strings.xml @@ -1,4 +1,5 @@ + K-9 Mail -- GitLab From 980e174b93f105aad04cd604a30277c07f95a1ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 5 Mar 2025 15:11:34 +0100 Subject: [PATCH 031/262] Configure settings.gradle.kts to only search for Google dependencies within google registry --- settings.gradle.kts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index 0bafd5ff52..35c12ca98c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,7 +1,13 @@ pluginManagement { repositories { includeBuild("build-plugin") - google() + google { + content { + includeGroupByRegex("com\\.android.*") + includeGroupByRegex("com\\.google.*") + includeGroupByRegex("androidx.*") + } + } mavenCentral() gradlePluginPortal() } @@ -10,7 +16,13 @@ pluginManagement { dependencyResolutionManagement { repositoriesMode = RepositoriesMode.FAIL_ON_PROJECT_REPOS repositories { - google() + google { + content { + includeGroupByRegex("com\\.android.*") + includeGroupByRegex("com\\.google.*") + includeGroupByRegex("androidx.*") + } + } mavenCentral() maven(url = "https://maven.mozilla.org/maven2") maven(url = "https://jitpack.io") -- GitLab From 1b15180bb4f7f6d50bd57ceee004c914b31cec7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 5 Mar 2025 12:31:43 +0100 Subject: [PATCH 032/262] Change CI to use build instead of assemble to fully cover all app variants and catch errors early --- .github/workflows/android.yml | 7 ++----- .github/workflows/gradle-cache.yml | 3 ++- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 71dcf05c61..77bda33471 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -46,8 +46,5 @@ jobs: - name: Quality - Dependency Guard run: ./gradlew dependencyGuard - - name: Build - run: ./gradlew assembleDebug - - - name: Test - run: ./gradlew testsOnCi + - name: Build (run full build and tests) + run: ./gradlew build diff --git a/.github/workflows/gradle-cache.yml b/.github/workflows/gradle-cache.yml index 94ec730a8f..a931e67fb9 100644 --- a/.github/workflows/gradle-cache.yml +++ b/.github/workflows/gradle-cache.yml @@ -31,4 +31,5 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0 - - run: ./gradlew assemble + - name: Build (run full build and tests) + run: ./gradlew build -- GitLab From 5a39ec66f3fab6df0151855e4687eb644bc5c436 Mon Sep 17 00:00:00 2001 From: Corey Bryant Date: Wed, 5 Mar 2025 20:02:57 -0500 Subject: [PATCH 033/262] Do not upload to FTP with gzip encoding. Automated FTP uploads from the shippable builds FTP uploads are getting 501 error codes. By default gzip is set to true: https://github.com/google-github-actions/upload-cloud-storage --- .github/workflows/shippable_builds.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/shippable_builds.yml b/.github/workflows/shippable_builds.yml index 50cb3d69ff..56001e45c2 100644 --- a/.github/workflows/shippable_builds.yml +++ b/.github/workflows/shippable_builds.yml @@ -918,6 +918,7 @@ jobs: with: service_account: ${{ steps.prepare_ftp.outputs.SERVICE_ACCOUNT }} workload_identity_provider: ${{ steps.prepare_ftp.outputs.WORKLOAD_IDENTITY_PROVIDER }} + gzip: false - name: GCS Upload of APK Package to FTP if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' }} @@ -925,6 +926,7 @@ jobs: with: path: ${{ steps.prepare_ftp.outputs.FTP_LOCAL_PATH }}/${{ steps.rename.outputs.PKG_FILE }} destination: ${{ steps.prepare_ftp.outputs.FTP_DESTINATION }} + gzip: false - name: GCS Upload of APK Package to FTP Nightly Latest if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' && needs.dump_config.outputs.releaseType == 'daily'}} @@ -932,6 +934,7 @@ jobs: with: path: ${{ steps.prepare_ftp.outputs.FTP_LOCAL_PATH_NIGHTLY_LATEST }}/${{ steps.rename.outputs.PKG_FILE }} destination: ${{ steps.prepare_ftp.outputs.FTP_DESTINATION_NIGHTLY_LATEST }} + gzip: false - name: GCS Upload of Source Tar to FTP if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' }} @@ -939,6 +942,7 @@ jobs: with: path: ${{ steps.prepare_ftp.outputs.FTP_LOCAL_PATH }}/${{ steps.generate_tar.outputs.FTP_TAR_FILENAME }} destination: ${{ steps.prepare_ftp.outputs.FTP_DESTINATION }} + gzip: false - name: GCS Upload of Source Tar to FTP Nightly Latest if: ${{ !inputs.skipFtp && contains(matrix.releaseTarget, 'ftp') && matrix.packageFormat == 'apk' && needs.dump_config.outputs.releaseType == 'daily'}} @@ -946,6 +950,7 @@ jobs: with: path: ${{ steps.prepare_ftp.outputs.FTP_LOCAL_PATH_NIGHTLY_LATEST }}/${{ steps.generate_tar.outputs.FTP_TAR_FILENAME }} destination: ${{ steps.prepare_ftp.outputs.FTP_DESTINATION_NIGHTLY_LATEST }} + gzip: false - name: Summary uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 -- GitLab From 7889e70f6712c151720e2c4149eaf34361465743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 5 Mar 2025 15:11:49 +0100 Subject: [PATCH 034/262] Add a check to verify the used Java version --- settings.gradle.kts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/settings.gradle.kts b/settings.gradle.kts index 35c12ca98c..7cb504ccfe 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -192,3 +192,15 @@ include( ":library:html-cleaner", ":library:TokenAutoComplete", ) + +check(JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_17)) { + """ + Java 17+ is required to build Thunderbird for Android. + But it found an incompatible Java version ${{JavaVersion.current()}}. + + Java Home: [${System.getProperty("java.home")}] + + Please install Java 17+ and set JAVA_HOME to the directory containing the Java 17+ installation. + https://developer.android.com/build/jdks#jdk-config-in-studio + """.trimIndent() +} -- GitLab From a85db9e4a3b0d3eb47b51365b0ad68d163d83a5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 5 Mar 2025 15:15:25 +0100 Subject: [PATCH 035/262] Limit other registries to allowed dependencies --- settings.gradle.kts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index 7cb504ccfe..2606b09b72 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,6 +1,6 @@ pluginManagement { + includeBuild("build-plugin") repositories { - includeBuild("build-plugin") google { content { includeGroupByRegex("com\\.android.*") @@ -23,9 +23,19 @@ dependencyResolutionManagement { includeGroupByRegex("androidx.*") } } + maven(url = "https://maven.mozilla.org/maven2") { + content { + includeGroup("org.mozilla.components") + includeGroup("org.mozilla.telemetry") + } + } + maven(url = "https://jitpack.io") { + content { + includeGroup("com.github.ByteHamster") + includeGroup("com.github.cketti") + } + } mavenCentral() - maven(url = "https://maven.mozilla.org/maven2") - maven(url = "https://jitpack.io") } } -- GitLab From 23d9d7a132cf220b0eb11e4b792b80262cc78cbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 5 Mar 2025 13:57:51 +0100 Subject: [PATCH 036/262] Bump AndroidX dependencies - Android Desugar 2.1.3 -> 2.1.5 - AndroidX Camera 1.4.0 -> 1.4.1 - AndroidX ConstraintLayout 2.2.0 -> 2.2.1 - AndroidX CoordinatorLayout 1.2.0 -> 1.3.0 - AndroidX Fragment 1.8.5 -> 1.8.6 - AndroidX Navigation 2.8.4 -> 2.8.8 - AndroidX RecyclerView 1.3.2 -> 1.4.0 --- .../fossReleaseRuntimeClasspath.txt | 29 +++++++------- .../fullReleaseRuntimeClasspath.txt | 29 +++++++------- .../dependencies/fossBetaRuntimeClasspath.txt | 39 ++++++++++--------- .../fossDailyRuntimeClasspath.txt | 39 ++++++++++--------- .../fossReleaseRuntimeClasspath.txt | 39 ++++++++++--------- .../dependencies/fullBetaRuntimeClasspath.txt | 39 ++++++++++--------- .../fullDailyRuntimeClasspath.txt | 39 ++++++++++--------- .../fullReleaseRuntimeClasspath.txt | 39 ++++++++++--------- gradle/libs.versions.toml | 14 +++---- 9 files changed, 157 insertions(+), 149 deletions(-) diff --git a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt index 629d8aaf43..57815a9174 100644 --- a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt +++ b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt @@ -52,9 +52,9 @@ androidx.compose.ui:ui:1.7.5 androidx.compose:compose-bom:2024.11.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 -androidx.constraintlayout:constraintlayout-core:1.1.0 -androidx.constraintlayout:constraintlayout:2.2.0 -androidx.coordinatorlayout:coordinatorlayout:1.2.0 +androidx.constraintlayout:constraintlayout-core:1.1.1 +androidx.constraintlayout:constraintlayout:2.2.1 +androidx.coordinatorlayout:coordinatorlayout:1.3.0 androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 @@ -68,9 +68,9 @@ androidx.dynamicanimation:dynamicanimation:1.0.0 androidx.emoji2:emoji2-views-helper:1.3.0 androidx.emoji2:emoji2:1.3.0 androidx.exifinterface:exifinterface:1.3.7 -androidx.fragment:fragment-compose:1.8.5 -androidx.fragment:fragment-ktx:1.8.5 -androidx.fragment:fragment:1.8.5 +androidx.fragment:fragment-compose:1.8.6 +androidx.fragment:fragment-ktx:1.8.6 +androidx.fragment:fragment:1.8.6 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -97,17 +97,17 @@ androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 androidx.lifecycle:lifecycle-viewmodel:2.8.7 androidx.loader:loader:1.0.0 androidx.localbroadcastmanager:localbroadcastmanager:1.1.0 -androidx.navigation:navigation-common-ktx:2.8.4 -androidx.navigation:navigation-common:2.8.4 -androidx.navigation:navigation-compose:2.8.4 -androidx.navigation:navigation-fragment:2.8.4 -androidx.navigation:navigation-runtime-ktx:2.8.4 -androidx.navigation:navigation-runtime:2.8.4 -androidx.navigation:navigation-ui:2.8.4 +androidx.navigation:navigation-common-ktx:2.8.8 +androidx.navigation:navigation-common:2.8.8 +androidx.navigation:navigation-compose:2.8.8 +androidx.navigation:navigation-fragment:2.8.8 +androidx.navigation:navigation-runtime-ktx:2.8.8 +androidx.navigation:navigation-runtime:2.8.8 +androidx.navigation:navigation-ui:2.8.8 androidx.preference:preference:1.2.1 androidx.print:print:1.0.0 androidx.profileinstaller:profileinstaller:1.4.1 -androidx.recyclerview:recyclerview:1.3.2 +androidx.recyclerview:recyclerview:1.4.0 androidx.resourceinspection:resourceinspection-annotation:1.0.1 androidx.room:room-common:2.6.1 androidx.room:room-ktx:2.6.1 @@ -237,6 +237,7 @@ org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 org.jetbrains:annotations:26.0.1 org.jsoup:jsoup:1.18.1 +org.jspecify:jspecify:1.0.0 org.minidns:minidns-client:1.0.5 org.minidns:minidns-core:1.0.5 org.minidns:minidns-dnssec:1.0.5 diff --git a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt index 611ed2ad4a..d4f96da3e1 100644 --- a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt +++ b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt @@ -52,9 +52,9 @@ androidx.compose.ui:ui:1.7.5 androidx.compose:compose-bom:2024.11.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 -androidx.constraintlayout:constraintlayout-core:1.1.0 -androidx.constraintlayout:constraintlayout:2.2.0 -androidx.coordinatorlayout:coordinatorlayout:1.2.0 +androidx.constraintlayout:constraintlayout-core:1.1.1 +androidx.constraintlayout:constraintlayout:2.2.1 +androidx.coordinatorlayout:coordinatorlayout:1.3.0 androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 @@ -68,9 +68,9 @@ androidx.dynamicanimation:dynamicanimation:1.0.0 androidx.emoji2:emoji2-views-helper:1.3.0 androidx.emoji2:emoji2:1.3.0 androidx.exifinterface:exifinterface:1.3.7 -androidx.fragment:fragment-compose:1.8.5 -androidx.fragment:fragment-ktx:1.8.5 -androidx.fragment:fragment:1.8.5 +androidx.fragment:fragment-compose:1.8.6 +androidx.fragment:fragment-ktx:1.8.6 +androidx.fragment:fragment:1.8.6 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -97,17 +97,17 @@ androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 androidx.lifecycle:lifecycle-viewmodel:2.8.7 androidx.loader:loader:1.0.0 androidx.localbroadcastmanager:localbroadcastmanager:1.1.0 -androidx.navigation:navigation-common-ktx:2.8.4 -androidx.navigation:navigation-common:2.8.4 -androidx.navigation:navigation-compose:2.8.4 -androidx.navigation:navigation-fragment:2.8.4 -androidx.navigation:navigation-runtime-ktx:2.8.4 -androidx.navigation:navigation-runtime:2.8.4 -androidx.navigation:navigation-ui:2.8.4 +androidx.navigation:navigation-common-ktx:2.8.8 +androidx.navigation:navigation-common:2.8.8 +androidx.navigation:navigation-compose:2.8.8 +androidx.navigation:navigation-fragment:2.8.8 +androidx.navigation:navigation-runtime-ktx:2.8.8 +androidx.navigation:navigation-runtime:2.8.8 +androidx.navigation:navigation-ui:2.8.8 androidx.preference:preference:1.2.1 androidx.print:print:1.0.0 androidx.profileinstaller:profileinstaller:1.4.1 -androidx.recyclerview:recyclerview:1.3.2 +androidx.recyclerview:recyclerview:1.4.0 androidx.resourceinspection:resourceinspection-annotation:1.0.1 androidx.room:room-common:2.6.1 androidx.room:room-ktx:2.6.1 @@ -251,6 +251,7 @@ org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 org.jetbrains:annotations:26.0.1 org.jsoup:jsoup:1.18.1 +org.jspecify:jspecify:1.0.0 org.minidns:minidns-client:1.0.5 org.minidns:minidns-core:1.0.5 org.minidns:minidns-dnssec:1.0.5 diff --git a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt index 2206eb3eef..2e6953a608 100644 --- a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt @@ -11,11 +11,11 @@ androidx.arch.core:core-runtime:2.2.0 androidx.autofill:autofill:1.0.0 androidx.biometric:biometric:1.1.0 androidx.browser:browser:1.3.0 -androidx.camera:camera-camera2:1.4.0 -androidx.camera:camera-core:1.4.0 -androidx.camera:camera-lifecycle:1.4.0 -androidx.camera:camera-video:1.4.0 -androidx.camera:camera-view:1.4.0 +androidx.camera:camera-camera2:1.4.1 +androidx.camera:camera-core:1.4.1 +androidx.camera:camera-lifecycle:1.4.1 +androidx.camera:camera-video:1.4.1 +androidx.camera:camera-view:1.4.1 androidx.cardview:cardview:1.0.0 androidx.collection:collection-jvm:1.4.4 androidx.collection:collection-ktx:1.4.4 @@ -57,9 +57,9 @@ androidx.compose.ui:ui:1.7.5 androidx.compose:compose-bom:2024.11.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 -androidx.constraintlayout:constraintlayout-core:1.1.0 -androidx.constraintlayout:constraintlayout:2.2.0 -androidx.coordinatorlayout:coordinatorlayout:1.2.0 +androidx.constraintlayout:constraintlayout-core:1.1.1 +androidx.constraintlayout:constraintlayout:2.2.1 +androidx.coordinatorlayout:coordinatorlayout:1.3.0 androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 @@ -73,9 +73,9 @@ androidx.dynamicanimation:dynamicanimation:1.0.0 androidx.emoji2:emoji2-views-helper:1.3.0 androidx.emoji2:emoji2:1.3.0 androidx.exifinterface:exifinterface:1.3.7 -androidx.fragment:fragment-compose:1.8.5 -androidx.fragment:fragment-ktx:1.8.5 -androidx.fragment:fragment:1.8.5 +androidx.fragment:fragment-compose:1.8.6 +androidx.fragment:fragment-ktx:1.8.6 +androidx.fragment:fragment:1.8.6 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -102,17 +102,17 @@ androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 androidx.lifecycle:lifecycle-viewmodel:2.8.7 androidx.loader:loader:1.0.0 androidx.localbroadcastmanager:localbroadcastmanager:1.1.0 -androidx.navigation:navigation-common-ktx:2.8.4 -androidx.navigation:navigation-common:2.8.4 -androidx.navigation:navigation-compose:2.8.4 -androidx.navigation:navigation-fragment:2.8.4 -androidx.navigation:navigation-runtime-ktx:2.8.4 -androidx.navigation:navigation-runtime:2.8.4 -androidx.navigation:navigation-ui:2.8.4 +androidx.navigation:navigation-common-ktx:2.8.8 +androidx.navigation:navigation-common:2.8.8 +androidx.navigation:navigation-compose:2.8.8 +androidx.navigation:navigation-fragment:2.8.8 +androidx.navigation:navigation-runtime-ktx:2.8.8 +androidx.navigation:navigation-runtime:2.8.8 +androidx.navigation:navigation-ui:2.8.8 androidx.preference:preference:1.2.1 androidx.print:print:1.0.0 androidx.profileinstaller:profileinstaller:1.4.1 -androidx.recyclerview:recyclerview:1.3.2 +androidx.recyclerview:recyclerview:1.4.0 androidx.resourceinspection:resourceinspection-annotation:1.0.1 androidx.room:room-common:2.6.1 androidx.room:room-ktx:2.6.1 @@ -244,6 +244,7 @@ org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 org.jetbrains:annotations:26.0.1 org.jsoup:jsoup:1.18.1 +org.jspecify:jspecify:1.0.0 org.minidns:minidns-client:1.0.5 org.minidns:minidns-core:1.0.5 org.minidns:minidns-dnssec:1.0.5 diff --git a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt index 2206eb3eef..2e6953a608 100644 --- a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt @@ -11,11 +11,11 @@ androidx.arch.core:core-runtime:2.2.0 androidx.autofill:autofill:1.0.0 androidx.biometric:biometric:1.1.0 androidx.browser:browser:1.3.0 -androidx.camera:camera-camera2:1.4.0 -androidx.camera:camera-core:1.4.0 -androidx.camera:camera-lifecycle:1.4.0 -androidx.camera:camera-video:1.4.0 -androidx.camera:camera-view:1.4.0 +androidx.camera:camera-camera2:1.4.1 +androidx.camera:camera-core:1.4.1 +androidx.camera:camera-lifecycle:1.4.1 +androidx.camera:camera-video:1.4.1 +androidx.camera:camera-view:1.4.1 androidx.cardview:cardview:1.0.0 androidx.collection:collection-jvm:1.4.4 androidx.collection:collection-ktx:1.4.4 @@ -57,9 +57,9 @@ androidx.compose.ui:ui:1.7.5 androidx.compose:compose-bom:2024.11.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 -androidx.constraintlayout:constraintlayout-core:1.1.0 -androidx.constraintlayout:constraintlayout:2.2.0 -androidx.coordinatorlayout:coordinatorlayout:1.2.0 +androidx.constraintlayout:constraintlayout-core:1.1.1 +androidx.constraintlayout:constraintlayout:2.2.1 +androidx.coordinatorlayout:coordinatorlayout:1.3.0 androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 @@ -73,9 +73,9 @@ androidx.dynamicanimation:dynamicanimation:1.0.0 androidx.emoji2:emoji2-views-helper:1.3.0 androidx.emoji2:emoji2:1.3.0 androidx.exifinterface:exifinterface:1.3.7 -androidx.fragment:fragment-compose:1.8.5 -androidx.fragment:fragment-ktx:1.8.5 -androidx.fragment:fragment:1.8.5 +androidx.fragment:fragment-compose:1.8.6 +androidx.fragment:fragment-ktx:1.8.6 +androidx.fragment:fragment:1.8.6 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -102,17 +102,17 @@ androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 androidx.lifecycle:lifecycle-viewmodel:2.8.7 androidx.loader:loader:1.0.0 androidx.localbroadcastmanager:localbroadcastmanager:1.1.0 -androidx.navigation:navigation-common-ktx:2.8.4 -androidx.navigation:navigation-common:2.8.4 -androidx.navigation:navigation-compose:2.8.4 -androidx.navigation:navigation-fragment:2.8.4 -androidx.navigation:navigation-runtime-ktx:2.8.4 -androidx.navigation:navigation-runtime:2.8.4 -androidx.navigation:navigation-ui:2.8.4 +androidx.navigation:navigation-common-ktx:2.8.8 +androidx.navigation:navigation-common:2.8.8 +androidx.navigation:navigation-compose:2.8.8 +androidx.navigation:navigation-fragment:2.8.8 +androidx.navigation:navigation-runtime-ktx:2.8.8 +androidx.navigation:navigation-runtime:2.8.8 +androidx.navigation:navigation-ui:2.8.8 androidx.preference:preference:1.2.1 androidx.print:print:1.0.0 androidx.profileinstaller:profileinstaller:1.4.1 -androidx.recyclerview:recyclerview:1.3.2 +androidx.recyclerview:recyclerview:1.4.0 androidx.resourceinspection:resourceinspection-annotation:1.0.1 androidx.room:room-common:2.6.1 androidx.room:room-ktx:2.6.1 @@ -244,6 +244,7 @@ org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 org.jetbrains:annotations:26.0.1 org.jsoup:jsoup:1.18.1 +org.jspecify:jspecify:1.0.0 org.minidns:minidns-client:1.0.5 org.minidns:minidns-core:1.0.5 org.minidns:minidns-dnssec:1.0.5 diff --git a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt index 2206eb3eef..2e6953a608 100644 --- a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt @@ -11,11 +11,11 @@ androidx.arch.core:core-runtime:2.2.0 androidx.autofill:autofill:1.0.0 androidx.biometric:biometric:1.1.0 androidx.browser:browser:1.3.0 -androidx.camera:camera-camera2:1.4.0 -androidx.camera:camera-core:1.4.0 -androidx.camera:camera-lifecycle:1.4.0 -androidx.camera:camera-video:1.4.0 -androidx.camera:camera-view:1.4.0 +androidx.camera:camera-camera2:1.4.1 +androidx.camera:camera-core:1.4.1 +androidx.camera:camera-lifecycle:1.4.1 +androidx.camera:camera-video:1.4.1 +androidx.camera:camera-view:1.4.1 androidx.cardview:cardview:1.0.0 androidx.collection:collection-jvm:1.4.4 androidx.collection:collection-ktx:1.4.4 @@ -57,9 +57,9 @@ androidx.compose.ui:ui:1.7.5 androidx.compose:compose-bom:2024.11.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 -androidx.constraintlayout:constraintlayout-core:1.1.0 -androidx.constraintlayout:constraintlayout:2.2.0 -androidx.coordinatorlayout:coordinatorlayout:1.2.0 +androidx.constraintlayout:constraintlayout-core:1.1.1 +androidx.constraintlayout:constraintlayout:2.2.1 +androidx.coordinatorlayout:coordinatorlayout:1.3.0 androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 @@ -73,9 +73,9 @@ androidx.dynamicanimation:dynamicanimation:1.0.0 androidx.emoji2:emoji2-views-helper:1.3.0 androidx.emoji2:emoji2:1.3.0 androidx.exifinterface:exifinterface:1.3.7 -androidx.fragment:fragment-compose:1.8.5 -androidx.fragment:fragment-ktx:1.8.5 -androidx.fragment:fragment:1.8.5 +androidx.fragment:fragment-compose:1.8.6 +androidx.fragment:fragment-ktx:1.8.6 +androidx.fragment:fragment:1.8.6 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -102,17 +102,17 @@ androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 androidx.lifecycle:lifecycle-viewmodel:2.8.7 androidx.loader:loader:1.0.0 androidx.localbroadcastmanager:localbroadcastmanager:1.1.0 -androidx.navigation:navigation-common-ktx:2.8.4 -androidx.navigation:navigation-common:2.8.4 -androidx.navigation:navigation-compose:2.8.4 -androidx.navigation:navigation-fragment:2.8.4 -androidx.navigation:navigation-runtime-ktx:2.8.4 -androidx.navigation:navigation-runtime:2.8.4 -androidx.navigation:navigation-ui:2.8.4 +androidx.navigation:navigation-common-ktx:2.8.8 +androidx.navigation:navigation-common:2.8.8 +androidx.navigation:navigation-compose:2.8.8 +androidx.navigation:navigation-fragment:2.8.8 +androidx.navigation:navigation-runtime-ktx:2.8.8 +androidx.navigation:navigation-runtime:2.8.8 +androidx.navigation:navigation-ui:2.8.8 androidx.preference:preference:1.2.1 androidx.print:print:1.0.0 androidx.profileinstaller:profileinstaller:1.4.1 -androidx.recyclerview:recyclerview:1.3.2 +androidx.recyclerview:recyclerview:1.4.0 androidx.resourceinspection:resourceinspection-annotation:1.0.1 androidx.room:room-common:2.6.1 androidx.room:room-ktx:2.6.1 @@ -244,6 +244,7 @@ org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 org.jetbrains:annotations:26.0.1 org.jsoup:jsoup:1.18.1 +org.jspecify:jspecify:1.0.0 org.minidns:minidns-client:1.0.5 org.minidns:minidns-core:1.0.5 org.minidns:minidns-dnssec:1.0.5 diff --git a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt index 772d6913cb..1d1c922c93 100644 --- a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt @@ -11,11 +11,11 @@ androidx.arch.core:core-runtime:2.2.0 androidx.autofill:autofill:1.0.0 androidx.biometric:biometric:1.1.0 androidx.browser:browser:1.3.0 -androidx.camera:camera-camera2:1.4.0 -androidx.camera:camera-core:1.4.0 -androidx.camera:camera-lifecycle:1.4.0 -androidx.camera:camera-video:1.4.0 -androidx.camera:camera-view:1.4.0 +androidx.camera:camera-camera2:1.4.1 +androidx.camera:camera-core:1.4.1 +androidx.camera:camera-lifecycle:1.4.1 +androidx.camera:camera-video:1.4.1 +androidx.camera:camera-view:1.4.1 androidx.cardview:cardview:1.0.0 androidx.collection:collection-jvm:1.4.4 androidx.collection:collection-ktx:1.4.4 @@ -57,9 +57,9 @@ androidx.compose.ui:ui:1.7.5 androidx.compose:compose-bom:2024.11.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 -androidx.constraintlayout:constraintlayout-core:1.1.0 -androidx.constraintlayout:constraintlayout:2.2.0 -androidx.coordinatorlayout:coordinatorlayout:1.2.0 +androidx.constraintlayout:constraintlayout-core:1.1.1 +androidx.constraintlayout:constraintlayout:2.2.1 +androidx.coordinatorlayout:coordinatorlayout:1.3.0 androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 @@ -73,9 +73,9 @@ androidx.dynamicanimation:dynamicanimation:1.0.0 androidx.emoji2:emoji2-views-helper:1.3.0 androidx.emoji2:emoji2:1.3.0 androidx.exifinterface:exifinterface:1.3.7 -androidx.fragment:fragment-compose:1.8.5 -androidx.fragment:fragment-ktx:1.8.5 -androidx.fragment:fragment:1.8.5 +androidx.fragment:fragment-compose:1.8.6 +androidx.fragment:fragment-ktx:1.8.6 +androidx.fragment:fragment:1.8.6 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -102,17 +102,17 @@ androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 androidx.lifecycle:lifecycle-viewmodel:2.8.7 androidx.loader:loader:1.0.0 androidx.localbroadcastmanager:localbroadcastmanager:1.1.0 -androidx.navigation:navigation-common-ktx:2.8.4 -androidx.navigation:navigation-common:2.8.4 -androidx.navigation:navigation-compose:2.8.4 -androidx.navigation:navigation-fragment:2.8.4 -androidx.navigation:navigation-runtime-ktx:2.8.4 -androidx.navigation:navigation-runtime:2.8.4 -androidx.navigation:navigation-ui:2.8.4 +androidx.navigation:navigation-common-ktx:2.8.8 +androidx.navigation:navigation-common:2.8.8 +androidx.navigation:navigation-compose:2.8.8 +androidx.navigation:navigation-fragment:2.8.8 +androidx.navigation:navigation-runtime-ktx:2.8.8 +androidx.navigation:navigation-runtime:2.8.8 +androidx.navigation:navigation-ui:2.8.8 androidx.preference:preference:1.2.1 androidx.print:print:1.0.0 androidx.profileinstaller:profileinstaller:1.4.1 -androidx.recyclerview:recyclerview:1.3.2 +androidx.recyclerview:recyclerview:1.4.0 androidx.resourceinspection:resourceinspection-annotation:1.0.1 androidx.room:room-common:2.6.1 androidx.room:room-ktx:2.6.1 @@ -258,6 +258,7 @@ org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 org.jetbrains:annotations:26.0.1 org.jsoup:jsoup:1.18.1 +org.jspecify:jspecify:1.0.0 org.minidns:minidns-client:1.0.5 org.minidns:minidns-core:1.0.5 org.minidns:minidns-dnssec:1.0.5 diff --git a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt index 772d6913cb..1d1c922c93 100644 --- a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt @@ -11,11 +11,11 @@ androidx.arch.core:core-runtime:2.2.0 androidx.autofill:autofill:1.0.0 androidx.biometric:biometric:1.1.0 androidx.browser:browser:1.3.0 -androidx.camera:camera-camera2:1.4.0 -androidx.camera:camera-core:1.4.0 -androidx.camera:camera-lifecycle:1.4.0 -androidx.camera:camera-video:1.4.0 -androidx.camera:camera-view:1.4.0 +androidx.camera:camera-camera2:1.4.1 +androidx.camera:camera-core:1.4.1 +androidx.camera:camera-lifecycle:1.4.1 +androidx.camera:camera-video:1.4.1 +androidx.camera:camera-view:1.4.1 androidx.cardview:cardview:1.0.0 androidx.collection:collection-jvm:1.4.4 androidx.collection:collection-ktx:1.4.4 @@ -57,9 +57,9 @@ androidx.compose.ui:ui:1.7.5 androidx.compose:compose-bom:2024.11.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 -androidx.constraintlayout:constraintlayout-core:1.1.0 -androidx.constraintlayout:constraintlayout:2.2.0 -androidx.coordinatorlayout:coordinatorlayout:1.2.0 +androidx.constraintlayout:constraintlayout-core:1.1.1 +androidx.constraintlayout:constraintlayout:2.2.1 +androidx.coordinatorlayout:coordinatorlayout:1.3.0 androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 @@ -73,9 +73,9 @@ androidx.dynamicanimation:dynamicanimation:1.0.0 androidx.emoji2:emoji2-views-helper:1.3.0 androidx.emoji2:emoji2:1.3.0 androidx.exifinterface:exifinterface:1.3.7 -androidx.fragment:fragment-compose:1.8.5 -androidx.fragment:fragment-ktx:1.8.5 -androidx.fragment:fragment:1.8.5 +androidx.fragment:fragment-compose:1.8.6 +androidx.fragment:fragment-ktx:1.8.6 +androidx.fragment:fragment:1.8.6 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -102,17 +102,17 @@ androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 androidx.lifecycle:lifecycle-viewmodel:2.8.7 androidx.loader:loader:1.0.0 androidx.localbroadcastmanager:localbroadcastmanager:1.1.0 -androidx.navigation:navigation-common-ktx:2.8.4 -androidx.navigation:navigation-common:2.8.4 -androidx.navigation:navigation-compose:2.8.4 -androidx.navigation:navigation-fragment:2.8.4 -androidx.navigation:navigation-runtime-ktx:2.8.4 -androidx.navigation:navigation-runtime:2.8.4 -androidx.navigation:navigation-ui:2.8.4 +androidx.navigation:navigation-common-ktx:2.8.8 +androidx.navigation:navigation-common:2.8.8 +androidx.navigation:navigation-compose:2.8.8 +androidx.navigation:navigation-fragment:2.8.8 +androidx.navigation:navigation-runtime-ktx:2.8.8 +androidx.navigation:navigation-runtime:2.8.8 +androidx.navigation:navigation-ui:2.8.8 androidx.preference:preference:1.2.1 androidx.print:print:1.0.0 androidx.profileinstaller:profileinstaller:1.4.1 -androidx.recyclerview:recyclerview:1.3.2 +androidx.recyclerview:recyclerview:1.4.0 androidx.resourceinspection:resourceinspection-annotation:1.0.1 androidx.room:room-common:2.6.1 androidx.room:room-ktx:2.6.1 @@ -258,6 +258,7 @@ org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 org.jetbrains:annotations:26.0.1 org.jsoup:jsoup:1.18.1 +org.jspecify:jspecify:1.0.0 org.minidns:minidns-client:1.0.5 org.minidns:minidns-core:1.0.5 org.minidns:minidns-dnssec:1.0.5 diff --git a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt index 772d6913cb..1d1c922c93 100644 --- a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt @@ -11,11 +11,11 @@ androidx.arch.core:core-runtime:2.2.0 androidx.autofill:autofill:1.0.0 androidx.biometric:biometric:1.1.0 androidx.browser:browser:1.3.0 -androidx.camera:camera-camera2:1.4.0 -androidx.camera:camera-core:1.4.0 -androidx.camera:camera-lifecycle:1.4.0 -androidx.camera:camera-video:1.4.0 -androidx.camera:camera-view:1.4.0 +androidx.camera:camera-camera2:1.4.1 +androidx.camera:camera-core:1.4.1 +androidx.camera:camera-lifecycle:1.4.1 +androidx.camera:camera-video:1.4.1 +androidx.camera:camera-view:1.4.1 androidx.cardview:cardview:1.0.0 androidx.collection:collection-jvm:1.4.4 androidx.collection:collection-ktx:1.4.4 @@ -57,9 +57,9 @@ androidx.compose.ui:ui:1.7.5 androidx.compose:compose-bom:2024.11.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 -androidx.constraintlayout:constraintlayout-core:1.1.0 -androidx.constraintlayout:constraintlayout:2.2.0 -androidx.coordinatorlayout:coordinatorlayout:1.2.0 +androidx.constraintlayout:constraintlayout-core:1.1.1 +androidx.constraintlayout:constraintlayout:2.2.1 +androidx.coordinatorlayout:coordinatorlayout:1.3.0 androidx.core:core-ktx:1.15.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 @@ -73,9 +73,9 @@ androidx.dynamicanimation:dynamicanimation:1.0.0 androidx.emoji2:emoji2-views-helper:1.3.0 androidx.emoji2:emoji2:1.3.0 androidx.exifinterface:exifinterface:1.3.7 -androidx.fragment:fragment-compose:1.8.5 -androidx.fragment:fragment-ktx:1.8.5 -androidx.fragment:fragment:1.8.5 +androidx.fragment:fragment-compose:1.8.6 +androidx.fragment:fragment-ktx:1.8.6 +androidx.fragment:fragment:1.8.6 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -102,17 +102,17 @@ androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 androidx.lifecycle:lifecycle-viewmodel:2.8.7 androidx.loader:loader:1.0.0 androidx.localbroadcastmanager:localbroadcastmanager:1.1.0 -androidx.navigation:navigation-common-ktx:2.8.4 -androidx.navigation:navigation-common:2.8.4 -androidx.navigation:navigation-compose:2.8.4 -androidx.navigation:navigation-fragment:2.8.4 -androidx.navigation:navigation-runtime-ktx:2.8.4 -androidx.navigation:navigation-runtime:2.8.4 -androidx.navigation:navigation-ui:2.8.4 +androidx.navigation:navigation-common-ktx:2.8.8 +androidx.navigation:navigation-common:2.8.8 +androidx.navigation:navigation-compose:2.8.8 +androidx.navigation:navigation-fragment:2.8.8 +androidx.navigation:navigation-runtime-ktx:2.8.8 +androidx.navigation:navigation-runtime:2.8.8 +androidx.navigation:navigation-ui:2.8.8 androidx.preference:preference:1.2.1 androidx.print:print:1.0.0 androidx.profileinstaller:profileinstaller:1.4.1 -androidx.recyclerview:recyclerview:1.3.2 +androidx.recyclerview:recyclerview:1.4.0 androidx.resourceinspection:resourceinspection-annotation:1.0.1 androidx.room:room-common:2.6.1 androidx.room:room-ktx:2.6.1 @@ -258,6 +258,7 @@ org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 org.jetbrains:annotations:26.0.1 org.jsoup:jsoup:1.18.1 +org.jspecify:jspecify:1.0.0 org.minidns:minidns-client:1.0.5 org.minidns:minidns-core:1.0.5 org.minidns:minidns-dnssec:1.0.5 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 70fdea445f..d59a91c461 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,7 +12,7 @@ [versions] androidBilling = "7.1.1" -androidDesugar = "2.1.3" +androidDesugar = "2.1.5" androidMaterial = "1.12.0" # AGP and tools should be updated together androidGradlePlugin = "8.7.3" @@ -21,19 +21,19 @@ androidxActivity = "1.10.1" androidxAnnotation = "1.9.1" androidxAppCompat = "1.7.0" androidxBiometric = "1.1.0" -androidxCamera = "1.4.0" +androidxCamera = "1.4.1" # https://developer.android.com/jetpack/compose/bom/bom-mapping androidxComposeBom = "2024.11.00" -androidxConstraintLayout = "2.2.0" -androidxCoordinatorLayout = "1.2.0" +androidxConstraintLayout = "2.2.1" +androidxCoordinatorLayout = "1.3.0" androidxCore = "1.15.0" androidxCoreSplashscreen = "1.0.1" androidxDrawerLayout = "1.1.1" -androidxFragment = "1.8.5" +androidxFragment = "1.8.6" androidxLifecycle = "2.8.7" androidxLocalBroadcastManager = "1.1.0" -androidxNavigation = "2.8.4" -androidxRecyclerView = "1.3.2" +androidxNavigation = "2.8.8" +androidxRecyclerView = "1.4.0" androidxPreference = "1.2.1" androidxSwiperefreshlayout = "1.1.0" androidxTestCore = "1.6.1" -- GitLab From 0c8d46890b7185ff24e072d99d1c0b396af573d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 5 Mar 2025 14:21:07 +0100 Subject: [PATCH 037/262] Bump Jetpack Compose - AndroidX Compose BOM 2024.11.00 -> 2024.02.00 --- .../fossReleaseRuntimeClasspath.txt | 66 +++++++++---------- .../fullReleaseRuntimeClasspath.txt | 66 +++++++++---------- .../dependencies/fossBetaRuntimeClasspath.txt | 66 +++++++++---------- .../fossDailyRuntimeClasspath.txt | 66 +++++++++---------- .../fossReleaseRuntimeClasspath.txt | 66 +++++++++---------- .../dependencies/fullBetaRuntimeClasspath.txt | 66 +++++++++---------- .../fullDailyRuntimeClasspath.txt | 66 +++++++++---------- .../fullReleaseRuntimeClasspath.txt | 66 +++++++++---------- gradle/libs.versions.toml | 2 +- 9 files changed, 265 insertions(+), 265 deletions(-) diff --git a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt index 57815a9174..dacf411e48 100644 --- a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt +++ b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt @@ -15,41 +15,41 @@ androidx.cardview:cardview:1.0.0 androidx.collection:collection-jvm:1.4.4 androidx.collection:collection-ktx:1.4.4 androidx.collection:collection:1.4.4 -androidx.compose.animation:animation-android:1.7.5 -androidx.compose.animation:animation-core-android:1.7.5 -androidx.compose.animation:animation-core:1.7.5 -androidx.compose.animation:animation:1.7.5 -androidx.compose.foundation:foundation-android:1.7.5 -androidx.compose.foundation:foundation-layout-android:1.7.5 -androidx.compose.foundation:foundation-layout:1.7.5 -androidx.compose.foundation:foundation:1.7.5 +androidx.compose.animation:animation-android:1.7.8 +androidx.compose.animation:animation-core-android:1.7.8 +androidx.compose.animation:animation-core:1.7.8 +androidx.compose.animation:animation:1.7.8 +androidx.compose.foundation:foundation-android:1.7.8 +androidx.compose.foundation:foundation-layout-android:1.7.8 +androidx.compose.foundation:foundation-layout:1.7.8 +androidx.compose.foundation:foundation:1.7.8 androidx.compose.material3:material3-android:1.3.1 androidx.compose.material3:material3:1.3.1 -androidx.compose.material:material-icons-core-android:1.7.5 -androidx.compose.material:material-icons-core:1.7.5 -androidx.compose.material:material-icons-extended-android:1.7.5 -androidx.compose.material:material-icons-extended:1.7.5 -androidx.compose.material:material-ripple-android:1.7.5 -androidx.compose.material:material-ripple:1.7.5 -androidx.compose.runtime:runtime-android:1.7.5 -androidx.compose.runtime:runtime-saveable-android:1.7.5 -androidx.compose.runtime:runtime-saveable:1.7.5 -androidx.compose.runtime:runtime:1.7.5 -androidx.compose.ui:ui-android:1.7.5 -androidx.compose.ui:ui-geometry-android:1.7.5 -androidx.compose.ui:ui-geometry:1.7.5 -androidx.compose.ui:ui-graphics-android:1.7.5 -androidx.compose.ui:ui-graphics:1.7.5 -androidx.compose.ui:ui-text-android:1.7.5 -androidx.compose.ui:ui-text:1.7.5 -androidx.compose.ui:ui-tooling-preview-android:1.7.5 -androidx.compose.ui:ui-tooling-preview:1.7.5 -androidx.compose.ui:ui-unit-android:1.7.5 -androidx.compose.ui:ui-unit:1.7.5 -androidx.compose.ui:ui-util-android:1.7.5 -androidx.compose.ui:ui-util:1.7.5 -androidx.compose.ui:ui:1.7.5 -androidx.compose:compose-bom:2024.11.00 +androidx.compose.material:material-icons-core-android:1.7.8 +androidx.compose.material:material-icons-core:1.7.8 +androidx.compose.material:material-icons-extended-android:1.7.8 +androidx.compose.material:material-icons-extended:1.7.8 +androidx.compose.material:material-ripple-android:1.7.8 +androidx.compose.material:material-ripple:1.7.8 +androidx.compose.runtime:runtime-android:1.7.8 +androidx.compose.runtime:runtime-saveable-android:1.7.8 +androidx.compose.runtime:runtime-saveable:1.7.8 +androidx.compose.runtime:runtime:1.7.8 +androidx.compose.ui:ui-android:1.7.8 +androidx.compose.ui:ui-geometry-android:1.7.8 +androidx.compose.ui:ui-geometry:1.7.8 +androidx.compose.ui:ui-graphics-android:1.7.8 +androidx.compose.ui:ui-graphics:1.7.8 +androidx.compose.ui:ui-text-android:1.7.8 +androidx.compose.ui:ui-text:1.7.8 +androidx.compose.ui:ui-tooling-preview-android:1.7.8 +androidx.compose.ui:ui-tooling-preview:1.7.8 +androidx.compose.ui:ui-unit-android:1.7.8 +androidx.compose.ui:ui-unit:1.7.8 +androidx.compose.ui:ui-util-android:1.7.8 +androidx.compose.ui:ui-util:1.7.8 +androidx.compose.ui:ui:1.7.8 +androidx.compose:compose-bom:2025.02.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 androidx.constraintlayout:constraintlayout-core:1.1.1 diff --git a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt index d4f96da3e1..15e59bf572 100644 --- a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt +++ b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt @@ -15,41 +15,41 @@ androidx.cardview:cardview:1.0.0 androidx.collection:collection-jvm:1.4.4 androidx.collection:collection-ktx:1.4.4 androidx.collection:collection:1.4.4 -androidx.compose.animation:animation-android:1.7.5 -androidx.compose.animation:animation-core-android:1.7.5 -androidx.compose.animation:animation-core:1.7.5 -androidx.compose.animation:animation:1.7.5 -androidx.compose.foundation:foundation-android:1.7.5 -androidx.compose.foundation:foundation-layout-android:1.7.5 -androidx.compose.foundation:foundation-layout:1.7.5 -androidx.compose.foundation:foundation:1.7.5 +androidx.compose.animation:animation-android:1.7.8 +androidx.compose.animation:animation-core-android:1.7.8 +androidx.compose.animation:animation-core:1.7.8 +androidx.compose.animation:animation:1.7.8 +androidx.compose.foundation:foundation-android:1.7.8 +androidx.compose.foundation:foundation-layout-android:1.7.8 +androidx.compose.foundation:foundation-layout:1.7.8 +androidx.compose.foundation:foundation:1.7.8 androidx.compose.material3:material3-android:1.3.1 androidx.compose.material3:material3:1.3.1 -androidx.compose.material:material-icons-core-android:1.7.5 -androidx.compose.material:material-icons-core:1.7.5 -androidx.compose.material:material-icons-extended-android:1.7.5 -androidx.compose.material:material-icons-extended:1.7.5 -androidx.compose.material:material-ripple-android:1.7.5 -androidx.compose.material:material-ripple:1.7.5 -androidx.compose.runtime:runtime-android:1.7.5 -androidx.compose.runtime:runtime-saveable-android:1.7.5 -androidx.compose.runtime:runtime-saveable:1.7.5 -androidx.compose.runtime:runtime:1.7.5 -androidx.compose.ui:ui-android:1.7.5 -androidx.compose.ui:ui-geometry-android:1.7.5 -androidx.compose.ui:ui-geometry:1.7.5 -androidx.compose.ui:ui-graphics-android:1.7.5 -androidx.compose.ui:ui-graphics:1.7.5 -androidx.compose.ui:ui-text-android:1.7.5 -androidx.compose.ui:ui-text:1.7.5 -androidx.compose.ui:ui-tooling-preview-android:1.7.5 -androidx.compose.ui:ui-tooling-preview:1.7.5 -androidx.compose.ui:ui-unit-android:1.7.5 -androidx.compose.ui:ui-unit:1.7.5 -androidx.compose.ui:ui-util-android:1.7.5 -androidx.compose.ui:ui-util:1.7.5 -androidx.compose.ui:ui:1.7.5 -androidx.compose:compose-bom:2024.11.00 +androidx.compose.material:material-icons-core-android:1.7.8 +androidx.compose.material:material-icons-core:1.7.8 +androidx.compose.material:material-icons-extended-android:1.7.8 +androidx.compose.material:material-icons-extended:1.7.8 +androidx.compose.material:material-ripple-android:1.7.8 +androidx.compose.material:material-ripple:1.7.8 +androidx.compose.runtime:runtime-android:1.7.8 +androidx.compose.runtime:runtime-saveable-android:1.7.8 +androidx.compose.runtime:runtime-saveable:1.7.8 +androidx.compose.runtime:runtime:1.7.8 +androidx.compose.ui:ui-android:1.7.8 +androidx.compose.ui:ui-geometry-android:1.7.8 +androidx.compose.ui:ui-geometry:1.7.8 +androidx.compose.ui:ui-graphics-android:1.7.8 +androidx.compose.ui:ui-graphics:1.7.8 +androidx.compose.ui:ui-text-android:1.7.8 +androidx.compose.ui:ui-text:1.7.8 +androidx.compose.ui:ui-tooling-preview-android:1.7.8 +androidx.compose.ui:ui-tooling-preview:1.7.8 +androidx.compose.ui:ui-unit-android:1.7.8 +androidx.compose.ui:ui-unit:1.7.8 +androidx.compose.ui:ui-util-android:1.7.8 +androidx.compose.ui:ui-util:1.7.8 +androidx.compose.ui:ui:1.7.8 +androidx.compose:compose-bom:2025.02.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 androidx.constraintlayout:constraintlayout-core:1.1.1 diff --git a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt index 2e6953a608..ee8887b959 100644 --- a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt @@ -20,41 +20,41 @@ androidx.cardview:cardview:1.0.0 androidx.collection:collection-jvm:1.4.4 androidx.collection:collection-ktx:1.4.4 androidx.collection:collection:1.4.4 -androidx.compose.animation:animation-android:1.7.5 -androidx.compose.animation:animation-core-android:1.7.5 -androidx.compose.animation:animation-core:1.7.5 -androidx.compose.animation:animation:1.7.5 -androidx.compose.foundation:foundation-android:1.7.5 -androidx.compose.foundation:foundation-layout-android:1.7.5 -androidx.compose.foundation:foundation-layout:1.7.5 -androidx.compose.foundation:foundation:1.7.5 +androidx.compose.animation:animation-android:1.7.8 +androidx.compose.animation:animation-core-android:1.7.8 +androidx.compose.animation:animation-core:1.7.8 +androidx.compose.animation:animation:1.7.8 +androidx.compose.foundation:foundation-android:1.7.8 +androidx.compose.foundation:foundation-layout-android:1.7.8 +androidx.compose.foundation:foundation-layout:1.7.8 +androidx.compose.foundation:foundation:1.7.8 androidx.compose.material3:material3-android:1.3.1 androidx.compose.material3:material3:1.3.1 -androidx.compose.material:material-icons-core-android:1.7.5 -androidx.compose.material:material-icons-core:1.7.5 -androidx.compose.material:material-icons-extended-android:1.7.5 -androidx.compose.material:material-icons-extended:1.7.5 -androidx.compose.material:material-ripple-android:1.7.5 -androidx.compose.material:material-ripple:1.7.5 -androidx.compose.runtime:runtime-android:1.7.5 -androidx.compose.runtime:runtime-saveable-android:1.7.5 -androidx.compose.runtime:runtime-saveable:1.7.5 -androidx.compose.runtime:runtime:1.7.5 -androidx.compose.ui:ui-android:1.7.5 -androidx.compose.ui:ui-geometry-android:1.7.5 -androidx.compose.ui:ui-geometry:1.7.5 -androidx.compose.ui:ui-graphics-android:1.7.5 -androidx.compose.ui:ui-graphics:1.7.5 -androidx.compose.ui:ui-text-android:1.7.5 -androidx.compose.ui:ui-text:1.7.5 -androidx.compose.ui:ui-tooling-preview-android:1.7.5 -androidx.compose.ui:ui-tooling-preview:1.7.5 -androidx.compose.ui:ui-unit-android:1.7.5 -androidx.compose.ui:ui-unit:1.7.5 -androidx.compose.ui:ui-util-android:1.7.5 -androidx.compose.ui:ui-util:1.7.5 -androidx.compose.ui:ui:1.7.5 -androidx.compose:compose-bom:2024.11.00 +androidx.compose.material:material-icons-core-android:1.7.8 +androidx.compose.material:material-icons-core:1.7.8 +androidx.compose.material:material-icons-extended-android:1.7.8 +androidx.compose.material:material-icons-extended:1.7.8 +androidx.compose.material:material-ripple-android:1.7.8 +androidx.compose.material:material-ripple:1.7.8 +androidx.compose.runtime:runtime-android:1.7.8 +androidx.compose.runtime:runtime-saveable-android:1.7.8 +androidx.compose.runtime:runtime-saveable:1.7.8 +androidx.compose.runtime:runtime:1.7.8 +androidx.compose.ui:ui-android:1.7.8 +androidx.compose.ui:ui-geometry-android:1.7.8 +androidx.compose.ui:ui-geometry:1.7.8 +androidx.compose.ui:ui-graphics-android:1.7.8 +androidx.compose.ui:ui-graphics:1.7.8 +androidx.compose.ui:ui-text-android:1.7.8 +androidx.compose.ui:ui-text:1.7.8 +androidx.compose.ui:ui-tooling-preview-android:1.7.8 +androidx.compose.ui:ui-tooling-preview:1.7.8 +androidx.compose.ui:ui-unit-android:1.7.8 +androidx.compose.ui:ui-unit:1.7.8 +androidx.compose.ui:ui-util-android:1.7.8 +androidx.compose.ui:ui-util:1.7.8 +androidx.compose.ui:ui:1.7.8 +androidx.compose:compose-bom:2025.02.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 androidx.constraintlayout:constraintlayout-core:1.1.1 diff --git a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt index 2e6953a608..ee8887b959 100644 --- a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt @@ -20,41 +20,41 @@ androidx.cardview:cardview:1.0.0 androidx.collection:collection-jvm:1.4.4 androidx.collection:collection-ktx:1.4.4 androidx.collection:collection:1.4.4 -androidx.compose.animation:animation-android:1.7.5 -androidx.compose.animation:animation-core-android:1.7.5 -androidx.compose.animation:animation-core:1.7.5 -androidx.compose.animation:animation:1.7.5 -androidx.compose.foundation:foundation-android:1.7.5 -androidx.compose.foundation:foundation-layout-android:1.7.5 -androidx.compose.foundation:foundation-layout:1.7.5 -androidx.compose.foundation:foundation:1.7.5 +androidx.compose.animation:animation-android:1.7.8 +androidx.compose.animation:animation-core-android:1.7.8 +androidx.compose.animation:animation-core:1.7.8 +androidx.compose.animation:animation:1.7.8 +androidx.compose.foundation:foundation-android:1.7.8 +androidx.compose.foundation:foundation-layout-android:1.7.8 +androidx.compose.foundation:foundation-layout:1.7.8 +androidx.compose.foundation:foundation:1.7.8 androidx.compose.material3:material3-android:1.3.1 androidx.compose.material3:material3:1.3.1 -androidx.compose.material:material-icons-core-android:1.7.5 -androidx.compose.material:material-icons-core:1.7.5 -androidx.compose.material:material-icons-extended-android:1.7.5 -androidx.compose.material:material-icons-extended:1.7.5 -androidx.compose.material:material-ripple-android:1.7.5 -androidx.compose.material:material-ripple:1.7.5 -androidx.compose.runtime:runtime-android:1.7.5 -androidx.compose.runtime:runtime-saveable-android:1.7.5 -androidx.compose.runtime:runtime-saveable:1.7.5 -androidx.compose.runtime:runtime:1.7.5 -androidx.compose.ui:ui-android:1.7.5 -androidx.compose.ui:ui-geometry-android:1.7.5 -androidx.compose.ui:ui-geometry:1.7.5 -androidx.compose.ui:ui-graphics-android:1.7.5 -androidx.compose.ui:ui-graphics:1.7.5 -androidx.compose.ui:ui-text-android:1.7.5 -androidx.compose.ui:ui-text:1.7.5 -androidx.compose.ui:ui-tooling-preview-android:1.7.5 -androidx.compose.ui:ui-tooling-preview:1.7.5 -androidx.compose.ui:ui-unit-android:1.7.5 -androidx.compose.ui:ui-unit:1.7.5 -androidx.compose.ui:ui-util-android:1.7.5 -androidx.compose.ui:ui-util:1.7.5 -androidx.compose.ui:ui:1.7.5 -androidx.compose:compose-bom:2024.11.00 +androidx.compose.material:material-icons-core-android:1.7.8 +androidx.compose.material:material-icons-core:1.7.8 +androidx.compose.material:material-icons-extended-android:1.7.8 +androidx.compose.material:material-icons-extended:1.7.8 +androidx.compose.material:material-ripple-android:1.7.8 +androidx.compose.material:material-ripple:1.7.8 +androidx.compose.runtime:runtime-android:1.7.8 +androidx.compose.runtime:runtime-saveable-android:1.7.8 +androidx.compose.runtime:runtime-saveable:1.7.8 +androidx.compose.runtime:runtime:1.7.8 +androidx.compose.ui:ui-android:1.7.8 +androidx.compose.ui:ui-geometry-android:1.7.8 +androidx.compose.ui:ui-geometry:1.7.8 +androidx.compose.ui:ui-graphics-android:1.7.8 +androidx.compose.ui:ui-graphics:1.7.8 +androidx.compose.ui:ui-text-android:1.7.8 +androidx.compose.ui:ui-text:1.7.8 +androidx.compose.ui:ui-tooling-preview-android:1.7.8 +androidx.compose.ui:ui-tooling-preview:1.7.8 +androidx.compose.ui:ui-unit-android:1.7.8 +androidx.compose.ui:ui-unit:1.7.8 +androidx.compose.ui:ui-util-android:1.7.8 +androidx.compose.ui:ui-util:1.7.8 +androidx.compose.ui:ui:1.7.8 +androidx.compose:compose-bom:2025.02.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 androidx.constraintlayout:constraintlayout-core:1.1.1 diff --git a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt index 2e6953a608..ee8887b959 100644 --- a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt @@ -20,41 +20,41 @@ androidx.cardview:cardview:1.0.0 androidx.collection:collection-jvm:1.4.4 androidx.collection:collection-ktx:1.4.4 androidx.collection:collection:1.4.4 -androidx.compose.animation:animation-android:1.7.5 -androidx.compose.animation:animation-core-android:1.7.5 -androidx.compose.animation:animation-core:1.7.5 -androidx.compose.animation:animation:1.7.5 -androidx.compose.foundation:foundation-android:1.7.5 -androidx.compose.foundation:foundation-layout-android:1.7.5 -androidx.compose.foundation:foundation-layout:1.7.5 -androidx.compose.foundation:foundation:1.7.5 +androidx.compose.animation:animation-android:1.7.8 +androidx.compose.animation:animation-core-android:1.7.8 +androidx.compose.animation:animation-core:1.7.8 +androidx.compose.animation:animation:1.7.8 +androidx.compose.foundation:foundation-android:1.7.8 +androidx.compose.foundation:foundation-layout-android:1.7.8 +androidx.compose.foundation:foundation-layout:1.7.8 +androidx.compose.foundation:foundation:1.7.8 androidx.compose.material3:material3-android:1.3.1 androidx.compose.material3:material3:1.3.1 -androidx.compose.material:material-icons-core-android:1.7.5 -androidx.compose.material:material-icons-core:1.7.5 -androidx.compose.material:material-icons-extended-android:1.7.5 -androidx.compose.material:material-icons-extended:1.7.5 -androidx.compose.material:material-ripple-android:1.7.5 -androidx.compose.material:material-ripple:1.7.5 -androidx.compose.runtime:runtime-android:1.7.5 -androidx.compose.runtime:runtime-saveable-android:1.7.5 -androidx.compose.runtime:runtime-saveable:1.7.5 -androidx.compose.runtime:runtime:1.7.5 -androidx.compose.ui:ui-android:1.7.5 -androidx.compose.ui:ui-geometry-android:1.7.5 -androidx.compose.ui:ui-geometry:1.7.5 -androidx.compose.ui:ui-graphics-android:1.7.5 -androidx.compose.ui:ui-graphics:1.7.5 -androidx.compose.ui:ui-text-android:1.7.5 -androidx.compose.ui:ui-text:1.7.5 -androidx.compose.ui:ui-tooling-preview-android:1.7.5 -androidx.compose.ui:ui-tooling-preview:1.7.5 -androidx.compose.ui:ui-unit-android:1.7.5 -androidx.compose.ui:ui-unit:1.7.5 -androidx.compose.ui:ui-util-android:1.7.5 -androidx.compose.ui:ui-util:1.7.5 -androidx.compose.ui:ui:1.7.5 -androidx.compose:compose-bom:2024.11.00 +androidx.compose.material:material-icons-core-android:1.7.8 +androidx.compose.material:material-icons-core:1.7.8 +androidx.compose.material:material-icons-extended-android:1.7.8 +androidx.compose.material:material-icons-extended:1.7.8 +androidx.compose.material:material-ripple-android:1.7.8 +androidx.compose.material:material-ripple:1.7.8 +androidx.compose.runtime:runtime-android:1.7.8 +androidx.compose.runtime:runtime-saveable-android:1.7.8 +androidx.compose.runtime:runtime-saveable:1.7.8 +androidx.compose.runtime:runtime:1.7.8 +androidx.compose.ui:ui-android:1.7.8 +androidx.compose.ui:ui-geometry-android:1.7.8 +androidx.compose.ui:ui-geometry:1.7.8 +androidx.compose.ui:ui-graphics-android:1.7.8 +androidx.compose.ui:ui-graphics:1.7.8 +androidx.compose.ui:ui-text-android:1.7.8 +androidx.compose.ui:ui-text:1.7.8 +androidx.compose.ui:ui-tooling-preview-android:1.7.8 +androidx.compose.ui:ui-tooling-preview:1.7.8 +androidx.compose.ui:ui-unit-android:1.7.8 +androidx.compose.ui:ui-unit:1.7.8 +androidx.compose.ui:ui-util-android:1.7.8 +androidx.compose.ui:ui-util:1.7.8 +androidx.compose.ui:ui:1.7.8 +androidx.compose:compose-bom:2025.02.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 androidx.constraintlayout:constraintlayout-core:1.1.1 diff --git a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt index 1d1c922c93..ebb97f226c 100644 --- a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt @@ -20,41 +20,41 @@ androidx.cardview:cardview:1.0.0 androidx.collection:collection-jvm:1.4.4 androidx.collection:collection-ktx:1.4.4 androidx.collection:collection:1.4.4 -androidx.compose.animation:animation-android:1.7.5 -androidx.compose.animation:animation-core-android:1.7.5 -androidx.compose.animation:animation-core:1.7.5 -androidx.compose.animation:animation:1.7.5 -androidx.compose.foundation:foundation-android:1.7.5 -androidx.compose.foundation:foundation-layout-android:1.7.5 -androidx.compose.foundation:foundation-layout:1.7.5 -androidx.compose.foundation:foundation:1.7.5 +androidx.compose.animation:animation-android:1.7.8 +androidx.compose.animation:animation-core-android:1.7.8 +androidx.compose.animation:animation-core:1.7.8 +androidx.compose.animation:animation:1.7.8 +androidx.compose.foundation:foundation-android:1.7.8 +androidx.compose.foundation:foundation-layout-android:1.7.8 +androidx.compose.foundation:foundation-layout:1.7.8 +androidx.compose.foundation:foundation:1.7.8 androidx.compose.material3:material3-android:1.3.1 androidx.compose.material3:material3:1.3.1 -androidx.compose.material:material-icons-core-android:1.7.5 -androidx.compose.material:material-icons-core:1.7.5 -androidx.compose.material:material-icons-extended-android:1.7.5 -androidx.compose.material:material-icons-extended:1.7.5 -androidx.compose.material:material-ripple-android:1.7.5 -androidx.compose.material:material-ripple:1.7.5 -androidx.compose.runtime:runtime-android:1.7.5 -androidx.compose.runtime:runtime-saveable-android:1.7.5 -androidx.compose.runtime:runtime-saveable:1.7.5 -androidx.compose.runtime:runtime:1.7.5 -androidx.compose.ui:ui-android:1.7.5 -androidx.compose.ui:ui-geometry-android:1.7.5 -androidx.compose.ui:ui-geometry:1.7.5 -androidx.compose.ui:ui-graphics-android:1.7.5 -androidx.compose.ui:ui-graphics:1.7.5 -androidx.compose.ui:ui-text-android:1.7.5 -androidx.compose.ui:ui-text:1.7.5 -androidx.compose.ui:ui-tooling-preview-android:1.7.5 -androidx.compose.ui:ui-tooling-preview:1.7.5 -androidx.compose.ui:ui-unit-android:1.7.5 -androidx.compose.ui:ui-unit:1.7.5 -androidx.compose.ui:ui-util-android:1.7.5 -androidx.compose.ui:ui-util:1.7.5 -androidx.compose.ui:ui:1.7.5 -androidx.compose:compose-bom:2024.11.00 +androidx.compose.material:material-icons-core-android:1.7.8 +androidx.compose.material:material-icons-core:1.7.8 +androidx.compose.material:material-icons-extended-android:1.7.8 +androidx.compose.material:material-icons-extended:1.7.8 +androidx.compose.material:material-ripple-android:1.7.8 +androidx.compose.material:material-ripple:1.7.8 +androidx.compose.runtime:runtime-android:1.7.8 +androidx.compose.runtime:runtime-saveable-android:1.7.8 +androidx.compose.runtime:runtime-saveable:1.7.8 +androidx.compose.runtime:runtime:1.7.8 +androidx.compose.ui:ui-android:1.7.8 +androidx.compose.ui:ui-geometry-android:1.7.8 +androidx.compose.ui:ui-geometry:1.7.8 +androidx.compose.ui:ui-graphics-android:1.7.8 +androidx.compose.ui:ui-graphics:1.7.8 +androidx.compose.ui:ui-text-android:1.7.8 +androidx.compose.ui:ui-text:1.7.8 +androidx.compose.ui:ui-tooling-preview-android:1.7.8 +androidx.compose.ui:ui-tooling-preview:1.7.8 +androidx.compose.ui:ui-unit-android:1.7.8 +androidx.compose.ui:ui-unit:1.7.8 +androidx.compose.ui:ui-util-android:1.7.8 +androidx.compose.ui:ui-util:1.7.8 +androidx.compose.ui:ui:1.7.8 +androidx.compose:compose-bom:2025.02.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 androidx.constraintlayout:constraintlayout-core:1.1.1 diff --git a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt index 1d1c922c93..ebb97f226c 100644 --- a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt @@ -20,41 +20,41 @@ androidx.cardview:cardview:1.0.0 androidx.collection:collection-jvm:1.4.4 androidx.collection:collection-ktx:1.4.4 androidx.collection:collection:1.4.4 -androidx.compose.animation:animation-android:1.7.5 -androidx.compose.animation:animation-core-android:1.7.5 -androidx.compose.animation:animation-core:1.7.5 -androidx.compose.animation:animation:1.7.5 -androidx.compose.foundation:foundation-android:1.7.5 -androidx.compose.foundation:foundation-layout-android:1.7.5 -androidx.compose.foundation:foundation-layout:1.7.5 -androidx.compose.foundation:foundation:1.7.5 +androidx.compose.animation:animation-android:1.7.8 +androidx.compose.animation:animation-core-android:1.7.8 +androidx.compose.animation:animation-core:1.7.8 +androidx.compose.animation:animation:1.7.8 +androidx.compose.foundation:foundation-android:1.7.8 +androidx.compose.foundation:foundation-layout-android:1.7.8 +androidx.compose.foundation:foundation-layout:1.7.8 +androidx.compose.foundation:foundation:1.7.8 androidx.compose.material3:material3-android:1.3.1 androidx.compose.material3:material3:1.3.1 -androidx.compose.material:material-icons-core-android:1.7.5 -androidx.compose.material:material-icons-core:1.7.5 -androidx.compose.material:material-icons-extended-android:1.7.5 -androidx.compose.material:material-icons-extended:1.7.5 -androidx.compose.material:material-ripple-android:1.7.5 -androidx.compose.material:material-ripple:1.7.5 -androidx.compose.runtime:runtime-android:1.7.5 -androidx.compose.runtime:runtime-saveable-android:1.7.5 -androidx.compose.runtime:runtime-saveable:1.7.5 -androidx.compose.runtime:runtime:1.7.5 -androidx.compose.ui:ui-android:1.7.5 -androidx.compose.ui:ui-geometry-android:1.7.5 -androidx.compose.ui:ui-geometry:1.7.5 -androidx.compose.ui:ui-graphics-android:1.7.5 -androidx.compose.ui:ui-graphics:1.7.5 -androidx.compose.ui:ui-text-android:1.7.5 -androidx.compose.ui:ui-text:1.7.5 -androidx.compose.ui:ui-tooling-preview-android:1.7.5 -androidx.compose.ui:ui-tooling-preview:1.7.5 -androidx.compose.ui:ui-unit-android:1.7.5 -androidx.compose.ui:ui-unit:1.7.5 -androidx.compose.ui:ui-util-android:1.7.5 -androidx.compose.ui:ui-util:1.7.5 -androidx.compose.ui:ui:1.7.5 -androidx.compose:compose-bom:2024.11.00 +androidx.compose.material:material-icons-core-android:1.7.8 +androidx.compose.material:material-icons-core:1.7.8 +androidx.compose.material:material-icons-extended-android:1.7.8 +androidx.compose.material:material-icons-extended:1.7.8 +androidx.compose.material:material-ripple-android:1.7.8 +androidx.compose.material:material-ripple:1.7.8 +androidx.compose.runtime:runtime-android:1.7.8 +androidx.compose.runtime:runtime-saveable-android:1.7.8 +androidx.compose.runtime:runtime-saveable:1.7.8 +androidx.compose.runtime:runtime:1.7.8 +androidx.compose.ui:ui-android:1.7.8 +androidx.compose.ui:ui-geometry-android:1.7.8 +androidx.compose.ui:ui-geometry:1.7.8 +androidx.compose.ui:ui-graphics-android:1.7.8 +androidx.compose.ui:ui-graphics:1.7.8 +androidx.compose.ui:ui-text-android:1.7.8 +androidx.compose.ui:ui-text:1.7.8 +androidx.compose.ui:ui-tooling-preview-android:1.7.8 +androidx.compose.ui:ui-tooling-preview:1.7.8 +androidx.compose.ui:ui-unit-android:1.7.8 +androidx.compose.ui:ui-unit:1.7.8 +androidx.compose.ui:ui-util-android:1.7.8 +androidx.compose.ui:ui-util:1.7.8 +androidx.compose.ui:ui:1.7.8 +androidx.compose:compose-bom:2025.02.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 androidx.constraintlayout:constraintlayout-core:1.1.1 diff --git a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt index 1d1c922c93..ebb97f226c 100644 --- a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt @@ -20,41 +20,41 @@ androidx.cardview:cardview:1.0.0 androidx.collection:collection-jvm:1.4.4 androidx.collection:collection-ktx:1.4.4 androidx.collection:collection:1.4.4 -androidx.compose.animation:animation-android:1.7.5 -androidx.compose.animation:animation-core-android:1.7.5 -androidx.compose.animation:animation-core:1.7.5 -androidx.compose.animation:animation:1.7.5 -androidx.compose.foundation:foundation-android:1.7.5 -androidx.compose.foundation:foundation-layout-android:1.7.5 -androidx.compose.foundation:foundation-layout:1.7.5 -androidx.compose.foundation:foundation:1.7.5 +androidx.compose.animation:animation-android:1.7.8 +androidx.compose.animation:animation-core-android:1.7.8 +androidx.compose.animation:animation-core:1.7.8 +androidx.compose.animation:animation:1.7.8 +androidx.compose.foundation:foundation-android:1.7.8 +androidx.compose.foundation:foundation-layout-android:1.7.8 +androidx.compose.foundation:foundation-layout:1.7.8 +androidx.compose.foundation:foundation:1.7.8 androidx.compose.material3:material3-android:1.3.1 androidx.compose.material3:material3:1.3.1 -androidx.compose.material:material-icons-core-android:1.7.5 -androidx.compose.material:material-icons-core:1.7.5 -androidx.compose.material:material-icons-extended-android:1.7.5 -androidx.compose.material:material-icons-extended:1.7.5 -androidx.compose.material:material-ripple-android:1.7.5 -androidx.compose.material:material-ripple:1.7.5 -androidx.compose.runtime:runtime-android:1.7.5 -androidx.compose.runtime:runtime-saveable-android:1.7.5 -androidx.compose.runtime:runtime-saveable:1.7.5 -androidx.compose.runtime:runtime:1.7.5 -androidx.compose.ui:ui-android:1.7.5 -androidx.compose.ui:ui-geometry-android:1.7.5 -androidx.compose.ui:ui-geometry:1.7.5 -androidx.compose.ui:ui-graphics-android:1.7.5 -androidx.compose.ui:ui-graphics:1.7.5 -androidx.compose.ui:ui-text-android:1.7.5 -androidx.compose.ui:ui-text:1.7.5 -androidx.compose.ui:ui-tooling-preview-android:1.7.5 -androidx.compose.ui:ui-tooling-preview:1.7.5 -androidx.compose.ui:ui-unit-android:1.7.5 -androidx.compose.ui:ui-unit:1.7.5 -androidx.compose.ui:ui-util-android:1.7.5 -androidx.compose.ui:ui-util:1.7.5 -androidx.compose.ui:ui:1.7.5 -androidx.compose:compose-bom:2024.11.00 +androidx.compose.material:material-icons-core-android:1.7.8 +androidx.compose.material:material-icons-core:1.7.8 +androidx.compose.material:material-icons-extended-android:1.7.8 +androidx.compose.material:material-icons-extended:1.7.8 +androidx.compose.material:material-ripple-android:1.7.8 +androidx.compose.material:material-ripple:1.7.8 +androidx.compose.runtime:runtime-android:1.7.8 +androidx.compose.runtime:runtime-saveable-android:1.7.8 +androidx.compose.runtime:runtime-saveable:1.7.8 +androidx.compose.runtime:runtime:1.7.8 +androidx.compose.ui:ui-android:1.7.8 +androidx.compose.ui:ui-geometry-android:1.7.8 +androidx.compose.ui:ui-geometry:1.7.8 +androidx.compose.ui:ui-graphics-android:1.7.8 +androidx.compose.ui:ui-graphics:1.7.8 +androidx.compose.ui:ui-text-android:1.7.8 +androidx.compose.ui:ui-text:1.7.8 +androidx.compose.ui:ui-tooling-preview-android:1.7.8 +androidx.compose.ui:ui-tooling-preview:1.7.8 +androidx.compose.ui:ui-unit-android:1.7.8 +androidx.compose.ui:ui-unit:1.7.8 +androidx.compose.ui:ui-util-android:1.7.8 +androidx.compose.ui:ui-util:1.7.8 +androidx.compose.ui:ui:1.7.8 +androidx.compose:compose-bom:2025.02.00 androidx.concurrent:concurrent-futures-ktx:1.1.0 androidx.concurrent:concurrent-futures:1.1.0 androidx.constraintlayout:constraintlayout-core:1.1.1 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d59a91c461..861032c5e7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -23,7 +23,7 @@ androidxAppCompat = "1.7.0" androidxBiometric = "1.1.0" androidxCamera = "1.4.1" # https://developer.android.com/jetpack/compose/bom/bom-mapping -androidxComposeBom = "2024.11.00" +androidxComposeBom = "2025.02.00" androidxConstraintLayout = "2.2.1" androidxCoordinatorLayout = "1.3.0" androidxCore = "1.15.0" -- GitLab From 9e14044c29d62526e19537736a2ab4df149fbc6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 5 Mar 2025 15:46:48 +0100 Subject: [PATCH 038/262] Bump Gradle 8.12.1 -> 8.13 --- gradle/libs.versions.toml | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 43583 -> 43705 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 861032c5e7..0597aaa4b9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -56,7 +56,7 @@ detektPluginCompose = "0.4.18" fastAdapter = "5.7.0" forkhandlesBom = "2.20.0.0" glide = "4.16.0" -gradle = "8.12.1" +gradle = "8.13" http4kBom = "5.35.2.0" icu4j = "72.1" javaDiffUtils = "4.12" diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index a4b76b9530d66f5e68d973ea569d8e19de379189..9bbc975c742b298b441bfb90dbc124400a3751b9 100644 GIT binary patch delta 34744 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 aD@B>^PXn1TnR}HMmjEvV!{oW3QUL(XYtP33 delta 34727 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 Date: Thu, 6 Mar 2025 12:02:08 +0100 Subject: [PATCH 039/262] Bump Kotlin dependencies - Kotlin 2.1.0 -> 2.1.10 - KSP 2.1.0-1.0.29 -> 2.1.10-1.0.31 - KotlinX Coroutines 1.9.0 -> 1.10.1 - KotlinX DateTime 0.6.1 -> 0.6.2 - KotlinX Serialization 1.7.3 -> 1.8.0 --- .../fossReleaseRuntimeClasspath.txt | 36 +++++++++---------- .../fullReleaseRuntimeClasspath.txt | 36 +++++++++---------- .../dependencies/fossBetaRuntimeClasspath.txt | 36 +++++++++---------- .../fossDailyRuntimeClasspath.txt | 36 +++++++++---------- .../fossReleaseRuntimeClasspath.txt | 36 +++++++++---------- .../dependencies/fullBetaRuntimeClasspath.txt | 36 +++++++++---------- .../fullDailyRuntimeClasspath.txt | 36 +++++++++---------- .../fullReleaseRuntimeClasspath.txt | 36 +++++++++---------- .../ui/reminder/FundingReminderTest.kt | 5 +++ gradle/libs.versions.toml | 10 +++--- 10 files changed, 154 insertions(+), 149 deletions(-) diff --git a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt index dacf411e48..6bf98cb45a 100644 --- a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt +++ b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt @@ -213,28 +213,28 @@ org.jetbrains.compose.ui:ui-text:1.7.1 org.jetbrains.compose.ui:ui-unit:1.7.1 org.jetbrains.compose.ui:ui-util:1.7.1 org.jetbrains.compose.ui:ui:1.7.1 -org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.0 -org.jetbrains.kotlin:kotlin-bom:2.1.0 -org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib:2.1.0 +org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 +org.jetbrains.kotlin:kotlin-bom:2.1.10 +org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-common:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib:2.1.10 org.jetbrains.kotlinx:atomicfu-jvm:0.23.2 org.jetbrains.kotlinx:atomicfu:0.23.2 org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8 org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 -org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.1 -org.jetbrains.kotlinx:kotlinx-datetime:0.6.1 -org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 +org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 +org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2 +org.jetbrains.kotlinx:kotlinx-datetime:0.6.2 +org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 org.jetbrains:annotations:26.0.1 org.jsoup:jsoup:1.18.1 org.jspecify:jspecify:1.0.0 diff --git a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt index 15e59bf572..e9d4818823 100644 --- a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt +++ b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt @@ -227,28 +227,28 @@ org.jetbrains.compose.ui:ui-text:1.7.1 org.jetbrains.compose.ui:ui-unit:1.7.1 org.jetbrains.compose.ui:ui-util:1.7.1 org.jetbrains.compose.ui:ui:1.7.1 -org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.0 -org.jetbrains.kotlin:kotlin-bom:2.1.0 -org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib:2.1.0 +org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 +org.jetbrains.kotlin:kotlin-bom:2.1.10 +org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-common:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib:2.1.10 org.jetbrains.kotlinx:atomicfu-jvm:0.23.2 org.jetbrains.kotlinx:atomicfu:0.23.2 org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8 org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 -org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.1 -org.jetbrains.kotlinx:kotlinx-datetime:0.6.1 -org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 +org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 +org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2 +org.jetbrains.kotlinx:kotlinx-datetime:0.6.2 +org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 org.jetbrains:annotations:26.0.1 org.jsoup:jsoup:1.18.1 org.jspecify:jspecify:1.0.0 diff --git a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt index ee8887b959..34b1ebcf7c 100644 --- a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt @@ -220,28 +220,28 @@ org.jetbrains.compose.ui:ui-text:1.7.1 org.jetbrains.compose.ui:ui-unit:1.7.1 org.jetbrains.compose.ui:ui-util:1.7.1 org.jetbrains.compose.ui:ui:1.7.1 -org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.0 -org.jetbrains.kotlin:kotlin-bom:2.1.0 -org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib:2.1.0 +org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 +org.jetbrains.kotlin:kotlin-bom:2.1.10 +org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-common:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib:2.1.10 org.jetbrains.kotlinx:atomicfu-jvm:0.23.2 org.jetbrains.kotlinx:atomicfu:0.23.2 org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8 org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 -org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.1 -org.jetbrains.kotlinx:kotlinx-datetime:0.6.1 -org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 +org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 +org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2 +org.jetbrains.kotlinx:kotlinx-datetime:0.6.2 +org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 org.jetbrains:annotations:26.0.1 org.jsoup:jsoup:1.18.1 org.jspecify:jspecify:1.0.0 diff --git a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt index ee8887b959..34b1ebcf7c 100644 --- a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt @@ -220,28 +220,28 @@ org.jetbrains.compose.ui:ui-text:1.7.1 org.jetbrains.compose.ui:ui-unit:1.7.1 org.jetbrains.compose.ui:ui-util:1.7.1 org.jetbrains.compose.ui:ui:1.7.1 -org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.0 -org.jetbrains.kotlin:kotlin-bom:2.1.0 -org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib:2.1.0 +org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 +org.jetbrains.kotlin:kotlin-bom:2.1.10 +org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-common:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib:2.1.10 org.jetbrains.kotlinx:atomicfu-jvm:0.23.2 org.jetbrains.kotlinx:atomicfu:0.23.2 org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8 org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 -org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.1 -org.jetbrains.kotlinx:kotlinx-datetime:0.6.1 -org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 +org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 +org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2 +org.jetbrains.kotlinx:kotlinx-datetime:0.6.2 +org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 org.jetbrains:annotations:26.0.1 org.jsoup:jsoup:1.18.1 org.jspecify:jspecify:1.0.0 diff --git a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt index ee8887b959..34b1ebcf7c 100644 --- a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt @@ -220,28 +220,28 @@ org.jetbrains.compose.ui:ui-text:1.7.1 org.jetbrains.compose.ui:ui-unit:1.7.1 org.jetbrains.compose.ui:ui-util:1.7.1 org.jetbrains.compose.ui:ui:1.7.1 -org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.0 -org.jetbrains.kotlin:kotlin-bom:2.1.0 -org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib:2.1.0 +org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 +org.jetbrains.kotlin:kotlin-bom:2.1.10 +org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-common:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib:2.1.10 org.jetbrains.kotlinx:atomicfu-jvm:0.23.2 org.jetbrains.kotlinx:atomicfu:0.23.2 org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8 org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 -org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.1 -org.jetbrains.kotlinx:kotlinx-datetime:0.6.1 -org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 +org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 +org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2 +org.jetbrains.kotlinx:kotlinx-datetime:0.6.2 +org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 org.jetbrains:annotations:26.0.1 org.jsoup:jsoup:1.18.1 org.jspecify:jspecify:1.0.0 diff --git a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt index ebb97f226c..a256fa60b4 100644 --- a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt @@ -234,28 +234,28 @@ org.jetbrains.compose.ui:ui-text:1.7.1 org.jetbrains.compose.ui:ui-unit:1.7.1 org.jetbrains.compose.ui:ui-util:1.7.1 org.jetbrains.compose.ui:ui:1.7.1 -org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.0 -org.jetbrains.kotlin:kotlin-bom:2.1.0 -org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib:2.1.0 +org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 +org.jetbrains.kotlin:kotlin-bom:2.1.10 +org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-common:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib:2.1.10 org.jetbrains.kotlinx:atomicfu-jvm:0.23.2 org.jetbrains.kotlinx:atomicfu:0.23.2 org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8 org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 -org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.1 -org.jetbrains.kotlinx:kotlinx-datetime:0.6.1 -org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 +org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 +org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2 +org.jetbrains.kotlinx:kotlinx-datetime:0.6.2 +org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 org.jetbrains:annotations:26.0.1 org.jsoup:jsoup:1.18.1 org.jspecify:jspecify:1.0.0 diff --git a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt index ebb97f226c..a256fa60b4 100644 --- a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt @@ -234,28 +234,28 @@ org.jetbrains.compose.ui:ui-text:1.7.1 org.jetbrains.compose.ui:ui-unit:1.7.1 org.jetbrains.compose.ui:ui-util:1.7.1 org.jetbrains.compose.ui:ui:1.7.1 -org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.0 -org.jetbrains.kotlin:kotlin-bom:2.1.0 -org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib:2.1.0 +org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 +org.jetbrains.kotlin:kotlin-bom:2.1.10 +org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-common:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib:2.1.10 org.jetbrains.kotlinx:atomicfu-jvm:0.23.2 org.jetbrains.kotlinx:atomicfu:0.23.2 org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8 org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 -org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.1 -org.jetbrains.kotlinx:kotlinx-datetime:0.6.1 -org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 +org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 +org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2 +org.jetbrains.kotlinx:kotlinx-datetime:0.6.2 +org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 org.jetbrains:annotations:26.0.1 org.jsoup:jsoup:1.18.1 org.jspecify:jspecify:1.0.0 diff --git a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt index ebb97f226c..a256fa60b4 100644 --- a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt @@ -234,28 +234,28 @@ org.jetbrains.compose.ui:ui-text:1.7.1 org.jetbrains.compose.ui:ui-unit:1.7.1 org.jetbrains.compose.ui:ui-util:1.7.1 org.jetbrains.compose.ui:ui:1.7.1 -org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.0 -org.jetbrains.kotlin:kotlin-bom:2.1.0 -org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0 -org.jetbrains.kotlin:kotlin-stdlib:2.1.0 +org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 +org.jetbrains.kotlin:kotlin-bom:2.1.10 +org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-common:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.10 +org.jetbrains.kotlin:kotlin-stdlib:2.1.10 org.jetbrains.kotlinx:atomicfu-jvm:0.23.2 org.jetbrains.kotlinx:atomicfu:0.23.2 org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8 org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 -org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.1 -org.jetbrains.kotlinx:kotlinx-datetime:0.6.1 -org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3 -org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3 +org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 +org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2 +org.jetbrains.kotlinx:kotlinx-datetime:0.6.2 +org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 +org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 org.jetbrains:annotations:26.0.1 org.jsoup:jsoup:1.18.1 org.jspecify:jspecify:1.0.0 diff --git a/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/reminder/FundingReminderTest.kt b/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/reminder/FundingReminderTest.kt index dcc40886de..eabf871e11 100644 --- a/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/reminder/FundingReminderTest.kt +++ b/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/reminder/FundingReminderTest.kt @@ -6,6 +6,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.testing.TestLifecycleOwner import app.k9mail.core.testing.TestClock +import app.k9mail.core.ui.compose.testing.MainDispatcherRule import app.k9mail.feature.funding.api.FundingSettings import app.k9mail.feature.funding.googleplay.ui.reminder.FundingReminderContract.ActivityLifecycleObserver import app.k9mail.feature.funding.googleplay.ui.reminder.FundingReminderContract.Dialog @@ -16,11 +17,15 @@ import assertk.assertions.isFalse import assertk.assertions.isTrue import kotlin.test.Test import kotlinx.datetime.Instant +import org.junit.Rule import org.mockito.kotlin.mock import org.mockito.kotlin.whenever class FundingReminderTest { + @get:Rule + val mainDispatcherRule = MainDispatcherRule() + @Test fun `should set reference timestamp when not set`() { val activity = createTestActivity() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0597aaa4b9..481ba09b09 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -69,14 +69,14 @@ junit = "4.13.2" jutf7 = "1.0.0" jzlib = "1.0.7" koinBom = "3.5.6" -kotlinBom = "2.1.0" +kotlinBom = "2.1.10" # Needs to match the version used by Gradle, just check with `./gradlew --version` kotlinGradleBom = "2.0.21" -kotlinKsp = "2.1.0-1.0.29" -kotlinxCoroutines = "1.9.0" +kotlinKsp = "2.1.10-1.0.31" +kotlinxCoroutines = "1.10.1" kotlinxCollectionsImmutable = "0.3.8" -kotlinxDateTime = "0.6.1" -kotlinxSerialization = "1.7.3" +kotlinxDateTime = "0.6.2" +kotlinxSerialization = "1.8.0" ktlint = "1.2.1" kxml2 = "1.0" landscapist = "2.4.4" -- GitLab From 5e72031266b9ff4cc4f53fa1e5a80ac9d25e5848 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 6 Mar 2025 14:14:25 +0100 Subject: [PATCH 040/262] Bump other dependencies - Apache HttpClient5 5.4.1 -> 5.4.2 - Clitk 5.0.2 -> 5.0.3 - Apache CommonsIo 2.16.1 -> 2.18.0 - Detekt Plugin Compose 0.4.18 -> 0.4.22 - Jetbrains Annotations 26.0.1 -> 26.0.2 - Jsoup 1.18.1 -> 1.19.1 - Landscapist 2.4.4 -> 2.4.7 - Mime4j 0.8.9 -> 0.8.12 - Moshi 1.15.1 -> 1.15.2 - Mozilla Android Components 130.0 -> 136.0 - Okio 3.9.1 -> 3.10.2 --- .../fossReleaseRuntimeClasspath.txt | 78 +++++++++---------- .../fullReleaseRuntimeClasspath.txt | 78 +++++++++---------- .../dependencies/fossBetaRuntimeClasspath.txt | 78 +++++++++---------- .../fossDailyRuntimeClasspath.txt | 78 +++++++++---------- .../fossReleaseRuntimeClasspath.txt | 78 +++++++++---------- .../dependencies/fullBetaRuntimeClasspath.txt | 78 +++++++++---------- .../fullDailyRuntimeClasspath.txt | 78 +++++++++---------- .../fullReleaseRuntimeClasspath.txt | 78 +++++++++---------- gradle/libs.versions.toml | 22 +++--- 9 files changed, 323 insertions(+), 323 deletions(-) diff --git a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt index 6bf98cb45a..2dd82cf90d 100644 --- a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt +++ b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt @@ -141,10 +141,10 @@ com.github.bumptech.glide:annotations:4.16.0 com.github.bumptech.glide:disklrucache:4.16.0 com.github.bumptech.glide:gifdecoder:4.16.0 com.github.bumptech.glide:glide:4.16.0 -com.github.skydoves:landscapist-android:2.4.4 -com.github.skydoves:landscapist-coil3-android:2.4.4 -com.github.skydoves:landscapist-coil3:2.4.4 -com.github.skydoves:landscapist:2.4.4 +com.github.skydoves:landscapist-android:2.4.7 +com.github.skydoves:landscapist-coil3-android:2.4.7 +com.github.skydoves:landscapist-coil3:2.4.7 +com.github.skydoves:landscapist:2.4.7 com.google.android.flexbox:flexbox:3.0.0 com.google.android.material:material:1.12.0 com.google.errorprone:error_prone_annotations:2.15.0 @@ -156,27 +156,27 @@ com.mikepenz:fastadapter-extensions-expandable:5.7.0 com.mikepenz:fastadapter-extensions-swipe:5.7.0 com.mikepenz:fastadapter-extensions-utils:5.7.0 com.mikepenz:fastadapter:5.7.0 -com.squareup.moshi:moshi:1.15.1 +com.squareup.moshi:moshi:1.15.2 com.squareup.okhttp3:okhttp:4.12.0 -com.squareup.okio:okio-jvm:3.9.1 -com.squareup.okio:okio:3.9.1 +com.squareup.okio:okio-jvm:3.10.2 +com.squareup.okio:okio:3.10.2 com.takisoft.colorpicker:colorpicker:1.0.0 com.takisoft.datetimepicker:datetimepicker:1.0.2 com.takisoft.preferencex:preferencex-colorpicker:1.1.0 com.takisoft.preferencex:preferencex-datetimepicker:1.1.0 com.takisoft.preferencex:preferencex:1.1.0 -commons-io:commons-io:2.16.1 +commons-io:commons-io:2.18.0 de.cketti.library.changelog:ckchangelog-core:2.0.0-beta02 de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0 de.hdodenhof:circleimageview:3.1.0 -io.coil-kt.coil3:coil-android:3.0.4 -io.coil-kt.coil3:coil-core-android:3.0.4 -io.coil-kt.coil3:coil-core:3.0.4 -io.coil-kt.coil3:coil-network-core-android:3.0.4 -io.coil-kt.coil3:coil-network-core:3.0.4 -io.coil-kt.coil3:coil-network-okhttp-jvm:3.0.4 -io.coil-kt.coil3:coil-network-okhttp:3.0.4 -io.coil-kt.coil3:coil:3.0.4 +io.coil-kt.coil3:coil-android:3.1.0 +io.coil-kt.coil3:coil-core-android:3.1.0 +io.coil-kt.coil3:coil-core:3.1.0 +io.coil-kt.coil3:coil-network-core-android:3.1.0 +io.coil-kt.coil3:coil-network-core:3.1.0 +io.coil-kt.coil3:coil-network-okhttp-jvm:3.1.0 +io.coil-kt.coil3:coil-network-okhttp:3.1.0 +io.coil-kt.coil3:coil:3.1.0 io.insert-koin:koin-android:3.5.6 io.insert-koin:koin-androidx-compose:3.5.6 io.insert-koin:koin-bom:3.5.6 @@ -188,31 +188,31 @@ net.jcip:jcip-annotations:1.0 net.openid:appauth:0.11.1 org.apache.commons:commons-lang3:3.7 org.apache.commons:commons-text:1.3 -org.apache.httpcomponents.client5:httpclient5:5.4.1 -org.apache.httpcomponents.core5:httpcore5-h2:5.3.1 -org.apache.httpcomponents.core5:httpcore5:5.3.1 -org.apache.james:apache-mime4j-core:0.8.9 -org.apache.james:apache-mime4j-dom:0.8.9 +org.apache.httpcomponents.client5:httpclient5:5.4.2 +org.apache.httpcomponents.core5:httpcore5-h2:5.3.3 +org.apache.httpcomponents.core5:httpcore5:5.3.3 +org.apache.james:apache-mime4j-core:0.8.12 +org.apache.james:apache-mime4j-dom:0.8.12 org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4 -org.jetbrains.compose.animation:animation-core:1.7.1 -org.jetbrains.compose.animation:animation:1.7.1 -org.jetbrains.compose.annotation-internal:annotation:1.7.1 -org.jetbrains.compose.collection-internal:collection:1.7.1 -org.jetbrains.compose.components:components-resources-android:1.7.1 -org.jetbrains.compose.components:components-resources:1.7.1 -org.jetbrains.compose.foundation:foundation-layout:1.7.1 -org.jetbrains.compose.foundation:foundation:1.7.1 -org.jetbrains.compose.runtime:runtime-saveable:1.7.1 -org.jetbrains.compose.runtime:runtime:1.7.1 -org.jetbrains.compose.ui:ui-geometry:1.7.1 -org.jetbrains.compose.ui:ui-graphics:1.7.1 -org.jetbrains.compose.ui:ui-text:1.7.1 -org.jetbrains.compose.ui:ui-unit:1.7.1 -org.jetbrains.compose.ui:ui-util:1.7.1 -org.jetbrains.compose.ui:ui:1.7.1 +org.jetbrains.compose.animation:animation-core:1.7.3 +org.jetbrains.compose.animation:animation:1.7.3 +org.jetbrains.compose.annotation-internal:annotation:1.7.3 +org.jetbrains.compose.collection-internal:collection:1.7.3 +org.jetbrains.compose.components:components-resources-android:1.7.3 +org.jetbrains.compose.components:components-resources:1.7.3 +org.jetbrains.compose.foundation:foundation-layout:1.7.3 +org.jetbrains.compose.foundation:foundation:1.7.3 +org.jetbrains.compose.runtime:runtime-saveable:1.7.3 +org.jetbrains.compose.runtime:runtime:1.7.3 +org.jetbrains.compose.ui:ui-geometry:1.7.3 +org.jetbrains.compose.ui:ui-graphics:1.7.3 +org.jetbrains.compose.ui:ui-text:1.7.3 +org.jetbrains.compose.ui:ui-unit:1.7.3 +org.jetbrains.compose.ui:ui-util:1.7.3 +org.jetbrains.compose.ui:ui:1.7.3 org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 org.jetbrains.kotlin:kotlin-bom:2.1.10 org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 @@ -235,8 +235,8 @@ org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 -org.jetbrains:annotations:26.0.1 -org.jsoup:jsoup:1.18.1 +org.jetbrains:annotations:26.0.2 +org.jsoup:jsoup:1.19.1 org.jspecify:jspecify:1.0.0 org.minidns:minidns-client:1.0.5 org.minidns:minidns-core:1.0.5 diff --git a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt index e9d4818823..37c333ceb4 100644 --- a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt +++ b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt @@ -143,10 +143,10 @@ com.github.bumptech.glide:annotations:4.16.0 com.github.bumptech.glide:disklrucache:4.16.0 com.github.bumptech.glide:gifdecoder:4.16.0 com.github.bumptech.glide:glide:4.16.0 -com.github.skydoves:landscapist-android:2.4.4 -com.github.skydoves:landscapist-coil3-android:2.4.4 -com.github.skydoves:landscapist-coil3:2.4.4 -com.github.skydoves:landscapist:2.4.4 +com.github.skydoves:landscapist-android:2.4.7 +com.github.skydoves:landscapist-coil3-android:2.4.7 +com.github.skydoves:landscapist-coil3:2.4.7 +com.github.skydoves:landscapist:2.4.7 com.google.android.datatransport:transport-api:3.0.0 com.google.android.datatransport:transport-backend-cct:3.1.8 com.google.android.datatransport:transport-runtime:3.1.8 @@ -169,27 +169,27 @@ com.mikepenz:fastadapter-extensions-expandable:5.7.0 com.mikepenz:fastadapter-extensions-swipe:5.7.0 com.mikepenz:fastadapter-extensions-utils:5.7.0 com.mikepenz:fastadapter:5.7.0 -com.squareup.moshi:moshi:1.15.1 +com.squareup.moshi:moshi:1.15.2 com.squareup.okhttp3:okhttp:4.12.0 -com.squareup.okio:okio-jvm:3.9.1 -com.squareup.okio:okio:3.9.1 +com.squareup.okio:okio-jvm:3.10.2 +com.squareup.okio:okio:3.10.2 com.takisoft.colorpicker:colorpicker:1.0.0 com.takisoft.datetimepicker:datetimepicker:1.0.2 com.takisoft.preferencex:preferencex-colorpicker:1.1.0 com.takisoft.preferencex:preferencex-datetimepicker:1.1.0 com.takisoft.preferencex:preferencex:1.1.0 -commons-io:commons-io:2.16.1 +commons-io:commons-io:2.18.0 de.cketti.library.changelog:ckchangelog-core:2.0.0-beta02 de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0 de.hdodenhof:circleimageview:3.1.0 -io.coil-kt.coil3:coil-android:3.0.4 -io.coil-kt.coil3:coil-core-android:3.0.4 -io.coil-kt.coil3:coil-core:3.0.4 -io.coil-kt.coil3:coil-network-core-android:3.0.4 -io.coil-kt.coil3:coil-network-core:3.0.4 -io.coil-kt.coil3:coil-network-okhttp-jvm:3.0.4 -io.coil-kt.coil3:coil-network-okhttp:3.0.4 -io.coil-kt.coil3:coil:3.0.4 +io.coil-kt.coil3:coil-android:3.1.0 +io.coil-kt.coil3:coil-core-android:3.1.0 +io.coil-kt.coil3:coil-core:3.1.0 +io.coil-kt.coil3:coil-network-core-android:3.1.0 +io.coil-kt.coil3:coil-network-core:3.1.0 +io.coil-kt.coil3:coil-network-okhttp-jvm:3.1.0 +io.coil-kt.coil3:coil-network-okhttp:3.1.0 +io.coil-kt.coil3:coil:3.1.0 io.insert-koin:koin-android:3.5.6 io.insert-koin:koin-androidx-compose:3.5.6 io.insert-koin:koin-bom:3.5.6 @@ -202,31 +202,31 @@ net.jcip:jcip-annotations:1.0 net.openid:appauth:0.11.1 org.apache.commons:commons-lang3:3.7 org.apache.commons:commons-text:1.3 -org.apache.httpcomponents.client5:httpclient5:5.4.1 -org.apache.httpcomponents.core5:httpcore5-h2:5.3.1 -org.apache.httpcomponents.core5:httpcore5:5.3.1 -org.apache.james:apache-mime4j-core:0.8.9 -org.apache.james:apache-mime4j-dom:0.8.9 +org.apache.httpcomponents.client5:httpclient5:5.4.2 +org.apache.httpcomponents.core5:httpcore5-h2:5.3.3 +org.apache.httpcomponents.core5:httpcore5:5.3.3 +org.apache.james:apache-mime4j-core:0.8.12 +org.apache.james:apache-mime4j-dom:0.8.12 org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4 -org.jetbrains.compose.animation:animation-core:1.7.1 -org.jetbrains.compose.animation:animation:1.7.1 -org.jetbrains.compose.annotation-internal:annotation:1.7.1 -org.jetbrains.compose.collection-internal:collection:1.7.1 -org.jetbrains.compose.components:components-resources-android:1.7.1 -org.jetbrains.compose.components:components-resources:1.7.1 -org.jetbrains.compose.foundation:foundation-layout:1.7.1 -org.jetbrains.compose.foundation:foundation:1.7.1 -org.jetbrains.compose.runtime:runtime-saveable:1.7.1 -org.jetbrains.compose.runtime:runtime:1.7.1 -org.jetbrains.compose.ui:ui-geometry:1.7.1 -org.jetbrains.compose.ui:ui-graphics:1.7.1 -org.jetbrains.compose.ui:ui-text:1.7.1 -org.jetbrains.compose.ui:ui-unit:1.7.1 -org.jetbrains.compose.ui:ui-util:1.7.1 -org.jetbrains.compose.ui:ui:1.7.1 +org.jetbrains.compose.animation:animation-core:1.7.3 +org.jetbrains.compose.animation:animation:1.7.3 +org.jetbrains.compose.annotation-internal:annotation:1.7.3 +org.jetbrains.compose.collection-internal:collection:1.7.3 +org.jetbrains.compose.components:components-resources-android:1.7.3 +org.jetbrains.compose.components:components-resources:1.7.3 +org.jetbrains.compose.foundation:foundation-layout:1.7.3 +org.jetbrains.compose.foundation:foundation:1.7.3 +org.jetbrains.compose.runtime:runtime-saveable:1.7.3 +org.jetbrains.compose.runtime:runtime:1.7.3 +org.jetbrains.compose.ui:ui-geometry:1.7.3 +org.jetbrains.compose.ui:ui-graphics:1.7.3 +org.jetbrains.compose.ui:ui-text:1.7.3 +org.jetbrains.compose.ui:ui-unit:1.7.3 +org.jetbrains.compose.ui:ui-util:1.7.3 +org.jetbrains.compose.ui:ui:1.7.3 org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 org.jetbrains.kotlin:kotlin-bom:2.1.10 org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 @@ -249,8 +249,8 @@ org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 -org.jetbrains:annotations:26.0.1 -org.jsoup:jsoup:1.18.1 +org.jetbrains:annotations:26.0.2 +org.jsoup:jsoup:1.19.1 org.jspecify:jspecify:1.0.0 org.minidns:minidns-client:1.0.5 org.minidns:minidns-core:1.0.5 diff --git a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt index 34b1ebcf7c..a50973364b 100644 --- a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt @@ -146,10 +146,10 @@ com.github.bumptech.glide:annotations:4.16.0 com.github.bumptech.glide:disklrucache:4.16.0 com.github.bumptech.glide:gifdecoder:4.16.0 com.github.bumptech.glide:glide:4.16.0 -com.github.skydoves:landscapist-android:2.4.4 -com.github.skydoves:landscapist-coil3-android:2.4.4 -com.github.skydoves:landscapist-coil3:2.4.4 -com.github.skydoves:landscapist:2.4.4 +com.github.skydoves:landscapist-android:2.4.7 +com.github.skydoves:landscapist-coil3-android:2.4.7 +com.github.skydoves:landscapist-coil3:2.4.7 +com.github.skydoves:landscapist:2.4.7 com.google.android.flexbox:flexbox:3.0.0 com.google.android.material:material:1.12.0 com.google.auto.value:auto-value-annotations:1.6.3 @@ -163,27 +163,27 @@ com.mikepenz:fastadapter-extensions-expandable:5.7.0 com.mikepenz:fastadapter-extensions-swipe:5.7.0 com.mikepenz:fastadapter-extensions-utils:5.7.0 com.mikepenz:fastadapter:5.7.0 -com.squareup.moshi:moshi:1.15.1 +com.squareup.moshi:moshi:1.15.2 com.squareup.okhttp3:okhttp:4.12.0 -com.squareup.okio:okio-jvm:3.9.1 -com.squareup.okio:okio:3.9.1 +com.squareup.okio:okio-jvm:3.10.2 +com.squareup.okio:okio:3.10.2 com.takisoft.colorpicker:colorpicker:1.0.0 com.takisoft.datetimepicker:datetimepicker:1.0.2 com.takisoft.preferencex:preferencex-colorpicker:1.1.0 com.takisoft.preferencex:preferencex-datetimepicker:1.1.0 com.takisoft.preferencex:preferencex:1.1.0 -commons-io:commons-io:2.16.1 +commons-io:commons-io:2.18.0 de.cketti.library.changelog:ckchangelog-core:2.0.0-beta02 de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0 de.hdodenhof:circleimageview:3.1.0 -io.coil-kt.coil3:coil-android:3.0.4 -io.coil-kt.coil3:coil-core-android:3.0.4 -io.coil-kt.coil3:coil-core:3.0.4 -io.coil-kt.coil3:coil-network-core-android:3.0.4 -io.coil-kt.coil3:coil-network-core:3.0.4 -io.coil-kt.coil3:coil-network-okhttp-jvm:3.0.4 -io.coil-kt.coil3:coil-network-okhttp:3.0.4 -io.coil-kt.coil3:coil:3.0.4 +io.coil-kt.coil3:coil-android:3.1.0 +io.coil-kt.coil3:coil-core-android:3.1.0 +io.coil-kt.coil3:coil-core:3.1.0 +io.coil-kt.coil3:coil-network-core-android:3.1.0 +io.coil-kt.coil3:coil-network-core:3.1.0 +io.coil-kt.coil3:coil-network-okhttp-jvm:3.1.0 +io.coil-kt.coil3:coil-network-okhttp:3.1.0 +io.coil-kt.coil3:coil:3.1.0 io.insert-koin:koin-android:3.5.6 io.insert-koin:koin-androidx-compose:3.5.6 io.insert-koin:koin-bom:3.5.6 @@ -195,31 +195,31 @@ net.jcip:jcip-annotations:1.0 net.openid:appauth:0.11.1 org.apache.commons:commons-lang3:3.7 org.apache.commons:commons-text:1.3 -org.apache.httpcomponents.client5:httpclient5:5.4.1 -org.apache.httpcomponents.core5:httpcore5-h2:5.3.1 -org.apache.httpcomponents.core5:httpcore5:5.3.1 -org.apache.james:apache-mime4j-core:0.8.9 -org.apache.james:apache-mime4j-dom:0.8.9 +org.apache.httpcomponents.client5:httpclient5:5.4.2 +org.apache.httpcomponents.core5:httpcore5-h2:5.3.3 +org.apache.httpcomponents.core5:httpcore5:5.3.3 +org.apache.james:apache-mime4j-core:0.8.12 +org.apache.james:apache-mime4j-dom:0.8.12 org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4 -org.jetbrains.compose.animation:animation-core:1.7.1 -org.jetbrains.compose.animation:animation:1.7.1 -org.jetbrains.compose.annotation-internal:annotation:1.7.1 -org.jetbrains.compose.collection-internal:collection:1.7.1 -org.jetbrains.compose.components:components-resources-android:1.7.1 -org.jetbrains.compose.components:components-resources:1.7.1 -org.jetbrains.compose.foundation:foundation-layout:1.7.1 -org.jetbrains.compose.foundation:foundation:1.7.1 -org.jetbrains.compose.runtime:runtime-saveable:1.7.1 -org.jetbrains.compose.runtime:runtime:1.7.1 -org.jetbrains.compose.ui:ui-geometry:1.7.1 -org.jetbrains.compose.ui:ui-graphics:1.7.1 -org.jetbrains.compose.ui:ui-text:1.7.1 -org.jetbrains.compose.ui:ui-unit:1.7.1 -org.jetbrains.compose.ui:ui-util:1.7.1 -org.jetbrains.compose.ui:ui:1.7.1 +org.jetbrains.compose.animation:animation-core:1.7.3 +org.jetbrains.compose.animation:animation:1.7.3 +org.jetbrains.compose.annotation-internal:annotation:1.7.3 +org.jetbrains.compose.collection-internal:collection:1.7.3 +org.jetbrains.compose.components:components-resources-android:1.7.3 +org.jetbrains.compose.components:components-resources:1.7.3 +org.jetbrains.compose.foundation:foundation-layout:1.7.3 +org.jetbrains.compose.foundation:foundation:1.7.3 +org.jetbrains.compose.runtime:runtime-saveable:1.7.3 +org.jetbrains.compose.runtime:runtime:1.7.3 +org.jetbrains.compose.ui:ui-geometry:1.7.3 +org.jetbrains.compose.ui:ui-graphics:1.7.3 +org.jetbrains.compose.ui:ui-text:1.7.3 +org.jetbrains.compose.ui:ui-unit:1.7.3 +org.jetbrains.compose.ui:ui-util:1.7.3 +org.jetbrains.compose.ui:ui:1.7.3 org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 org.jetbrains.kotlin:kotlin-bom:2.1.10 org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 @@ -242,8 +242,8 @@ org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 -org.jetbrains:annotations:26.0.1 -org.jsoup:jsoup:1.18.1 +org.jetbrains:annotations:26.0.2 +org.jsoup:jsoup:1.19.1 org.jspecify:jspecify:1.0.0 org.minidns:minidns-client:1.0.5 org.minidns:minidns-core:1.0.5 diff --git a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt index 34b1ebcf7c..a50973364b 100644 --- a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt @@ -146,10 +146,10 @@ com.github.bumptech.glide:annotations:4.16.0 com.github.bumptech.glide:disklrucache:4.16.0 com.github.bumptech.glide:gifdecoder:4.16.0 com.github.bumptech.glide:glide:4.16.0 -com.github.skydoves:landscapist-android:2.4.4 -com.github.skydoves:landscapist-coil3-android:2.4.4 -com.github.skydoves:landscapist-coil3:2.4.4 -com.github.skydoves:landscapist:2.4.4 +com.github.skydoves:landscapist-android:2.4.7 +com.github.skydoves:landscapist-coil3-android:2.4.7 +com.github.skydoves:landscapist-coil3:2.4.7 +com.github.skydoves:landscapist:2.4.7 com.google.android.flexbox:flexbox:3.0.0 com.google.android.material:material:1.12.0 com.google.auto.value:auto-value-annotations:1.6.3 @@ -163,27 +163,27 @@ com.mikepenz:fastadapter-extensions-expandable:5.7.0 com.mikepenz:fastadapter-extensions-swipe:5.7.0 com.mikepenz:fastadapter-extensions-utils:5.7.0 com.mikepenz:fastadapter:5.7.0 -com.squareup.moshi:moshi:1.15.1 +com.squareup.moshi:moshi:1.15.2 com.squareup.okhttp3:okhttp:4.12.0 -com.squareup.okio:okio-jvm:3.9.1 -com.squareup.okio:okio:3.9.1 +com.squareup.okio:okio-jvm:3.10.2 +com.squareup.okio:okio:3.10.2 com.takisoft.colorpicker:colorpicker:1.0.0 com.takisoft.datetimepicker:datetimepicker:1.0.2 com.takisoft.preferencex:preferencex-colorpicker:1.1.0 com.takisoft.preferencex:preferencex-datetimepicker:1.1.0 com.takisoft.preferencex:preferencex:1.1.0 -commons-io:commons-io:2.16.1 +commons-io:commons-io:2.18.0 de.cketti.library.changelog:ckchangelog-core:2.0.0-beta02 de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0 de.hdodenhof:circleimageview:3.1.0 -io.coil-kt.coil3:coil-android:3.0.4 -io.coil-kt.coil3:coil-core-android:3.0.4 -io.coil-kt.coil3:coil-core:3.0.4 -io.coil-kt.coil3:coil-network-core-android:3.0.4 -io.coil-kt.coil3:coil-network-core:3.0.4 -io.coil-kt.coil3:coil-network-okhttp-jvm:3.0.4 -io.coil-kt.coil3:coil-network-okhttp:3.0.4 -io.coil-kt.coil3:coil:3.0.4 +io.coil-kt.coil3:coil-android:3.1.0 +io.coil-kt.coil3:coil-core-android:3.1.0 +io.coil-kt.coil3:coil-core:3.1.0 +io.coil-kt.coil3:coil-network-core-android:3.1.0 +io.coil-kt.coil3:coil-network-core:3.1.0 +io.coil-kt.coil3:coil-network-okhttp-jvm:3.1.0 +io.coil-kt.coil3:coil-network-okhttp:3.1.0 +io.coil-kt.coil3:coil:3.1.0 io.insert-koin:koin-android:3.5.6 io.insert-koin:koin-androidx-compose:3.5.6 io.insert-koin:koin-bom:3.5.6 @@ -195,31 +195,31 @@ net.jcip:jcip-annotations:1.0 net.openid:appauth:0.11.1 org.apache.commons:commons-lang3:3.7 org.apache.commons:commons-text:1.3 -org.apache.httpcomponents.client5:httpclient5:5.4.1 -org.apache.httpcomponents.core5:httpcore5-h2:5.3.1 -org.apache.httpcomponents.core5:httpcore5:5.3.1 -org.apache.james:apache-mime4j-core:0.8.9 -org.apache.james:apache-mime4j-dom:0.8.9 +org.apache.httpcomponents.client5:httpclient5:5.4.2 +org.apache.httpcomponents.core5:httpcore5-h2:5.3.3 +org.apache.httpcomponents.core5:httpcore5:5.3.3 +org.apache.james:apache-mime4j-core:0.8.12 +org.apache.james:apache-mime4j-dom:0.8.12 org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4 -org.jetbrains.compose.animation:animation-core:1.7.1 -org.jetbrains.compose.animation:animation:1.7.1 -org.jetbrains.compose.annotation-internal:annotation:1.7.1 -org.jetbrains.compose.collection-internal:collection:1.7.1 -org.jetbrains.compose.components:components-resources-android:1.7.1 -org.jetbrains.compose.components:components-resources:1.7.1 -org.jetbrains.compose.foundation:foundation-layout:1.7.1 -org.jetbrains.compose.foundation:foundation:1.7.1 -org.jetbrains.compose.runtime:runtime-saveable:1.7.1 -org.jetbrains.compose.runtime:runtime:1.7.1 -org.jetbrains.compose.ui:ui-geometry:1.7.1 -org.jetbrains.compose.ui:ui-graphics:1.7.1 -org.jetbrains.compose.ui:ui-text:1.7.1 -org.jetbrains.compose.ui:ui-unit:1.7.1 -org.jetbrains.compose.ui:ui-util:1.7.1 -org.jetbrains.compose.ui:ui:1.7.1 +org.jetbrains.compose.animation:animation-core:1.7.3 +org.jetbrains.compose.animation:animation:1.7.3 +org.jetbrains.compose.annotation-internal:annotation:1.7.3 +org.jetbrains.compose.collection-internal:collection:1.7.3 +org.jetbrains.compose.components:components-resources-android:1.7.3 +org.jetbrains.compose.components:components-resources:1.7.3 +org.jetbrains.compose.foundation:foundation-layout:1.7.3 +org.jetbrains.compose.foundation:foundation:1.7.3 +org.jetbrains.compose.runtime:runtime-saveable:1.7.3 +org.jetbrains.compose.runtime:runtime:1.7.3 +org.jetbrains.compose.ui:ui-geometry:1.7.3 +org.jetbrains.compose.ui:ui-graphics:1.7.3 +org.jetbrains.compose.ui:ui-text:1.7.3 +org.jetbrains.compose.ui:ui-unit:1.7.3 +org.jetbrains.compose.ui:ui-util:1.7.3 +org.jetbrains.compose.ui:ui:1.7.3 org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 org.jetbrains.kotlin:kotlin-bom:2.1.10 org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 @@ -242,8 +242,8 @@ org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 -org.jetbrains:annotations:26.0.1 -org.jsoup:jsoup:1.18.1 +org.jetbrains:annotations:26.0.2 +org.jsoup:jsoup:1.19.1 org.jspecify:jspecify:1.0.0 org.minidns:minidns-client:1.0.5 org.minidns:minidns-core:1.0.5 diff --git a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt index 34b1ebcf7c..a50973364b 100644 --- a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt @@ -146,10 +146,10 @@ com.github.bumptech.glide:annotations:4.16.0 com.github.bumptech.glide:disklrucache:4.16.0 com.github.bumptech.glide:gifdecoder:4.16.0 com.github.bumptech.glide:glide:4.16.0 -com.github.skydoves:landscapist-android:2.4.4 -com.github.skydoves:landscapist-coil3-android:2.4.4 -com.github.skydoves:landscapist-coil3:2.4.4 -com.github.skydoves:landscapist:2.4.4 +com.github.skydoves:landscapist-android:2.4.7 +com.github.skydoves:landscapist-coil3-android:2.4.7 +com.github.skydoves:landscapist-coil3:2.4.7 +com.github.skydoves:landscapist:2.4.7 com.google.android.flexbox:flexbox:3.0.0 com.google.android.material:material:1.12.0 com.google.auto.value:auto-value-annotations:1.6.3 @@ -163,27 +163,27 @@ com.mikepenz:fastadapter-extensions-expandable:5.7.0 com.mikepenz:fastadapter-extensions-swipe:5.7.0 com.mikepenz:fastadapter-extensions-utils:5.7.0 com.mikepenz:fastadapter:5.7.0 -com.squareup.moshi:moshi:1.15.1 +com.squareup.moshi:moshi:1.15.2 com.squareup.okhttp3:okhttp:4.12.0 -com.squareup.okio:okio-jvm:3.9.1 -com.squareup.okio:okio:3.9.1 +com.squareup.okio:okio-jvm:3.10.2 +com.squareup.okio:okio:3.10.2 com.takisoft.colorpicker:colorpicker:1.0.0 com.takisoft.datetimepicker:datetimepicker:1.0.2 com.takisoft.preferencex:preferencex-colorpicker:1.1.0 com.takisoft.preferencex:preferencex-datetimepicker:1.1.0 com.takisoft.preferencex:preferencex:1.1.0 -commons-io:commons-io:2.16.1 +commons-io:commons-io:2.18.0 de.cketti.library.changelog:ckchangelog-core:2.0.0-beta02 de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0 de.hdodenhof:circleimageview:3.1.0 -io.coil-kt.coil3:coil-android:3.0.4 -io.coil-kt.coil3:coil-core-android:3.0.4 -io.coil-kt.coil3:coil-core:3.0.4 -io.coil-kt.coil3:coil-network-core-android:3.0.4 -io.coil-kt.coil3:coil-network-core:3.0.4 -io.coil-kt.coil3:coil-network-okhttp-jvm:3.0.4 -io.coil-kt.coil3:coil-network-okhttp:3.0.4 -io.coil-kt.coil3:coil:3.0.4 +io.coil-kt.coil3:coil-android:3.1.0 +io.coil-kt.coil3:coil-core-android:3.1.0 +io.coil-kt.coil3:coil-core:3.1.0 +io.coil-kt.coil3:coil-network-core-android:3.1.0 +io.coil-kt.coil3:coil-network-core:3.1.0 +io.coil-kt.coil3:coil-network-okhttp-jvm:3.1.0 +io.coil-kt.coil3:coil-network-okhttp:3.1.0 +io.coil-kt.coil3:coil:3.1.0 io.insert-koin:koin-android:3.5.6 io.insert-koin:koin-androidx-compose:3.5.6 io.insert-koin:koin-bom:3.5.6 @@ -195,31 +195,31 @@ net.jcip:jcip-annotations:1.0 net.openid:appauth:0.11.1 org.apache.commons:commons-lang3:3.7 org.apache.commons:commons-text:1.3 -org.apache.httpcomponents.client5:httpclient5:5.4.1 -org.apache.httpcomponents.core5:httpcore5-h2:5.3.1 -org.apache.httpcomponents.core5:httpcore5:5.3.1 -org.apache.james:apache-mime4j-core:0.8.9 -org.apache.james:apache-mime4j-dom:0.8.9 +org.apache.httpcomponents.client5:httpclient5:5.4.2 +org.apache.httpcomponents.core5:httpcore5-h2:5.3.3 +org.apache.httpcomponents.core5:httpcore5:5.3.3 +org.apache.james:apache-mime4j-core:0.8.12 +org.apache.james:apache-mime4j-dom:0.8.12 org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4 -org.jetbrains.compose.animation:animation-core:1.7.1 -org.jetbrains.compose.animation:animation:1.7.1 -org.jetbrains.compose.annotation-internal:annotation:1.7.1 -org.jetbrains.compose.collection-internal:collection:1.7.1 -org.jetbrains.compose.components:components-resources-android:1.7.1 -org.jetbrains.compose.components:components-resources:1.7.1 -org.jetbrains.compose.foundation:foundation-layout:1.7.1 -org.jetbrains.compose.foundation:foundation:1.7.1 -org.jetbrains.compose.runtime:runtime-saveable:1.7.1 -org.jetbrains.compose.runtime:runtime:1.7.1 -org.jetbrains.compose.ui:ui-geometry:1.7.1 -org.jetbrains.compose.ui:ui-graphics:1.7.1 -org.jetbrains.compose.ui:ui-text:1.7.1 -org.jetbrains.compose.ui:ui-unit:1.7.1 -org.jetbrains.compose.ui:ui-util:1.7.1 -org.jetbrains.compose.ui:ui:1.7.1 +org.jetbrains.compose.animation:animation-core:1.7.3 +org.jetbrains.compose.animation:animation:1.7.3 +org.jetbrains.compose.annotation-internal:annotation:1.7.3 +org.jetbrains.compose.collection-internal:collection:1.7.3 +org.jetbrains.compose.components:components-resources-android:1.7.3 +org.jetbrains.compose.components:components-resources:1.7.3 +org.jetbrains.compose.foundation:foundation-layout:1.7.3 +org.jetbrains.compose.foundation:foundation:1.7.3 +org.jetbrains.compose.runtime:runtime-saveable:1.7.3 +org.jetbrains.compose.runtime:runtime:1.7.3 +org.jetbrains.compose.ui:ui-geometry:1.7.3 +org.jetbrains.compose.ui:ui-graphics:1.7.3 +org.jetbrains.compose.ui:ui-text:1.7.3 +org.jetbrains.compose.ui:ui-unit:1.7.3 +org.jetbrains.compose.ui:ui-util:1.7.3 +org.jetbrains.compose.ui:ui:1.7.3 org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 org.jetbrains.kotlin:kotlin-bom:2.1.10 org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 @@ -242,8 +242,8 @@ org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 -org.jetbrains:annotations:26.0.1 -org.jsoup:jsoup:1.18.1 +org.jetbrains:annotations:26.0.2 +org.jsoup:jsoup:1.19.1 org.jspecify:jspecify:1.0.0 org.minidns:minidns-client:1.0.5 org.minidns:minidns-core:1.0.5 diff --git a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt index a256fa60b4..31078ef614 100644 --- a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt @@ -148,10 +148,10 @@ com.github.bumptech.glide:annotations:4.16.0 com.github.bumptech.glide:disklrucache:4.16.0 com.github.bumptech.glide:gifdecoder:4.16.0 com.github.bumptech.glide:glide:4.16.0 -com.github.skydoves:landscapist-android:2.4.4 -com.github.skydoves:landscapist-coil3-android:2.4.4 -com.github.skydoves:landscapist-coil3:2.4.4 -com.github.skydoves:landscapist:2.4.4 +com.github.skydoves:landscapist-android:2.4.7 +com.github.skydoves:landscapist-coil3-android:2.4.7 +com.github.skydoves:landscapist-coil3:2.4.7 +com.github.skydoves:landscapist:2.4.7 com.google.android.datatransport:transport-api:3.0.0 com.google.android.datatransport:transport-backend-cct:3.1.8 com.google.android.datatransport:transport-runtime:3.1.8 @@ -176,27 +176,27 @@ com.mikepenz:fastadapter-extensions-expandable:5.7.0 com.mikepenz:fastadapter-extensions-swipe:5.7.0 com.mikepenz:fastadapter-extensions-utils:5.7.0 com.mikepenz:fastadapter:5.7.0 -com.squareup.moshi:moshi:1.15.1 +com.squareup.moshi:moshi:1.15.2 com.squareup.okhttp3:okhttp:4.12.0 -com.squareup.okio:okio-jvm:3.9.1 -com.squareup.okio:okio:3.9.1 +com.squareup.okio:okio-jvm:3.10.2 +com.squareup.okio:okio:3.10.2 com.takisoft.colorpicker:colorpicker:1.0.0 com.takisoft.datetimepicker:datetimepicker:1.0.2 com.takisoft.preferencex:preferencex-colorpicker:1.1.0 com.takisoft.preferencex:preferencex-datetimepicker:1.1.0 com.takisoft.preferencex:preferencex:1.1.0 -commons-io:commons-io:2.16.1 +commons-io:commons-io:2.18.0 de.cketti.library.changelog:ckchangelog-core:2.0.0-beta02 de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0 de.hdodenhof:circleimageview:3.1.0 -io.coil-kt.coil3:coil-android:3.0.4 -io.coil-kt.coil3:coil-core-android:3.0.4 -io.coil-kt.coil3:coil-core:3.0.4 -io.coil-kt.coil3:coil-network-core-android:3.0.4 -io.coil-kt.coil3:coil-network-core:3.0.4 -io.coil-kt.coil3:coil-network-okhttp-jvm:3.0.4 -io.coil-kt.coil3:coil-network-okhttp:3.0.4 -io.coil-kt.coil3:coil:3.0.4 +io.coil-kt.coil3:coil-android:3.1.0 +io.coil-kt.coil3:coil-core-android:3.1.0 +io.coil-kt.coil3:coil-core:3.1.0 +io.coil-kt.coil3:coil-network-core-android:3.1.0 +io.coil-kt.coil3:coil-network-core:3.1.0 +io.coil-kt.coil3:coil-network-okhttp-jvm:3.1.0 +io.coil-kt.coil3:coil-network-okhttp:3.1.0 +io.coil-kt.coil3:coil:3.1.0 io.insert-koin:koin-android:3.5.6 io.insert-koin:koin-androidx-compose:3.5.6 io.insert-koin:koin-bom:3.5.6 @@ -209,31 +209,31 @@ net.jcip:jcip-annotations:1.0 net.openid:appauth:0.11.1 org.apache.commons:commons-lang3:3.7 org.apache.commons:commons-text:1.3 -org.apache.httpcomponents.client5:httpclient5:5.4.1 -org.apache.httpcomponents.core5:httpcore5-h2:5.3.1 -org.apache.httpcomponents.core5:httpcore5:5.3.1 -org.apache.james:apache-mime4j-core:0.8.9 -org.apache.james:apache-mime4j-dom:0.8.9 +org.apache.httpcomponents.client5:httpclient5:5.4.2 +org.apache.httpcomponents.core5:httpcore5-h2:5.3.3 +org.apache.httpcomponents.core5:httpcore5:5.3.3 +org.apache.james:apache-mime4j-core:0.8.12 +org.apache.james:apache-mime4j-dom:0.8.12 org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4 -org.jetbrains.compose.animation:animation-core:1.7.1 -org.jetbrains.compose.animation:animation:1.7.1 -org.jetbrains.compose.annotation-internal:annotation:1.7.1 -org.jetbrains.compose.collection-internal:collection:1.7.1 -org.jetbrains.compose.components:components-resources-android:1.7.1 -org.jetbrains.compose.components:components-resources:1.7.1 -org.jetbrains.compose.foundation:foundation-layout:1.7.1 -org.jetbrains.compose.foundation:foundation:1.7.1 -org.jetbrains.compose.runtime:runtime-saveable:1.7.1 -org.jetbrains.compose.runtime:runtime:1.7.1 -org.jetbrains.compose.ui:ui-geometry:1.7.1 -org.jetbrains.compose.ui:ui-graphics:1.7.1 -org.jetbrains.compose.ui:ui-text:1.7.1 -org.jetbrains.compose.ui:ui-unit:1.7.1 -org.jetbrains.compose.ui:ui-util:1.7.1 -org.jetbrains.compose.ui:ui:1.7.1 +org.jetbrains.compose.animation:animation-core:1.7.3 +org.jetbrains.compose.animation:animation:1.7.3 +org.jetbrains.compose.annotation-internal:annotation:1.7.3 +org.jetbrains.compose.collection-internal:collection:1.7.3 +org.jetbrains.compose.components:components-resources-android:1.7.3 +org.jetbrains.compose.components:components-resources:1.7.3 +org.jetbrains.compose.foundation:foundation-layout:1.7.3 +org.jetbrains.compose.foundation:foundation:1.7.3 +org.jetbrains.compose.runtime:runtime-saveable:1.7.3 +org.jetbrains.compose.runtime:runtime:1.7.3 +org.jetbrains.compose.ui:ui-geometry:1.7.3 +org.jetbrains.compose.ui:ui-graphics:1.7.3 +org.jetbrains.compose.ui:ui-text:1.7.3 +org.jetbrains.compose.ui:ui-unit:1.7.3 +org.jetbrains.compose.ui:ui-util:1.7.3 +org.jetbrains.compose.ui:ui:1.7.3 org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 org.jetbrains.kotlin:kotlin-bom:2.1.10 org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 @@ -256,8 +256,8 @@ org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 -org.jetbrains:annotations:26.0.1 -org.jsoup:jsoup:1.18.1 +org.jetbrains:annotations:26.0.2 +org.jsoup:jsoup:1.19.1 org.jspecify:jspecify:1.0.0 org.minidns:minidns-client:1.0.5 org.minidns:minidns-core:1.0.5 diff --git a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt index a256fa60b4..31078ef614 100644 --- a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt @@ -148,10 +148,10 @@ com.github.bumptech.glide:annotations:4.16.0 com.github.bumptech.glide:disklrucache:4.16.0 com.github.bumptech.glide:gifdecoder:4.16.0 com.github.bumptech.glide:glide:4.16.0 -com.github.skydoves:landscapist-android:2.4.4 -com.github.skydoves:landscapist-coil3-android:2.4.4 -com.github.skydoves:landscapist-coil3:2.4.4 -com.github.skydoves:landscapist:2.4.4 +com.github.skydoves:landscapist-android:2.4.7 +com.github.skydoves:landscapist-coil3-android:2.4.7 +com.github.skydoves:landscapist-coil3:2.4.7 +com.github.skydoves:landscapist:2.4.7 com.google.android.datatransport:transport-api:3.0.0 com.google.android.datatransport:transport-backend-cct:3.1.8 com.google.android.datatransport:transport-runtime:3.1.8 @@ -176,27 +176,27 @@ com.mikepenz:fastadapter-extensions-expandable:5.7.0 com.mikepenz:fastadapter-extensions-swipe:5.7.0 com.mikepenz:fastadapter-extensions-utils:5.7.0 com.mikepenz:fastadapter:5.7.0 -com.squareup.moshi:moshi:1.15.1 +com.squareup.moshi:moshi:1.15.2 com.squareup.okhttp3:okhttp:4.12.0 -com.squareup.okio:okio-jvm:3.9.1 -com.squareup.okio:okio:3.9.1 +com.squareup.okio:okio-jvm:3.10.2 +com.squareup.okio:okio:3.10.2 com.takisoft.colorpicker:colorpicker:1.0.0 com.takisoft.datetimepicker:datetimepicker:1.0.2 com.takisoft.preferencex:preferencex-colorpicker:1.1.0 com.takisoft.preferencex:preferencex-datetimepicker:1.1.0 com.takisoft.preferencex:preferencex:1.1.0 -commons-io:commons-io:2.16.1 +commons-io:commons-io:2.18.0 de.cketti.library.changelog:ckchangelog-core:2.0.0-beta02 de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0 de.hdodenhof:circleimageview:3.1.0 -io.coil-kt.coil3:coil-android:3.0.4 -io.coil-kt.coil3:coil-core-android:3.0.4 -io.coil-kt.coil3:coil-core:3.0.4 -io.coil-kt.coil3:coil-network-core-android:3.0.4 -io.coil-kt.coil3:coil-network-core:3.0.4 -io.coil-kt.coil3:coil-network-okhttp-jvm:3.0.4 -io.coil-kt.coil3:coil-network-okhttp:3.0.4 -io.coil-kt.coil3:coil:3.0.4 +io.coil-kt.coil3:coil-android:3.1.0 +io.coil-kt.coil3:coil-core-android:3.1.0 +io.coil-kt.coil3:coil-core:3.1.0 +io.coil-kt.coil3:coil-network-core-android:3.1.0 +io.coil-kt.coil3:coil-network-core:3.1.0 +io.coil-kt.coil3:coil-network-okhttp-jvm:3.1.0 +io.coil-kt.coil3:coil-network-okhttp:3.1.0 +io.coil-kt.coil3:coil:3.1.0 io.insert-koin:koin-android:3.5.6 io.insert-koin:koin-androidx-compose:3.5.6 io.insert-koin:koin-bom:3.5.6 @@ -209,31 +209,31 @@ net.jcip:jcip-annotations:1.0 net.openid:appauth:0.11.1 org.apache.commons:commons-lang3:3.7 org.apache.commons:commons-text:1.3 -org.apache.httpcomponents.client5:httpclient5:5.4.1 -org.apache.httpcomponents.core5:httpcore5-h2:5.3.1 -org.apache.httpcomponents.core5:httpcore5:5.3.1 -org.apache.james:apache-mime4j-core:0.8.9 -org.apache.james:apache-mime4j-dom:0.8.9 +org.apache.httpcomponents.client5:httpclient5:5.4.2 +org.apache.httpcomponents.core5:httpcore5-h2:5.3.3 +org.apache.httpcomponents.core5:httpcore5:5.3.3 +org.apache.james:apache-mime4j-core:0.8.12 +org.apache.james:apache-mime4j-dom:0.8.12 org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4 -org.jetbrains.compose.animation:animation-core:1.7.1 -org.jetbrains.compose.animation:animation:1.7.1 -org.jetbrains.compose.annotation-internal:annotation:1.7.1 -org.jetbrains.compose.collection-internal:collection:1.7.1 -org.jetbrains.compose.components:components-resources-android:1.7.1 -org.jetbrains.compose.components:components-resources:1.7.1 -org.jetbrains.compose.foundation:foundation-layout:1.7.1 -org.jetbrains.compose.foundation:foundation:1.7.1 -org.jetbrains.compose.runtime:runtime-saveable:1.7.1 -org.jetbrains.compose.runtime:runtime:1.7.1 -org.jetbrains.compose.ui:ui-geometry:1.7.1 -org.jetbrains.compose.ui:ui-graphics:1.7.1 -org.jetbrains.compose.ui:ui-text:1.7.1 -org.jetbrains.compose.ui:ui-unit:1.7.1 -org.jetbrains.compose.ui:ui-util:1.7.1 -org.jetbrains.compose.ui:ui:1.7.1 +org.jetbrains.compose.animation:animation-core:1.7.3 +org.jetbrains.compose.animation:animation:1.7.3 +org.jetbrains.compose.annotation-internal:annotation:1.7.3 +org.jetbrains.compose.collection-internal:collection:1.7.3 +org.jetbrains.compose.components:components-resources-android:1.7.3 +org.jetbrains.compose.components:components-resources:1.7.3 +org.jetbrains.compose.foundation:foundation-layout:1.7.3 +org.jetbrains.compose.foundation:foundation:1.7.3 +org.jetbrains.compose.runtime:runtime-saveable:1.7.3 +org.jetbrains.compose.runtime:runtime:1.7.3 +org.jetbrains.compose.ui:ui-geometry:1.7.3 +org.jetbrains.compose.ui:ui-graphics:1.7.3 +org.jetbrains.compose.ui:ui-text:1.7.3 +org.jetbrains.compose.ui:ui-unit:1.7.3 +org.jetbrains.compose.ui:ui-util:1.7.3 +org.jetbrains.compose.ui:ui:1.7.3 org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 org.jetbrains.kotlin:kotlin-bom:2.1.10 org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 @@ -256,8 +256,8 @@ org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 -org.jetbrains:annotations:26.0.1 -org.jsoup:jsoup:1.18.1 +org.jetbrains:annotations:26.0.2 +org.jsoup:jsoup:1.19.1 org.jspecify:jspecify:1.0.0 org.minidns:minidns-client:1.0.5 org.minidns:minidns-core:1.0.5 diff --git a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt index a256fa60b4..31078ef614 100644 --- a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt @@ -148,10 +148,10 @@ com.github.bumptech.glide:annotations:4.16.0 com.github.bumptech.glide:disklrucache:4.16.0 com.github.bumptech.glide:gifdecoder:4.16.0 com.github.bumptech.glide:glide:4.16.0 -com.github.skydoves:landscapist-android:2.4.4 -com.github.skydoves:landscapist-coil3-android:2.4.4 -com.github.skydoves:landscapist-coil3:2.4.4 -com.github.skydoves:landscapist:2.4.4 +com.github.skydoves:landscapist-android:2.4.7 +com.github.skydoves:landscapist-coil3-android:2.4.7 +com.github.skydoves:landscapist-coil3:2.4.7 +com.github.skydoves:landscapist:2.4.7 com.google.android.datatransport:transport-api:3.0.0 com.google.android.datatransport:transport-backend-cct:3.1.8 com.google.android.datatransport:transport-runtime:3.1.8 @@ -176,27 +176,27 @@ com.mikepenz:fastadapter-extensions-expandable:5.7.0 com.mikepenz:fastadapter-extensions-swipe:5.7.0 com.mikepenz:fastadapter-extensions-utils:5.7.0 com.mikepenz:fastadapter:5.7.0 -com.squareup.moshi:moshi:1.15.1 +com.squareup.moshi:moshi:1.15.2 com.squareup.okhttp3:okhttp:4.12.0 -com.squareup.okio:okio-jvm:3.9.1 -com.squareup.okio:okio:3.9.1 +com.squareup.okio:okio-jvm:3.10.2 +com.squareup.okio:okio:3.10.2 com.takisoft.colorpicker:colorpicker:1.0.0 com.takisoft.datetimepicker:datetimepicker:1.0.2 com.takisoft.preferencex:preferencex-colorpicker:1.1.0 com.takisoft.preferencex:preferencex-datetimepicker:1.1.0 com.takisoft.preferencex:preferencex:1.1.0 -commons-io:commons-io:2.16.1 +commons-io:commons-io:2.18.0 de.cketti.library.changelog:ckchangelog-core:2.0.0-beta02 de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0 de.hdodenhof:circleimageview:3.1.0 -io.coil-kt.coil3:coil-android:3.0.4 -io.coil-kt.coil3:coil-core-android:3.0.4 -io.coil-kt.coil3:coil-core:3.0.4 -io.coil-kt.coil3:coil-network-core-android:3.0.4 -io.coil-kt.coil3:coil-network-core:3.0.4 -io.coil-kt.coil3:coil-network-okhttp-jvm:3.0.4 -io.coil-kt.coil3:coil-network-okhttp:3.0.4 -io.coil-kt.coil3:coil:3.0.4 +io.coil-kt.coil3:coil-android:3.1.0 +io.coil-kt.coil3:coil-core-android:3.1.0 +io.coil-kt.coil3:coil-core:3.1.0 +io.coil-kt.coil3:coil-network-core-android:3.1.0 +io.coil-kt.coil3:coil-network-core:3.1.0 +io.coil-kt.coil3:coil-network-okhttp-jvm:3.1.0 +io.coil-kt.coil3:coil-network-okhttp:3.1.0 +io.coil-kt.coil3:coil:3.1.0 io.insert-koin:koin-android:3.5.6 io.insert-koin:koin-androidx-compose:3.5.6 io.insert-koin:koin-bom:3.5.6 @@ -209,31 +209,31 @@ net.jcip:jcip-annotations:1.0 net.openid:appauth:0.11.1 org.apache.commons:commons-lang3:3.7 org.apache.commons:commons-text:1.3 -org.apache.httpcomponents.client5:httpclient5:5.4.1 -org.apache.httpcomponents.core5:httpcore5-h2:5.3.1 -org.apache.httpcomponents.core5:httpcore5:5.3.1 -org.apache.james:apache-mime4j-core:0.8.9 -org.apache.james:apache-mime4j-dom:0.8.9 +org.apache.httpcomponents.client5:httpclient5:5.4.2 +org.apache.httpcomponents.core5:httpcore5-h2:5.3.3 +org.apache.httpcomponents.core5:httpcore5:5.3.3 +org.apache.james:apache-mime4j-core:0.8.12 +org.apache.james:apache-mime4j-dom:0.8.12 org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4 -org.jetbrains.compose.animation:animation-core:1.7.1 -org.jetbrains.compose.animation:animation:1.7.1 -org.jetbrains.compose.annotation-internal:annotation:1.7.1 -org.jetbrains.compose.collection-internal:collection:1.7.1 -org.jetbrains.compose.components:components-resources-android:1.7.1 -org.jetbrains.compose.components:components-resources:1.7.1 -org.jetbrains.compose.foundation:foundation-layout:1.7.1 -org.jetbrains.compose.foundation:foundation:1.7.1 -org.jetbrains.compose.runtime:runtime-saveable:1.7.1 -org.jetbrains.compose.runtime:runtime:1.7.1 -org.jetbrains.compose.ui:ui-geometry:1.7.1 -org.jetbrains.compose.ui:ui-graphics:1.7.1 -org.jetbrains.compose.ui:ui-text:1.7.1 -org.jetbrains.compose.ui:ui-unit:1.7.1 -org.jetbrains.compose.ui:ui-util:1.7.1 -org.jetbrains.compose.ui:ui:1.7.1 +org.jetbrains.compose.animation:animation-core:1.7.3 +org.jetbrains.compose.animation:animation:1.7.3 +org.jetbrains.compose.annotation-internal:annotation:1.7.3 +org.jetbrains.compose.collection-internal:collection:1.7.3 +org.jetbrains.compose.components:components-resources-android:1.7.3 +org.jetbrains.compose.components:components-resources:1.7.3 +org.jetbrains.compose.foundation:foundation-layout:1.7.3 +org.jetbrains.compose.foundation:foundation:1.7.3 +org.jetbrains.compose.runtime:runtime-saveable:1.7.3 +org.jetbrains.compose.runtime:runtime:1.7.3 +org.jetbrains.compose.ui:ui-geometry:1.7.3 +org.jetbrains.compose.ui:ui-graphics:1.7.3 +org.jetbrains.compose.ui:ui-text:1.7.3 +org.jetbrains.compose.ui:ui-unit:1.7.3 +org.jetbrains.compose.ui:ui-util:1.7.3 +org.jetbrains.compose.ui:ui:1.7.3 org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.10 org.jetbrains.kotlin:kotlin-bom:2.1.10 org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.10 @@ -256,8 +256,8 @@ org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 -org.jetbrains:annotations:26.0.1 -org.jsoup:jsoup:1.18.1 +org.jetbrains:annotations:26.0.2 +org.jsoup:jsoup:1.19.1 org.jspecify:jspecify:1.0.0 org.minidns:minidns-client:1.0.5 org.minidns:minidns-core:1.0.5 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 481ba09b09..e08e65cd34 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -42,17 +42,17 @@ androidxTestExt = "1.2.1" androidxTestRules = "1.6.1" androidxTestRunner = "1.6.2" androidxWork = "2.10.0" -apacheHttpclient5 = "5.4.1" +apacheHttpclient5 = "5.4.2" appAuth = "0.11.1" assertk = "0.28.1" circleImageView = "3.1.0" ckchangelog = "2.0.0-beta02" -clikt = "5.0.2" -commonsIo = "2.16.1" +clikt = "5.0.3" +commonsIo = "2.18.0" dependencyCheckPlugin = "0.51.0" dependencyGuardPlugin = "0.5.0" detektPlugin = "1.23.5" -detektPluginCompose = "0.4.18" +detektPluginCompose = "0.4.22" fastAdapter = "5.7.0" forkhandlesBom = "2.20.0.0" glide = "4.16.0" @@ -61,10 +61,10 @@ http4kBom = "5.35.2.0" icu4j = "72.1" javaDiffUtils = "4.12" jcipAnnotations = "1.0" -jetbrainsAnnotations = "26.0.1" +jetbrainsAnnotations = "26.0.2" jdom = "2.0.6.1" jmapClient = "0.3.1" -jsoup = "1.18.1" +jsoup = "1.19.1" junit = "4.13.2" jutf7 = "1.0.0" jzlib = "1.0.7" @@ -79,16 +79,16 @@ kotlinxDateTime = "0.6.2" kotlinxSerialization = "1.8.0" ktlint = "1.2.1" kxml2 = "1.0" -landscapist = "2.4.4" +landscapist = "2.4.7" leakcanary = "2.13" -mime4j = "0.8.9" +mime4j = "0.8.12" minidns = "1.0.5" mockito = "5.14.2" mockitoKotlin = "5.4.0" -moshi = "1.15.1" -mozillaAndroidComponents = "130.0" +moshi = "1.15.2" +mozillaAndroidComponents = "136.0" okhttp = "4.12.0" -okio = "3.9.1" +okio = "3.10.2" preferencesFix = "1.1.0" robolectric = "4.14" safeContentResolver = "1.0.0" -- GitLab From c597d99c4fecae3e33c71cb4a7ea8d6d1739464b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 6 Mar 2025 18:53:56 +0100 Subject: [PATCH 041/262] Bump test dependencies - Mockito 5.14.2 -> 5.16.0 - Robolectric 4.14 -> 4.14.1 --- gradle/libs.versions.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e08e65cd34..8619cd9ff8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -83,14 +83,14 @@ landscapist = "2.4.7" leakcanary = "2.13" mime4j = "0.8.12" minidns = "1.0.5" -mockito = "5.14.2" +mockito = "5.16.0" mockitoKotlin = "5.4.0" moshi = "1.15.2" mozillaAndroidComponents = "136.0" okhttp = "4.12.0" okio = "3.10.2" preferencesFix = "1.1.0" -robolectric = "4.14" +robolectric = "4.14.1" safeContentResolver = "1.0.0" searchPreference = "v2.3.0" spotlessPlugin = "6.25.0" -- GitLab From 2496f74d083ae2ca90a075feff79a6aa238b6eb0 Mon Sep 17 00:00:00 2001 From: matskolim Date: Thu, 6 Mar 2025 19:58:22 +0100 Subject: [PATCH 042/262] Apply window insets padding to drawer content --- .../k9mail/feature/navigation/drawer/ui/DrawerContent.kt | 4 ++++ .../feature/navigation/drawer/ui/account/AccountList.kt | 8 ++++++++ .../feature/navigation/drawer/ui/account/AccountView.kt | 9 ++++++++- .../feature/navigation/drawer/ui/setting/SettingList.kt | 4 ++++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/DrawerContent.kt b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/DrawerContent.kt index c2e37e7a5c..0afc32a25e 100644 --- a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/DrawerContent.kt +++ b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/DrawerContent.kt @@ -3,9 +3,12 @@ package app.k9mail.feature.navigation.drawer.ui import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.statusBars import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag @@ -33,6 +36,7 @@ internal fun DrawerContent( modifier = modifier .width(DRAWER_WIDTH) .fillMaxHeight() + .windowInsetsPadding(WindowInsets.statusBars) .testTag("DrawerContent"), ) { val selectedAccount = state.accounts.firstOrNull { it.id == state.selectedAccountId } diff --git a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountList.kt b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountList.kt index f08a871baf..f1fb52e46d 100644 --- a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountList.kt +++ b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountList.kt @@ -3,10 +3,16 @@ package app.k9mail.feature.navigation.drawer.ui.account import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.WindowInsetsSides +import androidx.compose.foundation.layout.displayCutout import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.navigationBars +import androidx.compose.foundation.layout.only import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.runtime.Composable @@ -37,6 +43,8 @@ internal fun AccountList( Column( modifier = Modifier .fillMaxHeight() + .windowInsetsPadding(WindowInsets.navigationBars) + .windowInsetsPadding(WindowInsets.displayCutout.only(WindowInsetsSides.Left)) .width(MainTheme.sizes.large), ) { LazyColumn( diff --git a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountView.kt b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountView.kt index 0937789be7..af75f8b3ef 100644 --- a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountView.kt +++ b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountView.kt @@ -7,12 +7,17 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.WindowInsetsSides import androidx.compose.foundation.layout.defaultMinSize +import androidx.compose.foundation.layout.displayCutout import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.only import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -41,7 +46,9 @@ internal fun AccountView( modifier = Modifier.fillMaxHeight(), ) { Box( - modifier = Modifier.width(MainTheme.sizes.large), + modifier = Modifier + .windowInsetsPadding(WindowInsets.displayCutout.only(WindowInsetsSides.Left)) + .width(MainTheme.sizes.large), contentAlignment = Alignment.Center, ) { AccountAvatar( diff --git a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/setting/SettingList.kt b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/setting/SettingList.kt index 71cf8d33f3..a7b0c1c1ff 100644 --- a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/setting/SettingList.kt +++ b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/setting/SettingList.kt @@ -1,8 +1,11 @@ package app.k9mail.feature.navigation.drawer.ui.setting import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource @@ -20,6 +23,7 @@ internal fun SettingList( Column( modifier = modifier .padding(vertical = MainTheme.spacings.default) + .windowInsetsPadding(WindowInsets.navigationBars) .fillMaxWidth(), ) { SettingListItem( -- GitLab From f2e073e0795cd5c9e56dff8c78c71997366caea5 Mon Sep 17 00:00:00 2001 From: matskolim Date: Thu, 6 Mar 2025 20:10:59 +0100 Subject: [PATCH 043/262] Refactor: Improve edge-to-edge support - Enable edge-to-edge behavior. - Adjust insets for toolbar, container, drawer content, floating action button, and message view. - Set navigation bar color to transparent. --- .../core/ui/compose/theme2/SystemBar.kt | 3 +- .../java/com/fsck/k9/activity/MessageList.kt | 47 +++++++++++++++++++ .../k9/ui/messagelist/MessageListFragment.kt | 36 ++++++++++++++ .../k9/ui/messageview/MessageViewFragment.kt | 15 ++++++ .../src/main/res/layout/message_list.xml | 1 + .../main/res/layout/split_message_list.xml | 1 + 6 files changed, 102 insertions(+), 1 deletion(-) diff --git a/core/ui/compose/theme2/common/src/main/kotlin/app/k9mail/core/ui/compose/theme2/SystemBar.kt b/core/ui/compose/theme2/common/src/main/kotlin/app/k9mail/core/ui/compose/theme2/SystemBar.kt index 9648b3e24d..d4220e6d42 100644 --- a/core/ui/compose/theme2/common/src/main/kotlin/app/k9mail/core/ui/compose/theme2/SystemBar.kt +++ b/core/ui/compose/theme2/common/src/main/kotlin/app/k9mail/core/ui/compose/theme2/SystemBar.kt @@ -1,6 +1,7 @@ package app.k9mail.core.ui.compose.theme2 import android.app.Activity +import android.graphics.Color import androidx.compose.runtime.Composable import androidx.compose.runtime.SideEffect import androidx.compose.ui.graphics.toArgb @@ -17,7 +18,7 @@ fun SystemBar( SideEffect { val window = (view.context as Activity).window window.statusBarColor = colorScheme.surfaceContainer.toArgb() - window.navigationBarColor = colorScheme.surfaceContainer.toArgb() + window.navigationBarColor = Color.TRANSPARENT WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = !darkTheme } } diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageList.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageList.kt index 93b1cb4458..9e4c6b5dcf 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageList.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageList.kt @@ -12,9 +12,14 @@ import android.view.MenuItem import android.view.View import android.view.animation.AnimationUtils import android.widget.ProgressBar +import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.ActionBar import androidx.appcompat.view.ActionMode import androidx.appcompat.widget.SearchView +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat.Type.displayCutout +import androidx.core.view.WindowInsetsCompat.Type.navigationBars +import androidx.core.view.WindowInsetsCompat.Type.systemBars import androidx.core.view.isGone import androidx.drawerlayout.widget.DrawerLayout import androidx.drawerlayout.widget.DrawerLayout.DrawerListener @@ -134,6 +139,8 @@ open class MessageList : public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + enableEdgeToEdge() + // If the app's main task was not created using the default launch intent (e.g. from a notification, a widget, // or a shortcut), using the app icon to "launch" the app will create a new MessageList instance instead of only // bringing the app's task to the foreground. We catch this situation here and simply finish the activity. This @@ -189,6 +196,46 @@ open class MessageList : initializeFragments() displayViews() initializeFunding() + initializeInsets() + } + + private fun initializeInsets() { + initializeDrawerContentInsets() + initializeToolbarInsets() + initializeContainerInsets() + } + + private fun initializeToolbarInsets() { + val toolbar = findViewById(R.id.toolbar) + + ViewCompat.setOnApplyWindowInsetsListener(toolbar) { v, windowsInsets -> + val insets = windowsInsets.getInsets(systemBars() or displayCutout()) + v.setPadding(insets.left, 0, insets.right, 0) + + windowsInsets + } + } + + private fun initializeContainerInsets() { + val container = findViewById(R.id.container) + + ViewCompat.setOnApplyWindowInsetsListener(container) { v, windowsInsets -> + val insets = windowsInsets.getInsets(displayCutout() or navigationBars()) + v.setPadding(insets.left, 0, insets.right, 0) + + windowsInsets + } + } + + private fun initializeDrawerContentInsets() { + val toolbar = findViewById(R.id.drawer_content) + + ViewCompat.setOnApplyWindowInsetsListener(toolbar) { v, windowsInsets -> + val insets = windowsInsets.getInsets(systemBars() or displayCutout()) + v.setPadding(0, insets.top, 0, 0) + + windowsInsets + } } private fun initializeFunding() { diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt index 00edf59c6a..9e0d7713d3 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt @@ -16,9 +16,13 @@ import androidx.annotation.StringRes import androidx.appcompat.view.ActionMode import androidx.core.os.BundleCompat import androidx.core.os.bundleOf +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat.Type.navigationBars +import androidx.core.view.WindowInsetsCompat.Type.systemBars import androidx.core.view.isGone import androidx.core.view.isVisible import androidx.core.view.setPadding +import androidx.core.view.updateLayoutParams import androidx.fragment.app.Fragment import androidx.lifecycle.Observer import androidx.recyclerview.widget.RecyclerView @@ -296,6 +300,19 @@ class MessageListFragment : initializeSortSettings() loadMessageList() + + initializeInsets(view) + } + + private fun initializeInsets(view: View) { + val messageList = view.findViewById(R.id.message_list) + + ViewCompat.setOnApplyWindowInsetsListener(messageList) { v, windowsInsets -> + val insets = windowsInsets.getInsets(navigationBars()) + v.setPadding(0, 0, 0, insets.bottom) + + windowsInsets + } } private fun initializeSwipeRefreshLayout(view: View) { @@ -320,6 +337,25 @@ class MessageListFragment : } else { disableFloatingActionButton(view) } + + initializeFloatingActionButtonInsets(view) + } + + private fun initializeFloatingActionButtonInsets(view: View) { + val floatingActionButton = view.findViewById(R.id.floating_action_button) + + ViewCompat.setOnApplyWindowInsetsListener(floatingActionButton) { v, windowInsets -> + val insets = windowInsets.getInsets(systemBars()) + + v.updateLayoutParams { + val fabMargin = view.resources.getDimensionPixelSize(R.dimen.floatingActionButtonMargin) + + bottomMargin = fabMargin + insets.bottom + rightMargin = fabMargin + insets.right + } + + windowInsets + } } private fun enableFloatingActionButton(view: View) { diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messageview/MessageViewFragment.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messageview/MessageViewFragment.kt index 8178278dc2..21078ba3f7 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messageview/MessageViewFragment.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messageview/MessageViewFragment.kt @@ -21,6 +21,8 @@ import android.widget.Toast import androidx.activity.result.ActivityResultLauncher import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat.Type.navigationBars import androidx.fragment.app.DialogFragment import androidx.fragment.app.Fragment import androidx.fragment.app.setFragmentResultListener @@ -185,6 +187,19 @@ class MessageViewFragment : messageTopView.setOnDownloadButtonClickListener { onDownloadButtonClicked() } + + initializeMessageTopViewInsets(messageTopView) + } + + private fun initializeMessageTopViewInsets(messageTopView: MessageTopView) { + val view = messageTopView.findViewById(R.id.message_container) + + ViewCompat.setOnApplyWindowInsetsListener(view) { v, windowsInsets -> + val insets = windowsInsets.getInsets(navigationBars()) + v.setPadding(0, 0, 0, insets.bottom) + + windowsInsets + } } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { diff --git a/legacy/ui/legacy/src/main/res/layout/message_list.xml b/legacy/ui/legacy/src/main/res/layout/message_list.xml index cf27687bd1..d3a3a8e6bd 100644 --- a/legacy/ui/legacy/src/main/res/layout/message_list.xml +++ b/legacy/ui/legacy/src/main/res/layout/message_list.xml @@ -9,6 +9,7 @@ > Date: Thu, 6 Mar 2025 14:32:58 -0500 Subject: [PATCH 044/262] Simplify git add in shippable builds --- .github/workflows/shippable_builds.yml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/.github/workflows/shippable_builds.yml b/.github/workflows/shippable_builds.yml index 537e0adb93..82e94f37bf 100644 --- a/.github/workflows/shippable_builds.yml +++ b/.github/workflows/shippable_builds.yml @@ -386,17 +386,7 @@ jobs: if [[ "$APP_NAME" = "k9mail" ]]; then git add ./app-${APP_NAME}/src/main/res/raw/changelog_master.xml elif [[ "$APP_NAME" = "thunderbird" ]]; then - case "$RELEASE_TYPE" in - "daily") - git add ./app-${APP_NAME}/src/daily/res/raw/changelog_master.xml - ;; - "beta") - git add ./app-${APP_NAME}/src/beta/res/raw/changelog_master.xml - ;; - "release") - git add ./app-${APP_NAME}/src/release/res/raw/changelog_master.xml - ;; - esac + git add ./app-${APP_NAME}/src/${RELEASE_TYPE}/res/raw/changelog_master.xml fi git add ./app-${APP_NAME}/build.gradle.kts git add metadata -- GitLab From a2a9ccf388440bb9ad6dcc41d89fcdfa88c996bb Mon Sep 17 00:00:00 2001 From: Corey Bryant Date: Thu, 6 Mar 2025 14:34:24 -0500 Subject: [PATCH 045/262] Drop K9-Mail beta builds from setup_release_automation --- scripts/setup_release_automation | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/scripts/setup_release_automation b/scripts/setup_release_automation index 571810d235..9a593b7b02 100644 --- a/scripts/setup_release_automation +++ b/scripts/setup_release_automation @@ -69,19 +69,6 @@ CHANNEL_ENVIRONMENTS = { "packageFormat": "aab", "packageFlavor": "full", }, - { - "appName": "k9mail", - "releaseTarget": "ftp|github", - "packageFormat": "apk", - "packageFlavor": "foss", - }, - { - "appName": "k9mail", - "releaseTarget": "play", - "playTargetTrack": "internal", - "packageFormat": "apk", - "packageFlavor": "full", - }, ], }, }, -- GitLab From 6ce26a4b5fda7572eb5d45a281e5aa04f33886aa Mon Sep 17 00:00:00 2001 From: matskolim Date: Thu, 6 Mar 2025 20:49:05 +0100 Subject: [PATCH 046/262] Adjust drawer width for display cutouts --- .../navigation/drawer/ui/DrawerContent.kt | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/DrawerContent.kt b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/DrawerContent.kt index 0afc32a25e..47de7963f1 100644 --- a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/DrawerContent.kt +++ b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/DrawerContent.kt @@ -4,6 +4,7 @@ import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.displayCutout import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.statusBars @@ -11,7 +12,10 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.platform.testTag +import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import app.k9mail.core.ui.compose.designsystem.atom.DividerHorizontal import app.k9mail.core.ui.compose.designsystem.atom.Surface @@ -32,11 +36,13 @@ internal fun DrawerContent( onEvent: (Event) -> Unit, modifier: Modifier = Modifier, ) { + val leftInset = getLeftInset() + Surface( modifier = modifier - .width(DRAWER_WIDTH) - .fillMaxHeight() .windowInsetsPadding(WindowInsets.statusBars) + .width(DRAWER_WIDTH + leftInset) + .fillMaxHeight() .testTag("DrawerContent"), ) { val selectedAccount = state.accounts.firstOrNull { it.id == state.selectedAccountId } @@ -87,3 +93,14 @@ internal fun DrawerContent( } } } + +@Composable +fun getLeftInset(): Dp { + return WindowInsets.displayCutout.getLeft( + density = LocalDensity.current, + layoutDirection = LocalLayoutDirection.current, + ).pxToDp() +} + +@Composable +fun Int.pxToDp() = with(LocalDensity.current) { this@pxToDp.toDp() } -- GitLab From 5739cd37dbbf2a28a3b405fd3feebdfcaa00c37e Mon Sep 17 00:00:00 2001 From: Su TT Date: Thu, 6 Mar 2025 15:40:10 -0500 Subject: [PATCH 047/262] Removed scroll indicator based on review feedback --- .../compose/common/window/WindowSizeClass.kt | 1 + .../template/LazyColumnWithHeaderFooter.kt | 4 + .../onboarding/welcome/ui/WelcomeContent.kt | 262 +++++------------- 3 files changed, 81 insertions(+), 186 deletions(-) diff --git a/core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/window/WindowSizeClass.kt b/core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/window/WindowSizeClass.kt index 2a566681b1..7ef49cf586 100644 --- a/core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/window/WindowSizeClass.kt +++ b/core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/window/WindowSizeClass.kt @@ -16,6 +16,7 @@ enum class WindowSizeClass { const val COMPACT_MAX_HEIGHT = 480 const val MEDIUM_MAX_WIDTH = 840 + const val MEDIUM_MAX_HEIGHT = 900 fun fromWidth(width: Int): WindowSizeClass { diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/template/LazyColumnWithHeaderFooter.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/template/LazyColumnWithHeaderFooter.kt index 131e3e3b68..aefda8d597 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/template/LazyColumnWithHeaderFooter.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/template/LazyColumnWithHeaderFooter.kt @@ -3,6 +3,8 @@ package app.k9mail.core.ui.compose.designsystem.template import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListScope +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment @@ -22,6 +24,7 @@ import androidx.compose.ui.unit.Density @Composable fun LazyColumnWithHeaderFooter( modifier: Modifier = Modifier, + state: LazyListState = rememberLazyListState(), verticalArrangement: Arrangement.Vertical = Arrangement.Top, horizontalAlignment: Alignment.Horizontal = Alignment.Start, header: @Composable () -> Unit = {}, @@ -30,6 +33,7 @@ fun LazyColumnWithHeaderFooter( ) { LazyColumn( modifier = modifier, + state = state, verticalArrangement = verticalArrangementWithHeaderFooter(verticalArrangement), horizontalAlignment = horizontalAlignment, ) { diff --git a/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt b/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt index 557f0b2e14..2bdb278096 100644 --- a/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt +++ b/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt @@ -1,41 +1,22 @@ package app.k9mail.feature.onboarding.welcome.ui -import androidx.compose.animation.core.animateFloatAsState + import androidx.compose.foundation.Image import androidx.compose.foundation.background -import androidx.compose.foundation.gestures.Orientation -import androidx.compose.foundation.gestures.draggable -import androidx.compose.foundation.gestures.rememberDraggableState -import androidx.compose.foundation.gestures.scrollBy import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width -import androidx.compose.foundation.lazy.LazyListState -import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.CircleShape import androidx.compose.runtime.Composable -import androidx.compose.runtime.derivedStateOf -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.composed -import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color -import androidx.compose.ui.layout.onGloballyPositioned -import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign @@ -50,12 +31,13 @@ import app.k9mail.core.ui.compose.designsystem.template.LazyColumnWithHeaderFoot import app.k9mail.core.ui.compose.designsystem.template.ResponsiveContent import app.k9mail.core.ui.compose.theme2.MainTheme import app.k9mail.feature.onboarding.welcome.R -import kotlinx.coroutines.launch + private const val CIRCLE_COLOR = 0xFFEEEEEE private const val CIRCLE_SIZE_DP = 200 private const val LOGO_SIZE_DP = 125 + @Composable internal fun WelcomeContent( onStartClick: () -> Unit, @@ -64,194 +46,49 @@ internal fun WelcomeContent( showImportButton: Boolean, modifier: Modifier = Modifier, ) { - val itemHeights = remember { mutableStateOf>(emptyMap()) } - val lazyListState = rememberLazyListState() - val totalItemsCount = 5 Surface(modifier = modifier) { Box(Modifier.fillMaxSize()) { ResponsiveContent { LazyColumnWithHeaderFooter( - state = lazyListState, verticalArrangement = Arrangement.SpaceEvenly, header = { - Box( - modifier = Modifier - .fillMaxWidth() - .defaultItemModifier() - .padding(top = MainTheme.spacings.double) - .onGloballyPositioned { coordinates -> - itemHeights.value = itemHeights.value.toMutableMap().apply { - put(0, coordinates.size.height) - } - }, - contentAlignment = Alignment.Center, - ) { - WelcomeLogo() - } + WelcomeHeaderSection() }, footer = { - Box( - modifier = Modifier - .fillMaxWidth() - .padding(top = MainTheme.spacings.quadruple) - .onGloballyPositioned { coordinates -> - itemHeights.value = itemHeights.value.toMutableMap().apply { - put(totalItemsCount - 1, coordinates.size.height) - } - }, - ) { - WelcomeFooter( - showImportButton = showImportButton, - onStartClick = onStartClick, - onImportClick = onImportClick, - modifier = Modifier - .fillMaxWidth() - .padding(top = MainTheme.spacings.quadruple), - ) - } + WelcomeFooterSection( + showImportButton = showImportButton, + onStartClick = onStartClick, + onImportClick = onImportClick, + ) }, content = { - item { - Box( - modifier = Modifier - .defaultItemModifier() - .onGloballyPositioned { coordinates -> - itemHeights.value = itemHeights.value.toMutableMap().apply { - put(1, coordinates.size.height) - } - }, - ) { - WelcomeTitle( - title = appName, - modifier = Modifier.defaultItemModifier(), - ) - } - } - item { - Box( - modifier = Modifier - .defaultItemModifier() - .onGloballyPositioned { coordinates -> - itemHeights.value = itemHeights.value.toMutableMap().apply { - put(2, coordinates.size.height) - } - }, - ) { - WelcomeMessage( - modifier = Modifier.defaultItemModifier(), - ) - } - } - item { - Spacer( - modifier = Modifier - .fillMaxWidth() - .height(40.dp) - .onGloballyPositioned { coords -> - itemHeights.value = itemHeights.value.toMutableMap().apply { - put(3, coords.size.height) - } - }, - ) - } + item {WelcomeTitleItem(title = appName)} + item {WelcomeMessageItem()} }, ) } - VerticalScrollIndicator( - listState = lazyListState, - totalItemsCount = totalItemsCount, - itemHeights = itemHeights.value, - modifier = Modifier - .align(Alignment.CenterEnd) - .padding(end = MainTheme.spacings.quarter), - ) + + } } } @Composable -fun VerticalScrollIndicator( - listState: LazyListState, - totalItemsCount: Int, - itemHeights: Map, - modifier: Modifier = Modifier, -) { - val coroutineScope = rememberCoroutineScope() +private fun WelcomeHeaderSection( - BoxWithConstraints( - modifier = modifier.fillMaxSize(), - contentAlignment = Alignment.TopEnd, +){ + Box( + modifier = Modifier + .fillMaxWidth() + .defaultItemModifier() + .padding(top = MainTheme.spacings.double), + contentAlignment = Alignment.Center, ) { - val density = LocalDensity.current - val viewportHeightPx = with(density) { maxHeight.toPx() } - - val averageHeight: Float = if (itemHeights.isNotEmpty()) { - itemHeights.values.sum().toFloat() / itemHeights.size - } else { - viewportHeightPx / 2f - } - - val totalContentHeightPx = (0 until totalItemsCount).sumOf { idx -> - val measuredHeight = itemHeights[idx] - (measuredHeight ?: averageHeight).toDouble() - }.toFloat() - - val isScrollable = totalContentHeightPx > viewportHeightPx - - val firstVisibleIndex by remember { derivedStateOf { listState.firstVisibleItemIndex } } - val firstVisibleItemOffset by remember { derivedStateOf { listState.firstVisibleItemScrollOffset.toFloat() } } - - val offsetBeforeFirst = (0 until firstVisibleIndex).sumOf { index -> - (itemHeights[index] ?: averageHeight).toDouble() - }.toFloat() - - val currentScrollOffsetPx = offsetBeforeFirst + firstVisibleItemOffset - - val scrollableRange = (totalContentHeightPx - viewportHeightPx).coerceAtLeast(1f) - val scrolledFraction = (currentScrollOffsetPx / scrollableRange).coerceIn(0f, 1f) - - val visibleFraction = (viewportHeightPx / totalContentHeightPx).coerceIn(0.1f, 1f) - - val rawScrollbarHeightPx = viewportHeightPx * visibleFraction - val scrollbarHeightPx = rawScrollbarHeightPx - .coerceAtMost(viewportHeightPx * 0.2f) - .coerceAtLeast(20f) - val scrollbarHeight = with(density) { scrollbarHeightPx.toDp() } - val scrollbarWidth = 4.dp - - val scrollbarOffsetY = with(density) { - (scrolledFraction * (viewportHeightPx - scrollbarHeightPx)).toDp() - } - - val targetAlpha = if (isScrollable) 1f else 0f - val animatedAlpha by animateFloatAsState(targetValue = targetAlpha, label = "") - - val draggableState = rememberDraggableState { delta -> - val scrollDelta = delta * (scrollableRange / (viewportHeightPx - scrollbarHeightPx)) - coroutineScope.launch { - listState.scrollBy(scrollDelta) - } - } - - Box( - modifier = Modifier - .padding(end = MainTheme.spacings.default) - .width(scrollbarWidth) - .height(scrollbarHeight) - .offset(y = scrollbarOffsetY) - .alpha(animatedAlpha) - .draggable( - orientation = Orientation.Vertical, - state = draggableState, - ) - .background( - color = MainTheme.colors.onSurfaceVariant, - shape = MainTheme.shapes.extraSmall, - ), - ) + WelcomeLogo() } + } @Composable @@ -279,6 +116,23 @@ private fun WelcomeLogo( } } + +@Composable +private fun WelcomeTitleItem( + title: String, +) { + Box( + modifier = Modifier + .defaultItemModifier() + ) { + WelcomeTitle( + title = title, + modifier = Modifier.defaultItemModifier(), + ) + } + +} + @Composable private fun WelcomeTitle( title: String, @@ -295,6 +149,20 @@ private fun WelcomeTitle( } } +@Composable +private fun WelcomeMessageItem( +){ + Box( + modifier = Modifier + .defaultItemModifier() + ) { + WelcomeMessage( + modifier = Modifier.defaultItemModifier(), + ) + } + +} + @Composable private fun WelcomeMessage( modifier: Modifier = Modifier, @@ -312,6 +180,28 @@ private fun WelcomeMessage( } } +@Composable +private fun WelcomeFooterSection( + showImportButton: Boolean, + onStartClick: () -> Unit, + onImportClick: () -> Unit +) { + Box( + modifier = Modifier + .fillMaxWidth() + .padding(top = MainTheme.spacings.quadruple) + ) { + WelcomeFooter( + showImportButton = showImportButton, + onStartClick = onStartClick, + onImportClick = onImportClick, + modifier = Modifier + .fillMaxWidth() + .padding(top = MainTheme.spacings.quadruple) + ) + } +} + @Composable private fun WelcomeFooter( showImportButton: Boolean, -- GitLab From 1fe20ddba737c0cbe46e54b8b67127a20cc2cc1b Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Fri, 7 Mar 2025 12:38:47 +0600 Subject: [PATCH 048/262] Fixed issue Unified inbox doesn't show up --- .../java/com/fsck/k9/preferences/UnifiedInboxConfigurator.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/UnifiedInboxConfigurator.kt b/legacy/core/src/main/java/com/fsck/k9/preferences/UnifiedInboxConfigurator.kt index ac2a2e65fc..11b308798f 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/UnifiedInboxConfigurator.kt +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/UnifiedInboxConfigurator.kt @@ -10,7 +10,7 @@ class UnifiedInboxConfigurator( private val accountManager: AccountManager, ) { fun configureUnifiedInbox() { - if (accountManager.getAccounts().size > 1) { + if (accountManager.getAccounts().size == 2) { K9.isShowUnifiedInbox = true K9.saveSettingsAsync() } -- GitLab From 0dad4f04bd19ac0250ba7250d434678be8d1cceb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 6 Mar 2025 14:25:23 +0100 Subject: [PATCH 049/262] Change translation cli to Ktor as Http4k requires Java 21 --- cli/translation-cli/build.gradle.kts | 11 ++-- .../cli/translation/net/Language.kt | 6 +- .../translation/net/TranslationResponse.kt | 8 ++- .../cli/translation/net/WeblateClient.kt | 66 ++++++++++++++----- gradle/libs.versions.toml | 13 ++-- 5 files changed, 73 insertions(+), 31 deletions(-) diff --git a/cli/translation-cli/build.gradle.kts b/cli/translation-cli/build.gradle.kts index af2f91e72b..2df34d7daf 100644 --- a/cli/translation-cli/build.gradle.kts +++ b/cli/translation-cli/build.gradle.kts @@ -1,5 +1,6 @@ plugins { id(ThunderbirdPlugins.App.jvm) + alias(libs.plugins.kotlin.serialization) } version = "unspecified" @@ -10,8 +11,10 @@ application { dependencies { implementation(libs.clikt) - implementation(platform(libs.http4k.bom)) - implementation(libs.http4k.core) - implementation(libs.http4k.client.okhttp) - implementation(libs.http4k.format.moshi) + implementation(libs.ktor.client.core) + implementation(libs.ktor.client.cio) + implementation(libs.ktor.client.content.negotiation) + implementation(libs.ktor.client.logging) + implementation(libs.ktor.serialization.json) + implementation(libs.logback.classic) } diff --git a/cli/translation-cli/src/main/kotlin/net/thunderbird/cli/translation/net/Language.kt b/cli/translation-cli/src/main/kotlin/net/thunderbird/cli/translation/net/Language.kt index c975e1ee8f..6104419760 100644 --- a/cli/translation-cli/src/main/kotlin/net/thunderbird/cli/translation/net/Language.kt +++ b/cli/translation-cli/src/main/kotlin/net/thunderbird/cli/translation/net/Language.kt @@ -1,9 +1,11 @@ package net.thunderbird.cli.translation.net -import com.squareup.moshi.Json +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +@Serializable data class Language( val code: String, - @Json(name = "translated_percent") + @SerialName("translated_percent") val translatedPercent: Double, ) diff --git a/cli/translation-cli/src/main/kotlin/net/thunderbird/cli/translation/net/TranslationResponse.kt b/cli/translation-cli/src/main/kotlin/net/thunderbird/cli/translation/net/TranslationResponse.kt index f63f45233d..ed0559ed78 100644 --- a/cli/translation-cli/src/main/kotlin/net/thunderbird/cli/translation/net/TranslationResponse.kt +++ b/cli/translation-cli/src/main/kotlin/net/thunderbird/cli/translation/net/TranslationResponse.kt @@ -1,18 +1,22 @@ package net.thunderbird.cli.translation.net -import com.squareup.moshi.Json +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +@Serializable data class TranslationResponse( val next: String?, val results: List, ) +@Serializable data class Translation( - @Json(name = "language_code") + @SerialName("language_code") val languageCode: String, val language: TranslationLanguage, ) +@Serializable data class TranslationLanguage( val code: String, ) diff --git a/cli/translation-cli/src/main/kotlin/net/thunderbird/cli/translation/net/WeblateClient.kt b/cli/translation-cli/src/main/kotlin/net/thunderbird/cli/translation/net/WeblateClient.kt index 4f722254f4..7121f44a2b 100644 --- a/cli/translation-cli/src/main/kotlin/net/thunderbird/cli/translation/net/WeblateClient.kt +++ b/cli/translation-cli/src/main/kotlin/net/thunderbird/cli/translation/net/WeblateClient.kt @@ -1,25 +1,35 @@ package net.thunderbird.cli.translation.net -import org.http4k.client.OkHttp -import org.http4k.core.Body -import org.http4k.core.HttpHandler -import org.http4k.core.Method -import org.http4k.core.Request -import org.http4k.core.Uri -import org.http4k.format.Moshi.auto +import io.ktor.client.HttpClient +import io.ktor.client.call.body +import io.ktor.client.engine.cio.CIO +import io.ktor.client.plugins.contentnegotiation.ContentNegotiation +import io.ktor.client.plugins.logging.DEFAULT +import io.ktor.client.plugins.logging.LogLevel +import io.ktor.client.plugins.logging.Logger +import io.ktor.client.plugins.logging.Logging +import io.ktor.client.request.get +import io.ktor.http.headers +import io.ktor.serialization.kotlinx.json.json +import kotlinx.coroutines.runBlocking +import kotlinx.serialization.json.Json class WeblateClient( - private val client: HttpHandler = OkHttp(), + private val client: HttpClient = createClient(), private val config: WeblateConfig = WeblateConfig(), ) { fun loadLanguages(token: String): List { - val request = Request(Method.GET, Uri.of(config.projectsLanguagesUrl())) - .headers(config.getDefaultHeaders(token)) + val languages: List - val response = client(request) - val lens = Body.auto>().toLens() + runBlocking { + languages = client.get(config.projectsLanguagesUrl()) { + headers { + config.getDefaultHeaders(token).forEach { (key, value) -> append(key, value) } + } + }.body() + } - return lens(response).toList() + return languages } fun loadTranslations(token: String): List { @@ -39,16 +49,36 @@ class WeblateClient( } private fun loadTranslationPage(token: String, page: Int): TranslationResponse { - val request = Request(Method.GET, Uri.of(config.componentsTranslationsUrl(page))) - .headers(config.getDefaultHeaders(token)) + val translationResponse: TranslationResponse - val response = client(request) - val lens = Body.auto().toLens() + runBlocking { + translationResponse = client.get(config.componentsTranslationsUrl(page)) { + headers { + config.getDefaultHeaders(token).forEach { (key, value) -> append(key, value) } + } + }.body() + } - return lens(response) + return translationResponse } private companion object { + fun createClient(): HttpClient { + return HttpClient(CIO) { + install(Logging) { + logger = Logger.DEFAULT + level = LogLevel.NONE + } + install(ContentNegotiation) { + json( + Json { + ignoreUnknownKeys = true + }, + ) + } + } + } + private fun WeblateConfig.projectsLanguagesUrl() = "${baseUrl}projects/$projectName/languages/" diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 47a60db4b1..ff9e3d2c1b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -57,7 +57,6 @@ fastAdapter = "5.7.0" forkhandlesBom = "2.20.0.0" glide = "4.16.0" gradle = "8.13" -http4kBom = "5.35.2.0" icu4j = "72.1" javaDiffUtils = "4.12" jcipAnnotations = "1.0" @@ -78,9 +77,11 @@ kotlinxCollectionsImmutable = "0.3.8" kotlinxDateTime = "0.6.2" kotlinxSerialization = "1.8.0" ktlint = "1.2.1" +ktor = "3.1.1" kxml2 = "1.0" landscapist = "2.4.7" leakcanary = "2.13" +logbackClassic = "1.3.14" mime4j = "0.8.12" minidns = "1.0.5" mockito = "5.16.0" @@ -188,10 +189,6 @@ forkhandles-bom = { module = "dev.forkhandles:forkhandles-bom", version.ref = "f forkhandles-fabrikate4k = { module = "dev.forkhandles:fabrikate4k" } glide = { module = "com.github.bumptech.glide:glide", version.ref = "glide" } glide-compiler = { module = "com.github.bumptech.glide:compiler", version.ref = "glide" } -http4k-bom = { module = "org.http4k:http4k-bom", version.ref = "http4kBom" } -http4k-core = { module = "org.http4k:http4k-core" } -http4k-client-okhttp = { module = "org.http4k:http4k-client-okhttp" } -http4k-format-moshi = { module = "org.http4k:http4k-format-moshi" } icu4j-charset = { module = "com.ibm.icu:icu4j-charset", version.ref = "icu4j" } jetbrains-annotations = { module = "org.jetbrains:annotations", version.ref = "jetbrainsAnnotations" } jcip-annotations = { module = "net.jcip:jcip-annotations", version.ref = "jcipAnnotations" } @@ -218,9 +215,15 @@ kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-c kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" } kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinxDateTime" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerialization" } +ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" } +ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor" } +ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor" } +ktor-client-logging = { module = "io.ktor:ktor-client-logging", version.ref = "ktor" } +ktor-serialization-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" } kxml2 = { module = "com.github.cketti:kxml2-extracted-from-android", version.ref = "kxml2" } lanscapist-coil = { module = "com.github.skydoves:landscapist-coil3", version.ref = "landscapist" } leakcanary-android = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakcanary" } +logback-classic = { module = "ch.qos.logback:logback-classic", version.ref = "logbackClassic" } mime4j-core = { module = "org.apache.james:apache-mime4j-core", version.ref = "mime4j" } mime4j-dom = { module = "org.apache.james:apache-mime4j-dom", version.ref = "mime4j" } minidns-hla = { module = "org.minidns:minidns-hla", version.ref = "minidns" } -- GitLab From 16bfb8cb9d4e372d8c2ef1e54de6a1ee2678f1fe Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Fri, 7 Mar 2025 12:06:13 +0100 Subject: [PATCH 050/262] Update translations (Weblate) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: AO Localisation Lab Co-authored-by: Besnik Bleta Co-authored-by: Bård Sigurd Møller Co-authored-by: Fjuro Co-authored-by: Hosted Weblate Co-authored-by: Remus-Gabriel Chelu Co-authored-by: Wim Benes Co-authored-by: solokot Translate-URL: https://hosted.weblate.org/projects/tb-android/account-oauth/ru/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/cs/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/fr/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/fy/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/nl/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/nn/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/ro/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/ru/ Translate-URL: https://hosted.weblate.org/projects/tb-android/app-strings/sq/ Translate-URL: https://hosted.weblate.org/projects/tb-android/legacy-ui-folder/cs/ Translation: Thunderbird for Android / K-9 Mail/account-oauth Translation: Thunderbird for Android / K-9 Mail/legacy-ui-folder Translation: Thunderbird for Android / K-9 Mail/legacy-ui-legacy --- feature/account/oauth/src/main/res/values-ru/strings.xml | 4 ++-- legacy/ui/folder/src/main/res/values-cs/strings.xml | 6 +++--- legacy/ui/legacy/src/main/res/values-cs/strings.xml | 8 ++++---- legacy/ui/legacy/src/main/res/values-fr/strings.xml | 2 +- legacy/ui/legacy/src/main/res/values-fy/strings.xml | 4 ++-- legacy/ui/legacy/src/main/res/values-nl/strings.xml | 4 ++-- legacy/ui/legacy/src/main/res/values-nn/strings.xml | 2 +- legacy/ui/legacy/src/main/res/values-ro/strings.xml | 2 +- legacy/ui/legacy/src/main/res/values-ru/strings.xml | 2 +- legacy/ui/legacy/src/main/res/values-sq/strings.xml | 4 ++-- 10 files changed, 19 insertions(+), 19 deletions(-) diff --git a/feature/account/oauth/src/main/res/values-ru/strings.xml b/feature/account/oauth/src/main/res/values-ru/strings.xml index 9aa63d1c4d..45f7e172df 100644 --- a/feature/account/oauth/src/main/res/values-ru/strings.xml +++ b/feature/account/oauth/src/main/res/values-ru/strings.xml @@ -8,7 +8,7 @@ Не удалось выполнить вход по протоколу OAuth Авторизация отменена Авторизация не выполнена из-за ошибки: %s - Сейчас вы будете перенаправлены к вашему провайдеру электронной почты для входа в систему. Вам необходимо будет предоставить доступ приложению к вашему электронному адресу. + Сейчас вы будете перенаправлены к вашему провайдеру электронной почты для входа в систему. Вам будет необходимо предоставить приложению доступ к вашему электронному адресу. статье поддержки Если у вас возникли проблемы при входе в учётную запись Google, обратитесь к {placeHolder}. - \ No newline at end of file + diff --git a/legacy/ui/folder/src/main/res/values-cs/strings.xml b/legacy/ui/folder/src/main/res/values-cs/strings.xml index 5fb7aa109f..b8b1818581 100644 --- a/legacy/ui/folder/src/main/res/values-cs/strings.xml +++ b/legacy/ui/folder/src/main/res/values-cs/strings.xml @@ -1,8 +1,8 @@ - + K odeslání Koncepty - Odeslaná + Odeslané Koš - Doručená + Doručené diff --git a/legacy/ui/legacy/src/main/res/values-cs/strings.xml b/legacy/ui/legacy/src/main/res/values-cs/strings.xml index 1e25693e9c..7a5f37cb1f 100644 --- a/legacy/ui/legacy/src/main/res/values-cs/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-cs/strings.xml @@ -71,7 +71,7 @@ Přidat \u2605 Odebrat \u2606 Kopírovat - Zrušit přihlášení se k odběru + Odhlásit odběr Zobrazit hlavičku Adresa zkopírována do schránky @@ -353,7 +353,7 @@ Stahování pošty Složky Předpona citovaného textu - Šifrování mezi odesilatelem a příjemcem + Koncové šifrování Zapnout podporu OpenPGP Vybrat OpenPGP aplikaci Nastavit klíč pro šifrování mezi odesilatelem a příjemcem @@ -656,7 +656,7 @@ Sjednotit zprávy patřící ke stejnému vláknu Aktualizace databází Aktualizuji databáze… - Přechod na novější verzi databáze účtu \\%s\\ + Přechod na novější verzi databáze účtu „%s Zobraz rozdělení obrazovky Vždy Nikdy @@ -789,7 +789,7 @@ Nemusí být podporováno některými příjemci Vnitřní chyba: neplatný účet! Chyba při připojování k %s! - Poslat Autocrypt nastavovací zprávu + Poslat nastavovací zprávu Autocrypt Zabezpečeně sdílet nastavení s ostatními zařízeními Autocrypt nastavovací zpráva Autocrypt nastavovací zpráva zabezpečeně sdílí vaše nastavení s ostatními zařízeními. diff --git a/legacy/ui/legacy/src/main/res/values-fr/strings.xml b/legacy/ui/legacy/src/main/res/values-fr/strings.xml index 62ac61d7cd..39a9d19433 100644 --- a/legacy/ui/legacy/src/main/res/values-fr/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-fr/strings.xml @@ -879,7 +879,7 @@ Touchez pour accorder l’autorisation. À propos de %s L’équipe Thunderbird pour appareils mobiles - Le compte « %1$s » sera supprimé de %2$s. + Le compte « %1$s » sera supprimé de %2$s. Si le poussé est utilisé, %1$s maintient une connexion vers le serveur de courriel. Android exige d’afficher une notification continue quand l’appli est active en arrière-plan. %2$s L’appli OpenKeychain est nécessaire pour prendre en charge le chiffrement de bout en bout. Notifications diff --git a/legacy/ui/legacy/src/main/res/values-fy/strings.xml b/legacy/ui/legacy/src/main/res/values-fy/strings.xml index 6b64239fb2..30c241fc23 100644 --- a/legacy/ui/legacy/src/main/res/values-fy/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-fy/strings.xml @@ -644,7 +644,7 @@ Berjochten per petear groepearje Databases bywurkje Databases bywurkje dwaande… - Databases fan account \\%s\\ bywurkje + Databases fan account ‘%s’ bywurkje Splitst skerm toane Altyd Nea @@ -871,7 +871,7 @@ Werom nei berjochtelist Tastimming om alarms te plannen ûntbrekt Tik om tastimming te jaan. - De account \\%1$s’ sil út %2$s fuortsmiten wurde. + De account ‘%1$s’ sil út %2$s fuortsmiten wurde. By gebrûk fan Push ûnderhâldt %1$s in ferbining mei de mailserver. Android fereasket it trochrinnend toanen fan in melding as de app aktyf is op de eftergrûn. %2$s De app OpenKeychain is fereaske om stipe foar end-to-end-fersifering mooglik te meitsjen. Oer %s diff --git a/legacy/ui/legacy/src/main/res/values-nl/strings.xml b/legacy/ui/legacy/src/main/res/values-nl/strings.xml index 6b78bc1ff7..77a2dec64f 100644 --- a/legacy/ui/legacy/src/main/res/values-nl/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-nl/strings.xml @@ -644,7 +644,7 @@ Berichten per gesprek groeperen Databases bijwerken Databases bijwerken… - Databases van account \\%s\\ bijwerken + Databases van account ‘%s’ bijwerken Gesplitst scherm tonen Altijd Nooit @@ -872,7 +872,7 @@ Toestemming om alarmen te plannen ontbreekt Tik om toestemming te geven. De app OpenKeychain is vereist om ondersteuning voor end-to-end-encryptie mogelijk te maken. - De account \\%1$s’ zal uit %2$s worden verwijderd. + De account ‘%1$s’ zal uit %2$s worden verwijderd. Over %s Bij gebruik van Push onderhoudt %1$s een verbinding met de mailserver. Android vereist het doorlopend tonen van een melding als de app actief is op de achtergrond. %2$s Thunderbird Mobile-team diff --git a/legacy/ui/legacy/src/main/res/values-nn/strings.xml b/legacy/ui/legacy/src/main/res/values-nn/strings.xml index bd365af5c5..dfc981e889 100644 --- a/legacy/ui/legacy/src/main/res/values-nn/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-nn/strings.xml @@ -384,7 +384,7 @@ Grupper meldingar i samtalar Oppgraderer databasar Oppgraderer databasar … - Oppgraderer databasen til kontoen \\%s\\ + Oppgraderer databasen til kontoen \"%s\" Splitt skjermen Alltid Aldri diff --git a/legacy/ui/legacy/src/main/res/values-ro/strings.xml b/legacy/ui/legacy/src/main/res/values-ro/strings.xml index fac3781fbe..c306c0a134 100644 --- a/legacy/ui/legacy/src/main/res/values-ro/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ro/strings.xml @@ -884,7 +884,7 @@ Poți păstra acest mesaj și să îl folosești drept copie de siguranță a ch Atinge pentru a acorda permisiunea. Aplicația OpenKeychain este necesară pentru a activa suportul pentru criptarea end-to-end. Când utilizezi Push, %1$s menține o conexiune la serverul de e-mail. Android necesită afișarea unei notificări în curs de desfășurare în timp ce aplicația este activă în fundal. %2$s - Contul \\%1$s\" va fi eliminat din %2$s. + Contul \"%1$s\" va fi eliminat din %2$s. Despre %s Echipa Thunderbird Mobile Notificări diff --git a/legacy/ui/legacy/src/main/res/values-ru/strings.xml b/legacy/ui/legacy/src/main/res/values-ru/strings.xml index 0ad05d2c13..1f6db7adc5 100644 --- a/legacy/ui/legacy/src/main/res/values-ru/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-ru/strings.xml @@ -658,7 +658,7 @@ Объединить сообщения, показав счётчик Обновление данных Обновление данных… - Обновление учётной записи \\%s\\ + Обновление учётной записи \"%s\" Разделить экран Всегда Никогда diff --git a/legacy/ui/legacy/src/main/res/values-sq/strings.xml b/legacy/ui/legacy/src/main/res/values-sq/strings.xml index e4900055ac..0de4f2fc79 100644 --- a/legacy/ui/legacy/src/main/res/values-sq/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-sq/strings.xml @@ -643,7 +643,7 @@ Grupoji mesazhet sipas bisedash Përditësim bazash të dhënash Po përditësohen baza të dhënash… - Po përditësohet baza e të dhënave për llogarinë \\%s\\ + Po përditësohet baza e të dhënave për llogarinë \"%s\" Shfaqe me ekranin të ndarë Përherë Kurrë @@ -873,7 +873,7 @@ Mungojnë leje për të planifikuar alarme Aplikacioni OpenKeychain është i domosdoshëm për të aktivizuar mbulim fshehtëzimi skaj-më-skaj. Mbi %s - Llogaria \\%1$s\" do të hiqet nga %2$s. + Llogaria \"%1$s\" do të hiqet nga %2$s. Kur përdoret Push, %1$s mban një lidhje me shërbyesin e postës. Android-i lyp shfaqjen e vazhdueshme të një njoftimi, teksa aplikacioni është aktiv në prapaskenë. %2$s Ekipi i Thunderbird-it Për Celular Grumbullim të dhënash -- GitLab From a480c2410162938d3077d62299c4c6a1c5e6817b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montw=C3=A9?= Date: Tue, 10 Dec 2024 15:38:12 +0100 Subject: [PATCH 051/262] Change lint config to catch more translation issues --- build-plugin/src/main/kotlin/AndroidExtension.kt | 13 ++++++------- .../kotlin/thunderbird.app.android.gradle.kts | 7 +------ .../thunderbird.library.android.gradle.kts | 6 +----- config/lint/lint.xml | 16 +++++++++++++--- core/testing/build.gradle.kts | 1 + 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/build-plugin/src/main/kotlin/AndroidExtension.kt b/build-plugin/src/main/kotlin/AndroidExtension.kt index fa70f6782f..996bd7dbc3 100644 --- a/build-plugin/src/main/kotlin/AndroidExtension.kt +++ b/build-plugin/src/main/kotlin/AndroidExtension.kt @@ -1,8 +1,9 @@ import com.android.build.api.dsl.CommonExtension import org.gradle.accessors.dm.LibrariesForLibs +import org.gradle.api.Project import org.gradle.api.artifacts.dsl.DependencyHandler -internal fun CommonExtension<*, *, *, *, *, *>.configureSharedConfig() { +internal fun CommonExtension<*, *, *, *, *, *>.configureSharedConfig(project: Project) { compileSdk = ThunderbirdProjectConfig.androidSdkCompile defaultConfig { @@ -19,7 +20,10 @@ internal fun CommonExtension<*, *, *, *, *, *>.configureSharedConfig() { } lint { - abortOnError = false + warningsAsErrors = false + abortOnError = true + checkDependencies = true + lintConfig = project.file("${project.rootProject.projectDir}/config/lint/lint.xml") } testOptions { @@ -50,11 +54,6 @@ internal fun CommonExtension<*, *, *, *, *, *>.configureSharedComposeConfig(libs buildFeatures { compose = true } - - lint { - warningsAsErrors = false - abortOnError = true - } } internal fun DependencyHandler.configureSharedComposeDependencies(libs: LibrariesForLibs) { diff --git a/build-plugin/src/main/kotlin/thunderbird.app.android.gradle.kts b/build-plugin/src/main/kotlin/thunderbird.app.android.gradle.kts index fc10949c0f..183b027e7b 100644 --- a/build-plugin/src/main/kotlin/thunderbird.app.android.gradle.kts +++ b/build-plugin/src/main/kotlin/thunderbird.app.android.gradle.kts @@ -6,7 +6,7 @@ plugins { } android { - configureSharedConfig() + configureSharedConfig(project) defaultConfig { targetSdk = ThunderbirdProjectConfig.androidSdkTarget @@ -24,11 +24,6 @@ android { jvmTarget = ThunderbirdProjectConfig.javaCompatibilityVersion.toString() } - lint { - checkDependencies = true - lintConfig = file("${rootProject.projectDir}/config/lint/lint.xml") - } - dependenciesInfo { includeInApk = false includeInBundle = false diff --git a/build-plugin/src/main/kotlin/thunderbird.library.android.gradle.kts b/build-plugin/src/main/kotlin/thunderbird.library.android.gradle.kts index a0f8e08fa0..e15638130e 100644 --- a/build-plugin/src/main/kotlin/thunderbird.library.android.gradle.kts +++ b/build-plugin/src/main/kotlin/thunderbird.library.android.gradle.kts @@ -6,7 +6,7 @@ plugins { } android { - configureSharedConfig() + configureSharedConfig(project) buildFeatures { buildConfig = false @@ -16,10 +16,6 @@ android { jvmTarget = ThunderbirdProjectConfig.javaCompatibilityVersion.toString() } - lint { - lintConfig = file("${rootProject.projectDir}/config/lint/lint.xml") - } - testOptions { unitTests { isIncludeAndroidResources = true diff --git a/config/lint/lint.xml b/config/lint/lint.xml index c2a7904a44..10bc101a5e 100644 --- a/config/lint/lint.xml +++ b/config/lint/lint.xml @@ -1,9 +1,19 @@ - - - + + + + + + + + + + + + + diff --git a/core/testing/build.gradle.kts b/core/testing/build.gradle.kts index 2b963d7c8b..8614bc5ac3 100644 --- a/core/testing/build.gradle.kts +++ b/core/testing/build.gradle.kts @@ -1,5 +1,6 @@ plugins { id(ThunderbirdPlugins.Library.jvm) + alias(libs.plugins.android.lint) } dependencies { -- GitLab From 02ec1f04bb841dbd16a3712444aa2657c898b808 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montw=C3=A9?= Date: Tue, 10 Dec 2024 15:38:34 +0100 Subject: [PATCH 052/262] Remove baseline file --- feature/settings/import/build.gradle.kts | 4 - feature/settings/import/lint-baseline.xml | 103 ---------------------- 2 files changed, 107 deletions(-) delete mode 100644 feature/settings/import/lint-baseline.xml diff --git a/feature/settings/import/build.gradle.kts b/feature/settings/import/build.gradle.kts index 5cb07b7e00..27733c6970 100644 --- a/feature/settings/import/build.gradle.kts +++ b/feature/settings/import/build.gradle.kts @@ -7,10 +7,6 @@ android { // Using "importing" because "import" is not allowed in Java package names (it's fine with Kotlin, though) namespace = "app.k9mail.feature.settings.importing" resourcePrefix = "settings_import_" - - lint { - baseline = file("lint-baseline.xml") - } } dependencies { diff --git a/feature/settings/import/lint-baseline.xml b/feature/settings/import/lint-baseline.xml deleted file mode 100644 index 99b39f8161..0000000000 --- a/feature/settings/import/lint-baseline.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- GitLab From f54121a006104f721f689135b3461395ee6321d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montw=C3=A9?= Date: Tue, 10 Dec 2024 15:39:02 +0100 Subject: [PATCH 053/262] Fix plural form --- .../account/setup/src/main/res/values-cs/strings.xml | 6 +++--- .../account/setup/src/main/res/values-iw/strings.xml | 6 +++--- .../account/setup/src/main/res/values-lt/strings.xml | 6 +++--- .../account/setup/src/main/res/values-sk/strings.xml | 6 +++--- .../import/src/main/res/values-cy/strings.xml | 4 ++-- .../import/src/main/res/values-iw/strings.xml | 2 +- legacy/ui/legacy/src/main/res/values-cs/strings.xml | 4 ++-- legacy/ui/legacy/src/main/res/values-cy/strings.xml | 12 ++++++++++++ legacy/ui/legacy/src/main/res/values-iw/strings.xml | 10 +++++----- legacy/ui/legacy/src/main/res/values-lt/strings.xml | 8 ++++---- legacy/ui/legacy/src/main/res/values-sk/strings.xml | 6 +++--- 11 files changed, 41 insertions(+), 29 deletions(-) diff --git a/feature/account/setup/src/main/res/values-cs/strings.xml b/feature/account/setup/src/main/res/values-cs/strings.xml index 7cc08e4e54..09f8612816 100644 --- a/feature/account/setup/src/main/res/values-cs/strings.xml +++ b/feature/account/setup/src/main/res/values-cs/strings.xml @@ -50,16 +50,16 @@ Každou minutu Každé %d minuty - Každých %d minut + Každých %d minut Každou hodinu Každé %d hodiny - Každých %d hodin + Každých %d hodin 1 zpráva %d zprávy - %d zpráv + %d zpráv \ No newline at end of file diff --git a/feature/account/setup/src/main/res/values-iw/strings.xml b/feature/account/setup/src/main/res/values-iw/strings.xml index 1cc8b1275b..34c880b46c 100644 --- a/feature/account/setup/src/main/res/values-iw/strings.xml +++ b/feature/account/setup/src/main/res/values-iw/strings.xml @@ -34,17 +34,17 @@ כל שעה כל שעתיים - כל %d שעות + כל %d שעות כל דקה כל 2 דקות - כל %d דקות + כל %d דקות הודעה אחת 2 הודעות - %d הודעות + %d הודעות הצג התראות החשבון נוצר בהצלחה diff --git a/feature/account/setup/src/main/res/values-lt/strings.xml b/feature/account/setup/src/main/res/values-lt/strings.xml index 1807471e1d..aa86e63c8e 100644 --- a/feature/account/setup/src/main/res/values-lt/strings.xml +++ b/feature/account/setup/src/main/res/values-lt/strings.xml @@ -21,7 +21,7 @@ Kas %d minutę Kas %d minutes - Kas %d minučių + Kas %d minučių Rodyti pranešimus Jūsų el. pašto serverių konfigūraciją gavome ne tokiu saugiu ryšiu, kokiu norėtume. Tai reiškia, jog yra nedidelė galimybė, kad ji buvo pakeista. Prašom patikrinti, jog žemiau nurodyta konfigūracija yra teisinga. @@ -54,12 +54,12 @@ Kas %d valandą Kas %d valandas - Kas %d valandų + Kas %d valandų %d laiškas %d laiškai - %d laiškų + %d laiškų Kuriant paskyrą, įvyko klaida diff --git a/feature/account/setup/src/main/res/values-sk/strings.xml b/feature/account/setup/src/main/res/values-sk/strings.xml index 367e8b674b..36c3b410c5 100644 --- a/feature/account/setup/src/main/res/values-sk/strings.xml +++ b/feature/account/setup/src/main/res/values-sk/strings.xml @@ -20,17 +20,17 @@ Každú minútu Každé %d minúty - Každých %d minút + Každých %d minút Každú hodinu Každé %d hodiny - Každých %d hodín + Každých %d hodín 1 správa %d správy - %d správ + %d správ Zlyhalo načítanie zoznamu zložiek zo servera Zložka SPAMu diff --git a/feature/settings/import/src/main/res/values-cy/strings.xml b/feature/settings/import/src/main/res/values-cy/strings.xml index 8f4c51ccca..aed0f193c2 100644 --- a/feature/settings/import/src/main/res/values-cy/strings.xml +++ b/feature/settings/import/src/main/res/values-cy/strings.xml @@ -22,10 +22,10 @@ Yn hwyrach Yn mewnforio gosodiadau… - + I fedru defnyddio\'r cyfrif \"%s\" mae\'n rhaid rhoi cyfrinair y gweinydd. I fedru defnyddio\'r cyfrif \"%s\" mae\'n rhaid rhoi cyfrinair y gweinydd. I fedru defnyddio\'r cyfrif \"%s\" mae\'n rhaid rhoi cyfrineiriau\'r gweinydd. - + I fedru defnyddio\'r cyfrif \"%s\" mae\'n rhaid rhoi cyfrineiriau\'r gweinydd. I fedru defnyddio\'r cyfrif \"%s\" mae\'n rhaid rhoi cyfrineiriau\'r gweinydd. I fedru defnyddio\'r cyfrif \"%s\" mae\'n rhaid rhoi cyfrineiriau\'r gweinydd. diff --git a/feature/settings/import/src/main/res/values-iw/strings.xml b/feature/settings/import/src/main/res/values-iw/strings.xml index 047cc1fad3..3dc5ca612d 100644 --- a/feature/settings/import/src/main/res/values-iw/strings.xml +++ b/feature/settings/import/src/main/res/values-iw/strings.xml @@ -35,7 +35,7 @@ על מנת להשתמש בחשבון \"%s\" עליך לספק את סיסמת השרת. על מנת להשתמש בחשבון \"%s\" עליך לספק את סיסמאות השרת. - על מנת להשתמש בחשבון \"%s\" עליך לספק את סיסמאות השרת. + על מנת להשתמש בחשבון \"%s\" עליך לספק את סיסמאות השרת. ייבא מיישום ייבא מיישום diff --git a/legacy/ui/legacy/src/main/res/values-cs/strings.xml b/legacy/ui/legacy/src/main/res/values-cs/strings.xml index 7a5f37cb1f..5223164698 100644 --- a/legacy/ui/legacy/src/main/res/values-cs/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-cs/strings.xml @@ -106,7 +106,7 @@ %d nová zpráva %d nové zprávy - %d nových zpráv + %d nových zpráv + %1$d pro účet %2$s Odpovědět @@ -644,7 +644,7 @@ Stahování %1$d z %2$d výsledku Stahování %1$d ze %2$d výsledků - Stahování %1$d z %2$d výsledků + Stahování %1$d z %2$d výsledků Vzdálené vyhledávání se nezdařilo Hledání diff --git a/legacy/ui/legacy/src/main/res/values-cy/strings.xml b/legacy/ui/legacy/src/main/res/values-cy/strings.xml index 016366eaf5..d6d6268d43 100644 --- a/legacy/ui/legacy/src/main/res/values-cy/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-cy/strings.xml @@ -73,8 +73,10 @@ Dad-tanysgrifio Dangos penynnau + Copïwyd y cyfeiriad i\'r clipfwrdd Copïwyd y cyfeiriad i\'r clipfwrdd Copïwyd y cyfeiriadau i\'r clipfwrdd + Copïwyd y cyfeiriadau i\'r clipfwrdd Copïwyd y cyfeiriadau i\'r clipfwrdd Copïwyd y cyfeiriadau i\'r clipfwrdd @@ -104,8 +106,10 @@ %.1f kB %d B + %d neges newydd %d neges newydd %d neges newydd + %d neges newydd %d neges newydd %d neges newydd @@ -558,8 +562,10 @@ Cadarnhau dileu Wyt ti wir eisiau dileu\'r neges hon? + Wyt ti wir eisiau dileu\'r neges hon? Wyt ti wir eisiau dileu\'r neges hon? Wyt ti wir eisiau dileu %1$d neges? + Wyt ti wir eisiau dileu %1$d neges? Wyt ti wir eisiau dileu %1$d neges? Wyt ti wir eisiau dileu %1$d neges? @@ -573,8 +579,10 @@ Nac ydw Cadarnhau symud i\'r ffolder sbam + Wyt ti wir eisiau symud y neges hon i\'r ffolder sbam? Wyt ti wir eisiau symud y neges hon i\'r ffolder sbam? Wyt ti wir eisiau symud %1$d neges i\'r ffolder sbam? + Wyt ti wir eisiau symud %1$d neges i\'r ffolder sbam? Wyt ti wir eisiau symud %1$d neges i\'r ffolder sbam? Wyt ti wir eisiau symud %1$d neges i\'r ffolder sbam? @@ -621,14 +629,18 @@ Terfyn chwiliad gweinydd Yn anfon gwiriad i\'r gweinydd + Yn nôl %d canlyniad Yn nôl %d canlyniad Yn nôl %d ganlyniad + Yn nôl %d ganlyniad Yn nôl %d canlyniad Yn nôl %d canlyniad + Yn nôl %1$d o %2$d canlyniad Yn nôl %1$d o %2$d canlyniad Yn nôl %1$d o %2$d ganlyniad + Yn nôl %1$d o %2$d ganlyniad Yn nôl %1$d o %2$d canlyniad Yn nôl %1$d o %2$d canlyniad diff --git a/legacy/ui/legacy/src/main/res/values-iw/strings.xml b/legacy/ui/legacy/src/main/res/values-iw/strings.xml index 6d9ffebe9b..e01f177b03 100644 --- a/legacy/ui/legacy/src/main/res/values-iw/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-iw/strings.xml @@ -67,7 +67,7 @@ כתובת הועתקה ללוח‭ כתובות הועתקו ללוח - כתובות הועתקו ללוח + כתובות הועתקו ללוח הנושא הועתק ללוח עבור לערכת נושא כהה @@ -95,7 +95,7 @@ %d הודעה חדשה %d הודעות חדשות - %d הודעות חדשות + %d הודעות חדשות + %1$d עוד עלינו%2$s השב @@ -591,12 +591,12 @@ מביא תוצאה %d מביא %d תוצאות - מביא %d תוצאות + מביא %d תוצאות מביא תוצאה %1$d מתוך %2$d מביא %1$d תוצאות מתוך%2$d - מביא %1$d תוצאות מתוך%2$d + מביא %1$d תוצאות מתוך%2$d משדרג מסדי נתונים… משדרג מסד נתונים של חשבון \"%s\" @@ -698,7 +698,7 @@ בטוח שברצונך למחוק הודעה זו? בטוח שברצונך למחוק %1$d הודעות? - בטוח שברצונך למחוק %1$d הודעות? + בטוח שברצונך למחוק %1$d הודעות? 10 25 diff --git a/legacy/ui/legacy/src/main/res/values-lt/strings.xml b/legacy/ui/legacy/src/main/res/values-lt/strings.xml index a7cbdabb9f..75d2224013 100644 --- a/legacy/ui/legacy/src/main/res/values-lt/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-lt/strings.xml @@ -75,7 +75,7 @@ Nukopijuotas adresas į iškarpinę Nukopijuoti adresai į iškarpinę - Nukopijuota adresų į iškarpinę + Nukopijuota adresų į iškarpinę Nukopijuotas temos tekstas į iškarpinę Perjungti į tamsią temą @@ -104,7 +104,7 @@ %d naujas laiškas %d nauji laiškai - %d naujų laiškų + %d naujų laiškų + %1$d daugiau paskyroje %2$s Atsakyti @@ -563,7 +563,7 @@ Ar tikrai norite ištrinti %1$d laišką? Ar tikrai norite ištrinti %1$d laiškus? - Ar tikrai norite ištrinti %1$d laiškus? + Ar tikrai norite ištrinti %1$d laiškus? Taip Ne @@ -577,7 +577,7 @@ Ar tikrai norite perkelti %1$d laišką į brukalo aplanką? Ar tikrai norite perkelti %1$d laiškus į brukalo aplanką? - Ar tikrai norite perkelti %1$d laiškų į brukalo aplanką? + Ar tikrai norite perkelti %1$d laiškų į brukalo aplanką? Taip Ne diff --git a/legacy/ui/legacy/src/main/res/values-sk/strings.xml b/legacy/ui/legacy/src/main/res/values-sk/strings.xml index da491aae6c..23250a71e1 100644 --- a/legacy/ui/legacy/src/main/res/values-sk/strings.xml +++ b/legacy/ui/legacy/src/main/res/values-sk/strings.xml @@ -66,7 +66,7 @@ Adresa bola skopírovaná do schránky Adresy boli skopírované do schránky - Adresy boli skopírované do schránky + Adresy boli skopírované do schránky Prepnúť na tmavú tému Prepnúť na svetlú tému @@ -832,14 +832,14 @@ Preberám %d výsledok Preberám %d výsledky - Preberám %d výsledkov + Preberám %d výsledkov Povoliť synchronizáciu Zobraziť skryté zložky Preberám %1$d z %2$d výsledkov Preberám %1$d z %2$d výsledkov - Preberám %1$d z %2$d výsledkov + Preberám %1$d z %2$d výsledkov Skryť nešifrované podpisy ale žiadna šifrovacia aplikácia nie je nastavená -- GitLab From bb9fa12b22f3dbd9743e170f4ae4ab57471a67e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Fri, 7 Mar 2025 15:02:59 +0100 Subject: [PATCH 054/262] Remove target excludes as they are not needed anymore --- .../kotlin/thunderbird.quality.spotless.gradle.kts | 9 --------- .../thunderbird.quality.spotless.root.gradle.kts | 12 ------------ 2 files changed, 21 deletions(-) diff --git a/build-plugin/src/main/kotlin/thunderbird.quality.spotless.gradle.kts b/build-plugin/src/main/kotlin/thunderbird.quality.spotless.gradle.kts index cb3c7dfd15..3a19089101 100644 --- a/build-plugin/src/main/kotlin/thunderbird.quality.spotless.gradle.kts +++ b/build-plugin/src/main/kotlin/thunderbird.quality.spotless.gradle.kts @@ -12,9 +12,6 @@ configure { "src/*/java/**/*.kt", "src/*/kotlin/**/*.kt", ) - targetExclude( - "build/", - ) ktlint(libs.versions.ktlint.get()) .setEditorConfigPath("${project.rootProject.projectDir}/.editorconfig") @@ -25,9 +22,6 @@ configure { target( "*.gradle.kts", ) - targetExclude( - "build/", - ) ktlint(libs.versions.ktlint.get()) .setEditorConfigPath("${project.rootProject.projectDir}/.editorconfig") @@ -43,9 +37,6 @@ configure { target( "*.md", ) - targetExclude( - "build/", - ) flexmark() } diff --git a/build-plugin/src/main/kotlin/thunderbird.quality.spotless.root.gradle.kts b/build-plugin/src/main/kotlin/thunderbird.quality.spotless.root.gradle.kts index 388805fd44..ac403fc481 100644 --- a/build-plugin/src/main/kotlin/thunderbird.quality.spotless.root.gradle.kts +++ b/build-plugin/src/main/kotlin/thunderbird.quality.spotless.root.gradle.kts @@ -10,11 +10,6 @@ configure { "build-plugin/src/*/kotlin/*.kt", "build-plugin/src/*/kotlin/**/*.kt", ) - targetExclude( - "build/", - "build-plugin/build/", - ) - ktlint(libs.versions.ktlint.get()) .setEditorConfigPath("${project.rootProject.projectDir}/.editorconfig") .editorConfigOverride(kotlinEditorConfigOverride) @@ -27,10 +22,6 @@ configure { "build-plugin/src/*/kotlin/*.kts", "build-plugin/src/*/kotlin/**/*.kts", ) - targetExclude( - "build/", - "build-plugin/build/", - ) ktlint(libs.versions.ktlint.get()) .setEditorConfigPath("${project.rootProject.projectDir}/.editorconfig") @@ -48,9 +39,6 @@ configure { "docs/*.md", "docs/**/*.md", ) - targetExclude( - "build/", - ) flexmark() } -- GitLab From 8af1d469365fb7a5b299f6e876270b9bd1f1151b Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Sat, 8 Mar 2025 00:42:06 +0600 Subject: [PATCH 055/262] Added Tests for UnifiedInboxConfigurator's edge cases --- .../fsck/k9/UnifiedInboxConfiguratorTest.kt | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 legacy/core/src/test/java/com/fsck/k9/UnifiedInboxConfiguratorTest.kt diff --git a/legacy/core/src/test/java/com/fsck/k9/UnifiedInboxConfiguratorTest.kt b/legacy/core/src/test/java/com/fsck/k9/UnifiedInboxConfiguratorTest.kt new file mode 100644 index 0000000000..064bbd13e0 --- /dev/null +++ b/legacy/core/src/test/java/com/fsck/k9/UnifiedInboxConfiguratorTest.kt @@ -0,0 +1,82 @@ +package com.fsck.k9 + +import app.k9mail.legacy.account.AccountManager +import com.fsck.k9.preferences.RealGeneralSettingsManager +import com.fsck.k9.preferences.UnifiedInboxConfigurator +import org.junit.After +import org.junit.Assert.assertTrue +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.koin.core.context.GlobalContext.startKoin +import org.koin.core.context.GlobalContext.stopKoin +import org.koin.dsl.module +import org.mockito.Mockito.mock +import org.mockito.Mockito.`when` +import org.mockito.junit.MockitoJUnitRunner + +@RunWith(MockitoJUnitRunner::class) +class UnifiedInboxConfiguratorTest { + + private lateinit var accountManager: AccountManager + private lateinit var configurator: UnifiedInboxConfigurator + + @Before + fun setUp() { + accountManager = mock(AccountManager::class.java) + configurator = UnifiedInboxConfigurator(accountManager) + + // Start Koin with a minimal module + startKoin { + modules( + module { + single { mock(RealGeneralSettingsManager::class.java) } + }, + ) + } + + // Reset K9 settings to avoid state leakage across tests + K9.isShowUnifiedInbox = false + } + + @After + fun tearDown() { + stopKoin() + } + + @Test + fun `configureUnifiedInbox should enable unified inbox when there are exactly two accounts`() { + // Given + `when`(accountManager.getAccounts()).thenReturn(listOf(mock(), mock())) + + // When + configurator.configureUnifiedInbox() + + // Then + assertTrue(K9.isShowUnifiedInbox) + } + + @Test + fun `configureUnifiedInbox should not enable unified inbox when there are less than two accounts`() { + // Given + `when`(accountManager.getAccounts()).thenReturn(listOf(mock())) + + // When + configurator.configureUnifiedInbox() + + // Then + assertTrue(!K9.isShowUnifiedInbox) + } + + @Test + fun `configureUnifiedInbox should not enable unified inbox when there are more than two accounts`() { + // Given + `when`(accountManager.getAccounts()).thenReturn(listOf(mock(), mock(), mock())) + + // When + configurator.configureUnifiedInbox() + + // Then + assertTrue(!K9.isShowUnifiedInbox) + } +} -- GitLab From d6e5628608127cd87bfe76cd124f45c533de61e7 Mon Sep 17 00:00:00 2001 From: Salkinnoma Date: Sun, 9 Mar 2025 00:27:12 +0100 Subject: [PATCH 056/262] Issue #8784 --- .../k9/ui/managefolders/ManageFoldersFragment.kt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/managefolders/ManageFoldersFragment.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/managefolders/ManageFoldersFragment.kt index c455b527fa..36359fd1e5 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/managefolders/ManageFoldersFragment.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/managefolders/ManageFoldersFragment.kt @@ -99,6 +99,11 @@ class ManageFoldersFragment : Fragment() { configureFolderSearchView(menu) } + override fun onPrepareOptionsMenu(menu: Menu) { + val folderMenuItem = menu.findItem(R.id.filter_folders) + folderMenuItem.isVisible = !folderMenuItem.isActionViewExpanded + } + private fun configureFolderSearchView(menu: Menu) { val folderMenuItem = menu.findItem(R.id.filter_folders) val folderSearchView = folderMenuItem.actionView as SearchView @@ -116,6 +121,16 @@ class ManageFoldersFragment : Fragment() { } }, ) + folderMenuItem?.setOnActionExpandListener(object : MenuItem.OnActionExpandListener { + override fun onMenuItemActionExpand(p0: MenuItem): Boolean { + return true + } + + override fun onMenuItemActionCollapse(p0: MenuItem): Boolean { + requireActivity().invalidateOptionsMenu() + return true + } + }) } override fun onOptionsItemSelected(item: MenuItem): Boolean { -- GitLab From 29026c72ab7c4e974c655f9f108643a7eb3d7138 Mon Sep 17 00:00:00 2001 From: Philipp Kewisch Date: Mon, 10 Mar 2025 12:37:40 +0100 Subject: [PATCH 057/262] Add a github action to set the milestone for merged PRs --- .github/workflows/pulls-merged.yml | 61 ++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 .github/workflows/pulls-merged.yml diff --git a/.github/workflows/pulls-merged.yml b/.github/workflows/pulls-merged.yml new file mode 100644 index 0000000000..97c079225b --- /dev/null +++ b/.github/workflows/pulls-merged.yml @@ -0,0 +1,61 @@ +--- +name: PR Merged Actions + +# Warning, this job is running on pull_request_target and therefore has access to issue content. +# Don't add any steps that act on external code. +on: + pull_request_target: + branches: [main] + types: [closed] + +permissions: + pull-requests: write + issues: write + +jobs: + pull-request-merged: + runs-on: ubuntu-latest + + steps: + - name: Get active milestone + id: milestone + env: + PR_NUMBER: ${{ github.event.pull_request.number }} + GH_TOKEN: ${{ github.token }} + run: | + # The furthest open milestone in the future should be current main + gh api repos/$GITHUB_REPOSITORY/milestones --jq ' + map(select(.state == "open" and .due_on != null)) + | sort_by(.due_on) | reverse + | .[0] | { number, title } + | to_entries + | map(.key + "=" + (.value|tostring)) | join("\n")' | tee -a $GITHUB_OUTPUT + + - name: Thank you + if: | + github.event.pull_request.merged == true && + github.event.pull_request.author_association != 'OWNER' && + github.event.pull_request.author_association != 'MEMBER' && + github.event.pull_request.author_association != 'COLLABORATOR' + env: + PR_NUMBER: ${{ github.event.pull_request.number }} + GH_TOKEN: ${{ github.token }} + MILESTONE: ${{ steps.milestone.outputs.title }} + MESSAGE: >- + Thanks for your contribution! Your pull request has been merged and will be part of + ${{ steps.milestone.outputs.title }}. We appreciate the time and effort you put into + improving Thunderbird. If you haven’t already, you’re welcome to join our Matrix chat + for contributors. It’s where we discuss development and help each other out. + https://matrix.to/#/#tb-android-dev:mozilla.org + + Hope to see you there! 🚀📱🐦 + run: | + gh pr comment $PR_NUMBER --repo $GITHUB_REPOSITORY --body "$MESSAGE" + + - name: Set active milestone on PR + env: + PR_NUMBER: ${{ github.event.pull_request.number }} + GH_TOKEN: ${{ github.token }} + MILESTONE: ${{ steps.milestone.outputs.number }} + run: | + gh api --method PATCH /repos/$GITHUB_REPOSITORY/issues/$PR_NUMBER -f milestone=$MILESTONE -- GitLab From 6296f67bdcfcc3742347b1d7fb4b6e2d1332e2d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Mon, 10 Mar 2025 14:20:08 +0100 Subject: [PATCH 058/262] Fix printVersionInfo task to work properly with Gradle configuration cache --- .github/workflows/shippable_builds.yml | 2 +- app-k9mail/build.gradle.kts | 46 +---- app-thunderbird/build.gradle.kts | 47 +---- .../thunderbird.app.version.info.gradle.kts | 163 ++++++++++++++++++ 4 files changed, 166 insertions(+), 92 deletions(-) create mode 100644 build-plugin/src/main/kotlin/thunderbird.app.version.info.gradle.kts diff --git a/.github/workflows/shippable_builds.yml b/.github/workflows/shippable_builds.yml index cae296c62b..f7a5cb4e13 100644 --- a/.github/workflows/shippable_builds.yml +++ b/.github/workflows/shippable_builds.yml @@ -246,7 +246,7 @@ jobs: RELEASE_TYPE=release fi - ./gradlew :app-${APP_NAME}:printVersionInfo -PbuildType=${RELEASE_TYPE} -PflavorName=${PACKAGE_FLAVOR} --configure-on-demand + ./gradlew :app-${APP_NAME}:printVersionInfo${PACKAGE_FLAVOR^}${RELEASE_TYPE^} -PoutputFile=${GITHUB_OUTPUT} - name: Determine new version code id: new_version_code diff --git a/app-k9mail/build.gradle.kts b/app-k9mail/build.gradle.kts index 15323aabea..8121695813 100644 --- a/app-k9mail/build.gradle.kts +++ b/app-k9mail/build.gradle.kts @@ -1,10 +1,7 @@ -import javax.xml.parsers.DocumentBuilderFactory -import javax.xml.xpath.XPathConstants -import javax.xml.xpath.XPathFactory - plugins { id(ThunderbirdPlugins.App.androidCompose) alias(libs.plugins.dependency.guard) + id("thunderbird.app.version.info") id("thunderbird.quality.badging") } @@ -173,44 +170,3 @@ dependencyGuard { configuration("fossReleaseRuntimeClasspath") configuration("fullReleaseRuntimeClasspath") } - -tasks.register("printVersionInfo") { - val targetBuildType = project.findProperty("buildType") ?: "debug" - - doLast { - android.applicationVariants.all { variant -> - if (variant.buildType.name == targetBuildType) { - val flavor = variant.mergedFlavor - - var buildTypeSource = android.sourceSets.getByName(targetBuildType).res.srcDirs.first() - var stringsXmlFile = File(buildTypeSource, "values/strings.xml") - if (!stringsXmlFile.exists()) { - buildTypeSource = android.sourceSets.getByName("main").res.srcDirs.first() - stringsXmlFile = File(buildTypeSource, "values/strings.xml") - } - - val xmlDocument = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(stringsXmlFile) - val xPath = XPathFactory.newInstance().newXPath() - val expression = "/resources/string[@name='app_name']/text()" - val appName = xPath.evaluate(expression, xmlDocument, XPathConstants.STRING) as String - - val output = """ - APPLICATION_ID=${variant.applicationId} - APPLICATION_LABEL=$appName - VERSION_CODE=${flavor.versionCode} - VERSION_NAME=${flavor.versionName} - VERSION_NAME_SUFFIX=${flavor.versionNameSuffix ?: ""} - FULL_VERSION_NAME=${flavor.versionName}${flavor.versionNameSuffix ?: ""} - """.trimIndent() - - println(output) - val githubOutput = System.getenv("GITHUB_OUTPUT") - if (githubOutput != null) { - val outputFile = File(githubOutput) - outputFile.writeText(output + "\n") - } - } - true - } - } -} diff --git a/app-thunderbird/build.gradle.kts b/app-thunderbird/build.gradle.kts index 8a6108c751..0f2000a207 100644 --- a/app-thunderbird/build.gradle.kts +++ b/app-thunderbird/build.gradle.kts @@ -1,10 +1,7 @@ -import javax.xml.parsers.DocumentBuilderFactory -import javax.xml.xpath.XPathConstants -import javax.xml.xpath.XPathFactory - plugins { id(ThunderbirdPlugins.App.androidCompose) alias(libs.plugins.dependency.guard) + id("thunderbird.app.version.info") id("thunderbird.quality.badging") } @@ -270,45 +267,3 @@ tasks.register("printConfigurations") { } } } - -tasks.register("printVersionInfo") { - val targetBuildType = project.findProperty("buildType") ?: "debug" - val targetFlavorName = project.findProperty("flavorName") ?: "full" - - doLast { - android.applicationVariants.all { variant -> - if (variant.buildType.name == targetBuildType && variant.flavorName == targetFlavorName) { - val flavor = variant.mergedFlavor - - var buildTypeSource = android.sourceSets.getByName(targetBuildType).res.srcDirs.first() - var stringsXmlFile = File(buildTypeSource, "values/strings.xml") - if (!stringsXmlFile.exists()) { - buildTypeSource = android.sourceSets.getByName("main").res.srcDirs.first() - stringsXmlFile = File(buildTypeSource, "values/strings.xml") - } - - val xmlDocument = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(stringsXmlFile) - val xPath = XPathFactory.newInstance().newXPath() - val expression = "/resources/string[@name='app_name']/text()" - val appName = xPath.evaluate(expression, xmlDocument, XPathConstants.STRING) as String - - val output = """ - APPLICATION_ID=${variant.applicationId} - APPLICATION_LABEL=$appName - VERSION_CODE=${flavor.versionCode} - VERSION_NAME=${flavor.versionName} - VERSION_NAME_SUFFIX=${variant.buildType.versionNameSuffix ?: ""} - FULL_VERSION_NAME=${flavor.versionName}${variant.buildType.versionNameSuffix ?: ""} - """.trimIndent() - - println(output) - val githubOutput = System.getenv("GITHUB_OUTPUT") - if (githubOutput != null) { - val outputFile = File(githubOutput) - outputFile.writeText(output + "\n") - } - } - true - } - } -} diff --git a/build-plugin/src/main/kotlin/thunderbird.app.version.info.gradle.kts b/build-plugin/src/main/kotlin/thunderbird.app.version.info.gradle.kts new file mode 100644 index 0000000000..084db7cf72 --- /dev/null +++ b/build-plugin/src/main/kotlin/thunderbird.app.version.info.gradle.kts @@ -0,0 +1,163 @@ +import javax.xml.parsers.DocumentBuilderFactory +import javax.xml.xpath.XPathConstants +import javax.xml.xpath.XPathFactory + +plugins { + id("com.android.application") + id("org.jetbrains.kotlin.android") +} + +androidComponents { + onVariants { variant -> + val variantName = variant.name.capitalized() + val printVersionInfoTaskName = "printVersionInfo$variantName" + tasks.register(printVersionInfoTaskName) { + applicationId.set(variant.applicationId) + applicationLabel.set(getApplicationLabel(variant)) + versionCode.set(getVersionCode(variant)) + versionName.set(getVersionName(variant)) + versionNameSuffix.set(getVersionNameSuffix(variant)) + + // Set outputFile only if provided via -PoutputFile=... + project.findProperty("outputFile")?.toString()?.let { path -> + outputFile.set(File(path)) + } + + // Set the `strings.xml` file for the variant to track changes + findStringsXmlForVariant(variant)?.let { stringsFile -> + stringsXmlFile.set(project.layout.projectDirectory.file(stringsFile.path)) + } + } + } +} + +private fun String.capitalized() = replaceFirstChar { + if (it.isLowerCase()) it.titlecase() else it.toString() +} + +abstract class PrintVersionInfo : DefaultTask() { + + @get:Input + abstract val applicationId: Property + + @get:Input + abstract val applicationLabel: Property + + @get:Input + abstract val versionCode: Property + + @get:Input + abstract val versionName: Property + + @get:Input + abstract val versionNameSuffix: Property + + @get:OutputFile + @get:Optional + abstract val outputFile: RegularFileProperty + + @get:InputFiles + @get:PathSensitive(PathSensitivity.RELATIVE) + abstract val stringsXmlFile: RegularFileProperty + + init { + outputs.upToDateWhen { false } // This forces Gradle to always re-run the task + } + + @TaskAction + fun printVersionInfo() { + val output = """ + APPLICATION_ID=${applicationId.get()} + APPLICATION_LABEL=${applicationLabel.get()} + VERSION_CODE=${versionCode.get()} + VERSION_NAME=${versionName.get()} + VERSION_NAME_SUFFIX=${versionNameSuffix.get()} + FULL_VERSION_NAME=${versionName.get()}${versionNameSuffix.get()} + """.trimIndent() + + println(output) + + if (outputFile.isPresent) { + outputFile.get().asFile.writeText(output + "\n") + } + } +} + +/** + * Finds the correct `strings.xml` for the given variant. + */ +private fun findStringsXmlForVariant(variant: com.android.build.api.variant.Variant): File? { + val targetBuildType = variant.buildType ?: return null + val sourceSets = android.sourceSets + + // Try to find the strings.xml for the specific build type + val buildTypeSource = sourceSets.findByName(targetBuildType)?.res?.srcDirs?.firstOrNull() + val stringsXmlFile = buildTypeSource?.resolve("values/strings.xml") + + if (stringsXmlFile?.exists() == true) { + return stringsXmlFile + } + + // Fallback to the `main` source set + val mainSourceSet = sourceSets.findByName("main")?.res?.srcDirs?.firstOrNull() + return mainSourceSet?.resolve("values/strings.xml")?.takeIf { it.exists() } +} + +/** + * Extracts `APPLICATION_LABEL` from `strings.xml` + */ +private fun getApplicationLabel(variant: com.android.build.api.variant.Variant): Provider { + return project.provider { + findStringsXmlForVariant(variant)?.let { + extractAppName(it) + } ?: "Unknown" + } +} + +/** + * Parses `strings.xml` to extract `...` + */ +private fun extractAppName(stringsXmlFile: File): String { + val xmlDocument = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(stringsXmlFile) + val xPath = XPathFactory.newInstance().newXPath() + val expression = "/resources/string[@name='app_name']/text()" + return xPath.evaluate(expression, xmlDocument, XPathConstants.STRING) as String +} + +/** + * Extracts the `VERSION_CODE` from product flavors + */ +private fun getVersionCode(variant: com.android.build.api.variant.Variant): Int { + val flavorNames = variant.productFlavors.map { it.second } + + val androidExtension = + project.extensions.findByType(com.android.build.gradle.internal.dsl.BaseAppModuleExtension::class.java) + val flavor = androidExtension?.productFlavors?.find { it.name in flavorNames } + + return flavor?.versionCode ?: androidExtension?.defaultConfig?.versionCode ?: 0 +} + +/** + * Extracts the `VERSION_NAME` from product flavors + */ +private fun getVersionName(variant: com.android.build.api.variant.Variant): String { + val flavorNames = variant.productFlavors.map { it.second } + + val androidExtension = project.extensions.findByType( + com.android.build.gradle.internal.dsl.BaseAppModuleExtension::class.java, + ) + val flavor = androidExtension?.productFlavors?.find { it.name in flavorNames } + + return flavor?.versionName ?: androidExtension?.defaultConfig?.versionName ?: "unknown" +} + +/** + * Extracts the `VERSION_NAME_SUFFIX` from build types + */ +private fun getVersionNameSuffix(variant: com.android.build.api.variant.Variant): String { + val buildTypeName = variant.buildType ?: return "" + val androidExtension = + project.extensions.findByType(com.android.build.gradle.internal.dsl.BaseAppModuleExtension::class.java) + val buildType = androidExtension?.buildTypes?.find { it.name == buildTypeName } + return buildType?.versionNameSuffix ?: "" +} -- GitLab From 2c5782a05f13d9dbc8508cb4fc8da740b20a4c2a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 15:32:45 +0000 Subject: [PATCH 059/262] Bump github/codeql-action from 3.28.10 to 3.28.11 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.10 to 3.28.11. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d...6bb031afdd8eb862ea3fc1848194185e076637e5) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/fluidscan.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 34a0e1cf32..bb15212968 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -32,13 +32,13 @@ jobs: with: cache-read-only: true - - uses: github/codeql-action/init@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 + - uses: github/codeql-action/init@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 with: languages: java - name: Autobuild - uses: github/codeql-action/autobuild@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 + uses: github/codeql-action/autobuild@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 + uses: github/codeql-action/analyze@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 diff --git a/.github/workflows/fluidscan.yml b/.github/workflows/fluidscan.yml index 84a2a6036a..a38d7d208b 100644 --- a/.github/workflows/fluidscan.yml +++ b/.github/workflows/fluidscan.yml @@ -35,6 +35,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 + uses: github/codeql-action/upload-sarif@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 with: sarif_file: fluidscan-results.sarif diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 7ddc58da73..690adbdfe2 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -62,6 +62,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 + uses: github/codeql-action/upload-sarif@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 with: sarif_file: results.sarif -- GitLab From 4d04173ac4127f1585a06011870b748bbad0dd4a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 15:32:47 +0000 Subject: [PATCH 060/262] Bump actions/create-github-app-token from 1.11.5 to 1.11.6 Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 1.11.5 to 1.11.6. - [Release notes](https://github.com/actions/create-github-app-token/releases) - [Commits](https://github.com/actions/create-github-app-token/compare/0d564482f06ca65fa9e77e2510873638c82206f2...21cfef2b496dd8ef5b904c159339626a10ad380e) --- updated-dependencies: - dependency-name: actions/create-github-app-token dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/shippable_builds.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/shippable_builds.yml b/.github/workflows/shippable_builds.yml index f7a5cb4e13..1d59e3a1c4 100644 --- a/.github/workflows/shippable_builds.yml +++ b/.github/workflows/shippable_builds.yml @@ -756,7 +756,7 @@ jobs: ls -l uploads/${PKG_FILE_PRETTY} - name: App Token Generate - uses: actions/create-github-app-token@0d564482f06ca65fa9e77e2510873638c82206f2 # v1.11.5 + uses: actions/create-github-app-token@21cfef2b496dd8ef5b904c159339626a10ad380e # v1.11.6 if: ${{ contains(matrix.releaseTarget, 'github') && vars.RELEASER_APP_CLIENT_ID }} id: app-token with: -- GitLab From e48d648e7c39349aa6b69d6e98f43149d09a5510 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Mon, 10 Mar 2025 11:54:03 +0100 Subject: [PATCH 061/262] Add SubtitleTopAppBar to design system --- .../catalog/ui/organism/items/AppBarItems.kt | 93 +++++++++++++----- .../organism/SubtitleTopAppBarPreview.kt | 67 +++++++++++++ .../organism/SubtitleTopAppBar.kt | 97 +++++++++++++++++++ .../designsystem/organism/TopAppBar.kt | 8 ++ 4 files changed, 239 insertions(+), 26 deletions(-) create mode 100644 core/ui/compose/designsystem/src/debug/kotlin/app/k9mail/core/ui/compose/designsystem/organism/SubtitleTopAppBarPreview.kt create mode 100644 core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/SubtitleTopAppBar.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt b/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt index aacf5ddd18..9e716328c8 100644 --- a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt +++ b/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt @@ -6,6 +6,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonIcon import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons +import app.k9mail.core.ui.compose.designsystem.organism.SubtitleTopAppBar +import app.k9mail.core.ui.compose.designsystem.organism.SubtitleTopAppBarWithBackButton +import app.k9mail.core.ui.compose.designsystem.organism.SubtitleTopAppBarWithMenuButton import app.k9mail.core.ui.compose.designsystem.organism.TopAppBar import app.k9mail.core.ui.compose.designsystem.organism.TopAppBarWithBackButton import app.k9mail.core.ui.compose.designsystem.organism.TopAppBarWithMenuButton @@ -15,13 +18,31 @@ import app.k9mail.ui.catalog.ui.common.list.sectionHeaderItem import app.k9mail.ui.catalog.ui.common.list.sectionSubtitleItem fun LazyGridScope.appBarItems() { + topAppBarItems() + subtitleTopAppBarItems() +} + +private fun LazyGridScope.topAppBarItems() { sectionHeaderItem(text = "TopAppBar") sectionSubtitleItem(text = "With menu icon") fullSpanItem { ItemOutlinedView { - TopAppBarItem( + TopAppBar( title = "Title", - actionIcon = Icons.Outlined.Info, + actions = { + ButtonIcon( + onClick = {}, + imageVector = Icons.Outlined.Info, + ) + ButtonIcon( + onClick = {}, + imageVector = Icons.Outlined.Check, + ) + ButtonIcon( + onClick = {}, + imageVector = Icons.Outlined.Visibility, + ) + }, ) } } @@ -45,29 +66,49 @@ fun LazyGridScope.appBarItems() { } } -@Composable -fun TopAppBarItem( - title: String, - actionIcon: ImageVector, - modifier: Modifier = Modifier, - navIcon: ImageVector? = null, -) { - TopAppBar( - title = title, - navigationIcon = { - navIcon?.let { - ButtonIcon( - onClick = {}, - imageVector = Icons.Outlined.Menu, - ) - } - }, - actions = { - ButtonIcon( - onClick = {}, - imageVector = actionIcon, +private fun LazyGridScope.subtitleTopAppBarItems() { + sectionHeaderItem(text = "SubtitleTopAppBar") + sectionSubtitleItem(text = "With menu icon") + fullSpanItem { + ItemOutlinedView { + SubtitleTopAppBar( + title = "Title", + subtitle = "Subtitle", + actions = { + ButtonIcon( + onClick = {}, + imageVector = Icons.Outlined.Info, + ) + ButtonIcon( + onClick = {}, + imageVector = Icons.Outlined.Check, + ) + ButtonIcon( + onClick = {}, + imageVector = Icons.Outlined.Visibility, + ) + }, + ) + } + } + sectionSubtitleItem(text = "With back menu icon") + fullSpanItem { + ItemOutlinedView { + SubtitleTopAppBarWithMenuButton( + title = "Title", + subtitle = "Subtitle", + onMenuClick = {}, + ) + } + } + sectionSubtitleItem(text = "With back icon") + fullSpanItem { + ItemOutlinedView { + SubtitleTopAppBarWithBackButton( + title = "Title", + subtitle = "Subtitle", + onBackClick = {}, ) - }, - modifier = modifier, - ) + } + } } diff --git a/core/ui/compose/designsystem/src/debug/kotlin/app/k9mail/core/ui/compose/designsystem/organism/SubtitleTopAppBarPreview.kt b/core/ui/compose/designsystem/src/debug/kotlin/app/k9mail/core/ui/compose/designsystem/organism/SubtitleTopAppBarPreview.kt new file mode 100644 index 0000000000..f7969ed0ae --- /dev/null +++ b/core/ui/compose/designsystem/src/debug/kotlin/app/k9mail/core/ui/compose/designsystem/organism/SubtitleTopAppBarPreview.kt @@ -0,0 +1,67 @@ +package app.k9mail.core.ui.compose.designsystem.organism + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import app.k9mail.core.ui.compose.designsystem.PreviewWithThemes +import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonIcon +import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons + +@Composable +@Preview(showBackground = true) +internal fun SubtitleTopAppBarPreview() { + PreviewWithThemes { + SubtitleTopAppBar( + title = "Title", + subtitle = "Subtitle", + ) + } +} + +@Composable +@Preview(showBackground = true) +internal fun SubtitleTopAppBarWithActionsPreview() { + PreviewWithThemes { + SubtitleTopAppBar( + title = "Title", + subtitle = "Subtitle", + actions = { + ButtonIcon( + onClick = {}, + imageVector = Icons.Outlined.Info, + ) + ButtonIcon( + onClick = {}, + imageVector = Icons.Outlined.Check, + ) + ButtonIcon( + onClick = {}, + imageVector = Icons.Outlined.Visibility, + ) + }, + ) + } +} + +@Composable +@Preview(showBackground = true) +internal fun SubtitleTopAppBarWithMenuButtonPreview() { + PreviewWithThemes { + SubtitleTopAppBarWithMenuButton( + title = "Title", + subtitle = "Subtitle", + onMenuClick = {}, + ) + } +} + +@Composable +@Preview(showBackground = true) +internal fun SubtitleTopAppBarWithBackButtonPreview() { + PreviewWithThemes { + SubtitleTopAppBarWithBackButton( + title = "Title", + subtitle = "Subtitle", + onBackClick = {}, + ) + } +} diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/SubtitleTopAppBar.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/SubtitleTopAppBar.kt new file mode 100644 index 0000000000..0c8b34cabb --- /dev/null +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/SubtitleTopAppBar.kt @@ -0,0 +1,97 @@ +package app.k9mail.core.ui.compose.designsystem.organism + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.RowScope +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.TopAppBarDefaults.topAppBarColors +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag +import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonIcon +import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons +import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyMedium +import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleMedium +import app.k9mail.core.ui.compose.theme2.MainTheme +import androidx.compose.material3.TopAppBar as Material3TopAppBar + +/** + * A top app bar with a title, subtitle, navigation icon, and actions. + * + * @param title The title of the top app bar. + * @param subtitle The subtitle of the top app bar (optional). + * @param navigationIcon The icon to use for the navigation icon. + * @param actions The actions to display in the top app bar. + * @param modifier The modifier to apply to the top app bar. + */ +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun SubtitleTopAppBar( + title: String, + subtitle: String, + modifier: Modifier = Modifier, + navigationIcon: @Composable (() -> Unit) = {}, + actions: @Composable RowScope.() -> Unit = {}, +) { + Material3TopAppBar( + title = { + Column { + TextTitleMedium(text = title) + TextBodyMedium(text = subtitle) + } + }, + modifier = modifier, + navigationIcon = navigationIcon, + actions = actions, + colors = topAppBarColors( + containerColor = MainTheme.colors.surfaceContainer, + ), + ) +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun SubtitleTopAppBarWithMenuButton( + title: String, + subtitle: String, + onMenuClick: () -> Unit, + modifier: Modifier = Modifier, + actions: @Composable RowScope.() -> Unit = {}, +) { + SubtitleTopAppBar( + title = title, + subtitle = subtitle, + modifier = modifier, + navigationIcon = { + ButtonIcon( + onClick = onMenuClick, + imageVector = Icons.Outlined.Menu, + modifier = Modifier.testTag("SubtitleTopAppBarMenuButton"), + ) + }, + actions = actions, + ) +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun SubtitleTopAppBarWithBackButton( + title: String, + subtitle: String, + onBackClick: () -> Unit, + modifier: Modifier = Modifier, + actions: @Composable RowScope.() -> Unit = {}, +) { + SubtitleTopAppBar( + title = title, + subtitle = subtitle, + modifier = modifier, + navigationIcon = { + ButtonIcon( + onClick = onBackClick, + imageVector = Icons.Outlined.ArrowBack, + modifier = Modifier.testTag("SubtitleTopAppBarBackButton"), + ) + }, + actions = actions, + ) +} diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/TopAppBar.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/TopAppBar.kt index 3d39d176ce..16d248dab6 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/TopAppBar.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/TopAppBar.kt @@ -12,6 +12,14 @@ import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleLarge import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.TopAppBar as Material3TopAppBar +/** + * A top app bar with a title, subtitle, navigation icon, and actions. + * + * @param title The title of the top app bar. + * @param navigationIcon The icon to use for the navigation icon. + * @param actions The actions to display in the top app bar. + * @param modifier The modifier to apply to the top app bar. + */ @OptIn(ExperimentalMaterial3Api::class) @Composable fun TopAppBar( -- GitLab From d2c9d7b68161c6859cb56b13b8ba4a3862db4ad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Mon, 10 Mar 2025 17:12:38 +0100 Subject: [PATCH 062/262] Change TextLabelLarge to clip text overflow --- .../designsystem/atom/text/TextLabelLarge.kt | 4 ++-- .../organism/drawer/NavigationDrawerItem.kt | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextLabelLarge.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextLabelLarge.kt index 6297717869..eedc6ae31f 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextLabelLarge.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextLabelLarge.kt @@ -15,7 +15,7 @@ fun TextLabelLarge( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, - overflow: TextOverflow = TextOverflow.Ellipsis, + overflow: TextOverflow = TextOverflow.Clip, maxLines: Int = Int.MAX_VALUE, ) { Material3Text( @@ -35,7 +35,7 @@ fun TextLabelLarge( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, - overflow: TextOverflow = TextOverflow.Ellipsis, + overflow: TextOverflow = TextOverflow.Clip, maxLines: Int = Int.MAX_VALUE, ) { Material3Text( diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/drawer/NavigationDrawerItem.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/drawer/NavigationDrawerItem.kt index 3d2b1788fc..5a65b17adc 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/drawer/NavigationDrawerItem.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/drawer/NavigationDrawerItem.kt @@ -5,6 +5,7 @@ import androidx.compose.material3.NavigationDrawerItemDefaults import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.style.TextOverflow import app.k9mail.core.ui.compose.designsystem.atom.text.TextLabelLarge import androidx.compose.material3.NavigationDrawerItem as Material3NavigationDrawerItem @@ -18,7 +19,13 @@ fun NavigationDrawerItem( badge: (@Composable () -> Unit)? = null, ) { Material3NavigationDrawerItem( - label = { TextLabelLarge(text = label, maxLines = 2) }, + label = { + TextLabelLarge( + text = label, + overflow = TextOverflow.Ellipsis, + maxLines = 2, + ) + }, selected = selected, onClick = onClick, modifier = Modifier @@ -39,7 +46,13 @@ fun NavigationDrawerItem( badge: (@Composable () -> Unit)? = null, ) { Material3NavigationDrawerItem( - label = { TextLabelLarge(text = label, maxLines = 2) }, + label = { + TextLabelLarge( + text = label, + overflow = TextOverflow.Ellipsis, + maxLines = 2, + ) + }, selected = selected, onClick = onClick, modifier = Modifier -- GitLab From 398ec005615d6830eb41c5e9a35bc9935964fb41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Mon, 10 Mar 2025 17:25:25 +0100 Subject: [PATCH 063/262] Move TextDisplayMediumAutoResize to own class --- .../atom/text/TextDisplayMedium.kt | 40 ---------------- .../atom/text/TextDisplayMediumAutoResize.kt | 48 +++++++++++++++++++ 2 files changed, 48 insertions(+), 40 deletions(-) create mode 100644 core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplayMediumAutoResize.kt diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplayMedium.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplayMedium.kt index c96cf1c960..68f6691b30 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplayMedium.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplayMedium.kt @@ -1,15 +1,9 @@ package app.k9mail.core.ui.compose.designsystem.atom.text import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.drawWithContent import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString -import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.style.TextAlign import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.Text as Material3Text @@ -45,37 +39,3 @@ fun TextDisplayMedium( style = MainTheme.typography.displayMedium, ) } - -@Composable -fun TextDisplayMediumAutoResize( - text: String, - modifier: Modifier = Modifier, - color: Color = Color.Unspecified, - textAlign: TextAlign? = null, -) { - val style: TextStyle = MainTheme.typography.displayMedium - var shouldDraw by remember { mutableStateOf(false) } - var resizedTextStyle by remember { mutableStateOf(style) } - - Material3Text( - text = text, - modifier = modifier.drawWithContent { - if (shouldDraw) { - drawContent() - } - }, - color = color, - textAlign = textAlign, - softWrap = false, - style = resizedTextStyle, - onTextLayout = { result -> - if (result.didOverflowWidth) { - resizedTextStyle = resizedTextStyle.copy( - fontSize = resizedTextStyle.fontSize * 0.95, - ) - } else { - shouldDraw = true - } - }, - ) -} diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplayMediumAutoResize.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplayMediumAutoResize.kt new file mode 100644 index 0000000000..7d53b5cae9 --- /dev/null +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplayMediumAutoResize.kt @@ -0,0 +1,48 @@ +package app.k9mail.core.ui.compose.designsystem.atom.text + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.drawWithContent +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.style.TextAlign +import app.k9mail.core.ui.compose.theme2.MainTheme +import androidx.compose.material3.Text as Material3Text + +@Composable +fun TextDisplayMediumAutoResize( + text: String, + modifier: Modifier = Modifier, + color: Color = Color.Unspecified, + textAlign: TextAlign? = null, +) { + val style: TextStyle = MainTheme.typography.displayMedium + var shouldDraw by remember { mutableStateOf(false) } + var resizedTextStyle by remember { mutableStateOf(style) } + + Material3Text( + text = text, + modifier = modifier.drawWithContent { + if (shouldDraw) { + drawContent() + } + }, + color = color, + textAlign = textAlign, + softWrap = false, + style = resizedTextStyle, + onTextLayout = { result -> + if (result.didOverflowWidth) { + resizedTextStyle = resizedTextStyle.copy( + fontSize = resizedTextStyle.fontSize * 0.95, + ) + } else { + shouldDraw = true + } + }, + ) +} -- GitLab From ed386f543523fa93eec96d4dd6031d75063a0f37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Mon, 10 Mar 2025 17:46:57 +0100 Subject: [PATCH 064/262] Remove TextBodyMedium with LineHeightStyle and replace with spacings --- .../designsystem/atom/text/TextBodyMedium.kt | 18 ----------- .../TbOnboardingMigrationScreen.kt | 31 +++++++------------ 2 files changed, 12 insertions(+), 37 deletions(-) diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextBodyMedium.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextBodyMedium.kt index 129b8fdaab..105c68bc0f 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextBodyMedium.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextBodyMedium.kt @@ -4,7 +4,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString -import androidx.compose.ui.text.style.LineHeightStyle import androidx.compose.ui.text.style.TextAlign import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.Text as Material3Text @@ -40,20 +39,3 @@ fun TextBodyMedium( style = MainTheme.typography.bodyMedium, ) } - -@Composable -fun TextBodyMedium( - text: String, - lineHeightStyle: LineHeightStyle, - modifier: Modifier = Modifier, - color: Color = Color.Unspecified, - textAlign: TextAlign? = null, -) { - Material3Text( - text = text, - modifier = modifier, - color = color, - textAlign = textAlign, - style = MainTheme.typography.bodyMedium.copy(lineHeightStyle = lineHeightStyle), - ) -} diff --git a/feature/onboarding/migration/thunderbird/src/main/kotlin/app/k9mail/feature/onboarding/migration/thunderbird/TbOnboardingMigrationScreen.kt b/feature/onboarding/migration/thunderbird/src/main/kotlin/app/k9mail/feature/onboarding/migration/thunderbird/TbOnboardingMigrationScreen.kt index acfc4414f8..26181ed2c1 100644 --- a/feature/onboarding/migration/thunderbird/src/main/kotlin/app/k9mail/feature/onboarding/migration/thunderbird/TbOnboardingMigrationScreen.kt +++ b/feature/onboarding/migration/thunderbird/src/main/kotlin/app/k9mail/feature/onboarding/migration/thunderbird/TbOnboardingMigrationScreen.kt @@ -6,6 +6,7 @@ import android.content.Intent import android.net.Uri import android.widget.Toast import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ColumnScope @@ -31,7 +32,6 @@ import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString -import androidx.compose.ui.text.style.LineHeightStyle import androidx.compose.ui.text.style.TextDecoration import app.k9mail.core.common.provider.BrandNameProvider import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonFilled @@ -116,7 +116,7 @@ private fun AlreadyUsingThunderbirdCard(onQrCodeScan: () -> Unit) { .padding(bottom = MainTheme.spacings.double), ) - TextBodyMediumFullLineHeight( + TextBodyMedium( text = stringResource(R.string.onboarding_migration_thunderbird_qr_code_import_instructions_intro), ) @@ -126,7 +126,10 @@ private fun AlreadyUsingThunderbirdCard(onQrCodeScan: () -> Unit) { stringResource(R.string.onboarding_migration_thunderbird_qr_code_import_instructions_bullet_2_v2), ), modifier = Modifier - .padding(bottom = MainTheme.spacings.double), + .padding( + top = MainTheme.spacings.half, + bottom = MainTheme.spacings.double, + ), ) ButtonFilled( @@ -245,29 +248,19 @@ private fun BulletList( items: ImmutableList, modifier: Modifier = Modifier, ) { - Column(modifier = modifier) { + Column( + modifier = modifier, + verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.half), + ) { for (item in items) { Row { - TextBodyMediumFullLineHeight(text = " \u2022 ") - TextBodyMediumFullLineHeight(text = item) + TextBodyMedium(text = " \u2022 ") + TextBodyMedium(text = item) } } } } -@Composable -private fun TextBodyMediumFullLineHeight(text: String) { - // Disable line height trimming so that the space between TextBodyMediumFullLineHeight instances following each - // other is the same as the space between lines of text inside a single TextBodyMedium. - TextBodyMedium( - text = text, - lineHeightStyle = LineHeightStyle( - alignment = LineHeightStyle.Alignment.Proportional, - trim = LineHeightStyle.Trim.None, - ), - ) -} - private fun Context.launchLearnHowToUpdateThunderbird() { try { val url = getString(R.string.onboarding_migration_thunderbird_update_thunderbird_url) -- GitLab From b68785fb801c08ae6363356a2f659ef4ffa11b09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Mon, 10 Mar 2025 17:48:28 +0100 Subject: [PATCH 065/262] Add overflow and maxLines to all text atoms --- .../ui/compose/designsystem/atom/text/TextBodyLarge.kt | 9 +++++++++ .../ui/compose/designsystem/atom/text/TextBodyMedium.kt | 9 +++++++++ .../ui/compose/designsystem/atom/text/TextBodySmall.kt | 9 +++++++++ .../compose/designsystem/atom/text/TextDisplayLarge.kt | 9 +++++++++ .../compose/designsystem/atom/text/TextDisplayMedium.kt | 9 +++++++++ .../compose/designsystem/atom/text/TextDisplaySmall.kt | 9 +++++++++ .../compose/designsystem/atom/text/TextHeadlineLarge.kt | 9 +++++++++ .../compose/designsystem/atom/text/TextHeadlineMedium.kt | 9 +++++++++ .../compose/designsystem/atom/text/TextHeadlineSmall.kt | 9 +++++++++ .../ui/compose/designsystem/atom/text/TextLabelLarge.kt | 4 ++-- .../ui/compose/designsystem/atom/text/TextLabelMedium.kt | 9 +++++++++ .../ui/compose/designsystem/atom/text/TextLabelSmall.kt | 9 +++++++++ .../ui/compose/designsystem/atom/text/TextTitleLarge.kt | 9 +++++++++ .../ui/compose/designsystem/atom/text/TextTitleMedium.kt | 9 +++++++++ .../ui/compose/designsystem/atom/text/TextTitleSmall.kt | 9 +++++++++ 15 files changed, 128 insertions(+), 2 deletions(-) diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextBodyLarge.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextBodyLarge.kt index ec3297ad87..1f60b2589f 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextBodyLarge.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextBodyLarge.kt @@ -5,6 +5,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.Text as Material3Text @@ -14,12 +15,16 @@ fun TextBodyLarge( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.bodyLarge, ) } @@ -30,12 +35,16 @@ fun TextBodyLarge( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.bodyLarge, ) } diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextBodyMedium.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextBodyMedium.kt index 105c68bc0f..e7bbc1b37d 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextBodyMedium.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextBodyMedium.kt @@ -5,6 +5,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.Text as Material3Text @@ -14,12 +15,16 @@ fun TextBodyMedium( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.bodyMedium, ) } @@ -30,12 +35,16 @@ fun TextBodyMedium( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.bodyMedium, ) } diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextBodySmall.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextBodySmall.kt index b66b92ef85..9dda4cb2bd 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextBodySmall.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextBodySmall.kt @@ -5,6 +5,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.Text as Material3Text @@ -14,12 +15,16 @@ fun TextBodySmall( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.bodySmall, ) } @@ -30,12 +35,16 @@ fun TextBodySmall( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.bodySmall, ) } diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplayLarge.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplayLarge.kt index 8a6db44d47..1f226bacc0 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplayLarge.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplayLarge.kt @@ -5,6 +5,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.Text as Material3Text @@ -14,12 +15,16 @@ fun TextDisplayLarge( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.displayLarge, ) } @@ -30,12 +35,16 @@ fun TextDisplayLarge( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.displayLarge, ) } diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplayMedium.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplayMedium.kt index 68f6691b30..9071111785 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplayMedium.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplayMedium.kt @@ -5,6 +5,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.Text as Material3Text @@ -14,12 +15,16 @@ fun TextDisplayMedium( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.displayMedium, ) } @@ -30,12 +35,16 @@ fun TextDisplayMedium( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.displayMedium, ) } diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplaySmall.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplaySmall.kt index a5ecf68849..5b7ab14a1e 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplaySmall.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextDisplaySmall.kt @@ -5,6 +5,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.Text as Material3Text @@ -14,12 +15,16 @@ fun TextDisplaySmall( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.displaySmall, ) } @@ -30,12 +35,16 @@ fun TextDisplaySmall( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.displaySmall, ) } diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextHeadlineLarge.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextHeadlineLarge.kt index c26ea1879d..72d8a37881 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextHeadlineLarge.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextHeadlineLarge.kt @@ -5,6 +5,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.Text as Material3Text @@ -14,12 +15,16 @@ fun TextHeadlineLarge( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.headlineLarge, ) } @@ -30,12 +35,16 @@ fun TextHeadlineLarge( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.headlineLarge, ) } diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextHeadlineMedium.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextHeadlineMedium.kt index 0f2292406f..fbf2a5f395 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextHeadlineMedium.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextHeadlineMedium.kt @@ -5,6 +5,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.Text as Material3Text @@ -14,12 +15,16 @@ fun TextHeadlineMedium( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.headlineMedium, ) } @@ -30,12 +35,16 @@ fun TextHeadlineMedium( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.headlineMedium, ) } diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextHeadlineSmall.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextHeadlineSmall.kt index 864b9b4e29..53c35c9f34 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextHeadlineSmall.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextHeadlineSmall.kt @@ -5,6 +5,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.Text as Material3Text @@ -14,12 +15,16 @@ fun TextHeadlineSmall( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.headlineSmall, ) } @@ -30,12 +35,16 @@ fun TextHeadlineSmall( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.headlineSmall, ) } diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextLabelLarge.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextLabelLarge.kt index eedc6ae31f..8b039b98ce 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextLabelLarge.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextLabelLarge.kt @@ -23,8 +23,8 @@ fun TextLabelLarge( modifier = modifier, color = color, textAlign = textAlign, - maxLines = maxLines, overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.labelLarge, ) } @@ -43,8 +43,8 @@ fun TextLabelLarge( modifier = modifier, color = color, textAlign = textAlign, - maxLines = maxLines, overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.labelLarge, ) } diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextLabelMedium.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextLabelMedium.kt index bebd6a10b3..4fbd545a9f 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextLabelMedium.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextLabelMedium.kt @@ -5,6 +5,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.Text as Material3Text @@ -14,12 +15,16 @@ fun TextLabelMedium( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.labelMedium, ) } @@ -30,12 +35,16 @@ fun TextLabelMedium( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.labelMedium, ) } diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextLabelSmall.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextLabelSmall.kt index fbee50718a..7476fee151 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextLabelSmall.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextLabelSmall.kt @@ -5,6 +5,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.Text as Material3Text @@ -14,12 +15,16 @@ fun TextLabelSmall( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.labelSmall, ) } @@ -30,12 +35,16 @@ fun TextLabelSmall( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.labelSmall, ) } diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextTitleLarge.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextTitleLarge.kt index 6dce1b4d03..7dd2d02885 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextTitleLarge.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextTitleLarge.kt @@ -5,6 +5,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.Text as Material3Text @@ -14,12 +15,16 @@ fun TextTitleLarge( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.titleLarge, ) } @@ -30,12 +35,16 @@ fun TextTitleLarge( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.titleLarge, ) } diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextTitleMedium.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextTitleMedium.kt index e332f709c4..3a0613bc63 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextTitleMedium.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextTitleMedium.kt @@ -5,6 +5,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.Text as Material3Text @@ -14,12 +15,16 @@ fun TextTitleMedium( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.titleMedium, ) } @@ -30,12 +35,16 @@ fun TextTitleMedium( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.titleMedium, ) } diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextTitleSmall.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextTitleSmall.kt index 0fb696abab..a522430515 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextTitleSmall.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/text/TextTitleSmall.kt @@ -5,6 +5,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow import app.k9mail.core.ui.compose.theme2.MainTheme import androidx.compose.material3.Text as Material3Text @@ -14,12 +15,16 @@ fun TextTitleSmall( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.titleSmall, ) } @@ -30,12 +35,16 @@ fun TextTitleSmall( modifier: Modifier = Modifier, color: Color = Color.Unspecified, textAlign: TextAlign? = null, + overflow: TextOverflow = TextOverflow.Clip, + maxLines: Int = Int.MAX_VALUE, ) { Material3Text( text = text, modifier = modifier, color = color, textAlign = textAlign, + overflow = overflow, + maxLines = maxLines, style = MainTheme.typography.titleSmall, ) } -- GitLab From abe2979e2fe8b91c2f253582afe7ca9dd71a8e15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Mon, 10 Mar 2025 17:49:22 +0100 Subject: [PATCH 066/262] Change SubtitleTopAppBar to use overflow and maxlines 1 --- .../catalog/ui/organism/items/AppBarItems.kt | 28 +++++++++++++++++-- .../organism/SubtitleTopAppBarPreview.kt | 12 ++++++++ .../organism/SubtitleTopAppBar.kt | 12 ++++++-- 3 files changed, 47 insertions(+), 5 deletions(-) diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt b/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt index 9e716328c8..8685839924 100644 --- a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt +++ b/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt @@ -1,9 +1,6 @@ package app.k9mail.ui.catalog.ui.organism.items import androidx.compose.foundation.lazy.grid.LazyGridScope -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.vector.ImageVector import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonIcon import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons import app.k9mail.core.ui.compose.designsystem.organism.SubtitleTopAppBar @@ -66,6 +63,7 @@ private fun LazyGridScope.topAppBarItems() { } } +@Suppress("LongMethod") private fun LazyGridScope.subtitleTopAppBarItems() { sectionHeaderItem(text = "SubtitleTopAppBar") sectionSubtitleItem(text = "With menu icon") @@ -91,6 +89,30 @@ private fun LazyGridScope.subtitleTopAppBarItems() { ) } } + sectionSubtitleItem(text = "With long subtitle") + fullSpanItem { + ItemOutlinedView { + SubtitleTopAppBar( + title = "Title", + subtitle = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + + "Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", + actions = { + ButtonIcon( + onClick = {}, + imageVector = Icons.Outlined.Info, + ) + ButtonIcon( + onClick = {}, + imageVector = Icons.Outlined.Check, + ) + ButtonIcon( + onClick = {}, + imageVector = Icons.Outlined.Visibility, + ) + }, + ) + } + } sectionSubtitleItem(text = "With back menu icon") fullSpanItem { ItemOutlinedView { diff --git a/core/ui/compose/designsystem/src/debug/kotlin/app/k9mail/core/ui/compose/designsystem/organism/SubtitleTopAppBarPreview.kt b/core/ui/compose/designsystem/src/debug/kotlin/app/k9mail/core/ui/compose/designsystem/organism/SubtitleTopAppBarPreview.kt index f7969ed0ae..7e785affdf 100644 --- a/core/ui/compose/designsystem/src/debug/kotlin/app/k9mail/core/ui/compose/designsystem/organism/SubtitleTopAppBarPreview.kt +++ b/core/ui/compose/designsystem/src/debug/kotlin/app/k9mail/core/ui/compose/designsystem/organism/SubtitleTopAppBarPreview.kt @@ -17,6 +17,18 @@ internal fun SubtitleTopAppBarPreview() { } } +@Composable +@Preview(showBackground = true) +internal fun SubtitleTopAppBarWithLongSubtitlePreview() { + PreviewWithThemes { + SubtitleTopAppBar( + title = "Title", + subtitle = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + + "Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", + ) + } +} + @Composable @Preview(showBackground = true) internal fun SubtitleTopAppBarWithActionsPreview() { diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/SubtitleTopAppBar.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/SubtitleTopAppBar.kt index 0c8b34cabb..a67ecce8d2 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/SubtitleTopAppBar.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/SubtitleTopAppBar.kt @@ -2,11 +2,13 @@ package app.k9mail.core.ui.compose.designsystem.organism import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.padding import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.TopAppBarDefaults.topAppBarColors import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag +import androidx.compose.ui.text.style.TextOverflow import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonIcon import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyMedium @@ -34,9 +36,15 @@ fun SubtitleTopAppBar( ) { Material3TopAppBar( title = { - Column { + Column( + modifier = Modifier.padding(end = MainTheme.spacings.double), + ) { TextTitleMedium(text = title) - TextBodyMedium(text = subtitle) + TextBodyMedium( + text = subtitle, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) } }, modifier = modifier, -- GitLab From 49a21d8c8599806d4b9bae32de885eb25464eeae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 4 Mar 2025 14:06:22 +0100 Subject: [PATCH 067/262] Change demo backend to KotlinX Serialization --- backend/demo/build.gradle.kts | 6 ++-- .../app/k9mail/backend/demo/DemoBackend.kt | 34 +++++++++---------- ...{MessageStoreInfo.kt => DemoFolderData.kt} | 8 ++--- .../app/k9mail/backend/demo/DemoFolders.kt | 3 ++ 4 files changed, 25 insertions(+), 26 deletions(-) rename backend/demo/src/main/java/app/k9mail/backend/demo/{MessageStoreInfo.kt => DemoFolderData.kt} (51%) create mode 100644 backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolders.kt diff --git a/backend/demo/build.gradle.kts b/backend/demo/build.gradle.kts index f969cb13fc..4bf0d3beb0 100644 --- a/backend/demo/build.gradle.kts +++ b/backend/demo/build.gradle.kts @@ -1,15 +1,13 @@ plugins { id(ThunderbirdPlugins.Library.jvm) - alias(libs.plugins.ksp) alias(libs.plugins.android.lint) + alias(libs.plugins.kotlin.serialization) } dependencies { api(projects.backend.api) - implementation(libs.kotlinx.coroutines.core) - implementation(libs.moshi) - ksp(libs.moshi.kotlin.codegen) + implementation(libs.kotlinx.serialization.json) testImplementation(projects.mail.testing) } diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt index ae148141fe..9608f1a7d5 100644 --- a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt @@ -16,17 +16,18 @@ import com.fsck.k9.mail.Message import com.fsck.k9.mail.MessageDownloadState import com.fsck.k9.mail.Part import com.fsck.k9.mail.internet.MimeMessage -import com.squareup.moshi.Moshi -import com.squareup.moshi.adapter import java.io.ByteArrayInputStream import java.io.ByteArrayOutputStream import java.io.InputStream import java.util.UUID -import okio.buffer -import okio.source +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.decodeFromStream -class DemoBackend(private val backendStorage: BackendStorage) : Backend { - private val messageStoreInfo by lazy { readMessageStoreInfo() } +class DemoBackend( + private val backendStorage: BackendStorage, +) : Backend { + private val demoFolders by lazy { readDemoFolders() } override val supportsFlags: Boolean = true override val supportsExpunge: Boolean = false @@ -42,10 +43,10 @@ class DemoBackend(private val backendStorage: BackendStorage) : Backend { val localFolderServerIds = backendStorage.getFolderServerIds().toSet() backendStorage.updateFolders { - val remoteFolderServerIds = messageStoreInfo.keys + val remoteFolderServerIds = demoFolders.keys val foldersServerIdsToCreate = remoteFolderServerIds - localFolderServerIds val foldersToCreate = foldersServerIdsToCreate.mapNotNull { folderServerId -> - messageStoreInfo[folderServerId]?.let { folderData -> + demoFolders[folderServerId]?.let { folderData -> FolderInfo(folderServerId, folderData.name, folderData.type) } } @@ -59,7 +60,7 @@ class DemoBackend(private val backendStorage: BackendStorage) : Backend { override fun sync(folderServerId: String, syncConfig: SyncConfig, listener: SyncListener) { listener.syncStarted(folderServerId) - val folderData = messageStoreInfo[folderServerId] + val folderData = demoFolders[folderServerId] if (folderData == null) { listener.syncFailed(folderServerId, "Folder $folderServerId doesn't exist", null) return @@ -158,7 +159,7 @@ class DemoBackend(private val backendStorage: BackendStorage) : Backend { } override fun sendMessage(message: Message) { - val inboxServerId = messageStoreInfo.filterValues { it.type == FolderType.INBOX }.keys.first() + val inboxServerId = demoFolders.filterValues { it.type == FolderType.INBOX }.keys.first() val backendFolder = backendStorage.getFolder(inboxServerId) val newMessage = message.copy(uid = createNewServerId()) @@ -180,13 +181,12 @@ class DemoBackend(private val backendStorage: BackendStorage) : Backend { } } - @OptIn(ExperimentalStdlibApi::class) - private fun readMessageStoreInfo(): MessageStoreInfo { - return getResourceAsStream("/contents.json").source().buffer().use { bufferedSource -> - val moshi = Moshi.Builder().build() - val adapter = moshi.adapter() - adapter.fromJson(bufferedSource) - } ?: error("Couldn't read message store info") + + @OptIn(ExperimentalSerializationApi::class) + private fun readDemoFolders(): DemoFolders { + return getResourceAsStream("/contents.json").use { inputStream -> + Json.decodeFromStream(inputStream) + } } private fun loadMessage(folderServerId: String, messageServerId: String): Message { diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/MessageStoreInfo.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolderData.kt similarity index 51% rename from backend/demo/src/main/java/app/k9mail/backend/demo/MessageStoreInfo.kt rename to backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolderData.kt index 0b77229951..5a24837984 100644 --- a/backend/demo/src/main/java/app/k9mail/backend/demo/MessageStoreInfo.kt +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolderData.kt @@ -1,12 +1,10 @@ package app.k9mail.backend.demo import com.fsck.k9.mail.FolderType -import com.squareup.moshi.JsonClass +import kotlinx.serialization.Serializable -typealias MessageStoreInfo = Map - -@JsonClass(generateAdapter = true) -data class FolderData( +@Serializable +internal data class DemoFolderData( val name: String, val type: FolderType, val messageServerIds: List, diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolders.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolders.kt new file mode 100644 index 0000000000..75df97a890 --- /dev/null +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolders.kt @@ -0,0 +1,3 @@ +package app.k9mail.backend.demo + +internal typealias DemoFolders = Map -- GitLab From 228e7e7dbd19857a2888440c9cc148b45e15343a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 4 Mar 2025 16:15:02 +0100 Subject: [PATCH 068/262] Move demo data loading to DemoDataLoader --- .../app/k9mail/backend/demo/DemoBackend.kt | 29 ++---------------- .../app/k9mail/backend/demo/DemoDataLoader.kt | 30 +++++++++++++++++++ 2 files changed, 33 insertions(+), 26 deletions(-) create mode 100644 backend/demo/src/main/java/app/k9mail/backend/demo/DemoDataLoader.kt diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt index 9608f1a7d5..38fdc9120e 100644 --- a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt @@ -18,16 +18,13 @@ import com.fsck.k9.mail.Part import com.fsck.k9.mail.internet.MimeMessage import java.io.ByteArrayInputStream import java.io.ByteArrayOutputStream -import java.io.InputStream import java.util.UUID -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.decodeFromStream class DemoBackend( private val backendStorage: BackendStorage, ) : Backend { - private val demoFolders by lazy { readDemoFolders() } + private val dataReader: DemoDataLoader = DemoDataLoader() + private val demoFolders by lazy { dataReader.loadFolders() } override val supportsFlags: Boolean = true override val supportsExpunge: Boolean = false @@ -75,7 +72,7 @@ class DemoBackend( } for (messageServerId in folderData.messageServerIds) { - val message = loadMessage(folderServerId, messageServerId) + val message = dataReader.loadMessage(folderServerId, messageServerId) backendFolder.saveMessage(message, MessageDownloadState.FULL) listener.syncNewMessage(folderServerId, messageServerId, isOldMessage = false) } @@ -180,24 +177,4 @@ class DemoBackend( this.uid = uid } } - - - @OptIn(ExperimentalSerializationApi::class) - private fun readDemoFolders(): DemoFolders { - return getResourceAsStream("/contents.json").use { inputStream -> - Json.decodeFromStream(inputStream) - } - } - - private fun loadMessage(folderServerId: String, messageServerId: String): Message { - return getResourceAsStream("/$folderServerId/$messageServerId.eml").use { inputStream -> - MimeMessage.parseMimeMessage(inputStream, false).apply { - uid = messageServerId - } - } - } - - private fun getResourceAsStream(name: String): InputStream { - return DemoBackend::class.java.getResourceAsStream(name) ?: error("Resource '$name' not found") - } } diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoDataLoader.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoDataLoader.kt new file mode 100644 index 0000000000..32950fa41d --- /dev/null +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoDataLoader.kt @@ -0,0 +1,30 @@ +package app.k9mail.backend.demo + +import com.fsck.k9.mail.Message +import com.fsck.k9.mail.internet.MimeMessage +import java.io.InputStream +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.decodeFromStream + +internal class DemoDataLoader { + + @OptIn(ExperimentalSerializationApi::class) + fun loadFolders(): DemoFolders { + return getResourceAsStream("/contents.json").use { inputStream -> + Json.decodeFromStream(inputStream) + } + } + + fun loadMessage(folderServerId: String, messageServerId: String): Message { + return getResourceAsStream("/$folderServerId/$messageServerId.eml").use { inputStream -> + MimeMessage.parseMimeMessage(inputStream, false).apply { + uid = messageServerId + } + } + } + + private fun getResourceAsStream(name: String): InputStream { + return this.javaClass.getResourceAsStream(name) ?: error("Resource '$name' not found") + } +} -- GitLab From 97643bf1a46d8b844043a63348225cb62dbb393d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 4 Mar 2025 16:40:13 +0100 Subject: [PATCH 069/262] Add DemoStore to manage demo data --- .../app/k9mail/backend/demo/DemoBackend.kt | 9 +++---- .../demo/{DemoFolderData.kt => DemoFolder.kt} | 2 +- .../app/k9mail/backend/demo/DemoFolders.kt | 2 +- .../java/app/k9mail/backend/demo/DemoStore.kt | 26 +++++++++++++++++++ 4 files changed, 32 insertions(+), 7 deletions(-) rename backend/demo/src/main/java/app/k9mail/backend/demo/{DemoFolderData.kt => DemoFolder.kt} (85%) create mode 100644 backend/demo/src/main/java/app/k9mail/backend/demo/DemoStore.kt diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt index 38fdc9120e..8d7538c013 100644 --- a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt @@ -23,8 +23,7 @@ import java.util.UUID class DemoBackend( private val backendStorage: BackendStorage, ) : Backend { - private val dataReader: DemoDataLoader = DemoDataLoader() - private val demoFolders by lazy { dataReader.loadFolders() } + private val demoStore by lazy { DemoStore() } override val supportsFlags: Boolean = true override val supportsExpunge: Boolean = false @@ -40,10 +39,10 @@ class DemoBackend( val localFolderServerIds = backendStorage.getFolderServerIds().toSet() backendStorage.updateFolders { - val remoteFolderServerIds = demoFolders.keys + val remoteFolderServerIds = demoStore.getFolderIds() val foldersServerIdsToCreate = remoteFolderServerIds - localFolderServerIds val foldersToCreate = foldersServerIdsToCreate.mapNotNull { folderServerId -> - demoFolders[folderServerId]?.let { folderData -> + demoStore.getFolder(folderServerId)?.let { folderData -> FolderInfo(folderServerId, folderData.name, folderData.type) } } @@ -156,7 +155,7 @@ class DemoBackend( } override fun sendMessage(message: Message) { - val inboxServerId = demoFolders.filterValues { it.type == FolderType.INBOX }.keys.first() + val inboxServerId = demoStore.getInboxFolderId() val backendFolder = backendStorage.getFolder(inboxServerId) val newMessage = message.copy(uid = createNewServerId()) diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolderData.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolder.kt similarity index 85% rename from backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolderData.kt rename to backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolder.kt index 5a24837984..4a6ed2bcd0 100644 --- a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolderData.kt +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolder.kt @@ -4,7 +4,7 @@ import com.fsck.k9.mail.FolderType import kotlinx.serialization.Serializable @Serializable -internal data class DemoFolderData( +internal data class DemoFolder( val name: String, val type: FolderType, val messageServerIds: List, diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolders.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolders.kt index 75df97a890..a18a9408d3 100644 --- a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolders.kt +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolders.kt @@ -1,3 +1,3 @@ package app.k9mail.backend.demo -internal typealias DemoFolders = Map +internal typealias DemoFolders = Map diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoStore.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoStore.kt new file mode 100644 index 0000000000..41ee72cfa5 --- /dev/null +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoStore.kt @@ -0,0 +1,26 @@ +package app.k9mail.backend.demo + +import com.fsck.k9.mail.FolderType +import com.fsck.k9.mail.Message + +internal class DemoStore( + private val demoDataLoader: DemoDataLoader = DemoDataLoader(), +) { + private val demoFolders: DemoFolders by lazy { demoDataLoader.loadFolders() } + + fun getFolder(folderServerId: String): DemoFolder? { + return demoFolders[folderServerId] + } + + fun getFolderIds(): Set { + return demoFolders.keys + } + + fun getInboxFolderId(): String { + return demoFolders.filterValues { it.type == FolderType.INBOX }.keys.first() + } + + fun getMessage(folderServerId: String, messageServerId: String): Message { + return demoDataLoader.loadMessage(folderServerId, messageServerId) + } +} -- GitLab From 64c9d8efaae1b5d0653648aabf84681028c9b8d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 4 Mar 2025 16:40:39 +0100 Subject: [PATCH 070/262] Extract sync command into CommandSync --- .../app/k9mail/backend/demo/CommandSync.kt | 40 +++++++++++++++++++ .../app/k9mail/backend/demo/DemoBackend.kt | 30 ++------------ 2 files changed, 43 insertions(+), 27 deletions(-) create mode 100644 backend/demo/src/main/java/app/k9mail/backend/demo/CommandSync.kt diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/CommandSync.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/CommandSync.kt new file mode 100644 index 0000000000..78d97347ab --- /dev/null +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/CommandSync.kt @@ -0,0 +1,40 @@ +package app.k9mail.backend.demo + +import com.fsck.k9.backend.api.BackendFolder.MoreMessages +import com.fsck.k9.backend.api.BackendStorage +import com.fsck.k9.backend.api.SyncListener +import com.fsck.k9.mail.MessageDownloadState + +internal class CommandSync( + private val backendStorage: BackendStorage, + private val demoStore: DemoStore, +) { + + fun sync(folderServerId: String, listener: SyncListener) { + listener.syncStarted(folderServerId) + + val folder = demoStore.getFolder(folderServerId) + if (folder == null) { + listener.syncFailed(folderServerId, "Folder $folderServerId doesn't exist", null) + return + } + + val backendFolder = backendStorage.getFolder(folderServerId) + + val localMessageServerIds = backendFolder.getMessageServerIds() + if (localMessageServerIds.isNotEmpty()) { + listener.syncFinished(folderServerId) + return + } + + for (messageServerId in folder.messageServerIds) { + val message = demoStore.getMessage(folderServerId, messageServerId) + backendFolder.saveMessage(message, MessageDownloadState.FULL) + listener.syncNewMessage(folderServerId, messageServerId, isOldMessage = false) + } + + backendFolder.setMoreMessages(MoreMessages.FALSE) + + listener.syncFinished(folderServerId) + } +} diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt index 8d7538c013..24525c7f88 100644 --- a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt @@ -1,7 +1,6 @@ package app.k9mail.backend.demo import com.fsck.k9.backend.api.Backend -import com.fsck.k9.backend.api.BackendFolder.MoreMessages import com.fsck.k9.backend.api.BackendPusher import com.fsck.k9.backend.api.BackendPusherCallback import com.fsck.k9.backend.api.BackendStorage @@ -11,7 +10,6 @@ import com.fsck.k9.backend.api.SyncListener import com.fsck.k9.backend.api.updateFolders import com.fsck.k9.mail.BodyFactory import com.fsck.k9.mail.Flag -import com.fsck.k9.mail.FolderType import com.fsck.k9.mail.Message import com.fsck.k9.mail.MessageDownloadState import com.fsck.k9.mail.Part @@ -25,6 +23,8 @@ class DemoBackend( ) : Backend { private val demoStore by lazy { DemoStore() } + private val commandSync by lazy { CommandSync(backendStorage, demoStore) } + override val supportsFlags: Boolean = true override val supportsExpunge: Boolean = false override val supportsMove: Boolean = true @@ -54,31 +54,7 @@ class DemoBackend( } override fun sync(folderServerId: String, syncConfig: SyncConfig, listener: SyncListener) { - listener.syncStarted(folderServerId) - - val folderData = demoFolders[folderServerId] - if (folderData == null) { - listener.syncFailed(folderServerId, "Folder $folderServerId doesn't exist", null) - return - } - - val backendFolder = backendStorage.getFolder(folderServerId) - - val localMessageServerIds = backendFolder.getMessageServerIds() - if (localMessageServerIds.isNotEmpty()) { - listener.syncFinished(folderServerId) - return - } - - for (messageServerId in folderData.messageServerIds) { - val message = dataReader.loadMessage(folderServerId, messageServerId) - backendFolder.saveMessage(message, MessageDownloadState.FULL) - listener.syncNewMessage(folderServerId, messageServerId, isOldMessage = false) - } - - backendFolder.setMoreMessages(MoreMessages.FALSE) - - listener.syncFinished(folderServerId) + commandSync.sync(folderServerId, listener) } override fun downloadMessage(syncConfig: SyncConfig, folderServerId: String, messageServerId: String) { -- GitLab From 87b538681878f78e73297fb3885555931995ee29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 4 Mar 2025 16:43:34 +0100 Subject: [PATCH 071/262] Extract refreshFolderList command to CommandRefreshFolderList --- .../backend/demo/CommandRefreshFolderList.kt | 29 +++++++++++++++++++ .../app/k9mail/backend/demo/DemoBackend.kt | 19 ++---------- 2 files changed, 31 insertions(+), 17 deletions(-) create mode 100644 backend/demo/src/main/java/app/k9mail/backend/demo/CommandRefreshFolderList.kt diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/CommandRefreshFolderList.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/CommandRefreshFolderList.kt new file mode 100644 index 0000000000..62baee4e01 --- /dev/null +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/CommandRefreshFolderList.kt @@ -0,0 +1,29 @@ +package app.k9mail.backend.demo + +import com.fsck.k9.backend.api.BackendStorage +import com.fsck.k9.backend.api.FolderInfo +import com.fsck.k9.backend.api.updateFolders + +internal class CommandRefreshFolderList( + private val backendStorage: BackendStorage, + private val demoStore: DemoStore, +) { + + fun refreshFolderList() { + val localFolderServerIds = backendStorage.getFolderServerIds().toSet() + + backendStorage.updateFolders { + val remoteFolderServerIds = demoStore.getFolderIds() + val foldersServerIdsToCreate = remoteFolderServerIds - localFolderServerIds + val foldersToCreate = foldersServerIdsToCreate.mapNotNull { folderServerId -> + demoStore.getFolder(folderServerId)?.let { folderData -> + FolderInfo(folderServerId, folderData.name, folderData.type) + } + } + createFolders(foldersToCreate) + + val folderServerIdsToRemove = (localFolderServerIds - remoteFolderServerIds).toList() + deleteFolders(folderServerIdsToRemove) + } + } +} diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt index 24525c7f88..aacaaeb9a4 100644 --- a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt @@ -4,10 +4,8 @@ import com.fsck.k9.backend.api.Backend import com.fsck.k9.backend.api.BackendPusher import com.fsck.k9.backend.api.BackendPusherCallback import com.fsck.k9.backend.api.BackendStorage -import com.fsck.k9.backend.api.FolderInfo import com.fsck.k9.backend.api.SyncConfig import com.fsck.k9.backend.api.SyncListener -import com.fsck.k9.backend.api.updateFolders import com.fsck.k9.mail.BodyFactory import com.fsck.k9.mail.Flag import com.fsck.k9.mail.Message @@ -24,6 +22,7 @@ class DemoBackend( private val demoStore by lazy { DemoStore() } private val commandSync by lazy { CommandSync(backendStorage, demoStore) } + private val commandRefreshFolderList by lazy { CommandRefreshFolderList(backendStorage, demoStore) } override val supportsFlags: Boolean = true override val supportsExpunge: Boolean = false @@ -36,21 +35,7 @@ class DemoBackend( override val isPushCapable: Boolean = false override fun refreshFolderList() { - val localFolderServerIds = backendStorage.getFolderServerIds().toSet() - - backendStorage.updateFolders { - val remoteFolderServerIds = demoStore.getFolderIds() - val foldersServerIdsToCreate = remoteFolderServerIds - localFolderServerIds - val foldersToCreate = foldersServerIdsToCreate.mapNotNull { folderServerId -> - demoStore.getFolder(folderServerId)?.let { folderData -> - FolderInfo(folderServerId, folderData.name, folderData.type) - } - } - createFolders(foldersToCreate) - - val folderServerIdsToRemove = (localFolderServerIds - remoteFolderServerIds).toList() - deleteFolders(folderServerIdsToRemove) - } + commandRefreshFolderList.refreshFolderList() } override fun sync(folderServerId: String, syncConfig: SyncConfig, listener: SyncListener) { -- GitLab From 32905355d599e82139cd33b185edbe4d79183dca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 4 Mar 2025 16:55:08 +0100 Subject: [PATCH 072/262] Extract send message command to CommandSendMessage --- .../k9mail/backend/demo/CommandSendMessage.kt | 32 +++++++++++++++++++ .../app/k9mail/backend/demo/DemoBackend.kt | 24 ++------------ .../app/k9mail/backend/demo/DemoHelper.kt | 7 ++++ 3 files changed, 42 insertions(+), 21 deletions(-) create mode 100644 backend/demo/src/main/java/app/k9mail/backend/demo/CommandSendMessage.kt create mode 100644 backend/demo/src/main/java/app/k9mail/backend/demo/DemoHelper.kt diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/CommandSendMessage.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/CommandSendMessage.kt new file mode 100644 index 0000000000..d678eb544d --- /dev/null +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/CommandSendMessage.kt @@ -0,0 +1,32 @@ +package app.k9mail.backend.demo + +import app.k9mail.backend.demo.DemoHelper.createNewServerId +import com.fsck.k9.backend.api.BackendStorage +import com.fsck.k9.mail.Message +import com.fsck.k9.mail.MessageDownloadState +import com.fsck.k9.mail.internet.MimeMessage +import java.io.ByteArrayInputStream +import java.io.ByteArrayOutputStream + +internal class CommandSendMessage( + private val backendStorage: BackendStorage, + private val demoStore: DemoStore, +) { + + fun sendMessage(message: Message) { + val inboxServerId = demoStore.getInboxFolderId() + val backendFolder = backendStorage.getFolder(inboxServerId) + + val newMessage = message.copy(uid = createNewServerId()) + backendFolder.saveMessage(newMessage, MessageDownloadState.FULL) + } + + private fun Message.copy(uid: String): MimeMessage { + val outputStream = ByteArrayOutputStream() + writeTo(outputStream) + val inputStream = ByteArrayInputStream(outputStream.toByteArray()) + return MimeMessage.parseMimeMessage(inputStream, false).apply { + this.uid = uid + } + } +} diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt index aacaaeb9a4..5e079695d5 100644 --- a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt @@ -1,5 +1,6 @@ package app.k9mail.backend.demo +import app.k9mail.backend.demo.DemoHelper.createNewServerId import com.fsck.k9.backend.api.Backend import com.fsck.k9.backend.api.BackendPusher import com.fsck.k9.backend.api.BackendPusherCallback @@ -9,12 +10,7 @@ import com.fsck.k9.backend.api.SyncListener import com.fsck.k9.mail.BodyFactory import com.fsck.k9.mail.Flag import com.fsck.k9.mail.Message -import com.fsck.k9.mail.MessageDownloadState import com.fsck.k9.mail.Part -import com.fsck.k9.mail.internet.MimeMessage -import java.io.ByteArrayInputStream -import java.io.ByteArrayOutputStream -import java.util.UUID class DemoBackend( private val backendStorage: BackendStorage, @@ -23,6 +19,7 @@ class DemoBackend( private val commandSync by lazy { CommandSync(backendStorage, demoStore) } private val commandRefreshFolderList by lazy { CommandRefreshFolderList(backendStorage, demoStore) } + private val commandSendMessage by lazy { CommandSendMessage(backendStorage, demoStore) } override val supportsFlags: Boolean = true override val supportsExpunge: Boolean = false @@ -116,25 +113,10 @@ class DemoBackend( } override fun sendMessage(message: Message) { - val inboxServerId = demoStore.getInboxFolderId() - val backendFolder = backendStorage.getFolder(inboxServerId) - - val newMessage = message.copy(uid = createNewServerId()) - backendFolder.saveMessage(newMessage, MessageDownloadState.FULL) + commandSendMessage.sendMessage(message) } override fun createPusher(callback: BackendPusherCallback): BackendPusher { throw UnsupportedOperationException("not implemented") } - - private fun createNewServerId() = UUID.randomUUID().toString() - - private fun Message.copy(uid: String): MimeMessage { - val outputStream = ByteArrayOutputStream() - writeTo(outputStream) - val inputStream = ByteArrayInputStream(outputStream.toByteArray()) - return MimeMessage.parseMimeMessage(inputStream, false).apply { - this.uid = uid - } - } } diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoHelper.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoHelper.kt new file mode 100644 index 0000000000..98bee237e3 --- /dev/null +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoHelper.kt @@ -0,0 +1,7 @@ +package app.k9mail.backend.demo + +import java.util.UUID + +internal object DemoHelper { + fun createNewServerId() = UUID.randomUUID().toString() +} -- GitLab From c14d32d38f60aaef0af8993e41f408985893bd2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 4 Mar 2025 17:38:33 +0100 Subject: [PATCH 073/262] Add nested folder demo data --- .../app/k9mail/backend/demo/DemoFolder.kt | 1 + .../java/app/k9mail/backend/demo/DemoStore.kt | 30 ++++++++++++++++++- backend/demo/src/main/resources/contents.json | 27 +++++++++++++++++ .../src/main/resources/nested/nested_1.eml | 20 +++++++++++++ .../nested_level_1/nested_level_1_1.eml | 20 +++++++++++++ .../nested_level_1/nested_level_1_2.eml | 20 +++++++++++++ .../nested_level_2/nested_level_2_1.eml | 20 +++++++++++++ .../nested_level_2/nested_level_2_2.eml | 20 +++++++++++++ 8 files changed, 157 insertions(+), 1 deletion(-) create mode 100644 backend/demo/src/main/resources/nested/nested_1.eml create mode 100644 backend/demo/src/main/resources/nested/nested_level_1/nested_level_1_1.eml create mode 100644 backend/demo/src/main/resources/nested/nested_level_1/nested_level_1_2.eml create mode 100644 backend/demo/src/main/resources/nested/nested_level_1/nested_level_2/nested_level_2_1.eml create mode 100644 backend/demo/src/main/resources/nested/nested_level_1/nested_level_2/nested_level_2_2.eml diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolder.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolder.kt index 4a6ed2bcd0..6fb1d41175 100644 --- a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolder.kt +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolder.kt @@ -8,4 +8,5 @@ internal data class DemoFolder( val name: String, val type: FolderType, val messageServerIds: List, + val subFolders: DemoFolders? = null, ) diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoStore.kt b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoStore.kt index 41ee72cfa5..07bca3ffd1 100644 --- a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoStore.kt +++ b/backend/demo/src/main/java/app/k9mail/backend/demo/DemoStore.kt @@ -6,7 +6,7 @@ import com.fsck.k9.mail.Message internal class DemoStore( private val demoDataLoader: DemoDataLoader = DemoDataLoader(), ) { - private val demoFolders: DemoFolders by lazy { demoDataLoader.loadFolders() } + private val demoFolders: DemoFolders by lazy { flattenDemoFolders(demoDataLoader.loadFolders()) } fun getFolder(folderServerId: String): DemoFolder? { return demoFolders[folderServerId] @@ -23,4 +23,32 @@ internal class DemoStore( fun getMessage(folderServerId: String, messageServerId: String): Message { return demoDataLoader.loadMessage(folderServerId, messageServerId) } + + // This is a workaround for the fact that the backend doesn't support nested folders + private fun flattenDemoFolders( + demoFolders: DemoFolders, + parentName: String = "", + parentServerId: String = "", + ): DemoFolders { + val flatFolders = mutableMapOf() + for ((folderServerId, demoFolder) in demoFolders) { + val fullName = if (parentName.isEmpty()) { + demoFolder.name + } else { + "$parentName/${demoFolder.name}" + } + val fullServerId = if (parentServerId.isEmpty()) { + folderServerId + } else { + "$parentServerId/$folderServerId" + } + flatFolders[fullServerId] = demoFolder.copy(name = fullName) + + val subFolders = demoFolder.subFolders + if (subFolders != null) { + flatFolders.putAll(flattenDemoFolders(demoFolder.subFolders, fullName, fullServerId)) + } + } + return flatFolders + } } diff --git a/backend/demo/src/main/resources/contents.json b/backend/demo/src/main/resources/contents.json index 137551a3b9..ba7d8fbbc6 100644 --- a/backend/demo/src/main/resources/contents.json +++ b/backend/demo/src/main/resources/contents.json @@ -57,5 +57,32 @@ "turing_award_1991", "turing_award_1996" ] + }, + "nested": { + "name": "Nested", + "type": "REGULAR", + "messageServerIds": [ + "nested_1" + ], + "subFolders": { + "nested_level_1": { + "name": "Nested Level 1", + "type": "REGULAR", + "messageServerIds": [ + "nested_level_1_1", + "nested_level_1_2" + ], + "subFolders": { + "nested_level_2": { + "name": "Nested Level 2", + "type": "REGULAR", + "messageServerIds": [ + "nested_level_2_1", + "nested_level_2_2" + ] + } + } + } + } } } diff --git a/backend/demo/src/main/resources/nested/nested_1.eml b/backend/demo/src/main/resources/nested/nested_1.eml new file mode 100644 index 0000000000..710357a8fd --- /dev/null +++ b/backend/demo/src/main/resources/nested/nested_1.eml @@ -0,0 +1,20 @@ +MIME-Version: 1.0 +From: "Nested User" +Date: Mon, 01 Jan 2024 12:00:00 -0400 +Message-ID: +Subject: Nested Message +To: User +Content-Type: multipart/alternative; boundary=047d7b450b100959e604d85a5320 + +--047d7b450b100959e604d85a5320 +Content-Type: text/plain; charset=UTF-8 + +This is a message in the Nested folder. + +--047d7b450b100959e604d85a5320 +Content-Type: text/html; charset=UTF-8 +Content-Transfer-Encoding: quoted-printable + +

This is a message in the Nested folder.
+ +--047d7b450b100959e604d85a5320-- diff --git a/backend/demo/src/main/resources/nested/nested_level_1/nested_level_1_1.eml b/backend/demo/src/main/resources/nested/nested_level_1/nested_level_1_1.eml new file mode 100644 index 0000000000..13db8dde66 --- /dev/null +++ b/backend/demo/src/main/resources/nested/nested_level_1/nested_level_1_1.eml @@ -0,0 +1,20 @@ +MIME-Version: 1.0 +From: "Nested Level 1 User" +Date: Mon, 01 Jan 2024 12:00:00 -0400 +Message-ID: +Subject: Nested Level 1 Message +To: Nested Level 2 User +Content-Type: multipart/alternative; boundary=047d7b450b100959e604d85a5320 + +--047d7b450b100959e604d85a5320 +Content-Type: text/plain; charset=UTF-8 + +This is a message 1 in the Nested Level 1 folder. + +--047d7b450b100959e604d85a5320 +Content-Type: text/html; charset=UTF-8 +Content-Transfer-Encoding: quoted-printable + +
This is a message in the Nested Level 1 folder.
+ +--047d7b450b100959e604d85a5320-- diff --git a/backend/demo/src/main/resources/nested/nested_level_1/nested_level_1_2.eml b/backend/demo/src/main/resources/nested/nested_level_1/nested_level_1_2.eml new file mode 100644 index 0000000000..c8eb456ff9 --- /dev/null +++ b/backend/demo/src/main/resources/nested/nested_level_1/nested_level_1_2.eml @@ -0,0 +1,20 @@ +MIME-Version: 1.0 +From: "Nested Level 1 User" +Date: Mon, 01 Jan 2024 12:00:00 -0400 +Message-ID: +Subject: Nested Level 1 Message +To: Nested Level 2 User +Content-Type: multipart/alternative; boundary=047d7b450b100959e604d85a5320 + +--047d7b450b100959e604d85a5320 +Content-Type: text/plain; charset=UTF-8 + +This is a message 2 in the Nested Level 1 folder. + +--047d7b450b100959e604d85a5320 +Content-Type: text/html; charset=UTF-8 +Content-Transfer-Encoding: quoted-printable + +
This is a message in the Nested Level 1 folder.
+ +--047d7b450b100959e604d85a5320-- diff --git a/backend/demo/src/main/resources/nested/nested_level_1/nested_level_2/nested_level_2_1.eml b/backend/demo/src/main/resources/nested/nested_level_1/nested_level_2/nested_level_2_1.eml new file mode 100644 index 0000000000..50544eec10 --- /dev/null +++ b/backend/demo/src/main/resources/nested/nested_level_1/nested_level_2/nested_level_2_1.eml @@ -0,0 +1,20 @@ +MIME-Version: 1.0 +From: "Nested Level 2 User" +Date: Mon, 01 Jan 2024 12:00:00 -0400 +Message-ID: +Subject: Nested Level 2 Message +To: Nested Level 1 User +Content-Type: multipart/alternative; boundary=047d7b450b100959e604d85a5320 + +--047d7b450b100959e604d85a5320 +Content-Type: text/plain; charset=UTF-8 + +This is a message 1 in the Nested Level 2 folder. + +--047d7b450b100959e604d85a5320 +Content-Type: text/html; charset=UTF-8 +Content-Transfer-Encoding: quoted-printable + +
This is a message in the Nested Level 2 folder.
+ +--047d7b450b100959e604d85a5320-- diff --git a/backend/demo/src/main/resources/nested/nested_level_1/nested_level_2/nested_level_2_2.eml b/backend/demo/src/main/resources/nested/nested_level_1/nested_level_2/nested_level_2_2.eml new file mode 100644 index 0000000000..dc9a10e696 --- /dev/null +++ b/backend/demo/src/main/resources/nested/nested_level_1/nested_level_2/nested_level_2_2.eml @@ -0,0 +1,20 @@ +MIME-Version: 1.0 +From: "Nested Level 2 User" +Date: Mon, 01 Jan 2024 12:00:00 -0400 +Message-ID: +Subject: Nested Level 2 Message +To: Nested Level 1 User +Content-Type: multipart/alternative; boundary=047d7b450b100959e604d85a5320 + +--047d7b450b100959e604d85a5320 +Content-Type: text/plain; charset=UTF-8 + +This is a message 2 in the Nested Level 2 folder. + +--047d7b450b100959e604d85a5320 +Content-Type: text/html; charset=UTF-8 +Content-Transfer-Encoding: quoted-printable + +
This is a message in the Nested Level 2 folder.
+ +--047d7b450b100959e604d85a5320-- -- GitLab From 6467954678b6fd0de513fabc6f8dc2870ee8e08f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 5 Mar 2025 11:46:53 +0100 Subject: [PATCH 074/262] Ensure example.com is used for the demo data and change to thunderbird --- .../inbox/inline_image_attachment.eml | 544 ++++++++++-------- .../resources/inbox/inline_image_data_uri.eml | 9 +- .../demo/src/main/resources/inbox/intro.eml | 10 +- .../inbox/localpart_exceeds_length_limit.eml | 6 +- .../main/resources/inbox/many_recipients.eml | 60 +- .../src/main/resources/inbox/thread_1.eml | 6 +- .../src/main/resources/inbox/thread_2.eml | 10 +- .../resources/turing/turing_award_1966.eml | 4 +- .../resources/turing/turing_award_1967.eml | 4 +- .../resources/turing/turing_award_1968.eml | 4 +- .../resources/turing/turing_award_1970.eml | 4 +- .../resources/turing/turing_award_1971.eml | 4 +- .../resources/turing/turing_award_1972.eml | 4 +- .../resources/turing/turing_award_1975.eml | 4 +- .../resources/turing/turing_award_1977.eml | 4 +- .../resources/turing/turing_award_1978.eml | 4 +- .../resources/turing/turing_award_1979.eml | 4 +- .../resources/turing/turing_award_1981.eml | 4 +- .../resources/turing/turing_award_1983.eml | 4 +- .../resources/turing/turing_award_1987.eml | 4 +- .../resources/turing/turing_award_1991.eml | 4 +- .../resources/turing/turing_award_1996.eml | 4 +- 22 files changed, 395 insertions(+), 310 deletions(-) diff --git a/backend/demo/src/main/resources/inbox/inline_image_attachment.eml b/backend/demo/src/main/resources/inbox/inline_image_attachment.eml index 6a7ceed12c..36782487b8 100644 --- a/backend/demo/src/main/resources/inbox/inline_image_attachment.eml +++ b/backend/demo/src/main/resources/inbox/inline_image_attachment.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 -From: "Test data" +From: "Test data" Date: Tue, 14 Feb 2023 15:00:00 +0100 -Message-ID: +Message-ID: Subject: Inline image attachment -To: User +To: User Content-Type: multipart/related; boundary=BOUNDARY --BOUNDARY @@ -13,236 +13,320 @@ Content-Type: text/html; charset=UTF-8

Inline image using a cid: URI to reference an attached image:

- + --BOUNDARY -Content-Type: image/png; name="k9mail.png" +Content-Type: image/png; name="thunderbird.png" Content-Transfer-Encoding: base64 -Content-ID: -Content-Disposition: inline; filename="k9mail.png" +Content-ID: +Content-Disposition: inline; filename="thunderbird.png" -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 +cAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi +Pz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUg +NS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIy +LXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1s +bnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJo +dHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDov +L25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFk +b2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hh +cC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9z +VHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjEyOCIKICAgZXhp +ZjpQaXhlbFlEaW1lbnNpb249IjEyOCIKICAgZXhpZjpDb2xvclNwYWNlPSIxIgogICB0aWZmOklt +YWdlV2lkdGg9IjEyOCIKICAgdGlmZjpJbWFnZUxlbmd0aD0iMTI4IgogICB0aWZmOlJlc29sdXRp +b25Vbml0PSIyIgogICB0aWZmOlhSZXNvbHV0aW9uPSI3Mi8xIgogICB0aWZmOllSZXNvbHV0aW9u +PSI3Mi8xIgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJvZmls +ZT0ic1JHQiBJRUM2MTk2Ni0yLjEiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDI1LTAzLTA0VDE5OjEy +OjU5KzAxOjAwIgogICB4bXA6TWV0YWRhdGFEYXRlPSIyMDI1LTAzLTA0VDE5OjEyOjU5KzAxOjAw +Ij4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0 +RXZ0OmFjdGlvbj0icHJvZHVjZWQiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFmZmluaXR5 +IFBob3RvIDIgMi42LjAiCiAgICAgIHN0RXZ0OndoZW49IjIwMjUtMDMtMDRUMTk6MTI6NTkrMDE6 +MDAiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogIDwvcmRmOkRlc2NyaXB0 +aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KPD94cGFja2V0IGVuZD0iciI/PkBqBbkAAAGB +aUNDUHNSR0IgSUVDNjE5NjYtMi4xAAAokXWRzytEURTHPzNDxAixUCwmYTU0fjSxUUZCSdMYZbCZ +eTNvRs2P13szabJVtooSG78W/AVslbVSRErWbIkNes6bUTPJnNu553O/957TveeCPZhUUkaVB1Lp +rB6Y9LkWQouumhccVNHMEO1hxdDG/P4ZKtrHHTYr3vRatSqf+9fqozFDAVut8Kii6VnhKeGZ1axm +8bZwq5IIR4VPhd26XFD41tIjRX62OF7kL4v1YGAc7E3CrngZR8pYSegpYXk5XalkTvm9j/USZyw9 +PyexU7wDgwCT+HAxzQTjeOlnRGYvvQzQJysq5HsK+bNkJFeRWSOPzgpxEmRxi5qT6jGJqugxGUny +Vv//9tVQBweK1Z0+qH4yzbduqNmC703T/Dw0ze8jcDzCRbqUnzmA4XfRN0ta1z40rsPZZUmL7MD5 +BrQ9aGE9XJAc4nZVhdcTaAhByzXULRV79rvP8T0E1+SrrmB3D3rkfOPyD2DqZ+MT1h/FAAAACXBI +WXMAAAsTAAALEwEAmpwYAAAgAElEQVR4nO29ebwmRXkv/q3qftfznn3OmY0BZoYBAdnRxKDmZxIQ +iEt+10RzzQ+SuIZEjahBXBL9GTXGeKMs0Zt7jbJqhKi43HsjKBEBBWTfZ2dgZs6s58xZ3vMu3V3P +/aO6qp7q7vfMDMy4RGo+Z97urv3Zn6equoHn0/Pp+fSrm8TPewD/mdNrPztZGhJiHMDiQGBcAGMS +GFBEEzFhU4to/Q3vGW3+PMf4PAE8h/Taz06WRgL5a2XgZVUhTq9LcWyfEMsHpBjskyIsi/2Dt62I +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 --BOUNDARY-- diff --git a/backend/demo/src/main/resources/inbox/inline_image_data_uri.eml b/backend/demo/src/main/resources/inbox/inline_image_data_uri.eml index 860d2caa75..8cdaa6b473 100644 --- a/backend/demo/src/main/resources/inbox/inline_image_data_uri.eml +++ b/backend/demo/src/main/resources/inbox/inline_image_data_uri.eml @@ -1,15 +1,16 @@ MIME-Version: 1.0 -From: "Test data" +From: "Test data" Date: Tue, 14 Feb 2023 14:23:00 +0100 -Message-ID: +Message-ID: Subject: Inline image (data: URI) -To: User +To: User Content-Type: text/html; charset=UTF-8

Inline image using a data: URI:

- + + diff --git a/backend/demo/src/main/resources/inbox/intro.eml b/backend/demo/src/main/resources/inbox/intro.eml index 99021ace03..a5c7cee316 100644 --- a/backend/demo/src/main/resources/inbox/intro.eml +++ b/backend/demo/src/main/resources/inbox/intro.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 -From: "cketti" +From: "Thunderbird" Date: Thu, 23 Sep 2021 23:42:00 +0200 -Message-ID: -Subject: Welcome to K-9 Mail -To: User +Message-ID: +Subject: Welcome to Thunderbird for Android +To: User Content-Type: text/plain; charset=UTF-8 -Congratulations, you have managed to set up K-9 Mail's demo account. Have fun exploring the app. +Congratulations, you have managed to set up Thunderbird for Android's demo account. Have fun exploring the app. diff --git a/backend/demo/src/main/resources/inbox/localpart_exceeds_length_limit.eml b/backend/demo/src/main/resources/inbox/localpart_exceeds_length_limit.eml index 2aa0ecb1f0..82f8d89122 100644 --- a/backend/demo/src/main/resources/inbox/localpart_exceeds_length_limit.eml +++ b/backend/demo/src/main/resources/inbox/localpart_exceeds_length_limit.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 -From: Sender (local part exceeds maximum length) +From: Sender (local part exceeds maximum length) Date: Thu, 15 Jun 2023 18:00:00 +0200 -Message-ID: +Message-ID: Subject: Localpart of email address exceeds 64 characters -To: User +To: User Content-Type: text/plain; charset=UTF-8 You should still be able to read this message. diff --git a/backend/demo/src/main/resources/inbox/many_recipients.eml b/backend/demo/src/main/resources/inbox/many_recipients.eml index a0bd8317d8..678c764072 100644 --- a/backend/demo/src/main/resources/inbox/many_recipients.eml +++ b/backend/demo/src/main/resources/inbox/many_recipients.eml @@ -1,36 +1,36 @@ MIME-Version: 1.0 -From: "Alice" , "Bob" -Sender: "Bernd" -Reply-To: +From: "Alice" , "Bob" +Sender: "Bernd" +Reply-To: Date: Mon, 23 Jan 2023 12:00:00 +0100 -Message-ID: +Message-ID: Subject: Message details demo -To: "User 1" , - "User 2" , - "User 3" , - "User 4" , - "User 5" , - "User 6" , - "User 7" , - "User 8" , - "User 9" , - "User 10" , - "User 11" , - "User 12" , - "User 13" , - "User 14" , - "User 15" , - "User 16" , - "User 17" , - "User 18" , - "User 19" , - "User 20" -Cc: "Copy 1" , - "Copy 2" , - "Copy 3" -Bcc: "Blind 1" , - "Blind 2" , - "Blind 3" +To: "User 1" , + "User 2" , + "User 3" , + "User 4" , + "User 5" , + "User 6" , + "User 7" , + "User 8" , + "User 9" , + "User 10" , + "User 11" , + "User 12" , + "User 13" , + "User 14" , + "User 15" , + "User 16" , + "User 17" , + "User 18" , + "User 19" , + "User 20" +Cc: "Copy 1" , + "Copy 2" , + "Copy 3" +Bcc: "Blind 1" , + "Blind 2" , + "Blind 3" Content-Type: text/plain; charset=UTF-8 This message contains… diff --git a/backend/demo/src/main/resources/inbox/thread_1.eml b/backend/demo/src/main/resources/inbox/thread_1.eml index a597808451..bebb2a3b5d 100644 --- a/backend/demo/src/main/resources/inbox/thread_1.eml +++ b/backend/demo/src/main/resources/inbox/thread_1.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 -From: Alice +From: Alice Date: Fri, 10 Feb 2023 10:00:00 +0100 -Message-ID: +Message-ID: Subject: Thread -To: Bob +To: Bob Content-Type: text/plain; charset=UTF-8 This is the first message in this thread. diff --git a/backend/demo/src/main/resources/inbox/thread_2.eml b/backend/demo/src/main/resources/inbox/thread_2.eml index 5b455009b8..9f76c73e1e 100644 --- a/backend/demo/src/main/resources/inbox/thread_2.eml +++ b/backend/demo/src/main/resources/inbox/thread_2.eml @@ -1,11 +1,11 @@ MIME-Version: 1.0 -From: Bob +From: Bob Date: Fri, 10 Feb 2023 10:05:00 +0100 -Message-ID: +Message-ID: Subject: Re: Thread -To: Alice -In-Reply-To: -References: +To: Alice +In-Reply-To: +References: Content-Type: text/plain; charset=UTF-8 This is the second message in this thread. diff --git a/backend/demo/src/main/resources/turing/turing_award_1966.eml b/backend/demo/src/main/resources/turing/turing_award_1966.eml index bed070890c..d8bfe3f36b 100644 --- a/backend/demo/src/main/resources/turing/turing_award_1966.eml +++ b/backend/demo/src/main/resources/turing/turing_award_1966.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 From: "Alan J. Perlis" Date: Sat, 01 Jan 1966 12:00:00 -0400 -Message-ID: +Message-ID: Subject: The Synthesis of Algorithmic Systems -To: Alan Turing +To: Alan Turing Content-Type: multipart/alternative; boundary=047d7b450b100959e604d85a5320 --047d7b450b100959e604d85a5320 diff --git a/backend/demo/src/main/resources/turing/turing_award_1967.eml b/backend/demo/src/main/resources/turing/turing_award_1967.eml index 9326afab9f..d333fd1bed 100644 --- a/backend/demo/src/main/resources/turing/turing_award_1967.eml +++ b/backend/demo/src/main/resources/turing/turing_award_1967.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 From: "Maurice V. Wilkes" Date: Wed, 30 Aug 1967 12:00:00 -0400 -Message-ID: +Message-ID: Subject: Computers Then and Now -To: Alan Turing +To: Alan Turing Content-Type: multipart/alternative; boundary=047d7b5d9bdd0d571a04d85aec30 --047d7b5d9bdd0d571a04d85aec30 diff --git a/backend/demo/src/main/resources/turing/turing_award_1968.eml b/backend/demo/src/main/resources/turing/turing_award_1968.eml index f9b989ad41..f8cf0b99b7 100644 --- a/backend/demo/src/main/resources/turing/turing_award_1968.eml +++ b/backend/demo/src/main/resources/turing/turing_award_1968.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 From: Richard Hamming Date: Tue, 27 Aug 1968 12:00:00 -0400 -Message-ID: +Message-ID: Subject: One Man's View of Computer Science -To: Alan Turing +To: Alan Turing Content-Type: multipart/alternative; boundary=089e01227b30f6f60004d85af2ae --089e01227b30f6f60004d85af2ae diff --git a/backend/demo/src/main/resources/turing/turing_award_1970.eml b/backend/demo/src/main/resources/turing/turing_award_1970.eml index 98edc18e6d..d07828cb3c 100644 --- a/backend/demo/src/main/resources/turing/turing_award_1970.eml +++ b/backend/demo/src/main/resources/turing/turing_award_1970.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 From: "James H. Wilkinson" Date: Tue, 01 Sep 1970 12:00:00 -0400 -Message-ID: +Message-ID: Subject: Some Comments from a Numerical Analyst -To: Alan Turing +To: Alan Turing Content-Type: multipart/alternative; boundary=047d7b5d9bdd9697d504d85ac65f --047d7b5d9bdd9697d504d85ac65f diff --git a/backend/demo/src/main/resources/turing/turing_award_1971.eml b/backend/demo/src/main/resources/turing/turing_award_1971.eml index 00b5b495e0..1f8eee23bb 100644 --- a/backend/demo/src/main/resources/turing/turing_award_1971.eml +++ b/backend/demo/src/main/resources/turing/turing_award_1971.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 From: John McCarthy Date: Fri, 01 Jan 1971 12:00:00 -0400 -Message-ID: +Message-ID: Subject: Generality in Artificial Intelligence -To: Alan Turing +To: Alan Turing Content-Type: multipart/alternative; boundary=089e01030106b6942904d85ad870 --089e01030106b6942904d85ad870 diff --git a/backend/demo/src/main/resources/turing/turing_award_1972.eml b/backend/demo/src/main/resources/turing/turing_award_1972.eml index 676c77c004..2ae547e5bf 100644 --- a/backend/demo/src/main/resources/turing/turing_award_1972.eml +++ b/backend/demo/src/main/resources/turing/turing_award_1972.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 From: "Edsger W. Dijkstra" Date: Mon, 02 Aug 1972 12:00:00 -0500 -Message-ID: +Message-ID: Subject: The Humble Programmer -To: Alan Turing +To: Alan Turing Content-Type: text/plain; charset=UTF-8; format=flowed As a result of a long sequence of coincidences I entered the programming diff --git a/backend/demo/src/main/resources/turing/turing_award_1975.eml b/backend/demo/src/main/resources/turing/turing_award_1975.eml index c5c835e8fc..662e52751e 100644 --- a/backend/demo/src/main/resources/turing/turing_award_1975.eml +++ b/backend/demo/src/main/resources/turing/turing_award_1975.eml @@ -2,9 +2,9 @@ MIME-Version: 1.0 From: Allen Newell Cc: Herbert Simon Date: Mon, 20 Oct 1975 12:00:00 -0500 -Message-ID: +Message-ID: Subject: Computer Science as Empirical Inquiry: Symbols and Search -To: Alan Turing +To: Alan Turing Content-Type: multipart/alternative; boundary=047d7b450b1092035304d85abf33 --047d7b450b1092035304d85abf33 diff --git a/backend/demo/src/main/resources/turing/turing_award_1977.eml b/backend/demo/src/main/resources/turing/turing_award_1977.eml index 74cac780b5..2e530017aa 100644 --- a/backend/demo/src/main/resources/turing/turing_award_1977.eml +++ b/backend/demo/src/main/resources/turing/turing_award_1977.eml @@ -1,10 +1,10 @@ MIME-Version: 1.0 From: "John W. Backus" Date: Mon, 17 Oct 1977 12:00:00 -0700 -Message-ID: +Message-ID: Subject: Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs -To: Alan Turing +To: Alan Turing Content-Type: multipart/alternative; boundary=047d7b5d9bdd8a36e804d85ade47 --047d7b5d9bdd8a36e804d85ade47 diff --git a/backend/demo/src/main/resources/turing/turing_award_1978.eml b/backend/demo/src/main/resources/turing/turing_award_1978.eml index 6dc52b24d7..92fd283418 100644 --- a/backend/demo/src/main/resources/turing/turing_award_1978.eml +++ b/backend/demo/src/main/resources/turing/turing_award_1978.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 From: Robert Floyd Date: Mon, 04 Dec 1978 12:00:00 -0500 -Message-ID: +Message-ID: Subject: The Paradigms of Programming -To: Alan Turing +To: Alan Turing Content-Type: multipart/alternative; boundary=089e0118419206e64304d85af860 --089e0118419206e64304d85af860 diff --git a/backend/demo/src/main/resources/turing/turing_award_1979.eml b/backend/demo/src/main/resources/turing/turing_award_1979.eml index e61c5d3b10..ac82ea91ee 100644 --- a/backend/demo/src/main/resources/turing/turing_award_1979.eml +++ b/backend/demo/src/main/resources/turing/turing_award_1979.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 From: "Kenneth E. Iverson" Date: Mon, 29 Oct 1979 12:00:00 -0500 -Message-ID: +Message-ID: Subject: Notation as a Tool of Thought -To: Alan Turing +To: Alan Turing Content-Type: multipart/alternative; boundary=20cf30549cad76254e04d85ae4df --20cf30549cad76254e04d85ae4df diff --git a/backend/demo/src/main/resources/turing/turing_award_1981.eml b/backend/demo/src/main/resources/turing/turing_award_1981.eml index 92fb6efa39..824585200e 100644 --- a/backend/demo/src/main/resources/turing/turing_award_1981.eml +++ b/backend/demo/src/main/resources/turing/turing_award_1981.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 From: "Edgar F. Codd" Date: Wed, 11 Nov 1981 12:00:00 -0800 -Message-ID: +Message-ID: Subject: Relational Database: A Practical Foundation for Productivity -To: Alan Turing +To: Alan Turing Content-Type: multipart/alternative; boundary=047d7bfd026c782f2404d85ab4b8 --047d7bfd026c782f2404d85ab4b8 diff --git a/backend/demo/src/main/resources/turing/turing_award_1983.eml b/backend/demo/src/main/resources/turing/turing_award_1983.eml index 344f752c2f..9bab787f34 100644 --- a/backend/demo/src/main/resources/turing/turing_award_1983.eml +++ b/backend/demo/src/main/resources/turing/turing_award_1983.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 From: Dennis Ritchie Date: Mon, 24 Oct 1983 12:00:00 -0400 -Message-ID: +Message-ID: Subject: Reflections on Software Research -To: Alan Turing +To: Alan Turing Content-Type: multipart/alternative; boundary=bcaec54fbb2250035a04d85aabcd --bcaec54fbb2250035a04d85aabcd diff --git a/backend/demo/src/main/resources/turing/turing_award_1987.eml b/backend/demo/src/main/resources/turing/turing_award_1987.eml index 2c4f82bbb0..92fda044b9 100644 --- a/backend/demo/src/main/resources/turing/turing_award_1987.eml +++ b/backend/demo/src/main/resources/turing/turing_award_1987.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 From: John Cocke Date: Mon, 16 Feb 1987 12:00:00 -0600 -Message-ID: +Message-ID: Subject: The Search for Performance in Scientific Processors -To: Alan Turing +To: Alan Turing Content-Type: multipart/alternative; boundary=047d7bfd079665fb2c04d85ad0bc --047d7bfd079665fb2c04d85ad0bc diff --git a/backend/demo/src/main/resources/turing/turing_award_1991.eml b/backend/demo/src/main/resources/turing/turing_award_1991.eml index 57e31d48d9..20ad04b50c 100644 --- a/backend/demo/src/main/resources/turing/turing_award_1991.eml +++ b/backend/demo/src/main/resources/turing/turing_award_1991.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 From: Robin Milner Date: Mon, 18 Nov 1991 12:00:00 -0700 -Message-ID: +Message-ID: Subject: Elements of Interaction -To: Alan Turing +To: Alan Turing Content-Type: multipart/alternative; boundary=047d7b86e6de64aecb04d85affff --047d7b86e6de64aecb04d85affff diff --git a/backend/demo/src/main/resources/turing/turing_award_1996.eml b/backend/demo/src/main/resources/turing/turing_award_1996.eml index 2f8bb13a68..77a01553a5 100644 --- a/backend/demo/src/main/resources/turing/turing_award_1996.eml +++ b/backend/demo/src/main/resources/turing/turing_award_1996.eml @@ -1,9 +1,9 @@ MIME-Version: 1.0 From: Amir Pnueli Date: Thu, 15 Feb 1996 12:00:00 -0500 -Message-ID: +Message-ID: Subject: Verification Engineering: A Future Profession -To: Alan Turing +To: Alan Turing Content-Type: multipart/alternative; boundary=bcaec54fbb222acf6704d85aa523 --bcaec54fbb222acf6704d85aa523 -- GitLab From 7ffd690c997068d5c3641c8437c4357028a33c52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 11 Mar 2025 10:44:11 +0100 Subject: [PATCH 075/262] Move files to kotlin source folder --- .../app/k9mail/backend/demo/CommandRefreshFolderList.kt | 0 .../app/k9mail/backend/demo/CommandSendMessage.kt | 0 .../main/{java => kotlin}/app/k9mail/backend/demo/CommandSync.kt | 0 .../main/{java => kotlin}/app/k9mail/backend/demo/DemoBackend.kt | 0 .../{java => kotlin}/app/k9mail/backend/demo/DemoDataLoader.kt | 0 .../main/{java => kotlin}/app/k9mail/backend/demo/DemoFolder.kt | 0 .../main/{java => kotlin}/app/k9mail/backend/demo/DemoFolders.kt | 0 .../main/{java => kotlin}/app/k9mail/backend/demo/DemoHelper.kt | 0 .../main/{java => kotlin}/app/k9mail/backend/demo/DemoStore.kt | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename backend/demo/src/main/{java => kotlin}/app/k9mail/backend/demo/CommandRefreshFolderList.kt (100%) rename backend/demo/src/main/{java => kotlin}/app/k9mail/backend/demo/CommandSendMessage.kt (100%) rename backend/demo/src/main/{java => kotlin}/app/k9mail/backend/demo/CommandSync.kt (100%) rename backend/demo/src/main/{java => kotlin}/app/k9mail/backend/demo/DemoBackend.kt (100%) rename backend/demo/src/main/{java => kotlin}/app/k9mail/backend/demo/DemoDataLoader.kt (100%) rename backend/demo/src/main/{java => kotlin}/app/k9mail/backend/demo/DemoFolder.kt (100%) rename backend/demo/src/main/{java => kotlin}/app/k9mail/backend/demo/DemoFolders.kt (100%) rename backend/demo/src/main/{java => kotlin}/app/k9mail/backend/demo/DemoHelper.kt (100%) rename backend/demo/src/main/{java => kotlin}/app/k9mail/backend/demo/DemoStore.kt (100%) diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/CommandRefreshFolderList.kt b/backend/demo/src/main/kotlin/app/k9mail/backend/demo/CommandRefreshFolderList.kt similarity index 100% rename from backend/demo/src/main/java/app/k9mail/backend/demo/CommandRefreshFolderList.kt rename to backend/demo/src/main/kotlin/app/k9mail/backend/demo/CommandRefreshFolderList.kt diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/CommandSendMessage.kt b/backend/demo/src/main/kotlin/app/k9mail/backend/demo/CommandSendMessage.kt similarity index 100% rename from backend/demo/src/main/java/app/k9mail/backend/demo/CommandSendMessage.kt rename to backend/demo/src/main/kotlin/app/k9mail/backend/demo/CommandSendMessage.kt diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/CommandSync.kt b/backend/demo/src/main/kotlin/app/k9mail/backend/demo/CommandSync.kt similarity index 100% rename from backend/demo/src/main/java/app/k9mail/backend/demo/CommandSync.kt rename to backend/demo/src/main/kotlin/app/k9mail/backend/demo/CommandSync.kt diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt b/backend/demo/src/main/kotlin/app/k9mail/backend/demo/DemoBackend.kt similarity index 100% rename from backend/demo/src/main/java/app/k9mail/backend/demo/DemoBackend.kt rename to backend/demo/src/main/kotlin/app/k9mail/backend/demo/DemoBackend.kt diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoDataLoader.kt b/backend/demo/src/main/kotlin/app/k9mail/backend/demo/DemoDataLoader.kt similarity index 100% rename from backend/demo/src/main/java/app/k9mail/backend/demo/DemoDataLoader.kt rename to backend/demo/src/main/kotlin/app/k9mail/backend/demo/DemoDataLoader.kt diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolder.kt b/backend/demo/src/main/kotlin/app/k9mail/backend/demo/DemoFolder.kt similarity index 100% rename from backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolder.kt rename to backend/demo/src/main/kotlin/app/k9mail/backend/demo/DemoFolder.kt diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolders.kt b/backend/demo/src/main/kotlin/app/k9mail/backend/demo/DemoFolders.kt similarity index 100% rename from backend/demo/src/main/java/app/k9mail/backend/demo/DemoFolders.kt rename to backend/demo/src/main/kotlin/app/k9mail/backend/demo/DemoFolders.kt diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoHelper.kt b/backend/demo/src/main/kotlin/app/k9mail/backend/demo/DemoHelper.kt similarity index 100% rename from backend/demo/src/main/java/app/k9mail/backend/demo/DemoHelper.kt rename to backend/demo/src/main/kotlin/app/k9mail/backend/demo/DemoHelper.kt diff --git a/backend/demo/src/main/java/app/k9mail/backend/demo/DemoStore.kt b/backend/demo/src/main/kotlin/app/k9mail/backend/demo/DemoStore.kt similarity index 100% rename from backend/demo/src/main/java/app/k9mail/backend/demo/DemoStore.kt rename to backend/demo/src/main/kotlin/app/k9mail/backend/demo/DemoStore.kt -- GitLab From 780243e3e1b20c6a530d1c5c4ae6231bf7d2c35c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 11 Mar 2025 11:01:23 +0100 Subject: [PATCH 076/262] Change Route to define a base path instead of the deep link This allows type safe deeplink construction supporting custom properties. --- .../k9mail/core/ui/compose/navigation/Navigation.kt | 1 + .../core/ui/compose/navigation/NavigationExtension.kt | 4 ++-- .../app/k9mail/core/ui/compose/navigation/Route.kt | 10 +++++----- .../k9mail/feature/funding/api/FundingNavigation.kt | 6 +++++- .../funding/googleplay/GooglePlayFundingNavigation.kt | 3 ++- .../k9mail/feature/launcher/FeatureLauncherTarget.kt | 3 ++- 6 files changed, 17 insertions(+), 10 deletions(-) diff --git a/core/ui/compose/navigation/src/main/kotlin/app/k9mail/core/ui/compose/navigation/Navigation.kt b/core/ui/compose/navigation/src/main/kotlin/app/k9mail/core/ui/compose/navigation/Navigation.kt index 3f69480532..1c6c712cd0 100644 --- a/core/ui/compose/navigation/src/main/kotlin/app/k9mail/core/ui/compose/navigation/Navigation.kt +++ b/core/ui/compose/navigation/src/main/kotlin/app/k9mail/core/ui/compose/navigation/Navigation.kt @@ -12,6 +12,7 @@ interface Navigation { /** * Register all routes for this navigation. * + * @param navGraphBuilder the navigation graph builder * @param onBack the action to perform when the back button is pressed * @param onFinish the action to perform when a route is finished */ diff --git a/core/ui/compose/navigation/src/main/kotlin/app/k9mail/core/ui/compose/navigation/NavigationExtension.kt b/core/ui/compose/navigation/src/main/kotlin/app/k9mail/core/ui/compose/navigation/NavigationExtension.kt index 40735127d8..001efea2d8 100644 --- a/core/ui/compose/navigation/src/main/kotlin/app/k9mail/core/ui/compose/navigation/NavigationExtension.kt +++ b/core/ui/compose/navigation/src/main/kotlin/app/k9mail/core/ui/compose/navigation/NavigationExtension.kt @@ -8,13 +8,13 @@ import androidx.navigation.compose.composable import androidx.navigation.navDeepLink inline fun NavGraphBuilder.deepLinkComposable( - route: T, + basePath: String, noinline content: @Composable AnimatedContentScope.(NavBackStackEntry) -> Unit, ) { composable( deepLinks = listOf( navDeepLink( - basePath = route.deepLink, + basePath = basePath, ), ), content = content, diff --git a/core/ui/compose/navigation/src/main/kotlin/app/k9mail/core/ui/compose/navigation/Route.kt b/core/ui/compose/navigation/src/main/kotlin/app/k9mail/core/ui/compose/navigation/Route.kt index 8c15f806a0..fb141d9e55 100644 --- a/core/ui/compose/navigation/src/main/kotlin/app/k9mail/core/ui/compose/navigation/Route.kt +++ b/core/ui/compose/navigation/src/main/kotlin/app/k9mail/core/ui/compose/navigation/Route.kt @@ -1,8 +1,5 @@ package app.k9mail.core.ui.compose.navigation -import android.net.Uri -import androidx.core.net.toUri - /** * A Route represents a destination in the app. * @@ -12,7 +9,10 @@ import androidx.core.net.toUri * @see Navigation */ interface Route { - val deepLink: String + val basePath: String - fun toDeepLinkUri(): Uri = deepLink.toUri() + /** + * The route to navigate to this screen. + */ + fun route(): String } diff --git a/feature/funding/api/src/main/kotlin/app/k9mail/feature/funding/api/FundingNavigation.kt b/feature/funding/api/src/main/kotlin/app/k9mail/feature/funding/api/FundingNavigation.kt index c1e7a73421..3ef6b865b6 100644 --- a/feature/funding/api/src/main/kotlin/app/k9mail/feature/funding/api/FundingNavigation.kt +++ b/feature/funding/api/src/main/kotlin/app/k9mail/feature/funding/api/FundingNavigation.kt @@ -9,7 +9,11 @@ const val FUNDING_BASE_DEEP_LINK = "app://feature/funding" sealed interface FundingRoute : Route { @Serializable data object Contribution : FundingRoute { - override val deepLink: String = "$FUNDING_BASE_DEEP_LINK/contribution" + override val basePath: String = BASE_PATH + + override fun route(): String = basePath + + const val BASE_PATH = "$FUNDING_BASE_DEEP_LINK/contribution" } } diff --git a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/GooglePlayFundingNavigation.kt b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/GooglePlayFundingNavigation.kt index 6a0e12beef..32f80bb563 100644 --- a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/GooglePlayFundingNavigation.kt +++ b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/GooglePlayFundingNavigation.kt @@ -4,6 +4,7 @@ import androidx.navigation.NavGraphBuilder import app.k9mail.core.ui.compose.navigation.deepLinkComposable import app.k9mail.feature.funding.api.FundingNavigation import app.k9mail.feature.funding.api.FundingRoute +import app.k9mail.feature.funding.api.FundingRoute.Contribution import app.k9mail.feature.funding.googleplay.ui.contribution.ContributionScreen class GooglePlayFundingNavigation : FundingNavigation { @@ -14,7 +15,7 @@ class GooglePlayFundingNavigation : FundingNavigation { onFinish: (FundingRoute) -> Unit, ) { with(navGraphBuilder) { - deepLinkComposable(FundingRoute.Contribution) { + deepLinkComposable(Contribution.BASE_PATH) { ContributionScreen( onBack = onBack, ) diff --git a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt index 5fc267f1f1..a24450607a 100644 --- a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt +++ b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt @@ -2,6 +2,7 @@ package app.k9mail.feature.launcher import android.content.Intent import android.net.Uri +import androidx.core.net.toUri import app.k9mail.core.ui.compose.common.navigation.toDeepLinkUri import app.k9mail.feature.account.edit.navigation.NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_INCOMING import app.k9mail.feature.account.edit.navigation.NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_OUTGOING @@ -34,6 +35,6 @@ sealed class FeatureLauncherTarget( ) data object Funding : FeatureLauncherTarget( - deepLinkUri = FundingRoute.Contribution.toDeepLinkUri(), + deepLinkUri = FundingRoute.Contribution.route().toUri(), ) } -- GitLab From 9c55f8b0e894a12a8a9fae4b625becd3dadcd8a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 11 Mar 2025 12:16:28 +0100 Subject: [PATCH 077/262] Change account setup to type safe navigation --- feature/account/setup/build.gradle.kts | 3 ++- .../account/setup/AccountSetupModule.kt | 4 +++ .../setup/navigation/AccountSetupNavHost.kt | 4 +-- .../navigation/AccountSetupNavigation.kt | 17 ++----------- .../setup/navigation/AccountSetupRoute.kt | 24 ++++++++++++++++++ .../DefaultAccountSetupNavigation.kt | 25 +++++++++++++++++++ .../feature/launcher/FeatureLauncherTarget.kt | 4 +-- .../navigation/FeatureLauncherNavHost.kt | 16 +++++++++--- .../main/navigation/OnboardingNavHost.kt | 18 ++++++++----- 9 files changed, 86 insertions(+), 29 deletions(-) create mode 100644 feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupRoute.kt create mode 100644 feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/DefaultAccountSetupNavigation.kt diff --git a/feature/account/setup/build.gradle.kts b/feature/account/setup/build.gradle.kts index 540d0c44e4..b9c1888bb9 100644 --- a/feature/account/setup/build.gradle.kts +++ b/feature/account/setup/build.gradle.kts @@ -8,8 +8,9 @@ android { } dependencies { - implementation(projects.core.ui.compose.designsystem) implementation(projects.core.common) + implementation(projects.core.ui.compose.designsystem) + implementation(projects.core.ui.compose.navigation) implementation(projects.mail.common) implementation(projects.mail.protocols.imap) diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/AccountSetupModule.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/AccountSetupModule.kt index 9cf814711a..ad0e5512ee 100644 --- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/AccountSetupModule.kt +++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/AccountSetupModule.kt @@ -14,6 +14,8 @@ import app.k9mail.feature.account.setup.domain.usecase.CreateAccount import app.k9mail.feature.account.setup.domain.usecase.GetAutoDiscovery import app.k9mail.feature.account.setup.domain.usecase.GetSpecialFolderOptions import app.k9mail.feature.account.setup.domain.usecase.ValidateSpecialFolderOptions +import app.k9mail.feature.account.setup.navigation.AccountSetupNavigation +import app.k9mail.feature.account.setup.navigation.DefaultAccountSetupNavigation import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryContract import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryValidator import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryViewModel @@ -41,6 +43,8 @@ val featureAccountSetupModule: Module = module { featureAccountServerSettingsModule, ) + single { DefaultAccountSetupNavigation() } + single { OkHttpClient() } diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupNavHost.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupNavHost.kt index 15de4b11f2..a8ab676c58 100644 --- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupNavHost.kt +++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupNavHost.kt @@ -43,7 +43,7 @@ private const val NESTED_NAVIGATION_CREATE_ACCOUNT = "create-account" @Composable fun AccountSetupNavHost( onBack: () -> Unit, - onFinish: (String) -> Unit, + onFinish: (AccountSetupRoute) -> Unit, ) { val navController = rememberNavController() var isAutomaticConfig by rememberSaveable { mutableStateOf(false) } @@ -172,7 +172,7 @@ fun AccountSetupNavHost( composable(route = NESTED_NAVIGATION_CREATE_ACCOUNT) { CreateAccountScreen( - onNext = { accountUuid -> onFinish(accountUuid.value) }, + onNext = { accountUuid -> onFinish(AccountSetupRoute.AccountSetup(accountUuid.value)) }, onBack = { navController.popBackStack() }, viewModel = koinViewModel(), brandNameProvider = koinInject(), diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupNavigation.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupNavigation.kt index 762752b237..149ce7d2d4 100644 --- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupNavigation.kt +++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupNavigation.kt @@ -1,18 +1,5 @@ package app.k9mail.feature.account.setup.navigation -import androidx.navigation.NavGraphBuilder -import app.k9mail.core.ui.compose.common.navigation.deepLinkComposable +import app.k9mail.core.ui.compose.navigation.Navigation -const val NAVIGATION_ROUTE_ACCOUNT_SETUP = "account/setup" - -fun NavGraphBuilder.accountSetupRoute( - onBack: () -> Unit, - onFinish: (String) -> Unit, -) { - deepLinkComposable(route = NAVIGATION_ROUTE_ACCOUNT_SETUP) { - AccountSetupNavHost( - onBack = onBack, - onFinish = onFinish, - ) - } -} +interface AccountSetupNavigation : Navigation diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupRoute.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupRoute.kt new file mode 100644 index 0000000000..6a7e27b66c --- /dev/null +++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/AccountSetupRoute.kt @@ -0,0 +1,24 @@ +package app.k9mail.feature.account.setup.navigation + +import app.k9mail.core.ui.compose.navigation.Route +import kotlinx.serialization.Serializable + +sealed interface AccountSetupRoute : Route { + + @Serializable + data class AccountSetup( + val accountId: String? = null, + ) : AccountSetupRoute { + override val basePath: String = BASE_PATH + + override fun route(): String = basePath + + companion object { + const val BASE_PATH = ACCOUNT_SETUP_BASE_PATH + } + } + + companion object { + const val ACCOUNT_SETUP_BASE_PATH = "app://account/setup" + } +} diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/DefaultAccountSetupNavigation.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/DefaultAccountSetupNavigation.kt new file mode 100644 index 0000000000..26ff2bd216 --- /dev/null +++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/navigation/DefaultAccountSetupNavigation.kt @@ -0,0 +1,25 @@ +package app.k9mail.feature.account.setup.navigation + +import androidx.navigation.NavGraphBuilder +import app.k9mail.core.ui.compose.navigation.deepLinkComposable +import app.k9mail.feature.account.setup.navigation.AccountSetupRoute.AccountSetup + +class DefaultAccountSetupNavigation : AccountSetupNavigation { + + override fun registerRoutes( + navGraphBuilder: NavGraphBuilder, + onBack: () -> Unit, + onFinish: (AccountSetupRoute) -> Unit, + ) { + with(navGraphBuilder) { + deepLinkComposable( + basePath = AccountSetup.BASE_PATH, + ) { + AccountSetupNavHost( + onBack = onBack, + onFinish = onFinish, + ) + } + } + } +} diff --git a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt index a24450607a..d63e9e5b89 100644 --- a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt +++ b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt @@ -7,7 +7,7 @@ import app.k9mail.core.ui.compose.common.navigation.toDeepLinkUri import app.k9mail.feature.account.edit.navigation.NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_INCOMING import app.k9mail.feature.account.edit.navigation.NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_OUTGOING import app.k9mail.feature.account.edit.navigation.withAccountUuid -import app.k9mail.feature.account.setup.navigation.NAVIGATION_ROUTE_ACCOUNT_SETUP +import app.k9mail.feature.account.setup.navigation.AccountSetupRoute import app.k9mail.feature.funding.api.FundingRoute import app.k9mail.feature.onboarding.main.navigation.NAVIGATION_ROUTE_ONBOARDING @@ -21,7 +21,7 @@ sealed class FeatureLauncherTarget( ) data object AccountSetup : FeatureLauncherTarget( - deepLinkUri = NAVIGATION_ROUTE_ACCOUNT_SETUP.toDeepLinkUri(), + deepLinkUri = AccountSetupRoute.AccountSetup().route().toUri(), ) data class AccountEditIncomingSettings(val accountUuid: String) : FeatureLauncherTarget( diff --git a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt index ba9515aa06..01c7726f9c 100644 --- a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt +++ b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt @@ -7,7 +7,8 @@ import androidx.compose.ui.Modifier import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import app.k9mail.feature.account.edit.navigation.accountEditRoute -import app.k9mail.feature.account.setup.navigation.accountSetupRoute +import app.k9mail.feature.account.setup.navigation.AccountSetupNavigation +import app.k9mail.feature.account.setup.navigation.AccountSetupRoute import app.k9mail.feature.funding.api.FundingNavigation import app.k9mail.feature.launcher.FeatureLauncherExternalContract.AccountSetupFinishedLauncher import app.k9mail.feature.onboarding.main.navigation.NAVIGATION_ROUTE_ONBOARDING @@ -20,6 +21,7 @@ fun FeatureLauncherNavHost( onBack: () -> Unit, modifier: Modifier = Modifier, accountSetupFinishedLauncher: AccountSetupFinishedLauncher = koinInject(), + accountSetupNavigation: AccountSetupNavigation = koinInject(), fundingNavigation: FundingNavigation = koinInject(), ) { val activity = LocalActivity.current as ComponentActivity @@ -35,9 +37,17 @@ fun FeatureLauncherNavHost( activity.finish() }, ) - accountSetupRoute( + + accountSetupNavigation.registerRoutes( + navGraphBuilder = this, onBack = onBack, - onFinish = { accountSetupFinishedLauncher.launch(it) }, + onFinish = { + when (it) { + is AccountSetupRoute.AccountSetup -> { + accountSetupFinishedLauncher.launch(it.accountId) + } + } + }, ) accountEditRoute( onBack = onBack, diff --git a/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/OnboardingNavHost.kt b/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/OnboardingNavHost.kt index 170f14605c..e40785cccb 100644 --- a/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/OnboardingNavHost.kt +++ b/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/OnboardingNavHost.kt @@ -10,6 +10,7 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import app.k9mail.feature.account.setup.navigation.AccountSetupNavHost +import app.k9mail.feature.account.setup.navigation.AccountSetupRoute import app.k9mail.feature.onboarding.migration.api.OnboardingMigrationManager import app.k9mail.feature.onboarding.permissions.domain.PermissionsDomainContract.UseCase.HasRuntimePermissions import app.k9mail.feature.onboarding.permissions.ui.PermissionsScreen @@ -101,12 +102,17 @@ fun OnboardingNavHost( composable(route = NESTED_NAVIGATION_ROUTE_ACCOUNT_SETUP) { AccountSetupNavHost( onBack = { navController.popBackStack() }, - onFinish = { createdAccountUuid: String -> - accountUuid = createdAccountUuid - if (hasRuntimePermissions()) { - navController.navigateToPermissions() - } else { - onFinish(createdAccountUuid) + onFinish = { route: AccountSetupRoute -> + when (route) { + is AccountSetupRoute.AccountSetup -> { + val createdAccountUuid = route.accountId + accountUuid = createdAccountUuid + if (hasRuntimePermissions()) { + navController.navigateToPermissions() + } else { + onFinish(createdAccountUuid) + } + } } }, ) -- GitLab From cfcb098884002e6eca05bd25c05cee63dec5c223 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 11 Mar 2025 15:42:27 +0100 Subject: [PATCH 078/262] Change onboarding to type safe navigation --- .../feature/launcher/FeatureLauncherTarget.kt | 4 ++-- .../navigation/FeatureLauncherNavHost.kt | 21 ++++++++++------ feature/onboarding/main/build.gradle.kts | 1 + .../onboarding/main/OnboardingModule.kt | 4 ++++ .../navigation/DefaultOnboardingNavigation.kt | 21 ++++++++++++++++ .../main/navigation/OnboardingNavHost.kt | 8 +++---- .../main/navigation/OnboardingNavigation.kt | 15 ++---------- .../main/navigation/OnboardingRoute.kt | 24 +++++++++++++++++++ 8 files changed, 72 insertions(+), 26 deletions(-) create mode 100644 feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/DefaultOnboardingNavigation.kt create mode 100644 feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/OnboardingRoute.kt diff --git a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt index d63e9e5b89..124b2622c7 100644 --- a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt +++ b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt @@ -9,14 +9,14 @@ import app.k9mail.feature.account.edit.navigation.NAVIGATION_ROUTE_ACCOUNT_EDIT_ import app.k9mail.feature.account.edit.navigation.withAccountUuid import app.k9mail.feature.account.setup.navigation.AccountSetupRoute import app.k9mail.feature.funding.api.FundingRoute -import app.k9mail.feature.onboarding.main.navigation.NAVIGATION_ROUTE_ONBOARDING +import app.k9mail.feature.onboarding.main.navigation.OnboardingRoute sealed class FeatureLauncherTarget( val deepLinkUri: Uri, val flags: Int? = null, ) { data object Onboarding : FeatureLauncherTarget( - deepLinkUri = NAVIGATION_ROUTE_ONBOARDING.toDeepLinkUri(), + deepLinkUri = OnboardingRoute.Onboarding().route().toUri(), flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK, ) diff --git a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt index 01c7726f9c..93ad75d5ff 100644 --- a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt +++ b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt @@ -11,8 +11,8 @@ import app.k9mail.feature.account.setup.navigation.AccountSetupNavigation import app.k9mail.feature.account.setup.navigation.AccountSetupRoute import app.k9mail.feature.funding.api.FundingNavigation import app.k9mail.feature.launcher.FeatureLauncherExternalContract.AccountSetupFinishedLauncher -import app.k9mail.feature.onboarding.main.navigation.NAVIGATION_ROUTE_ONBOARDING -import app.k9mail.feature.onboarding.main.navigation.onboardingRoute +import app.k9mail.feature.onboarding.main.navigation.OnboardingNavigation +import app.k9mail.feature.onboarding.main.navigation.OnboardingRoute import org.koin.compose.koinInject @Composable @@ -22,19 +22,26 @@ fun FeatureLauncherNavHost( modifier: Modifier = Modifier, accountSetupFinishedLauncher: AccountSetupFinishedLauncher = koinInject(), accountSetupNavigation: AccountSetupNavigation = koinInject(), + onboardingNavigation: OnboardingNavigation = koinInject(), fundingNavigation: FundingNavigation = koinInject(), ) { val activity = LocalActivity.current as ComponentActivity NavHost( navController = navController, - startDestination = NAVIGATION_ROUTE_ONBOARDING, + startDestination = OnboardingRoute.Onboarding(), modifier = modifier, ) { - onboardingRoute( - onFinish = { accountUuid -> - accountSetupFinishedLauncher.launch(accountUuid) - activity.finish() + onboardingNavigation.registerRoutes( + navGraphBuilder = this, + onBack = onBack, + onFinish = { + when (it) { + is OnboardingRoute.Onboarding -> { + accountSetupFinishedLauncher.launch(it.accountId) + activity.finish() + } + } }, ) diff --git a/feature/onboarding/main/build.gradle.kts b/feature/onboarding/main/build.gradle.kts index a2a70b3da0..0602767be4 100644 --- a/feature/onboarding/main/build.gradle.kts +++ b/feature/onboarding/main/build.gradle.kts @@ -10,6 +10,7 @@ android { dependencies { implementation(projects.core.common) implementation(projects.core.ui.compose.designsystem) + implementation(projects.core.ui.compose.navigation) implementation(projects.feature.onboarding.welcome) implementation(projects.feature.account.setup) implementation(projects.feature.settings.import) diff --git a/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/OnboardingModule.kt b/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/OnboardingModule.kt index fc02cc3338..789202dd9a 100644 --- a/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/OnboardingModule.kt +++ b/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/OnboardingModule.kt @@ -1,10 +1,14 @@ package app.k9mail.feature.onboarding.main +import app.k9mail.feature.onboarding.main.navigation.DefaultOnboardingNavigation +import app.k9mail.feature.onboarding.main.navigation.OnboardingNavigation import app.k9mail.feature.onboarding.permissions.featureOnboardingPermissionsModule import org.koin.core.module.Module import org.koin.dsl.module val featureOnboardingModule: Module = module { + single { DefaultOnboardingNavigation() } + includes( featureOnboardingPermissionsModule, ) diff --git a/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/DefaultOnboardingNavigation.kt b/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/DefaultOnboardingNavigation.kt new file mode 100644 index 0000000000..5d0e1961fe --- /dev/null +++ b/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/DefaultOnboardingNavigation.kt @@ -0,0 +1,21 @@ +package app.k9mail.feature.onboarding.main.navigation + +import androidx.navigation.NavGraphBuilder +import app.k9mail.core.ui.compose.navigation.deepLinkComposable +import app.k9mail.feature.onboarding.main.navigation.OnboardingRoute.Onboarding + +class DefaultOnboardingNavigation : OnboardingNavigation { + override fun registerRoutes( + navGraphBuilder: NavGraphBuilder, + onBack: () -> Unit, + onFinish: (OnboardingRoute) -> Unit, + ) { + with(navGraphBuilder) { + deepLinkComposable(Onboarding.BASE_PATH) { + OnboardingNavHost( + onFinish = onFinish, + ) + } + } + } +} diff --git a/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/OnboardingNavHost.kt b/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/OnboardingNavHost.kt index e40785cccb..5757859bb7 100644 --- a/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/OnboardingNavHost.kt +++ b/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/OnboardingNavHost.kt @@ -56,7 +56,7 @@ private fun NavController.navigateToPermissions() { @Suppress("LongMethod") @Composable fun OnboardingNavHost( - onFinish: (String?) -> Unit, + onFinish: (OnboardingRoute) -> Unit, hasRuntimePermissions: HasRuntimePermissions = koinInject(), onboardingMigrationManager: OnboardingMigrationManager = koinInject(), coroutineScope: CoroutineScope = CoroutineScope(Dispatchers.Main), @@ -68,7 +68,7 @@ fun OnboardingNavHost( if (hasRuntimePermissions()) { navController.navigateToPermissions() } else { - onFinish(null) + onFinish(OnboardingRoute.Onboarding(null)) } } @@ -110,7 +110,7 @@ fun OnboardingNavHost( if (hasRuntimePermissions()) { navController.navigateToPermissions() } else { - onFinish(createdAccountUuid) + onFinish(OnboardingRoute.Onboarding(createdAccountUuid)) } } } @@ -146,7 +146,7 @@ fun OnboardingNavHost( composable(route = NESTED_NAVIGATION_ROUTE_PERMISSIONS) { PermissionsScreen( - onNext = { onFinish(accountUuid) }, + onNext = { onFinish(OnboardingRoute.Onboarding(accountUuid)) }, ) } } diff --git a/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/OnboardingNavigation.kt b/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/OnboardingNavigation.kt index 46b5fa9cad..98c432ff81 100644 --- a/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/OnboardingNavigation.kt +++ b/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/OnboardingNavigation.kt @@ -1,16 +1,5 @@ package app.k9mail.feature.onboarding.main.navigation -import androidx.navigation.NavGraphBuilder -import app.k9mail.core.ui.compose.common.navigation.deepLinkComposable +import app.k9mail.core.ui.compose.navigation.Navigation -const val NAVIGATION_ROUTE_ONBOARDING = "onboarding" - -fun NavGraphBuilder.onboardingRoute( - onFinish: (String?) -> Unit, -) { - deepLinkComposable(route = NAVIGATION_ROUTE_ONBOARDING) { - OnboardingNavHost( - onFinish = onFinish, - ) - } -} +interface OnboardingNavigation : Navigation diff --git a/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/OnboardingRoute.kt b/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/OnboardingRoute.kt new file mode 100644 index 0000000000..6b80f70c50 --- /dev/null +++ b/feature/onboarding/main/src/main/kotlin/app/k9mail/feature/onboarding/main/navigation/OnboardingRoute.kt @@ -0,0 +1,24 @@ +package app.k9mail.feature.onboarding.main.navigation + +import app.k9mail.core.ui.compose.navigation.Route +import kotlinx.serialization.Serializable + +interface OnboardingRoute : Route { + + @Serializable + data class Onboarding( + val accountId: String? = null, + ) : OnboardingRoute { + override val basePath: String = BASE_PATH + + override fun route(): String = basePath + + companion object { + const val BASE_PATH = ONBOARDING_BASE_PATH + } + } + + companion object { + const val ONBOARDING_BASE_PATH = "app://onboarding" + } +} -- GitLab From 734ff44878d1180dc0d80f1810607dee8b0845ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 11 Mar 2025 17:15:31 +0100 Subject: [PATCH 079/262] Change account edit to type safe navigation --- feature/account/edit/build.gradle.kts | 3 +- .../feature/account/edit/AccountEditModule.kt | 4 ++ .../edit/navigation/AccountEditNavigation.kt | 69 +------------------ .../edit/navigation/AccountEditRoute.kt | 35 ++++++++++ .../DefaultAccountEditNavigation.kt | 42 +++++++++++ .../EditIncomingServerSettingsNavHost.kt | 5 +- .../EditOutgoingServerSettingsNavHost.kt | 5 +- .../feature/launcher/FeatureLauncherTarget.kt | 11 +-- .../navigation/FeatureLauncherNavHost.kt | 7 +- 9 files changed, 99 insertions(+), 82 deletions(-) create mode 100644 feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/navigation/AccountEditRoute.kt create mode 100644 feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/navigation/DefaultAccountEditNavigation.kt diff --git a/feature/account/edit/build.gradle.kts b/feature/account/edit/build.gradle.kts index 848b13372d..a51deedf66 100644 --- a/feature/account/edit/build.gradle.kts +++ b/feature/account/edit/build.gradle.kts @@ -8,8 +8,9 @@ android { } dependencies { - implementation(projects.core.ui.compose.designsystem) implementation(projects.core.common) + implementation(projects.core.ui.compose.designsystem) + implementation(projects.core.ui.compose.navigation) implementation(projects.mail.common) diff --git a/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/AccountEditModule.kt b/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/AccountEditModule.kt index 7c64170399..c015b14711 100644 --- a/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/AccountEditModule.kt +++ b/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/AccountEditModule.kt @@ -5,6 +5,8 @@ import app.k9mail.feature.account.edit.domain.AccountEditDomainContract import app.k9mail.feature.account.edit.domain.usecase.GetAccountState import app.k9mail.feature.account.edit.domain.usecase.LoadAccountState import app.k9mail.feature.account.edit.domain.usecase.SaveServerSettings +import app.k9mail.feature.account.edit.navigation.AccountEditNavigation +import app.k9mail.feature.account.edit.navigation.DefaultAccountEditNavigation import app.k9mail.feature.account.edit.ui.server.settings.modify.ModifyIncomingServerSettingsViewModel import app.k9mail.feature.account.edit.ui.server.settings.modify.ModifyOutgoingServerSettingsViewModel import app.k9mail.feature.account.edit.ui.server.settings.save.SaveIncomingServerSettingsViewModel @@ -25,6 +27,8 @@ val featureAccountEditModule = module { featureAccountServerValidationModule, ) + single { DefaultAccountEditNavigation() } + factory { LoadAccountState( accountStateLoader = get(), diff --git a/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/navigation/AccountEditNavigation.kt b/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/navigation/AccountEditNavigation.kt index 2f07177464..2a3662280e 100644 --- a/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/navigation/AccountEditNavigation.kt +++ b/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/navigation/AccountEditNavigation.kt @@ -1,70 +1,5 @@ package app.k9mail.feature.account.edit.navigation -import androidx.navigation.NavController -import androidx.navigation.NavGraphBuilder -import androidx.navigation.NavType -import androidx.navigation.navArgument -import app.k9mail.core.ui.compose.common.navigation.deepLinkComposable -import app.k9mail.core.ui.compose.common.navigation.getStringArgument -import app.k9mail.feature.account.edit.ui.server.settings.EditIncomingServerSettingsNavHost -import app.k9mail.feature.account.edit.ui.server.settings.EditOutgoingServerSettingsNavHost +import app.k9mail.core.ui.compose.navigation.Navigation -internal const val ARGUMENT_ACCOUNT_UUID = "accountUuid" - -const val NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_INCOMING = "account/edit/server/settings/incoming/{accountUuid}" -const val NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_OUTGOING = "account/edit/server/settings/outgoing/{accountUuid}" - -fun NavController.navigateToAccountEditIncomingServerSettings(accountUuid: String) { - navigate( - route = NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_INCOMING.withAccountUuid(accountUuid), - ) -} - -fun NavController.navigateToAccountEditOutgoingServerSettings(accountUuid: String) { - navigate( - route = NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_OUTGOING.withAccountUuid(accountUuid), - ) -} - -fun NavGraphBuilder.accountEditRoute( - onBack: () -> Unit, - onFinish: () -> Unit, -) { - deepLinkComposable( - route = NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_INCOMING, - arguments = listOf( - navArgument(ARGUMENT_ACCOUNT_UUID) { - type = NavType.StringType - }, - ), - ) { backStackEntry -> - val accountUuid = backStackEntry.getStringArgument(ARGUMENT_ACCOUNT_UUID) - EditIncomingServerSettingsNavHost( - accountUuid = accountUuid, - onFinish = { onFinish() }, - onBack = onBack, - ) - } - deepLinkComposable( - route = NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_OUTGOING, - arguments = listOf( - navArgument(ARGUMENT_ACCOUNT_UUID) { - type = NavType.StringType - }, - ), - ) { backStackEntry -> - val accountUuid = backStackEntry.getStringArgument(ARGUMENT_ACCOUNT_UUID) - EditOutgoingServerSettingsNavHost( - accountUuid = accountUuid, - onFinish = { onFinish() }, - onBack = onBack, - ) - } -} - -fun String.withAccountUuid(accountUuid: String): String { - return replace( - oldValue = "{$ARGUMENT_ACCOUNT_UUID}", - newValue = accountUuid, - ) -} +interface AccountEditNavigation : Navigation diff --git a/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/navigation/AccountEditRoute.kt b/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/navigation/AccountEditRoute.kt new file mode 100644 index 0000000000..72d50d5075 --- /dev/null +++ b/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/navigation/AccountEditRoute.kt @@ -0,0 +1,35 @@ +package app.k9mail.feature.account.edit.navigation + +import app.k9mail.core.ui.compose.navigation.Route +import kotlinx.serialization.Serializable + +sealed interface AccountEditRoute : Route { + + @Serializable + data class IncomingServerSettings( + val accountId: String, + ) : AccountEditRoute { + override val basePath: String = BASE_PATH + + override fun route(): String = "$basePath/$accountId" + + companion object { + const val BASE_PATH = "$ACCOUNT_EDIT_BASE_PATH/incoming" + } + } + + @Serializable + data class OutgoingServerSettings(val accountId: String) : AccountEditRoute { + override val basePath: String = BASE_PATH + + override fun route(): String = "$basePath/$accountId" + + companion object { + const val BASE_PATH = "$ACCOUNT_EDIT_BASE_PATH/outgoing" + } + } + + companion object { + const val ACCOUNT_EDIT_BASE_PATH = "app://account/edit" + } +} diff --git a/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/navigation/DefaultAccountEditNavigation.kt b/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/navigation/DefaultAccountEditNavigation.kt new file mode 100644 index 0000000000..a9f46019fc --- /dev/null +++ b/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/navigation/DefaultAccountEditNavigation.kt @@ -0,0 +1,42 @@ +package app.k9mail.feature.account.edit.navigation + +import androidx.navigation.NavGraphBuilder +import androidx.navigation.toRoute +import app.k9mail.core.ui.compose.navigation.deepLinkComposable +import app.k9mail.feature.account.edit.navigation.AccountEditRoute.IncomingServerSettings +import app.k9mail.feature.account.edit.navigation.AccountEditRoute.OutgoingServerSettings +import app.k9mail.feature.account.edit.ui.server.settings.EditIncomingServerSettingsNavHost +import app.k9mail.feature.account.edit.ui.server.settings.EditOutgoingServerSettingsNavHost + +class DefaultAccountEditNavigation : AccountEditNavigation { + + override fun registerRoutes( + navGraphBuilder: NavGraphBuilder, + onBack: () -> Unit, + onFinish: (AccountEditRoute) -> Unit, + ) = with(navGraphBuilder) { + deepLinkComposable( + basePath = IncomingServerSettings.BASE_PATH, + ) { backStackEntry -> + val incomingServerSettingsRoute = backStackEntry.toRoute() + + EditIncomingServerSettingsNavHost( + accountUuid = incomingServerSettingsRoute.accountId, + onBack = onBack, + onFinish = onFinish, + ) + } + + deepLinkComposable( + basePath = OutgoingServerSettings.BASE_PATH, + ) { backStackEntry -> + val outgoingServerSettingsRoute = backStackEntry.toRoute() + + EditOutgoingServerSettingsNavHost( + accountUuid = outgoingServerSettingsRoute.accountId, + onBack = onBack, + onFinish = onFinish, + ) + } + } +} diff --git a/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/ui/server/settings/EditIncomingServerSettingsNavHost.kt b/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/ui/server/settings/EditIncomingServerSettingsNavHost.kt index 13cfa0323b..377823ab88 100644 --- a/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/ui/server/settings/EditIncomingServerSettingsNavHost.kt +++ b/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/ui/server/settings/EditIncomingServerSettingsNavHost.kt @@ -6,6 +6,7 @@ import androidx.navigation.NavController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController +import app.k9mail.feature.account.edit.navigation.AccountEditRoute import app.k9mail.feature.account.edit.ui.server.settings.modify.ModifyIncomingServerSettingsViewModel import app.k9mail.feature.account.edit.ui.server.settings.save.SaveIncomingServerSettingsViewModel import app.k9mail.feature.account.edit.ui.server.settings.save.SaveServerSettingsScreen @@ -32,7 +33,7 @@ private fun NavController.navigateToSave() { @Composable fun EditIncomingServerSettingsNavHost( accountUuid: String, - onFinish: () -> Unit, + onFinish: (AccountEditRoute) -> Unit, onBack: () -> Unit, ) { val navController = rememberNavController() @@ -64,7 +65,7 @@ fun EditIncomingServerSettingsNavHost( composable(route = NESTED_NAVIGATION_ROUTE_SAVE) { SaveServerSettingsScreen( title = stringResource(id = R.string.account_server_settings_incoming_top_bar_title), - onNext = onFinish, + onNext = { onFinish(AccountEditRoute.IncomingServerSettings(accountUuid)) }, onBack = { navController.popBackStack(route = NESTED_NAVIGATION_ROUTE_MODIFY, inclusive = false) }, viewModel = koinViewModel { parametersOf(accountUuid) diff --git a/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/ui/server/settings/EditOutgoingServerSettingsNavHost.kt b/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/ui/server/settings/EditOutgoingServerSettingsNavHost.kt index 5794cbb9b3..df7a154087 100644 --- a/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/ui/server/settings/EditOutgoingServerSettingsNavHost.kt +++ b/feature/account/edit/src/main/kotlin/app/k9mail/feature/account/edit/ui/server/settings/EditOutgoingServerSettingsNavHost.kt @@ -6,6 +6,7 @@ import androidx.navigation.NavController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController +import app.k9mail.feature.account.edit.navigation.AccountEditRoute import app.k9mail.feature.account.edit.ui.server.settings.modify.ModifyOutgoingServerSettingsViewModel import app.k9mail.feature.account.edit.ui.server.settings.save.SaveOutgoingServerSettingsViewModel import app.k9mail.feature.account.edit.ui.server.settings.save.SaveServerSettingsScreen @@ -32,7 +33,7 @@ private fun NavController.navigateToSave() { @Composable fun EditOutgoingServerSettingsNavHost( accountUuid: String, - onFinish: () -> Unit, + onFinish: (AccountEditRoute) -> Unit, onBack: () -> Unit, ) { val navController = rememberNavController() @@ -64,7 +65,7 @@ fun EditOutgoingServerSettingsNavHost( composable(route = NESTED_NAVIGATION_ROUTE_SAVE) { SaveServerSettingsScreen( title = stringResource(id = R.string.account_server_settings_outgoing_top_bar_title), - onNext = onFinish, + onNext = { onFinish(AccountEditRoute.OutgoingServerSettings(accountUuid)) }, onBack = { navController.popBackStack(route = NESTED_NAVIGATION_ROUTE_MODIFY, inclusive = false) }, viewModel = koinViewModel { parametersOf(accountUuid) diff --git a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt index 124b2622c7..6cbe088a18 100644 --- a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt +++ b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt @@ -3,10 +3,7 @@ package app.k9mail.feature.launcher import android.content.Intent import android.net.Uri import androidx.core.net.toUri -import app.k9mail.core.ui.compose.common.navigation.toDeepLinkUri -import app.k9mail.feature.account.edit.navigation.NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_INCOMING -import app.k9mail.feature.account.edit.navigation.NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_OUTGOING -import app.k9mail.feature.account.edit.navigation.withAccountUuid +import app.k9mail.feature.account.edit.navigation.AccountEditRoute import app.k9mail.feature.account.setup.navigation.AccountSetupRoute import app.k9mail.feature.funding.api.FundingRoute import app.k9mail.feature.onboarding.main.navigation.OnboardingRoute @@ -25,13 +22,11 @@ sealed class FeatureLauncherTarget( ) data class AccountEditIncomingSettings(val accountUuid: String) : FeatureLauncherTarget( - deepLinkUri = NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_INCOMING - .withAccountUuid(accountUuid).toDeepLinkUri(), + deepLinkUri = AccountEditRoute.IncomingServerSettings(accountUuid).route().toUri(), ) data class AccountEditOutgoingSettings(val accountUuid: String) : FeatureLauncherTarget( - deepLinkUri = NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_OUTGOING - .withAccountUuid(accountUuid).toDeepLinkUri(), + deepLinkUri = AccountEditRoute.OutgoingServerSettings(accountUuid).route().toUri(), ) data object Funding : FeatureLauncherTarget( diff --git a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt index 93ad75d5ff..0f4cedd6a8 100644 --- a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt +++ b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt @@ -6,7 +6,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost -import app.k9mail.feature.account.edit.navigation.accountEditRoute +import app.k9mail.feature.account.edit.navigation.AccountEditNavigation import app.k9mail.feature.account.setup.navigation.AccountSetupNavigation import app.k9mail.feature.account.setup.navigation.AccountSetupRoute import app.k9mail.feature.funding.api.FundingNavigation @@ -21,6 +21,7 @@ fun FeatureLauncherNavHost( onBack: () -> Unit, modifier: Modifier = Modifier, accountSetupFinishedLauncher: AccountSetupFinishedLauncher = koinInject(), + accountEditNavigation: AccountEditNavigation = koinInject(), accountSetupNavigation: AccountSetupNavigation = koinInject(), onboardingNavigation: OnboardingNavigation = koinInject(), fundingNavigation: FundingNavigation = koinInject(), @@ -56,7 +57,9 @@ fun FeatureLauncherNavHost( } }, ) - accountEditRoute( + + accountEditNavigation.registerRoutes( + navGraphBuilder = this, onBack = onBack, onFinish = { activity.finish() }, ) -- GitLab From 351bd9b14f510a415640eefba6f669531b49eb99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 11 Mar 2025 17:17:59 +0100 Subject: [PATCH 080/262] Remove obsolete navigation extensions --- .../navigation/NavBackStackEntryExtension.kt | 7 ----- .../common/navigation/NavigationExtensions.kt | 30 ------------------- 2 files changed, 37 deletions(-) delete mode 100644 core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/navigation/NavBackStackEntryExtension.kt delete mode 100644 core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/navigation/NavigationExtensions.kt diff --git a/core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/navigation/NavBackStackEntryExtension.kt b/core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/navigation/NavBackStackEntryExtension.kt deleted file mode 100644 index c442548623..0000000000 --- a/core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/navigation/NavBackStackEntryExtension.kt +++ /dev/null @@ -1,7 +0,0 @@ -package app.k9mail.core.ui.compose.common.navigation - -import androidx.navigation.NavBackStackEntry - -fun NavBackStackEntry.getStringArgument(key: String): String { - return arguments?.getString(key) ?: error("Missing argument: $key") -} diff --git a/core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/navigation/NavigationExtensions.kt b/core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/navigation/NavigationExtensions.kt deleted file mode 100644 index bce88f0686..0000000000 --- a/core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/navigation/NavigationExtensions.kt +++ /dev/null @@ -1,30 +0,0 @@ -package app.k9mail.core.ui.compose.common.navigation - -import android.net.Uri -import androidx.compose.animation.AnimatedContentScope -import androidx.compose.runtime.Composable -import androidx.core.net.toUri -import androidx.navigation.NamedNavArgument -import androidx.navigation.NavBackStackEntry -import androidx.navigation.NavGraphBuilder -import androidx.navigation.compose.composable -import androidx.navigation.navDeepLink - -fun NavGraphBuilder.deepLinkComposable( - route: String, - arguments: List = emptyList(), - content: @Composable AnimatedContentScope.(NavBackStackEntry) -> Unit, -) { - composable( - route = route, - arguments = arguments, - deepLinks = listOf( - navDeepLink { uriPattern = route.toDeepLink() }, - ), - content = content, - ) -} - -fun String.toDeepLink(): String = "app://$this" - -fun String.toDeepLinkUri(): Uri = toDeepLink().toUri() -- GitLab From cec3392d4150877bc290b0bb7f2354e41c28af8d Mon Sep 17 00:00:00 2001 From: Philipp Kewisch Date: Wed, 12 Mar 2025 10:54:10 +0100 Subject: [PATCH 081/262] Augment uplift-merges to set milestones --- scripts/uplift-merges.sh | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/scripts/uplift-merges.sh b/scripts/uplift-merges.sh index fb3021cf7a..dd0aa601a4 100755 --- a/scripts/uplift-merges.sh +++ b/scripts/uplift-merges.sh @@ -17,6 +17,9 @@ label="task: uplift to beta" branch="beta" push=false +milestones=$(gh api repos/${repo}/milestones --jq 'map(select(.state == "open" and .due_on != null)) | sort_by(.due_on)' | jq -c) + + # Parse command-line arguments for arg in "$@"; do case $arg in @@ -27,11 +30,15 @@ for arg in "$@"; do --release) label="task: uplift to release" branch="release" + expected_milestone=$(echo $milestones | jq -r '.[1].title') + target_milestone=$(echo $milestones | jq -r '.[0].title') shift ;; --beta) label="task: uplift to beta" branch="beta" + expected_milestone=$(echo $milestones | jq -r '.[2].title') + target_milestone=$(echo $milestones | jq -r '.[1].title') shift ;; --push) @@ -48,8 +55,16 @@ done current_branch=$(git branch --show-current) if [ "$current_branch" != "$branch" ]; then fail "You are not on the $branch branch. Please switch to the $branch branch." + true +fi + +# Check correct number of milestones +milestone_count=$(echo "$milestones" | jq 'length') +if [ "$milestone_count" != 3 ]; then + fail "Expected 3 open milestones with due date on https://github.com/${repo}/milestones but found $milestone_count" fi +# Status Info if [ "$dry_run" = true ] then echo "Dry run in progress, to disable pass --no-dry-run" @@ -59,7 +74,7 @@ echo "Label: \"$label\"" echo "" # Fetch the uplift commits from the GitHub repository -json_data=$(gh pr list --repo "$repo" --label "$label" --state merged --json "mergedAt,mergeCommit,number,url,title" | jq -c .) +json_data=$(gh pr list --repo "$repo" --label "$label" --state merged --json "mergedAt,mergeCommit,number,url,title,milestone" | jq -c .) # Sort by mergedAt sorted_commits=$(echo "$json_data" | jq -c '. | sort_by(.mergedAt) | .[]') @@ -77,19 +92,24 @@ do pr_number=$(echo "$commit" | jq -r '.number') pr_url=$(echo "$commit" | jq -r '.url') pr_title=$(echo "$commit" | jq -r '.title') + pr_milestone=$(echo "$commit" | jq -r '.milestone.title') echo "Cherry-picking $oid from $pr_url ($pr_title)" + if [ "$pr_milestone" != "$expected_milestone" ]; then + fail "PR https://github.com/$repo/pull/$pr_number is on milestone $pr_milestone but expected $expected_milestone" + fi + if [ "$dry_run" = false ]; then git cherry-pick -m 1 "$oid" || fail "Failed to cherry-pick $oid" if [ "$push" = true ]; then git push || fail "Failed to push $oid" fi - gh pr edit "$pr_number" --repo "$repo" --remove-label "$label" || fail "Failed to remove label from $pr_number" + gh pr edit "$pr_number" --repo "$repo" --remove-label "$label" --milestone "$target_milestone" || fail "Failed to remove label from $pr_number" else echo "git cherry-pick -m 1 $oid" [ "$push" = true ] && echo git push - echo "gh pr edit $pr_number --repo \"$repo\" --remove-label \"$label\"" + echo "gh pr edit $pr_number --repo \"$repo\" --remove-label \"$label\" --milestone \"$target_milestone\"" fi echo "" done <<< "$sorted_commits" -- GitLab From f74e23c046c108f88a9ec26461833ffce5d9b7f9 Mon Sep 17 00:00:00 2001 From: Philipp Kewisch Date: Wed, 12 Mar 2025 11:15:25 +0100 Subject: [PATCH 082/262] Avoid duplicating commands in uplift-merges script --- scripts/uplift-merges.sh | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/scripts/uplift-merges.sh b/scripts/uplift-merges.sh index dd0aa601a4..4e049572fd 100755 --- a/scripts/uplift-merges.sh +++ b/scripts/uplift-merges.sh @@ -4,6 +4,13 @@ function fail() { echo "Error: $*" exit 1 } +function drydo() { + if [ "$dry_run" = true ]; then + echo "$@" + else + eval "$@" + fi +} # Check if tools are installed command -v gh &> /dev/null || fail "gh (GitHub CLI) is not installed" @@ -19,7 +26,6 @@ push=false milestones=$(gh api repos/${repo}/milestones --jq 'map(select(.state == "open" and .due_on != null)) | sort_by(.due_on)' | jq -c) - # Parse command-line arguments for arg in "$@"; do case $arg in @@ -99,17 +105,11 @@ do fail "PR https://github.com/$repo/pull/$pr_number is on milestone $pr_milestone but expected $expected_milestone" fi - if [ "$dry_run" = false ]; then - git cherry-pick -m 1 "$oid" || fail "Failed to cherry-pick $oid" - if [ "$push" = true ]; then - git push || fail "Failed to push $oid" - fi - - gh pr edit "$pr_number" --repo "$repo" --remove-label "$label" --milestone "$target_milestone" || fail "Failed to remove label from $pr_number" - else - echo "git cherry-pick -m 1 $oid" - [ "$push" = true ] && echo git push - echo "gh pr edit $pr_number --repo \"$repo\" --remove-label \"$label\" --milestone \"$target_milestone\"" + drydo git cherry-pick -m 1 "$oid" || fail "Failed to cherry-pick $oid" + if [ "$push" = true ]; then + drydo git push || fail "Failed to push $oid" fi + + drydo gh pr edit "$pr_number" --repo "$repo" --remove-label "$label" --milestone "$target_milestone" || fail "Failed to remove label from $pr_number" echo "" done <<< "$sorted_commits" -- GitLab From f579e64dfd9fc4362d7a8683001c185750c3547e Mon Sep 17 00:00:00 2001 From: Philipp Kewisch Date: Wed, 12 Mar 2025 13:35:01 +0100 Subject: [PATCH 083/262] Automation to remove/adjust labels on needinfo --- .github/workflows/needinfo-answered.yml | 28 +++++++++++++++++++++++++ .github/workflows/needinfo-remove.yml | 18 ++++++---------- .github/workflows/needinfo-stale.yml | 1 + 3 files changed, 35 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/needinfo-answered.yml diff --git a/.github/workflows/needinfo-answered.yml b/.github/workflows/needinfo-answered.yml new file mode 100644 index 0000000000..33be47e457 --- /dev/null +++ b/.github/workflows/needinfo-answered.yml @@ -0,0 +1,28 @@ + +--- +name: Remove answered label + +on: + issues: + types: + - labeled + +permissions: + issues: write + +jobs: + build: + runs-on: ubuntu-latest + if: | + contains(github.event.issue.labels.*.name, 'status: needs information') && + contains(github.event.issue.labels.*.name, 'status: answered') + permissions: + issues: write + pull-requests: write + steps: + - name: Remove answered label if both exist + env: + ISSUE_NUMBER: ${{ github.event.issue.number }} + GH_TOKEN: ${{ github.token }} + run: | + gh issue edit $ISSUE_NUMBER --repo "$GITHUB_REPOSITORY" --remove-label "status: answered" diff --git a/.github/workflows/needinfo-remove.yml b/.github/workflows/needinfo-remove.yml index a805ee3a95..e7563c1157 100644 --- a/.github/workflows/needinfo-remove.yml +++ b/.github/workflows/needinfo-remove.yml @@ -8,6 +8,7 @@ on: permissions: contents: read + issues: write jobs: build: @@ -21,16 +22,9 @@ jobs: issues: write pull-requests: write steps: - # https://github.com/octokit/request-action/issues/118 - - name: Remove needinfo label + - name: Remove needinfo label and add answered label + env: + ISSUE_NUMBER: ${{ github.event.issue.number }} + GH_TOKEN: ${{ github.token }} run: | - curl --request DELETE \ - --url 'https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/labels/status%3A%20needs%20information' \ - --header 'Authorization: token ${{ secrets.GITHUB_TOKEN }}' - - name: Add answered label - run: | - curl --request POST \ - --url 'https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/labels' \ - --header 'Authorization: token ${{ secrets.GITHUB_TOKEN }}' \ - --header 'Content-Type: application/json' \ - --data '{"labels": ["status: answered"]}' + gh issue edit $ISSUE_NUMBER --repo "$GITHUB_REPOSITORY" --remove-label "status: needs information" --add-label "status: answered" diff --git a/.github/workflows/needinfo-stale.yml b/.github/workflows/needinfo-stale.yml index 35d13e0130..dede0abc7c 100644 --- a/.github/workflows/needinfo-stale.yml +++ b/.github/workflows/needinfo-stale.yml @@ -8,6 +8,7 @@ on: permissions: contents: read + issues: write jobs: build: -- GitLab From d4c3a135e78dfd0d436988858f82f3a660e54a0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 12 Mar 2025 13:59:57 +0100 Subject: [PATCH 084/262] Remove nullability from ServerSettings host property A server settings without host doesn't make sense. --- .../main/java/com/fsck/k9/preferences/ServerSettingsWriter.kt | 2 +- mail/common/src/main/java/com/fsck/k9/mail/ServerSettings.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/ServerSettingsWriter.kt b/legacy/core/src/main/java/com/fsck/k9/preferences/ServerSettingsWriter.kt index 57c98ece21..457fc7c3d6 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/ServerSettingsWriter.kt +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/ServerSettingsWriter.kt @@ -28,7 +28,7 @@ internal class ServerSettingsWriter( private fun createServerSettings(server: ValidatedSettings.Server): ServerSettings { val validatedSettings = server.settings - val host = validatedSettings[HOST] as? String + val host = validatedSettings[HOST] as String val port = validatedSettings[PORT] as Int val connectionSecurity = ConnectionSecurity.valueOf(validatedSettings[CONNECTION_SECURITY] as String) val authenticationType = AuthType.valueOf(validatedSettings[AUTHENTICATION_TYPE] as String) diff --git a/mail/common/src/main/java/com/fsck/k9/mail/ServerSettings.kt b/mail/common/src/main/java/com/fsck/k9/mail/ServerSettings.kt index f055b219cb..dacab636d5 100644 --- a/mail/common/src/main/java/com/fsck/k9/mail/ServerSettings.kt +++ b/mail/common/src/main/java/com/fsck/k9/mail/ServerSettings.kt @@ -5,7 +5,7 @@ package com.fsck.k9.mail */ data class ServerSettings @JvmOverloads constructor( @JvmField val type: String, - @JvmField val host: String?, + @JvmField val host: String, @JvmField val port: Int, @JvmField val connectionSecurity: ConnectionSecurity, @JvmField val authenticationType: AuthType, -- GitLab From db7c6193767926f03b7ebfd70892aa09357c2e90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 12 Mar 2025 13:44:48 +0100 Subject: [PATCH 085/262] Rename .java to .kt --- .../ssl/{TrustedSocketFactory.java => TrustedSocketFactory.kt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename mail/common/src/main/java/com/fsck/k9/mail/ssl/{TrustedSocketFactory.java => TrustedSocketFactory.kt} (100%) diff --git a/mail/common/src/main/java/com/fsck/k9/mail/ssl/TrustedSocketFactory.java b/mail/common/src/main/java/com/fsck/k9/mail/ssl/TrustedSocketFactory.kt similarity index 100% rename from mail/common/src/main/java/com/fsck/k9/mail/ssl/TrustedSocketFactory.java rename to mail/common/src/main/java/com/fsck/k9/mail/ssl/TrustedSocketFactory.kt -- GitLab From 53f5609d305da4312a5cc8b2f9a21938f20c10de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 12 Mar 2025 13:44:49 +0100 Subject: [PATCH 086/262] Change TrustedSocketFactory to Kotlin --- .../helper/DefaultTrustedSocketFactory.java | 4 +++- .../fsck/k9/mail/ssl/TrustedSocketFactory.kt | 24 +++++++++++-------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/legacy/core/src/main/java/com/fsck/k9/helper/DefaultTrustedSocketFactory.java b/legacy/core/src/main/java/com/fsck/k9/helper/DefaultTrustedSocketFactory.java index e83552af46..604c29f014 100644 --- a/legacy/core/src/main/java/com/fsck/k9/helper/DefaultTrustedSocketFactory.java +++ b/legacy/core/src/main/java/com/fsck/k9/helper/DefaultTrustedSocketFactory.java @@ -14,6 +14,7 @@ import android.net.SSLCertificateSocketFactory; import android.os.Build; import android.text.TextUtils; +import androidx.annotation.NonNull; import app.k9mail.core.common.net.HostNameUtils; import com.fsck.k9.mail.MessagingException; import com.fsck.k9.mail.ssl.TrustManagerFactory; @@ -107,7 +108,8 @@ public class DefaultTrustedSocketFactory implements TrustedSocketFactory { return items.toArray(new String[0]); } - public Socket createSocket(Socket socket, String host, int port, String clientCertificateAlias) + @NonNull + public Socket createSocket(Socket socket, @NonNull String host, int port, String clientCertificateAlias) throws NoSuchAlgorithmException, KeyManagementException, MessagingException, IOException { TrustManager[] trustManagers = new TrustManager[] { trustManagerFactory.getTrustManagerForDomain(host, port) }; diff --git a/mail/common/src/main/java/com/fsck/k9/mail/ssl/TrustedSocketFactory.kt b/mail/common/src/main/java/com/fsck/k9/mail/ssl/TrustedSocketFactory.kt index c3ce808fd0..89063fce08 100644 --- a/mail/common/src/main/java/com/fsck/k9/mail/ssl/TrustedSocketFactory.kt +++ b/mail/common/src/main/java/com/fsck/k9/mail/ssl/TrustedSocketFactory.kt @@ -1,13 +1,17 @@ -package com.fsck.k9.mail.ssl; +package com.fsck.k9.mail.ssl -import com.fsck.k9.mail.MessagingException; +import com.fsck.k9.mail.MessagingException +import java.io.IOException +import java.net.Socket +import java.security.KeyManagementException +import java.security.NoSuchAlgorithmException -import java.io.IOException; -import java.net.Socket; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; - -public interface TrustedSocketFactory { - Socket createSocket(Socket socket, String host, int port, String clientCertificateAlias) - throws NoSuchAlgorithmException, KeyManagementException, MessagingException, IOException; +interface TrustedSocketFactory { + @Throws( + NoSuchAlgorithmException::class, + KeyManagementException::class, + MessagingException::class, + IOException::class, + ) + fun createSocket(socket: Socket?, host: String, port: Int, clientCertificateAlias: String?): Socket } -- GitLab From 583240f5c7a04e4c22d7a6d80a9528eb9acd9384 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 12 Mar 2025 14:08:38 +0100 Subject: [PATCH 087/262] Rename .java to .kt --- ...ltTrustedSocketFactory.java => DefaultTrustedSocketFactory.kt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename legacy/core/src/main/java/com/fsck/k9/helper/{DefaultTrustedSocketFactory.java => DefaultTrustedSocketFactory.kt} (100%) diff --git a/legacy/core/src/main/java/com/fsck/k9/helper/DefaultTrustedSocketFactory.java b/legacy/core/src/main/java/com/fsck/k9/helper/DefaultTrustedSocketFactory.kt similarity index 100% rename from legacy/core/src/main/java/com/fsck/k9/helper/DefaultTrustedSocketFactory.java rename to legacy/core/src/main/java/com/fsck/k9/helper/DefaultTrustedSocketFactory.kt -- GitLab From f9957abba2572150712f931c38e7aa538b007b81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 12 Mar 2025 14:08:39 +0100 Subject: [PATCH 088/262] Change DefaultTrustedSocketFactory to Kotlin --- .../k9/helper/DefaultTrustedSocketFactory.kt | 270 +++++++++--------- 1 file changed, 132 insertions(+), 138 deletions(-) diff --git a/legacy/core/src/main/java/com/fsck/k9/helper/DefaultTrustedSocketFactory.kt b/legacy/core/src/main/java/com/fsck/k9/helper/DefaultTrustedSocketFactory.kt index 604c29f014..6714ebe055 100644 --- a/legacy/core/src/main/java/com/fsck/k9/helper/DefaultTrustedSocketFactory.kt +++ b/legacy/core/src/main/java/com/fsck/k9/helper/DefaultTrustedSocketFactory.kt @@ -1,40 +1,72 @@ -package com.fsck.k9.helper; - - -import java.io.IOException; -import java.net.Socket; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import android.content.Context; -import android.net.SSLCertificateSocketFactory; -import android.os.Build; -import android.text.TextUtils; - -import androidx.annotation.NonNull; -import app.k9mail.core.common.net.HostNameUtils; -import com.fsck.k9.mail.MessagingException; -import com.fsck.k9.mail.ssl.TrustManagerFactory; -import com.fsck.k9.mail.ssl.TrustedSocketFactory; -import javax.net.ssl.KeyManager; -import javax.net.ssl.SNIHostName; -import javax.net.ssl.SNIServerName; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLParameters; -import javax.net.ssl.SSLSocket; -import javax.net.ssl.SSLSocketFactory; -import javax.net.ssl.TrustManager; -import timber.log.Timber; - - -public class DefaultTrustedSocketFactory implements TrustedSocketFactory { - private static final String[] ENABLED_CIPHERS; - private static final String[] ENABLED_PROTOCOLS; - - private static final String[] DISALLOWED_CIPHERS = { +package com.fsck.k9.helper + +import android.content.Context +import android.net.SSLCertificateSocketFactory +import android.os.Build +import android.text.TextUtils +import app.k9mail.core.common.net.HostNameUtils.isLegalIPAddress +import com.fsck.k9.mail.MessagingException +import com.fsck.k9.mail.ssl.TrustManagerFactory +import com.fsck.k9.mail.ssl.TrustedSocketFactory +import java.io.IOException +import java.net.Socket +import java.security.KeyManagementException +import java.security.NoSuchAlgorithmException +import java.util.Collections +import javax.net.ssl.KeyManager +import javax.net.ssl.SNIHostName +import javax.net.ssl.SNIServerName +import javax.net.ssl.SSLContext +import javax.net.ssl.SSLSocket +import javax.net.ssl.SSLSocketFactory +import javax.net.ssl.TrustManager +import timber.log.Timber + +class DefaultTrustedSocketFactory( + private val context: Context?, + private val trustManagerFactory: TrustManagerFactory, +) : TrustedSocketFactory { + + @Throws( + NoSuchAlgorithmException::class, + KeyManagementException::class, + MessagingException::class, + IOException::class, + ) + override fun createSocket(socket: Socket?, host: String, port: Int, clientCertificateAlias: String?): Socket { + val trustManagers = arrayOf(trustManagerFactory.getTrustManagerForDomain(host, port)) + var keyManagers: Array? = null + if (!TextUtils.isEmpty(clientCertificateAlias)) { + keyManagers = arrayOf(KeyChainKeyManager(context, clientCertificateAlias)) + } + + val sslContext = SSLContext.getInstance("TLS") + sslContext.init(keyManagers, trustManagers, null) + val socketFactory = sslContext.socketFactory + val trustedSocket: Socket? + if (socket == null) { + trustedSocket = socketFactory.createSocket() + } else { + trustedSocket = socketFactory.createSocket(socket, host, port, true) + } + + val sslSocket = trustedSocket as SSLSocket + + hardenSocket(sslSocket) + + // RFC 6066 does not permit the use of literal IPv4 or IPv6 addresses as SNI hostnames. + if (isLegalIPAddress(host) == null) { + setSniHost(socketFactory, sslSocket, host) + } + + return trustedSocket + } + + companion object { + private val ENABLED_CIPHERS: Array? + private val ENABLED_PROTOCOLS: Array? + + private val DISALLOWED_CIPHERS = arrayOf( "SSL_RSA_WITH_DES_CBC_SHA", "SSL_DHE_RSA_WITH_DES_CBC_SHA", "SSL_DHE_DSS_WITH_DES_CBC_SHA", @@ -55,119 +87,81 @@ public class DefaultTrustedSocketFactory implements TrustedSocketFactory { "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA", "TLS_ECDH_anon_WITH_NULL_SHA", "TLS_ECDH_anon_WITH_RC4_128_SHA", - "TLS_RSA_WITH_NULL_SHA256" - }; - - private static final String[] DISALLOWED_PROTOCOLS = { - "SSLv3" - }; - - static { - String[] enabledCiphers = null; - String[] supportedProtocols = null; - - try { - SSLContext sslContext = SSLContext.getInstance("TLS"); - sslContext.init(null, null, null); - SSLSocketFactory sf = sslContext.getSocketFactory(); - SSLSocket sock = (SSLSocket) sf.createSocket(); - enabledCiphers = sock.getEnabledCipherSuites(); - - /* - * Retrieve all supported protocols, not just the (default) enabled - * ones. TLSv1.1 & TLSv1.2 are supported on API levels 16+, but are - * only enabled by default on API levels 20+. - */ - supportedProtocols = sock.getSupportedProtocols(); - } catch (Exception e) { - Timber.e(e, "Error getting information about available SSL/TLS ciphers and protocols"); - } - - ENABLED_CIPHERS = (enabledCiphers == null) ? null : remove(enabledCiphers, DISALLOWED_CIPHERS); - ENABLED_PROTOCOLS = (supportedProtocols == null) ? null : remove(supportedProtocols, DISALLOWED_PROTOCOLS); - } - - private final Context context; - private final TrustManagerFactory trustManagerFactory; - - public DefaultTrustedSocketFactory(Context context, TrustManagerFactory trustManagerFactory) { - this.context = context; - this.trustManagerFactory = trustManagerFactory; - } - - protected static String[] remove(String[] enabled, String[] disallowed) { - List items = new ArrayList<>(); - Collections.addAll(items, enabled); - - if (disallowed != null) { - for (String item : disallowed) { - items.remove(item); + "TLS_RSA_WITH_NULL_SHA256", + ) + + private val DISALLOWED_PROTOCOLS = arrayOf( + "SSLv3", + ) + + init { + var enabledCiphers: Array? = null + var supportedProtocols: Array? = null + + try { + val sslContext = SSLContext.getInstance("TLS") + sslContext.init(null, null, null) + val sf = sslContext.socketFactory + val sock = sf.createSocket() as SSLSocket + enabledCiphers = sock.enabledCipherSuites + + /* + * Retrieve all supported protocols, not just the (default) enabled + * ones. TLSv1.1 & TLSv1.2 are supported on API levels 16+, but are + * only enabled by default on API levels 20+. + */ + supportedProtocols = sock.supportedProtocols + } catch (e: Exception) { + Timber.e(e, "Error getting information about available SSL/TLS ciphers and protocols") } - } - - return items.toArray(new String[0]); - } - - @NonNull - public Socket createSocket(Socket socket, @NonNull String host, int port, String clientCertificateAlias) - throws NoSuchAlgorithmException, KeyManagementException, MessagingException, IOException { - TrustManager[] trustManagers = new TrustManager[] { trustManagerFactory.getTrustManagerForDomain(host, port) }; - KeyManager[] keyManagers = null; - if (!TextUtils.isEmpty(clientCertificateAlias)) { - keyManagers = new KeyManager[] { new KeyChainKeyManager(context, clientCertificateAlias) }; + ENABLED_CIPHERS = if (enabledCiphers == null) null else remove(enabledCiphers, DISALLOWED_CIPHERS) + ENABLED_PROTOCOLS = + if (supportedProtocols == null) null else remove(supportedProtocols, DISALLOWED_PROTOCOLS) } - SSLContext sslContext = SSLContext.getInstance("TLS"); - sslContext.init(keyManagers, trustManagers, null); - SSLSocketFactory socketFactory = sslContext.getSocketFactory(); - Socket trustedSocket; - if (socket == null) { - trustedSocket = socketFactory.createSocket(); - } else { - trustedSocket = socketFactory.createSocket(socket, host, port, true); - } + private fun remove(enabled: Array, disallowed: Array?): Array { + val items: MutableList = ArrayList() + Collections.addAll(items, *enabled) - SSLSocket sslSocket = (SSLSocket) trustedSocket; - - hardenSocket(sslSocket); + if (disallowed != null) { + for (item in disallowed) { + items.remove(item) + } + } - // RFC 6066 does not permit the use of literal IPv4 or IPv6 addresses as SNI hostnames. - if (HostNameUtils.INSTANCE.isLegalIPAddress(host) == null) { - setSniHost(socketFactory, sslSocket, host); + return items.toTypedArray() } - return trustedSocket; - } - - private static void hardenSocket(SSLSocket sock) { - if (ENABLED_CIPHERS != null) { - sock.setEnabledCipherSuites(ENABLED_CIPHERS); - } - if (ENABLED_PROTOCOLS != null) { - sock.setEnabledProtocols(ENABLED_PROTOCOLS); + private fun hardenSocket(sock: SSLSocket) { + if (ENABLED_CIPHERS != null) { + sock.enabledCipherSuites = ENABLED_CIPHERS + } + if (ENABLED_PROTOCOLS != null) { + sock.enabledProtocols = ENABLED_PROTOCOLS + } } - } - public static void setSniHost(SSLSocketFactory factory, SSLSocket socket, String hostname) { - if (factory instanceof android.net.SSLCertificateSocketFactory) { - SSLCertificateSocketFactory sslCertificateSocketFactory = (SSLCertificateSocketFactory) factory; - sslCertificateSocketFactory.setHostname(socket, hostname); - } else if (Build.VERSION.SDK_INT >= 24) { - SSLParameters sslParameters = socket.getSSLParameters(); - List sniServerNames = Collections.singletonList(new SNIHostName(hostname)); - sslParameters.setServerNames(sniServerNames); - socket.setSSLParameters(sslParameters); - } else { - setHostnameViaReflection(socket, hostname); + private fun setSniHost(factory: SSLSocketFactory?, socket: SSLSocket, hostname: String?) { + if (factory is SSLCertificateSocketFactory) { + val sslCertificateSocketFactory = factory + sslCertificateSocketFactory.setHostname(socket, hostname) + } else if (Build.VERSION.SDK_INT >= 24) { + val sslParameters = socket.getSSLParameters() + val sniServerNames = mutableListOf(SNIHostName(hostname)) + sslParameters.serverNames = sniServerNames + socket.setSSLParameters(sslParameters) + } else { + setHostnameViaReflection(socket, hostname) + } } - } - private static void setHostnameViaReflection(SSLSocket socket, String hostname) { - try { - socket.getClass().getMethod("setHostname", String.class).invoke(socket, hostname); - } catch (Throwable e) { - Timber.e(e, "Could not call SSLSocket#setHostname(String) method "); + private fun setHostnameViaReflection(socket: SSLSocket, hostname: String?) { + try { + socket.javaClass.getMethod("setHostname", String::class.java).invoke(socket, hostname) + } catch (e: Throwable) { + Timber.e(e, "Could not call SSLSocket#setHostname(String) method ") + } } } } -- GitLab From 05f8318d1018cc3878895623d8c2ad1d1552b5d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 12 Mar 2025 16:11:01 +0100 Subject: [PATCH 089/262] Remove outdated images --- images/drawable-src/btn_edit.png | Bin 1917 -> 0 bytes images/drawable-src/btn_empty_disable.png | Bin 3688 -> 0 bytes images/drawable-src/btn_empty_normal.png | Bin 3560 -> 0 bytes images/drawable-src/btn_empty_pressed.png | Bin 3904 -> 0 bytes images/drawable-src/btn_empty_selected.png | Bin 4078 -> 0 bytes images/drawable-src/ic_action_delete.svg | 11 - .../drawable-src/ic_action_mark_as_read.svg | 10 - .../ic_action_request_read_receipt_dark.svg | 98 ------- .../ic_action_request_read_receipt_light.svg | 95 ------- .../ic_action_single_message_options.svg | 10 - images/drawable-src/ic_export.svg | 60 ---- images/drawable-src/ic_import.svg | 58 ---- .../ic_notify_check_mail_anim_0.svg | 70 ----- .../ic_notify_check_mail_anim_0__legacy.svg | 122 -------- .../ic_notify_check_mail_anim_1.svg | 70 ----- .../ic_notify_check_mail_anim_1__legacy.svg | 122 -------- .../ic_notify_check_mail_anim_2.svg | 70 ----- .../ic_notify_check_mail_anim_2__legacy.svg | 122 -------- .../ic_notify_check_mail_anim_3.svg | 70 ----- .../ic_notify_check_mail_anim_3__legacy.svg | 122 -------- .../ic_notify_check_mail_anim_4.svg | 70 ----- .../ic_notify_check_mail_anim_4__legacy.svg | 122 -------- .../ic_notify_check_mail_anim_5.svg | 70 ----- .../ic_notify_check_mail_anim_5__legacy.svg | 122 -------- images/drawable-src/ic_notify_new_mail.svg | 69 ----- .../ic_notify_new_mail__legacy.svg | 84 ------ images/drawable-src/ic_outbox.svg | 60 ---- images/drawer_header_background.svg | 263 ------------------ images/drawer_header_background_generate.sh | 11 - images/show_more_indicator.svg | 20 -- 30 files changed, 2001 deletions(-) delete mode 100644 images/drawable-src/btn_edit.png delete mode 100644 images/drawable-src/btn_empty_disable.png delete mode 100644 images/drawable-src/btn_empty_normal.png delete mode 100644 images/drawable-src/btn_empty_pressed.png delete mode 100644 images/drawable-src/btn_empty_selected.png delete mode 100644 images/drawable-src/ic_action_delete.svg delete mode 100644 images/drawable-src/ic_action_mark_as_read.svg delete mode 100644 images/drawable-src/ic_action_request_read_receipt_dark.svg delete mode 100644 images/drawable-src/ic_action_request_read_receipt_light.svg delete mode 100644 images/drawable-src/ic_action_single_message_options.svg delete mode 100644 images/drawable-src/ic_export.svg delete mode 100644 images/drawable-src/ic_import.svg delete mode 100644 images/drawable-src/ic_notify_check_mail_anim_0.svg delete mode 100644 images/drawable-src/ic_notify_check_mail_anim_0__legacy.svg delete mode 100644 images/drawable-src/ic_notify_check_mail_anim_1.svg delete mode 100644 images/drawable-src/ic_notify_check_mail_anim_1__legacy.svg delete mode 100644 images/drawable-src/ic_notify_check_mail_anim_2.svg delete mode 100644 images/drawable-src/ic_notify_check_mail_anim_2__legacy.svg delete mode 100644 images/drawable-src/ic_notify_check_mail_anim_3.svg delete mode 100644 images/drawable-src/ic_notify_check_mail_anim_3__legacy.svg delete mode 100644 images/drawable-src/ic_notify_check_mail_anim_4.svg delete mode 100644 images/drawable-src/ic_notify_check_mail_anim_4__legacy.svg delete mode 100644 images/drawable-src/ic_notify_check_mail_anim_5.svg delete mode 100644 images/drawable-src/ic_notify_check_mail_anim_5__legacy.svg delete mode 100644 images/drawable-src/ic_notify_new_mail.svg delete mode 100644 images/drawable-src/ic_notify_new_mail__legacy.svg delete mode 100644 images/drawable-src/ic_outbox.svg delete mode 100644 images/drawer_header_background.svg delete mode 100755 images/drawer_header_background_generate.sh delete mode 100644 images/show_more_indicator.svg diff --git a/images/drawable-src/btn_edit.png b/images/drawable-src/btn_edit.png deleted file mode 100644 index 666ffe8a495320e65a731e7505b2f739432f5552..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1917 zcmeAS@N?(olHy`uVBq!ia0y~yV9)?z4i*Lm2DR@6&lngOI14-?iy0WWg+Z8+Vb&Z8 z1_ow{OlRkSfQrkEallaFKzn0jqoTgO{!~U$10#c)-Nz1`IB?)VLFDy| zM^8>|G&wLUCLrX{fdd5%jg1F2RJU5pY;1hU&CKjvRq5%-$;_P0!_3_55mW|dGlJM< z9uth2nUlGhnT7p5vs^iunVFl5>l{-9)2iG$n-(rzy0j_Tt1f7jQ$cE>XI9?Eru4X? zxuKXS%~Rhc=IO{=-%ga#`Ix1b$|A&ZBeu2wU< zDswYKGgC8TGqW>;vy!vzVWzglJoyqwC1WMLCBqHwB?~2UCCxfe(il0za#E$@XK69- zX?)Y7*Ho=pyXN~1otw)x)+Y0(-#@$X$i<@{Ta71vW}2>iT`bS{9ji@{O>kvvh5AR% z&%TeRKaAH|puEBPLgYMs)Z@e@}}m@?T$ZK}SmZmrWY zpRm|((_-fD>HZ_%y0)v;tI8{X>h)D3D`u_u7h=8Q-crF;E0_FqeBJO(Wo}5Uwyopd z@L%pcViMP+j!N8~bz-*B?0qJ?6ZTzB>U_$w+Uj-8Y>V3t*5TFJ?8)x3>Za+c;;iA7 z=B(wZ{H6Y}`oj6r^5ypv_Otx|)9~v+r=xdsd20+$t>ifoMe$5gQNdV2W8*UaJIyTH zT<$K}@T6^u=}Pm%G^soB~&_O~?ehF+=N6~1--#{chJW_xZ{|36pC{_O{z-kEp}~ zqq=I}&!(l_E@IpDes0q#{<(Lm;%dM3g^|1S_dadQo$X_me=}=S?r*-;bAOlberLH` zKj(jQvt@goT&BHRUCmL?*TK)vsm%XdT6f9yt+)GnmAJpk04(LhALGChK6PahM)f#7#dzOFq9fFFuY1&V6d9Oz#yJKDgLM%0|WDYPZ!6K zid$>KeRHH;C2BYCz85R4UKVug#uxsrUS6S()EvE%xTaP;y&#lqTBh=fIrqBL9D%YF zK9!(qChMs?6dBq16s}G@#aP%}eaqo>H77Uk`LwM*a?Rdci|r!(QC?eu<+=EjA}#)|u1UM25zd?v8>AD$ z{Z3Nl^YxjteXg$+f9fUmDrS0;V)qL6s}jcZk_@lE{8c5wvL(cM+5by18(c-a=d2A8 z{cz*3-uGrk-Cnajuan+HaqEX|S@h=+>kPT6ZTd{h{_owHu(yDr@k9CZ@Bjw~ZpM}0 zb4(&~7l$-G4!-;TcO83(x7=l0i~BhO6IV;GbN|%)?#M@`;It^SzL}d2aYeV6HEg)2 z{qxYz`AH6y_1{9*+_1~|#XCzT%t1k=TJQIv*6luw34b(J3(NEUEqJ#mb5aI_%7fst zlko@ENlfV8d(dfy(=ox)sx!h{6&USqzOG$2S877T`BJ7svQHR}_Z&{1?KP3O?2jn6qMZg zw`9Y{`d@!ogIh!_wU@lP=ddF!Z*$tstm!Won|?JcIQK2qzmlkfjZ2NiIk@L)497m?aa`j|+P0K42cI#hz?*0D2dwZ?E<`{ikyzT6^ zt=FEcS~sGqpbb7HK0)-w4Rq#Zeu z{qLZG$65nF4TpW%{~kS`6FJh6?+(x&k1aHoBi%pQm*hj`>l64Wf-b{ zA34^@_Qc`90?wOdbCbMgyzdk|z2vRj?uxvHF?_+LCubhcF=pqhiRv&vC)dNZF*&%8 zHAV6Ie4%273s&ELcu#z{x3p?jY;ES#scZjFPR@^C%)+qJ_|x?h8#T*bS~`^dj{NwZ aL3jB>akIr;{}~t<7(8A5T-G@yGywn>uW+CM diff --git a/images/drawable-src/btn_empty_disable.png b/images/drawable-src/btn_empty_disable.png deleted file mode 100644 index 486fc0694159e021919d814e1c09351a184527cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3688 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4mJh`hH$2z?F(QWTKjuBBy{?hvLGUqJakmU0qqEPb}zQ?(1vl5e?Mg>EgP<{zP$6U-ROQ zu2a7sRxi%Jw&(k^v;VeUw|lQz`~GlIyvbvLx3(rf_nY4%M1;3f6T0AWQd-kD9X5C zB7=f(YKIF$hBd>Q^I=`C3=swlB5B@7EE#U-G8lMT#JFBV&*2Bohp{DjnN#sh3w(sdU6`)JjJy| z%o3RrXF2E{s+=il)M�PV*|l=S%D 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 diff --git a/images/drawable-src/btn_empty_normal.png b/images/drawable-src/btn_empty_normal.png deleted file mode 100644 index efa36e8b8d98a95a88a86d34c58edceb6107cc6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3560 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4mJh`hH$2z?F(QWTKjuBBy{?hvLGUqJakmU0qqEPb}zQ?(1vl5e?Mg>EgP<{zP$6U-ROQ zu2a7sRxi%Jw&(k^v;VeUw|lQz`~GlIyvbvLx3(rf_nY4%M1;3f6T0AWQd-kD9X5C zB7=f(YKIF$hBd>Q^I=`C3=swlB5B@7EE#U-G8lMT#JFBV&*2Bohp{DjnN#sh3w(sdU6`)JjJy| z%o3RrXF2E{s+=il)M�PV*|l=S%D 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 AM*si- diff --git a/images/drawable-src/btn_empty_pressed.png b/images/drawable-src/btn_empty_pressed.png deleted file mode 100644 index 5293a86bad474fbd61841a2c1c6f2e833723732c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3904 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4mJh`hH$2z?F(QWTKjuBBy{?hvLGUqJakmU0qqEPb}zQ?(1vl5e?Mg>EgP<{zP$6U-ROQ zu2a7sRxi%Jw&(k^v;VeUw|lQz`~GlIyvbvLx3(rf_nY4%M1;3f6T0AWQd-kD9X5C zB7=f(YKIF$hBd>Q^I=`C3=swlB5B@7EE#U-G8lMT#JFBV&*2Bohp{DjnN#sh3w(sdU6`)JjJy| z%o3RrXF2E{s+=il)M�PV*|l=S%D z)AOqf92giLmegJRr=!1Fs==DAA@|=R)pslzaoh_^zjvo?;&<4}u;Asb@XrOHuyI{D zVdu@8PoF%w;dR6*I`LF^?Z5Ox@dv{H=KQR)`SbnjgME)w8jWHb-C2G-ICSQV&r+H5 zlQ>(F?mX*v|FfO@{~y`QN=H1Cc1CE4JPs5p>~opb^Vw*rQm4}-&7-Q9{-->;uk)MP z?!GC*hAcbA>WR85Vw0J_d8-RVlpJ{Uoq^%g?)-ySG&qj}HTE=evN)dL5KdIQ z)xnt56`|b6AwIM9hvGpG7NKqxg_9j3flA&JO+5^QxN*)_l1-a!&&`e3ua#^+9GA!W47@5h1D7SxBBgz zj~g6#A;E5ZB*#GS*kPxQ7CM}hlTU9{TEnyYnAC=_HO#v^zb2pGSk5BU=z4(DjHTR3 zAyLlJBf=-b?}o<;1sN3+!CRc>oXjnOht!oOukhZYwoCBm5s4%t!}bUd9p!66{lfYJ z)g8`9%vFRsosHCYPGIufxFqC~&?UD^c|poAbym(c@sLuUeDYRG_9k}ADLM+;Ct9D( zeRBAT@e}DMil3sn<|a85F8LAsNF(S}mY3vHfu|-<*-~d1IfgEt6?AvS!Vp2z{wSxl z3%3QW4{To{Y*ISQ@@%u1r}xsei>6+d$`H@^p1J--$u7aWQ|0`oUkJZ+`lb7e=`WbS zl=JYmi8deaNY{{@Ex|64E?F+IeumF7$;;i6$3qOv4PVcAK9hfDerSZ&Hmw@biKn=x zdQDZEDy^j-vU1h3RrgkLhkgz{9n!xtF1U7`Tc~mHe>d_u9`{m@QFl-8KgT-vdGO8PyUV$j zi}~7GeO;%wDtoE)!rd*_s-Zv4yNvdDMa_T;rjSw=362#t!}?6!99TGea2*X~{}xO}JIWWUw(uB9K| z@NwJ8Z7a7+Zg_fw?e@BDx!Y zH{DKew)C;PC-y$^D*0L%`>^WL*SWJd&pz~a#qIU)%-&_bYrix9jLCe>d6CA&7Y?6r zeh~QdqCNNgsRr5i*VOqt`!}Xte?weiF{Ks~WZOrc( z-HVJrV}4-!iS4KT59iN|Z@uqaulzsdf7Sns49go-8Pl0N8yy>?nSTGMs!`nEXK!^o z_1mVKZykFU>~s`$>~C7z^z`6b#f%egCahKb{(Q!{iRUu;S_A4{T)V)Y_$;yea2=0& zYkO;Wn|)tFM}*Wx!|A5w7w~uqa%k{cmrdoEZ^s;PjneQ^$Wq(XB zE%MCOh`AA-Io>jsdRptu@^bdw|MT{9`=hy!xF1)G&(J>+TTr?1+@UY6%f(je3F%l( zbMWc#vzYS1Q9x^jSdZ!_;d0eJuF6BQhtiewFPdHKxZxb5CFl3aL(8{n(wm8UOe9?^Mp05k-A*loR+-^iPE^P#l9&$H9T$q+0Ijz(^k*ZKKu5}=2N#P zn9q4X|NmQ|LqZQHZCl#r9j+@I@oev!EXz$cg_XCt9*eSSw}r8-vDwkJO)K}R|LV8l z)7RDQRjcyNZj3v4s_EcX#_ZSJpLO=5U*2G_JbEWM>JG<72+!miM zT7N_1PQ_E{_WV=(XWp5zW##H4J5$c5T}pfT?4IttXufHyrazm`m&bea))wCTVO!pQ z{pNaGfBIRC+q;{$IqzJ&-)6_2)a577owc?PSrYOkt)mB z$?2cY_spF-x3*62=bePxi?&riPd;})i$DMUE`gGVmt6mMKeygveJhIR>@!u2w#o?{vP3ODqSM8(!-MR7pPJPya z@&%tS-f{oV*4ljj-^8!|{LZZXGy6}s@wUC5XJKb)`N+QL@5?{SozJJ7SDPpPZ_&Tg z>%_(M>wa8)ef`|U85b8$|1^E_{@j|Se_tJVExG>ou|vn?_MNOSHjMic_WSL@@;l|S z?-$?a_kU8OP_OYn*4_6YK2V5m}MU}$J& zVEFl;fuZ3g14F3+1H-EX1_rAc3=HD=lj4uMF)*-Xd%8G=RNQ(q>wLG2tH^QtugPg; ziVK83PLcVxrQ*h9JtvVzuKsa1=V!mwMYf(Lhx$=uwX5DsW5mbEcM9&xk~$` zUk*f7r>wO#mp*4H6?FE0auq{{qq#~J|CGNPOTVO^`>89RyeGZKGE1)D`L*?XDg_L# zHGfQyk=XqrLV~mAAd|p_W$71MydE8QH@5rz&C1X%$jjaEShd};ic1aqf4>v%%RlF+ zwt%LvR?{VvyDDk*+{i;_R3U7YwwRf<|&`G=h zHLbp*WuHRCW~Q2#t#_&zeP!-fcyZ{P##wv`4fQQP_hx6ubDmA_8_QXLtez5J{7hA7 zUd!a?Hr!6_s_krbEZD^xtkXCw%Q?lNr`6KQu&PRH*5#gzOUPQUf)#d*1OBoI5QRs z=(;gnu3m8Q>o?c``C0rEB&JMQ#p8WxO+?ODrs)3%_s+icHcEZPEjvb8wtc$3=jTgT zvD}!sEW5da{Z^O61=&vx+q!PnGVRt=yv_QPuX4eGU5AA({pV;@V=HM-ayY&B!vD;Y z>`Nvi54+My;78XY-TYBYCxgo|7_bD%Pjr@EnoFZY>?=*!~` zk-?06yqIj2HU&9}pZ#$|eI2)7(%p%btc`a-uGoxMJd@z+fD598feaTMo+_Z)c%~i8( z7j5noQc79LX~8Y*9zM&QS@qbYE2-6v>_JZ_J)55YeOqvE_|;cWvwgm&cU8=Id(}8D zmNSnf2iR*P@BAVE|Wb&{)XtciUp^y+_#ruif3fMUAJY;{>v3Sd-&(< y`t@u6f#(N|A23v;dVjQMddFPepw3Xw&!Aem_^FZW<*5t|3=E#GelF{r5}E*KPD@|_ diff --git a/images/drawable-src/btn_empty_selected.png b/images/drawable-src/btn_empty_selected.png deleted file mode 100644 index e9ee0367750061516b6dd1307a9acc8efa89a8e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4078 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4mJh`hH$2z?F(QWTKjuBBy{?hvLGUqJakmU0qqEPb}zQ?(1vl5e?Mg>EgP<{zP$6U-ROQ zu2a7sRxi%Jw&(k^v;VeUw|lQz`~GlIyvbvLx3(rf_nY4%M1;3f6T0AWQd-kD9X5C zB7=f(YKIF$hBd>Q^I=`C3=swlB5B@7EE#U-G8lMT#JFBV&*2Bohp{DjnN#sh3w(sdU6`)JjJy| z%o3RrXF2E{s+=il)M�PV*|l=S%D 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 diff --git a/images/drawable-src/ic_action_delete.svg b/images/drawable-src/ic_action_delete.svg deleted file mode 100644 index 8f745143fc..0000000000 --- a/images/drawable-src/ic_action_delete.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - diff --git a/images/drawable-src/ic_action_mark_as_read.svg b/images/drawable-src/ic_action_mark_as_read.svg deleted file mode 100644 index a6b7d252a5..0000000000 --- a/images/drawable-src/ic_action_mark_as_read.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - diff --git a/images/drawable-src/ic_action_request_read_receipt_dark.svg b/images/drawable-src/ic_action_request_read_receipt_dark.svg deleted file mode 100644 index d4d9619d23..0000000000 --- a/images/drawable-src/ic_action_request_read_receipt_dark.svg +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/images/drawable-src/ic_action_request_read_receipt_light.svg b/images/drawable-src/ic_action_request_read_receipt_light.svg deleted file mode 100644 index 6bcf90da7a..0000000000 --- a/images/drawable-src/ic_action_request_read_receipt_light.svg +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/images/drawable-src/ic_action_single_message_options.svg b/images/drawable-src/ic_action_single_message_options.svg deleted file mode 100644 index 0655775e59..0000000000 --- a/images/drawable-src/ic_action_single_message_options.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - diff --git a/images/drawable-src/ic_export.svg b/images/drawable-src/ic_export.svg deleted file mode 100644 index d015bd7b32..0000000000 --- a/images/drawable-src/ic_export.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/images/drawable-src/ic_import.svg b/images/drawable-src/ic_import.svg deleted file mode 100644 index 64d0e4b236..0000000000 --- a/images/drawable-src/ic_import.svg +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/images/drawable-src/ic_notify_check_mail_anim_0.svg b/images/drawable-src/ic_notify_check_mail_anim_0.svg deleted file mode 100644 index 77d63bd86c..0000000000 --- a/images/drawable-src/ic_notify_check_mail_anim_0.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/images/drawable-src/ic_notify_check_mail_anim_0__legacy.svg b/images/drawable-src/ic_notify_check_mail_anim_0__legacy.svg deleted file mode 100644 index e0d4b10ad6..0000000000 --- a/images/drawable-src/ic_notify_check_mail_anim_0__legacy.svg +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/images/drawable-src/ic_notify_check_mail_anim_1.svg b/images/drawable-src/ic_notify_check_mail_anim_1.svg deleted file mode 100644 index 2240e45366..0000000000 --- a/images/drawable-src/ic_notify_check_mail_anim_1.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/images/drawable-src/ic_notify_check_mail_anim_1__legacy.svg b/images/drawable-src/ic_notify_check_mail_anim_1__legacy.svg deleted file mode 100644 index e93b4b29ed..0000000000 --- a/images/drawable-src/ic_notify_check_mail_anim_1__legacy.svg +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/images/drawable-src/ic_notify_check_mail_anim_2.svg b/images/drawable-src/ic_notify_check_mail_anim_2.svg deleted file mode 100644 index 6bf86da507..0000000000 --- a/images/drawable-src/ic_notify_check_mail_anim_2.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/images/drawable-src/ic_notify_check_mail_anim_2__legacy.svg b/images/drawable-src/ic_notify_check_mail_anim_2__legacy.svg deleted file mode 100644 index 8bc66b7ec3..0000000000 --- a/images/drawable-src/ic_notify_check_mail_anim_2__legacy.svg +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/images/drawable-src/ic_notify_check_mail_anim_3.svg b/images/drawable-src/ic_notify_check_mail_anim_3.svg deleted file mode 100644 index 5c5cff76e8..0000000000 --- a/images/drawable-src/ic_notify_check_mail_anim_3.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/images/drawable-src/ic_notify_check_mail_anim_3__legacy.svg b/images/drawable-src/ic_notify_check_mail_anim_3__legacy.svg deleted file mode 100644 index 95b87b5403..0000000000 --- a/images/drawable-src/ic_notify_check_mail_anim_3__legacy.svg +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/images/drawable-src/ic_notify_check_mail_anim_4.svg b/images/drawable-src/ic_notify_check_mail_anim_4.svg deleted file mode 100644 index 0bb643c043..0000000000 --- a/images/drawable-src/ic_notify_check_mail_anim_4.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/images/drawable-src/ic_notify_check_mail_anim_4__legacy.svg b/images/drawable-src/ic_notify_check_mail_anim_4__legacy.svg deleted file mode 100644 index ae22d324c0..0000000000 --- a/images/drawable-src/ic_notify_check_mail_anim_4__legacy.svg +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/images/drawable-src/ic_notify_check_mail_anim_5.svg b/images/drawable-src/ic_notify_check_mail_anim_5.svg deleted file mode 100644 index 37be7f1703..0000000000 --- a/images/drawable-src/ic_notify_check_mail_anim_5.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/images/drawable-src/ic_notify_check_mail_anim_5__legacy.svg b/images/drawable-src/ic_notify_check_mail_anim_5__legacy.svg deleted file mode 100644 index 69e10ae1eb..0000000000 --- a/images/drawable-src/ic_notify_check_mail_anim_5__legacy.svg +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/images/drawable-src/ic_notify_new_mail.svg b/images/drawable-src/ic_notify_new_mail.svg deleted file mode 100644 index 577574a75c..0000000000 --- a/images/drawable-src/ic_notify_new_mail.svg +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/images/drawable-src/ic_notify_new_mail__legacy.svg b/images/drawable-src/ic_notify_new_mail__legacy.svg deleted file mode 100644 index 0962ffdb28..0000000000 --- a/images/drawable-src/ic_notify_new_mail__legacy.svg +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/images/drawable-src/ic_outbox.svg b/images/drawable-src/ic_outbox.svg deleted file mode 100644 index 787fcd4607..0000000000 --- a/images/drawable-src/ic_outbox.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/images/drawer_header_background.svg b/images/drawer_header_background.svg deleted file mode 100644 index 82e7aff00b..0000000000 --- a/images/drawer_header_background.svg +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/images/drawer_header_background_generate.sh b/images/drawer_header_background_generate.sh deleted file mode 100755 index 8de41d6e15..0000000000 --- a/images/drawer_header_background_generate.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -function generate() { - inkscape "drawer_header_background.svg" -export-area-page --without-gui -e "../app/ui/src/main/res/drawable-$1/drawer_header_background.png" -w $2 -h $3 -} - -generate mdpi 384 216 -generate hdpi 576 324 -generate xhdpi 768 432 -generate xxhdpi 1152 648 -#generate xxxhdpi 1728 972 diff --git a/images/show_more_indicator.svg b/images/show_more_indicator.svg deleted file mode 100644 index 55bd6dab0b..0000000000 --- a/images/show_more_indicator.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - -- GitLab From 3e9eb2facc283e18939e66dbf5686f82d4f06563 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 12 Mar 2025 16:41:59 +0100 Subject: [PATCH 090/262] Refactor to edge out the Java to Kotlin conversion --- .../k9/helper/DefaultTrustedSocketFactory.kt | 80 ++++++++----------- 1 file changed, 32 insertions(+), 48 deletions(-) diff --git a/legacy/core/src/main/java/com/fsck/k9/helper/DefaultTrustedSocketFactory.kt b/legacy/core/src/main/java/com/fsck/k9/helper/DefaultTrustedSocketFactory.kt index 6714ebe055..f1b33d0442 100644 --- a/legacy/core/src/main/java/com/fsck/k9/helper/DefaultTrustedSocketFactory.kt +++ b/legacy/core/src/main/java/com/fsck/k9/helper/DefaultTrustedSocketFactory.kt @@ -12,10 +12,8 @@ import java.io.IOException import java.net.Socket import java.security.KeyManagementException import java.security.NoSuchAlgorithmException -import java.util.Collections import javax.net.ssl.KeyManager import javax.net.ssl.SNIHostName -import javax.net.ssl.SNIServerName import javax.net.ssl.SSLContext import javax.net.ssl.SSLSocket import javax.net.ssl.SSLSocketFactory @@ -62,11 +60,14 @@ class DefaultTrustedSocketFactory( return trustedSocket } - companion object { - private val ENABLED_CIPHERS: Array? - private val ENABLED_PROTOCOLS: Array? + private fun hardenSocket(sock: SSLSocket) { + ENABLED_CIPHERS?.let { sock.enabledCipherSuites = it } + ENABLED_PROTOCOLS?.let { sock.enabledProtocols = it } + } - private val DISALLOWED_CIPHERS = arrayOf( + @Suppress("TooGenericExceptionCaught") + companion object { + private val DISALLOWED_CIPHERS = arrayOf( "SSL_RSA_WITH_DES_CBC_SHA", "SSL_DHE_RSA_WITH_DES_CBC_SHA", "SSL_DHE_DSS_WITH_DES_CBC_SHA", @@ -90,69 +91,52 @@ class DefaultTrustedSocketFactory( "TLS_RSA_WITH_NULL_SHA256", ) - private val DISALLOWED_PROTOCOLS = arrayOf( + private val DISALLOWED_PROTOCOLS = arrayOf( "SSLv3", ) + private val ENABLED_CIPHERS: Array? + private val ENABLED_PROTOCOLS: Array? + init { - var enabledCiphers: Array? = null - var supportedProtocols: Array? = null + var enabledCiphers: Array? = null + var supportedProtocols: Array? = null try { - val sslContext = SSLContext.getInstance("TLS") - sslContext.init(null, null, null) - val sf = sslContext.socketFactory - val sock = sf.createSocket() as SSLSocket - enabledCiphers = sock.enabledCipherSuites + val sslContext = SSLContext.getInstance("TLS").apply { + init(null, null, null) + } + val socket = sslContext.socketFactory.createSocket() as SSLSocket + enabledCiphers = socket.enabledCipherSuites /* * Retrieve all supported protocols, not just the (default) enabled * ones. TLSv1.1 & TLSv1.2 are supported on API levels 16+, but are * only enabled by default on API levels 20+. */ - supportedProtocols = sock.supportedProtocols + supportedProtocols = socket.supportedProtocols } catch (e: Exception) { Timber.e(e, "Error getting information about available SSL/TLS ciphers and protocols") } - ENABLED_CIPHERS = if (enabledCiphers == null) null else remove(enabledCiphers, DISALLOWED_CIPHERS) - ENABLED_PROTOCOLS = - if (supportedProtocols == null) null else remove(supportedProtocols, DISALLOWED_PROTOCOLS) + ENABLED_CIPHERS = enabledCiphers?.let { remove(it, DISALLOWED_CIPHERS) } + ENABLED_PROTOCOLS = supportedProtocols?.let { remove(it, DISALLOWED_PROTOCOLS) } } - private fun remove(enabled: Array, disallowed: Array?): Array { - val items: MutableList = ArrayList() - Collections.addAll(items, *enabled) - - if (disallowed != null) { - for (item in disallowed) { - items.remove(item) - } - } - - return items.toTypedArray() + private fun remove(enabled: Array, disallowed: Array): Array { + return enabled.filterNot { it in disallowed }.toTypedArray() } - private fun hardenSocket(sock: SSLSocket) { - if (ENABLED_CIPHERS != null) { - sock.enabledCipherSuites = ENABLED_CIPHERS - } - if (ENABLED_PROTOCOLS != null) { - sock.enabledProtocols = ENABLED_PROTOCOLS - } - } + private fun setSniHost(factory: SSLSocketFactory, socket: SSLSocket, hostname: String) { + when { + factory is SSLCertificateSocketFactory -> factory.setHostname(socket, hostname) + Build.VERSION.SDK_INT >= Build.VERSION_CODES.N -> { + val sslParameters = socket.sslParameters + sslParameters.serverNames = listOf(SNIHostName(hostname)) + socket.sslParameters = sslParameters + } - private fun setSniHost(factory: SSLSocketFactory?, socket: SSLSocket, hostname: String?) { - if (factory is SSLCertificateSocketFactory) { - val sslCertificateSocketFactory = factory - sslCertificateSocketFactory.setHostname(socket, hostname) - } else if (Build.VERSION.SDK_INT >= 24) { - val sslParameters = socket.getSSLParameters() - val sniServerNames = mutableListOf(SNIHostName(hostname)) - sslParameters.serverNames = sniServerNames - socket.setSSLParameters(sslParameters) - } else { - setHostnameViaReflection(socket, hostname) + else -> setHostnameViaReflection(socket, hostname) } } -- GitLab From a862fe05df4ca2770c7124c1937ae9251203e721 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 12 Mar 2025 17:34:02 +0100 Subject: [PATCH 091/262] Fix tests --- .../feature/account/edit/AccountEditModuleKtTest.kt | 12 +++++++++++- .../validation/ServerValidationModuleKtTest.kt | 13 ++++++++++++- .../account/setup/AccountSetupModuleKtTest.kt | 12 +++++++++++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/feature/account/edit/src/test/kotlin/app/k9mail/feature/account/edit/AccountEditModuleKtTest.kt b/feature/account/edit/src/test/kotlin/app/k9mail/feature/account/edit/AccountEditModuleKtTest.kt index a0175448ab..9823cdede4 100644 --- a/feature/account/edit/src/test/kotlin/app/k9mail/feature/account/edit/AccountEditModuleKtTest.kt +++ b/feature/account/edit/src/test/kotlin/app/k9mail/feature/account/edit/AccountEditModuleKtTest.kt @@ -14,6 +14,7 @@ import com.fsck.k9.mail.oauth.OAuth2TokenProvider import com.fsck.k9.mail.oauth.OAuth2TokenProviderFactory import com.fsck.k9.mail.ssl.LocalKeyStore import com.fsck.k9.mail.ssl.TrustedSocketFactory +import java.net.Socket import org.junit.Test import org.junit.runner.RunWith import org.koin.android.ext.koin.androidContext @@ -36,7 +37,16 @@ class AccountEditModuleKtTest : KoinTest { single { Mockito.mock() } single { Mockito.mock() } single { - TrustedSocketFactory { _, _, _, _ -> null } + object : TrustedSocketFactory { + override fun createSocket( + socket: Socket?, + host: String, + port: Int, + clientCertificateAlias: String?, + ): Socket { + return Mockito.mock() + } + } } single { OAuthConfigurationFactory { emptyMap() } } single { diff --git a/feature/account/server/validation/src/test/kotlin/app/k9mail/feature/account/server/validation/ServerValidationModuleKtTest.kt b/feature/account/server/validation/src/test/kotlin/app/k9mail/feature/account/server/validation/ServerValidationModuleKtTest.kt index 288fc28690..f6e588f9f1 100644 --- a/feature/account/server/validation/src/test/kotlin/app/k9mail/feature/account/server/validation/ServerValidationModuleKtTest.kt +++ b/feature/account/server/validation/src/test/kotlin/app/k9mail/feature/account/server/validation/ServerValidationModuleKtTest.kt @@ -12,6 +12,7 @@ import com.fsck.k9.mail.oauth.OAuth2TokenProvider import com.fsck.k9.mail.oauth.OAuth2TokenProviderFactory import com.fsck.k9.mail.ssl.LocalKeyStore import com.fsck.k9.mail.ssl.TrustedSocketFactory +import java.net.Socket import org.junit.Test import org.junit.runner.RunWith import org.koin.android.ext.koin.androidContext @@ -23,6 +24,7 @@ import org.koin.dsl.module import org.koin.test.KoinTest import org.koin.test.check.checkModules import org.koin.test.verify.verify +import org.mockito.Mockito import org.mockito.Mockito.mock import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment @@ -32,7 +34,16 @@ class ServerValidationModuleKtTest : KoinTest { private val externalModule: Module = module { single { - TrustedSocketFactory { _, _, _, _ -> null } + object : TrustedSocketFactory { + override fun createSocket( + socket: Socket?, + host: String, + port: Int, + clientCertificateAlias: String?, + ): Socket { + return Mockito.mock() + } + } } single { OAuthConfigurationFactory { emptyMap() } } single { diff --git a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/AccountSetupModuleKtTest.kt b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/AccountSetupModuleKtTest.kt index b8c7799ec5..7ebcf62412 100644 --- a/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/AccountSetupModuleKtTest.kt +++ b/feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/AccountSetupModuleKtTest.kt @@ -25,6 +25,7 @@ import com.fsck.k9.mail.oauth.OAuth2TokenProvider import com.fsck.k9.mail.oauth.OAuth2TokenProviderFactory import com.fsck.k9.mail.ssl.LocalKeyStore import com.fsck.k9.mail.ssl.TrustedSocketFactory +import java.net.Socket import okhttp3.OkHttpClient import org.junit.Test import org.junit.runner.RunWith @@ -48,7 +49,16 @@ class AccountSetupModuleKtTest : KoinTest { private val externalModule: Module = module { single { OkHttpClient() } single { - TrustedSocketFactory { _, _, _, _ -> null } + object : TrustedSocketFactory { + override fun createSocket( + socket: Socket?, + host: String, + port: Int, + clientCertificateAlias: String?, + ): Socket { + return mock() + } + } } single { AccountCreator { _ -> AccountCreatorResult.Success("accountUuid") } -- GitLab From 9c95c7c83faabd469340948948e6f959492f6b55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 12 Mar 2025 19:54:48 +0100 Subject: [PATCH 092/262] Move ConnectivityManager to :core:android:network module --- core/android/network/build.gradle.kts | 16 ++++++++++++++++ .../android/network/src/main/AndroidManifest.xml | 6 ++++++ .../core/android}/network/ConnectivityManager.kt | 2 +- .../android}/network/ConnectivityManagerApi21.kt | 2 +- .../android}/network/ConnectivityManagerApi23.kt | 2 +- .../android}/network/ConnectivityManagerApi24.kt | 2 +- .../android}/network/ConnectivityManagerBase.kt | 2 +- .../core/android/network/KoinModule.kt | 4 ++-- legacy/core/build.gradle.kts | 1 + .../src/main/java/com/fsck/k9/CoreKoinModules.kt | 4 ++-- .../fsck/k9/controller/push/PushController.kt | 4 ++-- settings.gradle.kts | 1 + 12 files changed, 35 insertions(+), 11 deletions(-) create mode 100644 core/android/network/build.gradle.kts create mode 100644 core/android/network/src/main/AndroidManifest.xml rename {legacy/core/src/main/java/com/fsck/k9 => core/android/network/src/main/kotlin/net/thunderbird/core/android}/network/ConnectivityManager.kt (94%) rename {legacy/core/src/main/java/com/fsck/k9 => core/android/network/src/main/kotlin/net/thunderbird/core/android}/network/ConnectivityManagerApi21.kt (97%) rename {legacy/core/src/main/java/com/fsck/k9 => core/android/network/src/main/kotlin/net/thunderbird/core/android}/network/ConnectivityManagerApi23.kt (98%) rename {legacy/core/src/main/java/com/fsck/k9 => core/android/network/src/main/kotlin/net/thunderbird/core/android}/network/ConnectivityManagerApi24.kt (98%) rename {legacy/core/src/main/java/com/fsck/k9 => core/android/network/src/main/kotlin/net/thunderbird/core/android}/network/ConnectivityManagerBase.kt (94%) rename legacy/core/src/main/java/com/fsck/k9/network/KointModule.kt => core/android/network/src/main/kotlin/net/thunderbird/core/android/network/KoinModule.kt (78%) diff --git a/core/android/network/build.gradle.kts b/core/android/network/build.gradle.kts new file mode 100644 index 0000000000..182fab3b84 --- /dev/null +++ b/core/android/network/build.gradle.kts @@ -0,0 +1,16 @@ +plugins { + id(ThunderbirdPlugins.Library.android) +} + +android { + namespace = "net.thunderbird.core.android.network" +} + +dependencies { + api(projects.core.common) + + implementation(libs.timber) + + testImplementation(projects.core.testing) + testImplementation(libs.robolectric) +} diff --git a/core/android/network/src/main/AndroidManifest.xml b/core/android/network/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..15fea438bf --- /dev/null +++ b/core/android/network/src/main/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/legacy/core/src/main/java/com/fsck/k9/network/ConnectivityManager.kt b/core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManager.kt similarity index 94% rename from legacy/core/src/main/java/com/fsck/k9/network/ConnectivityManager.kt rename to core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManager.kt index c427c9fe5e..73b397a6ea 100644 --- a/legacy/core/src/main/java/com/fsck/k9/network/ConnectivityManager.kt +++ b/core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManager.kt @@ -1,4 +1,4 @@ -package com.fsck.k9.network +package net.thunderbird.core.android.network import android.os.Build import android.net.ConnectivityManager as SystemConnectivityManager diff --git a/legacy/core/src/main/java/com/fsck/k9/network/ConnectivityManagerApi21.kt b/core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManagerApi21.kt similarity index 97% rename from legacy/core/src/main/java/com/fsck/k9/network/ConnectivityManagerApi21.kt rename to core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManagerApi21.kt index cc2af89913..45b612d6f6 100644 --- a/legacy/core/src/main/java/com/fsck/k9/network/ConnectivityManagerApi21.kt +++ b/core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManagerApi21.kt @@ -1,4 +1,4 @@ -package com.fsck.k9.network +package net.thunderbird.core.android.network import android.net.ConnectivityManager.NetworkCallback import android.net.Network diff --git a/legacy/core/src/main/java/com/fsck/k9/network/ConnectivityManagerApi23.kt b/core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManagerApi23.kt similarity index 98% rename from legacy/core/src/main/java/com/fsck/k9/network/ConnectivityManagerApi23.kt rename to core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManagerApi23.kt index 615182f2d9..7549a58e23 100644 --- a/legacy/core/src/main/java/com/fsck/k9/network/ConnectivityManagerApi23.kt +++ b/core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManagerApi23.kt @@ -1,4 +1,4 @@ -package com.fsck.k9.network +package net.thunderbird.core.android.network import android.net.ConnectivityManager.NetworkCallback import android.net.Network diff --git a/legacy/core/src/main/java/com/fsck/k9/network/ConnectivityManagerApi24.kt b/core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManagerApi24.kt similarity index 98% rename from legacy/core/src/main/java/com/fsck/k9/network/ConnectivityManagerApi24.kt rename to core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManagerApi24.kt index 09dd195129..b8e537e075 100644 --- a/legacy/core/src/main/java/com/fsck/k9/network/ConnectivityManagerApi24.kt +++ b/core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManagerApi24.kt @@ -1,4 +1,4 @@ -package com.fsck.k9.network +package net.thunderbird.core.android.network import android.net.ConnectivityManager.NetworkCallback import android.net.Network diff --git a/legacy/core/src/main/java/com/fsck/k9/network/ConnectivityManagerBase.kt b/core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManagerBase.kt similarity index 94% rename from legacy/core/src/main/java/com/fsck/k9/network/ConnectivityManagerBase.kt rename to core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManagerBase.kt index 598acfece0..53df573aeb 100644 --- a/legacy/core/src/main/java/com/fsck/k9/network/ConnectivityManagerBase.kt +++ b/core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManagerBase.kt @@ -1,4 +1,4 @@ -package com.fsck.k9.network +package net.thunderbird.core.android.network import java.util.concurrent.CopyOnWriteArraySet diff --git a/legacy/core/src/main/java/com/fsck/k9/network/KointModule.kt b/core/android/network/src/main/kotlin/net/thunderbird/core/android/network/KoinModule.kt similarity index 78% rename from legacy/core/src/main/java/com/fsck/k9/network/KointModule.kt rename to core/android/network/src/main/kotlin/net/thunderbird/core/android/network/KoinModule.kt index 281c4775b0..ba5fdc0773 100644 --- a/legacy/core/src/main/java/com/fsck/k9/network/KointModule.kt +++ b/core/android/network/src/main/kotlin/net/thunderbird/core/android/network/KoinModule.kt @@ -1,10 +1,10 @@ -package com.fsck.k9.network +package net.thunderbird.core.android.network import android.content.Context import org.koin.dsl.module import android.net.ConnectivityManager as SystemConnectivityManager -internal val connectivityModule = module { +val coreAndroidNetworkModule = module { single { get().getSystemService(Context.CONNECTIVITY_SERVICE) as SystemConnectivityManager } single { ConnectivityManager(systemConnectivityManager = get()) } } diff --git a/legacy/core/build.gradle.kts b/legacy/core/build.gradle.kts index 47c17bffa9..ae7a0dde3f 100644 --- a/legacy/core/build.gradle.kts +++ b/legacy/core/build.gradle.kts @@ -8,6 +8,7 @@ dependencies { api(projects.backend.api) api(projects.library.htmlCleaner) api(projects.core.android.common) + api(projects.core.android.network) api(projects.core.mail.folder.api) api(projects.legacy.account) diff --git a/legacy/core/src/main/java/com/fsck/k9/CoreKoinModules.kt b/legacy/core/src/main/java/com/fsck/k9/CoreKoinModules.kt index 276941edb5..84c5869097 100644 --- a/legacy/core/src/main/java/com/fsck/k9/CoreKoinModules.kt +++ b/legacy/core/src/main/java/com/fsck/k9/CoreKoinModules.kt @@ -11,13 +11,14 @@ import com.fsck.k9.mailstore.mailStoreModule import com.fsck.k9.message.extractors.extractorModule import com.fsck.k9.message.html.htmlModule import com.fsck.k9.message.quote.quoteModule -import com.fsck.k9.network.connectivityModule import com.fsck.k9.notification.coreNotificationModule import com.fsck.k9.power.powerModule import com.fsck.k9.preferences.preferencesModule +import net.thunderbird.core.android.network.coreAndroidNetworkModule val coreModules = listOf( mainModule, + coreAndroidNetworkModule, openPgpModule, autocryptModule, mailStoreModule, @@ -30,7 +31,6 @@ val coreModules = listOf( jobModule, helperModule, preferencesModule, - connectivityModule, powerModule, loggingModule, ) diff --git a/legacy/core/src/main/java/com/fsck/k9/controller/push/PushController.kt b/legacy/core/src/main/java/com/fsck/k9/controller/push/PushController.kt index 7d4d04fc53..49f1fa6000 100644 --- a/legacy/core/src/main/java/com/fsck/k9/controller/push/PushController.kt +++ b/legacy/core/src/main/java/com/fsck/k9/controller/push/PushController.kt @@ -7,8 +7,6 @@ import app.k9mail.legacy.preferences.BackgroundSync import app.k9mail.legacy.preferences.GeneralSettingsManager import com.fsck.k9.backend.BackendManager import com.fsck.k9.helper.mapToSet -import com.fsck.k9.network.ConnectivityChangeListener -import com.fsck.k9.network.ConnectivityManager import com.fsck.k9.notification.PushNotificationManager import com.fsck.k9.notification.PushNotificationState import com.fsck.k9.notification.PushNotificationState.ALARM_PERMISSION_MISSING @@ -26,6 +24,8 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch +import net.thunderbird.core.android.network.ConnectivityChangeListener +import net.thunderbird.core.android.network.ConnectivityManager import timber.log.Timber /** diff --git a/settings.gradle.kts b/settings.gradle.kts index 2606b09b72..806f3bbeb3 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -125,6 +125,7 @@ include( ":core:featureflags", ":core:testing", ":core:android:common", + ":core:android:network", ":core:android:permissions", ":core:android:testing", ":core:ui:compose:common", -- GitLab From afeea397c79a7954cbc60cbcfeae5d8e3d9377bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 13 Mar 2025 08:56:58 +0100 Subject: [PATCH 093/262] Replace magic numbers --- .../thunderbird/core/android/network/ConnectivityManager.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManager.kt b/core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManager.kt index 73b397a6ea..72a1b6f361 100644 --- a/core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManager.kt +++ b/core/android/network/src/main/kotlin/net/thunderbird/core/android/network/ConnectivityManager.kt @@ -18,8 +18,8 @@ interface ConnectivityChangeListener { internal fun ConnectivityManager(systemConnectivityManager: SystemConnectivityManager): ConnectivityManager { return when { - Build.VERSION.SDK_INT >= 24 -> ConnectivityManagerApi24(systemConnectivityManager) - Build.VERSION.SDK_INT >= 23 -> ConnectivityManagerApi23(systemConnectivityManager) + Build.VERSION.SDK_INT >= Build.VERSION_CODES.N -> ConnectivityManagerApi24(systemConnectivityManager) + Build.VERSION.SDK_INT >= Build.VERSION_CODES.M -> ConnectivityManagerApi23(systemConnectivityManager) else -> ConnectivityManagerApi21(systemConnectivityManager) } } -- GitLab From 4d3f2ebb169180e2edfeecafd6c34c92d6a8288d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 13 Mar 2025 10:42:56 +0100 Subject: [PATCH 094/262] Remove Utility connectivity check and replace by ConnectivityManager --- legacy/core/src/main/AndroidManifest.xml | 1 - .../main/java/com/fsck/k9/helper/Utility.java | 20 ------------------- .../k9/ui/messagelist/MessageListFragment.kt | 4 +++- 3 files changed, 3 insertions(+), 22 deletions(-) diff --git a/legacy/core/src/main/AndroidManifest.xml b/legacy/core/src/main/AndroidManifest.xml index 4d083188e4..69f3042548 100644 --- a/legacy/core/src/main/AndroidManifest.xml +++ b/legacy/core/src/main/AndroidManifest.xml @@ -1,7 +1,6 @@ - diff --git a/legacy/core/src/main/java/com/fsck/k9/helper/Utility.java b/legacy/core/src/main/java/com/fsck/k9/helper/Utility.java index 07c74f38c4..9399230555 100644 --- a/legacy/core/src/main/java/com/fsck/k9/helper/Utility.java +++ b/legacy/core/src/main/java/com/fsck/k9/helper/Utility.java @@ -7,10 +7,7 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import android.content.Context; import android.database.Cursor; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; import android.os.Handler; import android.text.TextUtils; @@ -205,23 +202,6 @@ public class Utility { } } - /** - * Check to see if we have network connectivity. - */ - public static boolean hasConnectivity(final Context context) { - final ConnectivityManager connectivityManager = - (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - if (connectivityManager == null) { - return false; - } - final NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo(); - if (netInfo != null && netInfo.getState() == NetworkInfo.State.CONNECTED) { - return true; - } else { - return false; - } - } - private static final Pattern MESSAGE_ID = Pattern.compile("<" + "(?:" + "[a-zA-Z0-9!#$%&'*+\\-/=?^_`{|}~]+" + diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt index 00edf59c6a..bc666c987e 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt @@ -61,6 +61,7 @@ import com.google.android.material.textview.MaterialTextView import java.util.concurrent.Future import kotlinx.datetime.Clock import net.jcip.annotations.GuardedBy +import net.thunderbird.core.android.network.ConnectivityManager import org.koin.android.ext.android.inject import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.core.parameter.parametersOf @@ -82,6 +83,7 @@ class MessageListFragment : private val folderNameFormatter: FolderNameFormatter by inject { parametersOf(requireContext()) } private val messagingController: MessagingController by inject() private val accountManager: AccountManager by inject() + private val connectivityManager: ConnectivityManager by inject() private val clock: Clock by inject() private val handler = MessageListHandler(this) @@ -597,7 +599,7 @@ class MessageListFragment : super.onResume() if (hasConnectivity == null) { - hasConnectivity = Utility.hasConnectivity(requireActivity().application) + hasConnectivity = connectivityManager.isNetworkAvailable() } messagingController.addListener(activityListener) -- GitLab From 22d83b9cf7771add99db73856810a05d68e27105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 13 Mar 2025 11:08:23 +0100 Subject: [PATCH 095/262] Remove unused sMainThreadHandler from Utility --- legacy/core/src/main/java/com/fsck/k9/helper/Utility.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/legacy/core/src/main/java/com/fsck/k9/helper/Utility.java b/legacy/core/src/main/java/com/fsck/k9/helper/Utility.java index 9399230555..0c0601fabc 100644 --- a/legacy/core/src/main/java/com/fsck/k9/helper/Utility.java +++ b/legacy/core/src/main/java/com/fsck/k9/helper/Utility.java @@ -8,7 +8,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import android.database.Cursor; -import android.os.Handler; import android.text.TextUtils; import timber.log.Timber; @@ -29,8 +28,6 @@ public class Utility { private static final Pattern TAG_PATTERN = Pattern.compile("\\[[-_a-z0-9]+\\] ", Pattern.CASE_INSENSITIVE); - private static Handler sMainThreadHandler; - public static boolean arrayContains(Object[] a, Object o) { for (Object element : a) { if (element.equals(o)) { -- GitLab From 75e32446fa83ed0a81dd23ba9dae06b63c39d5cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 13 Mar 2025 11:13:43 +0100 Subject: [PATCH 096/262] Move mail testing implementation to testing package --- .../com/fsck/k9/backend/imap/ImapSyncTest.kt | 2 +- .../AutocryptGossipHeaderParserTest.kt | 2 +- .../MessageCryptoStructureDetectorTest.java | 6 +++--- .../MessageViewInfoExtractorTest.java | 6 +++--- .../k9/mailstore/MimePartStreamParserTest.kt | 10 +++++----- .../k9/message/ReplyActionStrategyTest.kt | 2 +- .../fsck/k9/message/html/HtmlConverterTest.kt | 4 ++-- .../k9/message/quote/TextQuoteCreatorTest.kt | 2 +- .../messages/CopyMessageOperationsTest.kt | 2 +- .../messages/RetrieveMessageOperationsTest.kt | 2 +- .../messages/SaveMessageOperationsTest.kt | 2 +- .../fsck/k9/message/PgpMessageBuilderTest.kt | 20 +++++++++---------- .../k9/ui/crypto/MessageCryptoHelperTest.java | 6 +++--- .../DisplayRecipientsExtractorTest.kt | 2 +- .../test/java/com/fsck/k9/mail/MessageTest.kt | 1 + .../mail/internet/AddressHeaderBuilderTest.kt | 2 +- .../mail/internet/FlowedMessageUtilsTest.kt | 2 +- .../mail/internet/MimeParameterEncoderTest.kt | 2 +- .../mail/store/imap/ImapFolderFetcherTest.kt | 4 ++-- .../imap/ImapServerSettingsValidatorTest.kt | 4 ++-- .../mail/store/imap/RealImapConnectionTest.kt | 14 ++++++------- .../store/imap/mockserver/MockImapServer.java | 2 +- .../k9/mail/store/pop3/MockPop3Server.java | 2 +- .../k9/mail/store/pop3/Pop3ConnectionTest.kt | 2 +- .../fsck/k9/mail/store/pop3/Pop3FolderTest.kt | 2 +- .../pop3/Pop3ServerSettingsValidatorTest.kt | 4 ++-- .../transport/mockServer/MockSmtpServer.java | 2 +- .../transport/smtp/SmtpResponseParserTest.kt | 2 +- .../smtp/SmtpServerSettingsValidatorTest.kt | 4 ++-- .../mail/transport/smtp/SmtpTransportTest.kt | 20 +++++++++---------- .../k9/mail/{ => testing}/StringHelper.kt | 2 +- .../k9/mail/{ => testing}/SystemOutLogger.kt | 2 +- .../XOAuth2ChallengeParserTestData.java} | 4 ++-- .../assertk/MessageExtensions.kt | 2 +- .../message}/MessageBuilderDsl.kt | 5 ++++- .../message}/TestMessage.java | 2 +- .../message}/TestMessageBuilder.java | 4 ++-- .../TestMessageConstructionUtils.java | 5 ++++- .../security}/FakeTrustManager.kt | 2 +- .../security}/KeyStoreProvider.java | 2 +- .../security}/SimpleTrustedSocketFactory.kt | 2 +- .../security}/TestTrustedSocketFactory.java | 2 +- .../security}/VeryTrustingTrustManager.java | 2 +- 43 files changed, 90 insertions(+), 83 deletions(-) rename mail/testing/src/main/java/com/fsck/k9/mail/{ => testing}/StringHelper.kt (76%) rename mail/testing/src/main/java/com/fsck/k9/mail/{ => testing}/SystemOutLogger.kt (98%) rename mail/testing/src/main/java/com/fsck/k9/mail/{XOAuth2ChallengeParserTest.java => testing/XOAuth2ChallengeParserTestData.java} (89%) rename mail/testing/src/main/java/com/fsck/k9/mail/{ => testing}/assertk/MessageExtensions.kt (97%) rename mail/testing/src/main/java/com/fsck/k9/mail/{ => testing/message}/MessageBuilderDsl.kt (93%) rename mail/testing/src/main/java/com/fsck/k9/mail/{helpers => testing/message}/TestMessage.java (97%) rename mail/testing/src/main/java/com/fsck/k9/mail/{helpers => testing/message}/TestMessageBuilder.java (94%) rename mail/testing/src/main/java/com/fsck/k9/mail/{ => testing/message}/TestMessageConstructionUtils.java (93%) rename mail/testing/src/main/java/com/fsck/k9/mail/{helpers => testing/security}/FakeTrustManager.kt (93%) rename mail/testing/src/main/java/com/fsck/k9/mail/{helpers => testing/security}/KeyStoreProvider.java (97%) rename mail/testing/src/main/java/com/fsck/k9/mail/{helpers => testing/security}/SimpleTrustedSocketFactory.kt (97%) rename mail/testing/src/main/java/com/fsck/k9/mail/{helpers => testing/security}/TestTrustedSocketFactory.java (97%) rename mail/testing/src/main/java/com/fsck/k9/mail/{helpers => testing/security}/VeryTrustingTrustManager.java (95%) diff --git a/backend/imap/src/test/java/com/fsck/k9/backend/imap/ImapSyncTest.kt b/backend/imap/src/test/java/com/fsck/k9/backend/imap/ImapSyncTest.kt index 2948a6b56c..dd1fe95274 100644 --- a/backend/imap/src/test/java/com/fsck/k9/backend/imap/ImapSyncTest.kt +++ b/backend/imap/src/test/java/com/fsck/k9/backend/imap/ImapSyncTest.kt @@ -16,9 +16,9 @@ import com.fsck.k9.mail.Flag import com.fsck.k9.mail.FolderType import com.fsck.k9.mail.Message import com.fsck.k9.mail.MessageDownloadState -import com.fsck.k9.mail.buildMessage import com.fsck.k9.mail.store.imap.FetchListener import com.fsck.k9.mail.store.imap.ImapMessage +import com.fsck.k9.mail.testing.message.buildMessage import java.util.Date import org.apache.james.mime4j.dom.field.DateTimeField import org.apache.james.mime4j.field.DefaultFieldParser diff --git a/legacy/core/src/test/java/com/fsck/k9/autocrypt/AutocryptGossipHeaderParserTest.kt b/legacy/core/src/test/java/com/fsck/k9/autocrypt/AutocryptGossipHeaderParserTest.kt index 368daf09c6..0cce31bfba 100644 --- a/legacy/core/src/test/java/com/fsck/k9/autocrypt/AutocryptGossipHeaderParserTest.kt +++ b/legacy/core/src/test/java/com/fsck/k9/autocrypt/AutocryptGossipHeaderParserTest.kt @@ -8,8 +8,8 @@ import assertk.assertions.index import assertk.assertions.isEqualTo import assertk.assertions.isNotNull import assertk.assertions.isNull -import com.fsck.k9.mail.crlf import com.fsck.k9.mail.filter.Base64 +import com.fsck.k9.mail.testing.crlf import com.fsck.k9.mailstore.MimePartStreamParser import org.junit.Test diff --git a/legacy/core/src/test/java/com/fsck/k9/crypto/MessageCryptoStructureDetectorTest.java b/legacy/core/src/test/java/com/fsck/k9/crypto/MessageCryptoStructureDetectorTest.java index 376363ab0c..00b76fe07d 100644 --- a/legacy/core/src/test/java/com/fsck/k9/crypto/MessageCryptoStructureDetectorTest.java +++ b/legacy/core/src/test/java/com/fsck/k9/crypto/MessageCryptoStructureDetectorTest.java @@ -14,9 +14,9 @@ import com.fsck.k9.mail.internet.TextBody; import com.fsck.k9.mailstore.MessageCryptoAnnotations; import org.junit.Test; -import static com.fsck.k9.mail.TestMessageConstructionUtils.bodypart; -import static com.fsck.k9.mail.TestMessageConstructionUtils.messageFromBody; -import static com.fsck.k9.mail.TestMessageConstructionUtils.multipart; +import static com.fsck.k9.mail.testing.message.TestMessageConstructionUtils.bodypart; +import static com.fsck.k9.mail.testing.message.TestMessageConstructionUtils.messageFromBody; +import static com.fsck.k9.mail.testing.message.TestMessageConstructionUtils.multipart; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; diff --git a/legacy/core/src/test/java/com/fsck/k9/mailstore/MessageViewInfoExtractorTest.java b/legacy/core/src/test/java/com/fsck/k9/mailstore/MessageViewInfoExtractorTest.java index fee046c199..d0d052cb1e 100644 --- a/legacy/core/src/test/java/com/fsck/k9/mailstore/MessageViewInfoExtractorTest.java +++ b/legacy/core/src/test/java/com/fsck/k9/mailstore/MessageViewInfoExtractorTest.java @@ -43,9 +43,9 @@ import org.mockito.stubbing.Answer; import org.openintents.openpgp.OpenPgpDecryptionResult; import org.robolectric.RuntimeEnvironment; -import static com.fsck.k9.mail.TestMessageConstructionUtils.bodypart; -import static com.fsck.k9.mail.TestMessageConstructionUtils.messageFromBody; -import static com.fsck.k9.mail.TestMessageConstructionUtils.multipart; +import static com.fsck.k9.mail.testing.message.TestMessageConstructionUtils.bodypart; +import static com.fsck.k9.mail.testing.message.TestMessageConstructionUtils.messageFromBody; +import static com.fsck.k9.mail.testing.message.TestMessageConstructionUtils.multipart; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNull; import static junit.framework.Assert.assertSame; diff --git a/legacy/core/src/test/java/com/fsck/k9/mailstore/MimePartStreamParserTest.kt b/legacy/core/src/test/java/com/fsck/k9/mailstore/MimePartStreamParserTest.kt index bfaae6b7e1..67c876bc6e 100644 --- a/legacy/core/src/test/java/com/fsck/k9/mailstore/MimePartStreamParserTest.kt +++ b/legacy/core/src/test/java/com/fsck/k9/mailstore/MimePartStreamParserTest.kt @@ -5,13 +5,13 @@ import assertk.assertThat import assertk.assertions.hasSize import assertk.assertions.isEqualTo import assertk.assertions.isInstanceOf -import com.fsck.k9.mail.assertk.body -import com.fsck.k9.mail.assertk.bodyPart -import com.fsck.k9.mail.assertk.bodyParts -import com.fsck.k9.mail.assertk.mimeType -import com.fsck.k9.mail.crlf import com.fsck.k9.mail.internet.MimeMessage import com.fsck.k9.mail.internet.MimeMultipart +import com.fsck.k9.mail.testing.assertk.body +import com.fsck.k9.mail.testing.assertk.bodyPart +import com.fsck.k9.mail.testing.assertk.bodyParts +import com.fsck.k9.mail.testing.assertk.mimeType +import com.fsck.k9.mail.testing.crlf import java.io.ByteArrayInputStream import org.junit.Test diff --git a/legacy/core/src/test/java/com/fsck/k9/message/ReplyActionStrategyTest.kt b/legacy/core/src/test/java/com/fsck/k9/message/ReplyActionStrategyTest.kt index 4cb8528ebd..bbe9a7e641 100644 --- a/legacy/core/src/test/java/com/fsck/k9/message/ReplyActionStrategyTest.kt +++ b/legacy/core/src/test/java/com/fsck/k9/message/ReplyActionStrategyTest.kt @@ -8,7 +8,7 @@ import assertk.assertions.isEmpty import assertk.assertions.isEqualTo import assertk.assertions.isNull import com.fsck.k9.helper.ReplyToParser -import com.fsck.k9.mail.buildMessage +import com.fsck.k9.mail.testing.message.buildMessage import org.junit.Test private const val IDENTITY_EMAIL_ADDRESS = "myself@domain.example" diff --git a/legacy/core/src/test/java/com/fsck/k9/message/html/HtmlConverterTest.kt b/legacy/core/src/test/java/com/fsck/k9/message/html/HtmlConverterTest.kt index 617085d197..50251127e8 100644 --- a/legacy/core/src/test/java/com/fsck/k9/message/html/HtmlConverterTest.kt +++ b/legacy/core/src/test/java/com/fsck/k9/message/html/HtmlConverterTest.kt @@ -2,8 +2,8 @@ package com.fsck.k9.message.html import assertk.assertThat import assertk.assertions.isEqualTo -import com.fsck.k9.mail.crlf -import com.fsck.k9.mail.removeLineBreaks +import com.fsck.k9.mail.testing.crlf +import com.fsck.k9.mail.testing.removeLineBreaks import org.junit.Test class HtmlConverterTest { diff --git a/legacy/core/src/test/java/com/fsck/k9/message/quote/TextQuoteCreatorTest.kt b/legacy/core/src/test/java/com/fsck/k9/message/quote/TextQuoteCreatorTest.kt index 198a5573da..ba4b1265e3 100644 --- a/legacy/core/src/test/java/com/fsck/k9/message/quote/TextQuoteCreatorTest.kt +++ b/legacy/core/src/test/java/com/fsck/k9/message/quote/TextQuoteCreatorTest.kt @@ -8,7 +8,7 @@ import com.fsck.k9.TestCoreResourceProvider import com.fsck.k9.mail.Address import com.fsck.k9.mail.Message import com.fsck.k9.mail.Message.RecipientType -import com.fsck.k9.mail.crlf +import com.fsck.k9.mail.testing.crlf import java.util.Date import org.junit.Test import org.mockito.kotlin.doReturn diff --git a/legacy/storage/src/test/java/com/fsck/k9/storage/messages/CopyMessageOperationsTest.kt b/legacy/storage/src/test/java/com/fsck/k9/storage/messages/CopyMessageOperationsTest.kt index dbc21b0b5d..bfac29b2c9 100644 --- a/legacy/storage/src/test/java/com/fsck/k9/storage/messages/CopyMessageOperationsTest.kt +++ b/legacy/storage/src/test/java/com/fsck/k9/storage/messages/CopyMessageOperationsTest.kt @@ -5,7 +5,7 @@ import assertk.assertions.hasSize import assertk.assertions.isEqualTo import assertk.assertions.isNotIn import assertk.assertions.isNull -import com.fsck.k9.mail.crlf +import com.fsck.k9.mail.testing.crlf import com.fsck.k9.mailstore.StorageFilesProvider import com.fsck.k9.storage.RobolectricTest import okio.buffer diff --git a/legacy/storage/src/test/java/com/fsck/k9/storage/messages/RetrieveMessageOperationsTest.kt b/legacy/storage/src/test/java/com/fsck/k9/storage/messages/RetrieveMessageOperationsTest.kt index f5dc2f6632..1afb6be174 100644 --- a/legacy/storage/src/test/java/com/fsck/k9/storage/messages/RetrieveMessageOperationsTest.kt +++ b/legacy/storage/src/test/java/com/fsck/k9/storage/messages/RetrieveMessageOperationsTest.kt @@ -8,7 +8,7 @@ import assertk.assertions.isNull import assertk.assertions.isTrue import com.fsck.k9.mail.Flag import com.fsck.k9.mail.Header -import com.fsck.k9.mail.crlf +import com.fsck.k9.mail.testing.crlf import com.fsck.k9.storage.RobolectricTest import java.util.Date import org.junit.Test diff --git a/legacy/storage/src/test/java/com/fsck/k9/storage/messages/SaveMessageOperationsTest.kt b/legacy/storage/src/test/java/com/fsck/k9/storage/messages/SaveMessageOperationsTest.kt index f2806260ed..1a3a67b1f0 100644 --- a/legacy/storage/src/test/java/com/fsck/k9/storage/messages/SaveMessageOperationsTest.kt +++ b/legacy/storage/src/test/java/com/fsck/k9/storage/messages/SaveMessageOperationsTest.kt @@ -15,7 +15,7 @@ import com.fsck.k9.mail.Message import com.fsck.k9.mail.MessageDownloadState import com.fsck.k9.mail.Multipart import com.fsck.k9.mail.Part -import com.fsck.k9.mail.buildMessage +import com.fsck.k9.mail.testing.message.buildMessage import com.fsck.k9.mailstore.StorageFilesProvider import com.fsck.k9.message.extractors.BasicPartInfoExtractor import com.fsck.k9.storage.RobolectricTest diff --git a/legacy/ui/legacy/src/test/java/com/fsck/k9/message/PgpMessageBuilderTest.kt b/legacy/ui/legacy/src/test/java/com/fsck/k9/message/PgpMessageBuilderTest.kt index fef71064a1..c5d93be68f 100644 --- a/legacy/ui/legacy/src/test/java/com/fsck/k9/message/PgpMessageBuilderTest.kt +++ b/legacy/ui/legacy/src/test/java/com/fsck/k9/message/PgpMessageBuilderTest.kt @@ -28,21 +28,21 @@ import com.fsck.k9.autocrypt.AutocryptOperationsHelper.assertMessageHasAutocrypt import com.fsck.k9.mail.Address import com.fsck.k9.mail.BoundaryGenerator import com.fsck.k9.mail.MessagingException -import com.fsck.k9.mail.assertk.asBytes -import com.fsck.k9.mail.assertk.asText -import com.fsck.k9.mail.assertk.body -import com.fsck.k9.mail.assertk.bodyPart -import com.fsck.k9.mail.assertk.bodyParts -import com.fsck.k9.mail.assertk.contentTransferEncoding -import com.fsck.k9.mail.assertk.contentType -import com.fsck.k9.mail.assertk.mimeType -import com.fsck.k9.mail.assertk.parameter -import com.fsck.k9.mail.assertk.value import com.fsck.k9.mail.internet.BinaryTempFileBody import com.fsck.k9.mail.internet.MessageIdGenerator import com.fsck.k9.mail.internet.MimeMessage import com.fsck.k9.mail.internet.MimeMultipart import com.fsck.k9.mail.internet.TextBody +import com.fsck.k9.mail.testing.assertk.asBytes +import com.fsck.k9.mail.testing.assertk.asText +import com.fsck.k9.mail.testing.assertk.body +import com.fsck.k9.mail.testing.assertk.bodyPart +import com.fsck.k9.mail.testing.assertk.bodyParts +import com.fsck.k9.mail.testing.assertk.contentTransferEncoding +import com.fsck.k9.mail.testing.assertk.contentType +import com.fsck.k9.mail.testing.assertk.mimeType +import com.fsck.k9.mail.testing.assertk.parameter +import com.fsck.k9.mail.testing.assertk.value import com.fsck.k9.message.MessageBuilder.Callback import com.fsck.k9.message.quote.InsertableHtmlContent import com.fsck.k9.view.RecipientSelectView diff --git a/legacy/ui/legacy/src/test/java/com/fsck/k9/ui/crypto/MessageCryptoHelperTest.java b/legacy/ui/legacy/src/test/java/com/fsck/k9/ui/crypto/MessageCryptoHelperTest.java index 42b3d36a09..464bdae976 100644 --- a/legacy/ui/legacy/src/test/java/com/fsck/k9/ui/crypto/MessageCryptoHelperTest.java +++ b/legacy/ui/legacy/src/test/java/com/fsck/k9/ui/crypto/MessageCryptoHelperTest.java @@ -34,9 +34,9 @@ import org.openintents.openpgp.util.OpenPgpApi.OpenPgpDataSource; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.LooperMode; -import static com.fsck.k9.mail.TestMessageConstructionUtils.bodypart; -import static com.fsck.k9.mail.TestMessageConstructionUtils.messageFromBody; -import static com.fsck.k9.mail.TestMessageConstructionUtils.multipart; +import static com.fsck.k9.mail.testing.message.TestMessageConstructionUtils.bodypart; +import static com.fsck.k9.mail.testing.message.TestMessageConstructionUtils.messageFromBody; +import static com.fsck.k9.mail.testing.message.TestMessageConstructionUtils.multipart; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertSame; import static junit.framework.Assert.assertTrue; diff --git a/legacy/ui/legacy/src/test/java/com/fsck/k9/ui/messageview/DisplayRecipientsExtractorTest.kt b/legacy/ui/legacy/src/test/java/com/fsck/k9/ui/messageview/DisplayRecipientsExtractorTest.kt index 26663313ff..ea222d6389 100644 --- a/legacy/ui/legacy/src/test/java/com/fsck/k9/ui/messageview/DisplayRecipientsExtractorTest.kt +++ b/legacy/ui/legacy/src/test/java/com/fsck/k9/ui/messageview/DisplayRecipientsExtractorTest.kt @@ -5,7 +5,7 @@ import app.k9mail.legacy.account.Identity import assertk.assertThat import assertk.assertions.isEqualTo import com.fsck.k9.mail.Address -import com.fsck.k9.mail.buildMessage +import com.fsck.k9.mail.testing.message.buildMessage import org.junit.Test private const val IDENTITY_ADDRESS = "me@domain.example" diff --git a/mail/common/src/test/java/com/fsck/k9/mail/MessageTest.kt b/mail/common/src/test/java/com/fsck/k9/mail/MessageTest.kt index f3fe177bf5..f27401dd59 100644 --- a/mail/common/src/test/java/com/fsck/k9/mail/MessageTest.kt +++ b/mail/common/src/test/java/com/fsck/k9/mail/MessageTest.kt @@ -10,6 +10,7 @@ import com.fsck.k9.mail.internet.MimeMessage import com.fsck.k9.mail.internet.MimeMessageHelper import com.fsck.k9.mail.internet.MimeMultipart import com.fsck.k9.mail.internet.TextBody +import com.fsck.k9.mail.testing.crlf import java.io.ByteArrayOutputStream import java.io.File import java.nio.file.Files diff --git a/mail/common/src/test/java/com/fsck/k9/mail/internet/AddressHeaderBuilderTest.kt b/mail/common/src/test/java/com/fsck/k9/mail/internet/AddressHeaderBuilderTest.kt index f710ba6d9f..214eefc5a1 100644 --- a/mail/common/src/test/java/com/fsck/k9/mail/internet/AddressHeaderBuilderTest.kt +++ b/mail/common/src/test/java/com/fsck/k9/mail/internet/AddressHeaderBuilderTest.kt @@ -6,7 +6,7 @@ import assertk.assertions.hasMessage import assertk.assertions.isEqualTo import assertk.assertions.isInstanceOf import com.fsck.k9.mail.Address -import com.fsck.k9.mail.crlf +import com.fsck.k9.mail.testing.crlf import org.junit.Test class AddressHeaderBuilderTest { diff --git a/mail/common/src/test/java/com/fsck/k9/mail/internet/FlowedMessageUtilsTest.kt b/mail/common/src/test/java/com/fsck/k9/mail/internet/FlowedMessageUtilsTest.kt index b1f57d18f6..8a552eb025 100644 --- a/mail/common/src/test/java/com/fsck/k9/mail/internet/FlowedMessageUtilsTest.kt +++ b/mail/common/src/test/java/com/fsck/k9/mail/internet/FlowedMessageUtilsTest.kt @@ -2,7 +2,7 @@ package com.fsck.k9.mail.internet import assertk.assertThat import assertk.assertions.isEqualTo -import com.fsck.k9.mail.crlf +import com.fsck.k9.mail.testing.crlf import org.junit.Test class FlowedMessageUtilsTest { diff --git a/mail/common/src/test/java/com/fsck/k9/mail/internet/MimeParameterEncoderTest.kt b/mail/common/src/test/java/com/fsck/k9/mail/internet/MimeParameterEncoderTest.kt index 8a5947583f..5c19672f3c 100644 --- a/mail/common/src/test/java/com/fsck/k9/mail/internet/MimeParameterEncoderTest.kt +++ b/mail/common/src/test/java/com/fsck/k9/mail/internet/MimeParameterEncoderTest.kt @@ -2,7 +2,7 @@ package com.fsck.k9.mail.internet import assertk.assertThat import assertk.assertions.isEqualTo -import com.fsck.k9.mail.crlf +import com.fsck.k9.mail.testing.crlf import org.junit.Test class MimeParameterEncoderTest { diff --git a/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/ImapFolderFetcherTest.kt b/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/ImapFolderFetcherTest.kt index 6c97324452..8830ebc0eb 100644 --- a/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/ImapFolderFetcherTest.kt +++ b/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/ImapFolderFetcherTest.kt @@ -16,9 +16,9 @@ import com.fsck.k9.mail.ServerSettings import com.fsck.k9.mail.folders.FolderFetcherException import com.fsck.k9.mail.folders.FolderServerId import com.fsck.k9.mail.folders.RemoteFolder -import com.fsck.k9.mail.helpers.FakeTrustManager -import com.fsck.k9.mail.helpers.SimpleTrustedSocketFactory import com.fsck.k9.mail.store.imap.ImapResponseHelper.createImapResponseList +import com.fsck.k9.mail.testing.security.FakeTrustManager +import com.fsck.k9.mail.testing.security.SimpleTrustedSocketFactory import kotlin.test.Test class ImapFolderFetcherTest { diff --git a/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/ImapServerSettingsValidatorTest.kt b/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/ImapServerSettingsValidatorTest.kt index a6f3b44247..bed7b0a574 100644 --- a/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/ImapServerSettingsValidatorTest.kt +++ b/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/ImapServerSettingsValidatorTest.kt @@ -10,12 +10,12 @@ import com.fsck.k9.mail.AuthType import com.fsck.k9.mail.ClientCertificateError import com.fsck.k9.mail.ConnectionSecurity import com.fsck.k9.mail.ServerSettings -import com.fsck.k9.mail.helpers.FakeTrustManager -import com.fsck.k9.mail.helpers.SimpleTrustedSocketFactory import com.fsck.k9.mail.oauth.AuthStateStorage import com.fsck.k9.mail.oauth.OAuth2TokenProvider import com.fsck.k9.mail.server.ServerSettingsValidationResult import com.fsck.k9.mail.store.imap.mockserver.MockImapServer +import com.fsck.k9.mail.testing.security.FakeTrustManager +import com.fsck.k9.mail.testing.security.SimpleTrustedSocketFactory import java.net.UnknownHostException import kotlin.test.Test diff --git a/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/RealImapConnectionTest.kt b/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/RealImapConnectionTest.kt index 53b7ab9c1c..099c94c934 100644 --- a/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/RealImapConnectionTest.kt +++ b/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/RealImapConnectionTest.kt @@ -19,12 +19,12 @@ import com.fsck.k9.mail.AuthenticationFailedException import com.fsck.k9.mail.ConnectionSecurity import com.fsck.k9.mail.K9MailLib import com.fsck.k9.mail.MissingCapabilityException -import com.fsck.k9.mail.SystemOutLogger -import com.fsck.k9.mail.XOAuth2ChallengeParserTest -import com.fsck.k9.mail.helpers.TestTrustedSocketFactory import com.fsck.k9.mail.oauth.OAuth2TokenProvider import com.fsck.k9.mail.ssl.TrustedSocketFactory import com.fsck.k9.mail.store.imap.mockserver.MockImapServer +import com.fsck.k9.mail.testing.SystemOutLogger +import com.fsck.k9.mail.testing.XOAuth2ChallengeParserTestData +import com.fsck.k9.mail.testing.security.TestTrustedSocketFactory import java.io.IOException import java.net.UnknownHostException import okio.ByteString.Companion.encodeUtf8 @@ -411,7 +411,7 @@ class RealImapConnectionTest { val server = MockImapServer().apply { preAuthenticationDialog(capabilities = "SASL-IR AUTH=XOAUTH AUTH=XOAUTH2") expect("2 AUTHENTICATE XOAUTH2 $XOAUTH_STRING") - output("+ ${XOAuth2ChallengeParserTest.STATUS_401_RESPONSE}") + output("+ ${XOAuth2ChallengeParserTestData.STATUS_401_RESPONSE}") expect("") output("2 NO SASL authentication failed") } @@ -429,7 +429,7 @@ class RealImapConnectionTest { val server = MockImapServer().apply { preAuthenticationDialog(capabilities = "SASL-IR AUTH=XOAUTH AUTH=XOAUTH2") expect("2 AUTHENTICATE XOAUTH2 $XOAUTH_STRING") - output("+ ${XOAuth2ChallengeParserTest.STATUS_400_RESPONSE}") + output("+ ${XOAuth2ChallengeParserTestData.STATUS_400_RESPONSE}") expect("") output("2 NO SASL authentication failed") expect("3 AUTHENTICATE XOAUTH2 $XOAUTH_STRING_RETRY") @@ -449,7 +449,7 @@ class RealImapConnectionTest { val server = MockImapServer().apply { preAuthenticationDialog(capabilities = "SASL-IR AUTH=XOAUTH AUTH=XOAUTH2") expect("2 AUTHENTICATE XOAUTH2 $XOAUTH_STRING") - output("+ ${XOAuth2ChallengeParserTest.INVALID_RESPONSE}") + output("+ ${XOAuth2ChallengeParserTestData.INVALID_RESPONSE}") expect("") output("2 NO SASL authentication failed") expect("3 AUTHENTICATE XOAUTH2 $XOAUTH_STRING_RETRY") @@ -470,7 +470,7 @@ class RealImapConnectionTest { val server = MockImapServer().apply { preAuthenticationDialog(capabilities = "SASL-IR AUTH=XOAUTH AUTH=XOAUTH2") expect("2 AUTHENTICATE XOAUTH2 $XOAUTH_STRING") - output("+ ${XOAuth2ChallengeParserTest.MISSING_STATUS_RESPONSE}") + output("+ ${XOAuth2ChallengeParserTestData.MISSING_STATUS_RESPONSE}") expect("") output("2 NO SASL authentication failed") expect("3 AUTHENTICATE XOAUTH2 $XOAUTH_STRING_RETRY") diff --git a/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/mockserver/MockImapServer.java b/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/mockserver/MockImapServer.java index 140fa61df7..d04bc05a53 100644 --- a/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/mockserver/MockImapServer.java +++ b/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/mockserver/MockImapServer.java @@ -21,7 +21,7 @@ import java.util.concurrent.TimeUnit; import java.util.zip.Inflater; import java.util.zip.InflaterInputStream; -import com.fsck.k9.mail.helpers.KeyStoreProvider; +import com.fsck.k9.mail.testing.security.KeyStoreProvider; import com.jcraft.jzlib.JZlib; import com.jcraft.jzlib.ZOutputStream; import javax.net.ssl.KeyManagerFactory; diff --git a/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/MockPop3Server.java b/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/MockPop3Server.java index a5142829db..05e8a94b78 100644 --- a/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/MockPop3Server.java +++ b/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/MockPop3Server.java @@ -21,7 +21,7 @@ import java.util.concurrent.TimeUnit; import java.util.zip.Inflater; import java.util.zip.InflaterInputStream; -import com.fsck.k9.mail.helpers.KeyStoreProvider; +import com.fsck.k9.mail.testing.security.KeyStoreProvider; import com.jcraft.jzlib.JZlib; import com.jcraft.jzlib.ZOutputStream; import javax.net.ssl.KeyManagerFactory; diff --git a/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/Pop3ConnectionTest.kt b/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/Pop3ConnectionTest.kt index 8fd3359bb7..fc7c06d442 100644 --- a/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/Pop3ConnectionTest.kt +++ b/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/Pop3ConnectionTest.kt @@ -17,8 +17,8 @@ import com.fsck.k9.mail.ConnectionSecurity.SSL_TLS_REQUIRED import com.fsck.k9.mail.ConnectionSecurity.STARTTLS_REQUIRED import com.fsck.k9.mail.MessagingException import com.fsck.k9.mail.MissingCapabilityException -import com.fsck.k9.mail.helpers.TestTrustedSocketFactory import com.fsck.k9.mail.ssl.TrustedSocketFactory +import com.fsck.k9.mail.testing.security.TestTrustedSocketFactory import java.io.IOException import java.security.NoSuchAlgorithmException import javax.net.ssl.SSLException diff --git a/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/Pop3FolderTest.kt b/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/Pop3FolderTest.kt index fb69d5a275..e915b3fb12 100644 --- a/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/Pop3FolderTest.kt +++ b/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/Pop3FolderTest.kt @@ -10,9 +10,9 @@ import com.fsck.k9.mail.Body import com.fsck.k9.mail.FetchProfile import com.fsck.k9.mail.MessageRetrievalListener import com.fsck.k9.mail.MessagingException -import com.fsck.k9.mail.crlf import com.fsck.k9.mail.internet.BinaryTempFileBody import com.fsck.k9.mail.store.pop3.Pop3Commands.STAT_COMMAND +import com.fsck.k9.mail.testing.crlf import java.io.ByteArrayOutputStream import java.io.File import java.io.IOException diff --git a/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/Pop3ServerSettingsValidatorTest.kt b/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/Pop3ServerSettingsValidatorTest.kt index a283f3b3cf..a65936484d 100644 --- a/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/Pop3ServerSettingsValidatorTest.kt +++ b/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/Pop3ServerSettingsValidatorTest.kt @@ -10,9 +10,9 @@ import com.fsck.k9.mail.AuthType import com.fsck.k9.mail.ClientCertificateError import com.fsck.k9.mail.ConnectionSecurity import com.fsck.k9.mail.ServerSettings -import com.fsck.k9.mail.helpers.FakeTrustManager -import com.fsck.k9.mail.helpers.SimpleTrustedSocketFactory import com.fsck.k9.mail.server.ServerSettingsValidationResult +import com.fsck.k9.mail.testing.security.FakeTrustManager +import com.fsck.k9.mail.testing.security.SimpleTrustedSocketFactory import java.net.UnknownHostException import kotlin.test.Test diff --git a/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/mockServer/MockSmtpServer.java b/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/mockServer/MockSmtpServer.java index 35ece7ab7c..14c9f3232b 100644 --- a/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/mockServer/MockSmtpServer.java +++ b/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/mockServer/MockSmtpServer.java @@ -21,7 +21,7 @@ import java.util.concurrent.TimeUnit; import java.util.zip.Inflater; import java.util.zip.InflaterInputStream; -import com.fsck.k9.mail.helpers.KeyStoreProvider; +import com.fsck.k9.mail.testing.security.KeyStoreProvider; import com.jcraft.jzlib.JZlib; import com.jcraft.jzlib.ZOutputStream; import javax.net.ssl.KeyManagerFactory; diff --git a/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/smtp/SmtpResponseParserTest.kt b/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/smtp/SmtpResponseParserTest.kt index b81d8172ee..dbfd1572c8 100644 --- a/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/smtp/SmtpResponseParserTest.kt +++ b/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/smtp/SmtpResponseParserTest.kt @@ -16,8 +16,8 @@ import assertk.assertions.isNull import assertk.assertions.isTrue import assertk.assertions.key import assertk.assertions.prop -import com.fsck.k9.mail.crlf import com.fsck.k9.mail.filter.PeekableInputStream +import com.fsck.k9.mail.testing.crlf import org.junit.Test class SmtpResponseParserTest { diff --git a/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/smtp/SmtpServerSettingsValidatorTest.kt b/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/smtp/SmtpServerSettingsValidatorTest.kt index b69afe3ebe..544c91a458 100644 --- a/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/smtp/SmtpServerSettingsValidatorTest.kt +++ b/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/smtp/SmtpServerSettingsValidatorTest.kt @@ -10,11 +10,11 @@ import com.fsck.k9.mail.AuthType import com.fsck.k9.mail.ClientCertificateError import com.fsck.k9.mail.ConnectionSecurity import com.fsck.k9.mail.ServerSettings -import com.fsck.k9.mail.helpers.FakeTrustManager -import com.fsck.k9.mail.helpers.SimpleTrustedSocketFactory import com.fsck.k9.mail.oauth.AuthStateStorage import com.fsck.k9.mail.oauth.OAuth2TokenProvider import com.fsck.k9.mail.server.ServerSettingsValidationResult +import com.fsck.k9.mail.testing.security.FakeTrustManager +import com.fsck.k9.mail.testing.security.SimpleTrustedSocketFactory import com.fsck.k9.mail.transport.mockServer.MockSmtpServer import java.net.UnknownHostException import kotlin.test.Test diff --git a/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/smtp/SmtpTransportTest.kt b/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/smtp/SmtpTransportTest.kt index da8741a6c1..1e76a5cda5 100644 --- a/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/smtp/SmtpTransportTest.kt +++ b/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/smtp/SmtpTransportTest.kt @@ -15,12 +15,12 @@ import com.fsck.k9.mail.Message import com.fsck.k9.mail.MessagingException import com.fsck.k9.mail.MissingCapabilityException import com.fsck.k9.mail.ServerSettings -import com.fsck.k9.mail.XOAuth2ChallengeParserTest import com.fsck.k9.mail.filter.Base64 -import com.fsck.k9.mail.helpers.TestMessageBuilder -import com.fsck.k9.mail.helpers.TestTrustedSocketFactory import com.fsck.k9.mail.internet.MimeMessage import com.fsck.k9.mail.oauth.OAuth2TokenProvider +import com.fsck.k9.mail.testing.XOAuth2ChallengeParserTestData +import com.fsck.k9.mail.testing.message.TestMessageBuilder +import com.fsck.k9.mail.testing.security.TestTrustedSocketFactory import com.fsck.k9.mail.transport.mockServer.MockSmtpServer import org.junit.Test import org.mockito.ArgumentMatchers.anyLong @@ -235,7 +235,7 @@ class SmtpTransportTest { output("250-ENHANCEDSTATUSCODES") output("250 AUTH XOAUTH2") expect("AUTH XOAUTH2 dXNlcj11c2VyAWF1dGg9QmVhcmVyIG9sZFRva2VuAQE=") - output("334 " + XOAuth2ChallengeParserTest.STATUS_401_RESPONSE) + output("334 " + XOAuth2ChallengeParserTestData.STATUS_401_RESPONSE) expect("") output("535-5.7.1 Username and Password not accepted. Learn more at") output("535 5.7.1 http://support.google.com/mail/bin/answer.py?answer=14257 hx9sm5317360pbc.68") @@ -268,7 +268,7 @@ class SmtpTransportTest { output("250-localhost Hello client.localhost") output("250 AUTH XOAUTH2") expect("AUTH XOAUTH2 dXNlcj11c2VyAWF1dGg9QmVhcmVyIG9sZFRva2VuAQE=") - output("334 " + XOAuth2ChallengeParserTest.STATUS_400_RESPONSE) + output("334 " + XOAuth2ChallengeParserTestData.STATUS_400_RESPONSE) expect("") output("535-5.7.1 Username and Password not accepted. Learn more at") output("535 5.7.1 http://support.google.com/mail/bin/answer.py?answer=14257 hx9sm5317360pbc.68") @@ -296,7 +296,7 @@ class SmtpTransportTest { output("250-localhost Hello client.localhost") output("250 AUTH XOAUTH2") expect("AUTH XOAUTH2 dXNlcj11c2VyAWF1dGg9QmVhcmVyIG9sZFRva2VuAQE=") - output("334 " + XOAuth2ChallengeParserTest.INVALID_RESPONSE) + output("334 " + XOAuth2ChallengeParserTestData.INVALID_RESPONSE) expect("") output("535-5.7.1 Username and Password not accepted. Learn more at") output("535 5.7.1 http://support.google.com/mail/bin/answer.py?answer=14257 hx9sm5317360pbc.68") @@ -324,7 +324,7 @@ class SmtpTransportTest { output("250-localhost Hello client.localhost") output("250 AUTH XOAUTH2") expect("AUTH XOAUTH2 dXNlcj11c2VyAWF1dGg9QmVhcmVyIG9sZFRva2VuAQE=") - output("334 " + XOAuth2ChallengeParserTest.MISSING_STATUS_RESPONSE) + output("334 " + XOAuth2ChallengeParserTestData.MISSING_STATUS_RESPONSE) expect("") output("535-5.7.1 Username and Password not accepted. Learn more at") output("535 5.7.1 http://support.google.com/mail/bin/answer.py?answer=14257 hx9sm5317360pbc.68") @@ -353,12 +353,12 @@ class SmtpTransportTest { output("250-ENHANCEDSTATUSCODES") output("250 AUTH XOAUTH2") expect("AUTH XOAUTH2 dXNlcj11c2VyAWF1dGg9QmVhcmVyIG9sZFRva2VuAQE=") - output("334 " + XOAuth2ChallengeParserTest.STATUS_400_RESPONSE) + output("334 " + XOAuth2ChallengeParserTestData.STATUS_400_RESPONSE) expect("") output("535-5.7.1 Username and Password not accepted. Learn more at") output("535 5.7.1 http://support.google.com/mail/bin/answer.py?answer=14257 hx9sm5317360pbc.68") expect("AUTH XOAUTH2 dXNlcj11c2VyAWF1dGg9QmVhcmVyIG5ld1Rva2VuAQE=") - output("334 " + XOAuth2ChallengeParserTest.STATUS_400_RESPONSE) + output("334 " + XOAuth2ChallengeParserTestData.STATUS_400_RESPONSE) expect("") output("535-5.7.1 Username and Password not accepted. Learn more at") output("535 5.7.1 http://support.google.com/mail/bin/answer.py?answer=14257 hx9sm5317360pbc.68") @@ -490,7 +490,7 @@ class SmtpTransportTest { server.output("250-ENHANCEDSTATUSCODES") server.output("250 AUTH XOAUTH2") server.expect("AUTH XOAUTH2 dXNlcj11c2VyAWF1dGg9QmVhcmVyIG9sZFRva2VuAQE=") - server.output("334 " + XOAuth2ChallengeParserTest.STATUS_401_RESPONSE) + server.output("334 " + XOAuth2ChallengeParserTestData.STATUS_401_RESPONSE) server.expect("") server.output("535-5.7.1 Username and Password not accepted. Learn more at") server.output("535 5.7.1 http://support.google.com/mail/bin/answer.py?answer=14257 hx9sm5317360pbc.68") diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/StringHelper.kt b/mail/testing/src/main/java/com/fsck/k9/mail/testing/StringHelper.kt similarity index 76% rename from mail/testing/src/main/java/com/fsck/k9/mail/StringHelper.kt rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/StringHelper.kt index cada3ad040..754209e129 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/StringHelper.kt +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/StringHelper.kt @@ -1,4 +1,4 @@ -package com.fsck.k9.mail +package com.fsck.k9.mail.testing fun String.crlf() = replace("\n", "\r\n") diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/SystemOutLogger.kt b/mail/testing/src/main/java/com/fsck/k9/mail/testing/SystemOutLogger.kt similarity index 98% rename from mail/testing/src/main/java/com/fsck/k9/mail/SystemOutLogger.kt rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/SystemOutLogger.kt index d0e0c1562d..0064cbd70e 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/SystemOutLogger.kt +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/SystemOutLogger.kt @@ -1,4 +1,4 @@ -package com.fsck.k9.mail +package com.fsck.k9.mail.testing import com.fsck.k9.logging.Logger diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/XOAuth2ChallengeParserTest.java b/mail/testing/src/main/java/com/fsck/k9/mail/testing/XOAuth2ChallengeParserTestData.java similarity index 89% rename from mail/testing/src/main/java/com/fsck/k9/mail/XOAuth2ChallengeParserTest.java rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/XOAuth2ChallengeParserTestData.java index e1308940e1..68669aaff8 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/XOAuth2ChallengeParserTest.java +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/XOAuth2ChallengeParserTestData.java @@ -1,9 +1,9 @@ -package com.fsck.k9.mail; +package com.fsck.k9.mail.testing; import com.fsck.k9.mail.filter.Base64; -public class XOAuth2ChallengeParserTest { +public class XOAuth2ChallengeParserTestData { public static final String STATUS_400_RESPONSE = Base64.encode( "{\"status\":\"400\",\"schemes\":\"bearer mac\",\"scope\":\"https://mail.google.com/\"}"); public static final String STATUS_401_RESPONSE = Base64.encode( diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/assertk/MessageExtensions.kt b/mail/testing/src/main/java/com/fsck/k9/mail/testing/assertk/MessageExtensions.kt similarity index 97% rename from mail/testing/src/main/java/com/fsck/k9/mail/assertk/MessageExtensions.kt rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/assertk/MessageExtensions.kt index 42cfd968a4..859949c946 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/assertk/MessageExtensions.kt +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/assertk/MessageExtensions.kt @@ -1,6 +1,6 @@ @file:Suppress("TooManyFunctions") -package com.fsck.k9.mail.assertk +package com.fsck.k9.mail.testing.assertk import assertk.Assert import assertk.assertions.prop diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/MessageBuilderDsl.kt b/mail/testing/src/main/java/com/fsck/k9/mail/testing/message/MessageBuilderDsl.kt similarity index 93% rename from mail/testing/src/main/java/com/fsck/k9/mail/MessageBuilderDsl.kt rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/message/MessageBuilderDsl.kt index 0e27b69e56..4c1054b2d0 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/MessageBuilderDsl.kt +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/message/MessageBuilderDsl.kt @@ -1,5 +1,8 @@ -package com.fsck.k9.mail +package com.fsck.k9.mail.testing.message +import com.fsck.k9.mail.Message +import com.fsck.k9.mail.Multipart +import com.fsck.k9.mail.Part import com.fsck.k9.mail.internet.MimeBodyPart import com.fsck.k9.mail.internet.MimeMessage import com.fsck.k9.mail.internet.MimeMessageHelper diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/helpers/TestMessage.java b/mail/testing/src/main/java/com/fsck/k9/mail/testing/message/TestMessage.java similarity index 97% rename from mail/testing/src/main/java/com/fsck/k9/mail/helpers/TestMessage.java rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/message/TestMessage.java index c867b0fbab..80da1cee83 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/helpers/TestMessage.java +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/message/TestMessage.java @@ -1,4 +1,4 @@ -package com.fsck.k9.mail.helpers; +package com.fsck.k9.mail.testing.message; import java.io.IOException; diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/helpers/TestMessageBuilder.java b/mail/testing/src/main/java/com/fsck/k9/mail/testing/message/TestMessageBuilder.java similarity index 94% rename from mail/testing/src/main/java/com/fsck/k9/mail/helpers/TestMessageBuilder.java rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/message/TestMessageBuilder.java index f8d545e2e5..a7e8a58c6e 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/helpers/TestMessageBuilder.java +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/message/TestMessageBuilder.java @@ -1,4 +1,4 @@ -package com.fsck.k9.mail.helpers; +package com.fsck.k9.mail.testing.message; import com.fsck.k9.mail.Message; @@ -30,7 +30,7 @@ public class TestMessageBuilder { this.messageSize = messageSize; return this; } - + public Message build() { return new TestMessage(this); } diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/TestMessageConstructionUtils.java b/mail/testing/src/main/java/com/fsck/k9/mail/testing/message/TestMessageConstructionUtils.java similarity index 93% rename from mail/testing/src/main/java/com/fsck/k9/mail/TestMessageConstructionUtils.java rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/message/TestMessageConstructionUtils.java index 9ce33aab7b..5c066678f0 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/TestMessageConstructionUtils.java +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/message/TestMessageConstructionUtils.java @@ -1,6 +1,9 @@ -package com.fsck.k9.mail; +package com.fsck.k9.mail.testing.message; +import com.fsck.k9.mail.Body; +import com.fsck.k9.mail.BodyPart; +import com.fsck.k9.mail.MessagingException; import com.fsck.k9.mail.internet.MimeBodyPart; import com.fsck.k9.mail.internet.MimeHeader; import com.fsck.k9.mail.internet.MimeMessage; diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/helpers/FakeTrustManager.kt b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/FakeTrustManager.kt similarity index 93% rename from mail/testing/src/main/java/com/fsck/k9/mail/helpers/FakeTrustManager.kt rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/security/FakeTrustManager.kt index c03cfe0604..9f3cd77ac6 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/helpers/FakeTrustManager.kt +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/FakeTrustManager.kt @@ -1,4 +1,4 @@ -package com.fsck.k9.mail.helpers +package com.fsck.k9.mail.testing.security import com.fsck.k9.mail.CertificateChainException import java.security.cert.X509Certificate diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/helpers/KeyStoreProvider.java b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.java similarity index 97% rename from mail/testing/src/main/java/com/fsck/k9/mail/helpers/KeyStoreProvider.java rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.java index 493e4afa89..867e0dd28e 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/helpers/KeyStoreProvider.java +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.java @@ -1,4 +1,4 @@ -package com.fsck.k9.mail.helpers; +package com.fsck.k9.mail.testing.security; import java.io.InputStream; diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/helpers/SimpleTrustedSocketFactory.kt b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/SimpleTrustedSocketFactory.kt similarity index 97% rename from mail/testing/src/main/java/com/fsck/k9/mail/helpers/SimpleTrustedSocketFactory.kt rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/security/SimpleTrustedSocketFactory.kt index eb8814dc09..c8f323d673 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/helpers/SimpleTrustedSocketFactory.kt +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/SimpleTrustedSocketFactory.kt @@ -1,4 +1,4 @@ -package com.fsck.k9.mail.helpers +package com.fsck.k9.mail.testing.security import com.fsck.k9.mail.ClientCertificateError import com.fsck.k9.mail.ClientCertificateException diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/helpers/TestTrustedSocketFactory.java b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.java similarity index 97% rename from mail/testing/src/main/java/com/fsck/k9/mail/helpers/TestTrustedSocketFactory.java rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.java index 1d32b1a261..ff167e91c4 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/helpers/TestTrustedSocketFactory.java +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.java @@ -1,4 +1,4 @@ -package com.fsck.k9.mail.helpers; +package com.fsck.k9.mail.testing.security; import java.io.IOException; diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/helpers/VeryTrustingTrustManager.java b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/VeryTrustingTrustManager.java similarity index 95% rename from mail/testing/src/main/java/com/fsck/k9/mail/helpers/VeryTrustingTrustManager.java rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/security/VeryTrustingTrustManager.java index 843358a90d..f059720594 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/helpers/VeryTrustingTrustManager.java +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/VeryTrustingTrustManager.java @@ -1,4 +1,4 @@ -package com.fsck.k9.mail.helpers; +package com.fsck.k9.mail.testing.security; import java.security.cert.CertificateException; -- GitLab From dc5f1f40939302fcb7b7c05eeb7c36f3f12f0cf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 13 Mar 2025 12:05:28 +0100 Subject: [PATCH 097/262] Rename .java to .kt --- ...{VeryTrustingTrustManager.java => VeryTrustingTrustManager.kt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename mail/testing/src/main/java/com/fsck/k9/mail/testing/security/{VeryTrustingTrustManager.java => VeryTrustingTrustManager.kt} (100%) diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/VeryTrustingTrustManager.java b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/VeryTrustingTrustManager.kt similarity index 100% rename from mail/testing/src/main/java/com/fsck/k9/mail/testing/security/VeryTrustingTrustManager.java rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/security/VeryTrustingTrustManager.kt -- GitLab From 5e9d59ed554462347cbaa05e4766de6c94fb069a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 13 Mar 2025 12:05:28 +0100 Subject: [PATCH 098/262] Change VeryTrustingTrustManager to Kotlin --- .../security/VeryTrustingTrustManager.kt | 61 +++++++++---------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/VeryTrustingTrustManager.kt b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/VeryTrustingTrustManager.kt index f059720594..2b38474efe 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/VeryTrustingTrustManager.kt +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/VeryTrustingTrustManager.kt @@ -1,33 +1,32 @@ -package com.fsck.k9.mail.testing.security; - - -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; - -import javax.net.ssl.X509TrustManager; - - -class VeryTrustingTrustManager implements X509TrustManager { - private final X509Certificate serverCertificate; - - - public VeryTrustingTrustManager(X509Certificate serverCertificate) { - this.serverCertificate = serverCertificate; - } - - @Override - public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { - // Accept all certificates - } - - @Override - public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { - // Accept all certificates - } - - @Override - public X509Certificate[] getAcceptedIssuers() { - return new X509Certificate[] { serverCertificate }; +package com.fsck.k9.mail.testing.security + +import java.security.cert.CertificateException +import java.security.cert.X509Certificate +import javax.net.ssl.X509TrustManager + +/** + * A very trusting trust manager that accepts all certificates. It is used in tests to accept all certificates. + * + * WARNING: This trust manager is very insecure and should never be used in production code! + * + * @param serverCertificate The server certificate to return as the accepted issuer. + */ +@Suppress("CustomX509TrustManager") +internal class VeryTrustingTrustManager(private val serverCertificate: X509Certificate?) : X509TrustManager { + + /** + * Always trust the client certificate. + */ + @Throws(CertificateException::class) + override fun checkClientTrusted(chain: Array?, authType: String?) = Unit + + /** + * Always trust the server certificate. + */ + @Throws(CertificateException::class) + override fun checkServerTrusted(chain: Array?, authType: String?) = Unit + + override fun getAcceptedIssuers(): Array { + return arrayOf(serverCertificate) } } - -- GitLab From 1c6225801c941bf89975b93a230a2ac32cf454ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 13 Mar 2025 12:17:54 +0100 Subject: [PATCH 099/262] Rename .java to .kt --- ...{TestTrustedSocketFactory.java => TestTrustedSocketFactory.kt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename mail/testing/src/main/java/com/fsck/k9/mail/testing/security/{TestTrustedSocketFactory.java => TestTrustedSocketFactory.kt} (100%) diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.java b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt similarity index 100% rename from mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.java rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt -- GitLab From 7e44722b20ea2423a9f6e9e37d02c805f03cf824 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 13 Mar 2025 12:17:55 +0100 Subject: [PATCH 100/262] Change TestTrustedSocketFactory to Kotlin --- .../security/TestTrustedSocketFactory.kt | 88 ++++++++++--------- 1 file changed, 46 insertions(+), 42 deletions(-) diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt index ff167e91c4..8031d3f7d9 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt @@ -1,46 +1,50 @@ -package com.fsck.k9.mail.testing.security; - - -import java.io.IOException; -import java.net.Socket; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; -import java.security.cert.X509Certificate; - -import com.fsck.k9.mail.MessagingException; -import com.fsck.k9.mail.ssl.TrustedSocketFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSocketFactory; -import javax.net.ssl.TrustManager; - - -public class TestTrustedSocketFactory implements TrustedSocketFactory { - private final X509Certificate serverCertificate; - - - public static TestTrustedSocketFactory newInstance() { - X509Certificate serverCertificate = KeyStoreProvider.getInstance().getServerCertificate(); - return new TestTrustedSocketFactory(serverCertificate); - } - - private TestTrustedSocketFactory(X509Certificate serverCertificate) { - this.serverCertificate = serverCertificate; +package com.fsck.k9.mail.testing.security + +import com.fsck.k9.mail.MessagingException +import com.fsck.k9.mail.ssl.TrustedSocketFactory +import java.io.IOException +import java.net.Socket +import java.security.KeyManagementException +import java.security.NoSuchAlgorithmException +import java.security.cert.X509Certificate +import javax.net.ssl.SSLContext +import javax.net.ssl.TrustManager + +class TestTrustedSocketFactory private constructor( + private val serverCertificate: X509Certificate? +) : TrustedSocketFactory { + + @Throws( + NoSuchAlgorithmException::class, + KeyManagementException::class, + MessagingException::class, + IOException::class, + ) + override fun createSocket(socket: Socket?, host: String, port: Int, clientCertificateAlias: String?): Socket { + val trustManagers: Array = arrayOf(VeryTrustingTrustManager(serverCertificate)) + + val sslContext = SSLContext.getInstance("TLS").apply { + init(null, trustManagers, null) + } + + val sslSocketFactory = sslContext.socketFactory + + return if (socket != null) { + sslSocketFactory.createSocket( + socket, + socket.inetAddress.hostAddress, + socket.port, + true, + ) + } else { + sslSocketFactory.createSocket(host, port) + } } - @Override - public Socket createSocket(Socket socket, String host, int port, String clientCertificateAlias) - throws NoSuchAlgorithmException, KeyManagementException, MessagingException, IOException { - - TrustManager[] trustManagers = new TrustManager[] { new VeryTrustingTrustManager(serverCertificate) }; - - SSLContext sslContext = SSLContext.getInstance("TLS"); - sslContext.init(null, trustManagers, null); - - SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); - return sslSocketFactory.createSocket( - socket, - socket.getInetAddress().getHostAddress(), - socket.getPort(), - true); + companion object { + fun newInstance(): TestTrustedSocketFactory { + val serverCertificate = KeyStoreProvider.getInstance().serverCertificate + return TestTrustedSocketFactory(serverCertificate) + } } } -- GitLab From b2535f678751e9bf4f8dfdf75d07b67c61be5fe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 13 Mar 2025 12:24:36 +0100 Subject: [PATCH 101/262] Refactor TestTrustedSocketFactory to object --- .../mail/store/imap/RealImapConnectionTest.kt | 2 +- .../k9/mail/store/pop3/Pop3ConnectionTest.kt | 2 +- .../mail/transport/smtp/SmtpTransportTest.kt | 2 +- .../security/TestTrustedSocketFactory.kt | 31 ++++++++++--------- 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/RealImapConnectionTest.kt b/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/RealImapConnectionTest.kt index 099c94c934..7fabb32658 100644 --- a/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/RealImapConnectionTest.kt +++ b/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/RealImapConnectionTest.kt @@ -46,7 +46,7 @@ private val XOAUTH_STRING_RETRY = "user=$USERNAME\u0001auth=Bearer $XOAUTH_TOKEN private val OAUTHBEARER_STRING = "n,a=$USERNAME,\u0001auth=Bearer $XOAUTH_TOKEN\u0001\u0001".base64() class RealImapConnectionTest { - private var socketFactory = TestTrustedSocketFactory.newInstance() + private var socketFactory = TestTrustedSocketFactory private var oAuth2TokenProvider = TestTokenProvider() @Before diff --git a/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/Pop3ConnectionTest.kt b/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/Pop3ConnectionTest.kt index fc7c06d442..30a54c027b 100644 --- a/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/Pop3ConnectionTest.kt +++ b/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/Pop3ConnectionTest.kt @@ -31,7 +31,7 @@ import org.mockito.kotlin.mock import org.mockito.kotlin.verifyNoInteractions class Pop3ConnectionTest { - private val socketFactory = TestTrustedSocketFactory.newInstance() + private val socketFactory = TestTrustedSocketFactory @Test fun `when TrustedSocketFactory throws wrapped CertificateChainException, open() should throw`() { diff --git a/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/smtp/SmtpTransportTest.kt b/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/smtp/SmtpTransportTest.kt index 1e76a5cda5..fcef57db39 100644 --- a/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/smtp/SmtpTransportTest.kt +++ b/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/smtp/SmtpTransportTest.kt @@ -35,7 +35,7 @@ private const val PASSWORD = "password" private val CLIENT_CERTIFICATE_ALIAS: String? = null class SmtpTransportTest { - private val socketFactory = TestTrustedSocketFactory.newInstance() + private val socketFactory = TestTrustedSocketFactory private val oAuth2TokenProvider = createMockOAuth2TokenProvider() @Test diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt index 8031d3f7d9..3c7fec7b86 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt @@ -10,9 +10,14 @@ import java.security.cert.X509Certificate import javax.net.ssl.SSLContext import javax.net.ssl.TrustManager -class TestTrustedSocketFactory private constructor( - private val serverCertificate: X509Certificate? -) : TrustedSocketFactory { +/** + * A test trusted socket factory that creates sockets that trust only a predefined server certificate + */ +object TestTrustedSocketFactory : TrustedSocketFactory { + + private val serverCertificate: X509Certificate by lazy { + KeyStoreProvider.getInstance().serverCertificate + } @Throws( NoSuchAlgorithmException::class, @@ -20,7 +25,12 @@ class TestTrustedSocketFactory private constructor( MessagingException::class, IOException::class, ) - override fun createSocket(socket: Socket?, host: String, port: Int, clientCertificateAlias: String?): Socket { + override fun createSocket( + socket: Socket?, + host: String, + port: Int, + clientCertificateAlias: String?, + ): Socket { val trustManagers: Array = arrayOf(VeryTrustingTrustManager(serverCertificate)) val sslContext = SSLContext.getInstance("TLS").apply { @@ -29,22 +39,15 @@ class TestTrustedSocketFactory private constructor( val sslSocketFactory = sslContext.socketFactory - return if (socket != null) { + return if (socket == null) { + sslSocketFactory.createSocket(host, port) + } else { sslSocketFactory.createSocket( socket, socket.inetAddress.hostAddress, socket.port, true, ) - } else { - sslSocketFactory.createSocket(host, port) - } - } - - companion object { - fun newInstance(): TestTrustedSocketFactory { - val serverCertificate = KeyStoreProvider.getInstance().serverCertificate - return TestTrustedSocketFactory(serverCertificate) } } } -- GitLab From 3ec1f09ebadd3cbc43e6a5cc1c9cabe8cfd5f7b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 13 Mar 2025 12:30:19 +0100 Subject: [PATCH 102/262] Rename .java to .kt --- .../security/{KeyStoreProvider.java => KeyStoreProvider.kt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename mail/testing/src/main/java/com/fsck/k9/mail/testing/security/{KeyStoreProvider.java => KeyStoreProvider.kt} (100%) diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.java b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.kt similarity index 100% rename from mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.java rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.kt -- GitLab From 00b32e4f81e6c9e5993d75f79688f01848c229d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 13 Mar 2025 12:30:19 +0100 Subject: [PATCH 103/262] Change KeyStoreProvider to Kotlin --- .../store/imap/mockserver/MockImapServer.java | 2 +- .../k9/mail/store/pop3/MockPop3Server.java | 2 +- .../transport/mockServer/MockSmtpServer.java | 2 +- .../mail/testing/security/KeyStoreProvider.kt | 87 ++++++++----------- .../security/TestTrustedSocketFactory.kt | 2 +- 5 files changed, 42 insertions(+), 53 deletions(-) diff --git a/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/mockserver/MockImapServer.java b/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/mockserver/MockImapServer.java index d04bc05a53..4a3ef52a9e 100644 --- a/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/mockserver/MockImapServer.java +++ b/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/mockserver/MockImapServer.java @@ -356,7 +356,7 @@ public class MockImapServer { private void upgradeToTls(Socket socket) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException, UnrecoverableKeyException, KeyManagementException { - KeyStore keyStore = keyStoreProvider.getKeyStore(); + KeyStore keyStore = keyStoreProvider.keyStore; String defaultAlgorithm = KeyManagerFactory.getDefaultAlgorithm(); KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(defaultAlgorithm); diff --git a/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/MockPop3Server.java b/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/MockPop3Server.java index 05e8a94b78..37bf42e45d 100644 --- a/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/MockPop3Server.java +++ b/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/MockPop3Server.java @@ -356,7 +356,7 @@ public class MockPop3Server { private void upgradeToTls(Socket socket) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException, UnrecoverableKeyException, KeyManagementException { - KeyStore keyStore = keyStoreProvider.getKeyStore(); + KeyStore keyStore = keyStoreProvider.keyStore; String defaultAlgorithm = KeyManagerFactory.getDefaultAlgorithm(); KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(defaultAlgorithm); diff --git a/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/mockServer/MockSmtpServer.java b/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/mockServer/MockSmtpServer.java index 14c9f3232b..9c4e273258 100644 --- a/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/mockServer/MockSmtpServer.java +++ b/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/mockServer/MockSmtpServer.java @@ -357,7 +357,7 @@ public class MockSmtpServer { private void upgradeToTls(Socket socket) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException, UnrecoverableKeyException, KeyManagementException { - KeyStore keyStore = keyStoreProvider.getKeyStore(); + KeyStore keyStore = keyStoreProvider.keyStore; String defaultAlgorithm = KeyManagerFactory.getDefaultAlgorithm(); KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(defaultAlgorithm); diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.kt b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.kt index 867e0dd28e..3c3dcc1784 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.kt +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.kt @@ -1,61 +1,50 @@ -package com.fsck.k9.mail.testing.security; +package com.fsck.k9.mail.testing.security +import java.security.KeyStore +import java.security.KeyStoreException +import java.security.cert.X509Certificate -import java.io.InputStream; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.cert.X509Certificate; +class KeyStoreProvider private constructor(@JvmField val keyStore: KeyStore?) { + val password: CharArray? + get() = KEYSTORE_PASSWORD.toCharArray() - -public class KeyStoreProvider { - private static final String KEYSTORE_PASSWORD = "password"; - private static final String KEYSTORE_RESOURCE = "/keystore.jks"; - private static final String SERVER_CERTIFICATE_ALIAS = "mockimapserver"; - - - private final KeyStore keyStore; - - - public static KeyStoreProvider getInstance() { - KeyStore keyStore = loadKeyStore(); - return new KeyStoreProvider(keyStore); - } - - private static KeyStore loadKeyStore() { - try { - KeyStore keyStore = KeyStore.getInstance("JKS"); - - InputStream keyStoreInputStream = KeyStoreProvider.class.getResourceAsStream(KEYSTORE_RESOURCE); + val serverCertificate: X509Certificate + get() { try { - keyStore.load(keyStoreInputStream, KEYSTORE_PASSWORD.toCharArray()); - } finally { - keyStoreInputStream.close(); + val keyStore: KeyStore = loadKeyStore() + return keyStore.getCertificate(SERVER_CERTIFICATE_ALIAS) as X509Certificate + } catch (e: KeyStoreException) { + throw RuntimeException(e) } - - return keyStore; - } catch (Exception e) { - throw new RuntimeException(e); } - } - - private KeyStoreProvider(KeyStore keyStore) { - this.keyStore = keyStore; - } - public KeyStore getKeyStore() { - return keyStore; - } + companion object { + private const val KEYSTORE_PASSWORD = "password" + private const val KEYSTORE_RESOURCE = "/keystore.jks" + private const val SERVER_CERTIFICATE_ALIAS = "mockimapserver" - public char[] getPassword() { - return KEYSTORE_PASSWORD.toCharArray(); - } + @JvmStatic + val instance: KeyStoreProvider + get() { + val keyStore: KeyStore = loadKeyStore() + return KeyStoreProvider(keyStore) + } - public X509Certificate getServerCertificate() { - try { - KeyStore keyStore = loadKeyStore(); - return (X509Certificate) keyStore.getCertificate(SERVER_CERTIFICATE_ALIAS); - } catch (KeyStoreException e) { - throw new RuntimeException(e); + private fun loadKeyStore(): KeyStore { + try { + val keyStore = KeyStore.getInstance("JKS") + + val keyStoreInputStream = KeyStoreProvider::class.java.getResourceAsStream(KEYSTORE_RESOURCE) + try { + keyStore.load(keyStoreInputStream, KEYSTORE_PASSWORD.toCharArray()) + } finally { + keyStoreInputStream!!.close() + } + + return keyStore + } catch (e: Exception) { + throw RuntimeException(e) + } } } } diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt index 3c7fec7b86..ad1c72b089 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt @@ -16,7 +16,7 @@ import javax.net.ssl.TrustManager object TestTrustedSocketFactory : TrustedSocketFactory { private val serverCertificate: X509Certificate by lazy { - KeyStoreProvider.getInstance().serverCertificate + KeyStoreProvider.instance.serverCertificate } @Throws( -- GitLab From 88a6edbda510efa2caa2eceaed4fd3b8b44e7305 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 13 Mar 2025 12:38:39 +0100 Subject: [PATCH 104/262] Change KeyStoreProvider to object --- .../store/imap/mockserver/MockImapServer.java | 4 +- .../k9/mail/store/pop3/MockPop3Server.java | 4 +- .../transport/mockServer/MockSmtpServer.java | 4 +- .../mail/testing/security/KeyStoreProvider.kt | 54 ++++++------------- .../security/TestTrustedSocketFactory.kt | 2 +- 5 files changed, 23 insertions(+), 45 deletions(-) diff --git a/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/mockserver/MockImapServer.java b/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/mockserver/MockImapServer.java index 4a3ef52a9e..83ccdc92c9 100644 --- a/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/mockserver/MockImapServer.java +++ b/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/mockserver/MockImapServer.java @@ -50,7 +50,7 @@ public class MockImapServer { public MockImapServer() { - this(KeyStoreProvider.getInstance(), new DefaultLogger()); + this(TestKeyStoreProvider.INSTANCE, new DefaultLogger()); } public MockImapServer(KeyStoreProvider keyStoreProvider, Logger logger) { @@ -356,7 +356,7 @@ public class MockImapServer { private void upgradeToTls(Socket socket) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException, UnrecoverableKeyException, KeyManagementException { - KeyStore keyStore = keyStoreProvider.keyStore; + KeyStore keyStore = keyStoreProvider.getKeyStore(); String defaultAlgorithm = KeyManagerFactory.getDefaultAlgorithm(); KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(defaultAlgorithm); diff --git a/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/MockPop3Server.java b/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/MockPop3Server.java index 37bf42e45d..801d2e2d62 100644 --- a/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/MockPop3Server.java +++ b/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/MockPop3Server.java @@ -50,7 +50,7 @@ public class MockPop3Server { public MockPop3Server() { - this(KeyStoreProvider.getInstance(), new DefaultLogger()); + this(TestKeyStoreProvider.INSTANCE, new DefaultLogger()); } public MockPop3Server(KeyStoreProvider keyStoreProvider, Logger logger) { @@ -356,7 +356,7 @@ public class MockPop3Server { private void upgradeToTls(Socket socket) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException, UnrecoverableKeyException, KeyManagementException { - KeyStore keyStore = keyStoreProvider.keyStore; + KeyStore keyStore = keyStoreProvider.getKeyStore(); String defaultAlgorithm = KeyManagerFactory.getDefaultAlgorithm(); KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(defaultAlgorithm); diff --git a/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/mockServer/MockSmtpServer.java b/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/mockServer/MockSmtpServer.java index 9c4e273258..302fd56b60 100644 --- a/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/mockServer/MockSmtpServer.java +++ b/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/mockServer/MockSmtpServer.java @@ -50,7 +50,7 @@ public class MockSmtpServer { public MockSmtpServer() { - this(KeyStoreProvider.getInstance(), new DefaultLogger()); + this(TestKeyStoreProvider.INSTANCE, new DefaultLogger()); } public MockSmtpServer(KeyStoreProvider keyStoreProvider, Logger logger) { @@ -357,7 +357,7 @@ public class MockSmtpServer { private void upgradeToTls(Socket socket) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException, UnrecoverableKeyException, KeyManagementException { - KeyStore keyStore = keyStoreProvider.keyStore; + KeyStore keyStore = keyStoreProvider.getKeyStore(); String defaultAlgorithm = KeyManagerFactory.getDefaultAlgorithm(); KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(defaultAlgorithm); diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.kt b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.kt index 3c3dcc1784..e425569e47 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.kt +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.kt @@ -4,47 +4,25 @@ import java.security.KeyStore import java.security.KeyStoreException import java.security.cert.X509Certificate -class KeyStoreProvider private constructor(@JvmField val keyStore: KeyStore?) { - val password: CharArray? - get() = KEYSTORE_PASSWORD.toCharArray() +object KeyStoreProvider { - val serverCertificate: X509Certificate - get() { - try { - val keyStore: KeyStore = loadKeyStore() - return keyStore.getCertificate(SERVER_CERTIFICATE_ALIAS) as X509Certificate - } catch (e: KeyStoreException) { - throw RuntimeException(e) - } - } - - companion object { - private const val KEYSTORE_PASSWORD = "password" - private const val KEYSTORE_RESOURCE = "/keystore.jks" - private const val SERVER_CERTIFICATE_ALIAS = "mockimapserver" - - @JvmStatic - val instance: KeyStoreProvider - get() { - val keyStore: KeyStore = loadKeyStore() - return KeyStoreProvider(keyStore) - } + private const val KEYSTORE_PASSWORD = "password" + private const val KEYSTORE_RESOURCE = "/keystore.jks" + private const val SERVER_CERTIFICATE_ALIAS = "mockimapserver" - private fun loadKeyStore(): KeyStore { - try { - val keyStore = KeyStore.getInstance("JKS") - - val keyStoreInputStream = KeyStoreProvider::class.java.getResourceAsStream(KEYSTORE_RESOURCE) - try { - keyStore.load(keyStoreInputStream, KEYSTORE_PASSWORD.toCharArray()) - } finally { - keyStoreInputStream!!.close() - } + val keyStore: KeyStore by lazy { loadKeyStore() } + val password: CharArray by lazy { KEYSTORE_PASSWORD.toCharArray() } + val serverCertificate: X509Certificate by lazy { + keyStore.getCertificate(SERVER_CERTIFICATE_ALIAS) as X509Certificate + } - return keyStore - } catch (e: Exception) { - throw RuntimeException(e) - } + private fun loadKeyStore(): KeyStore { + val keyStore = KeyStore.getInstance("JKS") + val keyStoreInputStream = KeyStoreProvider::class.java.getResourceAsStream(KEYSTORE_RESOURCE) + keyStoreInputStream.use { inputStream -> + keyStore.load(inputStream, KEYSTORE_PASSWORD.toCharArray()) } + + return keyStore } } diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt index ad1c72b089..0d63e1fb98 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt @@ -16,7 +16,7 @@ import javax.net.ssl.TrustManager object TestTrustedSocketFactory : TrustedSocketFactory { private val serverCertificate: X509Certificate by lazy { - KeyStoreProvider.instance.serverCertificate + KeyStoreProvider.serverCertificate } @Throws( -- GitLab From e756fe79e8b5002b4345ce9059cd65db2cc48a2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 13 Mar 2025 12:43:13 +0100 Subject: [PATCH 105/262] Rename KeyStoreProvider to TestKeyStoreProvider --- .../k9/mail/store/imap/mockserver/MockImapServer.java | 10 +++++----- .../com/fsck/k9/mail/store/pop3/MockPop3Server.java | 10 +++++----- .../k9/mail/transport/mockServer/MockSmtpServer.java | 10 +++++----- .../{KeyStoreProvider.kt => TestKeyStoreProvider.kt} | 5 ++--- .../mail/testing/security/TestTrustedSocketFactory.kt | 2 +- 5 files changed, 18 insertions(+), 19 deletions(-) rename mail/testing/src/main/java/com/fsck/k9/mail/testing/security/{KeyStoreProvider.kt => TestKeyStoreProvider.kt} (83%) diff --git a/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/mockserver/MockImapServer.java b/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/mockserver/MockImapServer.java index 83ccdc92c9..6431020f45 100644 --- a/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/mockserver/MockImapServer.java +++ b/mail/protocols/imap/src/test/java/com/fsck/k9/mail/store/imap/mockserver/MockImapServer.java @@ -21,7 +21,7 @@ import java.util.concurrent.TimeUnit; import java.util.zip.Inflater; import java.util.zip.InflaterInputStream; -import com.fsck.k9.mail.testing.security.KeyStoreProvider; +import com.fsck.k9.mail.testing.security.TestKeyStoreProvider; import com.jcraft.jzlib.JZlib; import com.jcraft.jzlib.ZOutputStream; import javax.net.ssl.KeyManagerFactory; @@ -41,7 +41,7 @@ public class MockImapServer { private final Deque interactions = new ConcurrentLinkedDeque<>(); private final CountDownLatch waitForConnectionClosed = new CountDownLatch(1); private final CountDownLatch waitForAllExpectedCommands = new CountDownLatch(1); - private final KeyStoreProvider keyStoreProvider; + private final TestKeyStoreProvider keyStoreProvider; private final Logger logger; private MockServerThread mockServerThread; @@ -53,7 +53,7 @@ public class MockImapServer { this(TestKeyStoreProvider.INSTANCE, new DefaultLogger()); } - public MockImapServer(KeyStoreProvider keyStoreProvider, Logger logger) { + public MockImapServer(TestKeyStoreProvider keyStoreProvider, Logger logger) { this.keyStoreProvider = keyStoreProvider; this.logger = logger; } @@ -233,7 +233,7 @@ public class MockImapServer { private final CountDownLatch waitForConnectionClosed; private final CountDownLatch waitForAllExpectedCommands; private final Logger logger; - private final KeyStoreProvider keyStoreProvider; + private final TestKeyStoreProvider keyStoreProvider; private volatile boolean shouldStop = false; private volatile Socket clientSocket; @@ -245,7 +245,7 @@ public class MockImapServer { public MockServerThread(ServerSocket serverSocket, Deque interactions, CountDownLatch waitForConnectionClosed, CountDownLatch waitForAllExpectedCommands, Logger logger, - KeyStoreProvider keyStoreProvider) { + TestKeyStoreProvider keyStoreProvider) { super("MockImapServer"); this.serverSocket = serverSocket; this.interactions = interactions; diff --git a/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/MockPop3Server.java b/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/MockPop3Server.java index 801d2e2d62..96e85fc660 100644 --- a/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/MockPop3Server.java +++ b/mail/protocols/pop3/src/test/java/com/fsck/k9/mail/store/pop3/MockPop3Server.java @@ -21,7 +21,7 @@ import java.util.concurrent.TimeUnit; import java.util.zip.Inflater; import java.util.zip.InflaterInputStream; -import com.fsck.k9.mail.testing.security.KeyStoreProvider; +import com.fsck.k9.mail.testing.security.TestKeyStoreProvider; import com.jcraft.jzlib.JZlib; import com.jcraft.jzlib.ZOutputStream; import javax.net.ssl.KeyManagerFactory; @@ -41,7 +41,7 @@ public class MockPop3Server { private final Deque interactions = new ConcurrentLinkedDeque<>(); private final CountDownLatch waitForConnectionClosed = new CountDownLatch(1); private final CountDownLatch waitForAllExpectedCommands = new CountDownLatch(1); - private final KeyStoreProvider keyStoreProvider; + private final TestKeyStoreProvider keyStoreProvider; private final Logger logger; private MockServerThread mockServerThread; @@ -53,7 +53,7 @@ public class MockPop3Server { this(TestKeyStoreProvider.INSTANCE, new DefaultLogger()); } - public MockPop3Server(KeyStoreProvider keyStoreProvider, Logger logger) { + public MockPop3Server(TestKeyStoreProvider keyStoreProvider, Logger logger) { this.keyStoreProvider = keyStoreProvider; this.logger = logger; } @@ -233,7 +233,7 @@ public class MockPop3Server { private final CountDownLatch waitForConnectionClosed; private final CountDownLatch waitForAllExpectedCommands; private final Logger logger; - private final KeyStoreProvider keyStoreProvider; + private final TestKeyStoreProvider keyStoreProvider; private volatile boolean shouldStop = false; private volatile Socket clientSocket; @@ -245,7 +245,7 @@ public class MockPop3Server { public MockServerThread(ServerSocket serverSocket, Deque interactions, CountDownLatch waitForConnectionClosed, CountDownLatch waitForAllExpectedCommands, Logger logger, - KeyStoreProvider keyStoreProvider) { + TestKeyStoreProvider keyStoreProvider) { super("MockImapServer"); this.serverSocket = serverSocket; this.interactions = interactions; diff --git a/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/mockServer/MockSmtpServer.java b/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/mockServer/MockSmtpServer.java index 302fd56b60..67c6fcb9d2 100644 --- a/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/mockServer/MockSmtpServer.java +++ b/mail/protocols/smtp/src/test/java/com/fsck/k9/mail/transport/mockServer/MockSmtpServer.java @@ -21,7 +21,7 @@ import java.util.concurrent.TimeUnit; import java.util.zip.Inflater; import java.util.zip.InflaterInputStream; -import com.fsck.k9.mail.testing.security.KeyStoreProvider; +import com.fsck.k9.mail.testing.security.TestKeyStoreProvider; import com.jcraft.jzlib.JZlib; import com.jcraft.jzlib.ZOutputStream; import javax.net.ssl.KeyManagerFactory; @@ -41,7 +41,7 @@ public class MockSmtpServer { private final Deque interactions = new ConcurrentLinkedDeque<>(); private final CountDownLatch waitForConnectionClosed = new CountDownLatch(1); private final CountDownLatch waitForAllExpectedCommands = new CountDownLatch(1); - private final KeyStoreProvider keyStoreProvider; + private final TestKeyStoreProvider keyStoreProvider; private final Logger logger; private MockServerThread mockServerThread; @@ -53,7 +53,7 @@ public class MockSmtpServer { this(TestKeyStoreProvider.INSTANCE, new DefaultLogger()); } - public MockSmtpServer(KeyStoreProvider keyStoreProvider, Logger logger) { + public MockSmtpServer(TestKeyStoreProvider keyStoreProvider, Logger logger) { this.keyStoreProvider = keyStoreProvider; this.logger = logger; } @@ -235,7 +235,7 @@ public class MockSmtpServer { private final CountDownLatch waitForConnectionClosed; private final CountDownLatch waitForAllExpectedCommands; private final Logger logger; - private final KeyStoreProvider keyStoreProvider; + private final TestKeyStoreProvider keyStoreProvider; private volatile boolean shouldStop = false; private volatile Socket clientSocket; @@ -247,7 +247,7 @@ public class MockSmtpServer { public MockServerThread(ServerSocket serverSocket, Deque interactions, CountDownLatch waitForConnectionClosed, CountDownLatch waitForAllExpectedCommands, Logger logger, - KeyStoreProvider keyStoreProvider) { + TestKeyStoreProvider keyStoreProvider) { super("MockSmtpServer"); this.serverSocket = serverSocket; this.interactions = interactions; diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.kt b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestKeyStoreProvider.kt similarity index 83% rename from mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.kt rename to mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestKeyStoreProvider.kt index e425569e47..b62640f8ed 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/KeyStoreProvider.kt +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestKeyStoreProvider.kt @@ -1,10 +1,9 @@ package com.fsck.k9.mail.testing.security import java.security.KeyStore -import java.security.KeyStoreException import java.security.cert.X509Certificate -object KeyStoreProvider { +object TestKeyStoreProvider { private const val KEYSTORE_PASSWORD = "password" private const val KEYSTORE_RESOURCE = "/keystore.jks" @@ -18,7 +17,7 @@ object KeyStoreProvider { private fun loadKeyStore(): KeyStore { val keyStore = KeyStore.getInstance("JKS") - val keyStoreInputStream = KeyStoreProvider::class.java.getResourceAsStream(KEYSTORE_RESOURCE) + val keyStoreInputStream = TestKeyStoreProvider::class.java.getResourceAsStream(KEYSTORE_RESOURCE) keyStoreInputStream.use { inputStream -> keyStore.load(inputStream, KEYSTORE_PASSWORD.toCharArray()) } diff --git a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt index 0d63e1fb98..c93719a3aa 100644 --- a/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt +++ b/mail/testing/src/main/java/com/fsck/k9/mail/testing/security/TestTrustedSocketFactory.kt @@ -16,7 +16,7 @@ import javax.net.ssl.TrustManager object TestTrustedSocketFactory : TrustedSocketFactory { private val serverCertificate: X509Certificate by lazy { - KeyStoreProvider.serverCertificate + TestKeyStoreProvider.serverCertificate } @Throws( -- GitLab From aad6eae69ce37ab64c6b741a38daa73acd198a94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 13 Mar 2025 17:31:28 +0100 Subject: [PATCH 106/262] Move Catalog app to Kotlin source folder --- .../{java => kotlin}/app/k9mail/ui/catalog/CatalogActivity.kt | 0 .../{java => kotlin}/app/k9mail/ui/catalog/CatalogApplication.kt | 0 .../{java => kotlin}/app/k9mail/ui/catalog/di/CatalogUiModule.kt | 0 .../{java => kotlin}/app/k9mail/ui/catalog/ui/CatalogContent.kt | 0 .../{java => kotlin}/app/k9mail/ui/catalog/ui/CatalogContract.kt | 0 .../main/{java => kotlin}/app/k9mail/ui/catalog/ui/CatalogPage.kt | 0 .../{java => kotlin}/app/k9mail/ui/catalog/ui/CatalogScreen.kt | 0 .../{java => kotlin}/app/k9mail/ui/catalog/ui/CatalogViewModel.kt | 0 .../app/k9mail/ui/catalog/ui/atom/CatalogAtomContent.kt | 0 .../app/k9mail/ui/catalog/ui/atom/CatalogAtomNavigation.kt | 0 .../app/k9mail/ui/catalog/ui/atom/CatalogAtomPage.kt | 0 .../app/k9mail/ui/catalog/ui/atom/CatalogAtomScreen.kt | 0 .../app/k9mail/ui/catalog/ui/atom/items/ButtonItems.kt | 0 .../app/k9mail/ui/catalog/ui/atom/items/ColorItems.kt | 0 .../app/k9mail/ui/catalog/ui/atom/items/IconItems.kt | 0 .../app/k9mail/ui/catalog/ui/atom/items/ImageItems.kt | 0 .../app/k9mail/ui/catalog/ui/atom/items/SelectionControlItems.kt | 0 .../app/k9mail/ui/catalog/ui/atom/items/TextFieldItems.kt | 0 .../app/k9mail/ui/catalog/ui/atom/items/TypographyItems.kt | 0 .../app/k9mail/ui/catalog/ui/atom/view/ColorContent.kt | 0 .../app/k9mail/ui/catalog/ui/common/PagedContent.kt | 0 .../app/k9mail/ui/catalog/ui/common/ThemeTopAppBar.kt | 0 .../app/k9mail/ui/catalog/ui/common/drawer/DrawerContent.kt | 0 .../app/k9mail/ui/catalog/ui/common/helper/WithRememberedState.kt | 0 .../app/k9mail/ui/catalog/ui/common/list/DefaultItem.kt | 0 .../app/k9mail/ui/catalog/ui/common/list/DefaultItemPadding.kt | 0 .../app/k9mail/ui/catalog/ui/common/list/FullSpanItem.kt | 0 .../app/k9mail/ui/catalog/ui/common/list/ItemOutlinedView.kt | 0 .../app/k9mail/ui/catalog/ui/common/list/SectionHeaderItem.kt | 0 .../app/k9mail/ui/catalog/ui/common/list/SectionInfoItem.kt | 0 .../app/k9mail/ui/catalog/ui/common/list/SectionSubtitleItem.kt | 0 .../app/k9mail/ui/catalog/ui/common/list/WideItem.kt | 0 .../app/k9mail/ui/catalog/ui/common/theme/ThemeSwitch.kt | 0 .../app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeContent.kt | 0 .../k9mail/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt | 0 .../app/k9mail/ui/catalog/ui/molecule/CatalogMoleculePage.kt | 0 .../app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt | 0 .../app/k9mail/ui/catalog/ui/molecule/items/InputItems.kt | 0 .../app/k9mail/ui/catalog/ui/molecule/items/PullToRefreshItem.kt | 0 .../app/k9mail/ui/catalog/ui/molecule/items/StateItems.kt | 0 .../app/k9mail/ui/catalog/ui/navigation/CatalogNavHost.kt | 0 .../app/k9mail/ui/catalog/ui/organism/CatalogMoleculeContent.kt | 0 .../k9mail/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt | 0 .../app/k9mail/ui/catalog/ui/organism/CatalogOrganismPage.kt | 0 .../app/k9mail/ui/catalog/ui/organism/CatalogOrganismScreen.kt | 0 .../app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt | 0 46 files changed, 0 insertions(+), 0 deletions(-) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/CatalogActivity.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/CatalogApplication.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/di/CatalogUiModule.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/CatalogContent.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/CatalogContract.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/CatalogPage.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/CatalogScreen.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/CatalogViewModel.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/atom/CatalogAtomContent.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/atom/CatalogAtomNavigation.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/atom/CatalogAtomPage.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/atom/CatalogAtomScreen.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/atom/items/ButtonItems.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/atom/items/ColorItems.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/atom/items/IconItems.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/atom/items/ImageItems.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/atom/items/SelectionControlItems.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/atom/items/TextFieldItems.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/atom/items/TypographyItems.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/atom/view/ColorContent.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/common/PagedContent.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/common/ThemeTopAppBar.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/common/drawer/DrawerContent.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/common/helper/WithRememberedState.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/common/list/DefaultItem.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/common/list/DefaultItemPadding.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/common/list/FullSpanItem.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/common/list/ItemOutlinedView.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/common/list/SectionHeaderItem.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/common/list/SectionInfoItem.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/common/list/SectionSubtitleItem.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/common/list/WideItem.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/common/theme/ThemeSwitch.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeContent.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculePage.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/molecule/items/InputItems.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/molecule/items/PullToRefreshItem.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/molecule/items/StateItems.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/navigation/CatalogNavHost.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/organism/CatalogMoleculeContent.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/organism/CatalogOrganismPage.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/organism/CatalogOrganismScreen.kt (100%) rename app-ui-catalog/src/main/{java => kotlin}/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt (100%) diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/CatalogActivity.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/CatalogActivity.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/CatalogActivity.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/CatalogActivity.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/CatalogApplication.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/CatalogApplication.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/CatalogApplication.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/CatalogApplication.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/di/CatalogUiModule.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/di/CatalogUiModule.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/di/CatalogUiModule.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/di/CatalogUiModule.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/CatalogContent.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogContent.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/CatalogContent.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogContent.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/CatalogContract.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogContract.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/CatalogContract.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogContract.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/CatalogPage.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogPage.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/CatalogPage.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogPage.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/CatalogScreen.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogScreen.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/CatalogScreen.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogScreen.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/CatalogViewModel.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogViewModel.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/CatalogViewModel.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogViewModel.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/CatalogAtomContent.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomContent.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/CatalogAtomContent.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomContent.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/CatalogAtomNavigation.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomNavigation.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/CatalogAtomNavigation.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomNavigation.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/CatalogAtomPage.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomPage.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/CatalogAtomPage.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomPage.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/CatalogAtomScreen.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomScreen.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/CatalogAtomScreen.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomScreen.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/ButtonItems.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/ButtonItems.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/ButtonItems.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/ButtonItems.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/ColorItems.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/ColorItems.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/ColorItems.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/ColorItems.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/IconItems.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/IconItems.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/IconItems.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/IconItems.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/ImageItems.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/ImageItems.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/ImageItems.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/ImageItems.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/SelectionControlItems.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/SelectionControlItems.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/SelectionControlItems.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/SelectionControlItems.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/TextFieldItems.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/TextFieldItems.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/TextFieldItems.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/TextFieldItems.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/TypographyItems.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/TypographyItems.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/TypographyItems.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/TypographyItems.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/view/ColorContent.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/view/ColorContent.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/view/ColorContent.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/view/ColorContent.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/PagedContent.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/PagedContent.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/PagedContent.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/PagedContent.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/ThemeTopAppBar.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/ThemeTopAppBar.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/ThemeTopAppBar.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/ThemeTopAppBar.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/drawer/DrawerContent.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/drawer/DrawerContent.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/drawer/DrawerContent.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/drawer/DrawerContent.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/helper/WithRememberedState.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/helper/WithRememberedState.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/helper/WithRememberedState.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/helper/WithRememberedState.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/list/DefaultItem.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/DefaultItem.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/list/DefaultItem.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/DefaultItem.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/list/DefaultItemPadding.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/DefaultItemPadding.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/list/DefaultItemPadding.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/DefaultItemPadding.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/list/FullSpanItem.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/FullSpanItem.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/list/FullSpanItem.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/FullSpanItem.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/list/ItemOutlinedView.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/ItemOutlinedView.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/list/ItemOutlinedView.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/ItemOutlinedView.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/list/SectionHeaderItem.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/SectionHeaderItem.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/list/SectionHeaderItem.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/SectionHeaderItem.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/list/SectionInfoItem.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/SectionInfoItem.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/list/SectionInfoItem.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/SectionInfoItem.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/list/SectionSubtitleItem.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/SectionSubtitleItem.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/list/SectionSubtitleItem.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/SectionSubtitleItem.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/list/WideItem.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/WideItem.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/list/WideItem.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/WideItem.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/theme/ThemeSwitch.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/theme/ThemeSwitch.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/common/theme/ThemeSwitch.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/theme/ThemeSwitch.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeContent.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeContent.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeContent.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeContent.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculePage.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculePage.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculePage.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculePage.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/molecule/items/InputItems.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/items/InputItems.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/molecule/items/InputItems.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/items/InputItems.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/molecule/items/PullToRefreshItem.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/items/PullToRefreshItem.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/molecule/items/PullToRefreshItem.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/items/PullToRefreshItem.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/molecule/items/StateItems.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/items/StateItems.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/molecule/items/StateItems.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/items/StateItems.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/navigation/CatalogNavHost.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/navigation/CatalogNavHost.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/navigation/CatalogNavHost.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/navigation/CatalogNavHost.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/CatalogMoleculeContent.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogMoleculeContent.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/CatalogMoleculeContent.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogMoleculeContent.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/CatalogOrganismPage.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogOrganismPage.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/CatalogOrganismPage.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogOrganismPage.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/CatalogOrganismScreen.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogOrganismScreen.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/CatalogOrganismScreen.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogOrganismScreen.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt similarity index 100% rename from app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt rename to app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt -- GitLab From 46c406d964804bee3ff61e8fd073c545cbf494e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 13 Mar 2025 17:34:09 +0100 Subject: [PATCH 107/262] Add DemoActionButton --- .../catalog/ui/organism/items/AppBarItems.kt | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt index 8685839924..a5e2035e55 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt +++ b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt @@ -1,6 +1,8 @@ package app.k9mail.ui.catalog.ui.organism.items import androidx.compose.foundation.lazy.grid.LazyGridScope +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.vector.ImageVector import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonIcon import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons import app.k9mail.core.ui.compose.designsystem.organism.SubtitleTopAppBar @@ -73,16 +75,13 @@ private fun LazyGridScope.subtitleTopAppBarItems() { title = "Title", subtitle = "Subtitle", actions = { - ButtonIcon( - onClick = {}, + DemoActionButton( imageVector = Icons.Outlined.Info, ) - ButtonIcon( - onClick = {}, + DemoActionButton( imageVector = Icons.Outlined.Check, ) - ButtonIcon( - onClick = {}, + DemoActionButton( imageVector = Icons.Outlined.Visibility, ) }, @@ -97,16 +96,13 @@ private fun LazyGridScope.subtitleTopAppBarItems() { subtitle = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + "Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", actions = { - ButtonIcon( - onClick = {}, + DemoActionButton( imageVector = Icons.Outlined.Info, ) - ButtonIcon( - onClick = {}, + DemoActionButton( imageVector = Icons.Outlined.Check, ) - ButtonIcon( - onClick = {}, + DemoActionButton( imageVector = Icons.Outlined.Visibility, ) }, @@ -134,3 +130,16 @@ private fun LazyGridScope.subtitleTopAppBarItems() { } } } + +/** + * Demo action button that does nothing on click. + */ +@Composable +private fun DemoActionButton( + imageVector: ImageVector, +) { + ButtonIcon( + onClick = {}, + imageVector = imageVector, + ) +} -- GitLab From 55a485759a6800e4e34ed1eb489b6bbbdef4919f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 11 Mar 2025 18:44:11 +0100 Subject: [PATCH 108/262] Add account settings api and impl module with basic navigation --- feature/account/settings/api/build.gradle.kts | 12 +++++++ .../settings/api/AccountSettingsNavigation.kt | 5 +++ .../settings/api/AccountSettingsRoute.kt | 22 ++++++++++++ .../account/settings/impl/build.gradle.kts | 17 +++++++++ .../account/settings/AccountSettingsModule.kt | 9 +++++ .../impl/DefaultAccountSettingsNavigation.kt | 30 ++++++++++++++++ .../settings/impl/ui/AccountSettingsScreen.kt | 36 +++++++++++++++++++ feature/launcher/build.gradle.kts | 4 ++- .../feature/launcher/FeatureLauncherTarget.kt | 5 +++ .../navigation/FeatureLauncherNavHost.kt | 8 +++++ settings.gradle.kts | 4 ++- 11 files changed, 150 insertions(+), 2 deletions(-) create mode 100644 feature/account/settings/api/build.gradle.kts create mode 100644 feature/account/settings/api/src/main/kotlin/net/thunderbird/feature/account/settings/api/AccountSettingsNavigation.kt create mode 100644 feature/account/settings/api/src/main/kotlin/net/thunderbird/feature/account/settings/api/AccountSettingsRoute.kt create mode 100644 feature/account/settings/impl/build.gradle.kts create mode 100644 feature/account/settings/impl/src/main/kotlin/net/thunderbird/feature/account/settings/AccountSettingsModule.kt create mode 100644 feature/account/settings/impl/src/main/kotlin/net/thunderbird/feature/account/settings/impl/DefaultAccountSettingsNavigation.kt create mode 100644 feature/account/settings/impl/src/main/kotlin/net/thunderbird/feature/account/settings/impl/ui/AccountSettingsScreen.kt diff --git a/feature/account/settings/api/build.gradle.kts b/feature/account/settings/api/build.gradle.kts new file mode 100644 index 0000000000..bb79c59357 --- /dev/null +++ b/feature/account/settings/api/build.gradle.kts @@ -0,0 +1,12 @@ +plugins { + id(ThunderbirdPlugins.Library.androidCompose) +} + +android { + namespace = "net.thunderbird.feature.account.settings.api" + resourcePrefix = "account_settings_api_" +} + +dependencies { + implementation(projects.core.ui.compose.navigation) +} diff --git a/feature/account/settings/api/src/main/kotlin/net/thunderbird/feature/account/settings/api/AccountSettingsNavigation.kt b/feature/account/settings/api/src/main/kotlin/net/thunderbird/feature/account/settings/api/AccountSettingsNavigation.kt new file mode 100644 index 0000000000..38c0135fdd --- /dev/null +++ b/feature/account/settings/api/src/main/kotlin/net/thunderbird/feature/account/settings/api/AccountSettingsNavigation.kt @@ -0,0 +1,5 @@ +package net.thunderbird.feature.account.settings.api + +import app.k9mail.core.ui.compose.navigation.Navigation + +interface AccountSettingsNavigation : Navigation diff --git a/feature/account/settings/api/src/main/kotlin/net/thunderbird/feature/account/settings/api/AccountSettingsRoute.kt b/feature/account/settings/api/src/main/kotlin/net/thunderbird/feature/account/settings/api/AccountSettingsRoute.kt new file mode 100644 index 0000000000..978a159ada --- /dev/null +++ b/feature/account/settings/api/src/main/kotlin/net/thunderbird/feature/account/settings/api/AccountSettingsRoute.kt @@ -0,0 +1,22 @@ +package net.thunderbird.feature.account.settings.api + +import app.k9mail.core.ui.compose.navigation.Route +import kotlinx.serialization.Serializable + +sealed interface AccountSettingsRoute : Route { + + @Serializable + data class GeneralSettings(val accountId: String) : AccountSettingsRoute { + override val basePath: String = BASE_PATH + + override fun route(): String = "$basePath/$accountId" + + companion object { + const val BASE_PATH = "$ACCOUNT_SETTINGS_BASE_PATH/general" + } + } + + companion object { + const val ACCOUNT_SETTINGS_BASE_PATH = "app://account/settings" + } +} diff --git a/feature/account/settings/impl/build.gradle.kts b/feature/account/settings/impl/build.gradle.kts new file mode 100644 index 0000000000..a79674f362 --- /dev/null +++ b/feature/account/settings/impl/build.gradle.kts @@ -0,0 +1,17 @@ +plugins { + id(ThunderbirdPlugins.Library.androidCompose) +} + +android { + namespace = "net.thunderbird.feature.account.settings" + resourcePrefix = "account_settings_" +} + +dependencies { + api(projects.feature.account.settings.api) + + implementation(projects.core.ui.compose.designsystem) + implementation(projects.core.ui.compose.navigation) + + testImplementation(projects.core.ui.compose.testing) +} diff --git a/feature/account/settings/impl/src/main/kotlin/net/thunderbird/feature/account/settings/AccountSettingsModule.kt b/feature/account/settings/impl/src/main/kotlin/net/thunderbird/feature/account/settings/AccountSettingsModule.kt new file mode 100644 index 0000000000..b97e32674b --- /dev/null +++ b/feature/account/settings/impl/src/main/kotlin/net/thunderbird/feature/account/settings/AccountSettingsModule.kt @@ -0,0 +1,9 @@ +package net.thunderbird.feature.account.settings + +import net.thunderbird.feature.account.settings.api.AccountSettingsNavigation +import net.thunderbird.feature.account.settings.impl.DefaultAccountSettingsNavigation +import org.koin.dsl.module + +val featureAccountSettingsModule = module { + single { DefaultAccountSettingsNavigation() } +} diff --git a/feature/account/settings/impl/src/main/kotlin/net/thunderbird/feature/account/settings/impl/DefaultAccountSettingsNavigation.kt b/feature/account/settings/impl/src/main/kotlin/net/thunderbird/feature/account/settings/impl/DefaultAccountSettingsNavigation.kt new file mode 100644 index 0000000000..d96817e32c --- /dev/null +++ b/feature/account/settings/impl/src/main/kotlin/net/thunderbird/feature/account/settings/impl/DefaultAccountSettingsNavigation.kt @@ -0,0 +1,30 @@ +package net.thunderbird.feature.account.settings.impl + +import androidx.navigation.NavGraphBuilder +import androidx.navigation.toRoute +import app.k9mail.core.ui.compose.navigation.deepLinkComposable +import net.thunderbird.feature.account.settings.api.AccountSettingsNavigation +import net.thunderbird.feature.account.settings.api.AccountSettingsRoute +import net.thunderbird.feature.account.settings.impl.ui.AccountSettingsScreen + +class DefaultAccountSettingsNavigation : AccountSettingsNavigation { + + override fun registerRoutes( + navGraphBuilder: NavGraphBuilder, + onBack: () -> Unit, + onFinish: (AccountSettingsRoute) -> Unit, + ) { + with(navGraphBuilder) { + deepLinkComposable( + basePath = AccountSettingsRoute.GeneralSettings.Companion.BASE_PATH, + ) { backStackEntry -> + val generalSettingsRoute = backStackEntry.toRoute() + + AccountSettingsScreen( + accountId = generalSettingsRoute.accountId, + onBack = onBack, + ) + } + } + } +} diff --git a/feature/account/settings/impl/src/main/kotlin/net/thunderbird/feature/account/settings/impl/ui/AccountSettingsScreen.kt b/feature/account/settings/impl/src/main/kotlin/net/thunderbird/feature/account/settings/impl/ui/AccountSettingsScreen.kt new file mode 100644 index 0000000000..5d94978584 --- /dev/null +++ b/feature/account/settings/impl/src/main/kotlin/net/thunderbird/feature/account/settings/impl/ui/AccountSettingsScreen.kt @@ -0,0 +1,36 @@ +package net.thunderbird.feature.account.settings.impl.ui + +import androidx.activity.compose.BackHandler +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyLarge +import app.k9mail.core.ui.compose.designsystem.organism.SubtitleTopAppBarWithBackButton +import app.k9mail.core.ui.compose.designsystem.template.Scaffold + +@Composable +fun AccountSettingsScreen( + accountId: String, + onBack: () -> Unit, + modifier: Modifier = Modifier, +) { + BackHandler(onBack = onBack) + + Scaffold( + topBar = { + SubtitleTopAppBarWithBackButton( + title = "Account settings", + subtitle = accountId, + onBackClick = onBack, + ) + }, + modifier = modifier, + ) { innerPadding -> + Column( + modifier = Modifier.padding(innerPadding), + ) { + TextBodyLarge(text = "accountId: $accountId") + } + } +} diff --git a/feature/launcher/build.gradle.kts b/feature/launcher/build.gradle.kts index f2a6e9f26b..29327a8ae3 100644 --- a/feature/launcher/build.gradle.kts +++ b/feature/launcher/build.gradle.kts @@ -12,8 +12,10 @@ dependencies { implementation(projects.legacy.ui.base) implementation(projects.feature.onboarding.main) implementation(projects.feature.settings.import) - implementation(projects.feature.account.setup) + implementation(projects.feature.account.edit) + implementation(projects.feature.account.settings.api) + implementation(projects.feature.account.setup) implementation(projects.feature.funding.api) diff --git a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt index 6cbe088a18..ad838d85ad 100644 --- a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt +++ b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt @@ -7,6 +7,7 @@ import app.k9mail.feature.account.edit.navigation.AccountEditRoute import app.k9mail.feature.account.setup.navigation.AccountSetupRoute import app.k9mail.feature.funding.api.FundingRoute import app.k9mail.feature.onboarding.main.navigation.OnboardingRoute +import net.thunderbird.feature.account.settings.api.AccountSettingsRoute sealed class FeatureLauncherTarget( val deepLinkUri: Uri, @@ -32,4 +33,8 @@ sealed class FeatureLauncherTarget( data object Funding : FeatureLauncherTarget( deepLinkUri = FundingRoute.Contribution.route().toUri(), ) + + data class AccountSettings(val accountUuid: String) : FeatureLauncherTarget( + deepLinkUri = AccountSettingsRoute.GeneralSettings(accountUuid).route().toUri(), + ) } diff --git a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt index 0f4cedd6a8..8a5602f18e 100644 --- a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt +++ b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt @@ -13,6 +13,7 @@ import app.k9mail.feature.funding.api.FundingNavigation import app.k9mail.feature.launcher.FeatureLauncherExternalContract.AccountSetupFinishedLauncher import app.k9mail.feature.onboarding.main.navigation.OnboardingNavigation import app.k9mail.feature.onboarding.main.navigation.OnboardingRoute +import net.thunderbird.feature.account.settings.api.AccountSettingsNavigation import org.koin.compose.koinInject @Composable @@ -22,6 +23,7 @@ fun FeatureLauncherNavHost( modifier: Modifier = Modifier, accountSetupFinishedLauncher: AccountSetupFinishedLauncher = koinInject(), accountEditNavigation: AccountEditNavigation = koinInject(), + accountSettingsNavigation: AccountSettingsNavigation = koinInject(), accountSetupNavigation: AccountSetupNavigation = koinInject(), onboardingNavigation: OnboardingNavigation = koinInject(), fundingNavigation: FundingNavigation = koinInject(), @@ -64,6 +66,12 @@ fun FeatureLauncherNavHost( onFinish = { activity.finish() }, ) + accountSettingsNavigation.registerRoutes( + navGraphBuilder = this, + onBack = onBack, + onFinish = { onBack() }, + ) + fundingNavigation.registerRoutes( navGraphBuilder = this, onBack = onBack, diff --git a/settings.gradle.kts b/settings.gradle.kts index 806f3bbeb3..d630bf74b7 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -76,10 +76,12 @@ include( ":feature:account:common", ":feature:account:edit", ":feature:account:oauth", - ":feature:account:setup", + ":feature:account:settings:api", + ":feature:account:settings:impl", ":feature:account:server:certificate", ":feature:account:server:settings", ":feature:account:server:validation", + ":feature:account:setup", ) include( -- GitLab From 6516fa672221e2211eaae77f4e7eff21055d81e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 11 Mar 2025 18:59:19 +0100 Subject: [PATCH 109/262] Add feature flag and enable for debug --- .../app/k9mail/featureflag/K9FeatureFlagFactory.kt | 14 ++++++++++++++ .../app/k9mail/featureflag/K9FeatureFlagFactory.kt | 1 + .../android/featureflag/TbFeatureFlagFactory.kt | 1 + .../android/featureflag/TbFeatureFlagFactory.kt | 1 + .../android/featureflag/TbFeatureFlagFactory.kt | 1 + .../android/featureflag/TbFeatureFlagFactory.kt | 1 + 6 files changed, 19 insertions(+) create mode 100644 app-k9mail/src/debug/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt rename app-k9mail/src/{main => release}/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt (83%) diff --git a/app-k9mail/src/debug/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt b/app-k9mail/src/debug/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt new file mode 100644 index 0000000000..7a91e168a0 --- /dev/null +++ b/app-k9mail/src/debug/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt @@ -0,0 +1,14 @@ +package app.k9mail.featureflag + +import app.k9mail.core.featureflag.FeatureFlag +import app.k9mail.core.featureflag.FeatureFlagFactory +import app.k9mail.core.featureflag.toFeatureFlagKey + +class K9FeatureFlagFactory : FeatureFlagFactory { + override fun createFeatureCatalog(): List { + return listOf( + FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true), + FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = true), + ) + } +} diff --git a/app-k9mail/src/main/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt b/app-k9mail/src/release/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt similarity index 83% rename from app-k9mail/src/main/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt rename to app-k9mail/src/release/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt index 6ea64fb426..fbc0e4786b 100644 --- a/app-k9mail/src/main/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt +++ b/app-k9mail/src/release/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt @@ -8,6 +8,7 @@ class K9FeatureFlagFactory : FeatureFlagFactory { override fun createFeatureCatalog(): List { return listOf( FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = false), + FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = false), ) } } diff --git a/app-thunderbird/src/beta/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt b/app-thunderbird/src/beta/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt index e5f3455e0a..3b5aaa76cd 100644 --- a/app-thunderbird/src/beta/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt +++ b/app-thunderbird/src/beta/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt @@ -11,6 +11,7 @@ class TbFeatureFlagFactory : FeatureFlagFactory { override fun createFeatureCatalog(): List { return listOf( FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true), + FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = false), ) } } diff --git a/app-thunderbird/src/daily/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt b/app-thunderbird/src/daily/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt index 79052ae7a9..9974c2567d 100644 --- a/app-thunderbird/src/daily/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt +++ b/app-thunderbird/src/daily/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt @@ -11,6 +11,7 @@ class TbFeatureFlagFactory : FeatureFlagFactory { override fun createFeatureCatalog(): List { return listOf( FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true), + FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = false), ) } } diff --git a/app-thunderbird/src/debug/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt b/app-thunderbird/src/debug/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt index c5bfe26d8f..f581310998 100644 --- a/app-thunderbird/src/debug/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt +++ b/app-thunderbird/src/debug/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt @@ -11,6 +11,7 @@ class TbFeatureFlagFactory : FeatureFlagFactory { override fun createFeatureCatalog(): List { return listOf( FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true), + FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = true), ) } } diff --git a/app-thunderbird/src/release/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt b/app-thunderbird/src/release/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt index e0e735d065..73a3f50e76 100644 --- a/app-thunderbird/src/release/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt +++ b/app-thunderbird/src/release/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt @@ -11,6 +11,7 @@ class TbFeatureFlagFactory : FeatureFlagFactory { override fun createFeatureCatalog(): List { return listOf( FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = false), + FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = false), ) } } -- GitLab From 2916986690d2cc65f9be0111b366160e2510ca05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 11 Mar 2025 19:00:33 +0100 Subject: [PATCH 110/262] Add new account settings entry point to old settings page --- app-k9mail/build.gradle.kts | 2 ++ .../app/k9mail/feature/FeatureModule.kt | 3 +++ app-thunderbird/build.gradle.kts | 2 ++ .../android/feature/FeatureModule.kt | 3 +++ .../account/AccountSettingsFragment.kt | 25 +++++++++++++++++++ .../src/main/res/xml/account_settings.xml | 6 +++++ 6 files changed, 41 insertions(+) diff --git a/app-k9mail/build.gradle.kts b/app-k9mail/build.gradle.kts index 8121695813..19832a43c8 100644 --- a/app-k9mail/build.gradle.kts +++ b/app-k9mail/build.gradle.kts @@ -144,6 +144,8 @@ dependencies { implementation(projects.core.featureflags) + implementation(projects.feature.account.settings.impl) + "fossImplementation"(projects.feature.funding.noop) "fullImplementation"(projects.feature.funding.googleplay) implementation(projects.feature.migration.launcher.noop) diff --git a/app-k9mail/src/main/kotlin/app/k9mail/feature/FeatureModule.kt b/app-k9mail/src/main/kotlin/app/k9mail/feature/FeatureModule.kt index 45a8ba6881..d8e0a07acb 100644 --- a/app-k9mail/src/main/kotlin/app/k9mail/feature/FeatureModule.kt +++ b/app-k9mail/src/main/kotlin/app/k9mail/feature/FeatureModule.kt @@ -6,10 +6,13 @@ import app.k9mail.feature.migration.launcher.featureMigrationModule import app.k9mail.feature.onboarding.migration.onboardingMigrationModule import app.k9mail.feature.telemetry.telemetryModule import com.fsck.k9.feature.featureLauncherModule +import net.thunderbird.feature.account.settings.featureAccountSettingsModule import org.koin.dsl.module val featureModule = module { includes(featureLauncherModule) + + includes(featureAccountSettingsModule) includes(telemetryModule) includes(featureFundingModule) includes(onboardingMigrationModule) diff --git a/app-thunderbird/build.gradle.kts b/app-thunderbird/build.gradle.kts index 0f2000a207..5a5a013130 100644 --- a/app-thunderbird/build.gradle.kts +++ b/app-thunderbird/build.gradle.kts @@ -211,6 +211,8 @@ dependencies { implementation(projects.core.featureflags) + implementation(projects.feature.account.settings.impl) + implementation(projects.feature.widget.messageList) implementation(projects.feature.widget.shortcut) implementation(projects.feature.widget.unread) diff --git a/app-thunderbird/src/main/kotlin/net/thunderbird/android/feature/FeatureModule.kt b/app-thunderbird/src/main/kotlin/net/thunderbird/android/feature/FeatureModule.kt index d7708aa383..d8371ba8a4 100644 --- a/app-thunderbird/src/main/kotlin/net/thunderbird/android/feature/FeatureModule.kt +++ b/app-thunderbird/src/main/kotlin/net/thunderbird/android/feature/FeatureModule.kt @@ -6,10 +6,13 @@ import app.k9mail.feature.migration.launcher.featureMigrationModule import app.k9mail.feature.onboarding.migration.onboardingMigrationModule import app.k9mail.feature.telemetry.telemetryModule import com.fsck.k9.feature.featureLauncherModule +import net.thunderbird.feature.account.settings.featureAccountSettingsModule import org.koin.dsl.module val featureModule = module { includes(featureLauncherModule) + + includes(featureAccountSettingsModule) includes(telemetryModule) includes(featureFundingModule) includes(onboardingMigrationModule) diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt index b8b54c732a..3404260d44 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt @@ -14,6 +14,8 @@ import androidx.preference.Preference import androidx.preference.PreferenceCategory import androidx.preference.SwitchPreference import app.k9mail.core.common.provider.AppNameProvider +import app.k9mail.core.featureflag.FeatureFlagKey +import app.k9mail.core.featureflag.FeatureFlagProvider import app.k9mail.core.mail.folder.api.FolderType import app.k9mail.feature.launcher.FeatureLauncherActivity import app.k9mail.feature.launcher.FeatureLauncherTarget @@ -55,6 +57,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr private val notificationSettingsUpdater: NotificationSettingsUpdater by inject() private val vibrator: Vibrator by inject() private val appNameProvider: AppNameProvider by inject() + private val featureFlagProvider: FeatureFlagProvider by inject() private lateinit var dataStore: AccountSettingsDataStore @@ -76,6 +79,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr title = preferenceScreen.title setHasOptionsMenu(true) + initializeGeneralSettings() initializeIncomingServer() initializeComposition() initializeManageIdentities() @@ -91,6 +95,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr initializeNotifications(account) } + @Deprecated("Deprecated in Java") override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) requireActivity().title = title @@ -115,11 +120,13 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr } } + @Deprecated("Deprecated in Java") override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { super.onCreateOptionsMenu(menu, inflater) inflater.inflate(R.menu.account_settings_option, menu) } + @Deprecated("Deprecated in Java") override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { R.id.delete_account -> { @@ -131,6 +138,22 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr } } + private fun initializeGeneralSettings() { + featureFlagProvider.provide(FeatureFlagKey("new_account_settings")) + .onEnabled { + findPreference(PREFERENCE_GENERAL_LEGACY)?.remove() + + findPreference(PREFERENCE_GENERAL)?.onClick { + FeatureLauncherActivity.launch( + context = requireActivity(), + target = FeatureLauncherTarget.AccountSettings(accountUuid), + ) + } + }.onDisabledOrUnavailable { + findPreference(PREFERENCE_GENERAL)?.remove() + } + } + private fun initializeIncomingServer() { findPreference(PREFERENCE_INCOMING_SERVER)?.onClick { FeatureLauncherActivity.launch( @@ -442,6 +465,8 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr companion object { internal const val PREFERENCE_OPENPGP = "openpgp" private const val ARG_ACCOUNT_UUID = "accountUuid" + private const val PREFERENCE_GENERAL = "general" + private const val PREFERENCE_GENERAL_LEGACY = "account_settings" private const val PREFERENCE_INCOMING_SERVER = "incoming" private const val PREFERENCE_COMPOSITION = "composition" private const val PREFERENCE_MANAGE_IDENTITIES = "manage_identities" diff --git a/legacy/ui/legacy/src/main/res/xml/account_settings.xml b/legacy/ui/legacy/src/main/res/xml/account_settings.xml index 726c84591b..0722ee2d71 100644 --- a/legacy/ui/legacy/src/main/res/xml/account_settings.xml +++ b/legacy/ui/legacy/src/main/res/xml/account_settings.xml @@ -8,6 +8,12 @@ android:title="@string/account_settings_title_fmt" > + + Date: Fri, 14 Mar 2025 20:32:19 +0100 Subject: [PATCH 111/262] Removed the on push workflow execution of validate-gradle.yml and validate-workflows.yml --- .github/workflows/validate-gradle.yml | 1 - .github/workflows/validate-workflows.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/validate-gradle.yml b/.github/workflows/validate-gradle.yml index 1538d6bfcf..ea777eaeec 100644 --- a/.github/workflows/validate-gradle.yml +++ b/.github/workflows/validate-gradle.yml @@ -1,7 +1,6 @@ name: "Validate Gradle Wrapper" on: - push: pull_request: permissions: diff --git a/.github/workflows/validate-workflows.yml b/.github/workflows/validate-workflows.yml index 96b2c206c8..398c279f3f 100644 --- a/.github/workflows/validate-workflows.yml +++ b/.github/workflows/validate-workflows.yml @@ -1,7 +1,6 @@ name: "Validate Workflows" on: - push: pull_request: workflow_dispatch: inputs: -- GitLab From 824f67b5adca8a757ec11b91a62ad6fbdaaae5f5 Mon Sep 17 00:00:00 2001 From: Stt_lens <82180165+SttApollo@users.noreply.github.com> Date: Sat, 15 Mar 2025 13:08:13 -0400 Subject: [PATCH 112/262] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wolf-Martell Montwé --- .../onboarding/welcome/ui/WelcomeContent.kt | 65 +++++++++++-------- 1 file changed, 37 insertions(+), 28 deletions(-) diff --git a/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt b/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt index 2bdb278096..8841af90c4 100644 --- a/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt +++ b/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt @@ -47,26 +47,27 @@ internal fun WelcomeContent( modifier: Modifier = Modifier, ) { - Surface(modifier = modifier) { - Box(Modifier.fillMaxSize()) { - ResponsiveContent { - LazyColumnWithHeaderFooter( - verticalArrangement = Arrangement.SpaceEvenly, - header = { - WelcomeHeaderSection() - }, - footer = { - WelcomeFooterSection( - showImportButton = showImportButton, - onStartClick = onStartClick, - onImportClick = onImportClick, - ) - }, - content = { - item {WelcomeTitleItem(title = appName)} - item {WelcomeMessageItem()} - }, - ) + Surface( + modifier = modifier, + ) { + ResponsiveContent { + LazyColumnWithHeaderFooter( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.SpaceEvenly, + header = { + WelcomeHeaderSection(title = appName) + }, + footer = { + WelcomeFooterSection( + showImportButton = showImportButton, + onStartClick = onStartClick, + onImportClick = onImportClick, + ) + }, + content = { + item { WelcomeMessageItem() } + }, + ) } @@ -77,16 +78,21 @@ internal fun WelcomeContent( @Composable private fun WelcomeHeaderSection( - + title: String, + modifier: Modifier = Modifier, ){ - Box( - modifier = Modifier + Column( + modifier = modifier .fillMaxWidth() .defaultItemModifier() .padding(top = MainTheme.spacings.double), contentAlignment = Alignment.Center, + .padding(top = MainTheme.spacings.quadruple), + verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.double), + horizontalAlignment = Alignment.CenterHorizontally, ) { WelcomeLogo() + WelcomeTitleItem(title = title) } } @@ -120,9 +126,10 @@ private fun WelcomeLogo( @Composable private fun WelcomeTitleItem( title: String, + modifier: Modifier = Modifier, ) { Box( - modifier = Modifier + modifier = modifier .defaultItemModifier() ) { WelcomeTitle( @@ -151,9 +158,10 @@ private fun WelcomeTitle( @Composable private fun WelcomeMessageItem( -){ + modifier: Modifier = Modifier, +) { Box( - modifier = Modifier + modifier = modifier .defaultItemModifier() ) { WelcomeMessage( @@ -184,10 +192,11 @@ private fun WelcomeMessage( private fun WelcomeFooterSection( showImportButton: Boolean, onStartClick: () -> Unit, - onImportClick: () -> Unit + onImportClick: () -> Unit, + modifier: Modifier = Modifier, ) { Box( - modifier = Modifier + modifier = modifier .fillMaxWidth() .padding(top = MainTheme.spacings.quadruple) ) { -- GitLab From ef7fcaebfc3a1c6984e229816733f542a2f820a9 Mon Sep 17 00:00:00 2001 From: Su TT Date: Sat, 15 Mar 2025 16:54:42 -0400 Subject: [PATCH 113/262] Fix WelcomeHeaderSection and apply Spotless --- .../onboarding/welcome/ui/WelcomeContent.kt | 26 ++++--------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt b/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt index 8841af90c4..aead6f7bd9 100644 --- a/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt +++ b/feature/onboarding/welcome/src/main/kotlin/app/k9mail/feature/onboarding/welcome/ui/WelcomeContent.kt @@ -1,6 +1,5 @@ package app.k9mail.feature.onboarding.welcome.ui - import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -32,12 +31,10 @@ import app.k9mail.core.ui.compose.designsystem.template.ResponsiveContent import app.k9mail.core.ui.compose.theme2.MainTheme import app.k9mail.feature.onboarding.welcome.R - private const val CIRCLE_COLOR = 0xFFEEEEEE private const val CIRCLE_SIZE_DP = 200 private const val LOGO_SIZE_DP = 125 - @Composable internal fun WelcomeContent( onStartClick: () -> Unit, @@ -46,7 +43,6 @@ internal fun WelcomeContent( showImportButton: Boolean, modifier: Modifier = Modifier, ) { - Surface( modifier = modifier, ) { @@ -68,10 +64,6 @@ internal fun WelcomeContent( item { WelcomeMessageItem() } }, ) - } - - - } } } @@ -80,13 +72,11 @@ internal fun WelcomeContent( private fun WelcomeHeaderSection( title: String, modifier: Modifier = Modifier, -){ +) { Column( modifier = modifier .fillMaxWidth() .defaultItemModifier() - .padding(top = MainTheme.spacings.double), - contentAlignment = Alignment.Center, .padding(top = MainTheme.spacings.quadruple), verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.double), horizontalAlignment = Alignment.CenterHorizontally, @@ -94,7 +84,6 @@ private fun WelcomeHeaderSection( WelcomeLogo() WelcomeTitleItem(title = title) } - } @Composable @@ -122,22 +111,19 @@ private fun WelcomeLogo( } } - @Composable private fun WelcomeTitleItem( title: String, modifier: Modifier = Modifier, ) { Box( - modifier = modifier - .defaultItemModifier() + modifier = modifier, ) { WelcomeTitle( title = title, modifier = Modifier.defaultItemModifier(), ) } - } @Composable @@ -161,14 +147,12 @@ private fun WelcomeMessageItem( modifier: Modifier = Modifier, ) { Box( - modifier = modifier - .defaultItemModifier() + modifier = modifier, ) { WelcomeMessage( modifier = Modifier.defaultItemModifier(), ) } - } @Composable @@ -198,7 +182,7 @@ private fun WelcomeFooterSection( Box( modifier = modifier .fillMaxWidth() - .padding(top = MainTheme.spacings.quadruple) + .padding(top = MainTheme.spacings.quadruple), ) { WelcomeFooter( showImportButton = showImportButton, @@ -206,7 +190,7 @@ private fun WelcomeFooterSection( onImportClick = onImportClick, modifier = Modifier .fillMaxWidth() - .padding(top = MainTheme.spacings.quadruple) + .padding(top = MainTheme.spacings.quadruple), ) } } -- GitLab From c663ccb781643c2bb656f5fc58b88b8732a897b8 Mon Sep 17 00:00:00 2001 From: Philipp Kewisch Date: Thu, 13 Mar 2025 21:15:14 +0100 Subject: [PATCH 114/262] Update release documentation for play store and milestones --- docs/RELEASES.md | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/docs/RELEASES.md b/docs/RELEASES.md index bf75a2da33..a16dd869ec 100644 --- a/docs/RELEASES.md +++ b/docs/RELEASES.md @@ -129,6 +129,14 @@ While the version name changes, it must be ensured that the version code stays t - Beta always uses `net.thunderbird.android.beta` as the app ID. Let's say the version code is 20 at 9.0b4, it will be 21 at 10.0b1. - Likewise, when 9.0b4 becomes 9.0, if the version code on beta is 20 and on release it is 12, then 9.0 becomes 13 and not 21. +## Milestones + +We're using GitHub Milestones to track work for each major release. There is only one milestone for the whole major release, so work going into 9.0 and 9.1 would both be in the "Thunderbird 9" milestone. Each milestone has the due date set to the anticipated release date. + +There are exactly three open milestones at any given time, some of our automation depends on this being the case. The milestone with the date furthest into the future is the target for the `main` branch, the one closest is the target for the `release` branch. When an uplift occurs, the milestone is changed to the respective next target. + +Learn more on the [milestones page](https://github.com/thunderbird/thunderbird-android/milestones) + ## Merge Process Merges are performed with the `git merge` command: @@ -169,7 +177,7 @@ Release uplifts should additionally: 1. The requestor adds the "task: uplift to beta" or "task: uplift to release" label to a merged pull request. 2. The requestor makes a comment in the associated issue with the Approval Request Comment template filled out. 3. The release driver reviews all uplift requests and, retaining the label for approved uplifts and removing the label for rejected uplifts. -4. The release driver runs the Uplift Merges action for the specified target branch, which will remove the label, cherry-pick the commits, and push to the target branch. +4. The release driver runs the Uplift Merges action for the specified target branch, which will remove the label, adjust the milestone, cherry-pick the commits, and push to the target branch. Template for uplift requests: @@ -197,9 +205,17 @@ These are the general steps for a release: 2. Draft release notes at [thunderbird-notes](https://github.com/thunderbird/thunderbird-notes). 3. Trigger build via the [Shippable Build & Signing](https://github.com/thunderbird/thunderbird-android/actions/workflows/shippable_builds.yml) action. 4. Review the build results by reviewing the action summary and the git commits resulting from the build. -5. Smoke test the build. + - Make sure the version code is incremented properly and not wildly off + - Ensure the commits are correct + - Ensure the symlink `app-metadata` points to the right product at this commit +5. Test the build in the internal testing track + - Release versions should be thoroughly tested with the test plan in Testrail + - Beta versions only require a basic smoke test to ensure it installs 6. Promote TfA and K-9 releases in Play Store. + - Betas are only released for TfA. K-9 beta users are advised to use Thunderbird. 7. Wait for Play Store review to complete. -8. Update F-Droid to new TfA and K-9 releases. -9. Send notification to Matrix channels, and beta or planning mailing lists. + - Release versions of TfA and K-9 have managed publishing enabled. Once the review has completed you need to publish the release + - Beta versions of TfA do not have managed publishing enabled. It will be available once Google has reviewed, even on a weekend. +8. Update F-Droid to new TfA and K-9 releases by sending a pull request to [fdroiddata](https://gitlab.com/fdroid/fdroiddata) +9. Send community updates to Matrix channels, and beta or planning mailing lists as needed. -- GitLab From b357dd3c09db50fcd1811476b319560dd4b04f31 Mon Sep 17 00:00:00 2001 From: matskolim Date: Tue, 18 Mar 2025 20:35:17 +0100 Subject: [PATCH 115/262] RTL support for insets --- .../navigation/drawer/ui/DrawerContent.kt | 20 ++++++++++++------- .../drawer/ui/account/AccountList.kt | 7 +++---- .../drawer/ui/account/AccountView.kt | 12 ++++++++++- .../k9/ui/messagelist/MessageListFragment.kt | 1 + 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/DrawerContent.kt b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/DrawerContent.kt index 47de7963f1..2b0490c11d 100644 --- a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/DrawerContent.kt +++ b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/DrawerContent.kt @@ -16,6 +16,7 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.platform.testTag import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.dp import app.k9mail.core.ui.compose.designsystem.atom.DividerHorizontal import app.k9mail.core.ui.compose.designsystem.atom.Surface @@ -36,12 +37,12 @@ internal fun DrawerContent( onEvent: (Event) -> Unit, modifier: Modifier = Modifier, ) { - val leftInset = getLeftInset() + val additionalWidth = getAdditionalWidth() Surface( modifier = modifier .windowInsetsPadding(WindowInsets.statusBars) - .width(DRAWER_WIDTH + leftInset) + .width(DRAWER_WIDTH + additionalWidth) .fillMaxHeight() .testTag("DrawerContent"), ) { @@ -95,11 +96,16 @@ internal fun DrawerContent( } @Composable -fun getLeftInset(): Dp { - return WindowInsets.displayCutout.getLeft( - density = LocalDensity.current, - layoutDirection = LocalLayoutDirection.current, - ).pxToDp() +fun getAdditionalWidth(): Dp { + val density = LocalDensity.current + val layoutDirection = LocalLayoutDirection.current + val isRtl = LocalLayoutDirection.current == LayoutDirection.Rtl + + return if (isRtl) { + WindowInsets.displayCutout.getRight(density = density, layoutDirection = layoutDirection) + } else { + WindowInsets.displayCutout.getLeft(density = density, layoutDirection = layoutDirection) + }.pxToDp() } @Composable diff --git a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountList.kt b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountList.kt index f1fb52e46d..2e1a6a83dc 100644 --- a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountList.kt +++ b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountList.kt @@ -4,12 +4,9 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.WindowInsetsSides -import androidx.compose.foundation.layout.displayCutout import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBars -import androidx.compose.foundation.layout.only import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.windowInsetsPadding @@ -40,11 +37,13 @@ internal fun AccountList( modifier = modifier, color = MainTheme.colors.surfaceContainer, ) { + val horizontalInsetPadding = getDisplayCutOutHorizontalInsetPadding() + Column( modifier = Modifier .fillMaxHeight() .windowInsetsPadding(WindowInsets.navigationBars) - .windowInsetsPadding(WindowInsets.displayCutout.only(WindowInsetsSides.Left)) + .windowInsetsPadding(horizontalInsetPadding) .width(MainTheme.sizes.large), ) { LazyColumn( diff --git a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountView.kt b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountView.kt index af75f8b3ef..85c6198b07 100644 --- a/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountView.kt +++ b/feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/ui/account/AccountView.kt @@ -21,6 +21,8 @@ import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalLayoutDirection +import androidx.compose.ui.unit.LayoutDirection import app.k9mail.core.ui.compose.designsystem.atom.Surface import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyLarge import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyMedium @@ -45,9 +47,11 @@ internal fun AccountView( color = MainTheme.colors.surfaceContainer, modifier = Modifier.fillMaxHeight(), ) { + val horizontalInsetPadding = getDisplayCutOutHorizontalInsetPadding() + Box( modifier = Modifier - .windowInsetsPadding(WindowInsets.displayCutout.only(WindowInsetsSides.Left)) + .windowInsetsPadding(horizontalInsetPadding) .width(MainTheme.sizes.large), contentAlignment = Alignment.Center, ) { @@ -96,3 +100,9 @@ internal fun AccountView( } } } + +@Composable +fun getDisplayCutOutHorizontalInsetPadding(): WindowInsets { + val isRtl = LocalLayoutDirection.current == LayoutDirection.Rtl + return WindowInsets.displayCutout.only(if (isRtl) WindowInsetsSides.Right else WindowInsetsSides.Left) +} diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt index 9e0d7713d3..a71e453f14 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt @@ -352,6 +352,7 @@ class MessageListFragment : bottomMargin = fabMargin + insets.bottom rightMargin = fabMargin + insets.right + leftMargin = fabMargin + insets.left } windowInsets -- GitLab From 7659f6952f6572480e486eed17894b7226133629 Mon Sep 17 00:00:00 2001 From: Vayun <69178052+vayun-mathur@users.noreply.github.com> Date: Mon, 6 Jan 2025 13:46:57 +0800 Subject: [PATCH 116/262] Add new list widget --- app-k9mail/build.gradle.kts | 1 + .../fossReleaseRuntimeClasspath.txt | 11 ++ .../fullReleaseRuntimeClasspath.txt | 11 ++ app-k9mail/src/debug/AndroidManifest.xml | 27 +++ .../kotlin/app/k9mail/widget/KoinModule.kt | 3 + app-thunderbird/build.gradle.kts | 1 + .../dependencies/fossBetaRuntimeClasspath.txt | 11 ++ .../fossDailyRuntimeClasspath.txt | 11 ++ .../fossReleaseRuntimeClasspath.txt | 11 ++ .../dependencies/fullBetaRuntimeClasspath.txt | 11 ++ .../fullDailyRuntimeClasspath.txt | 11 ++ .../fullReleaseRuntimeClasspath.txt | 11 ++ app-thunderbird/src/daily/AndroidManifest.xml | 27 +++ app-thunderbird/src/debug/AndroidManifest.xml | 27 +++ .../thunderbird/android/widget/KoinModule.kt | 3 + .../message-list-glance/build.gradle.kts | 24 +++ .../ui/MessageListWidgetContentPreview.kt | 86 ++++++++++ .../feature/widget/message/list/KoinModule.kt | 7 + .../widget/message/list/MessageListConfig.kt | 12 ++ .../widget/message/list/MessageListItem.kt | 22 +++ .../message/list/MessageListItemMapper.kt | 67 ++++++++ .../widget/message/list/MessageListLoader.kt | 156 ++++++++++++++++++ .../widget/message/list/MessageListWidget.kt | 90 ++++++++++ .../message/list/MessageListWidgetReceiver.kt | 8 + .../message/list/ui/MessageListItemView.kt | 96 +++++++++++ .../list/ui/MessageListWidgetContent.kt | 86 ++++++++++ .../message_list_glance_widget_preview.png | Bin 0 -> 70547 bytes .../src/main/res/values/strings.xml | 6 + .../xml/message_list_glance_widget_info.xml | 13 ++ gradle/libs.versions.toml | 6 + settings.gradle.kts | 1 + 31 files changed, 857 insertions(+) create mode 100644 app-k9mail/src/debug/AndroidManifest.xml create mode 100644 app-thunderbird/src/daily/AndroidManifest.xml create mode 100644 app-thunderbird/src/debug/AndroidManifest.xml create mode 100644 feature/widget/message-list-glance/build.gradle.kts create mode 100644 feature/widget/message-list-glance/src/debug/kotlin/net/thunderbird/feature/widget/message/list/ui/MessageListWidgetContentPreview.kt create mode 100644 feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/KoinModule.kt create mode 100644 feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListConfig.kt create mode 100644 feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListItem.kt create mode 100644 feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListItemMapper.kt create mode 100644 feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListLoader.kt create mode 100644 feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListWidget.kt create mode 100644 feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListWidgetReceiver.kt create mode 100644 feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/ui/MessageListItemView.kt create mode 100644 feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/ui/MessageListWidgetContent.kt create mode 100644 feature/widget/message-list-glance/src/main/res/drawable-xxhdpi/message_list_glance_widget_preview.png create mode 100644 feature/widget/message-list-glance/src/main/res/values/strings.xml create mode 100644 feature/widget/message-list-glance/src/main/res/xml/message_list_glance_widget_info.xml diff --git a/app-k9mail/build.gradle.kts b/app-k9mail/build.gradle.kts index 19832a43c8..e66924c04c 100644 --- a/app-k9mail/build.gradle.kts +++ b/app-k9mail/build.gradle.kts @@ -152,6 +152,7 @@ dependencies { implementation(projects.feature.onboarding.migration.noop) implementation(projects.feature.telemetry.noop) implementation(projects.feature.widget.messageList) + implementation(projects.feature.widget.messageListGlance) implementation(projects.feature.widget.shortcut) implementation(projects.feature.widget.unread) diff --git a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt index 2dd82cf90d..e37843981f 100644 --- a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt +++ b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt @@ -56,12 +56,17 @@ androidx.constraintlayout:constraintlayout-core:1.1.1 androidx.constraintlayout:constraintlayout:2.2.1 androidx.coordinatorlayout:coordinatorlayout:1.3.0 androidx.core:core-ktx:1.15.0 +androidx.core:core-remoteviews:1.1.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 androidx.core:core:1.15.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 androidx.customview:customview:1.1.0 +androidx.datastore:datastore-core:1.0.0 +androidx.datastore:datastore-preferences-core:1.0.0 +androidx.datastore:datastore-preferences:1.0.0 +androidx.datastore:datastore:1.0.0 androidx.documentfile:documentfile:1.0.0 androidx.drawerlayout:drawerlayout:1.1.1 androidx.dynamicanimation:dynamicanimation:1.0.0 @@ -71,6 +76,11 @@ androidx.exifinterface:exifinterface:1.3.7 androidx.fragment:fragment-compose:1.8.6 androidx.fragment:fragment-ktx:1.8.6 androidx.fragment:fragment:1.8.6 +androidx.glance:glance-appwidget-external-protobuf:1.1.1 +androidx.glance:glance-appwidget-proto:1.1.1 +androidx.glance:glance-appwidget:1.1.1 +androidx.glance:glance-material3:1.1.1 +androidx.glance:glance:1.1.1 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -128,6 +138,7 @@ androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager2:viewpager2:1.1.0-beta02 androidx.viewpager:viewpager:1.0.0 androidx.window:window:1.0.0 +androidx.work:work-runtime-ktx:2.10.0 androidx.work:work-runtime:2.10.0 co.touchlab:stately-concurrency-jvm:2.0.6 co.touchlab:stately-concurrency:2.0.6 diff --git a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt index 37c333ceb4..57cd410b9c 100644 --- a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt +++ b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt @@ -56,12 +56,17 @@ androidx.constraintlayout:constraintlayout-core:1.1.1 androidx.constraintlayout:constraintlayout:2.2.1 androidx.coordinatorlayout:coordinatorlayout:1.3.0 androidx.core:core-ktx:1.15.0 +androidx.core:core-remoteviews:1.1.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 androidx.core:core:1.15.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 androidx.customview:customview:1.1.0 +androidx.datastore:datastore-core:1.0.0 +androidx.datastore:datastore-preferences-core:1.0.0 +androidx.datastore:datastore-preferences:1.0.0 +androidx.datastore:datastore:1.0.0 androidx.documentfile:documentfile:1.0.0 androidx.drawerlayout:drawerlayout:1.1.1 androidx.dynamicanimation:dynamicanimation:1.0.0 @@ -71,6 +76,11 @@ androidx.exifinterface:exifinterface:1.3.7 androidx.fragment:fragment-compose:1.8.6 androidx.fragment:fragment-ktx:1.8.6 androidx.fragment:fragment:1.8.6 +androidx.glance:glance-appwidget-external-protobuf:1.1.1 +androidx.glance:glance-appwidget-proto:1.1.1 +androidx.glance:glance-appwidget:1.1.1 +androidx.glance:glance-material3:1.1.1 +androidx.glance:glance:1.1.1 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -128,6 +138,7 @@ androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager2:viewpager2:1.1.0-beta02 androidx.viewpager:viewpager:1.0.0 androidx.window:window:1.0.0 +androidx.work:work-runtime-ktx:2.10.0 androidx.work:work-runtime:2.10.0 co.touchlab:stately-concurrency-jvm:2.0.6 co.touchlab:stately-concurrency:2.0.6 diff --git a/app-k9mail/src/debug/AndroidManifest.xml b/app-k9mail/src/debug/AndroidManifest.xml new file mode 100644 index 0000000000..689e9c615a --- /dev/null +++ b/app-k9mail/src/debug/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + diff --git a/app-k9mail/src/main/kotlin/app/k9mail/widget/KoinModule.kt b/app-k9mail/src/main/kotlin/app/k9mail/widget/KoinModule.kt index 2c9ad58f9c..b2e70a6f05 100644 --- a/app-k9mail/src/main/kotlin/app/k9mail/widget/KoinModule.kt +++ b/app-k9mail/src/main/kotlin/app/k9mail/widget/KoinModule.kt @@ -2,9 +2,12 @@ package app.k9mail.widget import app.k9mail.feature.widget.message.list.MessageListWidgetConfig import app.k9mail.feature.widget.unread.UnreadWidgetConfig +import net.thunderbird.feature.widget.message.list.featureWidgetMessageListModule import org.koin.dsl.module val appWidgetModule = module { + includes(featureWidgetMessageListModule) + single { K9MessageListWidgetConfig() } single { K9UnreadWidgetConfig() } } diff --git a/app-thunderbird/build.gradle.kts b/app-thunderbird/build.gradle.kts index 5a5a013130..ed9c520449 100644 --- a/app-thunderbird/build.gradle.kts +++ b/app-thunderbird/build.gradle.kts @@ -214,6 +214,7 @@ dependencies { implementation(projects.feature.account.settings.impl) implementation(projects.feature.widget.messageList) + implementation(projects.feature.widget.messageListGlance) implementation(projects.feature.widget.shortcut) implementation(projects.feature.widget.unread) diff --git a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt index a50973364b..0a92f89c09 100644 --- a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt @@ -61,12 +61,17 @@ androidx.constraintlayout:constraintlayout-core:1.1.1 androidx.constraintlayout:constraintlayout:2.2.1 androidx.coordinatorlayout:coordinatorlayout:1.3.0 androidx.core:core-ktx:1.15.0 +androidx.core:core-remoteviews:1.1.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 androidx.core:core:1.15.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 androidx.customview:customview:1.1.0 +androidx.datastore:datastore-core:1.0.0 +androidx.datastore:datastore-preferences-core:1.0.0 +androidx.datastore:datastore-preferences:1.0.0 +androidx.datastore:datastore:1.0.0 androidx.documentfile:documentfile:1.0.0 androidx.drawerlayout:drawerlayout:1.1.1 androidx.dynamicanimation:dynamicanimation:1.0.0 @@ -76,6 +81,11 @@ androidx.exifinterface:exifinterface:1.3.7 androidx.fragment:fragment-compose:1.8.6 androidx.fragment:fragment-ktx:1.8.6 androidx.fragment:fragment:1.8.6 +androidx.glance:glance-appwidget-external-protobuf:1.1.1 +androidx.glance:glance-appwidget-proto:1.1.1 +androidx.glance:glance-appwidget:1.1.1 +androidx.glance:glance-material3:1.1.1 +androidx.glance:glance:1.1.1 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -133,6 +143,7 @@ androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager2:viewpager2:1.1.0-beta02 androidx.viewpager:viewpager:1.0.0 androidx.window:window:1.0.0 +androidx.work:work-runtime-ktx:2.10.0 androidx.work:work-runtime:2.10.0 co.touchlab:stately-concurrency-jvm:2.0.6 co.touchlab:stately-concurrency:2.0.6 diff --git a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt index a50973364b..0a92f89c09 100644 --- a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt @@ -61,12 +61,17 @@ androidx.constraintlayout:constraintlayout-core:1.1.1 androidx.constraintlayout:constraintlayout:2.2.1 androidx.coordinatorlayout:coordinatorlayout:1.3.0 androidx.core:core-ktx:1.15.0 +androidx.core:core-remoteviews:1.1.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 androidx.core:core:1.15.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 androidx.customview:customview:1.1.0 +androidx.datastore:datastore-core:1.0.0 +androidx.datastore:datastore-preferences-core:1.0.0 +androidx.datastore:datastore-preferences:1.0.0 +androidx.datastore:datastore:1.0.0 androidx.documentfile:documentfile:1.0.0 androidx.drawerlayout:drawerlayout:1.1.1 androidx.dynamicanimation:dynamicanimation:1.0.0 @@ -76,6 +81,11 @@ androidx.exifinterface:exifinterface:1.3.7 androidx.fragment:fragment-compose:1.8.6 androidx.fragment:fragment-ktx:1.8.6 androidx.fragment:fragment:1.8.6 +androidx.glance:glance-appwidget-external-protobuf:1.1.1 +androidx.glance:glance-appwidget-proto:1.1.1 +androidx.glance:glance-appwidget:1.1.1 +androidx.glance:glance-material3:1.1.1 +androidx.glance:glance:1.1.1 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -133,6 +143,7 @@ androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager2:viewpager2:1.1.0-beta02 androidx.viewpager:viewpager:1.0.0 androidx.window:window:1.0.0 +androidx.work:work-runtime-ktx:2.10.0 androidx.work:work-runtime:2.10.0 co.touchlab:stately-concurrency-jvm:2.0.6 co.touchlab:stately-concurrency:2.0.6 diff --git a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt index a50973364b..0a92f89c09 100644 --- a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt @@ -61,12 +61,17 @@ androidx.constraintlayout:constraintlayout-core:1.1.1 androidx.constraintlayout:constraintlayout:2.2.1 androidx.coordinatorlayout:coordinatorlayout:1.3.0 androidx.core:core-ktx:1.15.0 +androidx.core:core-remoteviews:1.1.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 androidx.core:core:1.15.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 androidx.customview:customview:1.1.0 +androidx.datastore:datastore-core:1.0.0 +androidx.datastore:datastore-preferences-core:1.0.0 +androidx.datastore:datastore-preferences:1.0.0 +androidx.datastore:datastore:1.0.0 androidx.documentfile:documentfile:1.0.0 androidx.drawerlayout:drawerlayout:1.1.1 androidx.dynamicanimation:dynamicanimation:1.0.0 @@ -76,6 +81,11 @@ androidx.exifinterface:exifinterface:1.3.7 androidx.fragment:fragment-compose:1.8.6 androidx.fragment:fragment-ktx:1.8.6 androidx.fragment:fragment:1.8.6 +androidx.glance:glance-appwidget-external-protobuf:1.1.1 +androidx.glance:glance-appwidget-proto:1.1.1 +androidx.glance:glance-appwidget:1.1.1 +androidx.glance:glance-material3:1.1.1 +androidx.glance:glance:1.1.1 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -133,6 +143,7 @@ androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager2:viewpager2:1.1.0-beta02 androidx.viewpager:viewpager:1.0.0 androidx.window:window:1.0.0 +androidx.work:work-runtime-ktx:2.10.0 androidx.work:work-runtime:2.10.0 co.touchlab:stately-concurrency-jvm:2.0.6 co.touchlab:stately-concurrency:2.0.6 diff --git a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt index 31078ef614..25442d9455 100644 --- a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt @@ -61,12 +61,17 @@ androidx.constraintlayout:constraintlayout-core:1.1.1 androidx.constraintlayout:constraintlayout:2.2.1 androidx.coordinatorlayout:coordinatorlayout:1.3.0 androidx.core:core-ktx:1.15.0 +androidx.core:core-remoteviews:1.1.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 androidx.core:core:1.15.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 androidx.customview:customview:1.1.0 +androidx.datastore:datastore-core:1.0.0 +androidx.datastore:datastore-preferences-core:1.0.0 +androidx.datastore:datastore-preferences:1.0.0 +androidx.datastore:datastore:1.0.0 androidx.documentfile:documentfile:1.0.0 androidx.drawerlayout:drawerlayout:1.1.1 androidx.dynamicanimation:dynamicanimation:1.0.0 @@ -76,6 +81,11 @@ androidx.exifinterface:exifinterface:1.3.7 androidx.fragment:fragment-compose:1.8.6 androidx.fragment:fragment-ktx:1.8.6 androidx.fragment:fragment:1.8.6 +androidx.glance:glance-appwidget-external-protobuf:1.1.1 +androidx.glance:glance-appwidget-proto:1.1.1 +androidx.glance:glance-appwidget:1.1.1 +androidx.glance:glance-material3:1.1.1 +androidx.glance:glance:1.1.1 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -133,6 +143,7 @@ androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager2:viewpager2:1.1.0-beta02 androidx.viewpager:viewpager:1.0.0 androidx.window:window:1.0.0 +androidx.work:work-runtime-ktx:2.10.0 androidx.work:work-runtime:2.10.0 co.touchlab:stately-concurrency-jvm:2.0.6 co.touchlab:stately-concurrency:2.0.6 diff --git a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt index 31078ef614..25442d9455 100644 --- a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt @@ -61,12 +61,17 @@ androidx.constraintlayout:constraintlayout-core:1.1.1 androidx.constraintlayout:constraintlayout:2.2.1 androidx.coordinatorlayout:coordinatorlayout:1.3.0 androidx.core:core-ktx:1.15.0 +androidx.core:core-remoteviews:1.1.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 androidx.core:core:1.15.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 androidx.customview:customview:1.1.0 +androidx.datastore:datastore-core:1.0.0 +androidx.datastore:datastore-preferences-core:1.0.0 +androidx.datastore:datastore-preferences:1.0.0 +androidx.datastore:datastore:1.0.0 androidx.documentfile:documentfile:1.0.0 androidx.drawerlayout:drawerlayout:1.1.1 androidx.dynamicanimation:dynamicanimation:1.0.0 @@ -76,6 +81,11 @@ androidx.exifinterface:exifinterface:1.3.7 androidx.fragment:fragment-compose:1.8.6 androidx.fragment:fragment-ktx:1.8.6 androidx.fragment:fragment:1.8.6 +androidx.glance:glance-appwidget-external-protobuf:1.1.1 +androidx.glance:glance-appwidget-proto:1.1.1 +androidx.glance:glance-appwidget:1.1.1 +androidx.glance:glance-material3:1.1.1 +androidx.glance:glance:1.1.1 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -133,6 +143,7 @@ androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager2:viewpager2:1.1.0-beta02 androidx.viewpager:viewpager:1.0.0 androidx.window:window:1.0.0 +androidx.work:work-runtime-ktx:2.10.0 androidx.work:work-runtime:2.10.0 co.touchlab:stately-concurrency-jvm:2.0.6 co.touchlab:stately-concurrency:2.0.6 diff --git a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt index 31078ef614..25442d9455 100644 --- a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt @@ -61,12 +61,17 @@ androidx.constraintlayout:constraintlayout-core:1.1.1 androidx.constraintlayout:constraintlayout:2.2.1 androidx.coordinatorlayout:coordinatorlayout:1.3.0 androidx.core:core-ktx:1.15.0 +androidx.core:core-remoteviews:1.1.0 androidx.core:core-splashscreen:1.0.1 androidx.core:core-viewtree:1.0.0 androidx.core:core:1.15.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview-poolingcontainer:1.0.0 androidx.customview:customview:1.1.0 +androidx.datastore:datastore-core:1.0.0 +androidx.datastore:datastore-preferences-core:1.0.0 +androidx.datastore:datastore-preferences:1.0.0 +androidx.datastore:datastore:1.0.0 androidx.documentfile:documentfile:1.0.0 androidx.drawerlayout:drawerlayout:1.1.1 androidx.dynamicanimation:dynamicanimation:1.0.0 @@ -76,6 +81,11 @@ androidx.exifinterface:exifinterface:1.3.7 androidx.fragment:fragment-compose:1.8.6 androidx.fragment:fragment-ktx:1.8.6 androidx.fragment:fragment:1.8.6 +androidx.glance:glance-appwidget-external-protobuf:1.1.1 +androidx.glance:glance-appwidget-proto:1.1.1 +androidx.glance:glance-appwidget:1.1.1 +androidx.glance:glance-material3:1.1.1 +androidx.glance:glance:1.1.1 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 @@ -133,6 +143,7 @@ androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager2:viewpager2:1.1.0-beta02 androidx.viewpager:viewpager:1.0.0 androidx.window:window:1.0.0 +androidx.work:work-runtime-ktx:2.10.0 androidx.work:work-runtime:2.10.0 co.touchlab:stately-concurrency-jvm:2.0.6 co.touchlab:stately-concurrency:2.0.6 diff --git a/app-thunderbird/src/daily/AndroidManifest.xml b/app-thunderbird/src/daily/AndroidManifest.xml new file mode 100644 index 0000000000..689e9c615a --- /dev/null +++ b/app-thunderbird/src/daily/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + diff --git a/app-thunderbird/src/debug/AndroidManifest.xml b/app-thunderbird/src/debug/AndroidManifest.xml new file mode 100644 index 0000000000..689e9c615a --- /dev/null +++ b/app-thunderbird/src/debug/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + diff --git a/app-thunderbird/src/main/kotlin/net/thunderbird/android/widget/KoinModule.kt b/app-thunderbird/src/main/kotlin/net/thunderbird/android/widget/KoinModule.kt index 0bfd96f441..54f36b1825 100644 --- a/app-thunderbird/src/main/kotlin/net/thunderbird/android/widget/KoinModule.kt +++ b/app-thunderbird/src/main/kotlin/net/thunderbird/android/widget/KoinModule.kt @@ -2,9 +2,12 @@ package net.thunderbird.android.widget import app.k9mail.feature.widget.message.list.MessageListWidgetConfig import app.k9mail.feature.widget.unread.UnreadWidgetConfig +import net.thunderbird.feature.widget.message.list.featureWidgetMessageListModule import org.koin.dsl.module val appWidgetModule = module { + includes(featureWidgetMessageListModule) + single { TbMessageListWidgetConfig() } single { TbUnreadWidgetConfig() } } diff --git a/feature/widget/message-list-glance/build.gradle.kts b/feature/widget/message-list-glance/build.gradle.kts new file mode 100644 index 0000000000..af6793b384 --- /dev/null +++ b/feature/widget/message-list-glance/build.gradle.kts @@ -0,0 +1,24 @@ +plugins { + id(ThunderbirdPlugins.Library.android) + alias(libs.plugins.compose) +} + +android { + buildFeatures { + compose = true + } + namespace = "net.thunderbird.feature.widget.message.list" +} + +dependencies { + implementation(projects.legacy.ui.legacy) + implementation(projects.legacy.core) + + implementation(libs.androidx.glance.appwidget) + implementation(libs.androidx.glance.material3) + implementation(libs.kotlinx.collections.immutable) + implementation(libs.timber) + + debugImplementation(libs.androidx.glance.appwidget.preview) + debugImplementation(libs.androidx.glance.preview) +} diff --git a/feature/widget/message-list-glance/src/debug/kotlin/net/thunderbird/feature/widget/message/list/ui/MessageListWidgetContentPreview.kt b/feature/widget/message-list-glance/src/debug/kotlin/net/thunderbird/feature/widget/message/list/ui/MessageListWidgetContentPreview.kt new file mode 100644 index 0000000000..0f54cd6b1a --- /dev/null +++ b/feature/widget/message-list-glance/src/debug/kotlin/net/thunderbird/feature/widget/message/list/ui/MessageListWidgetContentPreview.kt @@ -0,0 +1,86 @@ +package net.thunderbird.feature.widget.message.list.ui + +import android.graphics.Color +import androidx.compose.runtime.Composable +import androidx.glance.preview.ExperimentalGlancePreviewApi +import androidx.glance.preview.Preview +import app.k9mail.legacy.message.controller.MessageReference +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.persistentListOf +import net.thunderbird.feature.widget.message.list.MessageListItem + +@OptIn(ExperimentalGlancePreviewApi::class) +@Preview(widthDp = 250, heightDp = 180) +@Composable +internal fun MessageListWidgetContentPreview() { + MessageListWidgetContent( + mails = generateMessageListItems(), + onOpenApp = {}, + ) +} + +@OptIn(ExperimentalGlancePreviewApi::class) +@Preview(widthDp = 250, heightDp = 180) +@Composable +internal fun MessageListWidgetContentEmptyPreview() { + MessageListWidgetContent( + mails = persistentListOf(), + onOpenApp = {}, + ) +} + +private fun generateMessageListItems(): ImmutableList { + return persistentListOf( + generateMessageListItem( + displayName = "Alice", + displayDate = "1 Jan", + subject = "Subject 1", + preview = "Preview 1", + color = Color.BLUE, + isRead = false, + ), + generateMessageListItem( + displayName = "Bob", + displayDate = "2 Jan", + subject = "Subject 2", + preview = "Preview 2", + color = Color.RED, + isRead = true, + ), + generateMessageListItem( + displayName = "Charlie", + displayDate = "3 Jan", + subject = "Subject 3", + preview = "Preview 3", + color = Color.RED, + isRead = false, + ), + ) +} + +private fun generateMessageListItem( + displayName: String, + displayDate: String, + subject: String, + preview: String, + color: Int, + isRead: Boolean, +): MessageListItem { + return MessageListItem( + displayName = displayName, + displayDate = displayDate, + subject = subject, + preview = preview, + isRead = isRead, + hasAttachments = false, + threadCount = 0, + accountColor = color, + uniqueId = 0, + messageReference = MessageReference("accountUuid", 123, "messageServerId"), + sortSubject = subject, + sortMessageDate = 0, + sortInternalDate = 0, + sortIsStarred = false, + sortDatabaseId = 0, + ) +} diff --git a/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/KoinModule.kt b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/KoinModule.kt new file mode 100644 index 0000000000..70605941e4 --- /dev/null +++ b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/KoinModule.kt @@ -0,0 +1,7 @@ +package net.thunderbird.feature.widget.message.list + +import org.koin.dsl.module + +val featureWidgetMessageListModule = module { + factory { MessageListLoader(preferences = get(), messageListRepository = get(), messageHelper = get()) } +} diff --git a/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListConfig.kt b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListConfig.kt new file mode 100644 index 0000000000..2091c01dd3 --- /dev/null +++ b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListConfig.kt @@ -0,0 +1,12 @@ +package net.thunderbird.feature.widget.message.list + +import app.k9mail.legacy.account.Account.SortType +import app.k9mail.legacy.search.LocalSearch + +internal data class MessageListConfig( + val search: LocalSearch, + val showingThreadedList: Boolean, + val sortType: SortType, + val sortAscending: Boolean, + val sortDateAscending: Boolean, +) diff --git a/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListItem.kt b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListItem.kt new file mode 100644 index 0000000000..5c6a485bd6 --- /dev/null +++ b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListItem.kt @@ -0,0 +1,22 @@ +package net.thunderbird.feature.widget.message.list + +import app.k9mail.legacy.message.controller.MessageReference + +internal data class MessageListItem( + val displayName: String, + val displayDate: String, + val subject: String, + val preview: String, + val isRead: Boolean, + val hasAttachments: Boolean, + val threadCount: Int, + val accountColor: Int, + val messageReference: MessageReference, + val uniqueId: Long, + + val sortSubject: String?, + val sortMessageDate: Long, + val sortInternalDate: Long, + val sortIsStarred: Boolean, + val sortDatabaseId: Long, +) diff --git a/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListItemMapper.kt b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListItemMapper.kt new file mode 100644 index 0000000000..41f45d41e6 --- /dev/null +++ b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListItemMapper.kt @@ -0,0 +1,67 @@ +package net.thunderbird.feature.widget.message.list + +import app.k9mail.legacy.account.Account +import app.k9mail.legacy.mailstore.MessageDetailsAccessor +import app.k9mail.legacy.mailstore.MessageMapper +import app.k9mail.legacy.message.controller.MessageReference +import com.fsck.k9.helper.MessageHelper +import com.fsck.k9.ui.helper.DisplayAddressHelper +import java.util.Calendar +import java.util.Locale + +internal class MessageListItemMapper( + private val messageHelper: MessageHelper, + private val account: Account, +) : MessageMapper { + private val calendar: Calendar = Calendar.getInstance() + + override fun map(message: MessageDetailsAccessor): MessageListItem { + val fromAddresses = message.fromAddresses + val toAddresses = message.toAddresses + val previewResult = message.preview + val previewText = if (previewResult.isPreviewTextAvailable) previewResult.previewText else "" + val uniqueId = createUniqueId(account, message.id) + val showRecipients = DisplayAddressHelper.shouldShowRecipients(account, message.folderId) + val displayAddress = if (showRecipients) toAddresses.firstOrNull() else fromAddresses.firstOrNull() + val displayName = if (showRecipients) { + messageHelper.getRecipientDisplayNames(toAddresses.toTypedArray()).toString() + } else { + messageHelper.getSenderDisplayName(displayAddress).toString() + } + + return MessageListItem( + displayName = displayName, + displayDate = formatDate(message.messageDate), + subject = message.subject.orEmpty(), + preview = previewText, + isRead = message.isRead, + hasAttachments = message.hasAttachments, + threadCount = message.threadCount, + accountColor = account.chipColor, + messageReference = MessageReference(account.uuid, message.folderId, message.messageServerId), + uniqueId = uniqueId, + sortSubject = message.subject, + sortMessageDate = message.messageDate, + sortInternalDate = message.internalDate, + sortIsStarred = message.isStarred, + sortDatabaseId = message.id, + ) + } + + @Suppress("ImplicitDefaultLocale") + private fun formatDate(date: Long): String { + calendar.timeInMillis = date + val dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH) + val month = calendar.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.getDefault()) + + return String.format("%d %s", dayOfMonth, month) + } + + private fun createUniqueId(account: Account, messageId: Long): Long { + return ((account.accountNumber + 1).toLong() shl ACCOUNT_NUMBER_BIT_SHIFT) + messageId + } + + private companion object { + const val ACCOUNT_NUMBER_BIT_SHIFT = 52 + } +} diff --git a/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListLoader.kt b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListLoader.kt new file mode 100644 index 0000000000..68e8dfe010 --- /dev/null +++ b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListLoader.kt @@ -0,0 +1,156 @@ +package net.thunderbird.feature.widget.message.list + +import app.k9mail.legacy.account.Account +import app.k9mail.legacy.account.Account.SortType +import app.k9mail.legacy.mailstore.MessageListRepository +import com.fsck.k9.Preferences +import com.fsck.k9.helper.MessageHelper +import com.fsck.k9.mailstore.MessageColumns +import com.fsck.k9.search.SqlQueryBuilder +import com.fsck.k9.search.getAccounts +import timber.log.Timber + +internal class MessageListLoader( + private val preferences: Preferences, + private val messageListRepository: MessageListRepository, + private val messageHelper: MessageHelper, +) { + + @Suppress("TooGenericExceptionCaught") + fun getMessageList(config: MessageListConfig): List { + return try { + getMessageListInfo(config) + } catch (e: Exception) { + Timber.e(e, "Error while fetching message list") + + // TODO: Return an error object instead of an empty list + emptyList() + } + } + + private fun getMessageListInfo(config: MessageListConfig): List { + val accounts = config.search.getAccounts(preferences) + val messageListItems = accounts + .flatMap { account -> + loadMessageListForAccount(account, config) + } + .sortedWith(config) + + return messageListItems + } + + private fun loadMessageListForAccount(account: Account, config: MessageListConfig): List { + val accountUuid = account.uuid + val sortOrder = buildSortOrder(config) + val mapper = MessageListItemMapper(messageHelper, account) + + return if (config.showingThreadedList) { + val (selection, selectionArgs) = buildSelection(config) + messageListRepository.getThreadedMessages(accountUuid, selection, selectionArgs, sortOrder, mapper) + } else { + val (selection, selectionArgs) = buildSelection(config) + messageListRepository.getMessages(accountUuid, selection, selectionArgs, sortOrder, mapper) + } + } + + private fun buildSelection(config: MessageListConfig): Pair> { + val query = StringBuilder() + val queryArgs = mutableListOf() + + SqlQueryBuilder.buildWhereClause(config.search.conditions, query, queryArgs) + + val selection = query.toString() + val selectionArgs = queryArgs.toTypedArray() + + return selection to selectionArgs + } + + private fun buildSortOrder(config: MessageListConfig): String { + val sortColumn = when (config.sortType) { + SortType.SORT_ARRIVAL -> MessageColumns.INTERNAL_DATE + SortType.SORT_ATTACHMENT -> "(${MessageColumns.ATTACHMENT_COUNT} < 1)" + SortType.SORT_FLAGGED -> "(${MessageColumns.FLAGGED} != 1)" + SortType.SORT_SENDER -> MessageColumns.SENDER_LIST // FIXME + SortType.SORT_SUBJECT -> "${MessageColumns.SUBJECT} COLLATE NOCASE" + SortType.SORT_UNREAD -> MessageColumns.READ + SortType.SORT_DATE -> MessageColumns.DATE + else -> MessageColumns.DATE + } + + val sortDirection = if (config.sortAscending) " ASC" else " DESC" + val secondarySort = if (config.sortType == SortType.SORT_DATE || config.sortType == SortType.SORT_ARRIVAL) { + "" + } else { + if (config.sortDateAscending) { + "${MessageColumns.DATE} ASC, " + } else { + "${MessageColumns.DATE} DESC, " + } + } + + return "$sortColumn$sortDirection, $secondarySort${MessageColumns.ID} DESC" + } + + private fun List.sortedWith(config: MessageListConfig): List { + val comparator = when (config.sortType) { + SortType.SORT_DATE -> { + compareBy(config.sortAscending) { it.sortMessageDate } + } + + SortType.SORT_ARRIVAL -> { + compareBy(config.sortAscending) { it.sortInternalDate } + } + + SortType.SORT_SUBJECT -> { + compareStringBy(config.sortAscending) { it.sortSubject.orEmpty() } + .thenByDate(config) + } + + SortType.SORT_SENDER -> { + compareStringBy(config.sortAscending) { it.displayName } + .thenByDate(config) + } + + SortType.SORT_UNREAD -> { + compareBy(config.sortAscending) { it.isRead } + .thenByDate(config) + } + + SortType.SORT_FLAGGED -> { + compareBy(!config.sortAscending) { it.sortIsStarred } + .thenByDate(config) + } + + SortType.SORT_ATTACHMENT -> { + compareBy(!config.sortAscending) { it.hasAttachments } + .thenByDate(config) + } + }.thenByDescending { it.sortDatabaseId } + + return this.sortedWith(comparator) + } +} + +private inline fun compareBy(sortAscending: Boolean, crossinline selector: (T) -> Comparable<*>?): Comparator { + return if (sortAscending) { + compareBy(selector) + } else { + compareByDescending(selector) + } +} + +private inline fun compareStringBy(sortAscending: Boolean, crossinline selector: (T) -> String): Comparator { + return if (sortAscending) { + compareBy(String.CASE_INSENSITIVE_ORDER, selector) + } else { + compareByDescending(String.CASE_INSENSITIVE_ORDER, selector) + } +} + +private fun Comparator.thenByDate(config: MessageListConfig): Comparator { + return if (config.sortDateAscending) { + thenBy { it.sortMessageDate } + } else { + thenByDescending { it.sortMessageDate } + } +} diff --git a/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListWidget.kt b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListWidget.kt new file mode 100644 index 0000000000..3b724183ce --- /dev/null +++ b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListWidget.kt @@ -0,0 +1,90 @@ +package net.thunderbird.feature.widget.message.list + +import android.app.PendingIntent +import android.content.Context +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.core.app.PendingIntentCompat +import androidx.glance.GlanceId +import androidx.glance.appwidget.GlanceAppWidget +import androidx.glance.appwidget.provideContent +import app.k9mail.legacy.account.Account.SortType +import app.k9mail.legacy.search.SearchAccount.Companion.createUnifiedInboxAccount +import com.fsck.k9.CoreResourceProvider +import com.fsck.k9.K9 +import com.fsck.k9.activity.MessageList.Companion.intentDisplaySearch +import kotlin.random.Random.Default.nextInt +import kotlinx.collections.immutable.toImmutableList +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import net.thunderbird.feature.widget.message.list.ui.MessageListWidgetContent +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject + +internal class MessageListWidget : GlanceAppWidget(), KoinComponent { + + private val messageListLoader: MessageListLoader by inject() + private val coreResourceProvider: CoreResourceProvider by inject() + + companion object { + private var lastMailList = emptyList() + private const val MESSAGE_COUNT = 100 + } + + override suspend fun provideGlance(context: Context, id: GlanceId) { + provideContent { + var mails by remember { mutableStateOf(lastMailList) } + + LaunchedEffect(Unit) { + CoroutineScope(Dispatchers.IO).launch { + val unifiedInboxSearch = createUnifiedInboxAccount( + unifiedInboxTitle = coreResourceProvider.searchUnifiedInboxTitle(), + unifiedInboxDetail = coreResourceProvider.searchUnifiedInboxDetail(), + ).relatedSearch + val messageListConfig = MessageListConfig( + search = unifiedInboxSearch, + showingThreadedList = K9.isThreadedViewEnabled, + sortType = SortType.SORT_DATE, + sortAscending = false, + sortDateAscending = false, + ) + val list = messageListLoader.getMessageList(messageListConfig) + mails = list.subList(0, list.size.coerceAtMost(MESSAGE_COUNT)) + lastMailList = mails + } + } + + MessageListWidgetContent( + mails = mails.toImmutableList(), + onOpenApp = { openApp(context) }, + ) + } + } + + private fun openApp(context: Context) { + val unifiedInboxAccount = createUnifiedInboxAccount( + unifiedInboxTitle = coreResourceProvider.searchUnifiedInboxTitle(), + unifiedInboxDetail = coreResourceProvider.searchUnifiedInboxDetail(), + ) + val intent = intentDisplaySearch( + context = context, + search = unifiedInboxAccount.relatedSearch, + noThreading = true, + newTask = true, + clearTop = true, + ).apply { + action = nextInt().toString() + } + PendingIntentCompat.getActivity( + context, + nextInt(), + intent, + PendingIntent.FLAG_UPDATE_CURRENT, + false, + )!!.send() + } +} diff --git a/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListWidgetReceiver.kt b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListWidgetReceiver.kt new file mode 100644 index 0000000000..f1c02fd5c0 --- /dev/null +++ b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListWidgetReceiver.kt @@ -0,0 +1,8 @@ +package net.thunderbird.feature.widget.message.list + +import androidx.glance.appwidget.GlanceAppWidget +import androidx.glance.appwidget.GlanceAppWidgetReceiver + +class MessageListWidgetReceiver : GlanceAppWidgetReceiver() { + override val glanceAppWidget: GlanceAppWidget = MessageListWidget() +} diff --git a/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/ui/MessageListItemView.kt b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/ui/MessageListItemView.kt new file mode 100644 index 0000000000..39d41e053b --- /dev/null +++ b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/ui/MessageListItemView.kt @@ -0,0 +1,96 @@ +package net.thunderbird.feature.widget.message.list.ui + +import android.app.PendingIntent +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.core.app.PendingIntentCompat +import androidx.glance.GlanceModifier +import androidx.glance.GlanceTheme +import androidx.glance.LocalContext +import androidx.glance.action.clickable +import androidx.glance.appwidget.cornerRadius +import androidx.glance.background +import androidx.glance.layout.Alignment +import androidx.glance.layout.Box +import androidx.glance.layout.Column +import androidx.glance.layout.Row +import androidx.glance.layout.Spacer +import androidx.glance.layout.fillMaxWidth +import androidx.glance.layout.height +import androidx.glance.layout.padding +import androidx.glance.layout.width +import androidx.glance.layout.wrapContentHeight +import androidx.glance.text.Text +import androidx.glance.text.TextStyle +import com.fsck.k9.activity.MessageList +import kotlin.random.Random +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import net.thunderbird.feature.widget.message.list.MessageListItem + +@Suppress("LongMethod") +@Composable +internal fun MessageListItemView(item: MessageListItem) { + val context = LocalContext.current + Row( + GlanceModifier.Companion.fillMaxWidth().wrapContentHeight().clickable { + CoroutineScope(Dispatchers.IO).launch { + val intent = MessageList.Companion.actionDisplayMessageIntent(context, item.messageReference) + PendingIntentCompat.getActivity( + context, + Random.Default.nextInt(), + intent, + PendingIntent.FLAG_UPDATE_CURRENT, + false, + )!! + .send() + } + }, + ) { + Spacer(GlanceModifier.Companion.width(8.dp).background(Color(item.accountColor))) + Column(GlanceModifier.Companion.fillMaxWidth().padding(vertical = 4.dp, horizontal = 4.dp)) { + Row(GlanceModifier.Companion.fillMaxWidth()) { + Row(GlanceModifier.Companion.defaultWeight(), horizontalAlignment = Alignment.Companion.Start) { + Text( + item.subject, + style = TextStyle(color = GlanceTheme.colors.primary, fontSize = 16.sp), + maxLines = 1, + ) + } + Spacer(GlanceModifier.Companion.width(4.dp)) + Row(horizontalAlignment = Alignment.Companion.End) { + Box( + GlanceModifier.Companion.background(GlanceTheme.colors.primaryContainer).cornerRadius(8.dp) + .padding(2.dp), + ) { + Text( + item.threadCount.toString(), + style = TextStyle(color = GlanceTheme.colors.primary, fontSize = 13.sp), + ) + } + Spacer(GlanceModifier.Companion.width(4.dp)) + Text(item.displayDate, style = TextStyle(color = GlanceTheme.colors.primary)) + } + } + Spacer(GlanceModifier.Companion.height(2.dp)) + Row { + Text( + item.displayName, + style = TextStyle(color = GlanceTheme.colors.primary, fontSize = 15.sp), + maxLines = 1, + ) + } + Spacer(GlanceModifier.Companion.height(2.dp)) + Row { + Text( + item.preview, + style = TextStyle(color = GlanceTheme.colors.primary, fontSize = 13.sp), + maxLines = 1, + ) + } + } + } +} diff --git a/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/ui/MessageListWidgetContent.kt b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/ui/MessageListWidgetContent.kt new file mode 100644 index 0000000000..f4f8f3c9a6 --- /dev/null +++ b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/ui/MessageListWidgetContent.kt @@ -0,0 +1,86 @@ +package net.thunderbird.feature.widget.message.list.ui + +import android.app.PendingIntent +import android.content.Intent +import androidx.compose.runtime.Composable +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.core.app.PendingIntentCompat +import androidx.glance.ColorFilter +import androidx.glance.GlanceModifier +import androidx.glance.GlanceTheme +import androidx.glance.Image +import androidx.glance.ImageProvider +import androidx.glance.LocalContext +import androidx.glance.action.clickable +import androidx.glance.appwidget.lazy.LazyColumn +import androidx.glance.appwidget.lazy.items +import androidx.glance.background +import androidx.glance.layout.Column +import androidx.glance.layout.Row +import androidx.glance.layout.Spacer +import androidx.glance.layout.fillMaxSize +import androidx.glance.layout.fillMaxWidth +import androidx.glance.layout.height +import androidx.glance.layout.padding +import androidx.glance.text.Text +import androidx.glance.text.TextStyle +import app.k9mail.core.ui.legacy.designsystem.atom.icon.Icons +import com.fsck.k9.activity.MessageCompose +import kotlin.random.Random.Default.nextInt +import kotlinx.collections.immutable.ImmutableList +import net.thunderbird.feature.widget.message.list.MessageListItem +import net.thunderbird.feature.widget.message.list.R + +@Composable +internal fun MessageListWidgetContent( + mails: ImmutableList, + onOpenApp: () -> Unit, +) { + val context = LocalContext.current + GlanceTheme(GlanceTheme.colors) { + Column(GlanceModifier.fillMaxSize().background(GlanceTheme.colors.surface)) { + Row( + GlanceModifier.padding(horizontal = 8.dp, vertical = 12.dp).fillMaxWidth() + .background(GlanceTheme.colors.primaryContainer) + .clickable { + onOpenApp() + }, + ) { + Text( + context.getString(R.string.message_list_glance_widget_inbox_title), + style = TextStyle(color = GlanceTheme.colors.primary, fontSize = 20.sp), + ) + Spacer(GlanceModifier.defaultWeight()) + Image( + ImageProvider(Icons.Outlined.Edit), + context.getString(R.string.message_list_glance_widget_compose_action), + GlanceModifier.padding(2.dp).padding(end = 6.dp).clickable { + val intent = Intent(context, MessageCompose::class.java).apply { + action = MessageCompose.ACTION_COMPOSE + } + PendingIntentCompat.getActivity( + context, + nextInt(), + intent, + PendingIntent.FLAG_UPDATE_CURRENT, + false, + )!!.send() + }, + colorFilter = ColorFilter.tint(GlanceTheme.colors.primary), + ) + } + LazyColumn(GlanceModifier.fillMaxSize()) { + items(mails) { + Column { + MessageListItemView(it) + Spacer( + GlanceModifier.height(2.dp).fillMaxWidth() + .background(GlanceTheme.colors.surfaceVariant), + ) + } + } + } + } + } +} diff --git a/feature/widget/message-list-glance/src/main/res/drawable-xxhdpi/message_list_glance_widget_preview.png b/feature/widget/message-list-glance/src/main/res/drawable-xxhdpi/message_list_glance_widget_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..dfe8f8d45963b88b24e9cd7b1021ebda88ee7291 GIT binary patch literal 70547 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 + + Compose + Unified Inbox + Message List + diff --git a/feature/widget/message-list-glance/src/main/res/xml/message_list_glance_widget_info.xml b/feature/widget/message-list-glance/src/main/res/xml/message_list_glance_widget_info.xml new file mode 100644 index 0000000000..3e16e8f5f3 --- /dev/null +++ b/feature/widget/message-list-glance/src/main/res/xml/message_list_glance_widget_info.xml @@ -0,0 +1,13 @@ + + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ff9e3d2c1b..70cceab7bc 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -30,6 +30,8 @@ androidxCore = "1.15.0" androidxCoreSplashscreen = "1.0.1" androidxDrawerLayout = "1.1.1" androidxFragment = "1.8.6" +androidxGlance = "1.1.1" +androidxGlanceMaterial3 = "1.1.1" androidxLifecycle = "2.8.7" androidxLocalBroadcastManager = "1.1.0" androidxNavigation = "2.8.8" @@ -150,6 +152,10 @@ androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", versi androidx-fragment = { module = "androidx.fragment:fragment", version.ref = "androidxFragment" } androidx-fragment-compose = { module = "androidx.fragment:fragment-compose", version.ref = "androidxFragment" } androidx-fragment-testing = { module = "androidx.fragment:fragment-testing", version.ref = "androidxFragment" } +androidx-glance-appwidget = { module = "androidx.glance:glance-appwidget", version.ref = "androidxGlance" } +androidx-glance-appwidget-preview = { module = "androidx.glance:glance-appwidget-preview", version.ref = "androidxGlance" } +androidx-glance-preview = { module = "androidx.glance:glance-preview", version.ref = "androidxGlance" } +androidx-glance-material3 = { module = "androidx.glance:glance-material3", version.ref = "androidxGlanceMaterial3" } androidx-lifecycle-common = { module = "androidx.lifecycle:lifecycle-common", version.ref = "androidxLifecycle" } androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidxLifecycle" } androidx-lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidxLifecycle" } diff --git a/settings.gradle.kts b/settings.gradle.kts index d630bf74b7..ffad0f40d0 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -97,6 +97,7 @@ include( include( ":feature:widget:message-list", + ":feature:widget:message-list-glance", ":feature:widget:shortcut", ":feature:widget:unread", ) -- GitLab From f81459a874c58457b187972e20c308293011a615 Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Mon, 17 Mar 2025 01:39:26 +0600 Subject: [PATCH 117/262] Change Font Size Customization functionality to be available under feature flag --- legacy/core/src/main/java/com/fsck/k9/K9.kt | 11 ++++++++++- legacy/core/src/test/java/com/fsck/k9/TestApp.kt | 11 +++++++++++ .../settings/general/GeneralSettingsFragment.kt | 16 ++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/legacy/core/src/main/java/com/fsck/k9/K9.kt b/legacy/core/src/main/java/com/fsck/k9/K9.kt index 263df7f648..36e8e36615 100644 --- a/legacy/core/src/main/java/com/fsck/k9/K9.kt +++ b/legacy/core/src/main/java/com/fsck/k9/K9.kt @@ -2,6 +2,9 @@ package com.fsck.k9 import android.content.Context import android.content.SharedPreferences +import app.k9mail.core.featureflag.FeatureFlagProvider +import app.k9mail.core.featureflag.FeatureFlagResult +import app.k9mail.core.featureflag.toFeatureFlagKey import app.k9mail.feature.telemetry.api.TelemetryManager import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.Account.SortType @@ -13,6 +16,7 @@ import com.fsck.k9.preferences.RealGeneralSettingsManager import com.fsck.k9.preferences.Storage import com.fsck.k9.preferences.StorageEditor import kotlinx.datetime.Clock +import org.koin.android.ext.android.inject import org.koin.core.component.KoinComponent import org.koin.core.component.inject import timber.log.Timber @@ -22,6 +26,7 @@ import timber.log.Timber.DebugTree object K9 : KoinComponent { private val generalSettingsManager: RealGeneralSettingsManager by inject() private val telemetryManager: TelemetryManager by inject() + private val featureFlagProvider: FeatureFlagProvider by inject() /** * If this is `true`, various development settings will be enabled. @@ -383,7 +388,11 @@ object K9 : KoinComponent { isUseBackgroundAsUnreadIndicator = storage.getBoolean("useBackgroundAsUnreadIndicator", false) isShowComposeButtonOnMessageList = storage.getBoolean("showComposeButtonOnMessageList", true) isThreadedViewEnabled = storage.getBoolean("threadedView", true) - fontSizes.load(storage) + + featureFlagProvider.provide("disable_font_size_config".toFeatureFlagKey()) + .onDisabledOrUnavailable { + fontSizes.load(storage) + } backgroundOps = storage.getEnum("backgroundOperations", BACKGROUND_OPS.ALWAYS) diff --git a/legacy/core/src/test/java/com/fsck/k9/TestApp.kt b/legacy/core/src/test/java/com/fsck/k9/TestApp.kt index 04e2d2e703..ec08957801 100644 --- a/legacy/core/src/test/java/com/fsck/k9/TestApp.kt +++ b/legacy/core/src/test/java/com/fsck/k9/TestApp.kt @@ -2,6 +2,10 @@ package com.fsck.k9 import android.app.Application import androidx.work.WorkManager +import app.k9mail.core.featureflag.FeatureFlag +import app.k9mail.core.featureflag.FeatureFlagKey +import app.k9mail.core.featureflag.FeatureFlagProvider +import app.k9mail.core.featureflag.InMemoryFeatureFlagProvider import app.k9mail.feature.telemetry.telemetryModule import app.k9mail.legacy.di.DI import com.fsck.k9.backend.BackendManager @@ -44,4 +48,11 @@ val testModule = module { single { mock() } single(named("controllerExtensions")) { emptyList() } single { mock() } + single { + InMemoryFeatureFlagProvider( + featureFlagFactory = { + emptyList() + }, + ) + } } diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsFragment.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsFragment.kt index b9f3808869..d0af1e7dfc 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsFragment.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsFragment.kt @@ -6,6 +6,11 @@ import android.view.MenuInflater import android.view.MenuItem import androidx.activity.result.contract.ActivityResultContracts.CreateDocument import androidx.preference.Preference +import androidx.preference.PreferenceCategory +import androidx.preference.PreferenceScreen +import app.k9mail.core.featureflag.FeatureFlagProvider +import app.k9mail.core.featureflag.FeatureFlagResult +import app.k9mail.core.featureflag.toFeatureFlagKey import app.k9mail.feature.telemetry.api.TelemetryManager import com.fsck.k9.ui.R import com.fsck.k9.ui.base.extensions.withArguments @@ -20,6 +25,7 @@ class GeneralSettingsFragment : PreferenceFragmentCompat() { private val viewModel: GeneralSettingsViewModel by viewModel() private val dataStore: GeneralSettingsDataStore by inject() private val telemetryManager: TelemetryManager by inject() + private val featureFlagProvider: FeatureFlagProvider by inject() private var rootKey: String? = null private var currentUiState: GeneralSettingsUiState? = null @@ -37,6 +43,16 @@ class GeneralSettingsFragment : PreferenceFragmentCompat() { setHasOptionsMenu(true) setPreferencesFromResource(R.xml.general_settings, rootKey) + featureFlagProvider.provide("disable_font_size_config".toFeatureFlagKey()) + .onEnabled { + val parentPreference = findPreference("global_preferences") + val fontSizePreferenceScreen = findPreference("font_size") + + if (parentPreference != null && fontSizePreferenceScreen != null) { + parentPreference.removePreference(fontSizePreferenceScreen) + } + } + initializeDataCollection() viewModel.uiState.observe(this) { uiState -> -- GitLab From d55fc07201f3bcfc795b55ce687c93efeaca51b9 Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Tue, 18 Mar 2025 22:54:08 +0600 Subject: [PATCH 118/262] remove unused properties from K9 class --- legacy/core/src/main/java/com/fsck/k9/K9.kt | 7 +------ legacy/core/src/test/java/com/fsck/k9/TestApp.kt | 1 - .../fsck/k9/ui/settings/general/GeneralSettingsFragment.kt | 1 - 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/legacy/core/src/main/java/com/fsck/k9/K9.kt b/legacy/core/src/main/java/com/fsck/k9/K9.kt index 36e8e36615..02f3d61f56 100644 --- a/legacy/core/src/main/java/com/fsck/k9/K9.kt +++ b/legacy/core/src/main/java/com/fsck/k9/K9.kt @@ -3,7 +3,6 @@ package com.fsck.k9 import android.content.Context import android.content.SharedPreferences import app.k9mail.core.featureflag.FeatureFlagProvider -import app.k9mail.core.featureflag.FeatureFlagResult import app.k9mail.core.featureflag.toFeatureFlagKey import app.k9mail.feature.telemetry.api.TelemetryManager import app.k9mail.legacy.account.Account @@ -16,7 +15,6 @@ import com.fsck.k9.preferences.RealGeneralSettingsManager import com.fsck.k9.preferences.Storage import com.fsck.k9.preferences.StorageEditor import kotlinx.datetime.Clock -import org.koin.android.ext.android.inject import org.koin.core.component.KoinComponent import org.koin.core.component.inject import timber.log.Timber @@ -551,11 +549,8 @@ object K9 : KoinComponent { const val MAX_SEND_ATTEMPTS = 5 const val MANUAL_WAKE_LOCK_TIMEOUT = 120000 - const val PUSH_WAKE_LOCK_TIMEOUT = K9MailLib.PUSH_WAKE_LOCK_TIMEOUT - const val MAIL_SERVICE_WAKE_LOCK_TIMEOUT = 60000 - const val BOOT_RECEIVER_WAKE_LOCK_TIMEOUT = 60000 - @Suppress("ktlint:standard:class-naming") + @Suppress("ClassName") enum class BACKGROUND_OPS { ALWAYS, NEVER, diff --git a/legacy/core/src/test/java/com/fsck/k9/TestApp.kt b/legacy/core/src/test/java/com/fsck/k9/TestApp.kt index ec08957801..e8fe02a99e 100644 --- a/legacy/core/src/test/java/com/fsck/k9/TestApp.kt +++ b/legacy/core/src/test/java/com/fsck/k9/TestApp.kt @@ -3,7 +3,6 @@ package com.fsck.k9 import android.app.Application import androidx.work.WorkManager import app.k9mail.core.featureflag.FeatureFlag -import app.k9mail.core.featureflag.FeatureFlagKey import app.k9mail.core.featureflag.FeatureFlagProvider import app.k9mail.core.featureflag.InMemoryFeatureFlagProvider import app.k9mail.feature.telemetry.telemetryModule diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsFragment.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsFragment.kt index d0af1e7dfc..fff02a2bb3 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsFragment.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsFragment.kt @@ -9,7 +9,6 @@ import androidx.preference.Preference import androidx.preference.PreferenceCategory import androidx.preference.PreferenceScreen import app.k9mail.core.featureflag.FeatureFlagProvider -import app.k9mail.core.featureflag.FeatureFlagResult import app.k9mail.core.featureflag.toFeatureFlagKey import app.k9mail.feature.telemetry.api.TelemetryManager import com.fsck.k9.ui.R -- GitLab From 129d3ad9003112135261a998ff0ab88ccbe0040a Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Wed, 19 Mar 2025 00:53:13 +0600 Subject: [PATCH 119/262] Add FeatureFlagProvider in testModule in com.fsck.k9.storage.TestApp --- legacy/storage/build.gradle.kts | 1 + .../src/test/java/com/fsck/k9/storage/TestApp.kt | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/legacy/storage/build.gradle.kts b/legacy/storage/build.gradle.kts index b42e0f6f43..d45d9cecc2 100644 --- a/legacy/storage/build.gradle.kts +++ b/legacy/storage/build.gradle.kts @@ -17,6 +17,7 @@ dependencies { testImplementation(projects.feature.telemetry.noop) testImplementation(libs.robolectric) testImplementation(libs.commons.io) + testImplementation(projects.core.featureflags) } android { diff --git a/legacy/storage/src/test/java/com/fsck/k9/storage/TestApp.kt b/legacy/storage/src/test/java/com/fsck/k9/storage/TestApp.kt index b9e47b895e..2964febabd 100644 --- a/legacy/storage/src/test/java/com/fsck/k9/storage/TestApp.kt +++ b/legacy/storage/src/test/java/com/fsck/k9/storage/TestApp.kt @@ -1,6 +1,9 @@ package com.fsck.k9.storage import android.app.Application +import app.k9mail.core.featureflag.FeatureFlag +import app.k9mail.core.featureflag.FeatureFlagProvider +import app.k9mail.core.featureflag.InMemoryFeatureFlagProvider import app.k9mail.feature.telemetry.telemetryModule import app.k9mail.legacy.di.DI import com.fsck.k9.AppConfig @@ -33,4 +36,11 @@ val testModule = module { single { mock() } single { K9StoragePersister(get()) } single { mock() } + single { + InMemoryFeatureFlagProvider( + featureFlagFactory = { + emptyList() + }, + ) + } } -- GitLab From 705d0216a847b9e18f13c5585c4b70faebc5baf1 Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Wed, 19 Mar 2025 03:15:39 +0600 Subject: [PATCH 120/262] Add FeatureFlagProvider in testModule in com.fsck.k9.TestApp --- legacy/ui/legacy/src/test/java/com/fsck/k9/TestApp.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/legacy/ui/legacy/src/test/java/com/fsck/k9/TestApp.kt b/legacy/ui/legacy/src/test/java/com/fsck/k9/TestApp.kt index 63e8058935..488f8455e3 100644 --- a/legacy/ui/legacy/src/test/java/com/fsck/k9/TestApp.kt +++ b/legacy/ui/legacy/src/test/java/com/fsck/k9/TestApp.kt @@ -1,6 +1,9 @@ package com.fsck.k9 import android.app.Application +import app.k9mail.core.featureflag.FeatureFlag +import app.k9mail.core.featureflag.FeatureFlagProvider +import app.k9mail.core.featureflag.InMemoryFeatureFlagProvider import app.k9mail.feature.telemetry.telemetryModule import app.k9mail.legacy.di.DI import com.fsck.k9.preferences.InMemoryStoragePersister @@ -27,4 +30,11 @@ val testModule = module { single { AppConfig(emptyList()) } single { TestCoreResourceProvider() } single { InMemoryStoragePersister() } + single { + InMemoryFeatureFlagProvider( + featureFlagFactory = { + emptyList() + }, + ) + } } -- GitLab From 1cebbe0fdd7468deb06f4de4696ecba34afaade4 Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Wed, 19 Mar 2025 19:16:46 +0600 Subject: [PATCH 121/262] Add flag "disable_font_size_config" for K-9 debug, Thunderbird debug, daily and beta. --- .../debug/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt | 1 + .../kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt | 1 + .../net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt | 1 + .../net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt | 1 + .../net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt | 1 + .../net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt | 1 + 6 files changed, 6 insertions(+) diff --git a/app-k9mail/src/debug/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt b/app-k9mail/src/debug/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt index 7a91e168a0..d3eef6c337 100644 --- a/app-k9mail/src/debug/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt +++ b/app-k9mail/src/debug/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt @@ -9,6 +9,7 @@ class K9FeatureFlagFactory : FeatureFlagFactory { return listOf( FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true), FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = true), + FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = true), ) } } diff --git a/app-k9mail/src/release/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt b/app-k9mail/src/release/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt index fbc0e4786b..e22c8482e8 100644 --- a/app-k9mail/src/release/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt +++ b/app-k9mail/src/release/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt @@ -9,6 +9,7 @@ class K9FeatureFlagFactory : FeatureFlagFactory { return listOf( FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = false), FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = false), + FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = false), ) } } diff --git a/app-thunderbird/src/beta/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt b/app-thunderbird/src/beta/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt index 3b5aaa76cd..52fae49ffe 100644 --- a/app-thunderbird/src/beta/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt +++ b/app-thunderbird/src/beta/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt @@ -12,6 +12,7 @@ class TbFeatureFlagFactory : FeatureFlagFactory { return listOf( FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true), FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = false), + FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = true), ) } } diff --git a/app-thunderbird/src/daily/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt b/app-thunderbird/src/daily/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt index 9974c2567d..d649a9bbeb 100644 --- a/app-thunderbird/src/daily/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt +++ b/app-thunderbird/src/daily/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt @@ -12,6 +12,7 @@ class TbFeatureFlagFactory : FeatureFlagFactory { return listOf( FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true), FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = false), + FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = true), ) } } diff --git a/app-thunderbird/src/debug/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt b/app-thunderbird/src/debug/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt index f581310998..061f234629 100644 --- a/app-thunderbird/src/debug/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt +++ b/app-thunderbird/src/debug/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt @@ -12,6 +12,7 @@ class TbFeatureFlagFactory : FeatureFlagFactory { return listOf( FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true), FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = true), + FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = true), ) } } diff --git a/app-thunderbird/src/release/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt b/app-thunderbird/src/release/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt index 73a3f50e76..4bf01bf007 100644 --- a/app-thunderbird/src/release/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt +++ b/app-thunderbird/src/release/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt @@ -12,6 +12,7 @@ class TbFeatureFlagFactory : FeatureFlagFactory { return listOf( FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = false), FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = false), + FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = false), ) } } -- GitLab From 98beb48a8867b739948d953c0168298426c59acb Mon Sep 17 00:00:00 2001 From: Corey Bryant Date: Wed, 19 Mar 2025 14:02:45 -0400 Subject: [PATCH 122/262] Add more details regarding rates to Release Process doc --- docs/RELEASES.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/RELEASES.md b/docs/RELEASES.md index a16dd869ec..c8defc225d 100644 --- a/docs/RELEASES.md +++ b/docs/RELEASES.md @@ -211,11 +211,14 @@ These are the general steps for a release: 5. Test the build in the internal testing track - Release versions should be thoroughly tested with the test plan in Testrail - Beta versions only require a basic smoke test to ensure it installs -6. Promote TfA and K-9 releases in Play Store. +6. Promote TfA and K-9 releases to production track in Play Store. + - Set rollout to a low rate (generally 10-30%). - Betas are only released for TfA. K-9 beta users are advised to use Thunderbird. 7. Wait for Play Store review to complete. - Release versions of TfA and K-9 have managed publishing enabled. Once the review has completed you need to publish the release - Beta versions of TfA do not have managed publishing enabled. It will be available once Google has reviewed, even on a weekend. 8. Update F-Droid to new TfA and K-9 releases by sending a pull request to [fdroiddata](https://gitlab.com/fdroid/fdroiddata) 9. Send community updates to Matrix channels, and beta or planning mailing lists as needed. +10. Approximately 24 hours after initial release to production, assess the following before updating rollout to a higher rate: + - Crash rates, GitHub issues, install base, and reviews. -- GitLab From 70d355d48c87c5af416039703d984ea4263f5dd3 Mon Sep 17 00:00:00 2001 From: Philipp Kewisch Date: Tue, 18 Mar 2025 13:16:02 +0100 Subject: [PATCH 123/262] Reorganize documentation --- docs/DESIGN.md | 8 ++++---- docs/{how-to-document.md => HOW-TO-DOCUMENT.md} | 12 +++++++++++- docs/README.md | 4 ++-- docs/SUMMARY.md | 10 +++++----- docs/{ => assets}/Modules.png | Bin docs/{ => assets}/ReadEmail.png | Bin docs/{ => assets}/ReadEmailClasses.png | Bin docs/{ => assets}/SendEmail.png | Bin docs/{ => assets}/activity_diagram.graphml | 0 docs/{CI/Release_Automation.md => ci/AUTOMATION.md} | 2 +- docs/{RELEASING.md => ci/HISTORICAL_RELEASE.md} | 7 ++++--- docs/ci/README.md | 3 +++ docs/{RELEASES.md => ci/RELEASE.md} | 2 +- docs/{CI => ci/assets}/publish_hold.png | Bin 14 files changed, 31 insertions(+), 17 deletions(-) rename docs/{how-to-document.md => HOW-TO-DOCUMENT.md} (87%) rename docs/{ => assets}/Modules.png (100%) rename docs/{ => assets}/ReadEmail.png (100%) rename docs/{ => assets}/ReadEmailClasses.png (100%) rename docs/{ => assets}/SendEmail.png (100%) rename docs/{ => assets}/activity_diagram.graphml (100%) rename docs/{CI/Release_Automation.md => ci/AUTOMATION.md} (98%) rename docs/{RELEASING.md => ci/HISTORICAL_RELEASE.md} (98%) create mode 100644 docs/ci/README.md rename docs/{RELEASES.md => ci/RELEASE.md} (99%) rename docs/{CI => ci/assets}/publish_hold.png (100%) diff --git a/docs/DESIGN.md b/docs/DESIGN.md index c8252d27c0..350c848874 100644 --- a/docs/DESIGN.md +++ b/docs/DESIGN.md @@ -18,7 +18,7 @@ Low level code for dealing with internet mail protocols Additional, standalone, libraries used by Thunderbird for Android -![modules](Modules.png) +![modules](assets/Modules.png) # Walkthrough @@ -27,10 +27,10 @@ classes. Each class is colour-coded by its top-level project. ## Reading email -![read email sequence](ReadEmail.png) +![read email sequence](assets/ReadEmail.png) -![read email classes](ReadEmailClasses.png) +![read email classes](assets/ReadEmailClasses.png) ## Sending email -![send email sequence](SendEmail.png) +![send email sequence](assets/SendEmail.png) diff --git a/docs/how-to-document.md b/docs/HOW-TO-DOCUMENT.md similarity index 87% rename from docs/how-to-document.md rename to docs/HOW-TO-DOCUMENT.md index a5042dff1d..05ad0eaffc 100644 --- a/docs/how-to-document.md +++ b/docs/HOW-TO-DOCUMENT.md @@ -36,11 +36,15 @@ graph TD; To add a new page, create a markdown file in the `docs/` directory or within a suitable subfolder. For example: -- To create a new top-level page: `docs/new-page.md`. +- To create a new top-level page: `docs/NEW_PAGE.md`. - To create a page within a subfolder: `docs/subfolder/new-subpage.md`. To include the new page in the table of contents, add a link to the `SUMMARY.md` file pointing to newly created page. +For consistency with GitHub conventions and other mandatory files, markdown files in the top level +`docs/` directory shall be written in uppercase, as well the README.md file within subfolders. +Further markdown files in subdirectories shall use a lowercase filename. + ### Organizing with Subfolders Subfolders in the `docs/` folder can be used to organize related documentation. This can be useful if related topics should be grouped together. For example, we have a subfolder named `architecture/` for all documentation related to our application's architecture. @@ -60,6 +64,12 @@ Indentation is used to create hierarchy in the TOC: - [Subpage Title](relative/path/to/subfolder/file.md) ``` +### Assets + +If you need to embed images, put them in the assets folder closest to the file they are being used +in. This can either be the top-level assets folder, or a (potentially new) assets subfolder in the +respective section. + ## Documentation Toolchain The documentation is built using mdbook and several extensions. Follow these steps to set up the required tools. diff --git a/docs/README.md b/docs/README.md index 85a47a5e99..f743103f7b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,3 +1,3 @@ -# About Thunderbird for Android +# Thunderbird for Android Documentation -This document provides an overview of the Thunderbird for Android project. +The latest available documentation is rendered at: [https://thunderbird.github.io/thunderbird-android/docs/latest/](https://thunderbird.github.io/thunderbird-android/docs/latest/) diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index 56c98ea740..580abd8c50 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -1,13 +1,13 @@ # Summary -[Thunderbird for Android](README.md) - --- - [Contributing](CONTRIBUTING.md) - [Design](DESIGN.md) -- [Releases](RELEASES.md) -- [Releasing](RELEASING.md) +- [Release](ci/README.md) + - [Release Process](ci/RELEASE.md) + - [Release Automation](ci/AUTOMATION.md) + - [Manual Release (historical)](ci/HISTORICAL_RELEASE.md) - [Translations](translations.md) - [Java to Kotlin Conversion Guide](contributing/java-to-kotlin-conversion-guide.md) - [Architecture Decision Records](architecture/adr/README.md) @@ -24,4 +24,4 @@ --- -[How to Document](how-to-document.md) +[How to Document](HOW-TO-DOCUMENT.md) diff --git a/docs/Modules.png b/docs/assets/Modules.png similarity index 100% rename from docs/Modules.png rename to docs/assets/Modules.png diff --git a/docs/ReadEmail.png b/docs/assets/ReadEmail.png similarity index 100% rename from docs/ReadEmail.png rename to docs/assets/ReadEmail.png diff --git a/docs/ReadEmailClasses.png b/docs/assets/ReadEmailClasses.png similarity index 100% rename from docs/ReadEmailClasses.png rename to docs/assets/ReadEmailClasses.png diff --git a/docs/SendEmail.png b/docs/assets/SendEmail.png similarity index 100% rename from docs/SendEmail.png rename to docs/assets/SendEmail.png diff --git a/docs/activity_diagram.graphml b/docs/assets/activity_diagram.graphml similarity index 100% rename from docs/activity_diagram.graphml rename to docs/assets/activity_diagram.graphml diff --git a/docs/CI/Release_Automation.md b/docs/ci/AUTOMATION.md similarity index 98% rename from docs/CI/Release_Automation.md rename to docs/ci/AUTOMATION.md index d62faf4b71..d8cab770c6 100644 --- a/docs/CI/Release_Automation.md +++ b/docs/ci/AUTOMATION.md @@ -95,7 +95,7 @@ It has no secrets or variables, but "Required Reviewers" is set to trusted team effect is that after package signing completes, the publishing jobs that depend on it will not run until released manually. -![publish hold](publish_hold.png) +![publish hold](assets/publish_hold.png) ## Github Releases Environment diff --git a/docs/RELEASING.md b/docs/ci/HISTORICAL_RELEASE.md similarity index 98% rename from docs/RELEASING.md rename to docs/ci/HISTORICAL_RELEASE.md index d8b0da46e7..3938a034a4 100644 --- a/docs/RELEASING.md +++ b/docs/ci/HISTORICAL_RELEASE.md @@ -1,8 +1,9 @@ # Create K-9 Mail releases -This document contains the historical manual release process for K-9 Mail. - -For current steps that are taken for the automated process, see [Releases](RELEASES.md). +

+This document contains the historical manual release process for K-9 Mail. Please use the automated process instead. +We're keeping this around in case we need to do a manual release. +
## One-time setup diff --git a/docs/ci/README.md b/docs/ci/README.md new file mode 100644 index 0000000000..5f671ab8ac --- /dev/null +++ b/docs/ci/README.md @@ -0,0 +1,3 @@ +# Thunderbird for Android Release Documentation + +Please see the sub-pages for release documentation diff --git a/docs/RELEASES.md b/docs/ci/RELEASE.md similarity index 99% rename from docs/RELEASES.md rename to docs/ci/RELEASE.md index c8defc225d..5033fe1e38 100644 --- a/docs/RELEASES.md +++ b/docs/ci/RELEASE.md @@ -195,7 +195,7 @@ Risk to taking this patch (and alternatives if risky): Releases for both K-9 and Thunderbird for Android are automated with github actions. Daily builds are scheduled with the [Daily Builds](https://github.com/thunderbird/thunderbird-android/actions/workflows/daily_builds.yml) action and all builds are performed by the [Shippable Build & Signing](https://github.com/thunderbird/thunderbird-android/actions/workflows/shippable_builds.yml) action. -For the historical manual release process, see [Releasing](RELEASING.md). +For the historical manual release process, see [Releasing](HISTORICAL_RELEASE.md). ### Release Process diff --git a/docs/CI/publish_hold.png b/docs/ci/assets/publish_hold.png similarity index 100% rename from docs/CI/publish_hold.png rename to docs/ci/assets/publish_hold.png -- GitLab From 0b745ddf606e9af5945495714761493f4643c7e6 Mon Sep 17 00:00:00 2001 From: Philipp Kewisch Date: Tue, 18 Mar 2025 13:16:33 +0100 Subject: [PATCH 124/262] Update mermaid.js in documentation --- docs/assets/theme/mermaid.min.js | 929 ++++++++++++++++++++----------- docs/install.sh | 3 +- 2 files changed, 592 insertions(+), 340 deletions(-) diff --git a/docs/assets/theme/mermaid.min.js b/docs/assets/theme/mermaid.min.js index b01ad01a2a..ea5ef3eaf1 100644 --- a/docs/assets/theme/mermaid.min.js +++ b/docs/assets/theme/mermaid.min.js @@ -1,16 +1,16 @@ -"use strict";var __esbuild_esm_mermaid=(()=>{var cxe=Object.create;var R1=Object.defineProperty;var uxe=Object.getOwnPropertyDescriptor;var hxe=Object.getOwnPropertyNames;var fxe=Object.getPrototypeOf,dxe=Object.prototype.hasOwnProperty;var o=(t,e)=>R1(t,"name",{value:e,configurable:!0});var M=(t,e)=>()=>(t&&(e=t(t=0)),e);var Ni=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),vr=(t,e)=>{for(var r in e)R1(t,r,{get:e[r],enumerable:!0})},Cb=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of hxe(e))!dxe.call(t,i)&&i!==r&&R1(t,i,{get:()=>e[i],enumerable:!(n=uxe(e,i))||n.enumerable});return t},Er=(t,e,r)=>(Cb(t,e,"default"),r&&Cb(r,e,"default")),ka=(t,e,r)=>(r=t!=null?cxe(fxe(t)):{},Cb(e||!t||!t.__esModule?R1(r,"default",{value:t,enumerable:!0}):r,t)),pxe=t=>Cb(R1({},"__esModule",{value:!0}),t);var Ab=Ni((wS,TS)=>{"use strict";(function(t,e){typeof wS=="object"&&typeof TS<"u"?TS.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs=e()})(wS,function(){"use strict";var t=1e3,e=6e4,r=36e5,n="millisecond",i="second",a="minute",s="hour",l="day",u="week",h="month",f="quarter",d="year",p="date",m="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,v={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:o(function(k){var R=["th","st","nd","rd"],S=k%100;return"["+k+(R[(S-20)%10]||R[S]||R[0])+"]"},"ordinal")},x=o(function(k,R,S){var O=String(k);return!O||O.length>=R?k:""+Array(R+1-O.length).join(S)+k},"m"),b={s:x,z:o(function(k){var R=-k.utcOffset(),S=Math.abs(R),O=Math.floor(S/60),N=S%60;return(R<=0?"+":"-")+x(O,2,"0")+":"+x(N,2,"0")},"z"),m:o(function k(R,S){if(R.date()1)return k(F[0])}else{var B=R.name;_[B]=R,N=B}return!O&&N&&(w=N),N||!O&&w},"t"),C=o(function(k,R){if(E(k))return k.clone();var S=typeof R=="object"?R:{};return S.date=k,S.args=arguments,new I(S)},"O"),A=b;A.l=L,A.i=E,A.w=function(k,R){return C(k,{locale:R.$L,utc:R.$u,x:R.$x,$offset:R.$offset})};var I=function(){function k(S){this.$L=L(S.locale,null,!0),this.parse(S),this.$x=this.$x||S.x||{},this[T]=!0}o(k,"M");var R=k.prototype;return R.parse=function(S){this.$d=function(O){var N=O.date,P=O.utc;if(N===null)return new Date(NaN);if(A.u(N))return new Date;if(N instanceof Date)return new Date(N);if(typeof N=="string"&&!/Z$/i.test(N)){var F=N.match(g);if(F){var B=F[2]-1||0,$=(F[7]||"0").substring(0,3);return P?new Date(Date.UTC(F[1],B,F[3]||1,F[4]||0,F[5]||0,F[6]||0,$)):new Date(F[1],B,F[3]||1,F[4]||0,F[5]||0,F[6]||0,$)}}return new Date(N)}(S),this.init()},R.init=function(){var S=this.$d;this.$y=S.getFullYear(),this.$M=S.getMonth(),this.$D=S.getDate(),this.$W=S.getDay(),this.$H=S.getHours(),this.$m=S.getMinutes(),this.$s=S.getSeconds(),this.$ms=S.getMilliseconds()},R.$utils=function(){return A},R.isValid=function(){return this.$d.toString()!==m},R.isSame=function(S,O){var N=C(S);return this.startOf(O)<=N&&N<=this.endOf(O)},R.isAfter=function(S,O){return C(S){"use strict";EF=ka(Ab(),1),jc={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},Y={trace:o((...t)=>{},"trace"),debug:o((...t)=>{},"debug"),info:o((...t)=>{},"info"),warn:o((...t)=>{},"warn"),error:o((...t)=>{},"error"),fatal:o((...t)=>{},"fatal")},M1=o(function(t="fatal"){let e=jc.fatal;typeof t=="string"?t.toLowerCase()in jc&&(e=jc[t]):typeof t=="number"&&(e=t),Y.trace=()=>{},Y.debug=()=>{},Y.info=()=>{},Y.warn=()=>{},Y.error=()=>{},Y.fatal=()=>{},e<=jc.fatal&&(Y.fatal=console.error?console.error.bind(console,bo("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",bo("FATAL"))),e<=jc.error&&(Y.error=console.error?console.error.bind(console,bo("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",bo("ERROR"))),e<=jc.warn&&(Y.warn=console.warn?console.warn.bind(console,bo("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",bo("WARN"))),e<=jc.info&&(Y.info=console.info?console.info.bind(console,bo("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",bo("INFO"))),e<=jc.debug&&(Y.debug=console.debug?console.debug.bind(console,bo("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",bo("DEBUG"))),e<=jc.trace&&(Y.trace=console.debug?console.debug.bind(console,bo("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",bo("TRACE")))},"setLogLevel"),bo=o(t=>`%c${(0,EF.default)().format("ss.SSS")} : ${t} : `,"format")});var mxe,Z0,kS,SF,_b=M(()=>{"use strict";mxe=Object.freeze({left:0,top:0,width:16,height:16}),Z0=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),kS=Object.freeze({...mxe,...Z0}),SF=Object.freeze({...kS,body:"",hidden:!1})});var gxe,CF,AF=M(()=>{"use strict";_b();gxe=Object.freeze({width:null,height:null}),CF=Object.freeze({...gxe,...Z0})});var Lb,ES,Db,_F=M(()=>{"use strict";Lb=/^[a-z0-9]+(-[a-z0-9]+)*$/,ES=o((t,e,r,n="")=>{let i=t.split(":");if(t.slice(0,1)==="@"){if(i.length<2||i.length>3)return null;n=i.shift().slice(1)}if(i.length>3||!i.length)return null;if(i.length>1){let l=i.pop(),u=i.pop(),h={provider:i.length>0?i[0]:n,prefix:u,name:l};return e&&!Db(h)?null:h}let a=i[0],s=a.split("-");if(s.length>1){let l={provider:n,prefix:s.shift(),name:s.join("-")};return e&&!Db(l)?null:l}if(r&&n===""){let l={provider:n,prefix:"",name:a};return e&&!Db(l,r)?null:l}return null},"stringToIcon"),Db=o((t,e)=>t?!!((t.provider===""||t.provider.match(Lb))&&(e&&t.prefix===""||t.prefix.match(Lb))&&t.name.match(Lb)):!1,"validateIconName")});function LF(t,e){let r={};!t.hFlip!=!e.hFlip&&(r.hFlip=!0),!t.vFlip!=!e.vFlip&&(r.vFlip=!0);let n=((t.rotate||0)+(e.rotate||0))%4;return n&&(r.rotate=n),r}var DF=M(()=>{"use strict";o(LF,"mergeIconTransformations")});function SS(t,e){let r=LF(t,e);for(let n in SF)n in Z0?n in t&&!(n in r)&&(r[n]=Z0[n]):n in e?r[n]=e[n]:n in t&&(r[n]=t[n]);return r}var NF=M(()=>{"use strict";_b();DF();o(SS,"mergeIconData")});function RF(t,e){let r=t.icons,n=t.aliases||Object.create(null),i=Object.create(null);function a(s){if(r[s])return i[s]=[];if(!(s in i)){i[s]=null;let l=n[s]&&n[s].parent,u=l&&a(l);u&&(i[s]=[l].concat(u))}return i[s]}return o(a,"resolve"),(e||Object.keys(r).concat(Object.keys(n))).forEach(a),i}var MF=M(()=>{"use strict";o(RF,"getIconsTree")});function IF(t,e,r){let n=t.icons,i=t.aliases||Object.create(null),a={};function s(l){a=SS(n[l]||i[l],a)}return o(s,"parse"),s(e),r.forEach(s),SS(t,a)}function CS(t,e){if(t.icons[e])return IF(t,e,[]);let r=RF(t,[e])[e];return r?IF(t,e,r):null}var OF=M(()=>{"use strict";NF();MF();o(IF,"internalGetIconData");o(CS,"getIconData")});function AS(t,e,r){if(e===1)return t;if(r=r||100,typeof t=="number")return Math.ceil(t*e*r)/r;if(typeof t!="string")return t;let n=t.split(yxe);if(n===null||!n.length)return t;let i=[],a=n.shift(),s=vxe.test(a);for(;;){if(s){let l=parseFloat(a);isNaN(l)?i.push(a):i.push(Math.ceil(l*e*r)/r)}else i.push(a);if(a=n.shift(),a===void 0)return i.join("");s=!s}}var yxe,vxe,PF=M(()=>{"use strict";yxe=/(-?[0-9.]*[0-9]+[0-9.]*)/g,vxe=/^-?[0-9.]*[0-9]+[0-9.]*$/g;o(AS,"calculateSize")});function xxe(t,e="defs"){let r="",n=t.indexOf("<"+e);for(;n>=0;){let i=t.indexOf(">",n),a=t.indexOf("",a);if(s===-1)break;r+=t.slice(i+1,a).trim(),t=t.slice(0,n).trim()+t.slice(s+1)}return{defs:r,content:t}}function bxe(t,e){return t?""+t+""+e:e}function BF(t,e,r){let n=xxe(t);return bxe(n.defs,e+n.content+r)}var FF=M(()=>{"use strict";o(xxe,"splitSVGDefs");o(bxe,"mergeDefsAndContent");o(BF,"wrapSVGContent")});function _S(t,e){let r={...kS,...t},n={...CF,...e},i={left:r.left,top:r.top,width:r.width,height:r.height},a=r.body;[r,n].forEach(y=>{let v=[],x=y.hFlip,b=y.vFlip,w=y.rotate;x?b?w+=2:(v.push("translate("+(i.width+i.left).toString()+" "+(0-i.top).toString()+")"),v.push("scale(-1 1)"),i.top=i.left=0):b&&(v.push("translate("+(0-i.left).toString()+" "+(i.height+i.top).toString()+")"),v.push("scale(1 -1)"),i.top=i.left=0);let _;switch(w<0&&(w-=Math.floor(w/4)*4),w=w%4,w){case 1:_=i.height/2+i.top,v.unshift("rotate(90 "+_.toString()+" "+_.toString()+")");break;case 2:v.unshift("rotate(180 "+(i.width/2+i.left).toString()+" "+(i.height/2+i.top).toString()+")");break;case 3:_=i.width/2+i.left,v.unshift("rotate(-90 "+_.toString()+" "+_.toString()+")");break}w%2===1&&(i.left!==i.top&&(_=i.left,i.left=i.top,i.top=_),i.width!==i.height&&(_=i.width,i.width=i.height,i.height=_)),v.length&&(a=BF(a,'',""))});let s=n.width,l=n.height,u=i.width,h=i.height,f,d;s===null?(d=l===null?"1em":l==="auto"?h:l,f=AS(d,u/h)):(f=s==="auto"?u:s,d=l===null?AS(f,h/u):l==="auto"?h:l);let p={},m=o((y,v)=>{wxe(v)||(p[y]=v.toString())},"setAttr");m("width",f),m("height",d);let g=[i.left,i.top,u,h];return p.viewBox=g.join(" "),{attributes:p,viewBox:g,body:a}}var wxe,zF=M(()=>{"use strict";_b();AF();PF();FF();wxe=o(t=>t==="unset"||t==="undefined"||t==="none","isUnsetKeyword");o(_S,"iconToSVG")});function LS(t,e=kxe){let r=[],n;for(;n=Txe.exec(t);)r.push(n[1]);if(!r.length)return t;let i="suffix"+(Math.random()*16777216|Date.now()).toString(16);return r.forEach(a=>{let s=typeof e=="function"?e(a):e+(Exe++).toString(),l=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+l+')([")]|\\.[a-z])',"g"),"$1"+s+i+"$3")}),t=t.replace(new RegExp(i,"g"),""),t}var Txe,kxe,Exe,GF=M(()=>{"use strict";Txe=/\sid="(\S+)"/g,kxe="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),Exe=0;o(LS,"replaceIDs")});function DS(t,e){let r=t.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(let n in e)r+=" "+n+'="'+e[n]+'"';return'"+t+""}var $F=M(()=>{"use strict";o(DS,"iconToHTML")});var UF=Ni((lst,VF)=>{"use strict";var J0=1e3,ep=J0*60,tp=ep*60,Ff=tp*24,Sxe=Ff*7,Cxe=Ff*365.25;VF.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return Axe(t);if(r==="number"&&isFinite(t))return e.long?Lxe(t):_xe(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function Axe(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*Cxe;case"weeks":case"week":case"w":return r*Sxe;case"days":case"day":case"d":return r*Ff;case"hours":case"hour":case"hrs":case"hr":case"h":return r*tp;case"minutes":case"minute":case"mins":case"min":case"m":return r*ep;case"seconds":case"second":case"secs":case"sec":case"s":return r*J0;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}o(Axe,"parse");function _xe(t){var e=Math.abs(t);return e>=Ff?Math.round(t/Ff)+"d":e>=tp?Math.round(t/tp)+"h":e>=ep?Math.round(t/ep)+"m":e>=J0?Math.round(t/J0)+"s":t+"ms"}o(_xe,"fmtShort");function Lxe(t){var e=Math.abs(t);return e>=Ff?Nb(t,e,Ff,"day"):e>=tp?Nb(t,e,tp,"hour"):e>=ep?Nb(t,e,ep,"minute"):e>=J0?Nb(t,e,J0,"second"):t+" ms"}o(Lxe,"fmtLong");function Nb(t,e,r,n){var i=e>=r*1.5;return Math.round(t/r)+" "+n+(i?"s":"")}o(Nb,"plural")});var WF=Ni((ust,HF)=>{"use strict";function Dxe(t){r.debug=r,r.default=r,r.coerce=u,r.disable=a,r.enable=i,r.enabled=s,r.humanize=UF(),r.destroy=h,Object.keys(t).forEach(f=>{r[f]=t[f]}),r.names=[],r.skips=[],r.formatters={};function e(f){let d=0;for(let p=0;p{if(E==="%%")return"%";_++;let C=r.formatters[L];if(typeof C=="function"){let A=v[_];E=C.call(x,A),v.splice(_,1),_--}return E}),r.formatArgs.call(x,v),(x.log||r.log).apply(x,v)}return o(y,"debug"),y.namespace=f,y.useColors=r.useColors(),y.color=r.selectColor(f),y.extend=n,y.destroy=r.destroy,Object.defineProperty(y,"enabled",{enumerable:!0,configurable:!1,get:o(()=>p!==null?p:(m!==r.namespaces&&(m=r.namespaces,g=r.enabled(f)),g),"get"),set:o(v=>{p=v},"set")}),typeof r.init=="function"&&r.init(y),y}o(r,"createDebug");function n(f,d){let p=r(this.namespace+(typeof d>"u"?":":d)+f);return p.log=this.log,p}o(n,"extend");function i(f){r.save(f),r.namespaces=f,r.names=[],r.skips=[];let d,p=(typeof f=="string"?f:"").split(/[\s,]+/),m=p.length;for(d=0;d"-"+d)].join(",");return r.enable(""),f}o(a,"disable");function s(f){if(f[f.length-1]==="*")return!0;let d,p;for(d=0,p=r.skips.length;d{"use strict";Us.formatArgs=Rxe;Us.save=Mxe;Us.load=Ixe;Us.useColors=Nxe;Us.storage=Oxe();Us.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();Us.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function Nxe(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let t;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}o(Nxe,"useColors");function Rxe(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+Rb.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let r=0,n=0;t[0].replace(/%[a-zA-Z%]/g,i=>{i!=="%%"&&(r++,i==="%c"&&(n=r))}),t.splice(n,0,e)}o(Rxe,"formatArgs");Us.log=console.debug||console.log||(()=>{});function Mxe(t){try{t?Us.storage.setItem("debug",t):Us.storage.removeItem("debug")}catch{}}o(Mxe,"save");function Ixe(){let t;try{t=Us.storage.getItem("debug")}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}o(Ixe,"load");function Oxe(){try{return localStorage}catch{}}o(Oxe,"localstorage");Rb.exports=WF()(Us);var{formatters:Pxe}=Rb.exports;Pxe.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var dst,qF=M(()=>{"use strict";_F();OF();zF();GF();$F();dst=ka(YF(),1)});var RS,NS,XF,Mb,Bxe,wo,Kc=M(()=>{"use strict";ht();qF();RS={body:'?',height:80,width:80},NS=new Map,XF=new Map,Mb=o(t=>{for(let e of t){if(!e.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(Y.debug("Registering icon pack:",e.name),"loader"in e)XF.set(e.name,e.loader);else if("icons"in e)NS.set(e.name,e.icons);else throw Y.error("Invalid icon loader:",e),new Error('Invalid icon loader. Must have either "icons" or "loader" property.')}},"registerIconPacks"),Bxe=o(async(t,e)=>{let r=ES(t,!0,e!==void 0);if(!r)throw new Error(`Invalid icon name: ${t}`);let n=r.prefix||e;if(!n)throw new Error(`Icon name must contain a prefix: ${t}`);let i=NS.get(n);if(!i){let s=XF.get(n);if(!s)throw new Error(`Icon set not found: ${r.prefix}`);try{i={...await s(),prefix:n},NS.set(n,i)}catch(l){throw Y.error(l),new Error(`Failed to load icon set: ${r.prefix}`)}}let a=CS(i,r.name);if(!a)throw new Error(`Icon not found: ${t}`);return a},"getRegisteredIconData"),wo=o(async(t,e)=>{let r;try{r=await Bxe(t,e?.fallbackPrefix)}catch(a){Y.error(a),r=RS}let n=_S(r,e);return DS(LS(n.body),n.attributes)},"getIconSVG")});function Ib(t){for(var e=[],r=1;r{var c2e=Object.create;var py=Object.defineProperty;var u2e=Object.getOwnPropertyDescriptor;var h2e=Object.getOwnPropertyNames;var f2e=Object.getPrototypeOf,d2e=Object.prototype.hasOwnProperty;var o=(t,e)=>py(t,"name",{value:e,configurable:!0});var M=(t,e)=>()=>(t&&(e=t(t=0)),e);var Ni=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),pr=(t,e)=>{for(var r in e)py(t,r,{get:e[r],enumerable:!0})},y4=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of h2e(e))!d2e.call(t,i)&&i!==r&&py(t,i,{get:()=>e[i],enumerable:!(n=u2e(e,i))||n.enumerable});return t},Sr=(t,e,r)=>(y4(t,e,"default"),r&&y4(r,e,"default")),Ta=(t,e,r)=>(r=t!=null?c2e(f2e(t)):{},y4(e||!t||!t.__esModule?py(r,"default",{value:t,enumerable:!0}):r,t)),p2e=t=>y4(py({},"__esModule",{value:!0}),t);var v4=Ni((uC,hC)=>{"use strict";(function(t,e){typeof uC=="object"&&typeof hC<"u"?hC.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs=e()})(uC,function(){"use strict";var t=1e3,e=6e4,r=36e5,n="millisecond",i="second",a="minute",s="hour",l="day",u="week",h="month",f="quarter",d="year",p="date",m="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,v={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:o(function(k){var L=["th","st","nd","rd"],R=k%100;return"["+k+(L[(R-20)%10]||L[R]||L[0])+"]"},"ordinal")},x=o(function(k,L,R){var O=String(k);return!O||O.length>=L?k:""+Array(L+1-O.length).join(R)+k},"m"),b={s:x,z:o(function(k){var L=-k.utcOffset(),R=Math.abs(L),O=Math.floor(R/60),N=R%60;return(L<=0?"+":"-")+x(O,2,"0")+":"+x(N,2,"0")},"z"),m:o(function k(L,R){if(L.date()1)return k(F[0])}else{var P=L.name;C[P]=L,N=P}return!O&&N&&(w=N),N||!O&&w},"t"),S=o(function(k,L){if(E(k))return k.clone();var R=typeof L=="object"?L:{};return R.date=k,R.args=arguments,new I(R)},"O"),_=b;_.l=A,_.i=E,_.w=function(k,L){return S(k,{locale:L.$L,utc:L.$u,x:L.$x,$offset:L.$offset})};var I=function(){function k(R){this.$L=A(R.locale,null,!0),this.parse(R),this.$x=this.$x||R.x||{},this[T]=!0}o(k,"M");var L=k.prototype;return L.parse=function(R){this.$d=function(O){var N=O.date,B=O.utc;if(N===null)return new Date(NaN);if(_.u(N))return new Date;if(N instanceof Date)return new Date(N);if(typeof N=="string"&&!/Z$/i.test(N)){var F=N.match(g);if(F){var P=F[2]-1||0,G=(F[7]||"0").substring(0,3);return B?new Date(Date.UTC(F[1],P,F[3]||1,F[4]||0,F[5]||0,F[6]||0,G)):new Date(F[1],P,F[3]||1,F[4]||0,F[5]||0,F[6]||0,G)}}return new Date(N)}(R),this.init()},L.init=function(){var R=this.$d;this.$y=R.getFullYear(),this.$M=R.getMonth(),this.$D=R.getDate(),this.$W=R.getDay(),this.$H=R.getHours(),this.$m=R.getMinutes(),this.$s=R.getSeconds(),this.$ms=R.getMilliseconds()},L.$utils=function(){return _},L.isValid=function(){return this.$d.toString()!==m},L.isSame=function(R,O){var N=S(R);return this.startOf(O)<=N&&N<=this.endOf(O)},L.isAfter=function(R,O){return S(R){"use strict";dF=Ta(v4(),1),Qc={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},Y={trace:o((...t)=>{},"trace"),debug:o((...t)=>{},"debug"),info:o((...t)=>{},"info"),warn:o((...t)=>{},"warn"),error:o((...t)=>{},"error"),fatal:o((...t)=>{},"fatal")},my=o(function(t="fatal"){let e=Qc.fatal;typeof t=="string"?t.toLowerCase()in Qc&&(e=Qc[t]):typeof t=="number"&&(e=t),Y.trace=()=>{},Y.debug=()=>{},Y.info=()=>{},Y.warn=()=>{},Y.error=()=>{},Y.fatal=()=>{},e<=Qc.fatal&&(Y.fatal=console.error?console.error.bind(console,go("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",go("FATAL"))),e<=Qc.error&&(Y.error=console.error?console.error.bind(console,go("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",go("ERROR"))),e<=Qc.warn&&(Y.warn=console.warn?console.warn.bind(console,go("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",go("WARN"))),e<=Qc.info&&(Y.info=console.info?console.info.bind(console,go("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",go("INFO"))),e<=Qc.debug&&(Y.debug=console.debug?console.debug.bind(console,go("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",go("DEBUG"))),e<=Qc.trace&&(Y.trace=console.debug?console.debug.bind(console,go("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",go("TRACE")))},"setLogLevel"),go=o(t=>`%c${(0,dF.default)().format("ss.SSS")} : ${t} : `,"format")});var m2e,Kp,fC,pF,x4=M(()=>{"use strict";m2e=Object.freeze({left:0,top:0,width:16,height:16}),Kp=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),fC=Object.freeze({...m2e,...Kp}),pF=Object.freeze({...fC,body:"",hidden:!1})});var g2e,mF,gF=M(()=>{"use strict";x4();g2e=Object.freeze({width:null,height:null}),mF=Object.freeze({...g2e,...Kp})});var dC,b4,yF=M(()=>{"use strict";dC=o((t,e,r,n="")=>{let i=t.split(":");if(t.slice(0,1)==="@"){if(i.length<2||i.length>3)return null;n=i.shift().slice(1)}if(i.length>3||!i.length)return null;if(i.length>1){let l=i.pop(),u=i.pop(),h={provider:i.length>0?i[0]:n,prefix:u,name:l};return e&&!b4(h)?null:h}let a=i[0],s=a.split("-");if(s.length>1){let l={provider:n,prefix:s.shift(),name:s.join("-")};return e&&!b4(l)?null:l}if(r&&n===""){let l={provider:n,prefix:"",name:a};return e&&!b4(l,r)?null:l}return null},"stringToIcon"),b4=o((t,e)=>t?!!((e&&t.prefix===""||t.prefix)&&t.name):!1,"validateIconName")});function vF(t,e){let r={};!t.hFlip!=!e.hFlip&&(r.hFlip=!0),!t.vFlip!=!e.vFlip&&(r.vFlip=!0);let n=((t.rotate||0)+(e.rotate||0))%4;return n&&(r.rotate=n),r}var xF=M(()=>{"use strict";o(vF,"mergeIconTransformations")});function pC(t,e){let r=vF(t,e);for(let n in pF)n in Kp?n in t&&!(n in r)&&(r[n]=Kp[n]):n in e?r[n]=e[n]:n in t&&(r[n]=t[n]);return r}var bF=M(()=>{"use strict";x4();xF();o(pC,"mergeIconData")});function wF(t,e){let r=t.icons,n=t.aliases||Object.create(null),i=Object.create(null);function a(s){if(r[s])return i[s]=[];if(!(s in i)){i[s]=null;let l=n[s]&&n[s].parent,u=l&&a(l);u&&(i[s]=[l].concat(u))}return i[s]}return o(a,"resolve"),(e||Object.keys(r).concat(Object.keys(n))).forEach(a),i}var TF=M(()=>{"use strict";o(wF,"getIconsTree")});function kF(t,e,r){let n=t.icons,i=t.aliases||Object.create(null),a={};function s(l){a=pC(n[l]||i[l],a)}return o(s,"parse"),s(e),r.forEach(s),pC(t,a)}function mC(t,e){if(t.icons[e])return kF(t,e,[]);let r=wF(t,[e])[e];return r?kF(t,e,r):null}var EF=M(()=>{"use strict";bF();TF();o(kF,"internalGetIconData");o(mC,"getIconData")});function gC(t,e,r){if(e===1)return t;if(r=r||100,typeof t=="number")return Math.ceil(t*e*r)/r;if(typeof t!="string")return t;let n=t.split(y2e);if(n===null||!n.length)return t;let i=[],a=n.shift(),s=v2e.test(a);for(;;){if(s){let l=parseFloat(a);isNaN(l)?i.push(a):i.push(Math.ceil(l*e*r)/r)}else i.push(a);if(a=n.shift(),a===void 0)return i.join("");s=!s}}var y2e,v2e,SF=M(()=>{"use strict";y2e=/(-?[0-9.]*[0-9]+[0-9.]*)/g,v2e=/^-?[0-9.]*[0-9]+[0-9.]*$/g;o(gC,"calculateSize")});function x2e(t,e="defs"){let r="",n=t.indexOf("<"+e);for(;n>=0;){let i=t.indexOf(">",n),a=t.indexOf("",a);if(s===-1)break;r+=t.slice(i+1,a).trim(),t=t.slice(0,n).trim()+t.slice(s+1)}return{defs:r,content:t}}function b2e(t,e){return t?""+t+""+e:e}function CF(t,e,r){let n=x2e(t);return b2e(n.defs,e+n.content+r)}var AF=M(()=>{"use strict";o(x2e,"splitSVGDefs");o(b2e,"mergeDefsAndContent");o(CF,"wrapSVGContent")});function yC(t,e){let r={...fC,...t},n={...mF,...e},i={left:r.left,top:r.top,width:r.width,height:r.height},a=r.body;[r,n].forEach(y=>{let v=[],x=y.hFlip,b=y.vFlip,w=y.rotate;x?b?w+=2:(v.push("translate("+(i.width+i.left).toString()+" "+(0-i.top).toString()+")"),v.push("scale(-1 1)"),i.top=i.left=0):b&&(v.push("translate("+(0-i.left).toString()+" "+(i.height+i.top).toString()+")"),v.push("scale(1 -1)"),i.top=i.left=0);let C;switch(w<0&&(w-=Math.floor(w/4)*4),w=w%4,w){case 1:C=i.height/2+i.top,v.unshift("rotate(90 "+C.toString()+" "+C.toString()+")");break;case 2:v.unshift("rotate(180 "+(i.width/2+i.left).toString()+" "+(i.height/2+i.top).toString()+")");break;case 3:C=i.width/2+i.left,v.unshift("rotate(-90 "+C.toString()+" "+C.toString()+")");break}w%2===1&&(i.left!==i.top&&(C=i.left,i.left=i.top,i.top=C),i.width!==i.height&&(C=i.width,i.width=i.height,i.height=C)),v.length&&(a=CF(a,'',""))});let s=n.width,l=n.height,u=i.width,h=i.height,f,d;s===null?(d=l===null?"1em":l==="auto"?h:l,f=gC(d,u/h)):(f=s==="auto"?u:s,d=l===null?gC(f,h/u):l==="auto"?h:l);let p={},m=o((y,v)=>{w2e(v)||(p[y]=v.toString())},"setAttr");m("width",f),m("height",d);let g=[i.left,i.top,u,h];return p.viewBox=g.join(" "),{attributes:p,viewBox:g,body:a}}var w2e,_F=M(()=>{"use strict";x4();gF();SF();AF();w2e=o(t=>t==="unset"||t==="undefined"||t==="none","isUnsetKeyword");o(yC,"iconToSVG")});function vC(t,e=k2e){let r=[],n;for(;n=T2e.exec(t);)r.push(n[1]);if(!r.length)return t;let i="suffix"+(Math.random()*16777216|Date.now()).toString(16);return r.forEach(a=>{let s=typeof e=="function"?e(a):e+(E2e++).toString(),l=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+l+')([")]|\\.[a-z])',"g"),"$1"+s+i+"$3")}),t=t.replace(new RegExp(i,"g"),""),t}var T2e,k2e,E2e,DF=M(()=>{"use strict";T2e=/\sid="(\S+)"/g,k2e="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),E2e=0;o(vC,"replaceIDs")});function xC(t,e){let r=t.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(let n in e)r+=" "+n+'="'+e[n]+'"';return'"+t+""}var LF=M(()=>{"use strict";o(xC,"iconToHTML")});var NF=Ni((int,RF)=>{"use strict";var Qp=1e3,Zp=Qp*60,Jp=Zp*60,Vf=Jp*24,S2e=Vf*7,C2e=Vf*365.25;RF.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return A2e(t);if(r==="number"&&isFinite(t))return e.long?D2e(t):_2e(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function A2e(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*C2e;case"weeks":case"week":case"w":return r*S2e;case"days":case"day":case"d":return r*Vf;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Jp;case"minutes":case"minute":case"mins":case"min":case"m":return r*Zp;case"seconds":case"second":case"secs":case"sec":case"s":return r*Qp;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}o(A2e,"parse");function _2e(t){var e=Math.abs(t);return e>=Vf?Math.round(t/Vf)+"d":e>=Jp?Math.round(t/Jp)+"h":e>=Zp?Math.round(t/Zp)+"m":e>=Qp?Math.round(t/Qp)+"s":t+"ms"}o(_2e,"fmtShort");function D2e(t){var e=Math.abs(t);return e>=Vf?w4(t,e,Vf,"day"):e>=Jp?w4(t,e,Jp,"hour"):e>=Zp?w4(t,e,Zp,"minute"):e>=Qp?w4(t,e,Qp,"second"):t+" ms"}o(D2e,"fmtLong");function w4(t,e,r,n){var i=e>=r*1.5;return Math.round(t/r)+" "+n+(i?"s":"")}o(w4,"plural")});var IF=Ni((snt,MF)=>{"use strict";function L2e(t){r.debug=r,r.default=r,r.coerce=u,r.disable=s,r.enable=i,r.enabled=l,r.humanize=NF(),r.destroy=h,Object.keys(t).forEach(f=>{r[f]=t[f]}),r.names=[],r.skips=[],r.formatters={};function e(f){let d=0;for(let p=0;p{if(E==="%%")return"%";C++;let S=r.formatters[A];if(typeof S=="function"){let _=v[C];E=S.call(x,_),v.splice(C,1),C--}return E}),r.formatArgs.call(x,v),(x.log||r.log).apply(x,v)}return o(y,"debug"),y.namespace=f,y.useColors=r.useColors(),y.color=r.selectColor(f),y.extend=n,y.destroy=r.destroy,Object.defineProperty(y,"enabled",{enumerable:!0,configurable:!1,get:o(()=>p!==null?p:(m!==r.namespaces&&(m=r.namespaces,g=r.enabled(f)),g),"get"),set:o(v=>{p=v},"set")}),typeof r.init=="function"&&r.init(y),y}o(r,"createDebug");function n(f,d){let p=r(this.namespace+(typeof d>"u"?":":d)+f);return p.log=this.log,p}o(n,"extend");function i(f){r.save(f),r.namespaces=f,r.names=[],r.skips=[];let d=(typeof f=="string"?f:"").trim().replace(" ",",").split(",").filter(Boolean);for(let p of d)p[0]==="-"?r.skips.push(p.slice(1)):r.names.push(p)}o(i,"enable");function a(f,d){let p=0,m=0,g=-1,y=0;for(;p"-"+d)].join(",");return r.enable(""),f}o(s,"disable");function l(f){for(let d of r.skips)if(a(f,d))return!1;for(let d of r.names)if(a(f,d))return!0;return!1}o(l,"enabled");function u(f){return f instanceof Error?f.stack||f.message:f}o(u,"coerce");function h(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return o(h,"destroy"),r.enable(r.load()),r}o(L2e,"setup");MF.exports=L2e});var OF=Ni(($s,T4)=>{"use strict";$s.formatArgs=N2e;$s.save=M2e;$s.load=I2e;$s.useColors=R2e;$s.storage=O2e();$s.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();$s.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function R2e(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let t;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}o(R2e,"useColors");function N2e(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+T4.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let r=0,n=0;t[0].replace(/%[a-zA-Z%]/g,i=>{i!=="%%"&&(r++,i==="%c"&&(n=r))}),t.splice(n,0,e)}o(N2e,"formatArgs");$s.log=console.debug||console.log||(()=>{});function M2e(t){try{t?$s.storage.setItem("debug",t):$s.storage.removeItem("debug")}catch{}}o(M2e,"save");function I2e(){let t;try{t=$s.storage.getItem("debug")}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}o(I2e,"load");function O2e(){try{return localStorage}catch{}}o(O2e,"localstorage");T4.exports=IF()($s);var{formatters:P2e}=T4.exports;P2e.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var unt,PF=M(()=>{"use strict";yF();EF();_F();DF();LF();unt=Ta(OF(),1)});var wC,bC,BF,k4,B2e,yo,Zc=M(()=>{"use strict";vt();PF();wC={body:'?',height:80,width:80},bC=new Map,BF=new Map,k4=o(t=>{for(let e of t){if(!e.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(Y.debug("Registering icon pack:",e.name),"loader"in e)BF.set(e.name,e.loader);else if("icons"in e)bC.set(e.name,e.icons);else throw Y.error("Invalid icon loader:",e),new Error('Invalid icon loader. Must have either "icons" or "loader" property.')}},"registerIconPacks"),B2e=o(async(t,e)=>{let r=dC(t,!0,e!==void 0);if(!r)throw new Error(`Invalid icon name: ${t}`);let n=r.prefix||e;if(!n)throw new Error(`Icon name must contain a prefix: ${t}`);let i=bC.get(n);if(!i){let s=BF.get(n);if(!s)throw new Error(`Icon set not found: ${r.prefix}`);try{i={...await s(),prefix:n},bC.set(n,i)}catch(l){throw Y.error(l),new Error(`Failed to load icon set: ${r.prefix}`)}}let a=mC(i,r.name);if(!a)throw new Error(`Icon not found: ${t}`);return a},"getRegisteredIconData"),yo=o(async(t,e)=>{let r;try{r=await B2e(t,e?.fallbackPrefix)}catch(a){Y.error(a),r=wC}let n=yC(r,e);return xC(vC(n.body),n.attributes)},"getIconSVG")});function E4(t){for(var e=[],r=1;r{"use strict";o(Ib,"dedent")});var Ob,zf,jF,Pb=M(()=>{"use strict";Ob=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,zf=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,jF=/\s*%%.*\n/gm});var rp,IS=M(()=>{"use strict";rp=class extends Error{static{o(this,"UnknownDiagramError")}constructor(e){super(e),this.name="UnknownDiagramError"}}});var Gf,np,Bb,OS,KF,$f=M(()=>{"use strict";ht();Pb();IS();Gf={},np=o(function(t,e){t=t.replace(Ob,"").replace(zf,"").replace(jF,` -`);for(let[r,{detector:n}]of Object.entries(Gf))if(n(t,e))return r;throw new rp(`No diagram type detected matching given configuration for text: ${t}`)},"detectType"),Bb=o((...t)=>{for(let{id:e,detector:r,loader:n}of t)OS(e,r,n)},"registerLazyLoadedDiagrams"),OS=o((t,e,r)=>{Gf[t]&&Y.warn(`Detector with key ${t} already exists. Overwriting.`),Gf[t]={detector:e,loader:r},Y.debug(`Detector with key ${t} added${r?" with loader":""}`)},"addDetector"),KF=o(t=>Gf[t].loader,"getDiagramLoader")});var I1,QF,PS=M(()=>{"use strict";I1=function(){var t=o(function(He,xe,X,fe){for(X=X||{},fe=He.length;fe--;X[He[fe]]=xe);return X},"o"),e=[1,24],r=[1,25],n=[1,26],i=[1,27],a=[1,28],s=[1,63],l=[1,64],u=[1,65],h=[1,66],f=[1,67],d=[1,68],p=[1,69],m=[1,29],g=[1,30],y=[1,31],v=[1,32],x=[1,33],b=[1,34],w=[1,35],_=[1,36],T=[1,37],E=[1,38],L=[1,39],C=[1,40],A=[1,41],I=[1,42],D=[1,43],k=[1,44],R=[1,45],S=[1,46],O=[1,47],N=[1,48],P=[1,50],F=[1,51],B=[1,52],$=[1,53],z=[1,54],W=[1,55],j=[1,56],K=[1,57],ie=[1,58],Q=[1,59],ee=[1,60],J=[14,42],H=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],q=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Z=[1,82],ae=[1,83],ue=[1,84],ce=[1,85],te=[12,14,42],De=[12,14,33,42],oe=[12,14,33,42,76,77,79,80],ke=[12,33],Fe=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Be={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:o(function(xe,X,fe,he,ge,ne,ye){var U=ne.length-1;switch(ge){case 3:he.setDirection("TB");break;case 4:he.setDirection("BT");break;case 5:he.setDirection("RL");break;case 6:he.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:he.setC4Type(ne[U-3]);break;case 19:he.setTitle(ne[U].substring(6)),this.$=ne[U].substring(6);break;case 20:he.setAccDescription(ne[U].substring(15)),this.$=ne[U].substring(15);break;case 21:this.$=ne[U].trim(),he.setTitle(this.$);break;case 22:case 23:this.$=ne[U].trim(),he.setAccDescription(this.$);break;case 28:ne[U].splice(2,0,"ENTERPRISE"),he.addPersonOrSystemBoundary(...ne[U]),this.$=ne[U];break;case 29:ne[U].splice(2,0,"SYSTEM"),he.addPersonOrSystemBoundary(...ne[U]),this.$=ne[U];break;case 30:he.addPersonOrSystemBoundary(...ne[U]),this.$=ne[U];break;case 31:ne[U].splice(2,0,"CONTAINER"),he.addContainerBoundary(...ne[U]),this.$=ne[U];break;case 32:he.addDeploymentNode("node",...ne[U]),this.$=ne[U];break;case 33:he.addDeploymentNode("nodeL",...ne[U]),this.$=ne[U];break;case 34:he.addDeploymentNode("nodeR",...ne[U]),this.$=ne[U];break;case 35:he.popBoundaryParseStack();break;case 39:he.addPersonOrSystem("person",...ne[U]),this.$=ne[U];break;case 40:he.addPersonOrSystem("external_person",...ne[U]),this.$=ne[U];break;case 41:he.addPersonOrSystem("system",...ne[U]),this.$=ne[U];break;case 42:he.addPersonOrSystem("system_db",...ne[U]),this.$=ne[U];break;case 43:he.addPersonOrSystem("system_queue",...ne[U]),this.$=ne[U];break;case 44:he.addPersonOrSystem("external_system",...ne[U]),this.$=ne[U];break;case 45:he.addPersonOrSystem("external_system_db",...ne[U]),this.$=ne[U];break;case 46:he.addPersonOrSystem("external_system_queue",...ne[U]),this.$=ne[U];break;case 47:he.addContainer("container",...ne[U]),this.$=ne[U];break;case 48:he.addContainer("container_db",...ne[U]),this.$=ne[U];break;case 49:he.addContainer("container_queue",...ne[U]),this.$=ne[U];break;case 50:he.addContainer("external_container",...ne[U]),this.$=ne[U];break;case 51:he.addContainer("external_container_db",...ne[U]),this.$=ne[U];break;case 52:he.addContainer("external_container_queue",...ne[U]),this.$=ne[U];break;case 53:he.addComponent("component",...ne[U]),this.$=ne[U];break;case 54:he.addComponent("component_db",...ne[U]),this.$=ne[U];break;case 55:he.addComponent("component_queue",...ne[U]),this.$=ne[U];break;case 56:he.addComponent("external_component",...ne[U]),this.$=ne[U];break;case 57:he.addComponent("external_component_db",...ne[U]),this.$=ne[U];break;case 58:he.addComponent("external_component_queue",...ne[U]),this.$=ne[U];break;case 60:he.addRel("rel",...ne[U]),this.$=ne[U];break;case 61:he.addRel("birel",...ne[U]),this.$=ne[U];break;case 62:he.addRel("rel_u",...ne[U]),this.$=ne[U];break;case 63:he.addRel("rel_d",...ne[U]),this.$=ne[U];break;case 64:he.addRel("rel_l",...ne[U]),this.$=ne[U];break;case 65:he.addRel("rel_r",...ne[U]),this.$=ne[U];break;case 66:he.addRel("rel_b",...ne[U]),this.$=ne[U];break;case 67:ne[U].splice(0,1),he.addRel("rel",...ne[U]),this.$=ne[U];break;case 68:he.updateElStyle("update_el_style",...ne[U]),this.$=ne[U];break;case 69:he.updateRelStyle("update_rel_style",...ne[U]),this.$=ne[U];break;case 70:he.updateLayoutConfig("update_layout_config",...ne[U]),this.$=ne[U];break;case 71:this.$=[ne[U]];break;case 72:ne[U].unshift(ne[U-1]),this.$=ne[U];break;case 73:case 75:this.$=ne[U].trim();break;case 74:let Te={};Te[ne[U-1].trim()]=ne[U].trim(),this.$=Te;break;case 76:this.$="";break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:_,52:T,53:E,54:L,55:C,56:A,57:I,58:D,59:k,60:R,61:S,62:O,63:N,64:P,65:F,66:B,67:$,68:z,69:W,70:j,71:K,72:ie,73:Q,74:ee},{13:70,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:_,52:T,53:E,54:L,55:C,56:A,57:I,58:D,59:k,60:R,61:S,62:O,63:N,64:P,65:F,66:B,67:$,68:z,69:W,70:j,71:K,72:ie,73:Q,74:ee},{13:71,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:_,52:T,53:E,54:L,55:C,56:A,57:I,58:D,59:k,60:R,61:S,62:O,63:N,64:P,65:F,66:B,67:$,68:z,69:W,70:j,71:K,72:ie,73:Q,74:ee},{13:72,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:_,52:T,53:E,54:L,55:C,56:A,57:I,58:D,59:k,60:R,61:S,62:O,63:N,64:P,65:F,66:B,67:$,68:z,69:W,70:j,71:K,72:ie,73:Q,74:ee},{13:73,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:_,52:T,53:E,54:L,55:C,56:A,57:I,58:D,59:k,60:R,61:S,62:O,63:N,64:P,65:F,66:B,67:$,68:z,69:W,70:j,71:K,72:ie,73:Q,74:ee},{14:[1,74]},t(J,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:l,37:u,38:h,39:f,40:d,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:_,52:T,53:E,54:L,55:C,56:A,57:I,58:D,59:k,60:R,61:S,62:O,63:N,64:P,65:F,66:B,67:$,68:z,69:W,70:j,71:K,72:ie,73:Q,74:ee}),t(J,[2,14]),t(H,[2,16],{12:[1,76]}),t(J,[2,36],{12:[1,77]}),t(q,[2,19]),t(q,[2,20]),{25:[1,78]},{27:[1,79]},t(q,[2,23]),{35:80,75:81,76:Z,77:ae,79:ue,80:ce},{35:86,75:81,76:Z,77:ae,79:ue,80:ce},{35:87,75:81,76:Z,77:ae,79:ue,80:ce},{35:88,75:81,76:Z,77:ae,79:ue,80:ce},{35:89,75:81,76:Z,77:ae,79:ue,80:ce},{35:90,75:81,76:Z,77:ae,79:ue,80:ce},{35:91,75:81,76:Z,77:ae,79:ue,80:ce},{35:92,75:81,76:Z,77:ae,79:ue,80:ce},{35:93,75:81,76:Z,77:ae,79:ue,80:ce},{35:94,75:81,76:Z,77:ae,79:ue,80:ce},{35:95,75:81,76:Z,77:ae,79:ue,80:ce},{35:96,75:81,76:Z,77:ae,79:ue,80:ce},{35:97,75:81,76:Z,77:ae,79:ue,80:ce},{35:98,75:81,76:Z,77:ae,79:ue,80:ce},{35:99,75:81,76:Z,77:ae,79:ue,80:ce},{35:100,75:81,76:Z,77:ae,79:ue,80:ce},{35:101,75:81,76:Z,77:ae,79:ue,80:ce},{35:102,75:81,76:Z,77:ae,79:ue,80:ce},{35:103,75:81,76:Z,77:ae,79:ue,80:ce},{35:104,75:81,76:Z,77:ae,79:ue,80:ce},t(te,[2,59]),{35:105,75:81,76:Z,77:ae,79:ue,80:ce},{35:106,75:81,76:Z,77:ae,79:ue,80:ce},{35:107,75:81,76:Z,77:ae,79:ue,80:ce},{35:108,75:81,76:Z,77:ae,79:ue,80:ce},{35:109,75:81,76:Z,77:ae,79:ue,80:ce},{35:110,75:81,76:Z,77:ae,79:ue,80:ce},{35:111,75:81,76:Z,77:ae,79:ue,80:ce},{35:112,75:81,76:Z,77:ae,79:ue,80:ce},{35:113,75:81,76:Z,77:ae,79:ue,80:ce},{35:114,75:81,76:Z,77:ae,79:ue,80:ce},{35:115,75:81,76:Z,77:ae,79:ue,80:ce},{20:116,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:_,52:T,53:E,54:L,55:C,56:A,57:I,58:D,59:k,60:R,61:S,62:O,63:N,64:P,65:F,66:B,67:$,68:z,69:W,70:j,71:K,72:ie,73:Q,74:ee},{12:[1,118],33:[1,117]},{35:119,75:81,76:Z,77:ae,79:ue,80:ce},{35:120,75:81,76:Z,77:ae,79:ue,80:ce},{35:121,75:81,76:Z,77:ae,79:ue,80:ce},{35:122,75:81,76:Z,77:ae,79:ue,80:ce},{35:123,75:81,76:Z,77:ae,79:ue,80:ce},{35:124,75:81,76:Z,77:ae,79:ue,80:ce},{35:125,75:81,76:Z,77:ae,79:ue,80:ce},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},t(J,[2,15]),t(H,[2,17],{21:22,19:130,22:e,23:r,24:n,26:i,28:a}),t(J,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:e,23:r,24:n,26:i,28:a,34:s,36:l,37:u,38:h,39:f,40:d,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:_,52:T,53:E,54:L,55:C,56:A,57:I,58:D,59:k,60:R,61:S,62:O,63:N,64:P,65:F,66:B,67:$,68:z,69:W,70:j,71:K,72:ie,73:Q,74:ee}),t(q,[2,21]),t(q,[2,22]),t(te,[2,39]),t(De,[2,71],{75:81,35:132,76:Z,77:ae,79:ue,80:ce}),t(oe,[2,73]),{78:[1,133]},t(oe,[2,75]),t(oe,[2,76]),t(te,[2,40]),t(te,[2,41]),t(te,[2,42]),t(te,[2,43]),t(te,[2,44]),t(te,[2,45]),t(te,[2,46]),t(te,[2,47]),t(te,[2,48]),t(te,[2,49]),t(te,[2,50]),t(te,[2,51]),t(te,[2,52]),t(te,[2,53]),t(te,[2,54]),t(te,[2,55]),t(te,[2,56]),t(te,[2,57]),t(te,[2,58]),t(te,[2,60]),t(te,[2,61]),t(te,[2,62]),t(te,[2,63]),t(te,[2,64]),t(te,[2,65]),t(te,[2,66]),t(te,[2,67]),t(te,[2,68]),t(te,[2,69]),t(te,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},t(ke,[2,28]),t(ke,[2,29]),t(ke,[2,30]),t(ke,[2,31]),t(ke,[2,32]),t(ke,[2,33]),t(ke,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},t(H,[2,18]),t(J,[2,38]),t(De,[2,72]),t(oe,[2,74]),t(te,[2,24]),t(te,[2,35]),t(Fe,[2,25]),t(Fe,[2,26],{12:[1,138]}),t(Fe,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:o(function(xe,X){if(X.recoverable)this.trace(xe);else{var fe=new Error(xe);throw fe.hash=X,fe}},"parseError"),parse:o(function(xe){var X=this,fe=[0],he=[],ge=[null],ne=[],ye=this.table,U="",Te=0,se=0,Ee=0,Ae=2,Pe=1,Me=ne.slice.call(arguments,1),me=Object.create(this.lexer),We={yy:{}};for(var Re in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Re)&&(We.yy[Re]=this.yy[Re]);me.setInput(xe,We.yy),We.yy.lexer=me,We.yy.parser=this,typeof me.yylloc>"u"&&(me.yylloc={});var tt=me.yylloc;ne.push(tt);var gt=me.options&&me.options.ranges;typeof We.yy.parseError=="function"?this.parseError=We.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Et(zt){fe.length=fe.length-2*zt,ge.length=ge.length-zt,ne.length=ne.length-zt}o(Et,"popStack");function vt(){var zt;return zt=he.pop()||me.lex()||Pe,typeof zt!="number"&&(zt instanceof Array&&(he=zt,zt=he.pop()),zt=X.symbols_[zt]||zt),zt}o(vt,"lex");for(var Ye,Tt,$e,rt,ft,kt,er={},dt,Xe,ct,Lt;;){if($e=fe[fe.length-1],this.defaultActions[$e]?rt=this.defaultActions[$e]:((Ye===null||typeof Ye>"u")&&(Ye=vt()),rt=ye[$e]&&ye[$e][Ye]),typeof rt>"u"||!rt.length||!rt[0]){var Rt="";Lt=[];for(dt in ye[$e])this.terminals_[dt]&&dt>Ae&&Lt.push("'"+this.terminals_[dt]+"'");me.showPosition?Rt="Parse error on line "+(Te+1)+`: -`+me.showPosition()+` -Expecting `+Lt.join(", ")+", got '"+(this.terminals_[Ye]||Ye)+"'":Rt="Parse error on line "+(Te+1)+": Unexpected "+(Ye==Pe?"end of input":"'"+(this.terminals_[Ye]||Ye)+"'"),this.parseError(Rt,{text:me.match,token:this.terminals_[Ye]||Ye,line:me.yylineno,loc:tt,expected:Lt})}if(rt[0]instanceof Array&&rt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+$e+", token: "+Ye);switch(rt[0]){case 1:fe.push(Ye),ge.push(me.yytext),ne.push(me.yylloc),fe.push(rt[1]),Ye=null,Tt?(Ye=Tt,Tt=null):(se=me.yyleng,U=me.yytext,Te=me.yylineno,tt=me.yylloc,Ee>0&&Ee--);break;case 2:if(Xe=this.productions_[rt[1]][1],er.$=ge[ge.length-Xe],er._$={first_line:ne[ne.length-(Xe||1)].first_line,last_line:ne[ne.length-1].last_line,first_column:ne[ne.length-(Xe||1)].first_column,last_column:ne[ne.length-1].last_column},gt&&(er._$.range=[ne[ne.length-(Xe||1)].range[0],ne[ne.length-1].range[1]]),kt=this.performAction.apply(er,[U,se,Te,We.yy,rt[1],ge,ne].concat(Me)),typeof kt<"u")return kt;Xe&&(fe=fe.slice(0,-1*Xe*2),ge=ge.slice(0,-1*Xe),ne=ne.slice(0,-1*Xe)),fe.push(this.productions_[rt[1]][0]),ge.push(er.$),ne.push(er._$),ct=ye[fe[fe.length-2]][fe[fe.length-1]],fe.push(ct);break;case 3:return!0}}return!0},"parse")},Ve=function(){var He={EOF:1,parseError:o(function(X,fe){if(this.yy.parser)this.yy.parser.parseError(X,fe);else throw new Error(X)},"parseError"),setInput:o(function(xe,X){return this.yy=X||this.yy||{},this._input=xe,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var xe=this._input[0];this.yytext+=xe,this.yyleng++,this.offset++,this.match+=xe,this.matched+=xe;var X=xe.match(/(?:\r\n?|\n).*/g);return X?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),xe},"input"),unput:o(function(xe){var X=xe.length,fe=xe.split(/(?:\r\n?|\n)/g);this._input=xe+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-X),this.offset-=X;var he=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),fe.length-1&&(this.yylineno-=fe.length-1);var ge=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:fe?(fe.length===he.length?this.yylloc.first_column:0)+he[he.length-fe.length].length-fe[0].length:this.yylloc.first_column-X},this.options.ranges&&(this.yylloc.range=[ge[0],ge[0]+this.yyleng-X]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(xe){this.unput(this.match.slice(xe))},"less"),pastInput:o(function(){var xe=this.matched.substr(0,this.matched.length-this.match.length);return(xe.length>20?"...":"")+xe.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var xe=this.match;return xe.length<20&&(xe+=this._input.substr(0,20-xe.length)),(xe.substr(0,20)+(xe.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var xe=this.pastInput(),X=new Array(xe.length+1).join("-");return xe+this.upcomingInput()+` -`+X+"^"},"showPosition"),test_match:o(function(xe,X){var fe,he,ge;if(this.options.backtrack_lexer&&(ge={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ge.yylloc.range=this.yylloc.range.slice(0))),he=xe[0].match(/(?:\r\n?|\n).*/g),he&&(this.yylineno+=he.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:he?he[he.length-1].length-he[he.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+xe[0].length},this.yytext+=xe[0],this.match+=xe[0],this.matches=xe,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(xe[0].length),this.matched+=xe[0],fe=this.performAction.call(this,this.yy,this,X,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),fe)return fe;if(this._backtrack){for(var ne in ge)this[ne]=ge[ne];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var xe,X,fe,he;this._more||(this.yytext="",this.match="");for(var ge=this._currentRules(),ne=0;neX[0].length)){if(X=fe,he=ne,this.options.backtrack_lexer){if(xe=this.test_match(fe,ge[ne]),xe!==!1)return xe;if(this._backtrack){X=!1;continue}else return!1}else if(!this.options.flex)break}return X?(xe=this.test_match(X,ge[he]),xe!==!1?xe:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var X=this.next();return X||this.lex()},"lex"),begin:o(function(X){this.conditionStack.push(X)},"begin"),popState:o(function(){var X=this.conditionStack.length-1;return X>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(X){return X=this.conditionStack.length-1-Math.abs(X||0),X>=0?this.conditionStack[X]:"INITIAL"},"topState"),pushState:o(function(X){this.begin(X)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(X,fe,he,ge){var ne=ge;switch(he){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),26;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;break;case 23:return this.begin("person"),44;break;case 24:return this.begin("system_ext_queue"),51;break;case 25:return this.begin("system_ext_db"),50;break;case 26:return this.begin("system_ext"),49;break;case 27:return this.begin("system_queue"),48;break;case 28:return this.begin("system_db"),47;break;case 29:return this.begin("system"),46;break;case 30:return this.begin("boundary"),37;break;case 31:return this.begin("enterprise_boundary"),34;break;case 32:return this.begin("system_boundary"),36;break;case 33:return this.begin("container_ext_queue"),57;break;case 34:return this.begin("container_ext_db"),56;break;case 35:return this.begin("container_ext"),55;break;case 36:return this.begin("container_queue"),54;break;case 37:return this.begin("container_db"),53;break;case 38:return this.begin("container"),52;break;case 39:return this.begin("container_boundary"),38;break;case 40:return this.begin("component_ext_queue"),63;break;case 41:return this.begin("component_ext_db"),62;break;case 42:return this.begin("component_ext"),61;break;case 43:return this.begin("component_queue"),60;break;case 44:return this.begin("component_db"),59;break;case 45:return this.begin("component"),58;break;case 46:return this.begin("node"),39;break;case 47:return this.begin("node"),39;break;case 48:return this.begin("node_l"),40;break;case 49:return this.begin("node_r"),41;break;case 50:return this.begin("rel"),64;break;case 51:return this.begin("birel"),65;break;case 52:return this.begin("rel_u"),66;break;case 53:return this.begin("rel_u"),66;break;case 54:return this.begin("rel_d"),67;break;case 55:return this.begin("rel_d"),67;break;case 56:return this.begin("rel_l"),68;break;case 57:return this.begin("rel_l"),68;break;case 58:return this.begin("rel_r"),69;break;case 59:return this.begin("rel_r"),69;break;case 60:return this.begin("rel_b"),70;break;case 61:return this.begin("rel_index"),71;break;case 62:return this.begin("update_el_style"),72;break;case 63:return this.begin("update_rel_style"),73;break;case 64:return this.begin("update_layout_config"),74;break;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";break;case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";break;case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return He}();Be.lexer=Ve;function Ge(){this.yy={}}return o(Ge,"Parser"),Ge.prototype=Be,Be.Parser=Ge,new Ge}();I1.parser=I1;QF=I1});var BS,Gn,ip=M(()=>{"use strict";BS=o((t,e,{depth:r=2,clobber:n=!1}={})=>{let i={depth:r,clobber:n};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(a=>BS(t,a,i)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(a=>{t.includes(a)||t.push(a)}),t):t===void 0||r<=0?t!=null&&typeof t=="object"&&typeof e=="object"?Object.assign(t,e):e:(e!==void 0&&typeof t=="object"&&typeof e=="object"&&Object.keys(e).forEach(a=>{typeof e[a]=="object"&&(t[a]===void 0||typeof t[a]=="object")?(t[a]===void 0&&(t[a]=Array.isArray(e[a])?[]:{}),t[a]=BS(t[a],e[a],{depth:r-1,clobber:n})):(n||typeof t[a]!="object"&&typeof e[a]!="object")&&(t[a]=e[a])}),t)},"assignWithDepth"),Gn=BS});var Fb,ZF,JF=M(()=>{"use strict";Fb={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:o(t=>t>=255?255:t<0?0:t,"r"),g:o(t=>t>=255?255:t<0?0:t,"g"),b:o(t=>t>=255?255:t<0?0:t,"b"),h:o(t=>t%360,"h"),s:o(t=>t>=100?100:t<0?0:t,"s"),l:o(t=>t>=100?100:t<0?0:t,"l"),a:o(t=>t>=1?1:t<0?0:t,"a")},toLinear:o(t=>{let e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},"toLinear"),hue2rgb:o((t,e,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<.16666666666666666?t+(e-t)*6*r:r<.5?e:r<.6666666666666666?t+(e-t)*(.6666666666666666-r)*6:t),"hue2rgb"),hsl2rgb:o(({h:t,s:e,l:r},n)=>{if(!e)return r*2.55;t/=360,e/=100,r/=100;let i=r<.5?r*(1+e):r+e-r*e,a=2*r-i;switch(n){case"r":return Fb.hue2rgb(a,i,t+.3333333333333333)*255;case"g":return Fb.hue2rgb(a,i,t)*255;case"b":return Fb.hue2rgb(a,i,t-.3333333333333333)*255}},"hsl2rgb"),rgb2hsl:o(({r:t,g:e,b:r},n)=>{t/=255,e/=255,r/=255;let i=Math.max(t,e,r),a=Math.min(t,e,r),s=(i+a)/2;if(n==="l")return s*100;if(i===a)return 0;let l=i-a,u=s>.5?l/(2-i-a):l/(i+a);if(n==="s")return u*100;switch(i){case t:return((e-r)/l+(e{"use strict";Fxe={clamp:o((t,e,r)=>e>r?Math.min(e,Math.max(r,t)):Math.min(r,Math.max(e,t)),"clamp"),round:o(t=>Math.round(t*1e10)/1e10,"round")},ez=Fxe});var zxe,rz,nz=M(()=>{"use strict";zxe={dec2hex:o(t=>{let e=Math.round(t).toString(16);return e.length>1?e:`0${e}`},"dec2hex")},rz=zxe});var Gxe,Yt,jl=M(()=>{"use strict";JF();tz();nz();Gxe={channel:ZF,lang:ez,unit:rz},Yt=Gxe});var Qc,Ri,O1=M(()=>{"use strict";jl();Qc={};for(let t=0;t<=255;t++)Qc[t]=Yt.unit.dec2hex(t);Ri={ALL:0,RGB:1,HSL:2}});var FS,iz,az=M(()=>{"use strict";O1();FS=class{static{o(this,"Type")}constructor(){this.type=Ri.ALL}get(){return this.type}set(e){if(this.type&&this.type!==e)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=e}reset(){this.type=Ri.ALL}is(e){return this.type===e}},iz=FS});var zS,sz,oz=M(()=>{"use strict";jl();az();O1();zS=class{static{o(this,"Channels")}constructor(e,r){this.color=r,this.changed=!1,this.data=e,this.type=new iz}set(e,r){return this.color=r,this.changed=!1,this.data=e,this.type.type=Ri.ALL,this}_ensureHSL(){let e=this.data,{h:r,s:n,l:i}=e;r===void 0&&(e.h=Yt.channel.rgb2hsl(e,"h")),n===void 0&&(e.s=Yt.channel.rgb2hsl(e,"s")),i===void 0&&(e.l=Yt.channel.rgb2hsl(e,"l"))}_ensureRGB(){let e=this.data,{r,g:n,b:i}=e;r===void 0&&(e.r=Yt.channel.hsl2rgb(e,"r")),n===void 0&&(e.g=Yt.channel.hsl2rgb(e,"g")),i===void 0&&(e.b=Yt.channel.hsl2rgb(e,"b"))}get r(){let e=this.data,r=e.r;return!this.type.is(Ri.HSL)&&r!==void 0?r:(this._ensureHSL(),Yt.channel.hsl2rgb(e,"r"))}get g(){let e=this.data,r=e.g;return!this.type.is(Ri.HSL)&&r!==void 0?r:(this._ensureHSL(),Yt.channel.hsl2rgb(e,"g"))}get b(){let e=this.data,r=e.b;return!this.type.is(Ri.HSL)&&r!==void 0?r:(this._ensureHSL(),Yt.channel.hsl2rgb(e,"b"))}get h(){let e=this.data,r=e.h;return!this.type.is(Ri.RGB)&&r!==void 0?r:(this._ensureRGB(),Yt.channel.rgb2hsl(e,"h"))}get s(){let e=this.data,r=e.s;return!this.type.is(Ri.RGB)&&r!==void 0?r:(this._ensureRGB(),Yt.channel.rgb2hsl(e,"s"))}get l(){let e=this.data,r=e.l;return!this.type.is(Ri.RGB)&&r!==void 0?r:(this._ensureRGB(),Yt.channel.rgb2hsl(e,"l"))}get a(){return this.data.a}set r(e){this.type.set(Ri.RGB),this.changed=!0,this.data.r=e}set g(e){this.type.set(Ri.RGB),this.changed=!0,this.data.g=e}set b(e){this.type.set(Ri.RGB),this.changed=!0,this.data.b=e}set h(e){this.type.set(Ri.HSL),this.changed=!0,this.data.h=e}set s(e){this.type.set(Ri.HSL),this.changed=!0,this.data.s=e}set l(e){this.type.set(Ri.HSL),this.changed=!0,this.data.l=e}set a(e){this.changed=!0,this.data.a=e}},sz=zS});var $xe,th,P1=M(()=>{"use strict";oz();$xe=new sz({r:0,g:0,b:0,a:0},"transparent"),th=$xe});var lz,Vf,GS=M(()=>{"use strict";P1();O1();lz={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:o(t=>{if(t.charCodeAt(0)!==35)return;let e=t.match(lz.re);if(!e)return;let r=e[1],n=parseInt(r,16),i=r.length,a=i%4===0,s=i>4,l=s?1:17,u=s?8:4,h=a?0:-1,f=s?255:15;return th.set({r:(n>>u*(h+3)&f)*l,g:(n>>u*(h+2)&f)*l,b:(n>>u*(h+1)&f)*l,a:a?(n&f)*l/255:1},t)},"parse"),stringify:o(t=>{let{r:e,g:r,b:n,a:i}=t;return i<1?`#${Qc[Math.round(e)]}${Qc[Math.round(r)]}${Qc[Math.round(n)]}${Qc[Math.round(i*255)]}`:`#${Qc[Math.round(e)]}${Qc[Math.round(r)]}${Qc[Math.round(n)]}`},"stringify")},Vf=lz});var zb,B1,cz=M(()=>{"use strict";jl();P1();zb={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:o(t=>{let e=t.match(zb.hueRe);if(e){let[,r,n]=e;switch(n){case"grad":return Yt.channel.clamp.h(parseFloat(r)*.9);case"rad":return Yt.channel.clamp.h(parseFloat(r)*180/Math.PI);case"turn":return Yt.channel.clamp.h(parseFloat(r)*360)}}return Yt.channel.clamp.h(parseFloat(t))},"_hue2deg"),parse:o(t=>{let e=t.charCodeAt(0);if(e!==104&&e!==72)return;let r=t.match(zb.re);if(!r)return;let[,n,i,a,s,l]=r;return th.set({h:zb._hue2deg(n),s:Yt.channel.clamp.s(parseFloat(i)),l:Yt.channel.clamp.l(parseFloat(a)),a:s?Yt.channel.clamp.a(l?parseFloat(s)/100:parseFloat(s)):1},t)},"parse"),stringify:o(t=>{let{h:e,s:r,l:n,a:i}=t;return i<1?`hsla(${Yt.lang.round(e)}, ${Yt.lang.round(r)}%, ${Yt.lang.round(n)}%, ${i})`:`hsl(${Yt.lang.round(e)}, ${Yt.lang.round(r)}%, ${Yt.lang.round(n)}%)`},"stringify")},B1=zb});var Gb,$S,uz=M(()=>{"use strict";GS();Gb={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:o(t=>{t=t.toLowerCase();let e=Gb.colors[t];if(e)return Vf.parse(e)},"parse"),stringify:o(t=>{let e=Vf.stringify(t);for(let r in Gb.colors)if(Gb.colors[r]===e)return r},"stringify")},$S=Gb});var hz,F1,fz=M(()=>{"use strict";jl();P1();hz={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:o(t=>{let e=t.charCodeAt(0);if(e!==114&&e!==82)return;let r=t.match(hz.re);if(!r)return;let[,n,i,a,s,l,u,h,f]=r;return th.set({r:Yt.channel.clamp.r(i?parseFloat(n)*2.55:parseFloat(n)),g:Yt.channel.clamp.g(s?parseFloat(a)*2.55:parseFloat(a)),b:Yt.channel.clamp.b(u?parseFloat(l)*2.55:parseFloat(l)),a:h?Yt.channel.clamp.a(f?parseFloat(h)/100:parseFloat(h)):1},t)},"parse"),stringify:o(t=>{let{r:e,g:r,b:n,a:i}=t;return i<1?`rgba(${Yt.lang.round(e)}, ${Yt.lang.round(r)}, ${Yt.lang.round(n)}, ${Yt.lang.round(i)})`:`rgb(${Yt.lang.round(e)}, ${Yt.lang.round(r)}, ${Yt.lang.round(n)})`},"stringify")},F1=hz});var Vxe,Mi,Zc=M(()=>{"use strict";GS();cz();uz();fz();O1();Vxe={format:{keyword:$S,hex:Vf,rgb:F1,rgba:F1,hsl:B1,hsla:B1},parse:o(t=>{if(typeof t!="string")return t;let e=Vf.parse(t)||F1.parse(t)||B1.parse(t)||$S.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},"parse"),stringify:o(t=>!t.changed&&t.color?t.color:t.type.is(Ri.HSL)||t.data.r===void 0?B1.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?F1.stringify(t):Vf.stringify(t),"stringify")},Mi=Vxe});var Uxe,$b,VS=M(()=>{"use strict";jl();Zc();Uxe=o((t,e)=>{let r=Mi.parse(t);for(let n in e)r[n]=Yt.channel.clamp[n](e[n]);return Mi.stringify(r)},"change"),$b=Uxe});var Hxe,Hs,US=M(()=>{"use strict";jl();P1();Zc();VS();Hxe=o((t,e,r=0,n=1)=>{if(typeof t!="number")return $b(t,{a:e});let i=th.set({r:Yt.channel.clamp.r(t),g:Yt.channel.clamp.g(e),b:Yt.channel.clamp.b(r),a:Yt.channel.clamp.a(n)});return Mi.stringify(i)},"rgba"),Hs=Hxe});var Wxe,z1,dz=M(()=>{"use strict";jl();Zc();Wxe=o((t,e)=>Yt.lang.round(Mi.parse(t)[e]),"channel"),z1=Wxe});var Yxe,pz,mz=M(()=>{"use strict";jl();Zc();Yxe=o(t=>{let{r:e,g:r,b:n}=Mi.parse(t),i=.2126*Yt.channel.toLinear(e)+.7152*Yt.channel.toLinear(r)+.0722*Yt.channel.toLinear(n);return Yt.lang.round(i)},"luminance"),pz=Yxe});var qxe,gz,yz=M(()=>{"use strict";mz();qxe=o(t=>pz(t)>=.5,"isLight"),gz=qxe});var Xxe,aa,vz=M(()=>{"use strict";yz();Xxe=o(t=>!gz(t),"isDark"),aa=Xxe});var jxe,Vb,HS=M(()=>{"use strict";jl();Zc();jxe=o((t,e,r)=>{let n=Mi.parse(t),i=n[e],a=Yt.channel.clamp[e](i+r);return i!==a&&(n[e]=a),Mi.stringify(n)},"adjustChannel"),Vb=jxe});var Kxe,Dt,xz=M(()=>{"use strict";HS();Kxe=o((t,e)=>Vb(t,"l",e),"lighten"),Dt=Kxe});var Qxe,Bt,bz=M(()=>{"use strict";HS();Qxe=o((t,e)=>Vb(t,"l",-e),"darken"),Bt=Qxe});var Zxe,Ne,wz=M(()=>{"use strict";Zc();VS();Zxe=o((t,e)=>{let r=Mi.parse(t),n={};for(let i in e)e[i]&&(n[i]=r[i]+e[i]);return $b(t,n)},"adjust"),Ne=Zxe});var Jxe,Tz,kz=M(()=>{"use strict";Zc();US();Jxe=o((t,e,r=50)=>{let{r:n,g:i,b:a,a:s}=Mi.parse(t),{r:l,g:u,b:h,a:f}=Mi.parse(e),d=r/100,p=d*2-1,m=s-f,y=((p*m===-1?p:(p+m)/(1+p*m))+1)/2,v=1-y,x=n*y+l*v,b=i*y+u*v,w=a*y+h*v,_=s*d+f*(1-d);return Hs(x,b,w,_)},"mix"),Tz=Jxe});var ebe,pt,Ez=M(()=>{"use strict";Zc();kz();ebe=o((t,e=100)=>{let r=Mi.parse(t);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,Tz(r,t,e)},"invert"),pt=ebe});var Sz=M(()=>{"use strict";US();dz();vz();xz();bz();wz();Ez()});var To=M(()=>{"use strict";Sz()});var rh,nh,G1=M(()=>{"use strict";rh="#ffffff",nh="#f2f2f2"});var wi,ap=M(()=>{"use strict";To();wi=o((t,e)=>e?Ne(t,{s:-40,l:10}):Ne(t,{s:-40,l:-10}),"mkBorder")});var WS,Az,_z=M(()=>{"use strict";To();G1();ap();WS=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||Ne(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||Ne(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||wi(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||wi(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||wi(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||pt(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||pt(this.tertiaryColor),this.lineColor=this.lineColor||pt(this.background),this.arrowheadColor=this.arrowheadColor||pt(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Bt(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Bt(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||pt(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Dt(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Ne(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Ne(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Ne(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Ne(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Ne(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Ne(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||Ne(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Ne(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Ne(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},Az=o(t=>{let e=new WS;return e.calculate(t),e},"getThemeVariables")});var YS,Lz,Dz=M(()=>{"use strict";To();ap();YS=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Dt(this.primaryColor,16),this.tertiaryColor=Ne(this.primaryColor,{h:-160}),this.primaryBorderColor=pt(this.background),this.secondaryBorderColor=wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=wi(this.tertiaryColor,this.darkMode),this.primaryTextColor=pt(this.primaryColor),this.secondaryTextColor=pt(this.secondaryColor),this.tertiaryTextColor=pt(this.tertiaryColor),this.lineColor=pt(this.background),this.textColor=pt(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Dt(pt("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=Hs(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=Bt("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=Bt(this.sectionBkgColor,10),this.taskBorderColor=Hs(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=Hs(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=Dt(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=Dt(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=Dt(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=Ne(this.primaryColor,{h:64}),this.fillType3=Ne(this.secondaryColor,{h:64}),this.fillType4=Ne(this.primaryColor,{h:-64}),this.fillType5=Ne(this.secondaryColor,{h:-64}),this.fillType6=Ne(this.primaryColor,{h:128}),this.fillType7=Ne(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Ne(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Ne(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Ne(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Ne(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Ne(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Ne(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Ne(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Ne(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Ne(this.primaryColor,{h:330});for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},Lz=o(t=>{let e=new YS;return e.calculate(t),e},"getThemeVariables")});var qS,sp,Ub=M(()=>{"use strict";To();ap();G1();qS=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=Ne(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=Ne(this.primaryColor,{h:-160}),this.primaryBorderColor=wi(this.primaryColor,this.darkMode),this.secondaryBorderColor=wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=wi(this.tertiaryColor,this.darkMode),this.primaryTextColor=pt(this.primaryColor),this.secondaryTextColor=pt(this.secondaryColor),this.tertiaryTextColor=pt(this.tertiaryColor),this.lineColor=pt(this.background),this.textColor=pt(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=Hs(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Ne(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Ne(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Ne(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Ne(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Ne(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Ne(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Ne(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Ne(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Ne(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Bt(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Bt(this.tertiaryColor,40);for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},sp=o(t=>{let e=new qS;return e.calculate(t),e},"getThemeVariables")});var XS,Nz,Rz=M(()=>{"use strict";To();G1();ap();XS=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=Dt("#cde498",10),this.primaryBorderColor=wi(this.primaryColor,this.darkMode),this.secondaryBorderColor=wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=wi(this.tertiaryColor,this.darkMode),this.primaryTextColor=pt(this.primaryColor),this.secondaryTextColor=pt(this.secondaryColor),this.tertiaryTextColor=pt(this.primaryColor),this.lineColor=pt(this.background),this.textColor=pt(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=Bt(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Ne(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Ne(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Ne(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Ne(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Ne(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Ne(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Ne(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Ne(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Ne(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Bt(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Bt(this.tertiaryColor,40);for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},Nz=o(t=>{let e=new XS;return e.calculate(t),e},"getThemeVariables")});var jS,Mz,Iz=M(()=>{"use strict";To();ap();G1();jS=class{static{o(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=Dt(this.contrast,55),this.background="#ffffff",this.tertiaryColor=Ne(this.primaryColor,{h:-160}),this.primaryBorderColor=wi(this.primaryColor,this.darkMode),this.secondaryBorderColor=wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=wi(this.tertiaryColor,this.darkMode),this.primaryTextColor=pt(this.primaryColor),this.secondaryTextColor=pt(this.secondaryColor),this.tertiaryTextColor=pt(this.tertiaryColor),this.lineColor=pt(this.background),this.textColor=pt(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=Dt(this.contrast,55),this.border2=this.contrast,this.actorBorder=Dt(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},Mz=o(t=>{let e=new jS;return e.calculate(t),e},"getThemeVariables")});var ko,Hb=M(()=>{"use strict";_z();Dz();Ub();Rz();Iz();ko={base:{getThemeVariables:Az},dark:{getThemeVariables:Lz},default:{getThemeVariables:sp},forest:{getThemeVariables:Nz},neutral:{getThemeVariables:Mz}}});var Jc,Oz=M(()=>{"use strict";Jc={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1}});var Pz,Bz,Fz,ur,hs=M(()=>{"use strict";Hb();Oz();Pz={...Jc,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF"},themeCSS:void 0,themeVariables:ko.default.getThemeVariables(),sequence:{...Jc.sequence,messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:o(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:o(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1},gantt:{...Jc.gantt,tickInterval:void 0,useWidth:void 0},c4:{...Jc.c4,useWidth:void 0,personFont:o(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),external_personFont:o(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:o(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:o(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:o(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:o(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:o(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:o(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:o(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:o(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:o(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:o(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:o(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:o(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:o(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:o(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:o(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:o(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:o(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:o(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:o(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...Jc.pie,useWidth:984},xyChart:{...Jc.xyChart,useWidth:void 0},requirement:{...Jc.requirement,useWidth:void 0},packet:{...Jc.packet}},Bz=o((t,e="")=>Object.keys(t).reduce((r,n)=>Array.isArray(t[n])?r:typeof t[n]=="object"&&t[n]!==null?[...r,e+n,...Bz(t[n],"")]:[...r,e+n],[]),"keyify"),Fz=new Set(Bz(Pz,"")),ur=Pz});var op,tbe,KS=M(()=>{"use strict";hs();ht();op=o(t=>{if(Y.debug("sanitizeDirective called with",t),!(typeof t!="object"||t==null)){if(Array.isArray(t)){t.forEach(e=>op(e));return}for(let e of Object.keys(t)){if(Y.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!Fz.has(e)||t[e]==null){Y.debug("sanitize deleting key: ",e),delete t[e];continue}if(typeof t[e]=="object"){Y.debug("sanitizing object",e),op(t[e]);continue}let r=["themeCSS","fontFamily","altFontFamily"];for(let n of r)e.includes(n)&&(Y.debug("sanitizing css option",e),t[e]=tbe(t[e]))}if(t.themeVariables)for(let e of Object.keys(t.themeVariables)){let r=t.themeVariables[e];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}Y.debug("After sanitization",t)}},"sanitizeDirective"),tbe=o(t=>{let e=0,r=0;for(let n of t){if(e{"use strict";ip();ht();Hb();hs();KS();ih=Object.freeze(ur),fs=Gn({},ih),lp=[],$1=Gn({},ih),Wb=o((t,e)=>{let r=Gn({},t),n={};for(let i of e)Uz(i),n=Gn(n,i);if(r=Gn(r,n),n.theme&&n.theme in ko){let i=Gn({},Gz),a=Gn(i.themeVariables||{},n.themeVariables);r.theme&&r.theme in ko&&(r.themeVariables=ko[r.theme].getThemeVariables(a))}return $1=r,Wz($1),$1},"updateCurrentConfig"),QS=o(t=>(fs=Gn({},ih),fs=Gn(fs,t),t.theme&&ko[t.theme]&&(fs.themeVariables=ko[t.theme].getThemeVariables(t.themeVariables)),Wb(fs,lp),fs),"setSiteConfig"),$z=o(t=>{Gz=Gn({},t)},"saveConfigFromInitialize"),Vz=o(t=>(fs=Gn(fs,t),Wb(fs,lp),fs),"updateSiteConfig"),ZS=o(()=>Gn({},fs),"getSiteConfig"),Yb=o(t=>(Wz(t),Gn($1,t),Sr()),"setConfig"),Sr=o(()=>Gn({},$1),"getConfig"),Uz=o(t=>{t&&(["secure",...fs.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(Y.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])}),Object.keys(t).forEach(e=>{e.startsWith("__")&&delete t[e]}),Object.keys(t).forEach(e=>{typeof t[e]=="string"&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],typeof t[e]=="object"&&Uz(t[e])}))},"sanitize"),Hz=o(t=>{op(t),t.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables={...t.themeVariables,fontFamily:t.fontFamily}),lp.push(t),Wb(fs,lp)},"addDirective"),V1=o((t=fs)=>{lp=[],Wb(t,lp)},"reset"),rbe={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},zz={},nbe=o(t=>{zz[t]||(Y.warn(rbe[t]),zz[t]=!0)},"issueWarning"),Wz=o(t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&nbe("LAZY_LOAD_DEPRECATED")},"checkConfig")});function Ws(t){return function(e){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i2&&arguments[2]!==void 0?arguments[2]:jb;Yz&&Yz(t,null);let n=e.length;for(;n--;){let i=e[n];if(typeof i=="string"){let a=r(i);a!==i&&(ibe(e)||(e[n]=a),i=a)}t[i]=!0}return t}function ube(t){for(let e=0;e0&&arguments[0]!==void 0?arguments[0]:wbe(),e=o(yt=>iG(yt),"DOMPurify");if(e.version="3.2.1",e.removed=[],!t||!t.document||t.document.nodeType!==q1.document)return e.isSupported=!1,e;let{document:r}=t,n=r,i=n.currentScript,{DocumentFragment:a,HTMLTemplateElement:s,Node:l,Element:u,NodeFilter:h,NamedNodeMap:f=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:d,DOMParser:p,trustedTypes:m}=t,g=u.prototype,y=Y1(g,"cloneNode"),v=Y1(g,"remove"),x=Y1(g,"nextSibling"),b=Y1(g,"childNodes"),w=Y1(g,"parentNode");if(typeof s=="function"){let yt=r.createElement("template");yt.content&&yt.content.ownerDocument&&(r=yt.content.ownerDocument)}let _,T="",{implementation:E,createNodeIterator:L,createDocumentFragment:C,getElementsByTagName:A}=r,{importNode:I}=n,D={};e.isSupported=typeof eG=="function"&&typeof w=="function"&&E&&E.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:k,ERB_EXPR:R,TMPLIT_EXPR:S,DATA_ATTR:O,ARIA_ATTR:N,IS_SCRIPT_OR_DATA:P,ATTR_WHITESPACE:F,CUSTOM_ELEMENT:B}=Jz,{IS_ALLOWED_URI:$}=Jz,z=null,W=Ar({},[...jz,...eC,...tC,...rC,...Kz]),j=null,K=Ar({},[...Qz,...nC,...Zz,...Xb]),ie=Object.seal(tG(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Q=null,ee=null,J=!0,H=!0,q=!1,Z=!0,ae=!1,ue=!0,ce=!1,te=!1,De=!1,oe=!1,ke=!1,Fe=!1,Be=!0,Ve=!1,Ge="user-content-",He=!0,xe=!1,X={},fe=null,he=Ar({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),ge=null,ne=Ar({},["audio","video","img","source","image","track"]),ye=null,U=Ar({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Te="http://www.w3.org/1998/Math/MathML",se="http://www.w3.org/2000/svg",Ee="http://www.w3.org/1999/xhtml",Ae=Ee,Pe=!1,Me=null,me=Ar({},[Te,se,Ee],JS),We=Ar({},["mi","mo","mn","ms","mtext"]),Re=Ar({},["annotation-xml"]),tt=Ar({},["title","style","font","a","script"]),gt=null,Et=["application/xhtml+xml","text/html"],vt="text/html",Ye=null,Tt=null,$e=r.createElement("form"),rt=o(function(Se){return Se instanceof RegExp||Se instanceof Function},"isRegexOrFunction"),ft=o(function(){let Se=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Tt&&Tt===Se)){if((!Se||typeof Se!="object")&&(Se={}),Se=Uf(Se),gt=Et.indexOf(Se.PARSER_MEDIA_TYPE)===-1?vt:Se.PARSER_MEDIA_TYPE,Ye=gt==="application/xhtml+xml"?JS:jb,z=ul(Se,"ALLOWED_TAGS")?Ar({},Se.ALLOWED_TAGS,Ye):W,j=ul(Se,"ALLOWED_ATTR")?Ar({},Se.ALLOWED_ATTR,Ye):K,Me=ul(Se,"ALLOWED_NAMESPACES")?Ar({},Se.ALLOWED_NAMESPACES,JS):me,ye=ul(Se,"ADD_URI_SAFE_ATTR")?Ar(Uf(U),Se.ADD_URI_SAFE_ATTR,Ye):U,ge=ul(Se,"ADD_DATA_URI_TAGS")?Ar(Uf(ne),Se.ADD_DATA_URI_TAGS,Ye):ne,fe=ul(Se,"FORBID_CONTENTS")?Ar({},Se.FORBID_CONTENTS,Ye):he,Q=ul(Se,"FORBID_TAGS")?Ar({},Se.FORBID_TAGS,Ye):{},ee=ul(Se,"FORBID_ATTR")?Ar({},Se.FORBID_ATTR,Ye):{},X=ul(Se,"USE_PROFILES")?Se.USE_PROFILES:!1,J=Se.ALLOW_ARIA_ATTR!==!1,H=Se.ALLOW_DATA_ATTR!==!1,q=Se.ALLOW_UNKNOWN_PROTOCOLS||!1,Z=Se.ALLOW_SELF_CLOSE_IN_ATTR!==!1,ae=Se.SAFE_FOR_TEMPLATES||!1,ue=Se.SAFE_FOR_XML!==!1,ce=Se.WHOLE_DOCUMENT||!1,oe=Se.RETURN_DOM||!1,ke=Se.RETURN_DOM_FRAGMENT||!1,Fe=Se.RETURN_TRUSTED_TYPE||!1,De=Se.FORCE_BODY||!1,Be=Se.SANITIZE_DOM!==!1,Ve=Se.SANITIZE_NAMED_PROPS||!1,He=Se.KEEP_CONTENT!==!1,xe=Se.IN_PLACE||!1,$=Se.ALLOWED_URI_REGEXP||rG,Ae=Se.NAMESPACE||Ee,We=Se.MATHML_TEXT_INTEGRATION_POINTS||We,Re=Se.HTML_INTEGRATION_POINTS||Re,ie=Se.CUSTOM_ELEMENT_HANDLING||{},Se.CUSTOM_ELEMENT_HANDLING&&rt(Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(ie.tagNameCheck=Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&rt(Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(ie.attributeNameCheck=Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&typeof Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(ie.allowCustomizedBuiltInElements=Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ae&&(H=!1),ke&&(oe=!0),X&&(z=Ar({},Kz),j=[],X.html===!0&&(Ar(z,jz),Ar(j,Qz)),X.svg===!0&&(Ar(z,eC),Ar(j,nC),Ar(j,Xb)),X.svgFilters===!0&&(Ar(z,tC),Ar(j,nC),Ar(j,Xb)),X.mathMl===!0&&(Ar(z,rC),Ar(j,Zz),Ar(j,Xb))),Se.ADD_TAGS&&(z===W&&(z=Uf(z)),Ar(z,Se.ADD_TAGS,Ye)),Se.ADD_ATTR&&(j===K&&(j=Uf(j)),Ar(j,Se.ADD_ATTR,Ye)),Se.ADD_URI_SAFE_ATTR&&Ar(ye,Se.ADD_URI_SAFE_ATTR,Ye),Se.FORBID_CONTENTS&&(fe===he&&(fe=Uf(fe)),Ar(fe,Se.FORBID_CONTENTS,Ye)),He&&(z["#text"]=!0),ce&&Ar(z,["html","head","body"]),z.table&&(Ar(z,["tbody"]),delete Q.tbody),Se.TRUSTED_TYPES_POLICY){if(typeof Se.TRUSTED_TYPES_POLICY.createHTML!="function")throw W1('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Se.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw W1('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');_=Se.TRUSTED_TYPES_POLICY,T=_.createHTML("")}else _===void 0&&(_=Tbe(m,i)),_!==null&&typeof T=="string"&&(T=_.createHTML(""));Wa&&Wa(Se),Tt=Se}},"_parseConfig"),kt=Ar({},[...eC,...tC,...hbe]),er=Ar({},[...rC,...fbe]),dt=o(function(Se){let at=w(Se);(!at||!at.tagName)&&(at={namespaceURI:Ae,tagName:"template"});let At=jb(Se.tagName),pr=jb(at.tagName);return Me[Se.namespaceURI]?Se.namespaceURI===se?at.namespaceURI===Ee?At==="svg":at.namespaceURI===Te?At==="svg"&&(pr==="annotation-xml"||We[pr]):!!kt[At]:Se.namespaceURI===Te?at.namespaceURI===Ee?At==="math":at.namespaceURI===se?At==="math"&&Re[pr]:!!er[At]:Se.namespaceURI===Ee?at.namespaceURI===se&&!Re[pr]||at.namespaceURI===Te&&!We[pr]?!1:!er[At]&&(tt[At]||!kt[At]):!!(gt==="application/xhtml+xml"&&Me[Se.namespaceURI]):!1},"_checkValidNamespace"),Xe=o(function(Se){U1(e.removed,{element:Se});try{w(Se).removeChild(Se)}catch{v(Se)}},"_forceRemove"),ct=o(function(Se,at){try{U1(e.removed,{attribute:at.getAttributeNode(Se),from:at})}catch{U1(e.removed,{attribute:null,from:at})}if(at.removeAttribute(Se),Se==="is"&&!j[Se])if(oe||ke)try{Xe(at)}catch{}else try{at.setAttribute(Se,"")}catch{}},"_removeAttribute"),Lt=o(function(Se){let at=null,At=null;if(De)Se=""+Se;else{let On=Xz(Se,/^[\r\n\t ]+/);At=On&&On[0]}gt==="application/xhtml+xml"&&Ae===Ee&&(Se=''+Se+"");let pr=_?_.createHTML(Se):Se;if(Ae===Ee)try{at=new p().parseFromString(pr,gt)}catch{}if(!at||!at.documentElement){at=E.createDocument(Ae,"template",null);try{at.documentElement.innerHTML=Pe?T:pr}catch{}}let In=at.body||at.documentElement;return Se&&At&&In.insertBefore(r.createTextNode(At),In.childNodes[0]||null),Ae===Ee?A.call(at,ce?"html":"body")[0]:ce?at.documentElement:In},"_initDocument"),Rt=o(function(Se){return L.call(Se.ownerDocument||Se,Se,h.SHOW_ELEMENT|h.SHOW_COMMENT|h.SHOW_TEXT|h.SHOW_PROCESSING_INSTRUCTION|h.SHOW_CDATA_SECTION,null)},"_createNodeIterator"),zt=o(function(Se){return Se instanceof d&&(typeof Se.nodeName!="string"||typeof Se.textContent!="string"||typeof Se.removeChild!="function"||!(Se.attributes instanceof f)||typeof Se.removeAttribute!="function"||typeof Se.setAttribute!="function"||typeof Se.namespaceURI!="string"||typeof Se.insertBefore!="function"||typeof Se.hasChildNodes!="function")},"_isClobbered"),Xn=o(function(Se){return typeof l=="function"&&Se instanceof l},"_isNode");function or(yt,Se,at){D[yt]&&qb(D[yt],At=>{At.call(e,Se,at,Tt)})}o(or,"_executeHook");let hn=o(function(Se){let at=null;if(or("beforeSanitizeElements",Se,null),zt(Se))return Xe(Se),!0;let At=Ye(Se.nodeName);if(or("uponSanitizeElement",Se,{tagName:At,allowedTags:z}),Se.hasChildNodes()&&!Xn(Se.firstElementChild)&&Ha(/<[/\w]/g,Se.innerHTML)&&Ha(/<[/\w]/g,Se.textContent)||Se.nodeType===q1.progressingInstruction||ue&&Se.nodeType===q1.comment&&Ha(/<[/\w]/g,Se.data))return Xe(Se),!0;if(!z[At]||Q[At]){if(!Q[At]&&Ur(At)&&(ie.tagNameCheck instanceof RegExp&&Ha(ie.tagNameCheck,At)||ie.tagNameCheck instanceof Function&&ie.tagNameCheck(At)))return!1;if(He&&!fe[At]){let pr=w(Se)||Se.parentNode,In=b(Se)||Se.childNodes;if(In&&pr){let On=In.length;for(let Ir=On-1;Ir>=0;--Ir){let kn=y(In[Ir],!0);kn.__removalCount=(Se.__removalCount||0)+1,pr.insertBefore(kn,x(Se))}}}return Xe(Se),!0}return Se instanceof u&&!dt(Se)||(At==="noscript"||At==="noembed"||At==="noframes")&&Ha(/<\/no(script|embed|frames)/i,Se.innerHTML)?(Xe(Se),!0):(ae&&Se.nodeType===q1.text&&(at=Se.textContent,qb([k,R,S],pr=>{at=H1(at,pr," ")}),Se.textContent!==at&&(U1(e.removed,{element:Se.cloneNode()}),Se.textContent=at)),or("afterSanitizeElements",Se,null),!1)},"_sanitizeElements"),Tn=o(function(Se,at,At){if(Be&&(at==="id"||at==="name")&&(At in r||At in $e))return!1;if(!(H&&!ee[at]&&Ha(O,at))){if(!(J&&Ha(N,at))){if(!j[at]||ee[at]){if(!(Ur(Se)&&(ie.tagNameCheck instanceof RegExp&&Ha(ie.tagNameCheck,Se)||ie.tagNameCheck instanceof Function&&ie.tagNameCheck(Se))&&(ie.attributeNameCheck instanceof RegExp&&Ha(ie.attributeNameCheck,at)||ie.attributeNameCheck instanceof Function&&ie.attributeNameCheck(at))||at==="is"&&ie.allowCustomizedBuiltInElements&&(ie.tagNameCheck instanceof RegExp&&Ha(ie.tagNameCheck,At)||ie.tagNameCheck instanceof Function&&ie.tagNameCheck(At))))return!1}else if(!ye[at]){if(!Ha($,H1(At,F,""))){if(!((at==="src"||at==="xlink:href"||at==="href")&&Se!=="script"&&obe(At,"data:")===0&&ge[Se])){if(!(q&&!Ha(P,H1(At,F,"")))){if(At)return!1}}}}}}return!0},"_isValidAttribute"),Ur=o(function(Se){return Se!=="annotation-xml"&&Xz(Se,B)},"_isBasicCustomElement"),ri=o(function(Se){or("beforeSanitizeAttributes",Se,null);let{attributes:at}=Se;if(!at)return;let At={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:j,forceKeepAttr:void 0},pr=at.length;for(;pr--;){let In=at[pr],{name:On,namespaceURI:Ir,value:kn}=In,_t=Ye(On),St=On==="value"?kn:lbe(kn);if(At.attrName=_t,At.attrValue=St,At.keepAttr=!0,At.forceKeepAttr=void 0,or("uponSanitizeAttribute",Se,At),St=At.attrValue,Ve&&(_t==="id"||_t==="name")&&(ct(On,Se),St=Ge+St),ue&&Ha(/((--!?|])>)|<\/(style|title)/i,St)){ct(On,Se);continue}if(At.forceKeepAttr||(ct(On,Se),!At.keepAttr))continue;if(!Z&&Ha(/\/>/i,St)){ct(On,Se);continue}ae&&qb([k,R,S],Ue=>{St=H1(St,Ue," ")});let bt=Ye(Se.nodeName);if(Tn(bt,_t,St)){if(_&&typeof m=="object"&&typeof m.getAttributeType=="function"&&!Ir)switch(m.getAttributeType(bt,_t)){case"TrustedHTML":{St=_.createHTML(St);break}case"TrustedScriptURL":{St=_.createScriptURL(St);break}}try{Ir?Se.setAttributeNS(Ir,On,St):Se.setAttribute(On,St),zt(Se)?Xe(Se):qz(e.removed)}catch{}}}or("afterSanitizeAttributes",Se,null)},"_sanitizeAttributes"),Mn=o(function yt(Se){let at=null,At=Rt(Se);for(or("beforeSanitizeShadowDOM",Se,null);at=At.nextNode();)or("uponSanitizeShadowNode",at,null),!hn(at)&&(at.content instanceof a&&yt(at.content),ri(at));or("afterSanitizeShadowDOM",Se,null)},"_sanitizeShadowDOM");return e.sanitize=function(yt){let Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},at=null,At=null,pr=null,In=null;if(Pe=!yt,Pe&&(yt=""),typeof yt!="string"&&!Xn(yt))if(typeof yt.toString=="function"){if(yt=yt.toString(),typeof yt!="string")throw W1("dirty is not a string, aborting")}else throw W1("toString is not a function");if(!e.isSupported)return yt;if(te||ft(Se),e.removed=[],typeof yt=="string"&&(xe=!1),xe){if(yt.nodeName){let kn=Ye(yt.nodeName);if(!z[kn]||Q[kn])throw W1("root node is forbidden and cannot be sanitized in-place")}}else if(yt instanceof l)at=Lt(""),At=at.ownerDocument.importNode(yt,!0),At.nodeType===q1.element&&At.nodeName==="BODY"||At.nodeName==="HTML"?at=At:at.appendChild(At);else{if(!oe&&!ae&&!ce&&yt.indexOf("<")===-1)return _&&Fe?_.createHTML(yt):yt;if(at=Lt(yt),!at)return oe?null:Fe?T:""}at&&De&&Xe(at.firstChild);let On=Rt(xe?yt:at);for(;pr=On.nextNode();)hn(pr)||(pr.content instanceof a&&Mn(pr.content),ri(pr));if(xe)return yt;if(oe){if(ke)for(In=C.call(at.ownerDocument);at.firstChild;)In.appendChild(at.firstChild);else In=at;return(j.shadowroot||j.shadowrootmode)&&(In=I.call(n,In,!0)),In}let Ir=ce?at.outerHTML:at.innerHTML;return ce&&z["!doctype"]&&at.ownerDocument&&at.ownerDocument.doctype&&at.ownerDocument.doctype.name&&Ha(nG,at.ownerDocument.doctype.name)&&(Ir=" -`+Ir),ae&&qb([k,R,S],kn=>{Ir=H1(Ir,kn," ")}),_&&Fe?_.createHTML(Ir):Ir},e.setConfig=function(){let yt=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};ft(yt),te=!0},e.clearConfig=function(){Tt=null,te=!1},e.isValidAttribute=function(yt,Se,at){Tt||ft({});let At=Ye(yt),pr=Ye(Se);return Tn(At,pr,at)},e.addHook=function(yt,Se){typeof Se=="function"&&(D[yt]=D[yt]||[],U1(D[yt],Se))},e.removeHook=function(yt){if(D[yt])return qz(D[yt])},e.removeHooks=function(yt){D[yt]&&(D[yt]=[])},e.removeAllHooks=function(){D={}},e}var eG,Yz,ibe,abe,sbe,Wa,Eo,tG,iC,aC,qb,qz,U1,jb,JS,Xz,H1,obe,lbe,ul,Ha,W1,jz,eC,tC,hbe,rC,fbe,Kz,Qz,nC,Zz,Xb,dbe,pbe,mbe,gbe,ybe,rG,vbe,xbe,nG,bbe,Jz,q1,wbe,Tbe,ah,sC=M(()=>{"use strict";({entries:eG,setPrototypeOf:Yz,isFrozen:ibe,getPrototypeOf:abe,getOwnPropertyDescriptor:sbe}=Object),{freeze:Wa,seal:Eo,create:tG}=Object,{apply:iC,construct:aC}=typeof Reflect<"u"&&Reflect;Wa||(Wa=o(function(e){return e},"freeze"));Eo||(Eo=o(function(e){return e},"seal"));iC||(iC=o(function(e,r,n){return e.apply(r,n)},"apply"));aC||(aC=o(function(e,r){return new e(...r)},"construct"));qb=Ws(Array.prototype.forEach),qz=Ws(Array.prototype.pop),U1=Ws(Array.prototype.push),jb=Ws(String.prototype.toLowerCase),JS=Ws(String.prototype.toString),Xz=Ws(String.prototype.match),H1=Ws(String.prototype.replace),obe=Ws(String.prototype.indexOf),lbe=Ws(String.prototype.trim),ul=Ws(Object.prototype.hasOwnProperty),Ha=Ws(RegExp.prototype.test),W1=cbe(TypeError);o(Ws,"unapply");o(cbe,"unconstruct");o(Ar,"addToSet");o(ube,"cleanArray");o(Uf,"clone");o(Y1,"lookupGetter");jz=Wa(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),eC=Wa(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),tC=Wa(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),hbe=Wa(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),rC=Wa(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),fbe=Wa(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Kz=Wa(["#text"]),Qz=Wa(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),nC=Wa(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Zz=Wa(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Xb=Wa(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),dbe=Eo(/\{\{[\w\W]*|[\w\W]*\}\}/gm),pbe=Eo(/<%[\w\W]*|[\w\W]*%>/gm),mbe=Eo(/\${[\w\W]*}/gm),gbe=Eo(/^data-[\-\w.\u00B7-\uFFFF]/),ybe=Eo(/^aria-[\-\w]+$/),rG=Eo(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),vbe=Eo(/^(?:\w+script|data):/i),xbe=Eo(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),nG=Eo(/^html$/i),bbe=Eo(/^[a-z][.\w]*(-[.\w]+)+$/i),Jz=Object.freeze({__proto__:null,ARIA_ATTR:ybe,ATTR_WHITESPACE:xbe,CUSTOM_ELEMENT:bbe,DATA_ATTR:gbe,DOCTYPE_NAME:nG,ERB_EXPR:pbe,IS_ALLOWED_URI:rG,IS_SCRIPT_OR_DATA:vbe,MUSTACHE_EXPR:dbe,TMPLIT_EXPR:mbe}),q1={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},wbe=o(function(){return typeof window>"u"?null:window},"getGlobal"),Tbe=o(function(e,r){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let n=null,i="data-tt-policy-suffix";r&&r.hasAttribute(i)&&(n=r.getAttribute(i));let a="dompurify"+(n?"#"+n:"");try{return e.createPolicy(a,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+a+" could not be created."),null}},"_createTrustedTypesPolicy");o(iG,"createDOMPurify");ah=iG()});var N$={};vr(N$,{default:()=>g3e});function Lbe(t){return String(t).replace(_be,e=>Abe[e])}function Mbe(t){if(t.default)return t.default;var e=t.type,r=Array.isArray(e)?e[0]:e;if(typeof r!="string")return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}function Gbe(t){for(var e=0;e=i[0]&&t<=i[1])return r.name}return null}function BG(t){for(var e=0;e=l4[e]&&t<=l4[e+1])return!0;return!1}function Qbe(t,e){Zl[t]=e}function RC(t,e,r){if(!Zl[e])throw new Error("Font metrics not found for font: "+e+".");var n=t.charCodeAt(0),i=Zl[e][n];if(!i&&t[0]in sG&&(n=sG[t[0]].charCodeAt(0),i=Zl[e][n]),!i&&r==="text"&&BG(n)&&(i=Zl[e][77]),i)return{depth:i[0],height:i[1],italic:i[2],skew:i[3],width:i[4]}}function Zbe(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!oC[e]){var r=oC[e]={cssEmPerMu:Kb.quad[e]/18};for(var n in Kb)Kb.hasOwnProperty(n)&&(r[n]=Kb[n][e])}return oC[e]}function cG(t){if(t instanceof ms)return t;throw new Error("Expected symbolNode but got "+String(t)+".")}function r4e(t){if(t instanceof qf)return t;throw new Error("Expected span but got "+String(t)+".")}function G(t,e,r,n,i,a){En[t][i]={font:e,group:r,replace:n},a&&n&&(En[t][n]=En[t][i])}function Ct(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=t,l={type:e,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:i},u=0;u0&&(a.push(n4(s,e)),s=[]),a.push(n[l]));s.length>0&&a.push(n4(s,e));var h;r?(h=n4(Ii(r,e,!0)),h.classes=["tag"],a.push(h)):i&&a.push(i);var f=iu(["katex-html"],a);if(f.setAttribute("aria-hidden","true"),h){var d=h.children[0];d.style.height=mt(f.height+f.depth),f.depth&&(d.style.verticalAlign=mt(-f.depth))}return f}function jG(t){return new Yf(t)}function pG(t,e,r,n,i){var a=gs(t,r),s;a.length===1&&a[0]instanceof ps&&Jt.contains(["mrow","mtable"],a[0].type)?s=a[0]:s=new st.MathNode("mrow",a);var l=new st.MathNode("annotation",[new st.TextNode(e)]);l.setAttribute("encoding","application/x-tex");var u=new st.MathNode("semantics",[s,l]),h=new st.MathNode("math",[u]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&h.setAttribute("display","block");var f=i?"katex":"katex-mathml";return Ie.makeSpan([f],[h])}function yr(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function PC(t){var e=x4(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function x4(t){return t&&(t.type==="atom"||i4e.hasOwnProperty(t.type))?t:null}function JG(t,e){var r=Ii(t.body,e,!0);return I4e([t.mclass],r,e)}function e$(t,e){var r,n=gs(t.body,e);return t.mclass==="minner"?r=new st.MathNode("mpadded",n):t.mclass==="mord"?t.isCharacterBox?(r=n[0],r.type="mi"):r=new st.MathNode("mi",n):(t.isCharacterBox?(r=n[0],r.type="mo"):r=new st.MathNode("mo",n),t.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):t.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):t.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}function B4e(t,e,r){var n=O4e[t];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var i=r.callFunction("\\\\cdleft",[e[0]],[]),a={type:"atom",text:n,mode:"math",family:"rel"},s=r.callFunction("\\Big",[a],[]),l=r.callFunction("\\\\cdright",[e[1]],[]),u={type:"ordgroup",mode:"math",body:[i,s,l]};return r.callFunction("\\\\cdparent",[u],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var h={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[h],[])}default:return{type:"textord",text:" ",mode:"math"}}}function F4e(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var r=t.fetch().text;if(r==="&"||r==="\\\\")t.consume();else if(r==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new ut("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var n=[],i=[n],a=0;a-1))if("<>AV".indexOf(h)>-1)for(var d=0;d<2;d++){for(var p=!0,m=u+1;mAV=|." after @',s[u]);var g=B4e(h,f,t),y={type:"styling",body:[g],mode:"math",style:"display"};n.push(y),l=mG()}a%2===0?n.push(l):n.shift(),n=[],i.push(n)}t.gullet.endGroup(),t.gullet.endGroup();var v=new Array(i[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:i,arraystretch:1,addJot:!0,rowGaps:[null],cols:v,colSeparationType:"CD",hLinesBeforeRow:new Array(i.length+1).fill([])}}function w4(t,e){var r=x4(t);if(r&&Jt.contains(Q4e,r.text))return r;throw r?new ut("Invalid delimiter '"+r.text+"' after '"+e.funcName+"'",t):new ut("Invalid delimiter type '"+t.type+"'",t)}function vG(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}function ec(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=t,l={type:e,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:i},u=0;u1||!f)&&y.pop(),x.length{"use strict";Ys=class t{static{o(this,"SourceLocation")}constructor(e,r,n){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=r,this.end=n}static range(e,r){return r?!e||!e.loc||!r.loc||e.loc.lexer!==r.loc.lexer?null:new t(e.loc.lexer,e.loc.start,r.loc.end):e&&e.loc}},Co=class t{static{o(this,"Token")}constructor(e,r){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=r}range(e,r){return new t(r,Ys.range(this,e))}},ut=class t{static{o(this,"ParseError")}constructor(e,r){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var n="KaTeX parse error: "+e,i,a,s=r&&r.loc;if(s&&s.start<=s.end){var l=s.lexer.input;i=s.start,a=s.end,i===l.length?n+=" at end of input: ":n+=" at position "+(i+1)+": ";var u=l.slice(i,a).replace(/[^]/g,"$&\u0332"),h;i>15?h="\u2026"+l.slice(i-15,i):h=l.slice(0,i);var f;a+15":">","<":"<",'"':""","'":"'"},_be=/[&><"']/g;o(Lbe,"escape");PG=o(function t(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?t(e.body[0]):e:e.type==="font"?t(e.body):e},"getBaseElem"),Dbe=o(function(e){var r=PG(e);return r.type==="mathord"||r.type==="textord"||r.type==="atom"},"isCharacterBox"),Nbe=o(function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},"assert"),Rbe=o(function(e){var r=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return r?r[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(r[1])?null:r[1].toLowerCase():"_relative"},"protocolFromUrl"),Jt={contains:kbe,deflt:Ebe,escape:Lbe,hyphenate:Cbe,getBaseElem:PG,isCharacterBox:Dbe,protocolFromUrl:Rbe},o4={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:o(t=>"#"+t,"cliProcessor")},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:o((t,e)=>(e.push(t),e),"cliProcessor")},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:o(t=>Math.max(0,t),"processor"),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:o(t=>Math.max(0,t),"processor"),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:o(t=>Math.max(0,t),"processor"),cli:"-e, --max-expand ",cliProcessor:o(t=>t==="Infinity"?1/0:parseInt(t),"cliProcessor")},globalGroup:{type:"boolean",cli:!1}};o(Mbe,"getDefaultValue");Z1=class{static{o(this,"Settings")}constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var r in o4)if(o4.hasOwnProperty(r)){var n=o4[r];this[r]=e[r]!==void 0?n.processor?n.processor(e[r]):e[r]:Mbe(n)}}reportNonstrict(e,r,n){var i=this.strict;if(typeof i=="function"&&(i=i(e,r,n)),!(!i||i==="ignore")){if(i===!0||i==="error")throw new ut("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+e+"]"),n);i==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+e+"]"))}}useStrictBehavior(e,r,n){var i=this.strict;if(typeof i=="function")try{i=i(e,r,n)}catch{i="error"}return!i||i==="ignore"?!1:i===!0||i==="error"?!0:i==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var r=Jt.protocolFromUrl(e.url);if(r==null)return!1;e.protocol=r}var n=typeof this.trust=="function"?this.trust(e):this.trust;return!!n}},Kl=class{static{o(this,"Style")}constructor(e,r,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=r,this.cramped=n}sup(){return Ql[Ibe[this.id]]}sub(){return Ql[Obe[this.id]]}fracNum(){return Ql[Pbe[this.id]]}fracDen(){return Ql[Bbe[this.id]]}cramp(){return Ql[Fbe[this.id]]}text(){return Ql[zbe[this.id]]}isTight(){return this.size>=2}},NC=0,c4=1,hp=2,ru=3,J1=4,So=5,fp=6,Ya=7,Ql=[new Kl(NC,0,!1),new Kl(c4,0,!0),new Kl(hp,1,!1),new Kl(ru,1,!0),new Kl(J1,2,!1),new Kl(So,2,!0),new Kl(fp,3,!1),new Kl(Ya,3,!0)],Ibe=[J1,So,J1,So,fp,Ya,fp,Ya],Obe=[So,So,So,So,Ya,Ya,Ya,Ya],Pbe=[hp,ru,J1,So,fp,Ya,fp,Ya],Bbe=[ru,ru,So,So,Ya,Ya,Ya,Ya],Fbe=[c4,c4,ru,ru,So,So,Ya,Ya],zbe=[NC,c4,hp,ru,hp,ru,hp,ru],rr={DISPLAY:Ql[NC],TEXT:Ql[hp],SCRIPT:Ql[J1],SCRIPTSCRIPT:Ql[fp]},xC=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];o(Gbe,"scriptFromCodepoint");l4=[];xC.forEach(t=>t.blocks.forEach(e=>l4.push(...e)));o(BG,"supportedCodepoint");up=80,$be=o(function(e,r){return"M95,"+(622+e+r)+` +`)),s+=d+n[u+1]}),s}var TC=M(()=>{"use strict";o(E4,"dedent")});var S4,Uf,FF,C4=M(()=>{"use strict";S4=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,Uf=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,FF=/\s*%%.*\n/gm});var e0,kC=M(()=>{"use strict";e0=class extends Error{static{o(this,"UnknownDiagramError")}constructor(e){super(e),this.name="UnknownDiagramError"}}});var Hf,t0,A4,EC,zF,Wf=M(()=>{"use strict";vt();C4();kC();Hf={},t0=o(function(t,e){t=t.replace(S4,"").replace(Uf,"").replace(FF,` +`);for(let[r,{detector:n}]of Object.entries(Hf))if(n(t,e))return r;throw new e0(`No diagram type detected matching given configuration for text: ${t}`)},"detectType"),A4=o((...t)=>{for(let{id:e,detector:r,loader:n}of t)EC(e,r,n)},"registerLazyLoadedDiagrams"),EC=o((t,e,r)=>{Hf[t]&&Y.warn(`Detector with key ${t} already exists. Overwriting.`),Hf[t]={detector:e,loader:r},Y.debug(`Detector with key ${t} added${r?" with loader":""}`)},"addDetector"),zF=o(t=>Hf[t].loader,"getDiagramLoader")});var gy,GF,SC=M(()=>{"use strict";gy=function(){var t=o(function(ze,Re,Ie,be){for(Ie=Ie||{},be=ze.length;be--;Ie[ze[be]]=Re);return Ie},"o"),e=[1,24],r=[1,25],n=[1,26],i=[1,27],a=[1,28],s=[1,63],l=[1,64],u=[1,65],h=[1,66],f=[1,67],d=[1,68],p=[1,69],m=[1,29],g=[1,30],y=[1,31],v=[1,32],x=[1,33],b=[1,34],w=[1,35],C=[1,36],T=[1,37],E=[1,38],A=[1,39],S=[1,40],_=[1,41],I=[1,42],D=[1,43],k=[1,44],L=[1,45],R=[1,46],O=[1,47],N=[1,48],B=[1,50],F=[1,51],P=[1,52],G=[1,53],z=[1,54],H=[1,55],Q=[1,56],j=[1,57],ie=[1,58],ne=[1,59],le=[1,60],he=[14,42],K=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],X=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],te=[1,82],J=[1,83],se=[1,84],ue=[1,85],Z=[12,14,42],Se=[12,14,33,42],ce=[12,14,33,42,76,77,79,80],ae=[12,33],Oe=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],ge={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:o(function(Re,Ie,be,W,de,re,oe){var V=re.length-1;switch(de){case 3:W.setDirection("TB");break;case 4:W.setDirection("BT");break;case 5:W.setDirection("RL");break;case 6:W.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:W.setC4Type(re[V-3]);break;case 19:W.setTitle(re[V].substring(6)),this.$=re[V].substring(6);break;case 20:W.setAccDescription(re[V].substring(15)),this.$=re[V].substring(15);break;case 21:this.$=re[V].trim(),W.setTitle(this.$);break;case 22:case 23:this.$=re[V].trim(),W.setAccDescription(this.$);break;case 28:re[V].splice(2,0,"ENTERPRISE"),W.addPersonOrSystemBoundary(...re[V]),this.$=re[V];break;case 29:re[V].splice(2,0,"SYSTEM"),W.addPersonOrSystemBoundary(...re[V]),this.$=re[V];break;case 30:W.addPersonOrSystemBoundary(...re[V]),this.$=re[V];break;case 31:re[V].splice(2,0,"CONTAINER"),W.addContainerBoundary(...re[V]),this.$=re[V];break;case 32:W.addDeploymentNode("node",...re[V]),this.$=re[V];break;case 33:W.addDeploymentNode("nodeL",...re[V]),this.$=re[V];break;case 34:W.addDeploymentNode("nodeR",...re[V]),this.$=re[V];break;case 35:W.popBoundaryParseStack();break;case 39:W.addPersonOrSystem("person",...re[V]),this.$=re[V];break;case 40:W.addPersonOrSystem("external_person",...re[V]),this.$=re[V];break;case 41:W.addPersonOrSystem("system",...re[V]),this.$=re[V];break;case 42:W.addPersonOrSystem("system_db",...re[V]),this.$=re[V];break;case 43:W.addPersonOrSystem("system_queue",...re[V]),this.$=re[V];break;case 44:W.addPersonOrSystem("external_system",...re[V]),this.$=re[V];break;case 45:W.addPersonOrSystem("external_system_db",...re[V]),this.$=re[V];break;case 46:W.addPersonOrSystem("external_system_queue",...re[V]),this.$=re[V];break;case 47:W.addContainer("container",...re[V]),this.$=re[V];break;case 48:W.addContainer("container_db",...re[V]),this.$=re[V];break;case 49:W.addContainer("container_queue",...re[V]),this.$=re[V];break;case 50:W.addContainer("external_container",...re[V]),this.$=re[V];break;case 51:W.addContainer("external_container_db",...re[V]),this.$=re[V];break;case 52:W.addContainer("external_container_queue",...re[V]),this.$=re[V];break;case 53:W.addComponent("component",...re[V]),this.$=re[V];break;case 54:W.addComponent("component_db",...re[V]),this.$=re[V];break;case 55:W.addComponent("component_queue",...re[V]),this.$=re[V];break;case 56:W.addComponent("external_component",...re[V]),this.$=re[V];break;case 57:W.addComponent("external_component_db",...re[V]),this.$=re[V];break;case 58:W.addComponent("external_component_queue",...re[V]),this.$=re[V];break;case 60:W.addRel("rel",...re[V]),this.$=re[V];break;case 61:W.addRel("birel",...re[V]),this.$=re[V];break;case 62:W.addRel("rel_u",...re[V]),this.$=re[V];break;case 63:W.addRel("rel_d",...re[V]),this.$=re[V];break;case 64:W.addRel("rel_l",...re[V]),this.$=re[V];break;case 65:W.addRel("rel_r",...re[V]),this.$=re[V];break;case 66:W.addRel("rel_b",...re[V]),this.$=re[V];break;case 67:re[V].splice(0,1),W.addRel("rel",...re[V]),this.$=re[V];break;case 68:W.updateElStyle("update_el_style",...re[V]),this.$=re[V];break;case 69:W.updateRelStyle("update_rel_style",...re[V]),this.$=re[V];break;case 70:W.updateLayoutConfig("update_layout_config",...re[V]),this.$=re[V];break;case 71:this.$=[re[V]];break;case 72:re[V].unshift(re[V-1]),this.$=re[V];break;case 73:case 75:this.$=re[V].trim();break;case 74:let xe={};xe[re[V-1].trim()]=re[V].trim(),this.$=xe;break;case 76:this.$="";break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:N,64:B,65:F,66:P,67:G,68:z,69:H,70:Q,71:j,72:ie,73:ne,74:le},{13:70,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:N,64:B,65:F,66:P,67:G,68:z,69:H,70:Q,71:j,72:ie,73:ne,74:le},{13:71,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:N,64:B,65:F,66:P,67:G,68:z,69:H,70:Q,71:j,72:ie,73:ne,74:le},{13:72,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:N,64:B,65:F,66:P,67:G,68:z,69:H,70:Q,71:j,72:ie,73:ne,74:le},{13:73,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:N,64:B,65:F,66:P,67:G,68:z,69:H,70:Q,71:j,72:ie,73:ne,74:le},{14:[1,74]},t(he,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:l,37:u,38:h,39:f,40:d,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:N,64:B,65:F,66:P,67:G,68:z,69:H,70:Q,71:j,72:ie,73:ne,74:le}),t(he,[2,14]),t(K,[2,16],{12:[1,76]}),t(he,[2,36],{12:[1,77]}),t(X,[2,19]),t(X,[2,20]),{25:[1,78]},{27:[1,79]},t(X,[2,23]),{35:80,75:81,76:te,77:J,79:se,80:ue},{35:86,75:81,76:te,77:J,79:se,80:ue},{35:87,75:81,76:te,77:J,79:se,80:ue},{35:88,75:81,76:te,77:J,79:se,80:ue},{35:89,75:81,76:te,77:J,79:se,80:ue},{35:90,75:81,76:te,77:J,79:se,80:ue},{35:91,75:81,76:te,77:J,79:se,80:ue},{35:92,75:81,76:te,77:J,79:se,80:ue},{35:93,75:81,76:te,77:J,79:se,80:ue},{35:94,75:81,76:te,77:J,79:se,80:ue},{35:95,75:81,76:te,77:J,79:se,80:ue},{35:96,75:81,76:te,77:J,79:se,80:ue},{35:97,75:81,76:te,77:J,79:se,80:ue},{35:98,75:81,76:te,77:J,79:se,80:ue},{35:99,75:81,76:te,77:J,79:se,80:ue},{35:100,75:81,76:te,77:J,79:se,80:ue},{35:101,75:81,76:te,77:J,79:se,80:ue},{35:102,75:81,76:te,77:J,79:se,80:ue},{35:103,75:81,76:te,77:J,79:se,80:ue},{35:104,75:81,76:te,77:J,79:se,80:ue},t(Z,[2,59]),{35:105,75:81,76:te,77:J,79:se,80:ue},{35:106,75:81,76:te,77:J,79:se,80:ue},{35:107,75:81,76:te,77:J,79:se,80:ue},{35:108,75:81,76:te,77:J,79:se,80:ue},{35:109,75:81,76:te,77:J,79:se,80:ue},{35:110,75:81,76:te,77:J,79:se,80:ue},{35:111,75:81,76:te,77:J,79:se,80:ue},{35:112,75:81,76:te,77:J,79:se,80:ue},{35:113,75:81,76:te,77:J,79:se,80:ue},{35:114,75:81,76:te,77:J,79:se,80:ue},{35:115,75:81,76:te,77:J,79:se,80:ue},{20:116,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:N,64:B,65:F,66:P,67:G,68:z,69:H,70:Q,71:j,72:ie,73:ne,74:le},{12:[1,118],33:[1,117]},{35:119,75:81,76:te,77:J,79:se,80:ue},{35:120,75:81,76:te,77:J,79:se,80:ue},{35:121,75:81,76:te,77:J,79:se,80:ue},{35:122,75:81,76:te,77:J,79:se,80:ue},{35:123,75:81,76:te,77:J,79:se,80:ue},{35:124,75:81,76:te,77:J,79:se,80:ue},{35:125,75:81,76:te,77:J,79:se,80:ue},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},t(he,[2,15]),t(K,[2,17],{21:22,19:130,22:e,23:r,24:n,26:i,28:a}),t(he,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:e,23:r,24:n,26:i,28:a,34:s,36:l,37:u,38:h,39:f,40:d,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w,51:C,52:T,53:E,54:A,55:S,56:_,57:I,58:D,59:k,60:L,61:R,62:O,63:N,64:B,65:F,66:P,67:G,68:z,69:H,70:Q,71:j,72:ie,73:ne,74:le}),t(X,[2,21]),t(X,[2,22]),t(Z,[2,39]),t(Se,[2,71],{75:81,35:132,76:te,77:J,79:se,80:ue}),t(ce,[2,73]),{78:[1,133]},t(ce,[2,75]),t(ce,[2,76]),t(Z,[2,40]),t(Z,[2,41]),t(Z,[2,42]),t(Z,[2,43]),t(Z,[2,44]),t(Z,[2,45]),t(Z,[2,46]),t(Z,[2,47]),t(Z,[2,48]),t(Z,[2,49]),t(Z,[2,50]),t(Z,[2,51]),t(Z,[2,52]),t(Z,[2,53]),t(Z,[2,54]),t(Z,[2,55]),t(Z,[2,56]),t(Z,[2,57]),t(Z,[2,58]),t(Z,[2,60]),t(Z,[2,61]),t(Z,[2,62]),t(Z,[2,63]),t(Z,[2,64]),t(Z,[2,65]),t(Z,[2,66]),t(Z,[2,67]),t(Z,[2,68]),t(Z,[2,69]),t(Z,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},t(ae,[2,28]),t(ae,[2,29]),t(ae,[2,30]),t(ae,[2,31]),t(ae,[2,32]),t(ae,[2,33]),t(ae,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},t(K,[2,18]),t(he,[2,38]),t(Se,[2,72]),t(ce,[2,74]),t(Z,[2,24]),t(Z,[2,35]),t(Oe,[2,25]),t(Oe,[2,26],{12:[1,138]}),t(Oe,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:o(function(Re,Ie){if(Ie.recoverable)this.trace(Re);else{var be=new Error(Re);throw be.hash=Ie,be}},"parseError"),parse:o(function(Re){var Ie=this,be=[0],W=[],de=[null],re=[],oe=this.table,V="",xe=0,q=0,pe=0,ve=2,Pe=1,_e=re.slice.call(arguments,1),we=Object.create(this.lexer),Ve={yy:{}};for(var De in this.yy)Object.prototype.hasOwnProperty.call(this.yy,De)&&(Ve.yy[De]=this.yy[De]);we.setInput(Re,Ve.yy),Ve.yy.lexer=we,Ve.yy.parser=this,typeof we.yylloc>"u"&&(we.yylloc={});var qe=we.yylloc;re.push(qe);var at=we.options&&we.options.ranges;typeof Ve.yy.parseError=="function"?this.parseError=Ve.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Lt(nt){be.length=be.length-2*nt,de.length=de.length-nt,re.length=re.length-nt}o(Lt,"popStack");function st(){var nt;return nt=W.pop()||we.lex()||Pe,typeof nt!="number"&&(nt instanceof Array&&(W=nt,nt=W.pop()),nt=Ie.symbols_[nt]||nt),nt}o(st,"lex");for(var Ue,ct,We,ot,Yt,bt,Nt={},xt,ut,Et,ft;;){if(We=be[be.length-1],this.defaultActions[We]?ot=this.defaultActions[We]:((Ue===null||typeof Ue>"u")&&(Ue=st()),ot=oe[We]&&oe[We][Ue]),typeof ot>"u"||!ot.length||!ot[0]){var yt="";ft=[];for(xt in oe[We])this.terminals_[xt]&&xt>ve&&ft.push("'"+this.terminals_[xt]+"'");we.showPosition?yt="Parse error on line "+(xe+1)+`: +`+we.showPosition()+` +Expecting `+ft.join(", ")+", got '"+(this.terminals_[Ue]||Ue)+"'":yt="Parse error on line "+(xe+1)+": Unexpected "+(Ue==Pe?"end of input":"'"+(this.terminals_[Ue]||Ue)+"'"),this.parseError(yt,{text:we.match,token:this.terminals_[Ue]||Ue,line:we.yylineno,loc:qe,expected:ft})}if(ot[0]instanceof Array&&ot.length>1)throw new Error("Parse Error: multiple actions possible at state: "+We+", token: "+Ue);switch(ot[0]){case 1:be.push(Ue),de.push(we.yytext),re.push(we.yylloc),be.push(ot[1]),Ue=null,ct?(Ue=ct,ct=null):(q=we.yyleng,V=we.yytext,xe=we.yylineno,qe=we.yylloc,pe>0&&pe--);break;case 2:if(ut=this.productions_[ot[1]][1],Nt.$=de[de.length-ut],Nt._$={first_line:re[re.length-(ut||1)].first_line,last_line:re[re.length-1].last_line,first_column:re[re.length-(ut||1)].first_column,last_column:re[re.length-1].last_column},at&&(Nt._$.range=[re[re.length-(ut||1)].range[0],re[re.length-1].range[1]]),bt=this.performAction.apply(Nt,[V,q,xe,Ve.yy,ot[1],de,re].concat(_e)),typeof bt<"u")return bt;ut&&(be=be.slice(0,-1*ut*2),de=de.slice(0,-1*ut),re=re.slice(0,-1*ut)),be.push(this.productions_[ot[1]][0]),de.push(Nt.$),re.push(Nt._$),Et=oe[be[be.length-2]][be[be.length-1]],be.push(Et);break;case 3:return!0}}return!0},"parse")},Ge=function(){var ze={EOF:1,parseError:o(function(Ie,be){if(this.yy.parser)this.yy.parser.parseError(Ie,be);else throw new Error(Ie)},"parseError"),setInput:o(function(Re,Ie){return this.yy=Ie||this.yy||{},this._input=Re,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Re=this._input[0];this.yytext+=Re,this.yyleng++,this.offset++,this.match+=Re,this.matched+=Re;var Ie=Re.match(/(?:\r\n?|\n).*/g);return Ie?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Re},"input"),unput:o(function(Re){var Ie=Re.length,be=Re.split(/(?:\r\n?|\n)/g);this._input=Re+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ie),this.offset-=Ie;var W=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),be.length-1&&(this.yylineno-=be.length-1);var de=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:be?(be.length===W.length?this.yylloc.first_column:0)+W[W.length-be.length].length-be[0].length:this.yylloc.first_column-Ie},this.options.ranges&&(this.yylloc.range=[de[0],de[0]+this.yyleng-Ie]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Re){this.unput(this.match.slice(Re))},"less"),pastInput:o(function(){var Re=this.matched.substr(0,this.matched.length-this.match.length);return(Re.length>20?"...":"")+Re.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Re=this.match;return Re.length<20&&(Re+=this._input.substr(0,20-Re.length)),(Re.substr(0,20)+(Re.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Re=this.pastInput(),Ie=new Array(Re.length+1).join("-");return Re+this.upcomingInput()+` +`+Ie+"^"},"showPosition"),test_match:o(function(Re,Ie){var be,W,de;if(this.options.backtrack_lexer&&(de={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(de.yylloc.range=this.yylloc.range.slice(0))),W=Re[0].match(/(?:\r\n?|\n).*/g),W&&(this.yylineno+=W.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:W?W[W.length-1].length-W[W.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Re[0].length},this.yytext+=Re[0],this.match+=Re[0],this.matches=Re,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Re[0].length),this.matched+=Re[0],be=this.performAction.call(this,this.yy,this,Ie,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),be)return be;if(this._backtrack){for(var re in de)this[re]=de[re];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Re,Ie,be,W;this._more||(this.yytext="",this.match="");for(var de=this._currentRules(),re=0;reIe[0].length)){if(Ie=be,W=re,this.options.backtrack_lexer){if(Re=this.test_match(be,de[re]),Re!==!1)return Re;if(this._backtrack){Ie=!1;continue}else return!1}else if(!this.options.flex)break}return Ie?(Re=this.test_match(Ie,de[W]),Re!==!1?Re:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var Ie=this.next();return Ie||this.lex()},"lex"),begin:o(function(Ie){this.conditionStack.push(Ie)},"begin"),popState:o(function(){var Ie=this.conditionStack.length-1;return Ie>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Ie){return Ie=this.conditionStack.length-1-Math.abs(Ie||0),Ie>=0?this.conditionStack[Ie]:"INITIAL"},"topState"),pushState:o(function(Ie){this.begin(Ie)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(Ie,be,W,de){var re=de;switch(W){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),26;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;break;case 23:return this.begin("person"),44;break;case 24:return this.begin("system_ext_queue"),51;break;case 25:return this.begin("system_ext_db"),50;break;case 26:return this.begin("system_ext"),49;break;case 27:return this.begin("system_queue"),48;break;case 28:return this.begin("system_db"),47;break;case 29:return this.begin("system"),46;break;case 30:return this.begin("boundary"),37;break;case 31:return this.begin("enterprise_boundary"),34;break;case 32:return this.begin("system_boundary"),36;break;case 33:return this.begin("container_ext_queue"),57;break;case 34:return this.begin("container_ext_db"),56;break;case 35:return this.begin("container_ext"),55;break;case 36:return this.begin("container_queue"),54;break;case 37:return this.begin("container_db"),53;break;case 38:return this.begin("container"),52;break;case 39:return this.begin("container_boundary"),38;break;case 40:return this.begin("component_ext_queue"),63;break;case 41:return this.begin("component_ext_db"),62;break;case 42:return this.begin("component_ext"),61;break;case 43:return this.begin("component_queue"),60;break;case 44:return this.begin("component_db"),59;break;case 45:return this.begin("component"),58;break;case 46:return this.begin("node"),39;break;case 47:return this.begin("node"),39;break;case 48:return this.begin("node_l"),40;break;case 49:return this.begin("node_r"),41;break;case 50:return this.begin("rel"),64;break;case 51:return this.begin("birel"),65;break;case 52:return this.begin("rel_u"),66;break;case 53:return this.begin("rel_u"),66;break;case 54:return this.begin("rel_d"),67;break;case 55:return this.begin("rel_d"),67;break;case 56:return this.begin("rel_l"),68;break;case 57:return this.begin("rel_l"),68;break;case 58:return this.begin("rel_r"),69;break;case 59:return this.begin("rel_r"),69;break;case 60:return this.begin("rel_b"),70;break;case 61:return this.begin("rel_index"),71;break;case 62:return this.begin("update_el_style"),72;break;case 63:return this.begin("update_rel_style"),73;break;case 64:return this.begin("update_layout_config"),74;break;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";break;case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";break;case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return ze}();ge.lexer=Ge;function He(){this.yy={}}return o(He,"Parser"),He.prototype=ge,ge.Parser=He,new He}();gy.parser=gy;GF=gy});var CC,$n,r0=M(()=>{"use strict";CC=o((t,e,{depth:r=2,clobber:n=!1}={})=>{let i={depth:r,clobber:n};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(a=>CC(t,a,i)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(a=>{t.includes(a)||t.push(a)}),t):t===void 0||r<=0?t!=null&&typeof t=="object"&&typeof e=="object"?Object.assign(t,e):e:(e!==void 0&&typeof t=="object"&&typeof e=="object"&&Object.keys(e).forEach(a=>{typeof e[a]=="object"&&(t[a]===void 0||typeof t[a]=="object")?(t[a]===void 0&&(t[a]=Array.isArray(e[a])?[]:{}),t[a]=CC(t[a],e[a],{depth:r-1,clobber:n})):(n||typeof t[a]!="object"&&typeof e[a]!="object")&&(t[a]=e[a])}),t)},"assignWithDepth"),$n=CC});var _4,$F,VF=M(()=>{"use strict";_4={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:o(t=>t>=255?255:t<0?0:t,"r"),g:o(t=>t>=255?255:t<0?0:t,"g"),b:o(t=>t>=255?255:t<0?0:t,"b"),h:o(t=>t%360,"h"),s:o(t=>t>=100?100:t<0?0:t,"s"),l:o(t=>t>=100?100:t<0?0:t,"l"),a:o(t=>t>=1?1:t<0?0:t,"a")},toLinear:o(t=>{let e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},"toLinear"),hue2rgb:o((t,e,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<.16666666666666666?t+(e-t)*6*r:r<.5?e:r<.6666666666666666?t+(e-t)*(.6666666666666666-r)*6:t),"hue2rgb"),hsl2rgb:o(({h:t,s:e,l:r},n)=>{if(!e)return r*2.55;t/=360,e/=100,r/=100;let i=r<.5?r*(1+e):r+e-r*e,a=2*r-i;switch(n){case"r":return _4.hue2rgb(a,i,t+.3333333333333333)*255;case"g":return _4.hue2rgb(a,i,t)*255;case"b":return _4.hue2rgb(a,i,t-.3333333333333333)*255}},"hsl2rgb"),rgb2hsl:o(({r:t,g:e,b:r},n)=>{t/=255,e/=255,r/=255;let i=Math.max(t,e,r),a=Math.min(t,e,r),s=(i+a)/2;if(n==="l")return s*100;if(i===a)return 0;let l=i-a,u=s>.5?l/(2-i-a):l/(i+a);if(n==="s")return u*100;switch(i){case t:return((e-r)/l+(e{"use strict";F2e={clamp:o((t,e,r)=>e>r?Math.min(e,Math.max(r,t)):Math.min(r,Math.max(e,t)),"clamp"),round:o(t=>Math.round(t*1e10)/1e10,"round")},UF=F2e});var z2e,WF,qF=M(()=>{"use strict";z2e={dec2hex:o(t=>{let e=Math.round(t).toString(16);return e.length>1?e:`0${e}`},"dec2hex")},WF=z2e});var G2e,jt,Wl=M(()=>{"use strict";VF();HF();qF();G2e={channel:$F,lang:UF,unit:WF},jt=G2e});var Jc,Mi,yy=M(()=>{"use strict";Wl();Jc={};for(let t=0;t<=255;t++)Jc[t]=jt.unit.dec2hex(t);Mi={ALL:0,RGB:1,HSL:2}});var AC,YF,XF=M(()=>{"use strict";yy();AC=class{static{o(this,"Type")}constructor(){this.type=Mi.ALL}get(){return this.type}set(e){if(this.type&&this.type!==e)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=e}reset(){this.type=Mi.ALL}is(e){return this.type===e}},YF=AC});var _C,jF,KF=M(()=>{"use strict";Wl();XF();yy();_C=class{static{o(this,"Channels")}constructor(e,r){this.color=r,this.changed=!1,this.data=e,this.type=new YF}set(e,r){return this.color=r,this.changed=!1,this.data=e,this.type.type=Mi.ALL,this}_ensureHSL(){let e=this.data,{h:r,s:n,l:i}=e;r===void 0&&(e.h=jt.channel.rgb2hsl(e,"h")),n===void 0&&(e.s=jt.channel.rgb2hsl(e,"s")),i===void 0&&(e.l=jt.channel.rgb2hsl(e,"l"))}_ensureRGB(){let e=this.data,{r,g:n,b:i}=e;r===void 0&&(e.r=jt.channel.hsl2rgb(e,"r")),n===void 0&&(e.g=jt.channel.hsl2rgb(e,"g")),i===void 0&&(e.b=jt.channel.hsl2rgb(e,"b"))}get r(){let e=this.data,r=e.r;return!this.type.is(Mi.HSL)&&r!==void 0?r:(this._ensureHSL(),jt.channel.hsl2rgb(e,"r"))}get g(){let e=this.data,r=e.g;return!this.type.is(Mi.HSL)&&r!==void 0?r:(this._ensureHSL(),jt.channel.hsl2rgb(e,"g"))}get b(){let e=this.data,r=e.b;return!this.type.is(Mi.HSL)&&r!==void 0?r:(this._ensureHSL(),jt.channel.hsl2rgb(e,"b"))}get h(){let e=this.data,r=e.h;return!this.type.is(Mi.RGB)&&r!==void 0?r:(this._ensureRGB(),jt.channel.rgb2hsl(e,"h"))}get s(){let e=this.data,r=e.s;return!this.type.is(Mi.RGB)&&r!==void 0?r:(this._ensureRGB(),jt.channel.rgb2hsl(e,"s"))}get l(){let e=this.data,r=e.l;return!this.type.is(Mi.RGB)&&r!==void 0?r:(this._ensureRGB(),jt.channel.rgb2hsl(e,"l"))}get a(){return this.data.a}set r(e){this.type.set(Mi.RGB),this.changed=!0,this.data.r=e}set g(e){this.type.set(Mi.RGB),this.changed=!0,this.data.g=e}set b(e){this.type.set(Mi.RGB),this.changed=!0,this.data.b=e}set h(e){this.type.set(Mi.HSL),this.changed=!0,this.data.h=e}set s(e){this.type.set(Mi.HSL),this.changed=!0,this.data.s=e}set l(e){this.type.set(Mi.HSL),this.changed=!0,this.data.l=e}set a(e){this.changed=!0,this.data.a=e}},jF=_C});var $2e,th,vy=M(()=>{"use strict";KF();$2e=new jF({r:0,g:0,b:0,a:0},"transparent"),th=$2e});var QF,qf,DC=M(()=>{"use strict";vy();yy();QF={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:o(t=>{if(t.charCodeAt(0)!==35)return;let e=t.match(QF.re);if(!e)return;let r=e[1],n=parseInt(r,16),i=r.length,a=i%4===0,s=i>4,l=s?1:17,u=s?8:4,h=a?0:-1,f=s?255:15;return th.set({r:(n>>u*(h+3)&f)*l,g:(n>>u*(h+2)&f)*l,b:(n>>u*(h+1)&f)*l,a:a?(n&f)*l/255:1},t)},"parse"),stringify:o(t=>{let{r:e,g:r,b:n,a:i}=t;return i<1?`#${Jc[Math.round(e)]}${Jc[Math.round(r)]}${Jc[Math.round(n)]}${Jc[Math.round(i*255)]}`:`#${Jc[Math.round(e)]}${Jc[Math.round(r)]}${Jc[Math.round(n)]}`},"stringify")},qf=QF});var D4,xy,ZF=M(()=>{"use strict";Wl();vy();D4={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:o(t=>{let e=t.match(D4.hueRe);if(e){let[,r,n]=e;switch(n){case"grad":return jt.channel.clamp.h(parseFloat(r)*.9);case"rad":return jt.channel.clamp.h(parseFloat(r)*180/Math.PI);case"turn":return jt.channel.clamp.h(parseFloat(r)*360)}}return jt.channel.clamp.h(parseFloat(t))},"_hue2deg"),parse:o(t=>{let e=t.charCodeAt(0);if(e!==104&&e!==72)return;let r=t.match(D4.re);if(!r)return;let[,n,i,a,s,l]=r;return th.set({h:D4._hue2deg(n),s:jt.channel.clamp.s(parseFloat(i)),l:jt.channel.clamp.l(parseFloat(a)),a:s?jt.channel.clamp.a(l?parseFloat(s)/100:parseFloat(s)):1},t)},"parse"),stringify:o(t=>{let{h:e,s:r,l:n,a:i}=t;return i<1?`hsla(${jt.lang.round(e)}, ${jt.lang.round(r)}%, ${jt.lang.round(n)}%, ${i})`:`hsl(${jt.lang.round(e)}, ${jt.lang.round(r)}%, ${jt.lang.round(n)}%)`},"stringify")},xy=D4});var L4,LC,JF=M(()=>{"use strict";DC();L4={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:o(t=>{t=t.toLowerCase();let e=L4.colors[t];if(e)return qf.parse(e)},"parse"),stringify:o(t=>{let e=qf.stringify(t);for(let r in L4.colors)if(L4.colors[r]===e)return r},"stringify")},LC=L4});var ez,by,tz=M(()=>{"use strict";Wl();vy();ez={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:o(t=>{let e=t.charCodeAt(0);if(e!==114&&e!==82)return;let r=t.match(ez.re);if(!r)return;let[,n,i,a,s,l,u,h,f]=r;return th.set({r:jt.channel.clamp.r(i?parseFloat(n)*2.55:parseFloat(n)),g:jt.channel.clamp.g(s?parseFloat(a)*2.55:parseFloat(a)),b:jt.channel.clamp.b(u?parseFloat(l)*2.55:parseFloat(l)),a:h?jt.channel.clamp.a(f?parseFloat(h)/100:parseFloat(h)):1},t)},"parse"),stringify:o(t=>{let{r:e,g:r,b:n,a:i}=t;return i<1?`rgba(${jt.lang.round(e)}, ${jt.lang.round(r)}, ${jt.lang.round(n)}, ${jt.lang.round(i)})`:`rgb(${jt.lang.round(e)}, ${jt.lang.round(r)}, ${jt.lang.round(n)})`},"stringify")},by=ez});var V2e,Ii,eu=M(()=>{"use strict";DC();ZF();JF();tz();yy();V2e={format:{keyword:LC,hex:qf,rgb:by,rgba:by,hsl:xy,hsla:xy},parse:o(t=>{if(typeof t!="string")return t;let e=qf.parse(t)||by.parse(t)||xy.parse(t)||LC.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},"parse"),stringify:o(t=>!t.changed&&t.color?t.color:t.type.is(Mi.HSL)||t.data.r===void 0?xy.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?by.stringify(t):qf.stringify(t),"stringify")},Ii=V2e});var U2e,R4,RC=M(()=>{"use strict";Wl();eu();U2e=o((t,e)=>{let r=Ii.parse(t);for(let n in e)r[n]=jt.channel.clamp[n](e[n]);return Ii.stringify(r)},"change"),R4=U2e});var H2e,Wa,NC=M(()=>{"use strict";Wl();vy();eu();RC();H2e=o((t,e,r=0,n=1)=>{if(typeof t!="number")return R4(t,{a:e});let i=th.set({r:jt.channel.clamp.r(t),g:jt.channel.clamp.g(e),b:jt.channel.clamp.b(r),a:jt.channel.clamp.a(n)});return Ii.stringify(i)},"rgba"),Wa=H2e});var W2e,Yf,rz=M(()=>{"use strict";Wl();eu();W2e=o((t,e)=>jt.lang.round(Ii.parse(t)[e]),"channel"),Yf=W2e});var q2e,nz,iz=M(()=>{"use strict";Wl();eu();q2e=o(t=>{let{r:e,g:r,b:n}=Ii.parse(t),i=.2126*jt.channel.toLinear(e)+.7152*jt.channel.toLinear(r)+.0722*jt.channel.toLinear(n);return jt.lang.round(i)},"luminance"),nz=q2e});var Y2e,az,sz=M(()=>{"use strict";iz();Y2e=o(t=>nz(t)>=.5,"isLight"),az=Y2e});var X2e,sa,oz=M(()=>{"use strict";sz();X2e=o(t=>!az(t),"isDark"),sa=X2e});var j2e,N4,MC=M(()=>{"use strict";Wl();eu();j2e=o((t,e,r)=>{let n=Ii.parse(t),i=n[e],a=jt.channel.clamp[e](i+r);return i!==a&&(n[e]=a),Ii.stringify(n)},"adjustChannel"),N4=j2e});var K2e,Dt,lz=M(()=>{"use strict";MC();K2e=o((t,e)=>N4(t,"l",e),"lighten"),Dt=K2e});var Q2e,It,cz=M(()=>{"use strict";MC();Q2e=o((t,e)=>N4(t,"l",-e),"darken"),It=Q2e});var Z2e,Me,uz=M(()=>{"use strict";eu();RC();Z2e=o((t,e)=>{let r=Ii.parse(t),n={};for(let i in e)e[i]&&(n[i]=r[i]+e[i]);return R4(t,n)},"adjust"),Me=Z2e});var J2e,hz,fz=M(()=>{"use strict";eu();NC();J2e=o((t,e,r=50)=>{let{r:n,g:i,b:a,a:s}=Ii.parse(t),{r:l,g:u,b:h,a:f}=Ii.parse(e),d=r/100,p=d*2-1,m=s-f,y=((p*m===-1?p:(p+m)/(1+p*m))+1)/2,v=1-y,x=n*y+l*v,b=i*y+u*v,w=a*y+h*v,C=s*d+f*(1-d);return Wa(x,b,w,C)},"mix"),hz=J2e});var exe,wt,dz=M(()=>{"use strict";eu();fz();exe=o((t,e=100)=>{let r=Ii.parse(t);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,hz(r,t,e)},"invert"),wt=exe});var pz=M(()=>{"use strict";NC();rz();oz();lz();cz();uz();dz()});var Vs=M(()=>{"use strict";pz()});var rh,nh,wy=M(()=>{"use strict";rh="#ffffff",nh="#f2f2f2"});var bi,n0=M(()=>{"use strict";Vs();bi=o((t,e)=>e?Me(t,{s:-40,l:10}):Me(t,{s:-40,l:-10}),"mkBorder")});var OC,mz,gz=M(()=>{"use strict";Vs();wy();n0();OC=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||Me(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||Me(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||bi(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||bi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||bi(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||bi(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||wt(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||wt(this.tertiaryColor),this.lineColor=this.lineColor||wt(this.background),this.arrowheadColor=this.arrowheadColor||wt(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?It(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||It(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||wt(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Dt(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.darkMode?(this.rowOdd=this.rowOdd||It(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||It(this.mainBkg,10)):(this.rowOdd=this.rowOdd||Dt(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||Dt(this.mainBkg,5)),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Me(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Me(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Me(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Me(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Me(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Me(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||Me(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Me(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Me(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},mz=o(t=>{let e=new OC;return e.calculate(t),e},"getThemeVariables")});var PC,yz,vz=M(()=>{"use strict";Vs();n0();PC=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Dt(this.primaryColor,16),this.tertiaryColor=Me(this.primaryColor,{h:-160}),this.primaryBorderColor=wt(this.background),this.secondaryBorderColor=bi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=bi(this.tertiaryColor,this.darkMode),this.primaryTextColor=wt(this.primaryColor),this.secondaryTextColor=wt(this.secondaryColor),this.tertiaryTextColor=wt(this.tertiaryColor),this.lineColor=wt(this.background),this.textColor=wt(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Dt(wt("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=Wa(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=It("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=It(this.sectionBkgColor,10),this.taskBorderColor=Wa(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=Wa(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||Dt(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||It(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=Dt(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=Dt(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=Dt(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=Me(this.primaryColor,{h:64}),this.fillType3=Me(this.secondaryColor,{h:64}),this.fillType4=Me(this.primaryColor,{h:-64}),this.fillType5=Me(this.secondaryColor,{h:-64}),this.fillType6=Me(this.primaryColor,{h:128}),this.fillType7=Me(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Me(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Me(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Me(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Me(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Me(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Me(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Me(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Me(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Me(this.primaryColor,{h:330});for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},yz=o(t=>{let e=new PC;return e.calculate(t),e},"getThemeVariables")});var BC,i0,M4=M(()=>{"use strict";Vs();n0();wy();BC=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=Me(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=Me(this.primaryColor,{h:-160}),this.primaryBorderColor=bi(this.primaryColor,this.darkMode),this.secondaryBorderColor=bi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=bi(this.tertiaryColor,this.darkMode),this.primaryTextColor=wt(this.primaryColor),this.secondaryTextColor=wt(this.secondaryColor),this.tertiaryTextColor=wt(this.tertiaryColor),this.lineColor=wt(this.background),this.textColor=wt(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=Wa(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Me(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Me(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Me(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Me(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Me(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Me(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Me(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Me(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Me(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||It(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||It(this.tertiaryColor,40);for(let e=0;e{this[n]==="calculated"&&(this[n]=void 0)}),typeof e!="object"){this.updateColors();return}let r=Object.keys(e);r.forEach(n=>{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},i0=o(t=>{let e=new BC;return e.calculate(t),e},"getThemeVariables")});var FC,xz,bz=M(()=>{"use strict";Vs();wy();n0();FC=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=Dt("#cde498",10),this.primaryBorderColor=bi(this.primaryColor,this.darkMode),this.secondaryBorderColor=bi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=bi(this.tertiaryColor,this.darkMode),this.primaryTextColor=wt(this.primaryColor),this.secondaryTextColor=wt(this.secondaryColor),this.tertiaryTextColor=wt(this.primaryColor),this.lineColor=wt(this.background),this.textColor=wt(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=It(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Me(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Me(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Me(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Me(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Me(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Me(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Me(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Me(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Me(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||It(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||It(this.tertiaryColor,40);for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},xz=o(t=>{let e=new FC;return e.calculate(t),e},"getThemeVariables")});var zC,wz,Tz=M(()=>{"use strict";Vs();n0();wy();zC=class{static{o(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=Dt(this.contrast,55),this.background="#ffffff",this.tertiaryColor=Me(this.primaryColor,{h:-160}),this.primaryBorderColor=bi(this.primaryColor,this.darkMode),this.secondaryBorderColor=bi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=bi(this.tertiaryColor,this.darkMode),this.primaryTextColor=wt(this.primaryColor),this.secondaryTextColor=wt(this.secondaryColor),this.tertiaryTextColor=wt(this.tertiaryColor),this.lineColor=wt(this.background),this.textColor=wt(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||Dt(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=Dt(this.contrast,55),this.border2=this.contrast,this.actorBorder=Dt(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},wz=o(t=>{let e=new zC;return e.calculate(t),e},"getThemeVariables")});var vo,I4=M(()=>{"use strict";gz();vz();M4();bz();Tz();vo={base:{getThemeVariables:mz},dark:{getThemeVariables:yz},default:{getThemeVariables:i0},forest:{getThemeVariables:xz},neutral:{getThemeVariables:wz}}});var tu,kz=M(()=>{"use strict";tu={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1}});var Ez,Sz,Cz,cr,ps=M(()=>{"use strict";I4();kz();Ez={...tu,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF"},themeCSS:void 0,themeVariables:vo.default.getThemeVariables(),sequence:{...tu.sequence,messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:o(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:o(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1},gantt:{...tu.gantt,tickInterval:void 0,useWidth:void 0},c4:{...tu.c4,useWidth:void 0,personFont:o(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),external_personFont:o(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:o(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:o(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:o(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:o(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:o(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:o(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:o(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:o(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:o(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:o(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:o(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:o(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:o(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:o(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:o(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:o(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:o(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:o(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:o(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...tu.pie,useWidth:984},xyChart:{...tu.xyChart,useWidth:void 0},requirement:{...tu.requirement,useWidth:void 0},packet:{...tu.packet}},Sz=o((t,e="")=>Object.keys(t).reduce((r,n)=>Array.isArray(t[n])?r:typeof t[n]=="object"&&t[n]!==null?[...r,e+n,...Sz(t[n],"")]:[...r,e+n],[]),"keyify"),Cz=new Set(Sz(Ez,"")),cr=Ez});var a0,txe,GC=M(()=>{"use strict";ps();vt();a0=o(t=>{if(Y.debug("sanitizeDirective called with",t),!(typeof t!="object"||t==null)){if(Array.isArray(t)){t.forEach(e=>a0(e));return}for(let e of Object.keys(t)){if(Y.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!Cz.has(e)||t[e]==null){Y.debug("sanitize deleting key: ",e),delete t[e];continue}if(typeof t[e]=="object"){Y.debug("sanitizing object",e),a0(t[e]);continue}let r=["themeCSS","fontFamily","altFontFamily"];for(let n of r)e.includes(n)&&(Y.debug("sanitizing css option",e),t[e]=txe(t[e]))}if(t.themeVariables)for(let e of Object.keys(t.themeVariables)){let r=t.themeVariables[e];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}Y.debug("After sanitization",t)}},"sanitizeDirective"),txe=o(t=>{let e=0,r=0;for(let n of t){if(e{"use strict";r0();vt();I4();ps();GC();ih=Object.freeze(cr),ms=$n({},ih),s0=[],Ty=$n({},ih),O4=o((t,e)=>{let r=$n({},t),n={};for(let i of e)Rz(i),n=$n(n,i);if(r=$n(r,n),n.theme&&n.theme in vo){let i=$n({},_z),a=$n(i.themeVariables||{},n.themeVariables);r.theme&&r.theme in vo&&(r.themeVariables=vo[r.theme].getThemeVariables(a))}return Ty=r,Mz(Ty),Ty},"updateCurrentConfig"),$C=o(t=>(ms=$n({},ih),ms=$n(ms,t),t.theme&&vo[t.theme]&&(ms.themeVariables=vo[t.theme].getThemeVariables(t.themeVariables)),O4(ms,s0),ms),"setSiteConfig"),Dz=o(t=>{_z=$n({},t)},"saveConfigFromInitialize"),Lz=o(t=>(ms=$n(ms,t),O4(ms,s0),ms),"updateSiteConfig"),VC=o(()=>$n({},ms),"getSiteConfig"),P4=o(t=>(Mz(t),$n(Ty,t),mr()),"setConfig"),mr=o(()=>$n({},Ty),"getConfig"),Rz=o(t=>{t&&(["secure",...ms.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(Y.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])}),Object.keys(t).forEach(e=>{e.startsWith("__")&&delete t[e]}),Object.keys(t).forEach(e=>{typeof t[e]=="string"&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],typeof t[e]=="object"&&Rz(t[e])}))},"sanitize"),Nz=o(t=>{a0(t),t.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables={...t.themeVariables,fontFamily:t.fontFamily}),s0.push(t),O4(ms,s0)},"addDirective"),ky=o((t=ms)=>{s0=[],O4(t,s0)},"reset"),rxe={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},Az={},nxe=o(t=>{Az[t]||(Y.warn(rxe[t]),Az[t]=!0)},"issueWarning"),Mz=o(t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&nxe("LAZY_LOAD_DEPRECATED")},"checkConfig")});function Xa(t){return function(e){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i2&&arguments[2]!==void 0?arguments[2]:z4;Iz&&Iz(t,null);let n=e.length;for(;n--;){let i=e[n];if(typeof i=="string"){let a=r(i);a!==i&&(ixe(e)||(e[n]=a),i=a)}t[i]=!0}return t}function fxe(t){for(let e=0;e0&&arguments[0]!==void 0?arguments[0]:kxe(),e=o(At=>Yz(At),"DOMPurify");if(e.version="3.2.4",e.removed=[],!t||!t.document||t.document.nodeType!==_y.document||!t.Element)return e.isSupported=!1,e;let{document:r}=t,n=r,i=n.currentScript,{DocumentFragment:a,HTMLTemplateElement:s,Node:l,Element:u,NodeFilter:h,NamedNodeMap:f=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:d,DOMParser:p,trustedTypes:m}=t,g=u.prototype,y=Ay(g,"cloneNode"),v=Ay(g,"remove"),x=Ay(g,"nextSibling"),b=Ay(g,"childNodes"),w=Ay(g,"parentNode");if(typeof s=="function"){let At=r.createElement("template");At.content&&At.content.ownerDocument&&(r=At.content.ownerDocument)}let C,T="",{implementation:E,createNodeIterator:A,createDocumentFragment:S,getElementsByTagName:_}=r,{importNode:I}=n,D=Vz();e.isSupported=typeof Uz=="function"&&typeof w=="function"&&E&&E.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:k,ERB_EXPR:L,TMPLIT_EXPR:R,DATA_ATTR:O,ARIA_ATTR:N,IS_SCRIPT_OR_DATA:B,ATTR_WHITESPACE:F,CUSTOM_ELEMENT:P}=$z,{IS_ALLOWED_URI:G}=$z,z=null,H=Cr({},[...Bz,...HC,...WC,...qC,...Fz]),Q=null,j=Cr({},[...zz,...YC,...Gz,...F4]),ie=Object.seal(Hz(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ne=null,le=null,he=!0,K=!0,X=!1,te=!0,J=!1,se=!0,ue=!1,Z=!1,Se=!1,ce=!1,ae=!1,Oe=!1,ge=!0,Ge=!1,He="user-content-",ze=!0,Re=!1,Ie={},be=null,W=Cr({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),de=null,re=Cr({},["audio","video","img","source","image","track"]),oe=null,V=Cr({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),xe="http://www.w3.org/1998/Math/MathML",q="http://www.w3.org/2000/svg",pe="http://www.w3.org/1999/xhtml",ve=pe,Pe=!1,_e=null,we=Cr({},[xe,q,pe],UC),Ve=Cr({},["mi","mo","mn","ms","mtext"]),De=Cr({},["annotation-xml"]),qe=Cr({},["title","style","font","a","script"]),at=null,Lt=["application/xhtml+xml","text/html"],st="text/html",Ue=null,ct=null,We=r.createElement("form"),ot=o(function(Ce){return Ce instanceof RegExp||Ce instanceof Function},"isRegexOrFunction"),Yt=o(function(){let Ce=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(ct&&ct===Ce)){if((!Ce||typeof Ce!="object")&&(Ce={}),Ce=Xf(Ce),at=Lt.indexOf(Ce.PARSER_MEDIA_TYPE)===-1?st:Ce.PARSER_MEDIA_TYPE,Ue=at==="application/xhtml+xml"?UC:z4,z=nl(Ce,"ALLOWED_TAGS")?Cr({},Ce.ALLOWED_TAGS,Ue):H,Q=nl(Ce,"ALLOWED_ATTR")?Cr({},Ce.ALLOWED_ATTR,Ue):j,_e=nl(Ce,"ALLOWED_NAMESPACES")?Cr({},Ce.ALLOWED_NAMESPACES,UC):we,oe=nl(Ce,"ADD_URI_SAFE_ATTR")?Cr(Xf(V),Ce.ADD_URI_SAFE_ATTR,Ue):V,de=nl(Ce,"ADD_DATA_URI_TAGS")?Cr(Xf(re),Ce.ADD_DATA_URI_TAGS,Ue):re,be=nl(Ce,"FORBID_CONTENTS")?Cr({},Ce.FORBID_CONTENTS,Ue):W,ne=nl(Ce,"FORBID_TAGS")?Cr({},Ce.FORBID_TAGS,Ue):{},le=nl(Ce,"FORBID_ATTR")?Cr({},Ce.FORBID_ATTR,Ue):{},Ie=nl(Ce,"USE_PROFILES")?Ce.USE_PROFILES:!1,he=Ce.ALLOW_ARIA_ATTR!==!1,K=Ce.ALLOW_DATA_ATTR!==!1,X=Ce.ALLOW_UNKNOWN_PROTOCOLS||!1,te=Ce.ALLOW_SELF_CLOSE_IN_ATTR!==!1,J=Ce.SAFE_FOR_TEMPLATES||!1,se=Ce.SAFE_FOR_XML!==!1,ue=Ce.WHOLE_DOCUMENT||!1,ce=Ce.RETURN_DOM||!1,ae=Ce.RETURN_DOM_FRAGMENT||!1,Oe=Ce.RETURN_TRUSTED_TYPE||!1,Se=Ce.FORCE_BODY||!1,ge=Ce.SANITIZE_DOM!==!1,Ge=Ce.SANITIZE_NAMED_PROPS||!1,ze=Ce.KEEP_CONTENT!==!1,Re=Ce.IN_PLACE||!1,G=Ce.ALLOWED_URI_REGEXP||Wz,ve=Ce.NAMESPACE||pe,Ve=Ce.MATHML_TEXT_INTEGRATION_POINTS||Ve,De=Ce.HTML_INTEGRATION_POINTS||De,ie=Ce.CUSTOM_ELEMENT_HANDLING||{},Ce.CUSTOM_ELEMENT_HANDLING&&ot(Ce.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(ie.tagNameCheck=Ce.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Ce.CUSTOM_ELEMENT_HANDLING&&ot(Ce.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(ie.attributeNameCheck=Ce.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Ce.CUSTOM_ELEMENT_HANDLING&&typeof Ce.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(ie.allowCustomizedBuiltInElements=Ce.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),J&&(K=!1),ae&&(ce=!0),Ie&&(z=Cr({},Fz),Q=[],Ie.html===!0&&(Cr(z,Bz),Cr(Q,zz)),Ie.svg===!0&&(Cr(z,HC),Cr(Q,YC),Cr(Q,F4)),Ie.svgFilters===!0&&(Cr(z,WC),Cr(Q,YC),Cr(Q,F4)),Ie.mathMl===!0&&(Cr(z,qC),Cr(Q,Gz),Cr(Q,F4))),Ce.ADD_TAGS&&(z===H&&(z=Xf(z)),Cr(z,Ce.ADD_TAGS,Ue)),Ce.ADD_ATTR&&(Q===j&&(Q=Xf(Q)),Cr(Q,Ce.ADD_ATTR,Ue)),Ce.ADD_URI_SAFE_ATTR&&Cr(oe,Ce.ADD_URI_SAFE_ATTR,Ue),Ce.FORBID_CONTENTS&&(be===W&&(be=Xf(be)),Cr(be,Ce.FORBID_CONTENTS,Ue)),ze&&(z["#text"]=!0),ue&&Cr(z,["html","head","body"]),z.table&&(Cr(z,["tbody"]),delete ne.tbody),Ce.TRUSTED_TYPES_POLICY){if(typeof Ce.TRUSTED_TYPES_POLICY.createHTML!="function")throw Cy('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Ce.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Cy('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');C=Ce.TRUSTED_TYPES_POLICY,T=C.createHTML("")}else C===void 0&&(C=Exe(m,i)),C!==null&&typeof T=="string"&&(T=C.createHTML(""));Ya&&Ya(Ce),ct=Ce}},"_parseConfig"),bt=Cr({},[...HC,...WC,...dxe]),Nt=Cr({},[...qC,...pxe]),xt=o(function(Ce){let tt=w(Ce);(!tt||!tt.tagName)&&(tt={namespaceURI:ve,tagName:"template"});let St=z4(Ce.tagName),dr=z4(tt.tagName);return _e[Ce.namespaceURI]?Ce.namespaceURI===q?tt.namespaceURI===pe?St==="svg":tt.namespaceURI===xe?St==="svg"&&(dr==="annotation-xml"||Ve[dr]):!!bt[St]:Ce.namespaceURI===xe?tt.namespaceURI===pe?St==="math":tt.namespaceURI===q?St==="math"&&De[dr]:!!Nt[St]:Ce.namespaceURI===pe?tt.namespaceURI===q&&!De[dr]||tt.namespaceURI===xe&&!Ve[dr]?!1:!Nt[St]&&(qe[St]||!bt[St]):!!(at==="application/xhtml+xml"&&_e[Ce.namespaceURI]):!1},"_checkValidNamespace"),ut=o(function(Ce){Ey(e.removed,{element:Ce});try{w(Ce).removeChild(Ce)}catch{v(Ce)}},"_forceRemove"),Et=o(function(Ce,tt){try{Ey(e.removed,{attribute:tt.getAttributeNode(Ce),from:tt})}catch{Ey(e.removed,{attribute:null,from:tt})}if(tt.removeAttribute(Ce),Ce==="is")if(ce||ae)try{ut(tt)}catch{}else try{tt.setAttribute(Ce,"")}catch{}},"_removeAttribute"),ft=o(function(Ce){let tt=null,St=null;if(Se)Ce=""+Ce;else{let gn=Pz(Ce,/^[\r\n\t ]+/);St=gn&&gn[0]}at==="application/xhtml+xml"&&ve===pe&&(Ce=''+Ce+"");let dr=C?C.createHTML(Ce):Ce;if(ve===pe)try{tt=new p().parseFromString(dr,at)}catch{}if(!tt||!tt.documentElement){tt=E.createDocument(ve,"template",null);try{tt.documentElement.innerHTML=Pe?T:dr}catch{}}let rn=tt.body||tt.documentElement;return Ce&&St&&rn.insertBefore(r.createTextNode(St),rn.childNodes[0]||null),ve===pe?_.call(tt,ue?"html":"body")[0]:ue?tt.documentElement:rn},"_initDocument"),yt=o(function(Ce){return A.call(Ce.ownerDocument||Ce,Ce,h.SHOW_ELEMENT|h.SHOW_COMMENT|h.SHOW_TEXT|h.SHOW_PROCESSING_INSTRUCTION|h.SHOW_CDATA_SECTION,null)},"_createNodeIterator"),nt=o(function(Ce){return Ce instanceof d&&(typeof Ce.nodeName!="string"||typeof Ce.textContent!="string"||typeof Ce.removeChild!="function"||!(Ce.attributes instanceof f)||typeof Ce.removeAttribute!="function"||typeof Ce.setAttribute!="function"||typeof Ce.namespaceURI!="string"||typeof Ce.insertBefore!="function"||typeof Ce.hasChildNodes!="function")},"_isClobbered"),dn=o(function(Ce){return typeof l=="function"&&Ce instanceof l},"_isNode");function Tt(At,Ce,tt){B4(At,St=>{St.call(e,Ce,tt,ct)})}o(Tt,"_executeHooks");let On=o(function(Ce){let tt=null;if(Tt(D.beforeSanitizeElements,Ce,null),nt(Ce))return ut(Ce),!0;let St=Ue(Ce.nodeName);if(Tt(D.uponSanitizeElement,Ce,{tagName:St,allowedTags:z}),Ce.hasChildNodes()&&!dn(Ce.firstElementChild)&&qa(/<[/\w]/g,Ce.innerHTML)&&qa(/<[/\w]/g,Ce.textContent)||Ce.nodeType===_y.progressingInstruction||se&&Ce.nodeType===_y.comment&&qa(/<[/\w]/g,Ce.data))return ut(Ce),!0;if(!z[St]||ne[St]){if(!ne[St]&&Ar(St)&&(ie.tagNameCheck instanceof RegExp&&qa(ie.tagNameCheck,St)||ie.tagNameCheck instanceof Function&&ie.tagNameCheck(St)))return!1;if(ze&&!be[St]){let dr=w(Ce)||Ce.parentNode,rn=b(Ce)||Ce.childNodes;if(rn&&dr){let gn=rn.length;for(let Qr=gn-1;Qr>=0;--Qr){let Ri=y(rn[Qr],!0);Ri.__removalCount=(Ce.__removalCount||0)+1,dr.insertBefore(Ri,x(Ce))}}}return ut(Ce),!0}return Ce instanceof u&&!xt(Ce)||(St==="noscript"||St==="noembed"||St==="noframes")&&qa(/<\/no(script|embed|frames)/i,Ce.innerHTML)?(ut(Ce),!0):(J&&Ce.nodeType===_y.text&&(tt=Ce.textContent,B4([k,L,R],dr=>{tt=Sy(tt,dr," ")}),Ce.textContent!==tt&&(Ey(e.removed,{element:Ce.cloneNode()}),Ce.textContent=tt)),Tt(D.afterSanitizeElements,Ce,null),!1)},"_sanitizeElements"),tn=o(function(Ce,tt,St){if(ge&&(tt==="id"||tt==="name")&&(St in r||St in We))return!1;if(!(K&&!le[tt]&&qa(O,tt))){if(!(he&&qa(N,tt))){if(!Q[tt]||le[tt]){if(!(Ar(Ce)&&(ie.tagNameCheck instanceof RegExp&&qa(ie.tagNameCheck,Ce)||ie.tagNameCheck instanceof Function&&ie.tagNameCheck(Ce))&&(ie.attributeNameCheck instanceof RegExp&&qa(ie.attributeNameCheck,tt)||ie.attributeNameCheck instanceof Function&&ie.attributeNameCheck(tt))||tt==="is"&&ie.allowCustomizedBuiltInElements&&(ie.tagNameCheck instanceof RegExp&&qa(ie.tagNameCheck,St)||ie.tagNameCheck instanceof Function&&ie.tagNameCheck(St))))return!1}else if(!oe[tt]){if(!qa(G,Sy(St,F,""))){if(!((tt==="src"||tt==="xlink:href"||tt==="href")&&Ce!=="script"&&cxe(St,"data:")===0&&de[Ce])){if(!(X&&!qa(B,Sy(St,F,"")))){if(St)return!1}}}}}}return!0},"_isValidAttribute"),Ar=o(function(Ce){return Ce!=="annotation-xml"&&Pz(Ce,P)},"_isBasicCustomElement"),_r=o(function(Ce){Tt(D.beforeSanitizeAttributes,Ce,null);let{attributes:tt}=Ce;if(!tt||nt(Ce))return;let St={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Q,forceKeepAttr:void 0},dr=tt.length;for(;dr--;){let rn=tt[dr],{name:gn,namespaceURI:Qr,value:Ri}=rn,Zn=Ue(gn),Sn=gn==="value"?Ri:uxe(Ri);if(St.attrName=Zn,St.attrValue=Sn,St.keepAttr=!0,St.forceKeepAttr=void 0,Tt(D.uponSanitizeAttribute,Ce,St),Sn=St.attrValue,Ge&&(Zn==="id"||Zn==="name")&&(Et(gn,Ce),Sn=He+Sn),se&&qa(/((--!?|])>)|<\/(style|title)/i,Sn)){Et(gn,Ce);continue}if(St.forceKeepAttr||(Et(gn,Ce),!St.keepAttr))continue;if(!te&&qa(/\/>/i,Sn)){Et(gn,Ce);continue}J&&B4([k,L,R],et=>{Sn=Sy(Sn,et," ")});let Ur=Ue(Ce.nodeName);if(tn(Ur,Zn,Sn)){if(C&&typeof m=="object"&&typeof m.getAttributeType=="function"&&!Qr)switch(m.getAttributeType(Ur,Zn)){case"TrustedHTML":{Sn=C.createHTML(Sn);break}case"TrustedScriptURL":{Sn=C.createScriptURL(Sn);break}}try{Qr?Ce.setAttributeNS(Qr,gn,Sn):Ce.setAttribute(gn,Sn),nt(Ce)?ut(Ce):Oz(e.removed)}catch{}}}Tt(D.afterSanitizeAttributes,Ce,null)},"_sanitizeAttributes"),Pn=o(function At(Ce){let tt=null,St=yt(Ce);for(Tt(D.beforeSanitizeShadowDOM,Ce,null);tt=St.nextNode();)Tt(D.uponSanitizeShadowNode,tt,null),On(tt),_r(tt),tt.content instanceof a&&At(tt.content);Tt(D.afterSanitizeShadowDOM,Ce,null)},"_sanitizeShadowDOM");return e.sanitize=function(At){let Ce=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},tt=null,St=null,dr=null,rn=null;if(Pe=!At,Pe&&(At=""),typeof At!="string"&&!dn(At))if(typeof At.toString=="function"){if(At=At.toString(),typeof At!="string")throw Cy("dirty is not a string, aborting")}else throw Cy("toString is not a function");if(!e.isSupported)return At;if(Z||Yt(Ce),e.removed=[],typeof At=="string"&&(Re=!1),Re){if(At.nodeName){let Ri=Ue(At.nodeName);if(!z[Ri]||ne[Ri])throw Cy("root node is forbidden and cannot be sanitized in-place")}}else if(At instanceof l)tt=ft(""),St=tt.ownerDocument.importNode(At,!0),St.nodeType===_y.element&&St.nodeName==="BODY"||St.nodeName==="HTML"?tt=St:tt.appendChild(St);else{if(!ce&&!J&&!ue&&At.indexOf("<")===-1)return C&&Oe?C.createHTML(At):At;if(tt=ft(At),!tt)return ce?null:Oe?T:""}tt&&Se&&ut(tt.firstChild);let gn=yt(Re?At:tt);for(;dr=gn.nextNode();)On(dr),_r(dr),dr.content instanceof a&&Pn(dr.content);if(Re)return At;if(ce){if(ae)for(rn=S.call(tt.ownerDocument);tt.firstChild;)rn.appendChild(tt.firstChild);else rn=tt;return(Q.shadowroot||Q.shadowrootmode)&&(rn=I.call(n,rn,!0)),rn}let Qr=ue?tt.outerHTML:tt.innerHTML;return ue&&z["!doctype"]&&tt.ownerDocument&&tt.ownerDocument.doctype&&tt.ownerDocument.doctype.name&&qa(qz,tt.ownerDocument.doctype.name)&&(Qr=" +`+Qr),J&&B4([k,L,R],Ri=>{Qr=Sy(Qr,Ri," ")}),C&&Oe?C.createHTML(Qr):Qr},e.setConfig=function(){let At=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Yt(At),Z=!0},e.clearConfig=function(){ct=null,Z=!1},e.isValidAttribute=function(At,Ce,tt){ct||Yt({});let St=Ue(At),dr=Ue(Ce);return tn(St,dr,tt)},e.addHook=function(At,Ce){typeof Ce=="function"&&Ey(D[At],Ce)},e.removeHook=function(At,Ce){if(Ce!==void 0){let tt=oxe(D[At],Ce);return tt===-1?void 0:lxe(D[At],tt,1)[0]}return Oz(D[At])},e.removeHooks=function(At){D[At]=[]},e.removeAllHooks=function(){D=Vz()},e}var Uz,Iz,ixe,axe,sxe,Ya,xo,Hz,XC,jC,B4,oxe,Oz,Ey,lxe,z4,UC,Pz,Sy,cxe,uxe,nl,qa,Cy,Bz,HC,WC,dxe,qC,pxe,Fz,zz,YC,Gz,F4,mxe,gxe,yxe,vxe,xxe,Wz,bxe,wxe,qz,Txe,$z,_y,kxe,Exe,Vz,ah,KC=M(()=>{"use strict";({entries:Uz,setPrototypeOf:Iz,isFrozen:ixe,getPrototypeOf:axe,getOwnPropertyDescriptor:sxe}=Object),{freeze:Ya,seal:xo,create:Hz}=Object,{apply:XC,construct:jC}=typeof Reflect<"u"&&Reflect;Ya||(Ya=o(function(e){return e},"freeze"));xo||(xo=o(function(e){return e},"seal"));XC||(XC=o(function(e,r,n){return e.apply(r,n)},"apply"));jC||(jC=o(function(e,r){return new e(...r)},"construct"));B4=Xa(Array.prototype.forEach),oxe=Xa(Array.prototype.lastIndexOf),Oz=Xa(Array.prototype.pop),Ey=Xa(Array.prototype.push),lxe=Xa(Array.prototype.splice),z4=Xa(String.prototype.toLowerCase),UC=Xa(String.prototype.toString),Pz=Xa(String.prototype.match),Sy=Xa(String.prototype.replace),cxe=Xa(String.prototype.indexOf),uxe=Xa(String.prototype.trim),nl=Xa(Object.prototype.hasOwnProperty),qa=Xa(RegExp.prototype.test),Cy=hxe(TypeError);o(Xa,"unapply");o(hxe,"unconstruct");o(Cr,"addToSet");o(fxe,"cleanArray");o(Xf,"clone");o(Ay,"lookupGetter");Bz=Ya(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),HC=Ya(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),WC=Ya(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),dxe=Ya(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),qC=Ya(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),pxe=Ya(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Fz=Ya(["#text"]),zz=Ya(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),YC=Ya(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Gz=Ya(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),F4=Ya(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),mxe=xo(/\{\{[\w\W]*|[\w\W]*\}\}/gm),gxe=xo(/<%[\w\W]*|[\w\W]*%>/gm),yxe=xo(/\$\{[\w\W]*/gm),vxe=xo(/^data-[\-\w.\u00B7-\uFFFF]+$/),xxe=xo(/^aria-[\-\w]+$/),Wz=xo(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),bxe=xo(/^(?:\w+script|data):/i),wxe=xo(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),qz=xo(/^html$/i),Txe=xo(/^[a-z][.\w]*(-[.\w]+)+$/i),$z=Object.freeze({__proto__:null,ARIA_ATTR:xxe,ATTR_WHITESPACE:wxe,CUSTOM_ELEMENT:Txe,DATA_ATTR:vxe,DOCTYPE_NAME:qz,ERB_EXPR:gxe,IS_ALLOWED_URI:Wz,IS_SCRIPT_OR_DATA:bxe,MUSTACHE_EXPR:mxe,TMPLIT_EXPR:yxe}),_y={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},kxe=o(function(){return typeof window>"u"?null:window},"getGlobal"),Exe=o(function(e,r){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let n=null,i="data-tt-policy-suffix";r&&r.hasAttribute(i)&&(n=r.getAttribute(i));let a="dompurify"+(n?"#"+n:"");try{return e.createPolicy(a,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+a+" could not be created."),null}},"_createTrustedTypesPolicy"),Vz=o(function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},"_createHooksMap");o(Yz,"createDOMPurify");ah=Yz()});var b$={};pr(b$,{default:()=>v4e});function Rxe(t){return String(t).replace(Lxe,e=>Dxe[e])}function Oxe(t){if(t.default)return t.default;var e=t.type,r=Array.isArray(e)?e[0]:e;if(typeof r!="string")return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}function Vxe(t){for(var e=0;e=i[0]&&t<=i[1])return r.name}return null}function CG(t){for(var e=0;e=Z4[e]&&t<=Z4[e+1])return!0;return!1}function Jxe(t,e){Xl[t]=e}function T7(t,e,r){if(!Xl[e])throw new Error("Font metrics not found for font: "+e+".");var n=t.charCodeAt(0),i=Xl[e][n];if(!i&&t[0]in jz&&(n=jz[t[0]].charCodeAt(0),i=Xl[e][n]),!i&&r==="text"&&CG(n)&&(i=Xl[e][77]),i)return{depth:i[0],height:i[1],italic:i[2],skew:i[3],width:i[4]}}function ebe(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!QC[e]){var r=QC[e]={cssEmPerMu:G4.quad[e]/18};for(var n in G4)G4.hasOwnProperty(n)&&(r[n]=G4[n][e])}return QC[e]}function Zz(t){if(t instanceof vs)return t;throw new Error("Expected symbolNode but got "+String(t)+".")}function ibe(t){if(t instanceof Zf)return t;throw new Error("Expected span but got "+String(t)+".")}function $(t,e,r,n,i,a){An[t][i]={font:e,group:r,replace:n},a&&n&&(An[t][n]=An[t][i])}function Rt(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=t,l={type:e,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:i},u=0;u0&&(a.push(Y4(s,e)),s=[]),a.push(n[l]));s.length>0&&a.push(Y4(s,e));var h;r?(h=Y4(Oi(r,e,!0)),h.classes=["tag"],a.push(h)):i&&a.push(i);var f=su(["katex-html"],a);if(f.setAttribute("aria-hidden","true"),h){var d=h.children[0];d.style.height=kt(f.height+f.depth),f.depth&&(d.style.verticalAlign=kt(-f.depth))}return f}function FG(t){return new Qf(t)}function nG(t,e,r,n,i){var a=xs(t,r),s;a.length===1&&a[0]instanceof ys&&Jt.contains(["mrow","mtable"],a[0].type)?s=a[0]:s=new dt.MathNode("mrow",a);var l=new dt.MathNode("annotation",[new dt.TextNode(e)]);l.setAttribute("encoding","application/x-tex");var u=new dt.MathNode("semantics",[s,l]),h=new dt.MathNode("math",[u]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&h.setAttribute("display","block");var f=i?"katex":"katex-mathml";return Be.makeSpan([f],[h])}function xr(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function C7(t){var e=c3(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function c3(t){return t&&(t.type==="atom"||sbe.hasOwnProperty(t.type))?t:null}function VG(t,e){var r=Oi(t.body,e,!0);return Pbe([t.mclass],r,e)}function UG(t,e){var r,n=xs(t.body,e);return t.mclass==="minner"?r=new dt.MathNode("mpadded",n):t.mclass==="mord"?t.isCharacterBox?(r=n[0],r.type="mi"):r=new dt.MathNode("mi",n):(t.isCharacterBox?(r=n[0],r.type="mo"):r=new dt.MathNode("mo",n),t.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):t.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):t.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}function zbe(t,e,r){var n=Bbe[t];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var i=r.callFunction("\\\\cdleft",[e[0]],[]),a={type:"atom",text:n,mode:"math",family:"rel"},s=r.callFunction("\\Big",[a],[]),l=r.callFunction("\\\\cdright",[e[1]],[]),u={type:"ordgroup",mode:"math",body:[i,s,l]};return r.callFunction("\\\\cdparent",[u],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var h={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[h],[])}default:return{type:"textord",text:" ",mode:"math"}}}function Gbe(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var r=t.fetch().text;if(r==="&"||r==="\\\\")t.consume();else if(r==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new gt("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var n=[],i=[n],a=0;a-1))if("<>AV".indexOf(h)>-1)for(var d=0;d<2;d++){for(var p=!0,m=u+1;mAV=|." after @',s[u]);var g=zbe(h,f,t),y={type:"styling",body:[g],mode:"math",style:"display"};n.push(y),l=iG()}a%2===0?n.push(l):n.shift(),n=[],i.push(n)}t.gullet.endGroup(),t.gullet.endGroup();var v=new Array(i[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:i,arraystretch:1,addJot:!0,rowGaps:[null],cols:v,colSeparationType:"CD",hLinesBeforeRow:new Array(i.length+1).fill([])}}function h3(t,e){var r=c3(t);if(r&&Jt.contains(Jbe,r.text))return r;throw r?new gt("Invalid delimiter '"+r.text+"' after '"+e.funcName+"'",t):new gt("Invalid delimiter type '"+t.type+"'",t)}function oG(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}function Kl(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=t,l={type:e,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:i},u=0;u1||!f)&&y.pop(),x.length{"use strict";Us=class t{static{o(this,"SourceLocation")}constructor(e,r,n){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=r,this.end=n}static range(e,r){return r?!e||!e.loc||!r.loc||e.loc.lexer!==r.loc.lexer?null:new t(e.loc.lexer,e.loc.start,r.loc.end):e&&e.loc}},wo=class t{static{o(this,"Token")}constructor(e,r){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=r}range(e,r){return new t(r,Us.range(this,e))}},gt=class t{static{o(this,"ParseError")}constructor(e,r){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var n="KaTeX parse error: "+e,i,a,s=r&&r.loc;if(s&&s.start<=s.end){var l=s.lexer.input;i=s.start,a=s.end,i===l.length?n+=" at end of input: ":n+=" at position "+(i+1)+": ";var u=l.slice(i,a).replace(/[^]/g,"$&\u0332"),h;i>15?h="\u2026"+l.slice(i-15,i):h=l.slice(0,i);var f;a+15":">","<":"<",'"':""","'":"'"},Lxe=/[&><"']/g;o(Rxe,"escape");SG=o(function t(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?t(e.body[0]):e:e.type==="font"?t(e.body):e},"getBaseElem"),Nxe=o(function(e){var r=SG(e);return r.type==="mathord"||r.type==="textord"||r.type==="atom"},"isCharacterBox"),Mxe=o(function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},"assert"),Ixe=o(function(e){var r=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return r?r[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(r[1])?null:r[1].toLowerCase():"_relative"},"protocolFromUrl"),Jt={contains:Sxe,deflt:Cxe,escape:Rxe,hyphenate:_xe,getBaseElem:SG,isCharacterBox:Nxe,protocolFromUrl:Ixe},Q4={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:o(t=>"#"+t,"cliProcessor")},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:o((t,e)=>(e.push(t),e),"cliProcessor")},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:o(t=>Math.max(0,t),"processor"),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:o(t=>Math.max(0,t),"processor"),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:o(t=>Math.max(0,t),"processor"),cli:"-e, --max-expand ",cliProcessor:o(t=>t==="Infinity"?1/0:parseInt(t),"cliProcessor")},globalGroup:{type:"boolean",cli:!1}};o(Oxe,"getDefaultValue");My=class{static{o(this,"Settings")}constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var r in Q4)if(Q4.hasOwnProperty(r)){var n=Q4[r];this[r]=e[r]!==void 0?n.processor?n.processor(e[r]):e[r]:Oxe(n)}}reportNonstrict(e,r,n){var i=this.strict;if(typeof i=="function"&&(i=i(e,r,n)),!(!i||i==="ignore")){if(i===!0||i==="error")throw new gt("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+e+"]"),n);i==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+e+"]"))}}useStrictBehavior(e,r,n){var i=this.strict;if(typeof i=="function")try{i=i(e,r,n)}catch{i="error"}return!i||i==="ignore"?!1:i===!0||i==="error"?!0:i==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var r=Jt.protocolFromUrl(e.url);if(r==null)return!1;e.protocol=r}var n=typeof this.trust=="function"?this.trust(e):this.trust;return!!n}},ql=class{static{o(this,"Style")}constructor(e,r,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=r,this.cramped=n}sup(){return Yl[Pxe[this.id]]}sub(){return Yl[Bxe[this.id]]}fracNum(){return Yl[Fxe[this.id]]}fracDen(){return Yl[zxe[this.id]]}cramp(){return Yl[Gxe[this.id]]}text(){return Yl[$xe[this.id]]}isTight(){return this.size>=2}},w7=0,J4=1,c0=2,iu=3,Iy=4,bo=5,u0=6,ja=7,Yl=[new ql(w7,0,!1),new ql(J4,0,!0),new ql(c0,1,!1),new ql(iu,1,!0),new ql(Iy,2,!1),new ql(bo,2,!0),new ql(u0,3,!1),new ql(ja,3,!0)],Pxe=[Iy,bo,Iy,bo,u0,ja,u0,ja],Bxe=[bo,bo,bo,bo,ja,ja,ja,ja],Fxe=[c0,iu,Iy,bo,u0,ja,u0,ja],zxe=[iu,iu,bo,bo,ja,ja,ja,ja],Gxe=[J4,J4,iu,iu,bo,bo,ja,ja],$xe=[w7,J4,c0,iu,c0,iu,c0,iu],tr={DISPLAY:Yl[w7],TEXT:Yl[c0],SCRIPT:Yl[Iy],SCRIPTSCRIPT:Yl[u0]},c7=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];o(Vxe,"scriptFromCodepoint");Z4=[];c7.forEach(t=>t.blocks.forEach(e=>Z4.push(...e)));o(CG,"supportedCodepoint");l0=80,Uxe=o(function(e,r){return"M95,"+(622+e+r)+` c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 @@ -21,7 +21,7 @@ c5.3,-9.3,12,-14,20,-14 H400000v`+(40+e)+`H845.2724 s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z -M`+(834+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtMain"),Vbe=o(function(e,r){return"M263,"+(601+e+r)+`c0.7,0,18,39.7,52,119 +M`+(834+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtMain"),Hxe=o(function(e,r){return"M263,"+(601+e+r)+`c0.7,0,18,39.7,52,119 c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 c340,-704.7,510.7,-1060.3,512,-1067 l`+e/2.084+" -"+e+` @@ -31,7 +31,7 @@ s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5, c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z -M`+(1001+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtSize1"),Ube=o(function(e,r){return"M983 "+(10+e+r)+` +M`+(1001+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtSize1"),Wxe=o(function(e,r){return"M983 "+(10+e+r)+` l`+e/3.13+" -"+e+` c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 @@ -40,7 +40,7 @@ c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 c53.7,-170.3,84.5,-266.8,92.5,-289.5z -M`+(1001+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtSize2"),Hbe=o(function(e,r){return"M424,"+(2398+e+r)+` +M`+(1001+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtSize2"),qxe=o(function(e,r){return"M424,"+(2398+e+r)+` c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 @@ -50,18 +50,18 @@ v`+(40+e)+`H1014.6 s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 c-2,6,-10,9,-24,9 c-8,0,-12,-0.7,-12,-2z M`+(1001+e)+" "+r+` -h400000v`+(40+e)+"h-400000z"},"sqrtSize3"),Wbe=o(function(e,r){return"M473,"+(2713+e+r)+` +h400000v`+(40+e)+"h-400000z"},"sqrtSize3"),Yxe=o(function(e,r){return"M473,"+(2713+e+r)+` c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`H1017.7 s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, -606zM`+(1001+e)+" "+r+"h400000v"+(40+e)+"H1017.7z"},"sqrtSize4"),Ybe=o(function(e){var r=e/2;return"M400000 "+e+" H0 L"+r+" 0 l65 45 L145 "+(e-80)+" H400000z"},"phasePath"),qbe=o(function(e,r,n){var i=n-54-r-e;return"M702 "+(e+r)+"H400000"+(40+e)+` +606zM`+(1001+e)+" "+r+"h400000v"+(40+e)+"H1017.7z"},"sqrtSize4"),Xxe=o(function(e){var r=e/2;return"M400000 "+e+" H0 L"+r+" 0 l65 45 L145 "+(e-80)+" H400000z"},"phasePath"),jxe=o(function(e,r,n){var i=n-54-r-e;return"M702 "+(e+r)+"H400000"+(40+e)+` H742v`+i+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 -219 661 l218 661zM702 `+r+"H400000v"+(40+e)+"H742z"},"sqrtTall"),Xbe=o(function(e,r,n){r=1e3*r;var i="";switch(e){case"sqrtMain":i=$be(r,up);break;case"sqrtSize1":i=Vbe(r,up);break;case"sqrtSize2":i=Ube(r,up);break;case"sqrtSize3":i=Hbe(r,up);break;case"sqrtSize4":i=Wbe(r,up);break;case"sqrtTall":i=qbe(r,up,n)}return i},"sqrtPath"),jbe=o(function(e,r){switch(e){case"\u239C":return"M291 0 H417 V"+r+" H291z M291 0 H417 V"+r+" H291z";case"\u2223":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z";case"\u2225":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z"+("M367 0 H410 V"+r+" H367z M367 0 H410 V"+r+" H367z");case"\u239F":return"M457 0 H583 V"+r+" H457z M457 0 H583 V"+r+" H457z";case"\u23A2":return"M319 0 H403 V"+r+" H319z M319 0 H403 V"+r+" H319z";case"\u23A5":return"M263 0 H347 V"+r+" H263z M263 0 H347 V"+r+" H263z";case"\u23AA":return"M384 0 H504 V"+r+" H384z M384 0 H504 V"+r+" H384z";case"\u23D0":return"M312 0 H355 V"+r+" H312z M312 0 H355 V"+r+" H312z";case"\u2016":return"M257 0 H300 V"+r+" H257z M257 0 H300 V"+r+" H257z"+("M478 0 H521 V"+r+" H478z M478 0 H521 V"+r+" H478z");default:return""}},"innerPath"),aG={doubleleftarrow:`M262 157 +219 661 l218 661zM702 `+r+"H400000v"+(40+e)+"H742z"},"sqrtTall"),Kxe=o(function(e,r,n){r=1e3*r;var i="";switch(e){case"sqrtMain":i=Uxe(r,l0);break;case"sqrtSize1":i=Hxe(r,l0);break;case"sqrtSize2":i=Wxe(r,l0);break;case"sqrtSize3":i=qxe(r,l0);break;case"sqrtSize4":i=Yxe(r,l0);break;case"sqrtTall":i=jxe(r,l0,n)}return i},"sqrtPath"),Qxe=o(function(e,r){switch(e){case"\u239C":return"M291 0 H417 V"+r+" H291z M291 0 H417 V"+r+" H291z";case"\u2223":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z";case"\u2225":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z"+("M367 0 H410 V"+r+" H367z M367 0 H410 V"+r+" H367z");case"\u239F":return"M457 0 H583 V"+r+" H457z M457 0 H583 V"+r+" H457z";case"\u23A2":return"M319 0 H403 V"+r+" H319z M319 0 H403 V"+r+" H319z";case"\u23A5":return"M263 0 H347 V"+r+" H263z M263 0 H347 V"+r+" H263z";case"\u23AA":return"M384 0 H504 V"+r+" H384z M384 0 H504 V"+r+" H384z";case"\u23D0":return"M312 0 H355 V"+r+" H312z M312 0 H355 V"+r+" H312z";case"\u2016":return"M257 0 H300 V"+r+" H257z M257 0 H300 V"+r+" H257z"+("M478 0 H521 V"+r+" H478z M478 0 H521 V"+r+" H478z");default:return""}},"innerPath"),Xz={doubleleftarrow:`M262 157 l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 @@ -236,7 +236,7 @@ M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z` c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, -231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},Kbe=o(function(e,r){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 h347 v-84 +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},Zxe=o(function(e,r){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 h347 v-84 H403z M403 1759 V0 H319 V1759 v`+r+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 @@ -264,18 +264,39 @@ c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6 c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, --470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}},"tallDelim"),Yf=class{static{o(this,"DocumentFragment")}constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return Jt.contains(this.classes,e)}toNode(){for(var e=document.createDocumentFragment(),r=0;rr.toText(),"toText");return this.children.map(e).join("")}},Zl={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Kb={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},sG={\u00C5:"A",\u00D0:"D",\u00DE:"o",\u00E5:"a",\u00F0:"d",\u00FE:"o",\u0410:"A",\u0411:"B",\u0412:"B",\u0413:"F",\u0414:"A",\u0415:"E",\u0416:"K",\u0417:"3",\u0418:"N",\u0419:"N",\u041A:"K",\u041B:"N",\u041C:"M",\u041D:"H",\u041E:"O",\u041F:"N",\u0420:"P",\u0421:"C",\u0422:"T",\u0423:"y",\u0424:"O",\u0425:"X",\u0426:"U",\u0427:"h",\u0428:"W",\u0429:"W",\u042A:"B",\u042B:"X",\u042C:"B",\u042D:"3",\u042E:"X",\u042F:"R",\u0430:"a",\u0431:"b",\u0432:"a",\u0433:"r",\u0434:"y",\u0435:"e",\u0436:"m",\u0437:"e",\u0438:"n",\u0439:"n",\u043A:"n",\u043B:"n",\u043C:"m",\u043D:"n",\u043E:"o",\u043F:"n",\u0440:"p",\u0441:"c",\u0442:"o",\u0443:"y",\u0444:"b",\u0445:"x",\u0446:"n",\u0447:"n",\u0448:"w",\u0449:"w",\u044A:"a",\u044B:"m",\u044C:"a",\u044D:"e",\u044E:"m",\u044F:"r"};o(Qbe,"setFontMetrics");o(RC,"getCharacterMetrics");oC={};o(Zbe,"getGlobalMetrics");Jbe=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],oG=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],lG=o(function(e,r){return r.size<2?e:Jbe[e-1][r.size-1]},"sizeAtStyle"),u4=class t{static{o(this,"Options")}constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||t.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=oG[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var n in e)e.hasOwnProperty(n)&&(r[n]=e[n]);return new t(r)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:lG(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:oG[e-1]})}havingBaseStyle(e){e=e||this.style.text();var r=lG(t.BASESIZE,e);return this.size===r&&this.textSize===t.BASESIZE&&this.style===e?this:this.extend({style:e,size:r})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==t.BASESIZE?["sizing","reset-size"+this.size,"size"+t.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=Zbe(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}};u4.BASESIZE=6;bC={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},e4e={ex:!0,em:!0,mu:!0},FG=o(function(e){return typeof e!="string"&&(e=e.unit),e in bC||e in e4e||e==="ex"},"validUnit"),Qn=o(function(e,r){var n;if(e.unit in bC)n=bC[e.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(e.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var i;if(r.style.isTight()?i=r.havingStyle(r.style.text()):i=r,e.unit==="ex")n=i.fontMetrics().xHeight;else if(e.unit==="em")n=i.fontMetrics().quad;else throw new ut("Invalid unit: '"+e.unit+"'");i!==r&&(n*=i.sizeMultiplier/r.sizeMultiplier)}return Math.min(e.number*n,r.maxSize)},"calculateSize"),mt=o(function(e){return+e.toFixed(4)+"em"},"makeEm"),lh=o(function(e){return e.filter(r=>r).join(" ")},"createClass"),zG=o(function(e,r,n){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var i=r.getColor();i&&(this.style.color=i)}},"initNode"),GG=o(function(e){var r=document.createElement(e);r.className=lh(this.classes);for(var n in this.style)this.style.hasOwnProperty(n)&&(r.style[n]=this.style[n]);for(var i in this.attributes)this.attributes.hasOwnProperty(i)&&r.setAttribute(i,this.attributes[i]);for(var a=0;a",r},"toMarkup"),qf=class{static{o(this,"Span")}constructor(e,r,n,i){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,zG.call(this,e,n,i),this.children=r||[]}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return Jt.contains(this.classes,e)}toNode(){return GG.call(this,"span")}toMarkup(){return $G.call(this,"span")}},ey=class{static{o(this,"Anchor")}constructor(e,r,n,i){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,zG.call(this,r,i),this.children=n||[],this.setAttribute("href",e)}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return Jt.contains(this.classes,e)}toNode(){return GG.call(this,"a")}toMarkup(){return $G.call(this,"a")}},wC=class{static{o(this,"Img")}constructor(e,r,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=r,this.src=e,this.classes=["mord"],this.style=n}hasClass(e){return Jt.contains(this.classes,e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var r in this.style)this.style.hasOwnProperty(r)&&(e.style[r]=this.style[r]);return e}toMarkup(){var e=''+Jt.escape(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=mt(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=lh(this.classes));for(var n in this.style)this.style.hasOwnProperty(n)&&(r=r||document.createElement("span"),r.style[n]=this.style[n]);return r?(r.appendChild(e),r):e}toMarkup(){var e=!1,r="0&&(n+="margin-right:"+this.italic+"em;");for(var i in this.style)this.style.hasOwnProperty(i)&&(n+=Jt.hyphenate(i)+":"+this.style[i]+";");n&&(e=!0,r+=' style="'+Jt.escape(n)+'"');var a=Jt.escape(this.text);return e?(r+=">",r+=a,r+="",r):a}},fl=class{static{o(this,"SvgNode")}constructor(e,r){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=r||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"svg");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);for(var i=0;i':''}},ty=class{static{o(this,"LineNode")}constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"line");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var e="","\\gt",!0);G(V,re,we,"\u2208","\\in",!0);G(V,re,we,"\uE020","\\@not");G(V,re,we,"\u2282","\\subset",!0);G(V,re,we,"\u2283","\\supset",!0);G(V,re,we,"\u2286","\\subseteq",!0);G(V,re,we,"\u2287","\\supseteq",!0);G(V,ve,we,"\u2288","\\nsubseteq",!0);G(V,ve,we,"\u2289","\\nsupseteq",!0);G(V,re,we,"\u22A8","\\models");G(V,re,we,"\u2190","\\leftarrow",!0);G(V,re,we,"\u2264","\\le");G(V,re,we,"\u2264","\\leq",!0);G(V,re,we,"<","\\lt",!0);G(V,re,we,"\u2192","\\rightarrow",!0);G(V,re,we,"\u2192","\\to");G(V,ve,we,"\u2271","\\ngeq",!0);G(V,ve,we,"\u2270","\\nleq",!0);G(V,re,su,"\xA0","\\ ");G(V,re,su,"\xA0","\\space");G(V,re,su,"\xA0","\\nobreakspace");G(it,re,su,"\xA0","\\ ");G(it,re,su,"\xA0"," ");G(it,re,su,"\xA0","\\space");G(it,re,su,"\xA0","\\nobreakspace");G(V,re,su,null,"\\nobreak");G(V,re,su,null,"\\allowbreak");G(V,re,y4,",",",");G(V,re,y4,";",";");G(V,ve,Nt,"\u22BC","\\barwedge",!0);G(V,ve,Nt,"\u22BB","\\veebar",!0);G(V,re,Nt,"\u2299","\\odot",!0);G(V,re,Nt,"\u2295","\\oplus",!0);G(V,re,Nt,"\u2297","\\otimes",!0);G(V,re,_e,"\u2202","\\partial",!0);G(V,re,Nt,"\u2298","\\oslash",!0);G(V,ve,Nt,"\u229A","\\circledcirc",!0);G(V,ve,Nt,"\u22A1","\\boxdot",!0);G(V,re,Nt,"\u25B3","\\bigtriangleup");G(V,re,Nt,"\u25BD","\\bigtriangledown");G(V,re,Nt,"\u2020","\\dagger");G(V,re,Nt,"\u22C4","\\diamond");G(V,re,Nt,"\u22C6","\\star");G(V,re,Nt,"\u25C3","\\triangleleft");G(V,re,Nt,"\u25B9","\\triangleright");G(V,re,qs,"{","\\{");G(it,re,_e,"{","\\{");G(it,re,_e,"{","\\textbraceleft");G(V,re,qa,"}","\\}");G(it,re,_e,"}","\\}");G(it,re,_e,"}","\\textbraceright");G(V,re,qs,"{","\\lbrace");G(V,re,qa,"}","\\rbrace");G(V,re,qs,"[","\\lbrack",!0);G(it,re,_e,"[","\\lbrack",!0);G(V,re,qa,"]","\\rbrack",!0);G(it,re,_e,"]","\\rbrack",!0);G(V,re,qs,"(","\\lparen",!0);G(V,re,qa,")","\\rparen",!0);G(it,re,_e,"<","\\textless",!0);G(it,re,_e,">","\\textgreater",!0);G(V,re,qs,"\u230A","\\lfloor",!0);G(V,re,qa,"\u230B","\\rfloor",!0);G(V,re,qs,"\u2308","\\lceil",!0);G(V,re,qa,"\u2309","\\rceil",!0);G(V,re,_e,"\\","\\backslash");G(V,re,_e,"\u2223","|");G(V,re,_e,"\u2223","\\vert");G(it,re,_e,"|","\\textbar",!0);G(V,re,_e,"\u2225","\\|");G(V,re,_e,"\u2225","\\Vert");G(it,re,_e,"\u2225","\\textbardbl");G(it,re,_e,"~","\\textasciitilde");G(it,re,_e,"\\","\\textbackslash");G(it,re,_e,"^","\\textasciicircum");G(V,re,we,"\u2191","\\uparrow",!0);G(V,re,we,"\u21D1","\\Uparrow",!0);G(V,re,we,"\u2193","\\downarrow",!0);G(V,re,we,"\u21D3","\\Downarrow",!0);G(V,re,we,"\u2195","\\updownarrow",!0);G(V,re,we,"\u21D5","\\Updownarrow",!0);G(V,re,Ti,"\u2210","\\coprod");G(V,re,Ti,"\u22C1","\\bigvee");G(V,re,Ti,"\u22C0","\\bigwedge");G(V,re,Ti,"\u2A04","\\biguplus");G(V,re,Ti,"\u22C2","\\bigcap");G(V,re,Ti,"\u22C3","\\bigcup");G(V,re,Ti,"\u222B","\\int");G(V,re,Ti,"\u222B","\\intop");G(V,re,Ti,"\u222C","\\iint");G(V,re,Ti,"\u222D","\\iiint");G(V,re,Ti,"\u220F","\\prod");G(V,re,Ti,"\u2211","\\sum");G(V,re,Ti,"\u2A02","\\bigotimes");G(V,re,Ti,"\u2A01","\\bigoplus");G(V,re,Ti,"\u2A00","\\bigodot");G(V,re,Ti,"\u222E","\\oint");G(V,re,Ti,"\u222F","\\oiint");G(V,re,Ti,"\u2230","\\oiiint");G(V,re,Ti,"\u2A06","\\bigsqcup");G(V,re,Ti,"\u222B","\\smallint");G(it,re,dp,"\u2026","\\textellipsis");G(V,re,dp,"\u2026","\\mathellipsis");G(it,re,dp,"\u2026","\\ldots",!0);G(V,re,dp,"\u2026","\\ldots",!0);G(V,re,dp,"\u22EF","\\@cdots",!0);G(V,re,dp,"\u22F1","\\ddots",!0);G(V,re,_e,"\u22EE","\\varvdots");G(V,re,$n,"\u02CA","\\acute");G(V,re,$n,"\u02CB","\\grave");G(V,re,$n,"\xA8","\\ddot");G(V,re,$n,"~","\\tilde");G(V,re,$n,"\u02C9","\\bar");G(V,re,$n,"\u02D8","\\breve");G(V,re,$n,"\u02C7","\\check");G(V,re,$n,"^","\\hat");G(V,re,$n,"\u20D7","\\vec");G(V,re,$n,"\u02D9","\\dot");G(V,re,$n,"\u02DA","\\mathring");G(V,re,tr,"\uE131","\\@imath");G(V,re,tr,"\uE237","\\@jmath");G(V,re,_e,"\u0131","\u0131");G(V,re,_e,"\u0237","\u0237");G(it,re,_e,"\u0131","\\i",!0);G(it,re,_e,"\u0237","\\j",!0);G(it,re,_e,"\xDF","\\ss",!0);G(it,re,_e,"\xE6","\\ae",!0);G(it,re,_e,"\u0153","\\oe",!0);G(it,re,_e,"\xF8","\\o",!0);G(it,re,_e,"\xC6","\\AE",!0);G(it,re,_e,"\u0152","\\OE",!0);G(it,re,_e,"\xD8","\\O",!0);G(it,re,$n,"\u02CA","\\'");G(it,re,$n,"\u02CB","\\`");G(it,re,$n,"\u02C6","\\^");G(it,re,$n,"\u02DC","\\~");G(it,re,$n,"\u02C9","\\=");G(it,re,$n,"\u02D8","\\u");G(it,re,$n,"\u02D9","\\.");G(it,re,$n,"\xB8","\\c");G(it,re,$n,"\u02DA","\\r");G(it,re,$n,"\u02C7","\\v");G(it,re,$n,"\xA8",'\\"');G(it,re,$n,"\u02DD","\\H");G(it,re,$n,"\u25EF","\\textcircled");VG={"--":!0,"---":!0,"``":!0,"''":!0};G(it,re,_e,"\u2013","--",!0);G(it,re,_e,"\u2013","\\textendash");G(it,re,_e,"\u2014","---",!0);G(it,re,_e,"\u2014","\\textemdash");G(it,re,_e,"\u2018","`",!0);G(it,re,_e,"\u2018","\\textquoteleft");G(it,re,_e,"\u2019","'",!0);G(it,re,_e,"\u2019","\\textquoteright");G(it,re,_e,"\u201C","``",!0);G(it,re,_e,"\u201C","\\textquotedblleft");G(it,re,_e,"\u201D","''",!0);G(it,re,_e,"\u201D","\\textquotedblright");G(V,re,_e,"\xB0","\\degree",!0);G(it,re,_e,"\xB0","\\degree");G(it,re,_e,"\xB0","\\textdegree",!0);G(V,re,_e,"\xA3","\\pounds");G(V,re,_e,"\xA3","\\mathsterling",!0);G(it,re,_e,"\xA3","\\pounds");G(it,re,_e,"\xA3","\\textsterling",!0);G(V,ve,_e,"\u2720","\\maltese");G(it,ve,_e,"\u2720","\\maltese");uG='0123456789/@."';for(Qb=0;Qb0)return hl(a,h,i,r,s.concat(f));if(u){var d,p;if(u==="boldsymbol"){var m=o4e(a,i,r,s,n);d=m.fontName,p=[m.fontClass]}else l?(d=WG[u].fontName,p=[u]):(d=r4(u,r.fontWeight,r.fontShape),p=[u,r.fontWeight,r.fontShape]);if(v4(a,d,i).metrics)return hl(a,d,i,r,s.concat(p));if(VG.hasOwnProperty(a)&&d.slice(0,10)==="Typewriter"){for(var g=[],y=0;y{if(lh(t.classes)!==lh(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(t.classes.length===1){var r=t.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n in t.style)if(t.style.hasOwnProperty(n)&&t.style[n]!==e.style[n])return!1;for(var i in e.style)if(e.style.hasOwnProperty(i)&&t.style[i]!==e.style[i])return!1;return!0},"canCombine"),u4e=o(t=>{for(var e=0;er&&(r=s.height),s.depth>n&&(n=s.depth),s.maxFontSize>i&&(i=s.maxFontSize)}e.height=r,e.depth=n,e.maxFontSize=i},"sizeElementFromChildren"),ds=o(function(e,r,n,i){var a=new qf(e,r,n,i);return MC(a),a},"makeSpan"),UG=o((t,e,r,n)=>new qf(t,e,r,n),"makeSvgSpan"),h4e=o(function(e,r,n){var i=ds([e],[],r);return i.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),i.style.borderBottomWidth=mt(i.height),i.maxFontSize=1,i},"makeLineSpan"),f4e=o(function(e,r,n,i){var a=new ey(e,r,n,i);return MC(a),a},"makeAnchor"),HG=o(function(e){var r=new Yf(e);return MC(r),r},"makeFragment"),d4e=o(function(e,r){return e instanceof Yf?ds([],[e],r):e},"wrapFragment"),p4e=o(function(e){if(e.positionType==="individualShift"){for(var r=e.children,n=[r[0]],i=-r[0].shift-r[0].elem.depth,a=i,s=1;s{var r=ds(["mspace"],[],e),n=Qn(t,e);return r.style.marginRight=mt(n),r},"makeGlue"),r4=o(function(e,r,n){var i="";switch(e){case"amsrm":i="AMS";break;case"textrm":i="Main";break;case"textsf":i="SansSerif";break;case"texttt":i="Typewriter";break;default:i=e}var a;return r==="textbf"&&n==="textit"?a="BoldItalic":r==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",i+"-"+a},"retrieveTextFontName"),WG={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},YG={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},y4e=o(function(e,r){var[n,i,a]=YG[e],s=new Jl(n),l=new fl([s],{width:mt(i),height:mt(a),style:"width:"+mt(i),viewBox:"0 0 "+1e3*i+" "+1e3*a,preserveAspectRatio:"xMinYMin"}),u=UG(["overlay"],[l],r);return u.height=a,u.style.height=mt(a),u.style.width=mt(i),u},"staticSvg"),Ie={fontMap:WG,makeSymbol:hl,mathsym:s4e,makeSpan:ds,makeSvgSpan:UG,makeLineSpan:h4e,makeAnchor:f4e,makeFragment:HG,wrapFragment:d4e,makeVList:m4e,makeOrd:l4e,makeGlue:g4e,staticSvg:y4e,svgData:YG,tryCombineChars:u4e},Kn={number:3,unit:"mu"},Hf={number:4,unit:"mu"},tu={number:5,unit:"mu"},v4e={mord:{mop:Kn,mbin:Hf,mrel:tu,minner:Kn},mop:{mord:Kn,mop:Kn,mrel:tu,minner:Kn},mbin:{mord:Hf,mop:Hf,mopen:Hf,minner:Hf},mrel:{mord:tu,mop:tu,mopen:tu,minner:tu},mopen:{},mclose:{mop:Kn,mbin:Hf,mrel:tu,minner:Kn},mpunct:{mord:Kn,mop:Kn,mrel:tu,mopen:Kn,mclose:Kn,mpunct:Kn,minner:Kn},minner:{mord:Kn,mop:Kn,mbin:Hf,mrel:tu,mopen:Kn,mpunct:Kn,minner:Kn}},x4e={mord:{mop:Kn},mop:{mord:Kn,mop:Kn},mbin:{},mrel:{},mopen:{},mclose:{mop:Kn},mpunct:{},minner:{mop:Kn}},qG={},f4={},d4={};o(Ct,"defineFunction");o(Xf,"defineFunctionBuilders");p4=o(function(e){return e.type==="ordgroup"&&e.body.length===1?e.body[0]:e},"normalizeArgument"),di=o(function(e){return e.type==="ordgroup"?e.body:[e]},"ordargument"),iu=Ie.makeSpan,b4e=["leftmost","mbin","mopen","mrel","mop","mpunct"],w4e=["rightmost","mrel","mclose","mpunct"],T4e={display:rr.DISPLAY,text:rr.TEXT,script:rr.SCRIPT,scriptscript:rr.SCRIPTSCRIPT},k4e={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},Ii=o(function(e,r,n,i){i===void 0&&(i=[null,null]);for(var a=[],s=0;s{var v=y.classes[0],x=g.classes[0];v==="mbin"&&Jt.contains(w4e,x)?y.classes[0]="mord":x==="mbin"&&Jt.contains(b4e,v)&&(g.classes[0]="mord")},{node:d},p,m),dG(a,(g,y)=>{var v=kC(y),x=kC(g),b=v&&x?g.hasClass("mtight")?x4e[v][x]:v4e[v][x]:null;if(b)return Ie.makeGlue(b,h)},{node:d},p,m),a},"buildExpression"),dG=o(function t(e,r,n,i,a){i&&e.push(i);for(var s=0;sp=>{e.splice(d+1,0,p),s++})(s)}i&&e.pop()},"traverseNonSpaceNodes"),XG=o(function(e){return e instanceof Yf||e instanceof ey||e instanceof qf&&e.hasClass("enclosing")?e:null},"checkPartialGroup"),E4e=o(function t(e,r){var n=XG(e);if(n){var i=n.children;if(i.length){if(r==="right")return t(i[i.length-1],"right");if(r==="left")return t(i[0],"left")}}return e},"getOutermostNode"),kC=o(function(e,r){return e?(r&&(e=E4e(e,r)),k4e[e.classes[0]]||null):null},"getTypeOfDomTree"),ry=o(function(e,r){var n=["nulldelimiter"].concat(e.baseSizingClasses());return iu(r.concat(n))},"makeNullDelimiter"),Or=o(function(e,r,n){if(!e)return iu();if(f4[e.type]){var i=f4[e.type](e,r);if(n&&r.size!==n.size){i=iu(r.sizingClasses(n),[i],r);var a=r.sizeMultiplier/n.sizeMultiplier;i.height*=a,i.depth*=a}return i}else throw new ut("Got group of unknown type: '"+e.type+"'")},"buildGroup");o(n4,"buildHTMLUnbreakable");o(EC,"buildHTML");o(jG,"newDocumentFragment");ps=class{static{o(this,"MathNode")}constructor(e,r,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(e,r){this.attributes[e]=r}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&e.setAttribute(r,this.attributes[r]);this.classes.length>0&&(e.className=lh(this.classes));for(var n=0;n0&&(e+=' class ="'+Jt.escape(lh(this.classes))+'"'),e+=">";for(var n=0;n",e}toText(){return this.children.map(e=>e.toText()).join("")}},Wf=class{static{o(this,"TextNode")}constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return Jt.escape(this.toText())}toText(){return this.text}},SC=class{static{o(this,"SpaceNode")}constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character="\u200A":e>=.1666&&e<=.1667?this.character="\u2009":e>=.2222&&e<=.2223?this.character="\u2005":e>=.2777&&e<=.2778?this.character="\u2005\u200A":e>=-.05556&&e<=-.05555?this.character="\u200A\u2063":e>=-.1667&&e<=-.1666?this.character="\u2009\u2063":e>=-.2223&&e<=-.2222?this.character="\u205F\u2063":e>=-.2778&&e<=-.2777?this.character="\u2005\u2063":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",mt(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},st={MathNode:ps,TextNode:Wf,SpaceNode:SC,newDocumentFragment:jG},Ao=o(function(e,r,n){return En[r][e]&&En[r][e].replace&&e.charCodeAt(0)!==55349&&!(VG.hasOwnProperty(e)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(e=En[r][e].replace),new st.TextNode(e)},"makeText"),IC=o(function(e){return e.length===1?e[0]:new st.MathNode("mrow",e)},"makeRow"),OC=o(function(e,r){if(r.fontFamily==="texttt")return"monospace";if(r.fontFamily==="textsf")return r.fontShape==="textit"&&r.fontWeight==="textbf"?"sans-serif-bold-italic":r.fontShape==="textit"?"sans-serif-italic":r.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(r.fontShape==="textit"&&r.fontWeight==="textbf")return"bold-italic";if(r.fontShape==="textit")return"italic";if(r.fontWeight==="textbf")return"bold";var n=r.font;if(!n||n==="mathnormal")return null;var i=e.mode;if(n==="mathit")return"italic";if(n==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(n==="mathbf")return"bold";if(n==="mathbb")return"double-struck";if(n==="mathfrak")return"fraktur";if(n==="mathscr"||n==="mathcal")return"script";if(n==="mathsf")return"sans-serif";if(n==="mathtt")return"monospace";var a=e.text;if(Jt.contains(["\\imath","\\jmath"],a))return null;En[i][a]&&En[i][a].replace&&(a=En[i][a].replace);var s=Ie.fontMap[n].fontName;return RC(a,s,i)?Ie.fontMap[n].variant:null},"getVariant"),gs=o(function(e,r,n){if(e.length===1){var i=mn(e[0],r);return n&&i instanceof ps&&i.type==="mo"&&(i.setAttribute("lspace","0em"),i.setAttribute("rspace","0em")),[i]}for(var a=[],s,l=0;l0&&(d.text=d.text.slice(0,1)+"\u0338"+d.text.slice(1),a.pop())}}}a.push(u),s=u}return a},"buildExpression"),ch=o(function(e,r,n){return IC(gs(e,r,n))},"buildExpressionRow"),mn=o(function(e,r){if(!e)return new st.MathNode("mrow");if(d4[e.type]){var n=d4[e.type](e,r);return n}else throw new ut("Got group of unknown type: '"+e.type+"'")},"buildGroup");o(pG,"buildMathML");KG=o(function(e){return new u4({style:e.displayMode?rr.DISPLAY:rr.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},"optionsFromSettings"),QG=o(function(e,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),e=Ie.makeSpan(n,[e])}return e},"displayWrap"),S4e=o(function(e,r,n){var i=KG(n),a;if(n.output==="mathml")return pG(e,r,i,n.displayMode,!0);if(n.output==="html"){var s=EC(e,i);a=Ie.makeSpan(["katex"],[s])}else{var l=pG(e,r,i,n.displayMode,!1),u=EC(e,i);a=Ie.makeSpan(["katex"],[l,u])}return QG(a,n)},"buildTree"),C4e=o(function(e,r,n){var i=KG(n),a=EC(e,i),s=Ie.makeSpan(["katex"],[a]);return QG(s,n)},"buildHTMLTree"),A4e={widehat:"^",widecheck:"\u02C7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23DF",overbrace:"\u23DE",overgroup:"\u23E0",undergroup:"\u23E1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21D2",xRightarrow:"\u21D2",overleftharpoon:"\u21BC",xleftharpoonup:"\u21BC",overrightharpoon:"\u21C0",xrightharpoonup:"\u21C0",xLeftarrow:"\u21D0",xLeftrightarrow:"\u21D4",xhookleftarrow:"\u21A9",xhookrightarrow:"\u21AA",xmapsto:"\u21A6",xrightharpoondown:"\u21C1",xleftharpoondown:"\u21BD",xrightleftharpoons:"\u21CC",xleftrightharpoons:"\u21CB",xtwoheadleftarrow:"\u219E",xtwoheadrightarrow:"\u21A0",xlongequal:"=",xtofrom:"\u21C4",xrightleftarrows:"\u21C4",xrightequilibrium:"\u21CC",xleftequilibrium:"\u21CB","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},_4e=o(function(e){var r=new st.MathNode("mo",[new st.TextNode(A4e[e.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},"mathMLnode"),L4e={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},D4e=o(function(e){return e.type==="ordgroup"?e.body.length:1},"groupLength"),N4e=o(function(e,r){function n(){var l=4e5,u=e.label.slice(1);if(Jt.contains(["widehat","widecheck","widetilde","utilde"],u)){var h=e,f=D4e(h.base),d,p,m;if(f>5)u==="widehat"||u==="widecheck"?(d=420,l=2364,m=.42,p=u+"4"):(d=312,l=2340,m=.34,p="tilde4");else{var g=[1,1,2,2,3,3][f];u==="widehat"||u==="widecheck"?(l=[0,1062,2364,2364,2364][g],d=[0,239,300,360,420][g],m=[0,.24,.3,.3,.36,.42][g],p=u+g):(l=[0,600,1033,2339,2340][g],d=[0,260,286,306,312][g],m=[0,.26,.286,.3,.306,.34][g],p="tilde"+g)}var y=new Jl(p),v=new fl([y],{width:"100%",height:mt(m),viewBox:"0 0 "+l+" "+d,preserveAspectRatio:"none"});return{span:Ie.makeSvgSpan([],[v],r),minWidth:0,height:m}}else{var x=[],b=L4e[u],[w,_,T]=b,E=T/1e3,L=w.length,C,A;if(L===1){var I=b[3];C=["hide-tail"],A=[I]}else if(L===2)C=["halfarrow-left","halfarrow-right"],A=["xMinYMin","xMaxYMin"];else if(L===3)C=["brace-left","brace-center","brace-right"],A=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+L+" children.");for(var D=0;D0&&(i.style.minWidth=mt(a)),i},"svgSpan"),R4e=o(function(e,r,n,i,a){var s,l=e.height+e.depth+n+i;if(/fbox|color|angl/.test(r)){if(s=Ie.makeSpan(["stretchy",r],[],a),r==="fbox"){var u=a.color&&a.getColor();u&&(s.style.borderColor=u)}}else{var h=[];/^[bx]cancel$/.test(r)&&h.push(new ty({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&h.push(new ty({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var f=new fl(h,{width:"100%",height:mt(l)});s=Ie.makeSvgSpan([],[f],a)}return s.height=l,s.style.height=mt(l),s},"encloseSpan"),au={encloseSpan:R4e,mathMLnode:_4e,svgSpan:N4e};o(yr,"assertNodeType");o(PC,"assertSymbolNodeType");o(x4,"checkSymbolNodeType");BC=o((t,e)=>{var r,n,i;t&&t.type==="supsub"?(n=yr(t.base,"accent"),r=n.base,t.base=r,i=r4e(Or(t,e)),t.base=n):(n=yr(t,"accent"),r=n.base);var a=Or(r,e.havingCrampedStyle()),s=n.isShifty&&Jt.isCharacterBox(r),l=0;if(s){var u=Jt.getBaseElem(r),h=Or(u,e.havingCrampedStyle());l=cG(h).skew}var f=n.label==="\\c",d=f?a.height+a.depth:Math.min(a.height,e.fontMetrics().xHeight),p;if(n.isStretchy)p=au.svgSpan(n,e),p=Ie.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"elem",elem:p,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+mt(2*l)+")",marginLeft:mt(2*l)}:void 0}]},e);else{var m,g;n.label==="\\vec"?(m=Ie.staticSvg("vec",e),g=Ie.svgData.vec[1]):(m=Ie.makeOrd({mode:n.mode,text:n.label},e,"textord"),m=cG(m),m.italic=0,g=m.width,f&&(d+=m.depth)),p=Ie.makeSpan(["accent-body"],[m]);var y=n.label==="\\textcircled";y&&(p.classes.push("accent-full"),d=a.height);var v=l;y||(v-=g/2),p.style.left=mt(v),n.label==="\\textcircled"&&(p.style.top=".2em"),p=Ie.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:-d},{type:"elem",elem:p}]},e)}var x=Ie.makeSpan(["mord","accent"],[p],e);return i?(i.children[0]=x,i.height=Math.max(x.height,i.height),i.classes[0]="mord",i):x},"htmlBuilder$a"),ZG=o((t,e)=>{var r=t.isStretchy?au.mathMLnode(t.label):new st.MathNode("mo",[Ao(t.label,t.mode)]),n=new st.MathNode("mover",[mn(t.base,e),r]);return n.setAttribute("accent","true"),n},"mathmlBuilder$9"),M4e=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));Ct({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:o((t,e)=>{var r=p4(e[0]),n=!M4e.test(t.funcName),i=!n||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:n,isShifty:i,base:r}},"handler"),htmlBuilder:BC,mathmlBuilder:ZG});Ct({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:o((t,e)=>{var r=e[0],n=t.parser.mode;return n==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},"handler"),htmlBuilder:BC,mathmlBuilder:ZG});Ct({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"accentUnder",mode:r.mode,label:n,base:i}},"handler"),htmlBuilder:o((t,e)=>{var r=Or(t.base,e),n=au.svgSpan(t,e),i=t.label==="\\utilde"?.12:0,a=Ie.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:i},{type:"elem",elem:r}]},e);return Ie.makeSpan(["mord","accentunder"],[a],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=au.mathMLnode(t.label),n=new st.MathNode("munder",[mn(t.base,e),r]);return n.setAttribute("accentunder","true"),n},"mathmlBuilder")});i4=o(t=>{var e=new st.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e},"paddedNode");Ct({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:n,funcName:i}=t;return{type:"xArrow",mode:n.mode,label:i,body:e[0],below:r[0]}},htmlBuilder(t,e){var r=e.style,n=e.havingStyle(r.sup()),i=Ie.wrapFragment(Or(t.body,n,e),e),a=t.label.slice(0,2)==="\\x"?"x":"cd";i.classes.push(a+"-arrow-pad");var s;t.below&&(n=e.havingStyle(r.sub()),s=Ie.wrapFragment(Or(t.below,n,e),e),s.classes.push(a+"-arrow-pad"));var l=au.svgSpan(t,e),u=-e.fontMetrics().axisHeight+.5*l.height,h=-e.fontMetrics().axisHeight-.5*l.height-.111;(i.depth>.25||t.label==="\\xleftequilibrium")&&(h-=i.depth);var f;if(s){var d=-e.fontMetrics().axisHeight+s.height+.5*l.height+.111;f=Ie.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u},{type:"elem",elem:s,shift:d}]},e)}else f=Ie.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u}]},e);return f.children[0].children[0].children[1].classes.push("svg-align"),Ie.makeSpan(["mrel","x-arrow"],[f],e)},mathmlBuilder(t,e){var r=au.mathMLnode(t.label);r.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(t.body){var i=i4(mn(t.body,e));if(t.below){var a=i4(mn(t.below,e));n=new st.MathNode("munderover",[r,a,i])}else n=new st.MathNode("mover",[r,i])}else if(t.below){var s=i4(mn(t.below,e));n=new st.MathNode("munder",[r,s])}else n=i4(),n=new st.MathNode("mover",[r,n]);return n}});I4e=Ie.makeSpan;o(JG,"htmlBuilder$9");o(e$,"mathmlBuilder$8");Ct({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:di(i),isCharacterBox:Jt.isCharacterBox(i)}},htmlBuilder:JG,mathmlBuilder:e$});b4=o(t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"},"binrelClass");Ct({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:r}=t;return{type:"mclass",mode:r.mode,mclass:b4(e[0]),body:di(e[1]),isCharacterBox:Jt.isCharacterBox(e[1])}}});Ct({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:r,funcName:n}=t,i=e[1],a=e[0],s;n!=="\\stackrel"?s=b4(i):s="mrel";var l={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:di(i)},u={type:"supsub",mode:a.mode,base:l,sup:n==="\\underset"?null:a,sub:n==="\\underset"?a:null};return{type:"mclass",mode:r.mode,mclass:s,body:[u],isCharacterBox:Jt.isCharacterBox(u)}},htmlBuilder:JG,mathmlBuilder:e$});Ct({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"pmb",mode:r.mode,mclass:b4(e[0]),body:di(e[0])}},htmlBuilder(t,e){var r=Ii(t.body,e,!0),n=Ie.makeSpan([t.mclass],r,e);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(t,e){var r=gs(t.body,e),n=new st.MathNode("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});O4e={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},mG=o(()=>({type:"styling",body:[],mode:"math",style:"display"}),"newCell"),gG=o(t=>t.type==="textord"&&t.text==="@","isStartOfArrow"),P4e=o((t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e,"isLabelEnd");o(B4e,"cdArrow");o(F4e,"parseCD");Ct({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:e[0]}},htmlBuilder(t,e){var r=e.havingStyle(e.style.sup()),n=Ie.wrapFragment(Or(t.label,r,e),e);return n.classes.push("cd-label-"+t.side),n.style.bottom=mt(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(t,e){var r=new st.MathNode("mrow",[mn(t.label,e)]);return r=new st.MathNode("mpadded",[r]),r.setAttribute("width","0"),t.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new st.MathNode("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});Ct({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:r}=t;return{type:"cdlabelparent",mode:r.mode,fragment:e[0]}},htmlBuilder(t,e){var r=Ie.wrapFragment(Or(t.fragment,e),e);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(t,e){return new st.MathNode("mrow",[mn(t.fragment,e)])}});Ct({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:r}=t,n=yr(e[0],"ordgroup"),i=n.body,a="",s=0;s=1114111)throw new ut("\\@char with invalid code point "+a);return u<=65535?h=String.fromCharCode(u):(u-=65536,h=String.fromCharCode((u>>10)+55296,(u&1023)+56320)),{type:"textord",mode:r.mode,text:h}}});t$=o((t,e)=>{var r=Ii(t.body,e.withColor(t.color),!1);return Ie.makeFragment(r)},"htmlBuilder$8"),r$=o((t,e)=>{var r=gs(t.body,e.withColor(t.color)),n=new st.MathNode("mstyle",r);return n.setAttribute("mathcolor",t.color),n},"mathmlBuilder$7");Ct({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:r}=t,n=yr(e[0],"color-token").color,i=e[1];return{type:"color",mode:r.mode,color:n,body:di(i)}},htmlBuilder:t$,mathmlBuilder:r$});Ct({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:r,breakOnTokenText:n}=t,i=yr(e[0],"color-token").color;r.gullet.macros.set("\\current@color",i);var a=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:i,body:a}},htmlBuilder:t$,mathmlBuilder:r$});Ct({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,r){var{parser:n}=t,i=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,a=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:a,size:i&&yr(i,"size").value}},htmlBuilder(t,e){var r=Ie.makeSpan(["mspace"],[],e);return t.newLine&&(r.classes.push("newline"),t.size&&(r.style.marginTop=mt(Qn(t.size,e)))),r},mathmlBuilder(t,e){var r=new st.MathNode("mspace");return t.newLine&&(r.setAttribute("linebreak","newline"),t.size&&r.setAttribute("height",mt(Qn(t.size,e)))),r}});CC={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},n$=o(t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new ut("Expected a control sequence",t);return e},"checkControlSequence"),z4e=o(t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},"getRHS"),i$=o((t,e,r,n)=>{var i=t.gullet.macros.get(r.text);i==null&&(r.noexpand=!0,i={tokens:[r],numArgs:0,unexpandable:!t.gullet.isExpandable(r.text)}),t.gullet.macros.set(e,i,n)},"letCommand");Ct({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:r}=t;e.consumeSpaces();var n=e.fetch();if(CC[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=CC[n.text]),yr(e.parseFunction(),"internal");throw new ut("Invalid token after macro prefix",n)}});Ct({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=e.gullet.popToken(),i=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new ut("Expected a control sequence",n);for(var a=0,s,l=[[]];e.gullet.future().text!=="{";)if(n=e.gullet.popToken(),n.text==="#"){if(e.gullet.future().text==="{"){s=e.gullet.future(),l[a].push("{");break}if(n=e.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new ut('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==a+1)throw new ut('Argument number "'+n.text+'" out of order');a++,l.push([])}else{if(n.text==="EOF")throw new ut("Expected a macro definition");l[a].push(n.text)}var{tokens:u}=e.gullet.consumeArg();return s&&u.unshift(s),(r==="\\edef"||r==="\\xdef")&&(u=e.gullet.expandTokens(u),u.reverse()),e.gullet.macros.set(i,{tokens:u,numArgs:a,delimiters:l},r===CC[r]),{type:"internal",mode:e.mode}}});Ct({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=n$(e.gullet.popToken());e.gullet.consumeSpaces();var i=z4e(e);return i$(e,n,i,r==="\\\\globallet"),{type:"internal",mode:e.mode}}});Ct({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=n$(e.gullet.popToken()),i=e.gullet.popToken(),a=e.gullet.popToken();return i$(e,n,a,r==="\\\\globalfuture"),e.gullet.pushToken(a),e.gullet.pushToken(i),{type:"internal",mode:e.mode}}});K1=o(function(e,r,n){var i=En.math[e]&&En.math[e].replace,a=RC(i||e,r,n);if(!a)throw new Error("Unsupported symbol "+e+" and font size "+r+".");return a},"getMetrics"),FC=o(function(e,r,n,i){var a=n.havingBaseStyle(r),s=Ie.makeSpan(i.concat(a.sizingClasses(n)),[e],n),l=a.sizeMultiplier/n.sizeMultiplier;return s.height*=l,s.depth*=l,s.maxFontSize=a.sizeMultiplier,s},"styleWrap"),a$=o(function(e,r,n){var i=r.havingBaseStyle(n),a=(1-r.sizeMultiplier/i.sizeMultiplier)*r.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=mt(a),e.height-=a,e.depth+=a},"centerSpan"),G4e=o(function(e,r,n,i,a,s){var l=Ie.makeSymbol(e,"Main-Regular",a,i),u=FC(l,r,i,s);return n&&a$(u,i,r),u},"makeSmallDelim"),$4e=o(function(e,r,n,i){return Ie.makeSymbol(e,"Size"+r+"-Regular",n,i)},"mathrmSize"),s$=o(function(e,r,n,i,a,s){var l=$4e(e,r,a,i),u=FC(Ie.makeSpan(["delimsizing","size"+r],[l],i),rr.TEXT,i,s);return n&&a$(u,i,rr.TEXT),u},"makeLargeDelim"),uC=o(function(e,r,n){var i;r==="Size1-Regular"?i="delim-size1":i="delim-size4";var a=Ie.makeSpan(["delimsizinginner",i],[Ie.makeSpan([],[Ie.makeSymbol(e,r,n)])]);return{type:"elem",elem:a}},"makeGlyphSpan"),hC=o(function(e,r,n){var i=Zl["Size4-Regular"][e.charCodeAt(0)]?Zl["Size4-Regular"][e.charCodeAt(0)][4]:Zl["Size1-Regular"][e.charCodeAt(0)][4],a=new Jl("inner",jbe(e,Math.round(1e3*r))),s=new fl([a],{width:mt(i),height:mt(r),style:"width:"+mt(i),viewBox:"0 0 "+1e3*i+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),l=Ie.makeSvgSpan([],[s],n);return l.height=r,l.style.height=mt(r),l.style.width=mt(i),{type:"elem",elem:l}},"makeInner"),AC=.008,a4={type:"kern",size:-1*AC},V4e=["|","\\lvert","\\rvert","\\vert"],U4e=["\\|","\\lVert","\\rVert","\\Vert"],o$=o(function(e,r,n,i,a,s){var l,u,h,f,d="",p=0;l=h=f=e,u=null;var m="Size1-Regular";e==="\\uparrow"?h=f="\u23D0":e==="\\Uparrow"?h=f="\u2016":e==="\\downarrow"?l=h="\u23D0":e==="\\Downarrow"?l=h="\u2016":e==="\\updownarrow"?(l="\\uparrow",h="\u23D0",f="\\downarrow"):e==="\\Updownarrow"?(l="\\Uparrow",h="\u2016",f="\\Downarrow"):Jt.contains(V4e,e)?(h="\u2223",d="vert",p=333):Jt.contains(U4e,e)?(h="\u2225",d="doublevert",p=556):e==="["||e==="\\lbrack"?(l="\u23A1",h="\u23A2",f="\u23A3",m="Size4-Regular",d="lbrack",p=667):e==="]"||e==="\\rbrack"?(l="\u23A4",h="\u23A5",f="\u23A6",m="Size4-Regular",d="rbrack",p=667):e==="\\lfloor"||e==="\u230A"?(h=l="\u23A2",f="\u23A3",m="Size4-Regular",d="lfloor",p=667):e==="\\lceil"||e==="\u2308"?(l="\u23A1",h=f="\u23A2",m="Size4-Regular",d="lceil",p=667):e==="\\rfloor"||e==="\u230B"?(h=l="\u23A5",f="\u23A6",m="Size4-Regular",d="rfloor",p=667):e==="\\rceil"||e==="\u2309"?(l="\u23A4",h=f="\u23A5",m="Size4-Regular",d="rceil",p=667):e==="("||e==="\\lparen"?(l="\u239B",h="\u239C",f="\u239D",m="Size4-Regular",d="lparen",p=875):e===")"||e==="\\rparen"?(l="\u239E",h="\u239F",f="\u23A0",m="Size4-Regular",d="rparen",p=875):e==="\\{"||e==="\\lbrace"?(l="\u23A7",u="\u23A8",f="\u23A9",h="\u23AA",m="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(l="\u23AB",u="\u23AC",f="\u23AD",h="\u23AA",m="Size4-Regular"):e==="\\lgroup"||e==="\u27EE"?(l="\u23A7",f="\u23A9",h="\u23AA",m="Size4-Regular"):e==="\\rgroup"||e==="\u27EF"?(l="\u23AB",f="\u23AD",h="\u23AA",m="Size4-Regular"):e==="\\lmoustache"||e==="\u23B0"?(l="\u23A7",f="\u23AD",h="\u23AA",m="Size4-Regular"):(e==="\\rmoustache"||e==="\u23B1")&&(l="\u23AB",f="\u23A9",h="\u23AA",m="Size4-Regular");var g=K1(l,m,a),y=g.height+g.depth,v=K1(h,m,a),x=v.height+v.depth,b=K1(f,m,a),w=b.height+b.depth,_=0,T=1;if(u!==null){var E=K1(u,m,a);_=E.height+E.depth,T=2}var L=y+w+_,C=Math.max(0,Math.ceil((r-L)/(T*x))),A=L+C*T*x,I=i.fontMetrics().axisHeight;n&&(I*=i.sizeMultiplier);var D=A/2-I,k=[];if(d.length>0){var R=A-y-w,S=Math.round(A*1e3),O=Kbe(d,Math.round(R*1e3)),N=new Jl(d,O),P=(p/1e3).toFixed(3)+"em",F=(S/1e3).toFixed(3)+"em",B=new fl([N],{width:P,height:F,viewBox:"0 0 "+p+" "+S}),$=Ie.makeSvgSpan([],[B],i);$.height=S/1e3,$.style.width=P,$.style.height=F,k.push({type:"elem",elem:$})}else{if(k.push(uC(f,m,a)),k.push(a4),u===null){var z=A-y-w+2*AC;k.push(hC(h,z,i))}else{var W=(A-y-w-_)/2+2*AC;k.push(hC(h,W,i)),k.push(a4),k.push(uC(u,m,a)),k.push(a4),k.push(hC(h,W,i))}k.push(a4),k.push(uC(l,m,a))}var j=i.havingBaseStyle(rr.TEXT),K=Ie.makeVList({positionType:"bottom",positionData:D,children:k},j);return FC(Ie.makeSpan(["delimsizing","mult"],[K],j),rr.TEXT,i,s)},"makeStackedDelim"),fC=80,dC=.08,pC=o(function(e,r,n,i,a){var s=Xbe(e,i,n),l=new Jl(e,s),u=new fl([l],{width:"400em",height:mt(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return Ie.makeSvgSpan(["hide-tail"],[u],a)},"sqrtSvg"),H4e=o(function(e,r){var n=r.havingBaseSizing(),i=h$("\\surd",e*n.sizeMultiplier,u$,n),a=n.sizeMultiplier,s=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),l,u=0,h=0,f=0,d;return i.type==="small"?(f=1e3+1e3*s+fC,e<1?a=1:e<1.4&&(a=.7),u=(1+s+dC)/a,h=(1+s)/a,l=pC("sqrtMain",u,f,s,r),l.style.minWidth="0.853em",d=.833/a):i.type==="large"?(f=(1e3+fC)*Q1[i.size],h=(Q1[i.size]+s)/a,u=(Q1[i.size]+s+dC)/a,l=pC("sqrtSize"+i.size,u,f,s,r),l.style.minWidth="1.02em",d=1/a):(u=e+s+dC,h=e+s,f=Math.floor(1e3*e+s)+fC,l=pC("sqrtTall",u,f,s,r),l.style.minWidth="0.742em",d=1.056),l.height=h,l.style.height=mt(u),{span:l,advanceWidth:d,ruleWidth:(r.fontMetrics().sqrtRuleThickness+s)*a}},"makeSqrtImage"),l$=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","\\surd"],W4e=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1"],c$=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Q1=[0,1.2,1.8,2.4,3],Y4e=o(function(e,r,n,i,a){if(e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle"),Jt.contains(l$,e)||Jt.contains(c$,e))return s$(e,r,!1,n,i,a);if(Jt.contains(W4e,e))return o$(e,Q1[r],!1,n,i,a);throw new ut("Illegal delimiter: '"+e+"'")},"makeSizedDelim"),q4e=[{type:"small",style:rr.SCRIPTSCRIPT},{type:"small",style:rr.SCRIPT},{type:"small",style:rr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],X4e=[{type:"small",style:rr.SCRIPTSCRIPT},{type:"small",style:rr.SCRIPT},{type:"small",style:rr.TEXT},{type:"stack"}],u$=[{type:"small",style:rr.SCRIPTSCRIPT},{type:"small",style:rr.SCRIPT},{type:"small",style:rr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],j4e=o(function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},"delimTypeToFont"),h$=o(function(e,r,n,i){for(var a=Math.min(2,3-i.style.size),s=a;sr)return n[s]}return n[n.length-1]},"traverseSequence"),f$=o(function(e,r,n,i,a,s){e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle");var l;Jt.contains(c$,e)?l=q4e:Jt.contains(l$,e)?l=u$:l=X4e;var u=h$(e,r,l,i);return u.type==="small"?G4e(e,u.style,n,i,a,s):u.type==="large"?s$(e,u.size,n,i,a,s):o$(e,r,n,i,a,s)},"makeCustomSizedDelim"),K4e=o(function(e,r,n,i,a,s){var l=i.fontMetrics().axisHeight*i.sizeMultiplier,u=901,h=5/i.fontMetrics().ptPerEm,f=Math.max(r-l,n+l),d=Math.max(f/500*u,2*f-h);return f$(e,d,!0,i,a,s)},"makeLeftRightDelim"),nu={sqrtImage:H4e,sizedDelim:Y4e,sizeToMaxHeight:Q1,customSizedDelim:f$,leftRightDelim:K4e},yG={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},Q4e=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27E8","\\rangle","\u27E9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];o(w4,"checkDelimiter");Ct({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:o((t,e)=>{var r=w4(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:yG[t.funcName].size,mclass:yG[t.funcName].mclass,delim:r.text}},"handler"),htmlBuilder:o((t,e)=>t.delim==="."?Ie.makeSpan([t.mclass]):nu.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),"htmlBuilder"),mathmlBuilder:o(t=>{var e=[];t.delim!=="."&&e.push(Ao(t.delim,t.mode));var r=new st.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=mt(nu.sizeToMaxHeight[t.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r},"mathmlBuilder")});o(vG,"assertParsed");Ct({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=t.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new ut("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:w4(e[0],t).text,color:r}},"handler")});Ct({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=w4(e[0],t),n=t.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var a=yr(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:i,left:r.text,right:a.delim,rightColor:a.color}},"handler"),htmlBuilder:o((t,e)=>{vG(t);for(var r=Ii(t.body,e,!0,["mopen","mclose"]),n=0,i=0,a=!1,s=0;s{vG(t);var r=gs(t.body,e);if(t.left!=="."){var n=new st.MathNode("mo",[Ao(t.left,t.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(t.right!=="."){var i=new st.MathNode("mo",[Ao(t.right,t.mode)]);i.setAttribute("fence","true"),t.rightColor&&i.setAttribute("mathcolor",t.rightColor),r.push(i)}return IC(r)},"mathmlBuilder")});Ct({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=w4(e[0],t);if(!t.parser.leftrightDepth)throw new ut("\\middle without preceding \\left",r);return{type:"middle",mode:t.parser.mode,delim:r.text}},"handler"),htmlBuilder:o((t,e)=>{var r;if(t.delim===".")r=ry(e,[]);else{r=nu.sizedDelim(t.delim,1,e,t.mode,[]);var n={delim:t.delim,options:e};r.isMiddle=n}return r},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=t.delim==="\\vert"||t.delim==="|"?Ao("|","text"):Ao(t.delim,t.mode),n=new st.MathNode("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n},"mathmlBuilder")});zC=o((t,e)=>{var r=Ie.wrapFragment(Or(t.body,e),e),n=t.label.slice(1),i=e.sizeMultiplier,a,s=0,l=Jt.isCharacterBox(t.body);if(n==="sout")a=Ie.makeSpan(["stretchy","sout"]),a.height=e.fontMetrics().defaultRuleThickness/i,s=-.5*e.fontMetrics().xHeight;else if(n==="phase"){var u=Qn({number:.6,unit:"pt"},e),h=Qn({number:.35,unit:"ex"},e),f=e.havingBaseSizing();i=i/f.sizeMultiplier;var d=r.height+r.depth+u+h;r.style.paddingLeft=mt(d/2+u);var p=Math.floor(1e3*d*i),m=Ybe(p),g=new fl([new Jl("phase",m)],{width:"400em",height:mt(p/1e3),viewBox:"0 0 400000 "+p,preserveAspectRatio:"xMinYMin slice"});a=Ie.makeSvgSpan(["hide-tail"],[g],e),a.style.height=mt(d),s=r.depth+u+h}else{/cancel/.test(n)?l||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var y=0,v=0,x=0;/box/.test(n)?(x=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),y=e.fontMetrics().fboxsep+(n==="colorbox"?0:x),v=y):n==="angl"?(x=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),y=4*x,v=Math.max(0,.25-r.depth)):(y=l?.2:0,v=y),a=au.encloseSpan(r,n,y,v,e),/fbox|boxed|fcolorbox/.test(n)?(a.style.borderStyle="solid",a.style.borderWidth=mt(x)):n==="angl"&&x!==.049&&(a.style.borderTopWidth=mt(x),a.style.borderRightWidth=mt(x)),s=r.depth+v,t.backgroundColor&&(a.style.backgroundColor=t.backgroundColor,t.borderColor&&(a.style.borderColor=t.borderColor))}var b;if(t.backgroundColor)b=Ie.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:s},{type:"elem",elem:r,shift:0}]},e);else{var w=/cancel|phase/.test(n)?["svg-align"]:[];b=Ie.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:a,shift:s,wrapperClasses:w}]},e)}return/cancel/.test(n)&&(b.height=r.height,b.depth=r.depth),/cancel/.test(n)&&!l?Ie.makeSpan(["mord","cancel-lap"],[b],e):Ie.makeSpan(["mord"],[b],e)},"htmlBuilder$7"),GC=o((t,e)=>{var r=0,n=new st.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[mn(t.body,e)]);switch(t.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),t.label==="\\fcolorbox"){var i=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);n.setAttribute("style","border: "+i+"em solid "+String(t.borderColor))}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&n.setAttribute("mathbackground",t.backgroundColor),n},"mathmlBuilder$6");Ct({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,a=yr(e[0],"color-token").color,s=e[1];return{type:"enclose",mode:n.mode,label:i,backgroundColor:a,body:s}},htmlBuilder:zC,mathmlBuilder:GC});Ct({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,a=yr(e[0],"color-token").color,s=yr(e[1],"color-token").color,l=e[2];return{type:"enclose",mode:n.mode,label:i,backgroundColor:s,borderColor:a,body:l}},htmlBuilder:zC,mathmlBuilder:GC});Ct({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\fbox",body:e[0]}}});Ct({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:zC,mathmlBuilder:GC});Ct({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\angl",body:e[0]}}});d$={};o(ec,"defineEnvironment");p$={};o(le,"defineMacro");o(xG,"getHLines");T4=o(t=>{var e=t.parser.settings;if(!e.displayMode)throw new ut("{"+t.envName+"} can be used only in display mode.")},"validateAmsEnvironmentContext");o($C,"getAutoTag");o(uh,"parseArray");o(VC,"dCellStyle");tc=o(function(e,r){var n,i,a=e.body.length,s=e.hLinesBeforeRow,l=0,u=new Array(a),h=[],f=Math.max(r.fontMetrics().arrayRuleWidth,r.minRuleThickness),d=1/r.fontMetrics().ptPerEm,p=5*d;if(e.colSeparationType&&e.colSeparationType==="small"){var m=r.havingStyle(rr.SCRIPT).sizeMultiplier;p=.2778*(m/r.sizeMultiplier)}var g=e.colSeparationType==="CD"?Qn({number:3,unit:"ex"},r):12*d,y=3*d,v=e.arraystretch*g,x=.7*v,b=.3*v,w=0;function _(ke){for(var Fe=0;Fe0&&(w+=.25),h.push({pos:w,isDashed:ke[Fe]})}for(o(_,"setHLinePos"),_(s[0]),n=0;n0&&(D+=b,Lke))for(n=0;n=l)){var ee=void 0;(i>0||e.hskipBeforeAndAfter)&&(ee=Jt.deflt(W.pregap,p),ee!==0&&(O=Ie.makeSpan(["arraycolsep"],[]),O.style.width=mt(ee),S.push(O)));var J=[];for(n=0;n0){for(var ae=Ie.makeLineSpan("hline",r,f),ue=Ie.makeLineSpan("hdashline",r,f),ce=[{type:"elem",elem:u,shift:0}];h.length>0;){var te=h.pop(),De=te.pos-k;te.isDashed?ce.push({type:"elem",elem:ue,shift:De}):ce.push({type:"elem",elem:ae,shift:De})}u=Ie.makeVList({positionType:"individualShift",children:ce},r)}if(P.length===0)return Ie.makeSpan(["mord"],[u],r);var oe=Ie.makeVList({positionType:"individualShift",children:P},r);return oe=Ie.makeSpan(["tag"],[oe],r),Ie.makeFragment([u,oe])},"htmlBuilder"),Z4e={c:"center ",l:"left ",r:"right "},rc=o(function(e,r){for(var n=[],i=new st.MathNode("mtd",[],["mtr-glue"]),a=new st.MathNode("mtd",[],["mml-eqn-num"]),s=0;s0){var g=e.cols,y="",v=!1,x=0,b=g.length;g[0].type==="separator"&&(p+="top ",x=1),g[g.length-1].type==="separator"&&(p+="bottom ",b-=1);for(var w=x;w0?"left ":"",p+=C[C.length-1].length>0?"right ":"";for(var A=1;A-1?"alignat":"align",a=e.envName==="split",s=uh(e.parser,{cols:n,addJot:!0,autoTag:a?void 0:$C(e.envName),emptySingleRow:!0,colSeparationType:i,maxNumCols:a?2:void 0,leqno:e.parser.settings.leqno},"display"),l,u=0,h={type:"ordgroup",mode:e.mode,body:[]};if(r[0]&&r[0].type==="ordgroup"){for(var f="",d=0;d0&&m&&(v=1),n[g]={type:"align",align:y,pregap:v,postgap:0}}return s.colSeparationType=m?"align":"alignat",s},"alignedHandler");ec({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var r=x4(e[0]),n=r?[e[0]]:yr(e[0],"ordgroup").body,i=n.map(function(s){var l=PC(s),u=l.text;if("lcr".indexOf(u)!==-1)return{type:"align",align:u};if(u==="|")return{type:"separator",separator:"|"};if(u===":")return{type:"separator",separator:":"};throw new ut("Unknown column alignment: "+u,s)}),a={cols:i,hskipBeforeAndAfter:!0,maxNumCols:i.length};return uh(t.parser,a,VC(t.envName))},htmlBuilder:tc,mathmlBuilder:rc});ec({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(t.envName.charAt(t.envName.length-1)==="*"){var i=t.parser;if(i.consumeSpaces(),i.fetch().text==="["){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,"lcr".indexOf(r)===-1)throw new ut("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),n.cols=[{type:"align",align:r}]}}var a=uh(t.parser,n,VC(t.envName)),s=Math.max(0,...a.body.map(l=>l.length));return a.cols=new Array(s).fill({type:"align",align:r}),e?{type:"leftright",mode:t.mode,body:[a],left:e[0],right:e[1],rightColor:void 0}:a},htmlBuilder:tc,mathmlBuilder:rc});ec({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},r=uh(t.parser,e,"script");return r.colSeparationType="small",r},htmlBuilder:tc,mathmlBuilder:rc});ec({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var r=x4(e[0]),n=r?[e[0]]:yr(e[0],"ordgroup").body,i=n.map(function(s){var l=PC(s),u=l.text;if("lc".indexOf(u)!==-1)return{type:"align",align:u};throw new ut("Unknown column alignment: "+u,s)});if(i.length>1)throw new ut("{subarray} can contain only one column");var a={cols:i,hskipBeforeAndAfter:!1,arraystretch:.5};if(a=uh(t.parser,a,"script"),a.body.length>0&&a.body[0].length>1)throw new ut("{subarray} can contain only one column");return a},htmlBuilder:tc,mathmlBuilder:rc});ec({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=uh(t.parser,e,VC(t.envName));return{type:"leftright",mode:t.mode,body:[r],left:t.envName.indexOf("r")>-1?".":"\\{",right:t.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:tc,mathmlBuilder:rc});ec({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:m$,htmlBuilder:tc,mathmlBuilder:rc});ec({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){Jt.contains(["gather","gather*"],t.envName)&&T4(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:$C(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return uh(t.parser,e,"display")},htmlBuilder:tc,mathmlBuilder:rc});ec({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:m$,htmlBuilder:tc,mathmlBuilder:rc});ec({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){T4(t);var e={autoTag:$C(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return uh(t.parser,e,"display")},htmlBuilder:tc,mathmlBuilder:rc});ec({type:"array",names:["CD"],props:{numArgs:0},handler(t){return T4(t),F4e(t.parser)},htmlBuilder:tc,mathmlBuilder:rc});le("\\nonumber","\\gdef\\@eqnsw{0}");le("\\notag","\\nonumber");Ct({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new ut(t.funcName+" valid only within array environment")}});bG=d$;Ct({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];if(i.type!=="ordgroup")throw new ut("Invalid environment name",i);for(var a="",s=0;s{var r=t.font,n=e.withFont(r);return Or(t.body,n)},"htmlBuilder$5"),y$=o((t,e)=>{var r=t.font,n=e.withFont(r);return mn(t.body,n)},"mathmlBuilder$4"),wG={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Ct({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=p4(e[0]),a=n;return a in wG&&(a=wG[a]),{type:"font",mode:r.mode,font:a.slice(1),body:i}},"handler"),htmlBuilder:g$,mathmlBuilder:y$});Ct({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r}=t,n=e[0],i=Jt.isCharacterBox(n);return{type:"mclass",mode:r.mode,mclass:b4(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:i}},"handler")});Ct({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:o((t,e)=>{var{parser:r,funcName:n,breakOnTokenText:i}=t,{mode:a}=r,s=r.parseExpression(!0,i),l="math"+n.slice(1);return{type:"font",mode:a,font:l,body:{type:"ordgroup",mode:r.mode,body:s}}},"handler"),htmlBuilder:g$,mathmlBuilder:y$});v$=o((t,e)=>{var r=e;return t==="display"?r=r.id>=rr.SCRIPT.id?r.text():rr.DISPLAY:t==="text"&&r.size===rr.DISPLAY.size?r=rr.TEXT:t==="script"?r=rr.SCRIPT:t==="scriptscript"&&(r=rr.SCRIPTSCRIPT),r},"adjustStyle"),UC=o((t,e)=>{var r=v$(t.size,e.style),n=r.fracNum(),i=r.fracDen(),a;a=e.havingStyle(n);var s=Or(t.numer,a,e);if(t.continued){var l=8.5/e.fontMetrics().ptPerEm,u=3.5/e.fontMetrics().ptPerEm;s.height=s.height0?g=3*p:g=7*p,y=e.fontMetrics().denom1):(d>0?(m=e.fontMetrics().num2,g=p):(m=e.fontMetrics().num3,g=3*p),y=e.fontMetrics().denom2);var v;if(f){var b=e.fontMetrics().axisHeight;m-s.depth-(b+.5*d){var r=new st.MathNode("mfrac",[mn(t.numer,e),mn(t.denom,e)]);if(!t.hasBarLine)r.setAttribute("linethickness","0px");else if(t.barSize){var n=Qn(t.barSize,e);r.setAttribute("linethickness",mt(n))}var i=v$(t.size,e.style);if(i.size!==e.style.size){r=new st.MathNode("mstyle",[r]);var a=i.size===rr.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",a),r.setAttribute("scriptlevel","0")}if(t.leftDelim!=null||t.rightDelim!=null){var s=[];if(t.leftDelim!=null){var l=new st.MathNode("mo",[new st.TextNode(t.leftDelim.replace("\\",""))]);l.setAttribute("fence","true"),s.push(l)}if(s.push(r),t.rightDelim!=null){var u=new st.MathNode("mo",[new st.TextNode(t.rightDelim.replace("\\",""))]);u.setAttribute("fence","true"),s.push(u)}return IC(s)}return r},"mathmlBuilder$3");Ct({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=e[1],s,l=null,u=null,h="auto";switch(n){case"\\dfrac":case"\\frac":case"\\tfrac":s=!0;break;case"\\\\atopfrac":s=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":s=!1,l="(",u=")";break;case"\\\\bracefrac":s=!1,l="\\{",u="\\}";break;case"\\\\brackfrac":s=!1,l="[",u="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":h="display";break;case"\\tfrac":case"\\tbinom":h="text";break}return{type:"genfrac",mode:r.mode,continued:!1,numer:i,denom:a,hasBarLine:s,leftDelim:l,rightDelim:u,size:h,barSize:null}},"handler"),htmlBuilder:UC,mathmlBuilder:HC});Ct({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=e[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:i,denom:a,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}},"handler")});Ct({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:r,token:n}=t,i;switch(r){case"\\over":i="\\frac";break;case"\\choose":i="\\binom";break;case"\\atop":i="\\\\atopfrac";break;case"\\brace":i="\\\\bracefrac";break;case"\\brack":i="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:i,token:n}}});TG=["display","text","script","scriptscript"],kG=o(function(e){var r=null;return e.length>0&&(r=e,r=r==="."?null:r),r},"delimFromValue");Ct({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:r}=t,n=e[4],i=e[5],a=p4(e[0]),s=a.type==="atom"&&a.family==="open"?kG(a.text):null,l=p4(e[1]),u=l.type==="atom"&&l.family==="close"?kG(l.text):null,h=yr(e[2],"size"),f,d=null;h.isBlank?f=!0:(d=h.value,f=d.number>0);var p="auto",m=e[3];if(m.type==="ordgroup"){if(m.body.length>0){var g=yr(m.body[0],"textord");p=TG[Number(g.text)]}}else m=yr(m,"textord"),p=TG[Number(m.text)];return{type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:f,barSize:d,leftDelim:s,rightDelim:u,size:p}},htmlBuilder:UC,mathmlBuilder:HC});Ct({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:r,funcName:n,token:i}=t;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:yr(e[0],"size").value,token:i}}});Ct({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=Nbe(yr(e[1],"infix").size),s=e[2],l=a.number>0;return{type:"genfrac",mode:r.mode,numer:i,denom:s,continued:!1,hasBarLine:l,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},"handler"),htmlBuilder:UC,mathmlBuilder:HC});x$=o((t,e)=>{var r=e.style,n,i;t.type==="supsub"?(n=t.sup?Or(t.sup,e.havingStyle(r.sup()),e):Or(t.sub,e.havingStyle(r.sub()),e),i=yr(t.base,"horizBrace")):i=yr(t,"horizBrace");var a=Or(i.base,e.havingBaseStyle(rr.DISPLAY)),s=au.svgSpan(i,e),l;if(i.isOver?(l=Ie.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:s}]},e),l.children[0].children[0].children[1].classes.push("svg-align")):(l=Ie.makeVList({positionType:"bottom",positionData:a.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:a}]},e),l.children[0].children[0].children[0].classes.push("svg-align")),n){var u=Ie.makeSpan(["mord",i.isOver?"mover":"munder"],[l],e);i.isOver?l=Ie.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:u},{type:"kern",size:.2},{type:"elem",elem:n}]},e):l=Ie.makeVList({positionType:"bottom",positionData:u.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:u}]},e)}return Ie.makeSpan(["mord",i.isOver?"mover":"munder"],[l],e)},"htmlBuilder$3"),J4e=o((t,e)=>{var r=au.mathMLnode(t.label);return new st.MathNode(t.isOver?"mover":"munder",[mn(t.base,e),r])},"mathmlBuilder$2");Ct({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"horizBrace",mode:r.mode,label:n,isOver:/^\\over/.test(n),base:e[0]}},htmlBuilder:x$,mathmlBuilder:J4e});Ct({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[1],i=yr(e[0],"url").url;return r.settings.isTrusted({command:"\\href",url:i})?{type:"href",mode:r.mode,href:i,body:di(n)}:r.formatUnsupportedCmd("\\href")},"handler"),htmlBuilder:o((t,e)=>{var r=Ii(t.body,e,!1);return Ie.makeAnchor(t.href,[],r,e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=ch(t.body,e);return r instanceof ps||(r=new ps("mrow",[r])),r.setAttribute("href",t.href),r},"mathmlBuilder")});Ct({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=yr(e[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var i=[],a=0;a{var{parser:r,funcName:n,token:i}=t,a=yr(e[0],"raw").string,s=e[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,u={};switch(n){case"\\htmlClass":u.class=a,l={command:"\\htmlClass",class:a};break;case"\\htmlId":u.id=a,l={command:"\\htmlId",id:a};break;case"\\htmlStyle":u.style=a,l={command:"\\htmlStyle",style:a};break;case"\\htmlData":{for(var h=a.split(","),f=0;f{var r=Ii(t.body,e,!1),n=["enclosing"];t.attributes.class&&n.push(...t.attributes.class.trim().split(/\s+/));var i=Ie.makeSpan(n,r,e);for(var a in t.attributes)a!=="class"&&t.attributes.hasOwnProperty(a)&&i.setAttribute(a,t.attributes[a]);return i},"htmlBuilder"),mathmlBuilder:o((t,e)=>ch(t.body,e),"mathmlBuilder")});Ct({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t;return{type:"htmlmathml",mode:r.mode,html:di(e[0]),mathml:di(e[1])}},"handler"),htmlBuilder:o((t,e)=>{var r=Ii(t.html,e,!1);return Ie.makeFragment(r)},"htmlBuilder"),mathmlBuilder:o((t,e)=>ch(t.mathml,e),"mathmlBuilder")});mC=o(function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!r)throw new ut("Invalid size: '"+e+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!FG(n))throw new ut("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n},"sizeData");Ct({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:o((t,e,r)=>{var{parser:n}=t,i={number:0,unit:"em"},a={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var u=yr(r[0],"raw").string,h=u.split(","),f=0;f{var r=Qn(t.height,e),n=0;t.totalheight.number>0&&(n=Qn(t.totalheight,e)-r);var i=0;t.width.number>0&&(i=Qn(t.width,e));var a={height:mt(r+n)};i>0&&(a.width=mt(i)),n>0&&(a.verticalAlign=mt(-n));var s=new wC(t.src,t.alt,a);return s.height=r,s.depth=n,s},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=new st.MathNode("mglyph",[]);r.setAttribute("alt",t.alt);var n=Qn(t.height,e),i=0;if(t.totalheight.number>0&&(i=Qn(t.totalheight,e)-n,r.setAttribute("valign",mt(-i))),r.setAttribute("height",mt(n+i)),t.width.number>0){var a=Qn(t.width,e);r.setAttribute("width",mt(a))}return r.setAttribute("src",t.src),r},"mathmlBuilder")});Ct({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,i=yr(e[0],"size");if(r.settings.strict){var a=n[1]==="m",s=i.value.unit==="mu";a?(s||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+i.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):s&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:i.value}},htmlBuilder(t,e){return Ie.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var r=Qn(t.dimension,e);return new st.SpaceNode(r)}});Ct({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:i}},"handler"),htmlBuilder:o((t,e)=>{var r;t.alignment==="clap"?(r=Ie.makeSpan([],[Or(t.body,e)]),r=Ie.makeSpan(["inner"],[r],e)):r=Ie.makeSpan(["inner"],[Or(t.body,e)]);var n=Ie.makeSpan(["fix"],[]),i=Ie.makeSpan([t.alignment],[r,n],e),a=Ie.makeSpan(["strut"]);return a.style.height=mt(i.height+i.depth),i.depth&&(a.style.verticalAlign=mt(-i.depth)),i.children.unshift(a),i=Ie.makeSpan(["thinbox"],[i],e),Ie.makeSpan(["mord","vbox"],[i],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=new st.MathNode("mpadded",[mn(t.body,e)]);if(t.alignment!=="rlap"){var n=t.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r},"mathmlBuilder")});Ct({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:r,parser:n}=t,i=n.mode;n.switchMode("math");var a=r==="\\("?"\\)":"$",s=n.parseExpression(!1,a);return n.expect(a),n.switchMode(i),{type:"styling",mode:n.mode,style:"text",body:s}}});Ct({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new ut("Mismatched "+t.funcName)}});EG=o((t,e)=>{switch(e.style.size){case rr.DISPLAY.size:return t.display;case rr.TEXT.size:return t.text;case rr.SCRIPT.size:return t.script;case rr.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}},"chooseMathStyle");Ct({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:o((t,e)=>{var{parser:r}=t;return{type:"mathchoice",mode:r.mode,display:di(e[0]),text:di(e[1]),script:di(e[2]),scriptscript:di(e[3])}},"handler"),htmlBuilder:o((t,e)=>{var r=EG(t,e),n=Ii(r,e,!1);return Ie.makeFragment(n)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=EG(t,e);return ch(r,e)},"mathmlBuilder")});b$=o((t,e,r,n,i,a,s)=>{t=Ie.makeSpan([],[t]);var l=r&&Jt.isCharacterBox(r),u,h;if(e){var f=Or(e,n.havingStyle(i.sup()),n);h={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-f.depth)}}if(r){var d=Or(r,n.havingStyle(i.sub()),n);u={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-d.height)}}var p;if(h&&u){var m=n.fontMetrics().bigOpSpacing5+u.elem.height+u.elem.depth+u.kern+t.depth+s;p=Ie.makeVList({positionType:"bottom",positionData:m,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:mt(-a)},{type:"kern",size:u.kern},{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:mt(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(u){var g=t.height-s;p=Ie.makeVList({positionType:"top",positionData:g,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:mt(-a)},{type:"kern",size:u.kern},{type:"elem",elem:t}]},n)}else if(h){var y=t.depth+s;p=Ie.makeVList({positionType:"bottom",positionData:y,children:[{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:mt(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else return t;var v=[p];if(u&&a!==0&&!l){var x=Ie.makeSpan(["mspace"],[],n);x.style.marginRight=mt(a),v.unshift(x)}return Ie.makeSpan(["mop","op-limits"],v,n)},"assembleSupSub"),w$=["\\smallint"],pp=o((t,e)=>{var r,n,i=!1,a;t.type==="supsub"?(r=t.sup,n=t.sub,a=yr(t.base,"op"),i=!0):a=yr(t,"op");var s=e.style,l=!1;s.size===rr.DISPLAY.size&&a.symbol&&!Jt.contains(w$,a.name)&&(l=!0);var u;if(a.symbol){var h=l?"Size2-Regular":"Size1-Regular",f="";if((a.name==="\\oiint"||a.name==="\\oiiint")&&(f=a.name.slice(1),a.name=f==="oiint"?"\\iint":"\\iiint"),u=Ie.makeSymbol(a.name,h,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),f.length>0){var d=u.italic,p=Ie.staticSvg(f+"Size"+(l?"2":"1"),e);u=Ie.makeVList({positionType:"individualShift",children:[{type:"elem",elem:u,shift:0},{type:"elem",elem:p,shift:l?.08:0}]},e),a.name="\\"+f,u.classes.unshift("mop"),u.italic=d}}else if(a.body){var m=Ii(a.body,e,!0);m.length===1&&m[0]instanceof ms?(u=m[0],u.classes[0]="mop"):u=Ie.makeSpan(["mop"],m,e)}else{for(var g=[],y=1;y{var r;if(t.symbol)r=new ps("mo",[Ao(t.name,t.mode)]),Jt.contains(w$,t.name)&&r.setAttribute("largeop","false");else if(t.body)r=new ps("mo",gs(t.body,e));else{r=new ps("mi",[new Wf(t.name.slice(1))]);var n=new ps("mo",[Ao("\u2061","text")]);t.parentIsSupSub?r=new ps("mrow",[r,n]):r=jG([r,n])}return r},"mathmlBuilder$1"),e3e={"\u220F":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22C0":"\\bigwedge","\u22C1":"\\bigvee","\u22C2":"\\bigcap","\u22C3":"\\bigcup","\u2A00":"\\bigodot","\u2A01":"\\bigoplus","\u2A02":"\\bigotimes","\u2A04":"\\biguplus","\u2A06":"\\bigsqcup"};Ct({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220F","\u2210","\u2211","\u22C0","\u22C1","\u22C2","\u22C3","\u2A00","\u2A01","\u2A02","\u2A04","\u2A06"],props:{numArgs:0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=n;return i.length===1&&(i=e3e[i]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:i}},"handler"),htmlBuilder:pp,mathmlBuilder:ny});Ct({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:di(n)}},"handler"),htmlBuilder:pp,mathmlBuilder:ny});t3e={"\u222B":"\\int","\u222C":"\\iint","\u222D":"\\iiint","\u222E":"\\oint","\u222F":"\\oiint","\u2230":"\\oiiint"};Ct({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:pp,mathmlBuilder:ny});Ct({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:pp,mathmlBuilder:ny});Ct({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222B","\u222C","\u222D","\u222E","\u222F","\u2230"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t,n=r;return n.length===1&&(n=t3e[n]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:pp,mathmlBuilder:ny});T$=o((t,e)=>{var r,n,i=!1,a;t.type==="supsub"?(r=t.sup,n=t.sub,a=yr(t.base,"operatorname"),i=!0):a=yr(t,"operatorname");var s;if(a.body.length>0){for(var l=a.body.map(d=>{var p=d.text;return typeof p=="string"?{type:"textord",mode:d.mode,text:p}:d}),u=Ii(l,e.withFont("mathrm"),!0),h=0;h{for(var r=gs(t.body,e.withFont("mathrm")),n=!0,i=0;if.toText()).join("");r=[new st.TextNode(l)]}var u=new st.MathNode("mi",r);u.setAttribute("mathvariant","normal");var h=new st.MathNode("mo",[Ao("\u2061","text")]);return t.parentIsSupSub?new st.MathNode("mrow",[u,h]):st.newDocumentFragment([u,h])},"mathmlBuilder");Ct({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"operatorname",mode:r.mode,body:di(i),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},"handler"),htmlBuilder:T$,mathmlBuilder:r3e});le("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");Xf({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?Ie.makeFragment(Ii(t.body,e,!1)):Ie.makeSpan(["mord"],Ii(t.body,e,!0),e)},mathmlBuilder(t,e){return ch(t.body,e,!0)}});Ct({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:r}=t,n=e[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(t,e){var r=Or(t.body,e.havingCrampedStyle()),n=Ie.makeLineSpan("overline-line",e),i=e.fontMetrics().defaultRuleThickness,a=Ie.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*i},{type:"elem",elem:n},{type:"kern",size:i}]},e);return Ie.makeSpan(["mord","overline"],[a],e)},mathmlBuilder(t,e){var r=new st.MathNode("mo",[new st.TextNode("\u203E")]);r.setAttribute("stretchy","true");var n=new st.MathNode("mover",[mn(t.body,e),r]);return n.setAttribute("accent","true"),n}});Ct({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"phantom",mode:r.mode,body:di(n)}},"handler"),htmlBuilder:o((t,e)=>{var r=Ii(t.body,e.withPhantom(),!1);return Ie.makeFragment(r)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=gs(t.body,e);return new st.MathNode("mphantom",r)},"mathmlBuilder")});Ct({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"hphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((t,e)=>{var r=Ie.makeSpan([],[Or(t.body,e.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var n=0;n{var r=gs(di(t.body),e),n=new st.MathNode("mphantom",r),i=new st.MathNode("mpadded",[n]);return i.setAttribute("height","0px"),i.setAttribute("depth","0px"),i},"mathmlBuilder")});Ct({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"vphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((t,e)=>{var r=Ie.makeSpan(["inner"],[Or(t.body,e.withPhantom())]),n=Ie.makeSpan(["fix"],[]);return Ie.makeSpan(["mord","rlap"],[r,n],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=gs(di(t.body),e),n=new st.MathNode("mphantom",r),i=new st.MathNode("mpadded",[n]);return i.setAttribute("width","0px"),i},"mathmlBuilder")});Ct({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t,n=yr(e[0],"size").value,i=e[1];return{type:"raisebox",mode:r.mode,dy:n,body:i}},htmlBuilder(t,e){var r=Or(t.body,e),n=Qn(t.dy,e);return Ie.makeVList({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){var r=new st.MathNode("mpadded",[mn(t.body,e)]),n=t.dy.number+t.dy.unit;return r.setAttribute("voffset",n),r}});Ct({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});Ct({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler(t,e,r){var{parser:n}=t,i=r[0],a=yr(e[0],"size"),s=yr(e[1],"size");return{type:"rule",mode:n.mode,shift:i&&yr(i,"size").value,width:a.value,height:s.value}},htmlBuilder(t,e){var r=Ie.makeSpan(["mord","rule"],[],e),n=Qn(t.width,e),i=Qn(t.height,e),a=t.shift?Qn(t.shift,e):0;return r.style.borderRightWidth=mt(n),r.style.borderTopWidth=mt(i),r.style.bottom=mt(a),r.width=n,r.height=i+a,r.depth=-a,r.maxFontSize=i*1.125*e.sizeMultiplier,r},mathmlBuilder(t,e){var r=Qn(t.width,e),n=Qn(t.height,e),i=t.shift?Qn(t.shift,e):0,a=e.color&&e.getColor()||"black",s=new st.MathNode("mspace");s.setAttribute("mathbackground",a),s.setAttribute("width",mt(r)),s.setAttribute("height",mt(n));var l=new st.MathNode("mpadded",[s]);return i>=0?l.setAttribute("height",mt(i)):(l.setAttribute("height",mt(i)),l.setAttribute("depth",mt(-i))),l.setAttribute("voffset",mt(i)),l}});o(k$,"sizingGroup");SG=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],n3e=o((t,e)=>{var r=e.havingSize(t.size);return k$(t.body,r,e)},"htmlBuilder");Ct({type:"sizing",names:SG,props:{numArgs:0,allowedInText:!0},handler:o((t,e)=>{var{breakOnTokenText:r,funcName:n,parser:i}=t,a=i.parseExpression(!1,r);return{type:"sizing",mode:i.mode,size:SG.indexOf(n)+1,body:a}},"handler"),htmlBuilder:n3e,mathmlBuilder:o((t,e)=>{var r=e.havingSize(t.size),n=gs(t.body,r),i=new st.MathNode("mstyle",n);return i.setAttribute("mathsize",mt(r.sizeMultiplier)),i},"mathmlBuilder")});Ct({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:o((t,e,r)=>{var{parser:n}=t,i=!1,a=!1,s=r[0]&&yr(r[0],"ordgroup");if(s)for(var l="",u=0;u{var r=Ie.makeSpan([],[Or(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return r;if(t.smashHeight&&(r.height=0,r.children))for(var n=0;n{var r=new st.MathNode("mpadded",[mn(t.body,e)]);return t.smashHeight&&r.setAttribute("height","0px"),t.smashDepth&&r.setAttribute("depth","0px"),r},"mathmlBuilder")});Ct({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:n}=t,i=r[0],a=e[0];return{type:"sqrt",mode:n.mode,body:a,index:i}},htmlBuilder(t,e){var r=Or(t.body,e.havingCrampedStyle());r.height===0&&(r.height=e.fontMetrics().xHeight),r=Ie.wrapFragment(r,e);var n=e.fontMetrics(),i=n.defaultRuleThickness,a=i;e.style.idr.height+r.depth+s&&(s=(s+d-r.height-r.depth)/2);var p=u.height-r.height-s-h;r.style.paddingLeft=mt(f);var m=Ie.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+p)},{type:"elem",elem:u},{type:"kern",size:h}]},e);if(t.index){var g=e.havingStyle(rr.SCRIPTSCRIPT),y=Or(t.index,g,e),v=.6*(m.height-m.depth),x=Ie.makeVList({positionType:"shift",positionData:-v,children:[{type:"elem",elem:y}]},e),b=Ie.makeSpan(["root"],[x]);return Ie.makeSpan(["mord","sqrt"],[b,m],e)}else return Ie.makeSpan(["mord","sqrt"],[m],e)},mathmlBuilder(t,e){var{body:r,index:n}=t;return n?new st.MathNode("mroot",[mn(r,e),mn(n,e)]):new st.MathNode("msqrt",[mn(r,e)])}});CG={display:rr.DISPLAY,text:rr.TEXT,script:rr.SCRIPT,scriptscript:rr.SCRIPTSCRIPT};Ct({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:r,funcName:n,parser:i}=t,a=i.parseExpression(!0,r),s=n.slice(1,n.length-5);return{type:"styling",mode:i.mode,style:s,body:a}},htmlBuilder(t,e){var r=CG[t.style],n=e.havingStyle(r).withFont("");return k$(t.body,n,e)},mathmlBuilder(t,e){var r=CG[t.style],n=e.havingStyle(r),i=gs(t.body,n),a=new st.MathNode("mstyle",i),s={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=s[t.style];return a.setAttribute("scriptlevel",l[0]),a.setAttribute("displaystyle",l[1]),a}});i3e=o(function(e,r){var n=e.base;if(n)if(n.type==="op"){var i=n.limits&&(r.style.size===rr.DISPLAY.size||n.alwaysHandleSupSub);return i?pp:null}else if(n.type==="operatorname"){var a=n.alwaysHandleSupSub&&(r.style.size===rr.DISPLAY.size||n.limits);return a?T$:null}else{if(n.type==="accent")return Jt.isCharacterBox(n.base)?BC:null;if(n.type==="horizBrace"){var s=!e.sub;return s===n.isOver?x$:null}else return null}else return null},"htmlBuilderDelegate");Xf({type:"supsub",htmlBuilder(t,e){var r=i3e(t,e);if(r)return r(t,e);var{base:n,sup:i,sub:a}=t,s=Or(n,e),l,u,h=e.fontMetrics(),f=0,d=0,p=n&&Jt.isCharacterBox(n);if(i){var m=e.havingStyle(e.style.sup());l=Or(i,m,e),p||(f=s.height-m.fontMetrics().supDrop*m.sizeMultiplier/e.sizeMultiplier)}if(a){var g=e.havingStyle(e.style.sub());u=Or(a,g,e),p||(d=s.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}var y;e.style===rr.DISPLAY?y=h.sup1:e.style.cramped?y=h.sup3:y=h.sup2;var v=e.sizeMultiplier,x=mt(.5/h.ptPerEm/v),b=null;if(u){var w=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(s instanceof ms||w)&&(b=mt(-s.italic))}var _;if(l&&u){f=Math.max(f,y,l.depth+.25*h.xHeight),d=Math.max(d,h.sub2);var T=h.defaultRuleThickness,E=4*T;if(f-l.depth-(u.height-d)0&&(f+=L,d-=L)}var C=[{type:"elem",elem:u,shift:d,marginRight:x,marginLeft:b},{type:"elem",elem:l,shift:-f,marginRight:x}];_=Ie.makeVList({positionType:"individualShift",children:C},e)}else if(u){d=Math.max(d,h.sub1,u.height-.8*h.xHeight);var A=[{type:"elem",elem:u,marginLeft:b,marginRight:x}];_=Ie.makeVList({positionType:"shift",positionData:d,children:A},e)}else if(l)f=Math.max(f,y,l.depth+.25*h.xHeight),_=Ie.makeVList({positionType:"shift",positionData:-f,children:[{type:"elem",elem:l,marginRight:x}]},e);else throw new Error("supsub must have either sup or sub.");var I=kC(s,"right")||"mord";return Ie.makeSpan([I],[s,Ie.makeSpan(["msupsub"],[_])],e)},mathmlBuilder(t,e){var r=!1,n,i;t.base&&t.base.type==="horizBrace"&&(i=!!t.sup,i===t.base.isOver&&(r=!0,n=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var a=[mn(t.base,e)];t.sub&&a.push(mn(t.sub,e)),t.sup&&a.push(mn(t.sup,e));var s;if(r)s=n?"mover":"munder";else if(t.sub)if(t.sup){var h=t.base;h&&h.type==="op"&&h.limits&&e.style===rr.DISPLAY||h&&h.type==="operatorname"&&h.alwaysHandleSupSub&&(e.style===rr.DISPLAY||h.limits)?s="munderover":s="msubsup"}else{var u=t.base;u&&u.type==="op"&&u.limits&&(e.style===rr.DISPLAY||u.alwaysHandleSupSub)||u&&u.type==="operatorname"&&u.alwaysHandleSupSub&&(u.limits||e.style===rr.DISPLAY)?s="munder":s="msub"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===rr.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===rr.DISPLAY)?s="mover":s="msup"}return new st.MathNode(s,a)}});Xf({type:"atom",htmlBuilder(t,e){return Ie.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var r=new st.MathNode("mo",[Ao(t.text,t.mode)]);if(t.family==="bin"){var n=OC(t,e);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else t.family==="punct"?r.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&r.setAttribute("stretchy","false");return r}});E$={mi:"italic",mn:"normal",mtext:"normal"};Xf({type:"mathord",htmlBuilder(t,e){return Ie.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var r=new st.MathNode("mi",[Ao(t.text,t.mode,e)]),n=OC(t,e)||"italic";return n!==E$[r.type]&&r.setAttribute("mathvariant",n),r}});Xf({type:"textord",htmlBuilder(t,e){return Ie.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var r=Ao(t.text,t.mode,e),n=OC(t,e)||"normal",i;return t.mode==="text"?i=new st.MathNode("mtext",[r]):/[0-9]/.test(t.text)?i=new st.MathNode("mn",[r]):t.text==="\\prime"?i=new st.MathNode("mo",[r]):i=new st.MathNode("mi",[r]),n!==E$[i.type]&&i.setAttribute("mathvariant",n),i}});gC={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},yC={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Xf({type:"spacing",htmlBuilder(t,e){if(yC.hasOwnProperty(t.text)){var r=yC[t.text].className||"";if(t.mode==="text"){var n=Ie.makeOrd(t,e,"textord");return n.classes.push(r),n}else return Ie.makeSpan(["mspace",r],[Ie.mathsym(t.text,t.mode,e)],e)}else{if(gC.hasOwnProperty(t.text))return Ie.makeSpan(["mspace",gC[t.text]],[],e);throw new ut('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var r;if(yC.hasOwnProperty(t.text))r=new st.MathNode("mtext",[new st.TextNode("\xA0")]);else{if(gC.hasOwnProperty(t.text))return new st.MathNode("mspace");throw new ut('Unknown type of space "'+t.text+'"')}return r}});AG=o(()=>{var t=new st.MathNode("mtd",[]);return t.setAttribute("width","50%"),t},"pad");Xf({type:"tag",mathmlBuilder(t,e){var r=new st.MathNode("mtable",[new st.MathNode("mtr",[AG(),new st.MathNode("mtd",[ch(t.body,e)]),AG(),new st.MathNode("mtd",[ch(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});_G={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},LG={"\\textbf":"textbf","\\textmd":"textmd"},a3e={"\\textit":"textit","\\textup":"textup"},DG=o((t,e)=>{var r=t.font;if(r){if(_G[r])return e.withTextFontFamily(_G[r]);if(LG[r])return e.withTextFontWeight(LG[r]);if(r==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(a3e[r])},"optionsWithFont");Ct({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"text",mode:r.mode,body:di(i),font:n}},htmlBuilder(t,e){var r=DG(t,e),n=Ii(t.body,r,!0);return Ie.makeSpan(["mord","text"],n,r)},mathmlBuilder(t,e){var r=DG(t,e);return ch(t.body,r)}});Ct({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"underline",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=Or(t.body,e),n=Ie.makeLineSpan("underline-line",e),i=e.fontMetrics().defaultRuleThickness,a=Ie.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:i},{type:"elem",elem:n},{type:"kern",size:3*i},{type:"elem",elem:r}]},e);return Ie.makeSpan(["mord","underline"],[a],e)},mathmlBuilder(t,e){var r=new st.MathNode("mo",[new st.TextNode("\u203E")]);r.setAttribute("stretchy","true");var n=new st.MathNode("munder",[mn(t.body,e),r]);return n.setAttribute("accentunder","true"),n}});Ct({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"vcenter",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=Or(t.body,e),n=e.fontMetrics().axisHeight,i=.5*(r.height-n-(r.depth+n));return Ie.makeVList({positionType:"shift",positionData:i,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){return new st.MathNode("mpadded",[mn(t.body,e)],["vcenter"])}});Ct({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,r){throw new ut("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var r=NG(t),n=[],i=e.havingStyle(e.style.text()),a=0;at.body.replace(/ /g,t.star?"\u2423":"\xA0"),"makeVerb"),oh=qG,S$=`[ \r - ]`,s3e="\\\\[a-zA-Z@]+",o3e="\\\\[^\uD800-\uDFFF]",l3e="("+s3e+")"+S$+"*",c3e=`\\\\( +-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}},"tallDelim"),Qf=class{static{o(this,"DocumentFragment")}constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return Jt.contains(this.classes,e)}toNode(){for(var e=document.createDocumentFragment(),r=0;rr.toText(),"toText");return this.children.map(e).join("")}},Xl={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},G4={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},jz={\u00C5:"A",\u00D0:"D",\u00DE:"o",\u00E5:"a",\u00F0:"d",\u00FE:"o",\u0410:"A",\u0411:"B",\u0412:"B",\u0413:"F",\u0414:"A",\u0415:"E",\u0416:"K",\u0417:"3",\u0418:"N",\u0419:"N",\u041A:"K",\u041B:"N",\u041C:"M",\u041D:"H",\u041E:"O",\u041F:"N",\u0420:"P",\u0421:"C",\u0422:"T",\u0423:"y",\u0424:"O",\u0425:"X",\u0426:"U",\u0427:"h",\u0428:"W",\u0429:"W",\u042A:"B",\u042B:"X",\u042C:"B",\u042D:"3",\u042E:"X",\u042F:"R",\u0430:"a",\u0431:"b",\u0432:"a",\u0433:"r",\u0434:"y",\u0435:"e",\u0436:"m",\u0437:"e",\u0438:"n",\u0439:"n",\u043A:"n",\u043B:"n",\u043C:"m",\u043D:"n",\u043E:"o",\u043F:"n",\u0440:"p",\u0441:"c",\u0442:"o",\u0443:"y",\u0444:"b",\u0445:"x",\u0446:"n",\u0447:"n",\u0448:"w",\u0449:"w",\u044A:"a",\u044B:"m",\u044C:"a",\u044D:"e",\u044E:"m",\u044F:"r"};o(Jxe,"setFontMetrics");o(T7,"getCharacterMetrics");QC={};o(ebe,"getGlobalMetrics");tbe=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],Kz=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Qz=o(function(e,r){return r.size<2?e:tbe[e-1][r.size-1]},"sizeAtStyle"),e3=class t{static{o(this,"Options")}constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||t.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=Kz[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var n in e)e.hasOwnProperty(n)&&(r[n]=e[n]);return new t(r)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:Qz(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:Kz[e-1]})}havingBaseStyle(e){e=e||this.style.text();var r=Qz(t.BASESIZE,e);return this.size===r&&this.textSize===t.BASESIZE&&this.style===e?this:this.extend({style:e,size:r})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==t.BASESIZE?["sizing","reset-size"+this.size,"size"+t.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=ebe(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}};e3.BASESIZE=6;u7={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},rbe={ex:!0,em:!0,mu:!0},AG=o(function(e){return typeof e!="string"&&(e=e.unit),e in u7||e in rbe||e==="ex"},"validUnit"),ti=o(function(e,r){var n;if(e.unit in u7)n=u7[e.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(e.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var i;if(r.style.isTight()?i=r.havingStyle(r.style.text()):i=r,e.unit==="ex")n=i.fontMetrics().xHeight;else if(e.unit==="em")n=i.fontMetrics().quad;else throw new gt("Invalid unit: '"+e.unit+"'");i!==r&&(n*=i.sizeMultiplier/r.sizeMultiplier)}return Math.min(e.number*n,r.maxSize)},"calculateSize"),kt=o(function(e){return+e.toFixed(4)+"em"},"makeEm"),lh=o(function(e){return e.filter(r=>r).join(" ")},"createClass"),_G=o(function(e,r,n){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var i=r.getColor();i&&(this.style.color=i)}},"initNode"),DG=o(function(e){var r=document.createElement(e);r.className=lh(this.classes);for(var n in this.style)this.style.hasOwnProperty(n)&&(r.style[n]=this.style[n]);for(var i in this.attributes)this.attributes.hasOwnProperty(i)&&r.setAttribute(i,this.attributes[i]);for(var a=0;a",r},"toMarkup"),Zf=class{static{o(this,"Span")}constructor(e,r,n,i){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,_G.call(this,e,n,i),this.children=r||[]}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return Jt.contains(this.classes,e)}toNode(){return DG.call(this,"span")}toMarkup(){return LG.call(this,"span")}},Oy=class{static{o(this,"Anchor")}constructor(e,r,n,i){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,_G.call(this,r,i),this.children=n||[],this.setAttribute("href",e)}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return Jt.contains(this.classes,e)}toNode(){return DG.call(this,"a")}toMarkup(){return LG.call(this,"a")}},h7=class{static{o(this,"Img")}constructor(e,r,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=r,this.src=e,this.classes=["mord"],this.style=n}hasClass(e){return Jt.contains(this.classes,e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var r in this.style)this.style.hasOwnProperty(r)&&(e.style[r]=this.style[r]);return e}toMarkup(){var e=''+Jt.escape(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=kt(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=lh(this.classes));for(var n in this.style)this.style.hasOwnProperty(n)&&(r=r||document.createElement("span"),r.style[n]=this.style[n]);return r?(r.appendChild(e),r):e}toMarkup(){var e=!1,r="0&&(n+="margin-right:"+this.italic+"em;");for(var i in this.style)this.style.hasOwnProperty(i)&&(n+=Jt.hyphenate(i)+":"+this.style[i]+";");n&&(e=!0,r+=' style="'+Jt.escape(n)+'"');var a=Jt.escape(this.text);return e?(r+=">",r+=a,r+="",r):a}},al=class{static{o(this,"SvgNode")}constructor(e,r){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=r||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"svg");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);for(var i=0;i':''}},Py=class{static{o(this,"LineNode")}constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"line");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var e="","\\gt",!0);$(U,ee,Ee,"\u2208","\\in",!0);$(U,ee,Ee,"\uE020","\\@not");$(U,ee,Ee,"\u2282","\\subset",!0);$(U,ee,Ee,"\u2283","\\supset",!0);$(U,ee,Ee,"\u2286","\\subseteq",!0);$(U,ee,Ee,"\u2287","\\supseteq",!0);$(U,ke,Ee,"\u2288","\\nsubseteq",!0);$(U,ke,Ee,"\u2289","\\nsupseteq",!0);$(U,ee,Ee,"\u22A8","\\models");$(U,ee,Ee,"\u2190","\\leftarrow",!0);$(U,ee,Ee,"\u2264","\\le");$(U,ee,Ee,"\u2264","\\leq",!0);$(U,ee,Ee,"<","\\lt",!0);$(U,ee,Ee,"\u2192","\\rightarrow",!0);$(U,ee,Ee,"\u2192","\\to");$(U,ke,Ee,"\u2271","\\ngeq",!0);$(U,ke,Ee,"\u2270","\\nleq",!0);$(U,ee,lu,"\xA0","\\ ");$(U,ee,lu,"\xA0","\\space");$(U,ee,lu,"\xA0","\\nobreakspace");$(it,ee,lu,"\xA0","\\ ");$(it,ee,lu,"\xA0"," ");$(it,ee,lu,"\xA0","\\space");$(it,ee,lu,"\xA0","\\nobreakspace");$(U,ee,lu,null,"\\nobreak");$(U,ee,lu,null,"\\allowbreak");$(U,ee,o3,",",",");$(U,ee,o3,";",";");$(U,ke,Mt,"\u22BC","\\barwedge",!0);$(U,ke,Mt,"\u22BB","\\veebar",!0);$(U,ee,Mt,"\u2299","\\odot",!0);$(U,ee,Mt,"\u2295","\\oplus",!0);$(U,ee,Mt,"\u2297","\\otimes",!0);$(U,ee,Le,"\u2202","\\partial",!0);$(U,ee,Mt,"\u2298","\\oslash",!0);$(U,ke,Mt,"\u229A","\\circledcirc",!0);$(U,ke,Mt,"\u22A1","\\boxdot",!0);$(U,ee,Mt,"\u25B3","\\bigtriangleup");$(U,ee,Mt,"\u25BD","\\bigtriangledown");$(U,ee,Mt,"\u2020","\\dagger");$(U,ee,Mt,"\u22C4","\\diamond");$(U,ee,Mt,"\u22C6","\\star");$(U,ee,Mt,"\u25C3","\\triangleleft");$(U,ee,Mt,"\u25B9","\\triangleright");$(U,ee,Hs,"{","\\{");$(it,ee,Le,"{","\\{");$(it,ee,Le,"{","\\textbraceleft");$(U,ee,Ka,"}","\\}");$(it,ee,Le,"}","\\}");$(it,ee,Le,"}","\\textbraceright");$(U,ee,Hs,"{","\\lbrace");$(U,ee,Ka,"}","\\rbrace");$(U,ee,Hs,"[","\\lbrack",!0);$(it,ee,Le,"[","\\lbrack",!0);$(U,ee,Ka,"]","\\rbrack",!0);$(it,ee,Le,"]","\\rbrack",!0);$(U,ee,Hs,"(","\\lparen",!0);$(U,ee,Ka,")","\\rparen",!0);$(it,ee,Le,"<","\\textless",!0);$(it,ee,Le,">","\\textgreater",!0);$(U,ee,Hs,"\u230A","\\lfloor",!0);$(U,ee,Ka,"\u230B","\\rfloor",!0);$(U,ee,Hs,"\u2308","\\lceil",!0);$(U,ee,Ka,"\u2309","\\rceil",!0);$(U,ee,Le,"\\","\\backslash");$(U,ee,Le,"\u2223","|");$(U,ee,Le,"\u2223","\\vert");$(it,ee,Le,"|","\\textbar",!0);$(U,ee,Le,"\u2225","\\|");$(U,ee,Le,"\u2225","\\Vert");$(it,ee,Le,"\u2225","\\textbardbl");$(it,ee,Le,"~","\\textasciitilde");$(it,ee,Le,"\\","\\textbackslash");$(it,ee,Le,"^","\\textasciicircum");$(U,ee,Ee,"\u2191","\\uparrow",!0);$(U,ee,Ee,"\u21D1","\\Uparrow",!0);$(U,ee,Ee,"\u2193","\\downarrow",!0);$(U,ee,Ee,"\u21D3","\\Downarrow",!0);$(U,ee,Ee,"\u2195","\\updownarrow",!0);$(U,ee,Ee,"\u21D5","\\Updownarrow",!0);$(U,ee,wi,"\u2210","\\coprod");$(U,ee,wi,"\u22C1","\\bigvee");$(U,ee,wi,"\u22C0","\\bigwedge");$(U,ee,wi,"\u2A04","\\biguplus");$(U,ee,wi,"\u22C2","\\bigcap");$(U,ee,wi,"\u22C3","\\bigcup");$(U,ee,wi,"\u222B","\\int");$(U,ee,wi,"\u222B","\\intop");$(U,ee,wi,"\u222C","\\iint");$(U,ee,wi,"\u222D","\\iiint");$(U,ee,wi,"\u220F","\\prod");$(U,ee,wi,"\u2211","\\sum");$(U,ee,wi,"\u2A02","\\bigotimes");$(U,ee,wi,"\u2A01","\\bigoplus");$(U,ee,wi,"\u2A00","\\bigodot");$(U,ee,wi,"\u222E","\\oint");$(U,ee,wi,"\u222F","\\oiint");$(U,ee,wi,"\u2230","\\oiiint");$(U,ee,wi,"\u2A06","\\bigsqcup");$(U,ee,wi,"\u222B","\\smallint");$(it,ee,h0,"\u2026","\\textellipsis");$(U,ee,h0,"\u2026","\\mathellipsis");$(it,ee,h0,"\u2026","\\ldots",!0);$(U,ee,h0,"\u2026","\\ldots",!0);$(U,ee,h0,"\u22EF","\\@cdots",!0);$(U,ee,h0,"\u22F1","\\ddots",!0);$(U,ee,Le,"\u22EE","\\varvdots");$(U,ee,Vn,"\u02CA","\\acute");$(U,ee,Vn,"\u02CB","\\grave");$(U,ee,Vn,"\xA8","\\ddot");$(U,ee,Vn,"~","\\tilde");$(U,ee,Vn,"\u02C9","\\bar");$(U,ee,Vn,"\u02D8","\\breve");$(U,ee,Vn,"\u02C7","\\check");$(U,ee,Vn,"^","\\hat");$(U,ee,Vn,"\u20D7","\\vec");$(U,ee,Vn,"\u02D9","\\dot");$(U,ee,Vn,"\u02DA","\\mathring");$(U,ee,er,"\uE131","\\@imath");$(U,ee,er,"\uE237","\\@jmath");$(U,ee,Le,"\u0131","\u0131");$(U,ee,Le,"\u0237","\u0237");$(it,ee,Le,"\u0131","\\i",!0);$(it,ee,Le,"\u0237","\\j",!0);$(it,ee,Le,"\xDF","\\ss",!0);$(it,ee,Le,"\xE6","\\ae",!0);$(it,ee,Le,"\u0153","\\oe",!0);$(it,ee,Le,"\xF8","\\o",!0);$(it,ee,Le,"\xC6","\\AE",!0);$(it,ee,Le,"\u0152","\\OE",!0);$(it,ee,Le,"\xD8","\\O",!0);$(it,ee,Vn,"\u02CA","\\'");$(it,ee,Vn,"\u02CB","\\`");$(it,ee,Vn,"\u02C6","\\^");$(it,ee,Vn,"\u02DC","\\~");$(it,ee,Vn,"\u02C9","\\=");$(it,ee,Vn,"\u02D8","\\u");$(it,ee,Vn,"\u02D9","\\.");$(it,ee,Vn,"\xB8","\\c");$(it,ee,Vn,"\u02DA","\\r");$(it,ee,Vn,"\u02C7","\\v");$(it,ee,Vn,"\xA8",'\\"');$(it,ee,Vn,"\u02DD","\\H");$(it,ee,Vn,"\u25EF","\\textcircled");RG={"--":!0,"---":!0,"``":!0,"''":!0};$(it,ee,Le,"\u2013","--",!0);$(it,ee,Le,"\u2013","\\textendash");$(it,ee,Le,"\u2014","---",!0);$(it,ee,Le,"\u2014","\\textemdash");$(it,ee,Le,"\u2018","`",!0);$(it,ee,Le,"\u2018","\\textquoteleft");$(it,ee,Le,"\u2019","'",!0);$(it,ee,Le,"\u2019","\\textquoteright");$(it,ee,Le,"\u201C","``",!0);$(it,ee,Le,"\u201C","\\textquotedblleft");$(it,ee,Le,"\u201D","''",!0);$(it,ee,Le,"\u201D","\\textquotedblright");$(U,ee,Le,"\xB0","\\degree",!0);$(it,ee,Le,"\xB0","\\degree");$(it,ee,Le,"\xB0","\\textdegree",!0);$(U,ee,Le,"\xA3","\\pounds");$(U,ee,Le,"\xA3","\\mathsterling",!0);$(it,ee,Le,"\xA3","\\pounds");$(it,ee,Le,"\xA3","\\textsterling",!0);$(U,ke,Le,"\u2720","\\maltese");$(it,ke,Le,"\u2720","\\maltese");Jz='0123456789/@."';for($4=0;$40)return il(a,h,i,r,s.concat(f));if(u){var d,p;if(u==="boldsymbol"){var m=cbe(a,i,r,s,n);d=m.fontName,p=[m.fontClass]}else l?(d=IG[u].fontName,p=[u]):(d=q4(u,r.fontWeight,r.fontShape),p=[u,r.fontWeight,r.fontShape]);if(l3(a,d,i).metrics)return il(a,d,i,r,s.concat(p));if(RG.hasOwnProperty(a)&&d.slice(0,10)==="Typewriter"){for(var g=[],y=0;y{if(lh(t.classes)!==lh(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(t.classes.length===1){var r=t.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n in t.style)if(t.style.hasOwnProperty(n)&&t.style[n]!==e.style[n])return!1;for(var i in e.style)if(e.style.hasOwnProperty(i)&&t.style[i]!==e.style[i])return!1;return!0},"canCombine"),fbe=o(t=>{for(var e=0;er&&(r=s.height),s.depth>n&&(n=s.depth),s.maxFontSize>i&&(i=s.maxFontSize)}e.height=r,e.depth=n,e.maxFontSize=i},"sizeElementFromChildren"),gs=o(function(e,r,n,i){var a=new Zf(e,r,n,i);return k7(a),a},"makeSpan"),NG=o((t,e,r,n)=>new Zf(t,e,r,n),"makeSvgSpan"),dbe=o(function(e,r,n){var i=gs([e],[],r);return i.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),i.style.borderBottomWidth=kt(i.height),i.maxFontSize=1,i},"makeLineSpan"),pbe=o(function(e,r,n,i){var a=new Oy(e,r,n,i);return k7(a),a},"makeAnchor"),MG=o(function(e){var r=new Qf(e);return k7(r),r},"makeFragment"),mbe=o(function(e,r){return e instanceof Qf?gs([],[e],r):e},"wrapFragment"),gbe=o(function(e){if(e.positionType==="individualShift"){for(var r=e.children,n=[r[0]],i=-r[0].shift-r[0].elem.depth,a=i,s=1;s{var r=gs(["mspace"],[],e),n=ti(t,e);return r.style.marginRight=kt(n),r},"makeGlue"),q4=o(function(e,r,n){var i="";switch(e){case"amsrm":i="AMS";break;case"textrm":i="Main";break;case"textsf":i="SansSerif";break;case"texttt":i="Typewriter";break;default:i=e}var a;return r==="textbf"&&n==="textit"?a="BoldItalic":r==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",i+"-"+a},"retrieveTextFontName"),IG={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},OG={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},xbe=o(function(e,r){var[n,i,a]=OG[e],s=new jl(n),l=new al([s],{width:kt(i),height:kt(a),style:"width:"+kt(i),viewBox:"0 0 "+1e3*i+" "+1e3*a,preserveAspectRatio:"xMinYMin"}),u=NG(["overlay"],[l],r);return u.height=a,u.style.height=kt(a),u.style.width=kt(i),u},"staticSvg"),Be={fontMap:IG,makeSymbol:il,mathsym:lbe,makeSpan:gs,makeSvgSpan:NG,makeLineSpan:dbe,makeAnchor:pbe,makeFragment:MG,wrapFragment:mbe,makeVList:ybe,makeOrd:ube,makeGlue:vbe,staticSvg:xbe,svgData:OG,tryCombineChars:fbe},ei={number:3,unit:"mu"},jf={number:4,unit:"mu"},nu={number:5,unit:"mu"},bbe={mord:{mop:ei,mbin:jf,mrel:nu,minner:ei},mop:{mord:ei,mop:ei,mrel:nu,minner:ei},mbin:{mord:jf,mop:jf,mopen:jf,minner:jf},mrel:{mord:nu,mop:nu,mopen:nu,minner:nu},mopen:{},mclose:{mop:ei,mbin:jf,mrel:nu,minner:ei},mpunct:{mord:ei,mop:ei,mrel:nu,mopen:ei,mclose:ei,mpunct:ei,minner:ei},minner:{mord:ei,mop:ei,mbin:jf,mrel:nu,mopen:ei,mpunct:ei,minner:ei}},wbe={mord:{mop:ei},mop:{mord:ei,mop:ei},mbin:{},mrel:{},mopen:{},mclose:{mop:ei},mpunct:{},minner:{mop:ei}},PG={},r3={},n3={};o(Rt,"defineFunction");o(Jf,"defineFunctionBuilders");i3=o(function(e){return e.type==="ordgroup"&&e.body.length===1?e.body[0]:e},"normalizeArgument"),fi=o(function(e){return e.type==="ordgroup"?e.body:[e]},"ordargument"),su=Be.makeSpan,Tbe=["leftmost","mbin","mopen","mrel","mop","mpunct"],kbe=["rightmost","mrel","mclose","mpunct"],Ebe={display:tr.DISPLAY,text:tr.TEXT,script:tr.SCRIPT,scriptscript:tr.SCRIPTSCRIPT},Sbe={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},Oi=o(function(e,r,n,i){i===void 0&&(i=[null,null]);for(var a=[],s=0;s{var v=y.classes[0],x=g.classes[0];v==="mbin"&&Jt.contains(kbe,x)?y.classes[0]="mord":x==="mbin"&&Jt.contains(Tbe,v)&&(g.classes[0]="mord")},{node:d},p,m),rG(a,(g,y)=>{var v=d7(y),x=d7(g),b=v&&x?g.hasClass("mtight")?wbe[v][x]:bbe[v][x]:null;if(b)return Be.makeGlue(b,h)},{node:d},p,m),a},"buildExpression"),rG=o(function t(e,r,n,i,a){i&&e.push(i);for(var s=0;sp=>{e.splice(d+1,0,p),s++})(s)}i&&e.pop()},"traverseNonSpaceNodes"),BG=o(function(e){return e instanceof Qf||e instanceof Oy||e instanceof Zf&&e.hasClass("enclosing")?e:null},"checkPartialGroup"),Cbe=o(function t(e,r){var n=BG(e);if(n){var i=n.children;if(i.length){if(r==="right")return t(i[i.length-1],"right");if(r==="left")return t(i[0],"left")}}return e},"getOutermostNode"),d7=o(function(e,r){return e?(r&&(e=Cbe(e,r)),Sbe[e.classes[0]]||null):null},"getTypeOfDomTree"),By=o(function(e,r){var n=["nulldelimiter"].concat(e.baseSizingClasses());return su(r.concat(n))},"makeNullDelimiter"),Ir=o(function(e,r,n){if(!e)return su();if(r3[e.type]){var i=r3[e.type](e,r);if(n&&r.size!==n.size){i=su(r.sizingClasses(n),[i],r);var a=r.sizeMultiplier/n.sizeMultiplier;i.height*=a,i.depth*=a}return i}else throw new gt("Got group of unknown type: '"+e.type+"'")},"buildGroup");o(Y4,"buildHTMLUnbreakable");o(p7,"buildHTML");o(FG,"newDocumentFragment");ys=class{static{o(this,"MathNode")}constructor(e,r,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(e,r){this.attributes[e]=r}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&e.setAttribute(r,this.attributes[r]);this.classes.length>0&&(e.className=lh(this.classes));for(var n=0;n0&&(e+=' class ="'+Jt.escape(lh(this.classes))+'"'),e+=">";for(var n=0;n",e}toText(){return this.children.map(e=>e.toText()).join("")}},Kf=class{static{o(this,"TextNode")}constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return Jt.escape(this.toText())}toText(){return this.text}},m7=class{static{o(this,"SpaceNode")}constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character="\u200A":e>=.1666&&e<=.1667?this.character="\u2009":e>=.2222&&e<=.2223?this.character="\u2005":e>=.2777&&e<=.2778?this.character="\u2005\u200A":e>=-.05556&&e<=-.05555?this.character="\u200A\u2063":e>=-.1667&&e<=-.1666?this.character="\u2009\u2063":e>=-.2223&&e<=-.2222?this.character="\u205F\u2063":e>=-.2778&&e<=-.2777?this.character="\u2005\u2063":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",kt(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},dt={MathNode:ys,TextNode:Kf,SpaceNode:m7,newDocumentFragment:FG},To=o(function(e,r,n){return An[r][e]&&An[r][e].replace&&e.charCodeAt(0)!==55349&&!(RG.hasOwnProperty(e)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(e=An[r][e].replace),new dt.TextNode(e)},"makeText"),E7=o(function(e){return e.length===1?e[0]:new dt.MathNode("mrow",e)},"makeRow"),S7=o(function(e,r){if(r.fontFamily==="texttt")return"monospace";if(r.fontFamily==="textsf")return r.fontShape==="textit"&&r.fontWeight==="textbf"?"sans-serif-bold-italic":r.fontShape==="textit"?"sans-serif-italic":r.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(r.fontShape==="textit"&&r.fontWeight==="textbf")return"bold-italic";if(r.fontShape==="textit")return"italic";if(r.fontWeight==="textbf")return"bold";var n=r.font;if(!n||n==="mathnormal")return null;var i=e.mode;if(n==="mathit")return"italic";if(n==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(n==="mathbf")return"bold";if(n==="mathbb")return"double-struck";if(n==="mathfrak")return"fraktur";if(n==="mathscr"||n==="mathcal")return"script";if(n==="mathsf")return"sans-serif";if(n==="mathtt")return"monospace";var a=e.text;if(Jt.contains(["\\imath","\\jmath"],a))return null;An[i][a]&&An[i][a].replace&&(a=An[i][a].replace);var s=Be.fontMap[n].fontName;return T7(a,s,i)?Be.fontMap[n].variant:null},"getVariant"),xs=o(function(e,r,n){if(e.length===1){var i=yn(e[0],r);return n&&i instanceof ys&&i.type==="mo"&&(i.setAttribute("lspace","0em"),i.setAttribute("rspace","0em")),[i]}for(var a=[],s,l=0;l0&&(d.text=d.text.slice(0,1)+"\u0338"+d.text.slice(1),a.pop())}}}a.push(u),s=u}return a},"buildExpression"),ch=o(function(e,r,n){return E7(xs(e,r,n))},"buildExpressionRow"),yn=o(function(e,r){if(!e)return new dt.MathNode("mrow");if(n3[e.type]){var n=n3[e.type](e,r);return n}else throw new gt("Got group of unknown type: '"+e.type+"'")},"buildGroup");o(nG,"buildMathML");zG=o(function(e){return new e3({style:e.displayMode?tr.DISPLAY:tr.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},"optionsFromSettings"),GG=o(function(e,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),e=Be.makeSpan(n,[e])}return e},"displayWrap"),Abe=o(function(e,r,n){var i=zG(n),a;if(n.output==="mathml")return nG(e,r,i,n.displayMode,!0);if(n.output==="html"){var s=p7(e,i);a=Be.makeSpan(["katex"],[s])}else{var l=nG(e,r,i,n.displayMode,!1),u=p7(e,i);a=Be.makeSpan(["katex"],[l,u])}return GG(a,n)},"buildTree"),_be=o(function(e,r,n){var i=zG(n),a=p7(e,i),s=Be.makeSpan(["katex"],[a]);return GG(s,n)},"buildHTMLTree"),Dbe={widehat:"^",widecheck:"\u02C7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23DF",overbrace:"\u23DE",overgroup:"\u23E0",undergroup:"\u23E1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21D2",xRightarrow:"\u21D2",overleftharpoon:"\u21BC",xleftharpoonup:"\u21BC",overrightharpoon:"\u21C0",xrightharpoonup:"\u21C0",xLeftarrow:"\u21D0",xLeftrightarrow:"\u21D4",xhookleftarrow:"\u21A9",xhookrightarrow:"\u21AA",xmapsto:"\u21A6",xrightharpoondown:"\u21C1",xleftharpoondown:"\u21BD",xrightleftharpoons:"\u21CC",xleftrightharpoons:"\u21CB",xtwoheadleftarrow:"\u219E",xtwoheadrightarrow:"\u21A0",xlongequal:"=",xtofrom:"\u21C4",xrightleftarrows:"\u21C4",xrightequilibrium:"\u21CC",xleftequilibrium:"\u21CB","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},Lbe=o(function(e){var r=new dt.MathNode("mo",[new dt.TextNode(Dbe[e.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},"mathMLnode"),Rbe={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Nbe=o(function(e){return e.type==="ordgroup"?e.body.length:1},"groupLength"),Mbe=o(function(e,r){function n(){var l=4e5,u=e.label.slice(1);if(Jt.contains(["widehat","widecheck","widetilde","utilde"],u)){var h=e,f=Nbe(h.base),d,p,m;if(f>5)u==="widehat"||u==="widecheck"?(d=420,l=2364,m=.42,p=u+"4"):(d=312,l=2340,m=.34,p="tilde4");else{var g=[1,1,2,2,3,3][f];u==="widehat"||u==="widecheck"?(l=[0,1062,2364,2364,2364][g],d=[0,239,300,360,420][g],m=[0,.24,.3,.3,.36,.42][g],p=u+g):(l=[0,600,1033,2339,2340][g],d=[0,260,286,306,312][g],m=[0,.26,.286,.3,.306,.34][g],p="tilde"+g)}var y=new jl(p),v=new al([y],{width:"100%",height:kt(m),viewBox:"0 0 "+l+" "+d,preserveAspectRatio:"none"});return{span:Be.makeSvgSpan([],[v],r),minWidth:0,height:m}}else{var x=[],b=Rbe[u],[w,C,T]=b,E=T/1e3,A=w.length,S,_;if(A===1){var I=b[3];S=["hide-tail"],_=[I]}else if(A===2)S=["halfarrow-left","halfarrow-right"],_=["xMinYMin","xMaxYMin"];else if(A===3)S=["brace-left","brace-center","brace-right"],_=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support + `+A+" children.");for(var D=0;D0&&(i.style.minWidth=kt(a)),i},"svgSpan"),Ibe=o(function(e,r,n,i,a){var s,l=e.height+e.depth+n+i;if(/fbox|color|angl/.test(r)){if(s=Be.makeSpan(["stretchy",r],[],a),r==="fbox"){var u=a.color&&a.getColor();u&&(s.style.borderColor=u)}}else{var h=[];/^[bx]cancel$/.test(r)&&h.push(new Py({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&h.push(new Py({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var f=new al(h,{width:"100%",height:kt(l)});s=Be.makeSvgSpan([],[f],a)}return s.height=l,s.style.height=kt(l),s},"encloseSpan"),ou={encloseSpan:Ibe,mathMLnode:Lbe,svgSpan:Mbe};o(xr,"assertNodeType");o(C7,"assertSymbolNodeType");o(c3,"checkSymbolNodeType");A7=o((t,e)=>{var r,n,i;t&&t.type==="supsub"?(n=xr(t.base,"accent"),r=n.base,t.base=r,i=ibe(Ir(t,e)),t.base=n):(n=xr(t,"accent"),r=n.base);var a=Ir(r,e.havingCrampedStyle()),s=n.isShifty&&Jt.isCharacterBox(r),l=0;if(s){var u=Jt.getBaseElem(r),h=Ir(u,e.havingCrampedStyle());l=Zz(h).skew}var f=n.label==="\\c",d=f?a.height+a.depth:Math.min(a.height,e.fontMetrics().xHeight),p;if(n.isStretchy)p=ou.svgSpan(n,e),p=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"elem",elem:p,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+kt(2*l)+")",marginLeft:kt(2*l)}:void 0}]},e);else{var m,g;n.label==="\\vec"?(m=Be.staticSvg("vec",e),g=Be.svgData.vec[1]):(m=Be.makeOrd({mode:n.mode,text:n.label},e,"textord"),m=Zz(m),m.italic=0,g=m.width,f&&(d+=m.depth)),p=Be.makeSpan(["accent-body"],[m]);var y=n.label==="\\textcircled";y&&(p.classes.push("accent-full"),d=a.height);var v=l;y||(v-=g/2),p.style.left=kt(v),n.label==="\\textcircled"&&(p.style.top=".2em"),p=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:-d},{type:"elem",elem:p}]},e)}var x=Be.makeSpan(["mord","accent"],[p],e);return i?(i.children[0]=x,i.height=Math.max(x.height,i.height),i.classes[0]="mord",i):x},"htmlBuilder$a"),$G=o((t,e)=>{var r=t.isStretchy?ou.mathMLnode(t.label):new dt.MathNode("mo",[To(t.label,t.mode)]),n=new dt.MathNode("mover",[yn(t.base,e),r]);return n.setAttribute("accent","true"),n},"mathmlBuilder$9"),Obe=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));Rt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:o((t,e)=>{var r=i3(e[0]),n=!Obe.test(t.funcName),i=!n||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:n,isShifty:i,base:r}},"handler"),htmlBuilder:A7,mathmlBuilder:$G});Rt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:o((t,e)=>{var r=e[0],n=t.parser.mode;return n==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},"handler"),htmlBuilder:A7,mathmlBuilder:$G});Rt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"accentUnder",mode:r.mode,label:n,base:i}},"handler"),htmlBuilder:o((t,e)=>{var r=Ir(t.base,e),n=ou.svgSpan(t,e),i=t.label==="\\utilde"?.12:0,a=Be.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:i},{type:"elem",elem:r}]},e);return Be.makeSpan(["mord","accentunder"],[a],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=ou.mathMLnode(t.label),n=new dt.MathNode("munder",[yn(t.base,e),r]);return n.setAttribute("accentunder","true"),n},"mathmlBuilder")});X4=o(t=>{var e=new dt.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e},"paddedNode");Rt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:n,funcName:i}=t;return{type:"xArrow",mode:n.mode,label:i,body:e[0],below:r[0]}},htmlBuilder(t,e){var r=e.style,n=e.havingStyle(r.sup()),i=Be.wrapFragment(Ir(t.body,n,e),e),a=t.label.slice(0,2)==="\\x"?"x":"cd";i.classes.push(a+"-arrow-pad");var s;t.below&&(n=e.havingStyle(r.sub()),s=Be.wrapFragment(Ir(t.below,n,e),e),s.classes.push(a+"-arrow-pad"));var l=ou.svgSpan(t,e),u=-e.fontMetrics().axisHeight+.5*l.height,h=-e.fontMetrics().axisHeight-.5*l.height-.111;(i.depth>.25||t.label==="\\xleftequilibrium")&&(h-=i.depth);var f;if(s){var d=-e.fontMetrics().axisHeight+s.height+.5*l.height+.111;f=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u},{type:"elem",elem:s,shift:d}]},e)}else f=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u}]},e);return f.children[0].children[0].children[1].classes.push("svg-align"),Be.makeSpan(["mrel","x-arrow"],[f],e)},mathmlBuilder(t,e){var r=ou.mathMLnode(t.label);r.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(t.body){var i=X4(yn(t.body,e));if(t.below){var a=X4(yn(t.below,e));n=new dt.MathNode("munderover",[r,a,i])}else n=new dt.MathNode("mover",[r,i])}else if(t.below){var s=X4(yn(t.below,e));n=new dt.MathNode("munder",[r,s])}else n=X4(),n=new dt.MathNode("mover",[r,n]);return n}});Pbe=Be.makeSpan;o(VG,"htmlBuilder$9");o(UG,"mathmlBuilder$8");Rt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:fi(i),isCharacterBox:Jt.isCharacterBox(i)}},htmlBuilder:VG,mathmlBuilder:UG});u3=o(t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"},"binrelClass");Rt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:r}=t;return{type:"mclass",mode:r.mode,mclass:u3(e[0]),body:fi(e[1]),isCharacterBox:Jt.isCharacterBox(e[1])}}});Rt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:r,funcName:n}=t,i=e[1],a=e[0],s;n!=="\\stackrel"?s=u3(i):s="mrel";var l={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:fi(i)},u={type:"supsub",mode:a.mode,base:l,sup:n==="\\underset"?null:a,sub:n==="\\underset"?a:null};return{type:"mclass",mode:r.mode,mclass:s,body:[u],isCharacterBox:Jt.isCharacterBox(u)}},htmlBuilder:VG,mathmlBuilder:UG});Rt({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"pmb",mode:r.mode,mclass:u3(e[0]),body:fi(e[0])}},htmlBuilder(t,e){var r=Oi(t.body,e,!0),n=Be.makeSpan([t.mclass],r,e);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(t,e){var r=xs(t.body,e),n=new dt.MathNode("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});Bbe={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},iG=o(()=>({type:"styling",body:[],mode:"math",style:"display"}),"newCell"),aG=o(t=>t.type==="textord"&&t.text==="@","isStartOfArrow"),Fbe=o((t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e,"isLabelEnd");o(zbe,"cdArrow");o(Gbe,"parseCD");Rt({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:e[0]}},htmlBuilder(t,e){var r=e.havingStyle(e.style.sup()),n=Be.wrapFragment(Ir(t.label,r,e),e);return n.classes.push("cd-label-"+t.side),n.style.bottom=kt(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(t,e){var r=new dt.MathNode("mrow",[yn(t.label,e)]);return r=new dt.MathNode("mpadded",[r]),r.setAttribute("width","0"),t.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new dt.MathNode("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});Rt({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:r}=t;return{type:"cdlabelparent",mode:r.mode,fragment:e[0]}},htmlBuilder(t,e){var r=Be.wrapFragment(Ir(t.fragment,e),e);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(t,e){return new dt.MathNode("mrow",[yn(t.fragment,e)])}});Rt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:r}=t,n=xr(e[0],"ordgroup"),i=n.body,a="",s=0;s=1114111)throw new gt("\\@char with invalid code point "+a);return u<=65535?h=String.fromCharCode(u):(u-=65536,h=String.fromCharCode((u>>10)+55296,(u&1023)+56320)),{type:"textord",mode:r.mode,text:h}}});HG=o((t,e)=>{var r=Oi(t.body,e.withColor(t.color),!1);return Be.makeFragment(r)},"htmlBuilder$8"),WG=o((t,e)=>{var r=xs(t.body,e.withColor(t.color)),n=new dt.MathNode("mstyle",r);return n.setAttribute("mathcolor",t.color),n},"mathmlBuilder$7");Rt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:r}=t,n=xr(e[0],"color-token").color,i=e[1];return{type:"color",mode:r.mode,color:n,body:fi(i)}},htmlBuilder:HG,mathmlBuilder:WG});Rt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:r,breakOnTokenText:n}=t,i=xr(e[0],"color-token").color;r.gullet.macros.set("\\current@color",i);var a=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:i,body:a}},htmlBuilder:HG,mathmlBuilder:WG});Rt({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,r){var{parser:n}=t,i=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,a=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:a,size:i&&xr(i,"size").value}},htmlBuilder(t,e){var r=Be.makeSpan(["mspace"],[],e);return t.newLine&&(r.classes.push("newline"),t.size&&(r.style.marginTop=kt(ti(t.size,e)))),r},mathmlBuilder(t,e){var r=new dt.MathNode("mspace");return t.newLine&&(r.setAttribute("linebreak","newline"),t.size&&r.setAttribute("height",kt(ti(t.size,e)))),r}});g7={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},qG=o(t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new gt("Expected a control sequence",t);return e},"checkControlSequence"),$be=o(t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},"getRHS"),YG=o((t,e,r,n)=>{var i=t.gullet.macros.get(r.text);i==null&&(r.noexpand=!0,i={tokens:[r],numArgs:0,unexpandable:!t.gullet.isExpandable(r.text)}),t.gullet.macros.set(e,i,n)},"letCommand");Rt({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:r}=t;e.consumeSpaces();var n=e.fetch();if(g7[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=g7[n.text]),xr(e.parseFunction(),"internal");throw new gt("Invalid token after macro prefix",n)}});Rt({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=e.gullet.popToken(),i=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new gt("Expected a control sequence",n);for(var a=0,s,l=[[]];e.gullet.future().text!=="{";)if(n=e.gullet.popToken(),n.text==="#"){if(e.gullet.future().text==="{"){s=e.gullet.future(),l[a].push("{");break}if(n=e.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new gt('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==a+1)throw new gt('Argument number "'+n.text+'" out of order');a++,l.push([])}else{if(n.text==="EOF")throw new gt("Expected a macro definition");l[a].push(n.text)}var{tokens:u}=e.gullet.consumeArg();return s&&u.unshift(s),(r==="\\edef"||r==="\\xdef")&&(u=e.gullet.expandTokens(u),u.reverse()),e.gullet.macros.set(i,{tokens:u,numArgs:a,delimiters:l},r===g7[r]),{type:"internal",mode:e.mode}}});Rt({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=qG(e.gullet.popToken());e.gullet.consumeSpaces();var i=$be(e);return YG(e,n,i,r==="\\\\globallet"),{type:"internal",mode:e.mode}}});Rt({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=qG(e.gullet.popToken()),i=e.gullet.popToken(),a=e.gullet.popToken();return YG(e,n,a,r==="\\\\globalfuture"),e.gullet.pushToken(a),e.gullet.pushToken(i),{type:"internal",mode:e.mode}}});Ry=o(function(e,r,n){var i=An.math[e]&&An.math[e].replace,a=T7(i||e,r,n);if(!a)throw new Error("Unsupported symbol "+e+" and font size "+r+".");return a},"getMetrics"),_7=o(function(e,r,n,i){var a=n.havingBaseStyle(r),s=Be.makeSpan(i.concat(a.sizingClasses(n)),[e],n),l=a.sizeMultiplier/n.sizeMultiplier;return s.height*=l,s.depth*=l,s.maxFontSize=a.sizeMultiplier,s},"styleWrap"),XG=o(function(e,r,n){var i=r.havingBaseStyle(n),a=(1-r.sizeMultiplier/i.sizeMultiplier)*r.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=kt(a),e.height-=a,e.depth+=a},"centerSpan"),Vbe=o(function(e,r,n,i,a,s){var l=Be.makeSymbol(e,"Main-Regular",a,i),u=_7(l,r,i,s);return n&&XG(u,i,r),u},"makeSmallDelim"),Ube=o(function(e,r,n,i){return Be.makeSymbol(e,"Size"+r+"-Regular",n,i)},"mathrmSize"),jG=o(function(e,r,n,i,a,s){var l=Ube(e,r,a,i),u=_7(Be.makeSpan(["delimsizing","size"+r],[l],i),tr.TEXT,i,s);return n&&XG(u,i,tr.TEXT),u},"makeLargeDelim"),e7=o(function(e,r,n){var i;r==="Size1-Regular"?i="delim-size1":i="delim-size4";var a=Be.makeSpan(["delimsizinginner",i],[Be.makeSpan([],[Be.makeSymbol(e,r,n)])]);return{type:"elem",elem:a}},"makeGlyphSpan"),t7=o(function(e,r,n){var i=Xl["Size4-Regular"][e.charCodeAt(0)]?Xl["Size4-Regular"][e.charCodeAt(0)][4]:Xl["Size1-Regular"][e.charCodeAt(0)][4],a=new jl("inner",Qxe(e,Math.round(1e3*r))),s=new al([a],{width:kt(i),height:kt(r),style:"width:"+kt(i),viewBox:"0 0 "+1e3*i+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),l=Be.makeSvgSpan([],[s],n);return l.height=r,l.style.height=kt(r),l.style.width=kt(i),{type:"elem",elem:l}},"makeInner"),y7=.008,j4={type:"kern",size:-1*y7},Hbe=["|","\\lvert","\\rvert","\\vert"],Wbe=["\\|","\\lVert","\\rVert","\\Vert"],KG=o(function(e,r,n,i,a,s){var l,u,h,f,d="",p=0;l=h=f=e,u=null;var m="Size1-Regular";e==="\\uparrow"?h=f="\u23D0":e==="\\Uparrow"?h=f="\u2016":e==="\\downarrow"?l=h="\u23D0":e==="\\Downarrow"?l=h="\u2016":e==="\\updownarrow"?(l="\\uparrow",h="\u23D0",f="\\downarrow"):e==="\\Updownarrow"?(l="\\Uparrow",h="\u2016",f="\\Downarrow"):Jt.contains(Hbe,e)?(h="\u2223",d="vert",p=333):Jt.contains(Wbe,e)?(h="\u2225",d="doublevert",p=556):e==="["||e==="\\lbrack"?(l="\u23A1",h="\u23A2",f="\u23A3",m="Size4-Regular",d="lbrack",p=667):e==="]"||e==="\\rbrack"?(l="\u23A4",h="\u23A5",f="\u23A6",m="Size4-Regular",d="rbrack",p=667):e==="\\lfloor"||e==="\u230A"?(h=l="\u23A2",f="\u23A3",m="Size4-Regular",d="lfloor",p=667):e==="\\lceil"||e==="\u2308"?(l="\u23A1",h=f="\u23A2",m="Size4-Regular",d="lceil",p=667):e==="\\rfloor"||e==="\u230B"?(h=l="\u23A5",f="\u23A6",m="Size4-Regular",d="rfloor",p=667):e==="\\rceil"||e==="\u2309"?(l="\u23A4",h=f="\u23A5",m="Size4-Regular",d="rceil",p=667):e==="("||e==="\\lparen"?(l="\u239B",h="\u239C",f="\u239D",m="Size4-Regular",d="lparen",p=875):e===")"||e==="\\rparen"?(l="\u239E",h="\u239F",f="\u23A0",m="Size4-Regular",d="rparen",p=875):e==="\\{"||e==="\\lbrace"?(l="\u23A7",u="\u23A8",f="\u23A9",h="\u23AA",m="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(l="\u23AB",u="\u23AC",f="\u23AD",h="\u23AA",m="Size4-Regular"):e==="\\lgroup"||e==="\u27EE"?(l="\u23A7",f="\u23A9",h="\u23AA",m="Size4-Regular"):e==="\\rgroup"||e==="\u27EF"?(l="\u23AB",f="\u23AD",h="\u23AA",m="Size4-Regular"):e==="\\lmoustache"||e==="\u23B0"?(l="\u23A7",f="\u23AD",h="\u23AA",m="Size4-Regular"):(e==="\\rmoustache"||e==="\u23B1")&&(l="\u23AB",f="\u23A9",h="\u23AA",m="Size4-Regular");var g=Ry(l,m,a),y=g.height+g.depth,v=Ry(h,m,a),x=v.height+v.depth,b=Ry(f,m,a),w=b.height+b.depth,C=0,T=1;if(u!==null){var E=Ry(u,m,a);C=E.height+E.depth,T=2}var A=y+w+C,S=Math.max(0,Math.ceil((r-A)/(T*x))),_=A+S*T*x,I=i.fontMetrics().axisHeight;n&&(I*=i.sizeMultiplier);var D=_/2-I,k=[];if(d.length>0){var L=_-y-w,R=Math.round(_*1e3),O=Zxe(d,Math.round(L*1e3)),N=new jl(d,O),B=(p/1e3).toFixed(3)+"em",F=(R/1e3).toFixed(3)+"em",P=new al([N],{width:B,height:F,viewBox:"0 0 "+p+" "+R}),G=Be.makeSvgSpan([],[P],i);G.height=R/1e3,G.style.width=B,G.style.height=F,k.push({type:"elem",elem:G})}else{if(k.push(e7(f,m,a)),k.push(j4),u===null){var z=_-y-w+2*y7;k.push(t7(h,z,i))}else{var H=(_-y-w-C)/2+2*y7;k.push(t7(h,H,i)),k.push(j4),k.push(e7(u,m,a)),k.push(j4),k.push(t7(h,H,i))}k.push(j4),k.push(e7(l,m,a))}var Q=i.havingBaseStyle(tr.TEXT),j=Be.makeVList({positionType:"bottom",positionData:D,children:k},Q);return _7(Be.makeSpan(["delimsizing","mult"],[j],Q),tr.TEXT,i,s)},"makeStackedDelim"),r7=80,n7=.08,i7=o(function(e,r,n,i,a){var s=Kxe(e,i,n),l=new jl(e,s),u=new al([l],{width:"400em",height:kt(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return Be.makeSvgSpan(["hide-tail"],[u],a)},"sqrtSvg"),qbe=o(function(e,r){var n=r.havingBaseSizing(),i=e$("\\surd",e*n.sizeMultiplier,JG,n),a=n.sizeMultiplier,s=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),l,u=0,h=0,f=0,d;return i.type==="small"?(f=1e3+1e3*s+r7,e<1?a=1:e<1.4&&(a=.7),u=(1+s+n7)/a,h=(1+s)/a,l=i7("sqrtMain",u,f,s,r),l.style.minWidth="0.853em",d=.833/a):i.type==="large"?(f=(1e3+r7)*Ny[i.size],h=(Ny[i.size]+s)/a,u=(Ny[i.size]+s+n7)/a,l=i7("sqrtSize"+i.size,u,f,s,r),l.style.minWidth="1.02em",d=1/a):(u=e+s+n7,h=e+s,f=Math.floor(1e3*e+s)+r7,l=i7("sqrtTall",u,f,s,r),l.style.minWidth="0.742em",d=1.056),l.height=h,l.style.height=kt(u),{span:l,advanceWidth:d,ruleWidth:(r.fontMetrics().sqrtRuleThickness+s)*a}},"makeSqrtImage"),QG=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","\\surd"],Ybe=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1"],ZG=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Ny=[0,1.2,1.8,2.4,3],Xbe=o(function(e,r,n,i,a){if(e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle"),Jt.contains(QG,e)||Jt.contains(ZG,e))return jG(e,r,!1,n,i,a);if(Jt.contains(Ybe,e))return KG(e,Ny[r],!1,n,i,a);throw new gt("Illegal delimiter: '"+e+"'")},"makeSizedDelim"),jbe=[{type:"small",style:tr.SCRIPTSCRIPT},{type:"small",style:tr.SCRIPT},{type:"small",style:tr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],Kbe=[{type:"small",style:tr.SCRIPTSCRIPT},{type:"small",style:tr.SCRIPT},{type:"small",style:tr.TEXT},{type:"stack"}],JG=[{type:"small",style:tr.SCRIPTSCRIPT},{type:"small",style:tr.SCRIPT},{type:"small",style:tr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],Qbe=o(function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},"delimTypeToFont"),e$=o(function(e,r,n,i){for(var a=Math.min(2,3-i.style.size),s=a;sr)return n[s]}return n[n.length-1]},"traverseSequence"),t$=o(function(e,r,n,i,a,s){e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle");var l;Jt.contains(ZG,e)?l=jbe:Jt.contains(QG,e)?l=JG:l=Kbe;var u=e$(e,r,l,i);return u.type==="small"?Vbe(e,u.style,n,i,a,s):u.type==="large"?jG(e,u.size,n,i,a,s):KG(e,r,n,i,a,s)},"makeCustomSizedDelim"),Zbe=o(function(e,r,n,i,a,s){var l=i.fontMetrics().axisHeight*i.sizeMultiplier,u=901,h=5/i.fontMetrics().ptPerEm,f=Math.max(r-l,n+l),d=Math.max(f/500*u,2*f-h);return t$(e,d,!0,i,a,s)},"makeLeftRightDelim"),au={sqrtImage:qbe,sizedDelim:Xbe,sizeToMaxHeight:Ny,customSizedDelim:t$,leftRightDelim:Zbe},sG={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},Jbe=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27E8","\\rangle","\u27E9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];o(h3,"checkDelimiter");Rt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:o((t,e)=>{var r=h3(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:sG[t.funcName].size,mclass:sG[t.funcName].mclass,delim:r.text}},"handler"),htmlBuilder:o((t,e)=>t.delim==="."?Be.makeSpan([t.mclass]):au.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),"htmlBuilder"),mathmlBuilder:o(t=>{var e=[];t.delim!=="."&&e.push(To(t.delim,t.mode));var r=new dt.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=kt(au.sizeToMaxHeight[t.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r},"mathmlBuilder")});o(oG,"assertParsed");Rt({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=t.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new gt("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:h3(e[0],t).text,color:r}},"handler")});Rt({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=h3(e[0],t),n=t.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var a=xr(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:i,left:r.text,right:a.delim,rightColor:a.color}},"handler"),htmlBuilder:o((t,e)=>{oG(t);for(var r=Oi(t.body,e,!0,["mopen","mclose"]),n=0,i=0,a=!1,s=0;s{oG(t);var r=xs(t.body,e);if(t.left!=="."){var n=new dt.MathNode("mo",[To(t.left,t.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(t.right!=="."){var i=new dt.MathNode("mo",[To(t.right,t.mode)]);i.setAttribute("fence","true"),t.rightColor&&i.setAttribute("mathcolor",t.rightColor),r.push(i)}return E7(r)},"mathmlBuilder")});Rt({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=h3(e[0],t);if(!t.parser.leftrightDepth)throw new gt("\\middle without preceding \\left",r);return{type:"middle",mode:t.parser.mode,delim:r.text}},"handler"),htmlBuilder:o((t,e)=>{var r;if(t.delim===".")r=By(e,[]);else{r=au.sizedDelim(t.delim,1,e,t.mode,[]);var n={delim:t.delim,options:e};r.isMiddle=n}return r},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=t.delim==="\\vert"||t.delim==="|"?To("|","text"):To(t.delim,t.mode),n=new dt.MathNode("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n},"mathmlBuilder")});D7=o((t,e)=>{var r=Be.wrapFragment(Ir(t.body,e),e),n=t.label.slice(1),i=e.sizeMultiplier,a,s=0,l=Jt.isCharacterBox(t.body);if(n==="sout")a=Be.makeSpan(["stretchy","sout"]),a.height=e.fontMetrics().defaultRuleThickness/i,s=-.5*e.fontMetrics().xHeight;else if(n==="phase"){var u=ti({number:.6,unit:"pt"},e),h=ti({number:.35,unit:"ex"},e),f=e.havingBaseSizing();i=i/f.sizeMultiplier;var d=r.height+r.depth+u+h;r.style.paddingLeft=kt(d/2+u);var p=Math.floor(1e3*d*i),m=Xxe(p),g=new al([new jl("phase",m)],{width:"400em",height:kt(p/1e3),viewBox:"0 0 400000 "+p,preserveAspectRatio:"xMinYMin slice"});a=Be.makeSvgSpan(["hide-tail"],[g],e),a.style.height=kt(d),s=r.depth+u+h}else{/cancel/.test(n)?l||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var y=0,v=0,x=0;/box/.test(n)?(x=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),y=e.fontMetrics().fboxsep+(n==="colorbox"?0:x),v=y):n==="angl"?(x=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),y=4*x,v=Math.max(0,.25-r.depth)):(y=l?.2:0,v=y),a=ou.encloseSpan(r,n,y,v,e),/fbox|boxed|fcolorbox/.test(n)?(a.style.borderStyle="solid",a.style.borderWidth=kt(x)):n==="angl"&&x!==.049&&(a.style.borderTopWidth=kt(x),a.style.borderRightWidth=kt(x)),s=r.depth+v,t.backgroundColor&&(a.style.backgroundColor=t.backgroundColor,t.borderColor&&(a.style.borderColor=t.borderColor))}var b;if(t.backgroundColor)b=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:s},{type:"elem",elem:r,shift:0}]},e);else{var w=/cancel|phase/.test(n)?["svg-align"]:[];b=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:a,shift:s,wrapperClasses:w}]},e)}return/cancel/.test(n)&&(b.height=r.height,b.depth=r.depth),/cancel/.test(n)&&!l?Be.makeSpan(["mord","cancel-lap"],[b],e):Be.makeSpan(["mord"],[b],e)},"htmlBuilder$7"),L7=o((t,e)=>{var r=0,n=new dt.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[yn(t.body,e)]);switch(t.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),t.label==="\\fcolorbox"){var i=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);n.setAttribute("style","border: "+i+"em solid "+String(t.borderColor))}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&n.setAttribute("mathbackground",t.backgroundColor),n},"mathmlBuilder$6");Rt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,a=xr(e[0],"color-token").color,s=e[1];return{type:"enclose",mode:n.mode,label:i,backgroundColor:a,body:s}},htmlBuilder:D7,mathmlBuilder:L7});Rt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,a=xr(e[0],"color-token").color,s=xr(e[1],"color-token").color,l=e[2];return{type:"enclose",mode:n.mode,label:i,backgroundColor:s,borderColor:a,body:l}},htmlBuilder:D7,mathmlBuilder:L7});Rt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\fbox",body:e[0]}}});Rt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:D7,mathmlBuilder:L7});Rt({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\angl",body:e[0]}}});r$={};o(Kl,"defineEnvironment");n$={};o(fe,"defineMacro");o(lG,"getHLines");f3=o(t=>{var e=t.parser.settings;if(!e.displayMode)throw new gt("{"+t.envName+"} can be used only in display mode.")},"validateAmsEnvironmentContext");o(R7,"getAutoTag");o(uh,"parseArray");o(N7,"dCellStyle");Ql=o(function(e,r){var n,i,a=e.body.length,s=e.hLinesBeforeRow,l=0,u=new Array(a),h=[],f=Math.max(r.fontMetrics().arrayRuleWidth,r.minRuleThickness),d=1/r.fontMetrics().ptPerEm,p=5*d;if(e.colSeparationType&&e.colSeparationType==="small"){var m=r.havingStyle(tr.SCRIPT).sizeMultiplier;p=.2778*(m/r.sizeMultiplier)}var g=e.colSeparationType==="CD"?ti({number:3,unit:"ex"},r):12*d,y=3*d,v=e.arraystretch*g,x=.7*v,b=.3*v,w=0;function C(ae){for(var Oe=0;Oe0&&(w+=.25),h.push({pos:w,isDashed:ae[Oe]})}for(o(C,"setHLinePos"),C(s[0]),n=0;n0&&(D+=b,Aae))for(n=0;n=l)){var le=void 0;(i>0||e.hskipBeforeAndAfter)&&(le=Jt.deflt(H.pregap,p),le!==0&&(O=Be.makeSpan(["arraycolsep"],[]),O.style.width=kt(le),R.push(O)));var he=[];for(n=0;n0){for(var J=Be.makeLineSpan("hline",r,f),se=Be.makeLineSpan("hdashline",r,f),ue=[{type:"elem",elem:u,shift:0}];h.length>0;){var Z=h.pop(),Se=Z.pos-k;Z.isDashed?ue.push({type:"elem",elem:se,shift:Se}):ue.push({type:"elem",elem:J,shift:Se})}u=Be.makeVList({positionType:"individualShift",children:ue},r)}if(B.length===0)return Be.makeSpan(["mord"],[u],r);var ce=Be.makeVList({positionType:"individualShift",children:B},r);return ce=Be.makeSpan(["tag"],[ce],r),Be.makeFragment([u,ce])},"htmlBuilder"),e4e={c:"center ",l:"left ",r:"right "},Zl=o(function(e,r){for(var n=[],i=new dt.MathNode("mtd",[],["mtr-glue"]),a=new dt.MathNode("mtd",[],["mml-eqn-num"]),s=0;s0){var g=e.cols,y="",v=!1,x=0,b=g.length;g[0].type==="separator"&&(p+="top ",x=1),g[g.length-1].type==="separator"&&(p+="bottom ",b-=1);for(var w=x;w0?"left ":"",p+=S[S.length-1].length>0?"right ":"";for(var _=1;_-1?"alignat":"align",a=e.envName==="split",s=uh(e.parser,{cols:n,addJot:!0,autoTag:a?void 0:R7(e.envName),emptySingleRow:!0,colSeparationType:i,maxNumCols:a?2:void 0,leqno:e.parser.settings.leqno},"display"),l,u=0,h={type:"ordgroup",mode:e.mode,body:[]};if(r[0]&&r[0].type==="ordgroup"){for(var f="",d=0;d0&&m&&(v=1),n[g]={type:"align",align:y,pregap:v,postgap:0}}return s.colSeparationType=m?"align":"alignat",s},"alignedHandler");Kl({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var r=c3(e[0]),n=r?[e[0]]:xr(e[0],"ordgroup").body,i=n.map(function(s){var l=C7(s),u=l.text;if("lcr".indexOf(u)!==-1)return{type:"align",align:u};if(u==="|")return{type:"separator",separator:"|"};if(u===":")return{type:"separator",separator:":"};throw new gt("Unknown column alignment: "+u,s)}),a={cols:i,hskipBeforeAndAfter:!0,maxNumCols:i.length};return uh(t.parser,a,N7(t.envName))},htmlBuilder:Ql,mathmlBuilder:Zl});Kl({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(t.envName.charAt(t.envName.length-1)==="*"){var i=t.parser;if(i.consumeSpaces(),i.fetch().text==="["){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,"lcr".indexOf(r)===-1)throw new gt("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),n.cols=[{type:"align",align:r}]}}var a=uh(t.parser,n,N7(t.envName)),s=Math.max(0,...a.body.map(l=>l.length));return a.cols=new Array(s).fill({type:"align",align:r}),e?{type:"leftright",mode:t.mode,body:[a],left:e[0],right:e[1],rightColor:void 0}:a},htmlBuilder:Ql,mathmlBuilder:Zl});Kl({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},r=uh(t.parser,e,"script");return r.colSeparationType="small",r},htmlBuilder:Ql,mathmlBuilder:Zl});Kl({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var r=c3(e[0]),n=r?[e[0]]:xr(e[0],"ordgroup").body,i=n.map(function(s){var l=C7(s),u=l.text;if("lc".indexOf(u)!==-1)return{type:"align",align:u};throw new gt("Unknown column alignment: "+u,s)});if(i.length>1)throw new gt("{subarray} can contain only one column");var a={cols:i,hskipBeforeAndAfter:!1,arraystretch:.5};if(a=uh(t.parser,a,"script"),a.body.length>0&&a.body[0].length>1)throw new gt("{subarray} can contain only one column");return a},htmlBuilder:Ql,mathmlBuilder:Zl});Kl({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=uh(t.parser,e,N7(t.envName));return{type:"leftright",mode:t.mode,body:[r],left:t.envName.indexOf("r")>-1?".":"\\{",right:t.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:Ql,mathmlBuilder:Zl});Kl({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:i$,htmlBuilder:Ql,mathmlBuilder:Zl});Kl({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){Jt.contains(["gather","gather*"],t.envName)&&f3(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:R7(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return uh(t.parser,e,"display")},htmlBuilder:Ql,mathmlBuilder:Zl});Kl({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:i$,htmlBuilder:Ql,mathmlBuilder:Zl});Kl({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){f3(t);var e={autoTag:R7(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return uh(t.parser,e,"display")},htmlBuilder:Ql,mathmlBuilder:Zl});Kl({type:"array",names:["CD"],props:{numArgs:0},handler(t){return f3(t),Gbe(t.parser)},htmlBuilder:Ql,mathmlBuilder:Zl});fe("\\nonumber","\\gdef\\@eqnsw{0}");fe("\\notag","\\nonumber");Rt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new gt(t.funcName+" valid only within array environment")}});cG=r$;Rt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];if(i.type!=="ordgroup")throw new gt("Invalid environment name",i);for(var a="",s=0;s{var r=t.font,n=e.withFont(r);return Ir(t.body,n)},"htmlBuilder$5"),s$=o((t,e)=>{var r=t.font,n=e.withFont(r);return yn(t.body,n)},"mathmlBuilder$4"),uG={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Rt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=i3(e[0]),a=n;return a in uG&&(a=uG[a]),{type:"font",mode:r.mode,font:a.slice(1),body:i}},"handler"),htmlBuilder:a$,mathmlBuilder:s$});Rt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r}=t,n=e[0],i=Jt.isCharacterBox(n);return{type:"mclass",mode:r.mode,mclass:u3(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:i}},"handler")});Rt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:o((t,e)=>{var{parser:r,funcName:n,breakOnTokenText:i}=t,{mode:a}=r,s=r.parseExpression(!0,i),l="math"+n.slice(1);return{type:"font",mode:a,font:l,body:{type:"ordgroup",mode:r.mode,body:s}}},"handler"),htmlBuilder:a$,mathmlBuilder:s$});o$=o((t,e)=>{var r=e;return t==="display"?r=r.id>=tr.SCRIPT.id?r.text():tr.DISPLAY:t==="text"&&r.size===tr.DISPLAY.size?r=tr.TEXT:t==="script"?r=tr.SCRIPT:t==="scriptscript"&&(r=tr.SCRIPTSCRIPT),r},"adjustStyle"),M7=o((t,e)=>{var r=o$(t.size,e.style),n=r.fracNum(),i=r.fracDen(),a;a=e.havingStyle(n);var s=Ir(t.numer,a,e);if(t.continued){var l=8.5/e.fontMetrics().ptPerEm,u=3.5/e.fontMetrics().ptPerEm;s.height=s.height0?g=3*p:g=7*p,y=e.fontMetrics().denom1):(d>0?(m=e.fontMetrics().num2,g=p):(m=e.fontMetrics().num3,g=3*p),y=e.fontMetrics().denom2);var v;if(f){var b=e.fontMetrics().axisHeight;m-s.depth-(b+.5*d){var r=new dt.MathNode("mfrac",[yn(t.numer,e),yn(t.denom,e)]);if(!t.hasBarLine)r.setAttribute("linethickness","0px");else if(t.barSize){var n=ti(t.barSize,e);r.setAttribute("linethickness",kt(n))}var i=o$(t.size,e.style);if(i.size!==e.style.size){r=new dt.MathNode("mstyle",[r]);var a=i.size===tr.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",a),r.setAttribute("scriptlevel","0")}if(t.leftDelim!=null||t.rightDelim!=null){var s=[];if(t.leftDelim!=null){var l=new dt.MathNode("mo",[new dt.TextNode(t.leftDelim.replace("\\",""))]);l.setAttribute("fence","true"),s.push(l)}if(s.push(r),t.rightDelim!=null){var u=new dt.MathNode("mo",[new dt.TextNode(t.rightDelim.replace("\\",""))]);u.setAttribute("fence","true"),s.push(u)}return E7(s)}return r},"mathmlBuilder$3");Rt({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=e[1],s,l=null,u=null,h="auto";switch(n){case"\\dfrac":case"\\frac":case"\\tfrac":s=!0;break;case"\\\\atopfrac":s=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":s=!1,l="(",u=")";break;case"\\\\bracefrac":s=!1,l="\\{",u="\\}";break;case"\\\\brackfrac":s=!1,l="[",u="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":h="display";break;case"\\tfrac":case"\\tbinom":h="text";break}return{type:"genfrac",mode:r.mode,continued:!1,numer:i,denom:a,hasBarLine:s,leftDelim:l,rightDelim:u,size:h,barSize:null}},"handler"),htmlBuilder:M7,mathmlBuilder:I7});Rt({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=e[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:i,denom:a,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}},"handler")});Rt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:r,token:n}=t,i;switch(r){case"\\over":i="\\frac";break;case"\\choose":i="\\binom";break;case"\\atop":i="\\\\atopfrac";break;case"\\brace":i="\\\\bracefrac";break;case"\\brack":i="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:i,token:n}}});hG=["display","text","script","scriptscript"],fG=o(function(e){var r=null;return e.length>0&&(r=e,r=r==="."?null:r),r},"delimFromValue");Rt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:r}=t,n=e[4],i=e[5],a=i3(e[0]),s=a.type==="atom"&&a.family==="open"?fG(a.text):null,l=i3(e[1]),u=l.type==="atom"&&l.family==="close"?fG(l.text):null,h=xr(e[2],"size"),f,d=null;h.isBlank?f=!0:(d=h.value,f=d.number>0);var p="auto",m=e[3];if(m.type==="ordgroup"){if(m.body.length>0){var g=xr(m.body[0],"textord");p=hG[Number(g.text)]}}else m=xr(m,"textord"),p=hG[Number(m.text)];return{type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:f,barSize:d,leftDelim:s,rightDelim:u,size:p}},htmlBuilder:M7,mathmlBuilder:I7});Rt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:r,funcName:n,token:i}=t;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:xr(e[0],"size").value,token:i}}});Rt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=Mxe(xr(e[1],"infix").size),s=e[2],l=a.number>0;return{type:"genfrac",mode:r.mode,numer:i,denom:s,continued:!1,hasBarLine:l,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},"handler"),htmlBuilder:M7,mathmlBuilder:I7});l$=o((t,e)=>{var r=e.style,n,i;t.type==="supsub"?(n=t.sup?Ir(t.sup,e.havingStyle(r.sup()),e):Ir(t.sub,e.havingStyle(r.sub()),e),i=xr(t.base,"horizBrace")):i=xr(t,"horizBrace");var a=Ir(i.base,e.havingBaseStyle(tr.DISPLAY)),s=ou.svgSpan(i,e),l;if(i.isOver?(l=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:s}]},e),l.children[0].children[0].children[1].classes.push("svg-align")):(l=Be.makeVList({positionType:"bottom",positionData:a.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:a}]},e),l.children[0].children[0].children[0].classes.push("svg-align")),n){var u=Be.makeSpan(["mord",i.isOver?"mover":"munder"],[l],e);i.isOver?l=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:u},{type:"kern",size:.2},{type:"elem",elem:n}]},e):l=Be.makeVList({positionType:"bottom",positionData:u.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:u}]},e)}return Be.makeSpan(["mord",i.isOver?"mover":"munder"],[l],e)},"htmlBuilder$3"),t4e=o((t,e)=>{var r=ou.mathMLnode(t.label);return new dt.MathNode(t.isOver?"mover":"munder",[yn(t.base,e),r])},"mathmlBuilder$2");Rt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"horizBrace",mode:r.mode,label:n,isOver:/^\\over/.test(n),base:e[0]}},htmlBuilder:l$,mathmlBuilder:t4e});Rt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[1],i=xr(e[0],"url").url;return r.settings.isTrusted({command:"\\href",url:i})?{type:"href",mode:r.mode,href:i,body:fi(n)}:r.formatUnsupportedCmd("\\href")},"handler"),htmlBuilder:o((t,e)=>{var r=Oi(t.body,e,!1);return Be.makeAnchor(t.href,[],r,e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=ch(t.body,e);return r instanceof ys||(r=new ys("mrow",[r])),r.setAttribute("href",t.href),r},"mathmlBuilder")});Rt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=xr(e[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var i=[],a=0;a{var{parser:r,funcName:n,token:i}=t,a=xr(e[0],"raw").string,s=e[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,u={};switch(n){case"\\htmlClass":u.class=a,l={command:"\\htmlClass",class:a};break;case"\\htmlId":u.id=a,l={command:"\\htmlId",id:a};break;case"\\htmlStyle":u.style=a,l={command:"\\htmlStyle",style:a};break;case"\\htmlData":{for(var h=a.split(","),f=0;f{var r=Oi(t.body,e,!1),n=["enclosing"];t.attributes.class&&n.push(...t.attributes.class.trim().split(/\s+/));var i=Be.makeSpan(n,r,e);for(var a in t.attributes)a!=="class"&&t.attributes.hasOwnProperty(a)&&i.setAttribute(a,t.attributes[a]);return i},"htmlBuilder"),mathmlBuilder:o((t,e)=>ch(t.body,e),"mathmlBuilder")});Rt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t;return{type:"htmlmathml",mode:r.mode,html:fi(e[0]),mathml:fi(e[1])}},"handler"),htmlBuilder:o((t,e)=>{var r=Oi(t.html,e,!1);return Be.makeFragment(r)},"htmlBuilder"),mathmlBuilder:o((t,e)=>ch(t.mathml,e),"mathmlBuilder")});a7=o(function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!r)throw new gt("Invalid size: '"+e+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!AG(n))throw new gt("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n},"sizeData");Rt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:o((t,e,r)=>{var{parser:n}=t,i={number:0,unit:"em"},a={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var u=xr(r[0],"raw").string,h=u.split(","),f=0;f{var r=ti(t.height,e),n=0;t.totalheight.number>0&&(n=ti(t.totalheight,e)-r);var i=0;t.width.number>0&&(i=ti(t.width,e));var a={height:kt(r+n)};i>0&&(a.width=kt(i)),n>0&&(a.verticalAlign=kt(-n));var s=new h7(t.src,t.alt,a);return s.height=r,s.depth=n,s},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=new dt.MathNode("mglyph",[]);r.setAttribute("alt",t.alt);var n=ti(t.height,e),i=0;if(t.totalheight.number>0&&(i=ti(t.totalheight,e)-n,r.setAttribute("valign",kt(-i))),r.setAttribute("height",kt(n+i)),t.width.number>0){var a=ti(t.width,e);r.setAttribute("width",kt(a))}return r.setAttribute("src",t.src),r},"mathmlBuilder")});Rt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,i=xr(e[0],"size");if(r.settings.strict){var a=n[1]==="m",s=i.value.unit==="mu";a?(s||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+i.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):s&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:i.value}},htmlBuilder(t,e){return Be.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var r=ti(t.dimension,e);return new dt.SpaceNode(r)}});Rt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:i}},"handler"),htmlBuilder:o((t,e)=>{var r;t.alignment==="clap"?(r=Be.makeSpan([],[Ir(t.body,e)]),r=Be.makeSpan(["inner"],[r],e)):r=Be.makeSpan(["inner"],[Ir(t.body,e)]);var n=Be.makeSpan(["fix"],[]),i=Be.makeSpan([t.alignment],[r,n],e),a=Be.makeSpan(["strut"]);return a.style.height=kt(i.height+i.depth),i.depth&&(a.style.verticalAlign=kt(-i.depth)),i.children.unshift(a),i=Be.makeSpan(["thinbox"],[i],e),Be.makeSpan(["mord","vbox"],[i],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=new dt.MathNode("mpadded",[yn(t.body,e)]);if(t.alignment!=="rlap"){var n=t.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r},"mathmlBuilder")});Rt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:r,parser:n}=t,i=n.mode;n.switchMode("math");var a=r==="\\("?"\\)":"$",s=n.parseExpression(!1,a);return n.expect(a),n.switchMode(i),{type:"styling",mode:n.mode,style:"text",body:s}}});Rt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new gt("Mismatched "+t.funcName)}});dG=o((t,e)=>{switch(e.style.size){case tr.DISPLAY.size:return t.display;case tr.TEXT.size:return t.text;case tr.SCRIPT.size:return t.script;case tr.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}},"chooseMathStyle");Rt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:o((t,e)=>{var{parser:r}=t;return{type:"mathchoice",mode:r.mode,display:fi(e[0]),text:fi(e[1]),script:fi(e[2]),scriptscript:fi(e[3])}},"handler"),htmlBuilder:o((t,e)=>{var r=dG(t,e),n=Oi(r,e,!1);return Be.makeFragment(n)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=dG(t,e);return ch(r,e)},"mathmlBuilder")});c$=o((t,e,r,n,i,a,s)=>{t=Be.makeSpan([],[t]);var l=r&&Jt.isCharacterBox(r),u,h;if(e){var f=Ir(e,n.havingStyle(i.sup()),n);h={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-f.depth)}}if(r){var d=Ir(r,n.havingStyle(i.sub()),n);u={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-d.height)}}var p;if(h&&u){var m=n.fontMetrics().bigOpSpacing5+u.elem.height+u.elem.depth+u.kern+t.depth+s;p=Be.makeVList({positionType:"bottom",positionData:m,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:kt(-a)},{type:"kern",size:u.kern},{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:kt(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(u){var g=t.height-s;p=Be.makeVList({positionType:"top",positionData:g,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:kt(-a)},{type:"kern",size:u.kern},{type:"elem",elem:t}]},n)}else if(h){var y=t.depth+s;p=Be.makeVList({positionType:"bottom",positionData:y,children:[{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:kt(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else return t;var v=[p];if(u&&a!==0&&!l){var x=Be.makeSpan(["mspace"],[],n);x.style.marginRight=kt(a),v.unshift(x)}return Be.makeSpan(["mop","op-limits"],v,n)},"assembleSupSub"),u$=["\\smallint"],f0=o((t,e)=>{var r,n,i=!1,a;t.type==="supsub"?(r=t.sup,n=t.sub,a=xr(t.base,"op"),i=!0):a=xr(t,"op");var s=e.style,l=!1;s.size===tr.DISPLAY.size&&a.symbol&&!Jt.contains(u$,a.name)&&(l=!0);var u;if(a.symbol){var h=l?"Size2-Regular":"Size1-Regular",f="";if((a.name==="\\oiint"||a.name==="\\oiiint")&&(f=a.name.slice(1),a.name=f==="oiint"?"\\iint":"\\iiint"),u=Be.makeSymbol(a.name,h,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),f.length>0){var d=u.italic,p=Be.staticSvg(f+"Size"+(l?"2":"1"),e);u=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:u,shift:0},{type:"elem",elem:p,shift:l?.08:0}]},e),a.name="\\"+f,u.classes.unshift("mop"),u.italic=d}}else if(a.body){var m=Oi(a.body,e,!0);m.length===1&&m[0]instanceof vs?(u=m[0],u.classes[0]="mop"):u=Be.makeSpan(["mop"],m,e)}else{for(var g=[],y=1;y{var r;if(t.symbol)r=new ys("mo",[To(t.name,t.mode)]),Jt.contains(u$,t.name)&&r.setAttribute("largeop","false");else if(t.body)r=new ys("mo",xs(t.body,e));else{r=new ys("mi",[new Kf(t.name.slice(1))]);var n=new ys("mo",[To("\u2061","text")]);t.parentIsSupSub?r=new ys("mrow",[r,n]):r=FG([r,n])}return r},"mathmlBuilder$1"),r4e={"\u220F":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22C0":"\\bigwedge","\u22C1":"\\bigvee","\u22C2":"\\bigcap","\u22C3":"\\bigcup","\u2A00":"\\bigodot","\u2A01":"\\bigoplus","\u2A02":"\\bigotimes","\u2A04":"\\biguplus","\u2A06":"\\bigsqcup"};Rt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220F","\u2210","\u2211","\u22C0","\u22C1","\u22C2","\u22C3","\u2A00","\u2A01","\u2A02","\u2A04","\u2A06"],props:{numArgs:0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=n;return i.length===1&&(i=r4e[i]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:i}},"handler"),htmlBuilder:f0,mathmlBuilder:Fy});Rt({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:fi(n)}},"handler"),htmlBuilder:f0,mathmlBuilder:Fy});n4e={"\u222B":"\\int","\u222C":"\\iint","\u222D":"\\iiint","\u222E":"\\oint","\u222F":"\\oiint","\u2230":"\\oiiint"};Rt({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:f0,mathmlBuilder:Fy});Rt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:f0,mathmlBuilder:Fy});Rt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222B","\u222C","\u222D","\u222E","\u222F","\u2230"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t,n=r;return n.length===1&&(n=n4e[n]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:f0,mathmlBuilder:Fy});h$=o((t,e)=>{var r,n,i=!1,a;t.type==="supsub"?(r=t.sup,n=t.sub,a=xr(t.base,"operatorname"),i=!0):a=xr(t,"operatorname");var s;if(a.body.length>0){for(var l=a.body.map(d=>{var p=d.text;return typeof p=="string"?{type:"textord",mode:d.mode,text:p}:d}),u=Oi(l,e.withFont("mathrm"),!0),h=0;h{for(var r=xs(t.body,e.withFont("mathrm")),n=!0,i=0;if.toText()).join("");r=[new dt.TextNode(l)]}var u=new dt.MathNode("mi",r);u.setAttribute("mathvariant","normal");var h=new dt.MathNode("mo",[To("\u2061","text")]);return t.parentIsSupSub?new dt.MathNode("mrow",[u,h]):dt.newDocumentFragment([u,h])},"mathmlBuilder");Rt({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"operatorname",mode:r.mode,body:fi(i),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},"handler"),htmlBuilder:h$,mathmlBuilder:i4e});fe("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");Jf({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?Be.makeFragment(Oi(t.body,e,!1)):Be.makeSpan(["mord"],Oi(t.body,e,!0),e)},mathmlBuilder(t,e){return ch(t.body,e,!0)}});Rt({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:r}=t,n=e[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(t,e){var r=Ir(t.body,e.havingCrampedStyle()),n=Be.makeLineSpan("overline-line",e),i=e.fontMetrics().defaultRuleThickness,a=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*i},{type:"elem",elem:n},{type:"kern",size:i}]},e);return Be.makeSpan(["mord","overline"],[a],e)},mathmlBuilder(t,e){var r=new dt.MathNode("mo",[new dt.TextNode("\u203E")]);r.setAttribute("stretchy","true");var n=new dt.MathNode("mover",[yn(t.body,e),r]);return n.setAttribute("accent","true"),n}});Rt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"phantom",mode:r.mode,body:fi(n)}},"handler"),htmlBuilder:o((t,e)=>{var r=Oi(t.body,e.withPhantom(),!1);return Be.makeFragment(r)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=xs(t.body,e);return new dt.MathNode("mphantom",r)},"mathmlBuilder")});Rt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"hphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((t,e)=>{var r=Be.makeSpan([],[Ir(t.body,e.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var n=0;n{var r=xs(fi(t.body),e),n=new dt.MathNode("mphantom",r),i=new dt.MathNode("mpadded",[n]);return i.setAttribute("height","0px"),i.setAttribute("depth","0px"),i},"mathmlBuilder")});Rt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"vphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((t,e)=>{var r=Be.makeSpan(["inner"],[Ir(t.body,e.withPhantom())]),n=Be.makeSpan(["fix"],[]);return Be.makeSpan(["mord","rlap"],[r,n],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=xs(fi(t.body),e),n=new dt.MathNode("mphantom",r),i=new dt.MathNode("mpadded",[n]);return i.setAttribute("width","0px"),i},"mathmlBuilder")});Rt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t,n=xr(e[0],"size").value,i=e[1];return{type:"raisebox",mode:r.mode,dy:n,body:i}},htmlBuilder(t,e){var r=Ir(t.body,e),n=ti(t.dy,e);return Be.makeVList({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){var r=new dt.MathNode("mpadded",[yn(t.body,e)]),n=t.dy.number+t.dy.unit;return r.setAttribute("voffset",n),r}});Rt({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});Rt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler(t,e,r){var{parser:n}=t,i=r[0],a=xr(e[0],"size"),s=xr(e[1],"size");return{type:"rule",mode:n.mode,shift:i&&xr(i,"size").value,width:a.value,height:s.value}},htmlBuilder(t,e){var r=Be.makeSpan(["mord","rule"],[],e),n=ti(t.width,e),i=ti(t.height,e),a=t.shift?ti(t.shift,e):0;return r.style.borderRightWidth=kt(n),r.style.borderTopWidth=kt(i),r.style.bottom=kt(a),r.width=n,r.height=i+a,r.depth=-a,r.maxFontSize=i*1.125*e.sizeMultiplier,r},mathmlBuilder(t,e){var r=ti(t.width,e),n=ti(t.height,e),i=t.shift?ti(t.shift,e):0,a=e.color&&e.getColor()||"black",s=new dt.MathNode("mspace");s.setAttribute("mathbackground",a),s.setAttribute("width",kt(r)),s.setAttribute("height",kt(n));var l=new dt.MathNode("mpadded",[s]);return i>=0?l.setAttribute("height",kt(i)):(l.setAttribute("height",kt(i)),l.setAttribute("depth",kt(-i))),l.setAttribute("voffset",kt(i)),l}});o(f$,"sizingGroup");pG=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],a4e=o((t,e)=>{var r=e.havingSize(t.size);return f$(t.body,r,e)},"htmlBuilder");Rt({type:"sizing",names:pG,props:{numArgs:0,allowedInText:!0},handler:o((t,e)=>{var{breakOnTokenText:r,funcName:n,parser:i}=t,a=i.parseExpression(!1,r);return{type:"sizing",mode:i.mode,size:pG.indexOf(n)+1,body:a}},"handler"),htmlBuilder:a4e,mathmlBuilder:o((t,e)=>{var r=e.havingSize(t.size),n=xs(t.body,r),i=new dt.MathNode("mstyle",n);return i.setAttribute("mathsize",kt(r.sizeMultiplier)),i},"mathmlBuilder")});Rt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:o((t,e,r)=>{var{parser:n}=t,i=!1,a=!1,s=r[0]&&xr(r[0],"ordgroup");if(s)for(var l="",u=0;u{var r=Be.makeSpan([],[Ir(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return r;if(t.smashHeight&&(r.height=0,r.children))for(var n=0;n{var r=new dt.MathNode("mpadded",[yn(t.body,e)]);return t.smashHeight&&r.setAttribute("height","0px"),t.smashDepth&&r.setAttribute("depth","0px"),r},"mathmlBuilder")});Rt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:n}=t,i=r[0],a=e[0];return{type:"sqrt",mode:n.mode,body:a,index:i}},htmlBuilder(t,e){var r=Ir(t.body,e.havingCrampedStyle());r.height===0&&(r.height=e.fontMetrics().xHeight),r=Be.wrapFragment(r,e);var n=e.fontMetrics(),i=n.defaultRuleThickness,a=i;e.style.idr.height+r.depth+s&&(s=(s+d-r.height-r.depth)/2);var p=u.height-r.height-s-h;r.style.paddingLeft=kt(f);var m=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+p)},{type:"elem",elem:u},{type:"kern",size:h}]},e);if(t.index){var g=e.havingStyle(tr.SCRIPTSCRIPT),y=Ir(t.index,g,e),v=.6*(m.height-m.depth),x=Be.makeVList({positionType:"shift",positionData:-v,children:[{type:"elem",elem:y}]},e),b=Be.makeSpan(["root"],[x]);return Be.makeSpan(["mord","sqrt"],[b,m],e)}else return Be.makeSpan(["mord","sqrt"],[m],e)},mathmlBuilder(t,e){var{body:r,index:n}=t;return n?new dt.MathNode("mroot",[yn(r,e),yn(n,e)]):new dt.MathNode("msqrt",[yn(r,e)])}});mG={display:tr.DISPLAY,text:tr.TEXT,script:tr.SCRIPT,scriptscript:tr.SCRIPTSCRIPT};Rt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:r,funcName:n,parser:i}=t,a=i.parseExpression(!0,r),s=n.slice(1,n.length-5);return{type:"styling",mode:i.mode,style:s,body:a}},htmlBuilder(t,e){var r=mG[t.style],n=e.havingStyle(r).withFont("");return f$(t.body,n,e)},mathmlBuilder(t,e){var r=mG[t.style],n=e.havingStyle(r),i=xs(t.body,n),a=new dt.MathNode("mstyle",i),s={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=s[t.style];return a.setAttribute("scriptlevel",l[0]),a.setAttribute("displaystyle",l[1]),a}});s4e=o(function(e,r){var n=e.base;if(n)if(n.type==="op"){var i=n.limits&&(r.style.size===tr.DISPLAY.size||n.alwaysHandleSupSub);return i?f0:null}else if(n.type==="operatorname"){var a=n.alwaysHandleSupSub&&(r.style.size===tr.DISPLAY.size||n.limits);return a?h$:null}else{if(n.type==="accent")return Jt.isCharacterBox(n.base)?A7:null;if(n.type==="horizBrace"){var s=!e.sub;return s===n.isOver?l$:null}else return null}else return null},"htmlBuilderDelegate");Jf({type:"supsub",htmlBuilder(t,e){var r=s4e(t,e);if(r)return r(t,e);var{base:n,sup:i,sub:a}=t,s=Ir(n,e),l,u,h=e.fontMetrics(),f=0,d=0,p=n&&Jt.isCharacterBox(n);if(i){var m=e.havingStyle(e.style.sup());l=Ir(i,m,e),p||(f=s.height-m.fontMetrics().supDrop*m.sizeMultiplier/e.sizeMultiplier)}if(a){var g=e.havingStyle(e.style.sub());u=Ir(a,g,e),p||(d=s.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}var y;e.style===tr.DISPLAY?y=h.sup1:e.style.cramped?y=h.sup3:y=h.sup2;var v=e.sizeMultiplier,x=kt(.5/h.ptPerEm/v),b=null;if(u){var w=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(s instanceof vs||w)&&(b=kt(-s.italic))}var C;if(l&&u){f=Math.max(f,y,l.depth+.25*h.xHeight),d=Math.max(d,h.sub2);var T=h.defaultRuleThickness,E=4*T;if(f-l.depth-(u.height-d)0&&(f+=A,d-=A)}var S=[{type:"elem",elem:u,shift:d,marginRight:x,marginLeft:b},{type:"elem",elem:l,shift:-f,marginRight:x}];C=Be.makeVList({positionType:"individualShift",children:S},e)}else if(u){d=Math.max(d,h.sub1,u.height-.8*h.xHeight);var _=[{type:"elem",elem:u,marginLeft:b,marginRight:x}];C=Be.makeVList({positionType:"shift",positionData:d,children:_},e)}else if(l)f=Math.max(f,y,l.depth+.25*h.xHeight),C=Be.makeVList({positionType:"shift",positionData:-f,children:[{type:"elem",elem:l,marginRight:x}]},e);else throw new Error("supsub must have either sup or sub.");var I=d7(s,"right")||"mord";return Be.makeSpan([I],[s,Be.makeSpan(["msupsub"],[C])],e)},mathmlBuilder(t,e){var r=!1,n,i;t.base&&t.base.type==="horizBrace"&&(i=!!t.sup,i===t.base.isOver&&(r=!0,n=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var a=[yn(t.base,e)];t.sub&&a.push(yn(t.sub,e)),t.sup&&a.push(yn(t.sup,e));var s;if(r)s=n?"mover":"munder";else if(t.sub)if(t.sup){var h=t.base;h&&h.type==="op"&&h.limits&&e.style===tr.DISPLAY||h&&h.type==="operatorname"&&h.alwaysHandleSupSub&&(e.style===tr.DISPLAY||h.limits)?s="munderover":s="msubsup"}else{var u=t.base;u&&u.type==="op"&&u.limits&&(e.style===tr.DISPLAY||u.alwaysHandleSupSub)||u&&u.type==="operatorname"&&u.alwaysHandleSupSub&&(u.limits||e.style===tr.DISPLAY)?s="munder":s="msub"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===tr.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===tr.DISPLAY)?s="mover":s="msup"}return new dt.MathNode(s,a)}});Jf({type:"atom",htmlBuilder(t,e){return Be.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var r=new dt.MathNode("mo",[To(t.text,t.mode)]);if(t.family==="bin"){var n=S7(t,e);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else t.family==="punct"?r.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&r.setAttribute("stretchy","false");return r}});d$={mi:"italic",mn:"normal",mtext:"normal"};Jf({type:"mathord",htmlBuilder(t,e){return Be.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var r=new dt.MathNode("mi",[To(t.text,t.mode,e)]),n=S7(t,e)||"italic";return n!==d$[r.type]&&r.setAttribute("mathvariant",n),r}});Jf({type:"textord",htmlBuilder(t,e){return Be.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var r=To(t.text,t.mode,e),n=S7(t,e)||"normal",i;return t.mode==="text"?i=new dt.MathNode("mtext",[r]):/[0-9]/.test(t.text)?i=new dt.MathNode("mn",[r]):t.text==="\\prime"?i=new dt.MathNode("mo",[r]):i=new dt.MathNode("mi",[r]),n!==d$[i.type]&&i.setAttribute("mathvariant",n),i}});s7={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},o7={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Jf({type:"spacing",htmlBuilder(t,e){if(o7.hasOwnProperty(t.text)){var r=o7[t.text].className||"";if(t.mode==="text"){var n=Be.makeOrd(t,e,"textord");return n.classes.push(r),n}else return Be.makeSpan(["mspace",r],[Be.mathsym(t.text,t.mode,e)],e)}else{if(s7.hasOwnProperty(t.text))return Be.makeSpan(["mspace",s7[t.text]],[],e);throw new gt('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var r;if(o7.hasOwnProperty(t.text))r=new dt.MathNode("mtext",[new dt.TextNode("\xA0")]);else{if(s7.hasOwnProperty(t.text))return new dt.MathNode("mspace");throw new gt('Unknown type of space "'+t.text+'"')}return r}});gG=o(()=>{var t=new dt.MathNode("mtd",[]);return t.setAttribute("width","50%"),t},"pad");Jf({type:"tag",mathmlBuilder(t,e){var r=new dt.MathNode("mtable",[new dt.MathNode("mtr",[gG(),new dt.MathNode("mtd",[ch(t.body,e)]),gG(),new dt.MathNode("mtd",[ch(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});yG={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},vG={"\\textbf":"textbf","\\textmd":"textmd"},o4e={"\\textit":"textit","\\textup":"textup"},xG=o((t,e)=>{var r=t.font;if(r){if(yG[r])return e.withTextFontFamily(yG[r]);if(vG[r])return e.withTextFontWeight(vG[r]);if(r==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(o4e[r])},"optionsWithFont");Rt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"text",mode:r.mode,body:fi(i),font:n}},htmlBuilder(t,e){var r=xG(t,e),n=Oi(t.body,r,!0);return Be.makeSpan(["mord","text"],n,r)},mathmlBuilder(t,e){var r=xG(t,e);return ch(t.body,r)}});Rt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"underline",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=Ir(t.body,e),n=Be.makeLineSpan("underline-line",e),i=e.fontMetrics().defaultRuleThickness,a=Be.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:i},{type:"elem",elem:n},{type:"kern",size:3*i},{type:"elem",elem:r}]},e);return Be.makeSpan(["mord","underline"],[a],e)},mathmlBuilder(t,e){var r=new dt.MathNode("mo",[new dt.TextNode("\u203E")]);r.setAttribute("stretchy","true");var n=new dt.MathNode("munder",[yn(t.body,e),r]);return n.setAttribute("accentunder","true"),n}});Rt({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"vcenter",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=Ir(t.body,e),n=e.fontMetrics().axisHeight,i=.5*(r.height-n-(r.depth+n));return Be.makeVList({positionType:"shift",positionData:i,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){return new dt.MathNode("mpadded",[yn(t.body,e)],["vcenter"])}});Rt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,r){throw new gt("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var r=bG(t),n=[],i=e.havingStyle(e.style.text()),a=0;at.body.replace(/ /g,t.star?"\u2423":"\xA0"),"makeVerb"),oh=PG,p$=`[ \r + ]`,l4e="\\\\[a-zA-Z@]+",c4e="\\\\[^\uD800-\uDFFF]",u4e="("+l4e+")"+p$+"*",h4e=`\\\\( |[ \r ]+ -?)[ \r ]*`,_C="[\u0300-\u036F]",u3e=new RegExp(_C+"+$"),h3e="("+S$+"+)|"+(c3e+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(_C+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(_C+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+l3e)+("|"+o3e+")"),m4=class{static{o(this,"Lexer")}constructor(e,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=r,this.tokenRegex=new RegExp(h3e,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,r){this.catcodes[e]=r}lex(){var e=this.input,r=this.tokenRegex.lastIndex;if(r===e.length)return new Co("EOF",new Ys(this,r,r));var n=this.tokenRegex.exec(e);if(n===null||n.index!==r)throw new ut("Unexpected character: '"+e[r]+"'",new Co(e[r],new Ys(this,r,r+1)));var i=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[i]===14){var a=e.indexOf(` -`,this.tokenRegex.lastIndex);return a===-1?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=a+1,this.lex()}return new Co(i,new Ys(this,r,this.tokenRegex.lastIndex))}},LC=class{static{o(this,"Namespace")}constructor(e,r){e===void 0&&(e={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new ut("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var r in e)e.hasOwnProperty(r)&&(e[r]==null?delete this.current[r]:this.current[r]=e[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,r,n){if(n===void 0&&(n=!1),n){for(var i=0;i0&&(this.undefStack[this.undefStack.length-1][e]=r)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(e)&&(a[e]=this.current[e])}r==null?delete this.current[e]:this.current[e]=r}},f3e=p$;le("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});le("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});le("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});le("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});le("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var r=t.future();return e[0].length===1&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});le("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");le("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});RG={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};le("\\char",function(t){var e=t.popToken(),r,n="";if(e.text==="'")r=8,e=t.popToken();else if(e.text==='"')r=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")n=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new ut("\\char` missing argument");n=e.text.charCodeAt(0)}else r=10;if(r){if(n=RG[e.text],n==null||n>=r)throw new ut("Invalid base-"+r+" digit "+e.text);for(var i;(i=RG[t.future().text])!=null&&i{var n=t.consumeArg().tokens;if(n.length!==1)throw new ut("\\newcommand's first argument must be a macro name");var i=n[0].text,a=t.isDefined(i);if(a&&!e)throw new ut("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!a&&!r)throw new ut("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var s=0;if(n=t.consumeArg().tokens,n.length===1&&n[0].text==="["){for(var l="",u=t.expandNextToken();u.text!=="]"&&u.text!=="EOF";)l+=u.text,u=t.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new ut("Invalid number of arguments: "+l);s=parseInt(l),n=t.consumeArg().tokens}return t.macros.set(i,{tokens:n,numArgs:s}),""},"newcommand");le("\\newcommand",t=>WC(t,!1,!0));le("\\renewcommand",t=>WC(t,!0,!1));le("\\providecommand",t=>WC(t,!0,!0));le("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(r=>r.text).join("")),""});le("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(r=>r.text).join("")),""});le("\\show",t=>{var e=t.popToken(),r=e.text;return console.log(e,t.macros.get(r),oh[r],En.math[r],En.text[r]),""});le("\\bgroup","{");le("\\egroup","}");le("~","\\nobreakspace");le("\\lq","`");le("\\rq","'");le("\\aa","\\r a");le("\\AA","\\r A");le("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xA9}");le("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");le("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");le("\u212C","\\mathscr{B}");le("\u2130","\\mathscr{E}");le("\u2131","\\mathscr{F}");le("\u210B","\\mathscr{H}");le("\u2110","\\mathscr{I}");le("\u2112","\\mathscr{L}");le("\u2133","\\mathscr{M}");le("\u211B","\\mathscr{R}");le("\u212D","\\mathfrak{C}");le("\u210C","\\mathfrak{H}");le("\u2128","\\mathfrak{Z}");le("\\Bbbk","\\Bbb{k}");le("\xB7","\\cdotp");le("\\llap","\\mathllap{\\textrm{#1}}");le("\\rlap","\\mathrlap{\\textrm{#1}}");le("\\clap","\\mathclap{\\textrm{#1}}");le("\\mathstrut","\\vphantom{(}");le("\\underbar","\\underline{\\text{#1}}");le("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');le("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");le("\\ne","\\neq");le("\u2260","\\neq");le("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");le("\u2209","\\notin");le("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");le("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");le("\u225A","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");le("\u225B","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");le("\u225D","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");le("\u225E","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");le("\u225F","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");le("\u27C2","\\perp");le("\u203C","\\mathclose{!\\mkern-0.8mu!}");le("\u220C","\\notni");le("\u231C","\\ulcorner");le("\u231D","\\urcorner");le("\u231E","\\llcorner");le("\u231F","\\lrcorner");le("\xA9","\\copyright");le("\xAE","\\textregistered");le("\uFE0F","\\textregistered");le("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');le("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');le("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');le("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');le("\\vdots","\\mathord{\\varvdots\\rule{0pt}{15pt}}");le("\u22EE","\\vdots");le("\\varGamma","\\mathit{\\Gamma}");le("\\varDelta","\\mathit{\\Delta}");le("\\varTheta","\\mathit{\\Theta}");le("\\varLambda","\\mathit{\\Lambda}");le("\\varXi","\\mathit{\\Xi}");le("\\varPi","\\mathit{\\Pi}");le("\\varSigma","\\mathit{\\Sigma}");le("\\varUpsilon","\\mathit{\\Upsilon}");le("\\varPhi","\\mathit{\\Phi}");le("\\varPsi","\\mathit{\\Psi}");le("\\varOmega","\\mathit{\\Omega}");le("\\substack","\\begin{subarray}{c}#1\\end{subarray}");le("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");le("\\boxed","\\fbox{$\\displaystyle{#1}$}");le("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");le("\\implies","\\DOTSB\\;\\Longrightarrow\\;");le("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");MG={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};le("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in MG?e=MG[r]:(r.slice(0,4)==="\\not"||r in En.math&&Jt.contains(["bin","rel"],En.math[r].group))&&(e="\\dotsb"),e});YC={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};le("\\dotso",function(t){var e=t.future().text;return e in YC?"\\ldots\\,":"\\ldots"});le("\\dotsc",function(t){var e=t.future().text;return e in YC&&e!==","?"\\ldots\\,":"\\ldots"});le("\\cdots",function(t){var e=t.future().text;return e in YC?"\\@cdots\\,":"\\@cdots"});le("\\dotsb","\\cdots");le("\\dotsm","\\cdots");le("\\dotsi","\\!\\cdots");le("\\dotsx","\\ldots\\,");le("\\DOTSI","\\relax");le("\\DOTSB","\\relax");le("\\DOTSX","\\relax");le("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");le("\\,","\\tmspace+{3mu}{.1667em}");le("\\thinspace","\\,");le("\\>","\\mskip{4mu}");le("\\:","\\tmspace+{4mu}{.2222em}");le("\\medspace","\\:");le("\\;","\\tmspace+{5mu}{.2777em}");le("\\thickspace","\\;");le("\\!","\\tmspace-{3mu}{.1667em}");le("\\negthinspace","\\!");le("\\negmedspace","\\tmspace-{4mu}{.2222em}");le("\\negthickspace","\\tmspace-{5mu}{.277em}");le("\\enspace","\\kern.5em ");le("\\enskip","\\hskip.5em\\relax");le("\\quad","\\hskip1em\\relax");le("\\qquad","\\hskip2em\\relax");le("\\tag","\\@ifstar\\tag@literal\\tag@paren");le("\\tag@paren","\\tag@literal{({#1})}");le("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new ut("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});le("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");le("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");le("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");le("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");le("\\newline","\\\\\\relax");le("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");C$=mt(Zl["Main-Regular"][84][1]-.7*Zl["Main-Regular"][65][1]);le("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+C$+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");le("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+C$+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");le("\\hspace","\\@ifstar\\@hspacer\\@hspace");le("\\@hspace","\\hskip #1\\relax");le("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");le("\\ordinarycolon",":");le("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");le("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');le("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');le("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');le("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');le("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');le("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');le("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');le("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');le("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');le("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');le("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');le("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');le("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');le("\u2237","\\dblcolon");le("\u2239","\\eqcolon");le("\u2254","\\coloneqq");le("\u2255","\\eqqcolon");le("\u2A74","\\Coloneqq");le("\\ratio","\\vcentcolon");le("\\coloncolon","\\dblcolon");le("\\colonequals","\\coloneqq");le("\\coloncolonequals","\\Coloneqq");le("\\equalscolon","\\eqqcolon");le("\\equalscoloncolon","\\Eqqcolon");le("\\colonminus","\\coloneq");le("\\coloncolonminus","\\Coloneq");le("\\minuscolon","\\eqcolon");le("\\minuscoloncolon","\\Eqcolon");le("\\coloncolonapprox","\\Colonapprox");le("\\coloncolonsim","\\Colonsim");le("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");le("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");le("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");le("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");le("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");le("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");le("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");le("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");le("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");le("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");le("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");le("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");le("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");le("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}");le("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}");le("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}");le("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}");le("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}");le("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}");le("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}");le("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}");le("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}");le("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}");le("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228A}");le("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2ACB}");le("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228B}");le("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2ACC}");le("\\imath","\\html@mathml{\\@imath}{\u0131}");le("\\jmath","\\html@mathml{\\@jmath}{\u0237}");le("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");le("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");le("\u27E6","\\llbracket");le("\u27E7","\\rrbracket");le("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");le("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");le("\u2983","\\lBrace");le("\u2984","\\rBrace");le("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");le("\u29B5","\\minuso");le("\\darr","\\downarrow");le("\\dArr","\\Downarrow");le("\\Darr","\\Downarrow");le("\\lang","\\langle");le("\\rang","\\rangle");le("\\uarr","\\uparrow");le("\\uArr","\\Uparrow");le("\\Uarr","\\Uparrow");le("\\N","\\mathbb{N}");le("\\R","\\mathbb{R}");le("\\Z","\\mathbb{Z}");le("\\alef","\\aleph");le("\\alefsym","\\aleph");le("\\Alpha","\\mathrm{A}");le("\\Beta","\\mathrm{B}");le("\\bull","\\bullet");le("\\Chi","\\mathrm{X}");le("\\clubs","\\clubsuit");le("\\cnums","\\mathbb{C}");le("\\Complex","\\mathbb{C}");le("\\Dagger","\\ddagger");le("\\diamonds","\\diamondsuit");le("\\empty","\\emptyset");le("\\Epsilon","\\mathrm{E}");le("\\Eta","\\mathrm{H}");le("\\exist","\\exists");le("\\harr","\\leftrightarrow");le("\\hArr","\\Leftrightarrow");le("\\Harr","\\Leftrightarrow");le("\\hearts","\\heartsuit");le("\\image","\\Im");le("\\infin","\\infty");le("\\Iota","\\mathrm{I}");le("\\isin","\\in");le("\\Kappa","\\mathrm{K}");le("\\larr","\\leftarrow");le("\\lArr","\\Leftarrow");le("\\Larr","\\Leftarrow");le("\\lrarr","\\leftrightarrow");le("\\lrArr","\\Leftrightarrow");le("\\Lrarr","\\Leftrightarrow");le("\\Mu","\\mathrm{M}");le("\\natnums","\\mathbb{N}");le("\\Nu","\\mathrm{N}");le("\\Omicron","\\mathrm{O}");le("\\plusmn","\\pm");le("\\rarr","\\rightarrow");le("\\rArr","\\Rightarrow");le("\\Rarr","\\Rightarrow");le("\\real","\\Re");le("\\reals","\\mathbb{R}");le("\\Reals","\\mathbb{R}");le("\\Rho","\\mathrm{P}");le("\\sdot","\\cdot");le("\\sect","\\S");le("\\spades","\\spadesuit");le("\\sub","\\subset");le("\\sube","\\subseteq");le("\\supe","\\supseteq");le("\\Tau","\\mathrm{T}");le("\\thetasym","\\vartheta");le("\\weierp","\\wp");le("\\Zeta","\\mathrm{Z}");le("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");le("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");le("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");le("\\bra","\\mathinner{\\langle{#1}|}");le("\\ket","\\mathinner{|{#1}\\rangle}");le("\\braket","\\mathinner{\\langle{#1}\\rangle}");le("\\Bra","\\left\\langle#1\\right|");le("\\Ket","\\left|#1\\right\\rangle");A$=o(t=>e=>{var r=e.consumeArg().tokens,n=e.consumeArg().tokens,i=e.consumeArg().tokens,a=e.consumeArg().tokens,s=e.macros.get("|"),l=e.macros.get("\\|");e.macros.beginGroup();var u=o(d=>p=>{t&&(p.macros.set("|",s),i.length&&p.macros.set("\\|",l));var m=d;if(!d&&i.length){var g=p.future();g.text==="|"&&(p.popToken(),m=!0)}return{tokens:m?i:n,numArgs:0}},"midMacro");e.macros.set("|",u(!1)),i.length&&e.macros.set("\\|",u(!0));var h=e.consumeArg().tokens,f=e.expandTokens([...a,...h,...r]);return e.macros.endGroup(),{tokens:f.reverse(),numArgs:0}},"braketHelper");le("\\bra@ket",A$(!1));le("\\bra@set",A$(!0));le("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");le("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");le("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");le("\\angln","{\\angl n}");le("\\blue","\\textcolor{##6495ed}{#1}");le("\\orange","\\textcolor{##ffa500}{#1}");le("\\pink","\\textcolor{##ff00af}{#1}");le("\\red","\\textcolor{##df0030}{#1}");le("\\green","\\textcolor{##28ae7b}{#1}");le("\\gray","\\textcolor{gray}{#1}");le("\\purple","\\textcolor{##9d38bd}{#1}");le("\\blueA","\\textcolor{##ccfaff}{#1}");le("\\blueB","\\textcolor{##80f6ff}{#1}");le("\\blueC","\\textcolor{##63d9ea}{#1}");le("\\blueD","\\textcolor{##11accd}{#1}");le("\\blueE","\\textcolor{##0c7f99}{#1}");le("\\tealA","\\textcolor{##94fff5}{#1}");le("\\tealB","\\textcolor{##26edd5}{#1}");le("\\tealC","\\textcolor{##01d1c1}{#1}");le("\\tealD","\\textcolor{##01a995}{#1}");le("\\tealE","\\textcolor{##208170}{#1}");le("\\greenA","\\textcolor{##b6ffb0}{#1}");le("\\greenB","\\textcolor{##8af281}{#1}");le("\\greenC","\\textcolor{##74cf70}{#1}");le("\\greenD","\\textcolor{##1fab54}{#1}");le("\\greenE","\\textcolor{##0d923f}{#1}");le("\\goldA","\\textcolor{##ffd0a9}{#1}");le("\\goldB","\\textcolor{##ffbb71}{#1}");le("\\goldC","\\textcolor{##ff9c39}{#1}");le("\\goldD","\\textcolor{##e07d10}{#1}");le("\\goldE","\\textcolor{##a75a05}{#1}");le("\\redA","\\textcolor{##fca9a9}{#1}");le("\\redB","\\textcolor{##ff8482}{#1}");le("\\redC","\\textcolor{##f9685d}{#1}");le("\\redD","\\textcolor{##e84d39}{#1}");le("\\redE","\\textcolor{##bc2612}{#1}");le("\\maroonA","\\textcolor{##ffbde0}{#1}");le("\\maroonB","\\textcolor{##ff92c6}{#1}");le("\\maroonC","\\textcolor{##ed5fa6}{#1}");le("\\maroonD","\\textcolor{##ca337c}{#1}");le("\\maroonE","\\textcolor{##9e034e}{#1}");le("\\purpleA","\\textcolor{##ddd7ff}{#1}");le("\\purpleB","\\textcolor{##c6b9fc}{#1}");le("\\purpleC","\\textcolor{##aa87ff}{#1}");le("\\purpleD","\\textcolor{##7854ab}{#1}");le("\\purpleE","\\textcolor{##543b78}{#1}");le("\\mintA","\\textcolor{##f5f9e8}{#1}");le("\\mintB","\\textcolor{##edf2df}{#1}");le("\\mintC","\\textcolor{##e0e5cc}{#1}");le("\\grayA","\\textcolor{##f6f7f7}{#1}");le("\\grayB","\\textcolor{##f0f1f2}{#1}");le("\\grayC","\\textcolor{##e3e5e6}{#1}");le("\\grayD","\\textcolor{##d6d8da}{#1}");le("\\grayE","\\textcolor{##babec2}{#1}");le("\\grayF","\\textcolor{##888d93}{#1}");le("\\grayG","\\textcolor{##626569}{#1}");le("\\grayH","\\textcolor{##3b3e40}{#1}");le("\\grayI","\\textcolor{##21242c}{#1}");le("\\kaBlue","\\textcolor{##314453}{#1}");le("\\kaGreen","\\textcolor{##71B307}{#1}");_$={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},DC=class{static{o(this,"MacroExpander")}constructor(e,r,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=r,this.expansionCount=0,this.feed(e),this.macros=new LC(f3e,r.macros),this.mode=n,this.stack=[]}feed(e){this.lexer=new m4(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var r,n,i;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:i,end:n}=this.consumeArg(["]"])}else({tokens:i,start:r,end:n}=this.consumeArg());return this.pushToken(new Co("EOF",n.loc)),this.pushTokens(i),r.range(n,"")}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var r=[],n=e&&e.length>0;n||this.consumeSpaces();var i=this.future(),a,s=0,l=0;do{if(a=this.popToken(),r.push(a),a.text==="{")++s;else if(a.text==="}"){if(--s,s===-1)throw new ut("Extra }",a)}else if(a.text==="EOF")throw new ut("Unexpected end of input in a macro argument, expected '"+(e&&n?e[l]:"}")+"'",a);if(e&&n)if((s===0||s===1&&e[l]==="{")&&a.text===e[l]){if(++l,l===e.length){r.splice(-l,l);break}}else l=0}while(s!==0||n);return i.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:i,end:a}}consumeArgs(e,r){if(r){if(r.length!==e+1)throw new ut("The length of delimiters doesn't match the number of args!");for(var n=r[0],i=0;ithis.settings.maxExpand)throw new ut("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var r=this.popToken(),n=r.text,i=r.noexpand?null:this._getExpansion(n);if(i==null||e&&i.unexpandable){if(e&&i==null&&n[0]==="\\"&&!this.isDefined(n))throw new ut("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var a=i.tokens,s=this.consumeArgs(i.numArgs,i.delimiters);if(i.numArgs){a=a.slice();for(var l=a.length-1;l>=0;--l){var u=a[l];if(u.text==="#"){if(l===0)throw new ut("Incomplete placeholder at end of macro body",u);if(u=a[--l],u.text==="#")a.splice(l+1,1);else if(/^[1-9]$/.test(u.text))a.splice(l,2,...s[+u.text-1]);else throw new ut("Not a valid argument number",u)}}}return this.pushTokens(a),a.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new Co(e)]):void 0}expandTokens(e){var r=[],n=this.stack.length;for(this.pushTokens(e);this.stack.length>n;)if(this.expandOnce(!0)===!1){var i=this.stack.pop();i.treatAsRelax&&(i.noexpand=!1,i.treatAsRelax=!1),r.push(i)}return this.countExpansion(r.length),r}expandMacroAsText(e){var r=this.expandMacro(e);return r&&r.map(n=>n.text).join("")}_getExpansion(e){var r=this.macros.get(e);if(r==null)return r;if(e.length===1){var n=this.lexer.catcodes[e];if(n!=null&&n!==13)return}var i=typeof r=="function"?r(this):r;if(typeof i=="string"){var a=0;if(i.indexOf("#")!==-1)for(var s=i.replace(/##/g,"");s.indexOf("#"+(a+1))!==-1;)++a;for(var l=new m4(i,this.settings),u=[],h=l.lex();h.text!=="EOF";)u.push(h),h=l.lex();u.reverse();var f={tokens:u,numArgs:a};return f}return i}isDefined(e){return this.macros.has(e)||oh.hasOwnProperty(e)||En.math.hasOwnProperty(e)||En.text.hasOwnProperty(e)||_$.hasOwnProperty(e)}isExpandable(e){var r=this.macros.get(e);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:oh.hasOwnProperty(e)&&!oh[e].primitive}},IG=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,s4=Object.freeze({"\u208A":"+","\u208B":"-","\u208C":"=","\u208D":"(","\u208E":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1D62":"i","\u2C7C":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209A":"p","\u1D63":"r","\u209B":"s","\u209C":"t","\u1D64":"u","\u1D65":"v","\u2093":"x","\u1D66":"\u03B2","\u1D67":"\u03B3","\u1D68":"\u03C1","\u1D69":"\u03D5","\u1D6A":"\u03C7","\u207A":"+","\u207B":"-","\u207C":"=","\u207D":"(","\u207E":")","\u2070":"0","\xB9":"1","\xB2":"2","\xB3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1D2C":"A","\u1D2E":"B","\u1D30":"D","\u1D31":"E","\u1D33":"G","\u1D34":"H","\u1D35":"I","\u1D36":"J","\u1D37":"K","\u1D38":"L","\u1D39":"M","\u1D3A":"N","\u1D3C":"O","\u1D3E":"P","\u1D3F":"R","\u1D40":"T","\u1D41":"U","\u2C7D":"V","\u1D42":"W","\u1D43":"a","\u1D47":"b","\u1D9C":"c","\u1D48":"d","\u1D49":"e","\u1DA0":"f","\u1D4D":"g",\u02B0:"h","\u2071":"i",\u02B2:"j","\u1D4F":"k",\u02E1:"l","\u1D50":"m",\u207F:"n","\u1D52":"o","\u1D56":"p",\u02B3:"r",\u02E2:"s","\u1D57":"t","\u1D58":"u","\u1D5B":"v",\u02B7:"w",\u02E3:"x",\u02B8:"y","\u1DBB":"z","\u1D5D":"\u03B2","\u1D5E":"\u03B3","\u1D5F":"\u03B4","\u1D60":"\u03D5","\u1D61":"\u03C7","\u1DBF":"\u03B8"}),vC={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030C":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030A":{text:"\\r",math:"\\mathring"},"\u030B":{text:"\\H"},"\u0327":{text:"\\c"}},OG={\u00E1:"a\u0301",\u00E0:"a\u0300",\u00E4:"a\u0308",\u01DF:"a\u0308\u0304",\u00E3:"a\u0303",\u0101:"a\u0304",\u0103:"a\u0306",\u1EAF:"a\u0306\u0301",\u1EB1:"a\u0306\u0300",\u1EB5:"a\u0306\u0303",\u01CE:"a\u030C",\u00E2:"a\u0302",\u1EA5:"a\u0302\u0301",\u1EA7:"a\u0302\u0300",\u1EAB:"a\u0302\u0303",\u0227:"a\u0307",\u01E1:"a\u0307\u0304",\u00E5:"a\u030A",\u01FB:"a\u030A\u0301",\u1E03:"b\u0307",\u0107:"c\u0301",\u1E09:"c\u0327\u0301",\u010D:"c\u030C",\u0109:"c\u0302",\u010B:"c\u0307",\u00E7:"c\u0327",\u010F:"d\u030C",\u1E0B:"d\u0307",\u1E11:"d\u0327",\u00E9:"e\u0301",\u00E8:"e\u0300",\u00EB:"e\u0308",\u1EBD:"e\u0303",\u0113:"e\u0304",\u1E17:"e\u0304\u0301",\u1E15:"e\u0304\u0300",\u0115:"e\u0306",\u1E1D:"e\u0327\u0306",\u011B:"e\u030C",\u00EA:"e\u0302",\u1EBF:"e\u0302\u0301",\u1EC1:"e\u0302\u0300",\u1EC5:"e\u0302\u0303",\u0117:"e\u0307",\u0229:"e\u0327",\u1E1F:"f\u0307",\u01F5:"g\u0301",\u1E21:"g\u0304",\u011F:"g\u0306",\u01E7:"g\u030C",\u011D:"g\u0302",\u0121:"g\u0307",\u0123:"g\u0327",\u1E27:"h\u0308",\u021F:"h\u030C",\u0125:"h\u0302",\u1E23:"h\u0307",\u1E29:"h\u0327",\u00ED:"i\u0301",\u00EC:"i\u0300",\u00EF:"i\u0308",\u1E2F:"i\u0308\u0301",\u0129:"i\u0303",\u012B:"i\u0304",\u012D:"i\u0306",\u01D0:"i\u030C",\u00EE:"i\u0302",\u01F0:"j\u030C",\u0135:"j\u0302",\u1E31:"k\u0301",\u01E9:"k\u030C",\u0137:"k\u0327",\u013A:"l\u0301",\u013E:"l\u030C",\u013C:"l\u0327",\u1E3F:"m\u0301",\u1E41:"m\u0307",\u0144:"n\u0301",\u01F9:"n\u0300",\u00F1:"n\u0303",\u0148:"n\u030C",\u1E45:"n\u0307",\u0146:"n\u0327",\u00F3:"o\u0301",\u00F2:"o\u0300",\u00F6:"o\u0308",\u022B:"o\u0308\u0304",\u00F5:"o\u0303",\u1E4D:"o\u0303\u0301",\u1E4F:"o\u0303\u0308",\u022D:"o\u0303\u0304",\u014D:"o\u0304",\u1E53:"o\u0304\u0301",\u1E51:"o\u0304\u0300",\u014F:"o\u0306",\u01D2:"o\u030C",\u00F4:"o\u0302",\u1ED1:"o\u0302\u0301",\u1ED3:"o\u0302\u0300",\u1ED7:"o\u0302\u0303",\u022F:"o\u0307",\u0231:"o\u0307\u0304",\u0151:"o\u030B",\u1E55:"p\u0301",\u1E57:"p\u0307",\u0155:"r\u0301",\u0159:"r\u030C",\u1E59:"r\u0307",\u0157:"r\u0327",\u015B:"s\u0301",\u1E65:"s\u0301\u0307",\u0161:"s\u030C",\u1E67:"s\u030C\u0307",\u015D:"s\u0302",\u1E61:"s\u0307",\u015F:"s\u0327",\u1E97:"t\u0308",\u0165:"t\u030C",\u1E6B:"t\u0307",\u0163:"t\u0327",\u00FA:"u\u0301",\u00F9:"u\u0300",\u00FC:"u\u0308",\u01D8:"u\u0308\u0301",\u01DC:"u\u0308\u0300",\u01D6:"u\u0308\u0304",\u01DA:"u\u0308\u030C",\u0169:"u\u0303",\u1E79:"u\u0303\u0301",\u016B:"u\u0304",\u1E7B:"u\u0304\u0308",\u016D:"u\u0306",\u01D4:"u\u030C",\u00FB:"u\u0302",\u016F:"u\u030A",\u0171:"u\u030B",\u1E7D:"v\u0303",\u1E83:"w\u0301",\u1E81:"w\u0300",\u1E85:"w\u0308",\u0175:"w\u0302",\u1E87:"w\u0307",\u1E98:"w\u030A",\u1E8D:"x\u0308",\u1E8B:"x\u0307",\u00FD:"y\u0301",\u1EF3:"y\u0300",\u00FF:"y\u0308",\u1EF9:"y\u0303",\u0233:"y\u0304",\u0177:"y\u0302",\u1E8F:"y\u0307",\u1E99:"y\u030A",\u017A:"z\u0301",\u017E:"z\u030C",\u1E91:"z\u0302",\u017C:"z\u0307",\u00C1:"A\u0301",\u00C0:"A\u0300",\u00C4:"A\u0308",\u01DE:"A\u0308\u0304",\u00C3:"A\u0303",\u0100:"A\u0304",\u0102:"A\u0306",\u1EAE:"A\u0306\u0301",\u1EB0:"A\u0306\u0300",\u1EB4:"A\u0306\u0303",\u01CD:"A\u030C",\u00C2:"A\u0302",\u1EA4:"A\u0302\u0301",\u1EA6:"A\u0302\u0300",\u1EAA:"A\u0302\u0303",\u0226:"A\u0307",\u01E0:"A\u0307\u0304",\u00C5:"A\u030A",\u01FA:"A\u030A\u0301",\u1E02:"B\u0307",\u0106:"C\u0301",\u1E08:"C\u0327\u0301",\u010C:"C\u030C",\u0108:"C\u0302",\u010A:"C\u0307",\u00C7:"C\u0327",\u010E:"D\u030C",\u1E0A:"D\u0307",\u1E10:"D\u0327",\u00C9:"E\u0301",\u00C8:"E\u0300",\u00CB:"E\u0308",\u1EBC:"E\u0303",\u0112:"E\u0304",\u1E16:"E\u0304\u0301",\u1E14:"E\u0304\u0300",\u0114:"E\u0306",\u1E1C:"E\u0327\u0306",\u011A:"E\u030C",\u00CA:"E\u0302",\u1EBE:"E\u0302\u0301",\u1EC0:"E\u0302\u0300",\u1EC4:"E\u0302\u0303",\u0116:"E\u0307",\u0228:"E\u0327",\u1E1E:"F\u0307",\u01F4:"G\u0301",\u1E20:"G\u0304",\u011E:"G\u0306",\u01E6:"G\u030C",\u011C:"G\u0302",\u0120:"G\u0307",\u0122:"G\u0327",\u1E26:"H\u0308",\u021E:"H\u030C",\u0124:"H\u0302",\u1E22:"H\u0307",\u1E28:"H\u0327",\u00CD:"I\u0301",\u00CC:"I\u0300",\u00CF:"I\u0308",\u1E2E:"I\u0308\u0301",\u0128:"I\u0303",\u012A:"I\u0304",\u012C:"I\u0306",\u01CF:"I\u030C",\u00CE:"I\u0302",\u0130:"I\u0307",\u0134:"J\u0302",\u1E30:"K\u0301",\u01E8:"K\u030C",\u0136:"K\u0327",\u0139:"L\u0301",\u013D:"L\u030C",\u013B:"L\u0327",\u1E3E:"M\u0301",\u1E40:"M\u0307",\u0143:"N\u0301",\u01F8:"N\u0300",\u00D1:"N\u0303",\u0147:"N\u030C",\u1E44:"N\u0307",\u0145:"N\u0327",\u00D3:"O\u0301",\u00D2:"O\u0300",\u00D6:"O\u0308",\u022A:"O\u0308\u0304",\u00D5:"O\u0303",\u1E4C:"O\u0303\u0301",\u1E4E:"O\u0303\u0308",\u022C:"O\u0303\u0304",\u014C:"O\u0304",\u1E52:"O\u0304\u0301",\u1E50:"O\u0304\u0300",\u014E:"O\u0306",\u01D1:"O\u030C",\u00D4:"O\u0302",\u1ED0:"O\u0302\u0301",\u1ED2:"O\u0302\u0300",\u1ED6:"O\u0302\u0303",\u022E:"O\u0307",\u0230:"O\u0307\u0304",\u0150:"O\u030B",\u1E54:"P\u0301",\u1E56:"P\u0307",\u0154:"R\u0301",\u0158:"R\u030C",\u1E58:"R\u0307",\u0156:"R\u0327",\u015A:"S\u0301",\u1E64:"S\u0301\u0307",\u0160:"S\u030C",\u1E66:"S\u030C\u0307",\u015C:"S\u0302",\u1E60:"S\u0307",\u015E:"S\u0327",\u0164:"T\u030C",\u1E6A:"T\u0307",\u0162:"T\u0327",\u00DA:"U\u0301",\u00D9:"U\u0300",\u00DC:"U\u0308",\u01D7:"U\u0308\u0301",\u01DB:"U\u0308\u0300",\u01D5:"U\u0308\u0304",\u01D9:"U\u0308\u030C",\u0168:"U\u0303",\u1E78:"U\u0303\u0301",\u016A:"U\u0304",\u1E7A:"U\u0304\u0308",\u016C:"U\u0306",\u01D3:"U\u030C",\u00DB:"U\u0302",\u016E:"U\u030A",\u0170:"U\u030B",\u1E7C:"V\u0303",\u1E82:"W\u0301",\u1E80:"W\u0300",\u1E84:"W\u0308",\u0174:"W\u0302",\u1E86:"W\u0307",\u1E8C:"X\u0308",\u1E8A:"X\u0307",\u00DD:"Y\u0301",\u1EF2:"Y\u0300",\u0178:"Y\u0308",\u1EF8:"Y\u0303",\u0232:"Y\u0304",\u0176:"Y\u0302",\u1E8E:"Y\u0307",\u0179:"Z\u0301",\u017D:"Z\u030C",\u1E90:"Z\u0302",\u017B:"Z\u0307",\u03AC:"\u03B1\u0301",\u1F70:"\u03B1\u0300",\u1FB1:"\u03B1\u0304",\u1FB0:"\u03B1\u0306",\u03AD:"\u03B5\u0301",\u1F72:"\u03B5\u0300",\u03AE:"\u03B7\u0301",\u1F74:"\u03B7\u0300",\u03AF:"\u03B9\u0301",\u1F76:"\u03B9\u0300",\u03CA:"\u03B9\u0308",\u0390:"\u03B9\u0308\u0301",\u1FD2:"\u03B9\u0308\u0300",\u1FD1:"\u03B9\u0304",\u1FD0:"\u03B9\u0306",\u03CC:"\u03BF\u0301",\u1F78:"\u03BF\u0300",\u03CD:"\u03C5\u0301",\u1F7A:"\u03C5\u0300",\u03CB:"\u03C5\u0308",\u03B0:"\u03C5\u0308\u0301",\u1FE2:"\u03C5\u0308\u0300",\u1FE1:"\u03C5\u0304",\u1FE0:"\u03C5\u0306",\u03CE:"\u03C9\u0301",\u1F7C:"\u03C9\u0300",\u038E:"\u03A5\u0301",\u1FEA:"\u03A5\u0300",\u03AB:"\u03A5\u0308",\u1FE9:"\u03A5\u0304",\u1FE8:"\u03A5\u0306",\u038F:"\u03A9\u0301",\u1FFA:"\u03A9\u0300"},g4=class t{static{o(this,"Parser")}constructor(e,r){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new DC(e,r,this.mode),this.settings=r,this.leftrightDepth=0}expect(e,r){if(r===void 0&&(r=!0),this.fetch().text!==e)throw new ut("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var r=this.nextToken;this.consume(),this.gullet.pushToken(new Co("}")),this.gullet.pushTokens(e);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(e,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var i=this.fetch();if(t.endOfExpression.indexOf(i.text)!==-1||r&&i.text===r||e&&oh[i.text]&&oh[i.text].infix)break;var a=this.parseAtom(r);if(a){if(a.type==="internal")continue}else break;n.push(a)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(e){for(var r=-1,n,i=0;i=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+r[0]+'" used in math mode',e);var l=En[this.mode][r].group,u=Ys.range(e),h;if(n4e.hasOwnProperty(l)){var f=l;h={type:"atom",mode:this.mode,family:f,loc:u,text:r}}else h={type:l,mode:this.mode,loc:u,text:r};s=h}else if(r.charCodeAt(0)>=128)this.settings.strict&&(BG(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),e)),s={type:"textord",mode:"text",loc:Ys.range(e),text:r};else return null;if(this.consume(),a)for(var d=0;d{e instanceof Element&&e.tagName==="A"&&e.hasAttribute("target")&&e.setAttribute(t,e.getAttribute("target")??"")}),ah.addHook("afterSanitizeAttributes",e=>{e instanceof Element&&e.tagName==="A"&&e.hasAttribute(t)&&(e.setAttribute("target",e.getAttribute(t)??""),e.removeAttribute(t),e.getAttribute("target")==="_blank"&&e.setAttribute("rel","noopener"))})}var jf,y3e,v3e,O$,M$,Tr,b3e,w3e,T3e,k3e,P$,E3e,xr,S3e,C3e,ou,jC,A3e,_3e,I$,KC,pi,Kf,hh,je,fr=M(()=>{"use strict";sC();jf=//gi,y3e=o(t=>t?P$(t).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),v3e=(()=>{let t=!1;return()=>{t||(x3e(),t=!0)}})();o(x3e,"setupDompurifyHooks");O$=o(t=>(v3e(),ah.sanitize(t)),"removeScript"),M$=o((t,e)=>{if(e.flowchart?.htmlLabels!==!1){let r=e.securityLevel;r==="antiscript"||r==="strict"?t=O$(t):r!=="loose"&&(t=P$(t),t=t.replace(//g,">"),t=t.replace(/=/g,"="),t=k3e(t))}return t},"sanitizeMore"),Tr=o((t,e)=>t&&(e.dompurifyConfig?t=ah.sanitize(M$(t,e),e.dompurifyConfig).toString():t=ah.sanitize(M$(t,e),{FORBID_TAGS:["style"]}).toString(),t),"sanitizeText"),b3e=o((t,e)=>typeof t=="string"?Tr(t,e):t.flat().map(r=>Tr(r,e)),"sanitizeTextOrArray"),w3e=o(t=>jf.test(t),"hasBreaks"),T3e=o(t=>t.split(jf),"splitBreaks"),k3e=o(t=>t.replace(/#br#/g,"
"),"placeholderToBreak"),P$=o(t=>t.replace(jf,"#br#"),"breakToPlaceholder"),E3e=o(t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=e.replaceAll(/\(/g,"\\("),e=e.replaceAll(/\)/g,"\\)")),e},"getUrl"),xr=o(t=>!(t===!1||["false","null","0"].includes(String(t).trim().toLowerCase())),"evaluate"),S3e=o(function(...t){let e=t.filter(r=>!isNaN(r));return Math.max(...e)},"getMax"),C3e=o(function(...t){let e=t.filter(r=>!isNaN(r));return Math.min(...e)},"getMin"),ou=o(function(t){let e=t.split(/(,)/),r=[];for(let n=0;n0&&n+1Math.max(0,t.split(e).length-1),"countOccurrence"),A3e=o((t,e)=>{let r=jC(t,"~"),n=jC(e,"~");return r===1&&n===1},"shouldCombineSets"),_3e=o(t=>{let e=jC(t,"~"),r=!1;if(e<=1)return t;e%2!==0&&t.startsWith("~")&&(t=t.substring(1),r=!0);let n=[...t],i=n.indexOf("~"),a=n.lastIndexOf("~");for(;i!==-1&&a!==-1&&i!==a;)n[i]="<",n[a]=">",i=n.indexOf("~"),a=n.lastIndexOf("~");return r&&n.unshift("~"),n.join("")},"processSet"),I$=o(()=>window.MathMLElement!==void 0,"isMathMLSupported"),KC=/\$\$(.*)\$\$/g,pi=o(t=>(t.match(KC)?.length??0)>0,"hasKatex"),Kf=o(async(t,e)=>{t=await hh(t,e);let r=document.createElement("div");r.innerHTML=t,r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0",document.querySelector("body")?.insertAdjacentElement("beforeend",r);let i={width:r.clientWidth,height:r.clientHeight};return r.remove(),i},"calculateMathMLDimensions"),hh=o(async(t,e)=>{if(!pi(t))return t;if(!(I$()||e.legacyMathML||e.forceLegacyMathML))return t.replace(KC,"MathML is unsupported in this environment.");let{default:r}=await Promise.resolve().then(()=>(R$(),N$)),n=e.forceLegacyMathML||!I$()&&e.legacyMathML?"htmlAndMathml":"mathml";return t.split(jf).map(i=>pi(i)?`
${i}
`:`
${i}
`).join("").replace(KC,(i,a)=>r.renderToString(a,{throwOnError:!0,displayMode:!0,output:n}).replace(/\n/g," ").replace(//g,""))},"renderKatex"),je={getRows:y3e,sanitizeText:Tr,sanitizeTextOrArray:b3e,hasBreaks:w3e,splitBreaks:T3e,lineBreakRegex:jf,removeScript:O$,getUrl:E3e,evaluate:xr,getMax:S3e,getMin:C3e}});var L3e,D3e,Zr,_o,ni=M(()=>{"use strict";ht();L3e=o(function(t,e){for(let r of e)t.attr(r[0],r[1])},"d3Attrs"),D3e=o(function(t,e,r){let n=new Map;return r?(n.set("width","100%"),n.set("style",`max-width: ${e}px;`)):(n.set("height",t),n.set("width",e)),n},"calculateSvgSizeAttrs"),Zr=o(function(t,e,r,n){let i=D3e(e,r,n);L3e(t,i)},"configureSvgSize"),_o=o(function(t,e,r,n){let i=e.node().getBBox(),a=i.width,s=i.height;Y.info(`SVG bounds: ${a}x${s}`,i);let l=0,u=0;Y.info(`Graph bounds: ${l}x${u}`,t),l=a+r*2,u=s+r*2,Y.info(`Calculated bounds: ${l}x${u}`),Zr(e,u,l,n);let h=`${i.x-r} ${i.y-r} ${i.width+2*r} ${i.height+2*r}`;e.attr("viewBox",h)},"setupGraphViewbox")});var k4,N3e,B$,F$,QC=M(()=>{"use strict";ht();k4={},N3e=o((t,e,r)=>{let n="";return t in k4&&k4[t]?n=k4[t](r):Y.warn(`No theme found for ${t}`),` & { +?)[ \r ]*`,v7="[\u0300-\u036F]",f4e=new RegExp(v7+"+$"),d4e="("+p$+"+)|"+(h4e+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(v7+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(v7+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+u4e)+("|"+c4e+")"),a3=class{static{o(this,"Lexer")}constructor(e,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=r,this.tokenRegex=new RegExp(d4e,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,r){this.catcodes[e]=r}lex(){var e=this.input,r=this.tokenRegex.lastIndex;if(r===e.length)return new wo("EOF",new Us(this,r,r));var n=this.tokenRegex.exec(e);if(n===null||n.index!==r)throw new gt("Unexpected character: '"+e[r]+"'",new wo(e[r],new Us(this,r,r+1)));var i=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[i]===14){var a=e.indexOf(` +`,this.tokenRegex.lastIndex);return a===-1?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=a+1,this.lex()}return new wo(i,new Us(this,r,this.tokenRegex.lastIndex))}},x7=class{static{o(this,"Namespace")}constructor(e,r){e===void 0&&(e={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new gt("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var r in e)e.hasOwnProperty(r)&&(e[r]==null?delete this.current[r]:this.current[r]=e[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,r,n){if(n===void 0&&(n=!1),n){for(var i=0;i0&&(this.undefStack[this.undefStack.length-1][e]=r)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(e)&&(a[e]=this.current[e])}r==null?delete this.current[e]:this.current[e]=r}},p4e=n$;fe("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});fe("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});fe("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});fe("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});fe("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var r=t.future();return e[0].length===1&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});fe("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");fe("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});wG={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};fe("\\char",function(t){var e=t.popToken(),r,n="";if(e.text==="'")r=8,e=t.popToken();else if(e.text==='"')r=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")n=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new gt("\\char` missing argument");n=e.text.charCodeAt(0)}else r=10;if(r){if(n=wG[e.text],n==null||n>=r)throw new gt("Invalid base-"+r+" digit "+e.text);for(var i;(i=wG[t.future().text])!=null&&i{var n=t.consumeArg().tokens;if(n.length!==1)throw new gt("\\newcommand's first argument must be a macro name");var i=n[0].text,a=t.isDefined(i);if(a&&!e)throw new gt("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!a&&!r)throw new gt("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var s=0;if(n=t.consumeArg().tokens,n.length===1&&n[0].text==="["){for(var l="",u=t.expandNextToken();u.text!=="]"&&u.text!=="EOF";)l+=u.text,u=t.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new gt("Invalid number of arguments: "+l);s=parseInt(l),n=t.consumeArg().tokens}return t.macros.set(i,{tokens:n,numArgs:s}),""},"newcommand");fe("\\newcommand",t=>O7(t,!1,!0));fe("\\renewcommand",t=>O7(t,!0,!1));fe("\\providecommand",t=>O7(t,!0,!0));fe("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(r=>r.text).join("")),""});fe("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(r=>r.text).join("")),""});fe("\\show",t=>{var e=t.popToken(),r=e.text;return console.log(e,t.macros.get(r),oh[r],An.math[r],An.text[r]),""});fe("\\bgroup","{");fe("\\egroup","}");fe("~","\\nobreakspace");fe("\\lq","`");fe("\\rq","'");fe("\\aa","\\r a");fe("\\AA","\\r A");fe("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xA9}");fe("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");fe("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");fe("\u212C","\\mathscr{B}");fe("\u2130","\\mathscr{E}");fe("\u2131","\\mathscr{F}");fe("\u210B","\\mathscr{H}");fe("\u2110","\\mathscr{I}");fe("\u2112","\\mathscr{L}");fe("\u2133","\\mathscr{M}");fe("\u211B","\\mathscr{R}");fe("\u212D","\\mathfrak{C}");fe("\u210C","\\mathfrak{H}");fe("\u2128","\\mathfrak{Z}");fe("\\Bbbk","\\Bbb{k}");fe("\xB7","\\cdotp");fe("\\llap","\\mathllap{\\textrm{#1}}");fe("\\rlap","\\mathrlap{\\textrm{#1}}");fe("\\clap","\\mathclap{\\textrm{#1}}");fe("\\mathstrut","\\vphantom{(}");fe("\\underbar","\\underline{\\text{#1}}");fe("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');fe("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");fe("\\ne","\\neq");fe("\u2260","\\neq");fe("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");fe("\u2209","\\notin");fe("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");fe("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");fe("\u225A","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");fe("\u225B","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");fe("\u225D","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");fe("\u225E","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");fe("\u225F","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");fe("\u27C2","\\perp");fe("\u203C","\\mathclose{!\\mkern-0.8mu!}");fe("\u220C","\\notni");fe("\u231C","\\ulcorner");fe("\u231D","\\urcorner");fe("\u231E","\\llcorner");fe("\u231F","\\lrcorner");fe("\xA9","\\copyright");fe("\xAE","\\textregistered");fe("\uFE0F","\\textregistered");fe("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');fe("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');fe("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');fe("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');fe("\\vdots","\\mathord{\\varvdots\\rule{0pt}{15pt}}");fe("\u22EE","\\vdots");fe("\\varGamma","\\mathit{\\Gamma}");fe("\\varDelta","\\mathit{\\Delta}");fe("\\varTheta","\\mathit{\\Theta}");fe("\\varLambda","\\mathit{\\Lambda}");fe("\\varXi","\\mathit{\\Xi}");fe("\\varPi","\\mathit{\\Pi}");fe("\\varSigma","\\mathit{\\Sigma}");fe("\\varUpsilon","\\mathit{\\Upsilon}");fe("\\varPhi","\\mathit{\\Phi}");fe("\\varPsi","\\mathit{\\Psi}");fe("\\varOmega","\\mathit{\\Omega}");fe("\\substack","\\begin{subarray}{c}#1\\end{subarray}");fe("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");fe("\\boxed","\\fbox{$\\displaystyle{#1}$}");fe("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");fe("\\implies","\\DOTSB\\;\\Longrightarrow\\;");fe("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");TG={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};fe("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in TG?e=TG[r]:(r.slice(0,4)==="\\not"||r in An.math&&Jt.contains(["bin","rel"],An.math[r].group))&&(e="\\dotsb"),e});P7={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};fe("\\dotso",function(t){var e=t.future().text;return e in P7?"\\ldots\\,":"\\ldots"});fe("\\dotsc",function(t){var e=t.future().text;return e in P7&&e!==","?"\\ldots\\,":"\\ldots"});fe("\\cdots",function(t){var e=t.future().text;return e in P7?"\\@cdots\\,":"\\@cdots"});fe("\\dotsb","\\cdots");fe("\\dotsm","\\cdots");fe("\\dotsi","\\!\\cdots");fe("\\dotsx","\\ldots\\,");fe("\\DOTSI","\\relax");fe("\\DOTSB","\\relax");fe("\\DOTSX","\\relax");fe("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");fe("\\,","\\tmspace+{3mu}{.1667em}");fe("\\thinspace","\\,");fe("\\>","\\mskip{4mu}");fe("\\:","\\tmspace+{4mu}{.2222em}");fe("\\medspace","\\:");fe("\\;","\\tmspace+{5mu}{.2777em}");fe("\\thickspace","\\;");fe("\\!","\\tmspace-{3mu}{.1667em}");fe("\\negthinspace","\\!");fe("\\negmedspace","\\tmspace-{4mu}{.2222em}");fe("\\negthickspace","\\tmspace-{5mu}{.277em}");fe("\\enspace","\\kern.5em ");fe("\\enskip","\\hskip.5em\\relax");fe("\\quad","\\hskip1em\\relax");fe("\\qquad","\\hskip2em\\relax");fe("\\tag","\\@ifstar\\tag@literal\\tag@paren");fe("\\tag@paren","\\tag@literal{({#1})}");fe("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new gt("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});fe("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");fe("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");fe("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");fe("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");fe("\\newline","\\\\\\relax");fe("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");m$=kt(Xl["Main-Regular"][84][1]-.7*Xl["Main-Regular"][65][1]);fe("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+m$+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");fe("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+m$+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");fe("\\hspace","\\@ifstar\\@hspacer\\@hspace");fe("\\@hspace","\\hskip #1\\relax");fe("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");fe("\\ordinarycolon",":");fe("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");fe("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');fe("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');fe("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');fe("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');fe("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');fe("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');fe("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');fe("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');fe("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');fe("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');fe("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');fe("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');fe("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');fe("\u2237","\\dblcolon");fe("\u2239","\\eqcolon");fe("\u2254","\\coloneqq");fe("\u2255","\\eqqcolon");fe("\u2A74","\\Coloneqq");fe("\\ratio","\\vcentcolon");fe("\\coloncolon","\\dblcolon");fe("\\colonequals","\\coloneqq");fe("\\coloncolonequals","\\Coloneqq");fe("\\equalscolon","\\eqqcolon");fe("\\equalscoloncolon","\\Eqqcolon");fe("\\colonminus","\\coloneq");fe("\\coloncolonminus","\\Coloneq");fe("\\minuscolon","\\eqcolon");fe("\\minuscoloncolon","\\Eqcolon");fe("\\coloncolonapprox","\\Colonapprox");fe("\\coloncolonsim","\\Colonsim");fe("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");fe("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");fe("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");fe("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");fe("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");fe("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");fe("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");fe("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");fe("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");fe("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");fe("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");fe("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");fe("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");fe("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}");fe("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}");fe("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}");fe("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}");fe("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}");fe("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}");fe("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}");fe("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}");fe("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}");fe("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}");fe("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228A}");fe("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2ACB}");fe("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228B}");fe("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2ACC}");fe("\\imath","\\html@mathml{\\@imath}{\u0131}");fe("\\jmath","\\html@mathml{\\@jmath}{\u0237}");fe("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");fe("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");fe("\u27E6","\\llbracket");fe("\u27E7","\\rrbracket");fe("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");fe("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");fe("\u2983","\\lBrace");fe("\u2984","\\rBrace");fe("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");fe("\u29B5","\\minuso");fe("\\darr","\\downarrow");fe("\\dArr","\\Downarrow");fe("\\Darr","\\Downarrow");fe("\\lang","\\langle");fe("\\rang","\\rangle");fe("\\uarr","\\uparrow");fe("\\uArr","\\Uparrow");fe("\\Uarr","\\Uparrow");fe("\\N","\\mathbb{N}");fe("\\R","\\mathbb{R}");fe("\\Z","\\mathbb{Z}");fe("\\alef","\\aleph");fe("\\alefsym","\\aleph");fe("\\Alpha","\\mathrm{A}");fe("\\Beta","\\mathrm{B}");fe("\\bull","\\bullet");fe("\\Chi","\\mathrm{X}");fe("\\clubs","\\clubsuit");fe("\\cnums","\\mathbb{C}");fe("\\Complex","\\mathbb{C}");fe("\\Dagger","\\ddagger");fe("\\diamonds","\\diamondsuit");fe("\\empty","\\emptyset");fe("\\Epsilon","\\mathrm{E}");fe("\\Eta","\\mathrm{H}");fe("\\exist","\\exists");fe("\\harr","\\leftrightarrow");fe("\\hArr","\\Leftrightarrow");fe("\\Harr","\\Leftrightarrow");fe("\\hearts","\\heartsuit");fe("\\image","\\Im");fe("\\infin","\\infty");fe("\\Iota","\\mathrm{I}");fe("\\isin","\\in");fe("\\Kappa","\\mathrm{K}");fe("\\larr","\\leftarrow");fe("\\lArr","\\Leftarrow");fe("\\Larr","\\Leftarrow");fe("\\lrarr","\\leftrightarrow");fe("\\lrArr","\\Leftrightarrow");fe("\\Lrarr","\\Leftrightarrow");fe("\\Mu","\\mathrm{M}");fe("\\natnums","\\mathbb{N}");fe("\\Nu","\\mathrm{N}");fe("\\Omicron","\\mathrm{O}");fe("\\plusmn","\\pm");fe("\\rarr","\\rightarrow");fe("\\rArr","\\Rightarrow");fe("\\Rarr","\\Rightarrow");fe("\\real","\\Re");fe("\\reals","\\mathbb{R}");fe("\\Reals","\\mathbb{R}");fe("\\Rho","\\mathrm{P}");fe("\\sdot","\\cdot");fe("\\sect","\\S");fe("\\spades","\\spadesuit");fe("\\sub","\\subset");fe("\\sube","\\subseteq");fe("\\supe","\\supseteq");fe("\\Tau","\\mathrm{T}");fe("\\thetasym","\\vartheta");fe("\\weierp","\\wp");fe("\\Zeta","\\mathrm{Z}");fe("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");fe("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");fe("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");fe("\\bra","\\mathinner{\\langle{#1}|}");fe("\\ket","\\mathinner{|{#1}\\rangle}");fe("\\braket","\\mathinner{\\langle{#1}\\rangle}");fe("\\Bra","\\left\\langle#1\\right|");fe("\\Ket","\\left|#1\\right\\rangle");g$=o(t=>e=>{var r=e.consumeArg().tokens,n=e.consumeArg().tokens,i=e.consumeArg().tokens,a=e.consumeArg().tokens,s=e.macros.get("|"),l=e.macros.get("\\|");e.macros.beginGroup();var u=o(d=>p=>{t&&(p.macros.set("|",s),i.length&&p.macros.set("\\|",l));var m=d;if(!d&&i.length){var g=p.future();g.text==="|"&&(p.popToken(),m=!0)}return{tokens:m?i:n,numArgs:0}},"midMacro");e.macros.set("|",u(!1)),i.length&&e.macros.set("\\|",u(!0));var h=e.consumeArg().tokens,f=e.expandTokens([...a,...h,...r]);return e.macros.endGroup(),{tokens:f.reverse(),numArgs:0}},"braketHelper");fe("\\bra@ket",g$(!1));fe("\\bra@set",g$(!0));fe("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");fe("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");fe("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");fe("\\angln","{\\angl n}");fe("\\blue","\\textcolor{##6495ed}{#1}");fe("\\orange","\\textcolor{##ffa500}{#1}");fe("\\pink","\\textcolor{##ff00af}{#1}");fe("\\red","\\textcolor{##df0030}{#1}");fe("\\green","\\textcolor{##28ae7b}{#1}");fe("\\gray","\\textcolor{gray}{#1}");fe("\\purple","\\textcolor{##9d38bd}{#1}");fe("\\blueA","\\textcolor{##ccfaff}{#1}");fe("\\blueB","\\textcolor{##80f6ff}{#1}");fe("\\blueC","\\textcolor{##63d9ea}{#1}");fe("\\blueD","\\textcolor{##11accd}{#1}");fe("\\blueE","\\textcolor{##0c7f99}{#1}");fe("\\tealA","\\textcolor{##94fff5}{#1}");fe("\\tealB","\\textcolor{##26edd5}{#1}");fe("\\tealC","\\textcolor{##01d1c1}{#1}");fe("\\tealD","\\textcolor{##01a995}{#1}");fe("\\tealE","\\textcolor{##208170}{#1}");fe("\\greenA","\\textcolor{##b6ffb0}{#1}");fe("\\greenB","\\textcolor{##8af281}{#1}");fe("\\greenC","\\textcolor{##74cf70}{#1}");fe("\\greenD","\\textcolor{##1fab54}{#1}");fe("\\greenE","\\textcolor{##0d923f}{#1}");fe("\\goldA","\\textcolor{##ffd0a9}{#1}");fe("\\goldB","\\textcolor{##ffbb71}{#1}");fe("\\goldC","\\textcolor{##ff9c39}{#1}");fe("\\goldD","\\textcolor{##e07d10}{#1}");fe("\\goldE","\\textcolor{##a75a05}{#1}");fe("\\redA","\\textcolor{##fca9a9}{#1}");fe("\\redB","\\textcolor{##ff8482}{#1}");fe("\\redC","\\textcolor{##f9685d}{#1}");fe("\\redD","\\textcolor{##e84d39}{#1}");fe("\\redE","\\textcolor{##bc2612}{#1}");fe("\\maroonA","\\textcolor{##ffbde0}{#1}");fe("\\maroonB","\\textcolor{##ff92c6}{#1}");fe("\\maroonC","\\textcolor{##ed5fa6}{#1}");fe("\\maroonD","\\textcolor{##ca337c}{#1}");fe("\\maroonE","\\textcolor{##9e034e}{#1}");fe("\\purpleA","\\textcolor{##ddd7ff}{#1}");fe("\\purpleB","\\textcolor{##c6b9fc}{#1}");fe("\\purpleC","\\textcolor{##aa87ff}{#1}");fe("\\purpleD","\\textcolor{##7854ab}{#1}");fe("\\purpleE","\\textcolor{##543b78}{#1}");fe("\\mintA","\\textcolor{##f5f9e8}{#1}");fe("\\mintB","\\textcolor{##edf2df}{#1}");fe("\\mintC","\\textcolor{##e0e5cc}{#1}");fe("\\grayA","\\textcolor{##f6f7f7}{#1}");fe("\\grayB","\\textcolor{##f0f1f2}{#1}");fe("\\grayC","\\textcolor{##e3e5e6}{#1}");fe("\\grayD","\\textcolor{##d6d8da}{#1}");fe("\\grayE","\\textcolor{##babec2}{#1}");fe("\\grayF","\\textcolor{##888d93}{#1}");fe("\\grayG","\\textcolor{##626569}{#1}");fe("\\grayH","\\textcolor{##3b3e40}{#1}");fe("\\grayI","\\textcolor{##21242c}{#1}");fe("\\kaBlue","\\textcolor{##314453}{#1}");fe("\\kaGreen","\\textcolor{##71B307}{#1}");y$={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},b7=class{static{o(this,"MacroExpander")}constructor(e,r,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=r,this.expansionCount=0,this.feed(e),this.macros=new x7(p4e,r.macros),this.mode=n,this.stack=[]}feed(e){this.lexer=new a3(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var r,n,i;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:i,end:n}=this.consumeArg(["]"])}else({tokens:i,start:r,end:n}=this.consumeArg());return this.pushToken(new wo("EOF",n.loc)),this.pushTokens(i),r.range(n,"")}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var r=[],n=e&&e.length>0;n||this.consumeSpaces();var i=this.future(),a,s=0,l=0;do{if(a=this.popToken(),r.push(a),a.text==="{")++s;else if(a.text==="}"){if(--s,s===-1)throw new gt("Extra }",a)}else if(a.text==="EOF")throw new gt("Unexpected end of input in a macro argument, expected '"+(e&&n?e[l]:"}")+"'",a);if(e&&n)if((s===0||s===1&&e[l]==="{")&&a.text===e[l]){if(++l,l===e.length){r.splice(-l,l);break}}else l=0}while(s!==0||n);return i.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:i,end:a}}consumeArgs(e,r){if(r){if(r.length!==e+1)throw new gt("The length of delimiters doesn't match the number of args!");for(var n=r[0],i=0;ithis.settings.maxExpand)throw new gt("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var r=this.popToken(),n=r.text,i=r.noexpand?null:this._getExpansion(n);if(i==null||e&&i.unexpandable){if(e&&i==null&&n[0]==="\\"&&!this.isDefined(n))throw new gt("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var a=i.tokens,s=this.consumeArgs(i.numArgs,i.delimiters);if(i.numArgs){a=a.slice();for(var l=a.length-1;l>=0;--l){var u=a[l];if(u.text==="#"){if(l===0)throw new gt("Incomplete placeholder at end of macro body",u);if(u=a[--l],u.text==="#")a.splice(l+1,1);else if(/^[1-9]$/.test(u.text))a.splice(l,2,...s[+u.text-1]);else throw new gt("Not a valid argument number",u)}}}return this.pushTokens(a),a.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new wo(e)]):void 0}expandTokens(e){var r=[],n=this.stack.length;for(this.pushTokens(e);this.stack.length>n;)if(this.expandOnce(!0)===!1){var i=this.stack.pop();i.treatAsRelax&&(i.noexpand=!1,i.treatAsRelax=!1),r.push(i)}return this.countExpansion(r.length),r}expandMacroAsText(e){var r=this.expandMacro(e);return r&&r.map(n=>n.text).join("")}_getExpansion(e){var r=this.macros.get(e);if(r==null)return r;if(e.length===1){var n=this.lexer.catcodes[e];if(n!=null&&n!==13)return}var i=typeof r=="function"?r(this):r;if(typeof i=="string"){var a=0;if(i.indexOf("#")!==-1)for(var s=i.replace(/##/g,"");s.indexOf("#"+(a+1))!==-1;)++a;for(var l=new a3(i,this.settings),u=[],h=l.lex();h.text!=="EOF";)u.push(h),h=l.lex();u.reverse();var f={tokens:u,numArgs:a};return f}return i}isDefined(e){return this.macros.has(e)||oh.hasOwnProperty(e)||An.math.hasOwnProperty(e)||An.text.hasOwnProperty(e)||y$.hasOwnProperty(e)}isExpandable(e){var r=this.macros.get(e);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:oh.hasOwnProperty(e)&&!oh[e].primitive}},kG=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,K4=Object.freeze({"\u208A":"+","\u208B":"-","\u208C":"=","\u208D":"(","\u208E":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1D62":"i","\u2C7C":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209A":"p","\u1D63":"r","\u209B":"s","\u209C":"t","\u1D64":"u","\u1D65":"v","\u2093":"x","\u1D66":"\u03B2","\u1D67":"\u03B3","\u1D68":"\u03C1","\u1D69":"\u03D5","\u1D6A":"\u03C7","\u207A":"+","\u207B":"-","\u207C":"=","\u207D":"(","\u207E":")","\u2070":"0","\xB9":"1","\xB2":"2","\xB3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1D2C":"A","\u1D2E":"B","\u1D30":"D","\u1D31":"E","\u1D33":"G","\u1D34":"H","\u1D35":"I","\u1D36":"J","\u1D37":"K","\u1D38":"L","\u1D39":"M","\u1D3A":"N","\u1D3C":"O","\u1D3E":"P","\u1D3F":"R","\u1D40":"T","\u1D41":"U","\u2C7D":"V","\u1D42":"W","\u1D43":"a","\u1D47":"b","\u1D9C":"c","\u1D48":"d","\u1D49":"e","\u1DA0":"f","\u1D4D":"g",\u02B0:"h","\u2071":"i",\u02B2:"j","\u1D4F":"k",\u02E1:"l","\u1D50":"m",\u207F:"n","\u1D52":"o","\u1D56":"p",\u02B3:"r",\u02E2:"s","\u1D57":"t","\u1D58":"u","\u1D5B":"v",\u02B7:"w",\u02E3:"x",\u02B8:"y","\u1DBB":"z","\u1D5D":"\u03B2","\u1D5E":"\u03B3","\u1D5F":"\u03B4","\u1D60":"\u03D5","\u1D61":"\u03C7","\u1DBF":"\u03B8"}),l7={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030C":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030A":{text:"\\r",math:"\\mathring"},"\u030B":{text:"\\H"},"\u0327":{text:"\\c"}},EG={\u00E1:"a\u0301",\u00E0:"a\u0300",\u00E4:"a\u0308",\u01DF:"a\u0308\u0304",\u00E3:"a\u0303",\u0101:"a\u0304",\u0103:"a\u0306",\u1EAF:"a\u0306\u0301",\u1EB1:"a\u0306\u0300",\u1EB5:"a\u0306\u0303",\u01CE:"a\u030C",\u00E2:"a\u0302",\u1EA5:"a\u0302\u0301",\u1EA7:"a\u0302\u0300",\u1EAB:"a\u0302\u0303",\u0227:"a\u0307",\u01E1:"a\u0307\u0304",\u00E5:"a\u030A",\u01FB:"a\u030A\u0301",\u1E03:"b\u0307",\u0107:"c\u0301",\u1E09:"c\u0327\u0301",\u010D:"c\u030C",\u0109:"c\u0302",\u010B:"c\u0307",\u00E7:"c\u0327",\u010F:"d\u030C",\u1E0B:"d\u0307",\u1E11:"d\u0327",\u00E9:"e\u0301",\u00E8:"e\u0300",\u00EB:"e\u0308",\u1EBD:"e\u0303",\u0113:"e\u0304",\u1E17:"e\u0304\u0301",\u1E15:"e\u0304\u0300",\u0115:"e\u0306",\u1E1D:"e\u0327\u0306",\u011B:"e\u030C",\u00EA:"e\u0302",\u1EBF:"e\u0302\u0301",\u1EC1:"e\u0302\u0300",\u1EC5:"e\u0302\u0303",\u0117:"e\u0307",\u0229:"e\u0327",\u1E1F:"f\u0307",\u01F5:"g\u0301",\u1E21:"g\u0304",\u011F:"g\u0306",\u01E7:"g\u030C",\u011D:"g\u0302",\u0121:"g\u0307",\u0123:"g\u0327",\u1E27:"h\u0308",\u021F:"h\u030C",\u0125:"h\u0302",\u1E23:"h\u0307",\u1E29:"h\u0327",\u00ED:"i\u0301",\u00EC:"i\u0300",\u00EF:"i\u0308",\u1E2F:"i\u0308\u0301",\u0129:"i\u0303",\u012B:"i\u0304",\u012D:"i\u0306",\u01D0:"i\u030C",\u00EE:"i\u0302",\u01F0:"j\u030C",\u0135:"j\u0302",\u1E31:"k\u0301",\u01E9:"k\u030C",\u0137:"k\u0327",\u013A:"l\u0301",\u013E:"l\u030C",\u013C:"l\u0327",\u1E3F:"m\u0301",\u1E41:"m\u0307",\u0144:"n\u0301",\u01F9:"n\u0300",\u00F1:"n\u0303",\u0148:"n\u030C",\u1E45:"n\u0307",\u0146:"n\u0327",\u00F3:"o\u0301",\u00F2:"o\u0300",\u00F6:"o\u0308",\u022B:"o\u0308\u0304",\u00F5:"o\u0303",\u1E4D:"o\u0303\u0301",\u1E4F:"o\u0303\u0308",\u022D:"o\u0303\u0304",\u014D:"o\u0304",\u1E53:"o\u0304\u0301",\u1E51:"o\u0304\u0300",\u014F:"o\u0306",\u01D2:"o\u030C",\u00F4:"o\u0302",\u1ED1:"o\u0302\u0301",\u1ED3:"o\u0302\u0300",\u1ED7:"o\u0302\u0303",\u022F:"o\u0307",\u0231:"o\u0307\u0304",\u0151:"o\u030B",\u1E55:"p\u0301",\u1E57:"p\u0307",\u0155:"r\u0301",\u0159:"r\u030C",\u1E59:"r\u0307",\u0157:"r\u0327",\u015B:"s\u0301",\u1E65:"s\u0301\u0307",\u0161:"s\u030C",\u1E67:"s\u030C\u0307",\u015D:"s\u0302",\u1E61:"s\u0307",\u015F:"s\u0327",\u1E97:"t\u0308",\u0165:"t\u030C",\u1E6B:"t\u0307",\u0163:"t\u0327",\u00FA:"u\u0301",\u00F9:"u\u0300",\u00FC:"u\u0308",\u01D8:"u\u0308\u0301",\u01DC:"u\u0308\u0300",\u01D6:"u\u0308\u0304",\u01DA:"u\u0308\u030C",\u0169:"u\u0303",\u1E79:"u\u0303\u0301",\u016B:"u\u0304",\u1E7B:"u\u0304\u0308",\u016D:"u\u0306",\u01D4:"u\u030C",\u00FB:"u\u0302",\u016F:"u\u030A",\u0171:"u\u030B",\u1E7D:"v\u0303",\u1E83:"w\u0301",\u1E81:"w\u0300",\u1E85:"w\u0308",\u0175:"w\u0302",\u1E87:"w\u0307",\u1E98:"w\u030A",\u1E8D:"x\u0308",\u1E8B:"x\u0307",\u00FD:"y\u0301",\u1EF3:"y\u0300",\u00FF:"y\u0308",\u1EF9:"y\u0303",\u0233:"y\u0304",\u0177:"y\u0302",\u1E8F:"y\u0307",\u1E99:"y\u030A",\u017A:"z\u0301",\u017E:"z\u030C",\u1E91:"z\u0302",\u017C:"z\u0307",\u00C1:"A\u0301",\u00C0:"A\u0300",\u00C4:"A\u0308",\u01DE:"A\u0308\u0304",\u00C3:"A\u0303",\u0100:"A\u0304",\u0102:"A\u0306",\u1EAE:"A\u0306\u0301",\u1EB0:"A\u0306\u0300",\u1EB4:"A\u0306\u0303",\u01CD:"A\u030C",\u00C2:"A\u0302",\u1EA4:"A\u0302\u0301",\u1EA6:"A\u0302\u0300",\u1EAA:"A\u0302\u0303",\u0226:"A\u0307",\u01E0:"A\u0307\u0304",\u00C5:"A\u030A",\u01FA:"A\u030A\u0301",\u1E02:"B\u0307",\u0106:"C\u0301",\u1E08:"C\u0327\u0301",\u010C:"C\u030C",\u0108:"C\u0302",\u010A:"C\u0307",\u00C7:"C\u0327",\u010E:"D\u030C",\u1E0A:"D\u0307",\u1E10:"D\u0327",\u00C9:"E\u0301",\u00C8:"E\u0300",\u00CB:"E\u0308",\u1EBC:"E\u0303",\u0112:"E\u0304",\u1E16:"E\u0304\u0301",\u1E14:"E\u0304\u0300",\u0114:"E\u0306",\u1E1C:"E\u0327\u0306",\u011A:"E\u030C",\u00CA:"E\u0302",\u1EBE:"E\u0302\u0301",\u1EC0:"E\u0302\u0300",\u1EC4:"E\u0302\u0303",\u0116:"E\u0307",\u0228:"E\u0327",\u1E1E:"F\u0307",\u01F4:"G\u0301",\u1E20:"G\u0304",\u011E:"G\u0306",\u01E6:"G\u030C",\u011C:"G\u0302",\u0120:"G\u0307",\u0122:"G\u0327",\u1E26:"H\u0308",\u021E:"H\u030C",\u0124:"H\u0302",\u1E22:"H\u0307",\u1E28:"H\u0327",\u00CD:"I\u0301",\u00CC:"I\u0300",\u00CF:"I\u0308",\u1E2E:"I\u0308\u0301",\u0128:"I\u0303",\u012A:"I\u0304",\u012C:"I\u0306",\u01CF:"I\u030C",\u00CE:"I\u0302",\u0130:"I\u0307",\u0134:"J\u0302",\u1E30:"K\u0301",\u01E8:"K\u030C",\u0136:"K\u0327",\u0139:"L\u0301",\u013D:"L\u030C",\u013B:"L\u0327",\u1E3E:"M\u0301",\u1E40:"M\u0307",\u0143:"N\u0301",\u01F8:"N\u0300",\u00D1:"N\u0303",\u0147:"N\u030C",\u1E44:"N\u0307",\u0145:"N\u0327",\u00D3:"O\u0301",\u00D2:"O\u0300",\u00D6:"O\u0308",\u022A:"O\u0308\u0304",\u00D5:"O\u0303",\u1E4C:"O\u0303\u0301",\u1E4E:"O\u0303\u0308",\u022C:"O\u0303\u0304",\u014C:"O\u0304",\u1E52:"O\u0304\u0301",\u1E50:"O\u0304\u0300",\u014E:"O\u0306",\u01D1:"O\u030C",\u00D4:"O\u0302",\u1ED0:"O\u0302\u0301",\u1ED2:"O\u0302\u0300",\u1ED6:"O\u0302\u0303",\u022E:"O\u0307",\u0230:"O\u0307\u0304",\u0150:"O\u030B",\u1E54:"P\u0301",\u1E56:"P\u0307",\u0154:"R\u0301",\u0158:"R\u030C",\u1E58:"R\u0307",\u0156:"R\u0327",\u015A:"S\u0301",\u1E64:"S\u0301\u0307",\u0160:"S\u030C",\u1E66:"S\u030C\u0307",\u015C:"S\u0302",\u1E60:"S\u0307",\u015E:"S\u0327",\u0164:"T\u030C",\u1E6A:"T\u0307",\u0162:"T\u0327",\u00DA:"U\u0301",\u00D9:"U\u0300",\u00DC:"U\u0308",\u01D7:"U\u0308\u0301",\u01DB:"U\u0308\u0300",\u01D5:"U\u0308\u0304",\u01D9:"U\u0308\u030C",\u0168:"U\u0303",\u1E78:"U\u0303\u0301",\u016A:"U\u0304",\u1E7A:"U\u0304\u0308",\u016C:"U\u0306",\u01D3:"U\u030C",\u00DB:"U\u0302",\u016E:"U\u030A",\u0170:"U\u030B",\u1E7C:"V\u0303",\u1E82:"W\u0301",\u1E80:"W\u0300",\u1E84:"W\u0308",\u0174:"W\u0302",\u1E86:"W\u0307",\u1E8C:"X\u0308",\u1E8A:"X\u0307",\u00DD:"Y\u0301",\u1EF2:"Y\u0300",\u0178:"Y\u0308",\u1EF8:"Y\u0303",\u0232:"Y\u0304",\u0176:"Y\u0302",\u1E8E:"Y\u0307",\u0179:"Z\u0301",\u017D:"Z\u030C",\u1E90:"Z\u0302",\u017B:"Z\u0307",\u03AC:"\u03B1\u0301",\u1F70:"\u03B1\u0300",\u1FB1:"\u03B1\u0304",\u1FB0:"\u03B1\u0306",\u03AD:"\u03B5\u0301",\u1F72:"\u03B5\u0300",\u03AE:"\u03B7\u0301",\u1F74:"\u03B7\u0300",\u03AF:"\u03B9\u0301",\u1F76:"\u03B9\u0300",\u03CA:"\u03B9\u0308",\u0390:"\u03B9\u0308\u0301",\u1FD2:"\u03B9\u0308\u0300",\u1FD1:"\u03B9\u0304",\u1FD0:"\u03B9\u0306",\u03CC:"\u03BF\u0301",\u1F78:"\u03BF\u0300",\u03CD:"\u03C5\u0301",\u1F7A:"\u03C5\u0300",\u03CB:"\u03C5\u0308",\u03B0:"\u03C5\u0308\u0301",\u1FE2:"\u03C5\u0308\u0300",\u1FE1:"\u03C5\u0304",\u1FE0:"\u03C5\u0306",\u03CE:"\u03C9\u0301",\u1F7C:"\u03C9\u0300",\u038E:"\u03A5\u0301",\u1FEA:"\u03A5\u0300",\u03AB:"\u03A5\u0308",\u1FE9:"\u03A5\u0304",\u1FE8:"\u03A5\u0306",\u038F:"\u03A9\u0301",\u1FFA:"\u03A9\u0300"},s3=class t{static{o(this,"Parser")}constructor(e,r){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new b7(e,r,this.mode),this.settings=r,this.leftrightDepth=0}expect(e,r){if(r===void 0&&(r=!0),this.fetch().text!==e)throw new gt("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var r=this.nextToken;this.consume(),this.gullet.pushToken(new wo("}")),this.gullet.pushTokens(e);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(e,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var i=this.fetch();if(t.endOfExpression.indexOf(i.text)!==-1||r&&i.text===r||e&&oh[i.text]&&oh[i.text].infix)break;var a=this.parseAtom(r);if(a){if(a.type==="internal")continue}else break;n.push(a)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(e){for(var r=-1,n,i=0;i=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+r[0]+'" used in math mode',e);var l=An[this.mode][r].group,u=Us.range(e),h;if(abe.hasOwnProperty(l)){var f=l;h={type:"atom",mode:this.mode,family:f,loc:u,text:r}}else h={type:l,mode:this.mode,loc:u,text:r};s=h}else if(r.charCodeAt(0)>=128)this.settings.strict&&(CG(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),e)),s={type:"textord",mode:"text",loc:Us.range(e),text:r};else return null;if(this.consume(),a)for(var d=0;d{e instanceof Element&&e.tagName==="A"&&e.hasAttribute("target")&&e.setAttribute(t,e.getAttribute("target")??"")}),ah.addHook("afterSanitizeAttributes",e=>{e instanceof Element&&e.tagName==="A"&&e.hasAttribute(t)&&(e.setAttribute("target",e.getAttribute(t)??""),e.removeAttribute(t),e.getAttribute("target")==="_blank"&&e.setAttribute("rel","noopener"))})}var ed,x4e,b4e,E$,T$,Tr,T4e,k4e,E4e,S4e,S$,C4e,ur,A4e,_4e,Jl,z7,D4e,L4e,k$,G7,di,td,hh,Ze,gr=M(()=>{"use strict";KC();ed=//gi,x4e=o(t=>t?S$(t).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),b4e=(()=>{let t=!1;return()=>{t||(w4e(),t=!0)}})();o(w4e,"setupDompurifyHooks");E$=o(t=>(b4e(),ah.sanitize(t)),"removeScript"),T$=o((t,e)=>{if(e.flowchart?.htmlLabels!==!1){let r=e.securityLevel;r==="antiscript"||r==="strict"?t=E$(t):r!=="loose"&&(t=S$(t),t=t.replace(//g,">"),t=t.replace(/=/g,"="),t=S4e(t))}return t},"sanitizeMore"),Tr=o((t,e)=>t&&(e.dompurifyConfig?t=ah.sanitize(T$(t,e),e.dompurifyConfig).toString():t=ah.sanitize(T$(t,e),{FORBID_TAGS:["style"]}).toString(),t),"sanitizeText"),T4e=o((t,e)=>typeof t=="string"?Tr(t,e):t.flat().map(r=>Tr(r,e)),"sanitizeTextOrArray"),k4e=o(t=>ed.test(t),"hasBreaks"),E4e=o(t=>t.split(ed),"splitBreaks"),S4e=o(t=>t.replace(/#br#/g,"
"),"placeholderToBreak"),S$=o(t=>t.replace(ed,"#br#"),"breakToPlaceholder"),C4e=o(t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=e.replaceAll(/\(/g,"\\("),e=e.replaceAll(/\)/g,"\\)")),e},"getUrl"),ur=o(t=>!(t===!1||["false","null","0"].includes(String(t).trim().toLowerCase())),"evaluate"),A4e=o(function(...t){let e=t.filter(r=>!isNaN(r));return Math.max(...e)},"getMax"),_4e=o(function(...t){let e=t.filter(r=>!isNaN(r));return Math.min(...e)},"getMin"),Jl=o(function(t){let e=t.split(/(,)/),r=[];for(let n=0;n0&&n+1Math.max(0,t.split(e).length-1),"countOccurrence"),D4e=o((t,e)=>{let r=z7(t,"~"),n=z7(e,"~");return r===1&&n===1},"shouldCombineSets"),L4e=o(t=>{let e=z7(t,"~"),r=!1;if(e<=1)return t;e%2!==0&&t.startsWith("~")&&(t=t.substring(1),r=!0);let n=[...t],i=n.indexOf("~"),a=n.lastIndexOf("~");for(;i!==-1&&a!==-1&&i!==a;)n[i]="<",n[a]=">",i=n.indexOf("~"),a=n.lastIndexOf("~");return r&&n.unshift("~"),n.join("")},"processSet"),k$=o(()=>window.MathMLElement!==void 0,"isMathMLSupported"),G7=/\$\$(.*)\$\$/g,di=o(t=>(t.match(G7)?.length??0)>0,"hasKatex"),td=o(async(t,e)=>{t=await hh(t,e);let r=document.createElement("div");r.innerHTML=t,r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0",document.querySelector("body")?.insertAdjacentElement("beforeend",r);let i={width:r.clientWidth,height:r.clientHeight};return r.remove(),i},"calculateMathMLDimensions"),hh=o(async(t,e)=>{if(!di(t))return t;if(!(k$()||e.legacyMathML||e.forceLegacyMathML))return t.replace(G7,"MathML is unsupported in this environment.");let{default:r}=await Promise.resolve().then(()=>(w$(),b$)),n=e.forceLegacyMathML||!k$()&&e.legacyMathML?"htmlAndMathml":"mathml";return t.split(ed).map(i=>di(i)?`
${i}
`:`
${i}
`).join("").replace(G7,(i,a)=>r.renderToString(a,{throwOnError:!0,displayMode:!0,output:n}).replace(/\n/g," ").replace(//g,""))},"renderKatex"),Ze={getRows:x4e,sanitizeText:Tr,sanitizeTextOrArray:T4e,hasBreaks:k4e,splitBreaks:E4e,lineBreakRegex:ed,removeScript:E$,getUrl:C4e,evaluate:ur,getMax:A4e,getMin:_4e}});var R4e,N4e,vn,ko,Ti=M(()=>{"use strict";vt();R4e=o(function(t,e){for(let r of e)t.attr(r[0],r[1])},"d3Attrs"),N4e=o(function(t,e,r){let n=new Map;return r?(n.set("width","100%"),n.set("style",`max-width: ${e}px;`)):(n.set("height",t),n.set("width",e)),n},"calculateSvgSizeAttrs"),vn=o(function(t,e,r,n){let i=N4e(e,r,n);R4e(t,i)},"configureSvgSize"),ko=o(function(t,e,r,n){let i=e.node().getBBox(),a=i.width,s=i.height;Y.info(`SVG bounds: ${a}x${s}`,i);let l=0,u=0;Y.info(`Graph bounds: ${l}x${u}`,t),l=a+r*2,u=s+r*2,Y.info(`Calculated bounds: ${l}x${u}`),vn(e,u,l,n);let h=`${i.x-r} ${i.y-r} ${i.width+2*r} ${i.height+2*r}`;e.attr("viewBox",h)},"setupGraphViewbox")});var d3,M4e,C$,A$,$7=M(()=>{"use strict";vt();d3={},M4e=o((t,e,r)=>{let n="";return t in d3&&d3[t]?n=d3[t](r):Y.warn(`No theme found for ${t}`),` & { font-family: ${r.fontFamily}; font-size: ${r.fontSize}; fill: ${r.textColor} } - + @keyframes edge-animation-frame { + from { + stroke-dashoffset: 0; + } + } + @keyframes dash { + to { + stroke-dashoffset: 0; + } + } + & .edge-animation-slow { + stroke-dasharray: 9,5 !important; + stroke-dashoffset: 900; + animation: dash 50s linear infinite; + stroke-linecap: round; + } + & .edge-animation-fast { + stroke-dasharray: 9,5 !important; + stroke-dashoffset: 900; + animation: dash 20s linear infinite; + stroke-linecap: round; + } /* Classes common for multiple diagrams */ & .error-icon { @@ -325,57 +346,88 @@ l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, ${n} ${e} -`},"getStyles"),B$=o((t,e)=>{e!==void 0&&(k4[t]=e)},"addStylesForDiagram"),F$=N3e});var iy={};vr(iy,{clear:()=>_r,getAccDescription:()=>Fr,getAccTitle:()=>Pr,getDiagramTitle:()=>Jr,setAccDescription:()=>Br,setAccTitle:()=>Rr,setDiagramTitle:()=>ln});var ZC,JC,e7,t7,_r,Rr,Pr,Br,Fr,ln,Jr,ki=M(()=>{"use strict";fr();Ua();ZC="",JC="",e7="",t7=o(t=>Tr(t,Sr()),"sanitizeText"),_r=o(()=>{ZC="",e7="",JC=""},"clear"),Rr=o(t=>{ZC=t7(t).replace(/^\s+/g,"")},"setAccTitle"),Pr=o(()=>ZC,"getAccTitle"),Br=o(t=>{e7=t7(t).replace(/\n\s+/g,` -`)},"setAccDescription"),Fr=o(()=>e7,"getAccDescription"),ln=o(t=>{JC=t7(t)},"setDiagramTitle"),Jr=o(()=>JC,"getDiagramTitle")});var z$,R3e,de,n7,S4,i7,a7,M3e,E4,Qf,ay,r7,Vt=M(()=>{"use strict";$f();ht();Ua();fr();ni();QC();ki();z$=Y,R3e=M1,de=Sr,n7=Yb,S4=ih,i7=o(t=>Tr(t,de()),"sanitizeText"),a7=_o,M3e=o(()=>iy,"getCommonDb"),E4={},Qf=o((t,e,r)=>{E4[t]&&z$.warn(`Diagram with id ${t} already registered. Overwriting.`),E4[t]=e,r&&OS(t,r),B$(t,e.styles),e.injectUtils?.(z$,R3e,de,i7,a7,M3e(),()=>{})},"registerDiagram"),ay=o(t=>{if(t in E4)return E4[t];throw new r7(t)},"getDiagram"),r7=class extends Error{static{o(this,"DiagramNotFoundError")}constructor(e){super(`Diagram ${e} not found.`)}}});var pl,fh,Xa,dl,nc,sy,s7,o7,C4,A4,G$,I3e,O3e,P3e,B3e,F3e,z3e,G3e,$3e,V3e,U3e,H3e,W3e,Y3e,q3e,X3e,j3e,K3e,$$,Q3e,Z3e,V$,J3e,e5e,t5e,r5e,dh,n5e,i5e,a5e,s5e,o5e,oy,l7=M(()=>{"use strict";Vt();fr();ki();pl=[],fh=[""],Xa="global",dl="",nc=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],sy=[],s7="",o7=!1,C4=4,A4=2,I3e=o(function(){return G$},"getC4Type"),O3e=o(function(t){G$=Tr(t,de())},"setC4Type"),P3e=o(function(t,e,r,n,i,a,s,l,u){if(t==null||e===void 0||e===null||r===void 0||r===null||n===void 0||n===null)return;let h={},f=sy.find(d=>d.from===e&&d.to===r);if(f?h=f:sy.push(h),h.type=t,h.from=e,h.to=r,h.label={text:n},i==null)h.techn={text:""};else if(typeof i=="object"){let[d,p]=Object.entries(i)[0];h[d]={text:p}}else h.techn={text:i};if(a==null)h.descr={text:""};else if(typeof a=="object"){let[d,p]=Object.entries(a)[0];h[d]={text:p}}else h.descr={text:a};if(typeof s=="object"){let[d,p]=Object.entries(s)[0];h[d]=p}else h.sprite=s;if(typeof l=="object"){let[d,p]=Object.entries(l)[0];h[d]=p}else h.tags=l;if(typeof u=="object"){let[d,p]=Object.entries(u)[0];h[d]=p}else h.link=u;h.wrap=dh()},"addRel"),B3e=o(function(t,e,r,n,i,a,s){if(e===null||r===null)return;let l={},u=pl.find(h=>h.alias===e);if(u&&e===u.alias?l=u:(l.alias=e,pl.push(l)),r==null?l.label={text:""}:l.label={text:r},n==null)l.descr={text:""};else if(typeof n=="object"){let[h,f]=Object.entries(n)[0];l[h]={text:f}}else l.descr={text:n};if(typeof i=="object"){let[h,f]=Object.entries(i)[0];l[h]=f}else l.sprite=i;if(typeof a=="object"){let[h,f]=Object.entries(a)[0];l[h]=f}else l.tags=a;if(typeof s=="object"){let[h,f]=Object.entries(s)[0];l[h]=f}else l.link=s;l.typeC4Shape={text:t},l.parentBoundary=Xa,l.wrap=dh()},"addPersonOrSystem"),F3e=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=pl.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,pl.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof a=="object"){let[f,d]=Object.entries(a)[0];u[f]=d}else u.sprite=a;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.wrap=dh(),u.typeC4Shape={text:t},u.parentBoundary=Xa},"addContainer"),z3e=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=pl.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,pl.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof a=="object"){let[f,d]=Object.entries(a)[0];u[f]=d}else u.sprite=a;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.wrap=dh(),u.typeC4Shape={text:t},u.parentBoundary=Xa},"addComponent"),G3e=o(function(t,e,r,n,i){if(t===null||e===null)return;let a={},s=nc.find(l=>l.alias===t);if(s&&t===s.alias?a=s:(a.alias=t,nc.push(a)),e==null?a.label={text:""}:a.label={text:e},r==null)a.type={text:"system"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=Xa,a.wrap=dh(),dl=Xa,Xa=t,fh.push(dl)},"addPersonOrSystemBoundary"),$3e=o(function(t,e,r,n,i){if(t===null||e===null)return;let a={},s=nc.find(l=>l.alias===t);if(s&&t===s.alias?a=s:(a.alias=t,nc.push(a)),e==null?a.label={text:""}:a.label={text:e},r==null)a.type={text:"container"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=Xa,a.wrap=dh(),dl=Xa,Xa=t,fh.push(dl)},"addContainerBoundary"),V3e=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=nc.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,nc.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.type={text:"node"};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.type={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.nodeType=t,u.parentBoundary=Xa,u.wrap=dh(),dl=Xa,Xa=e,fh.push(dl)},"addDeploymentNode"),U3e=o(function(){Xa=dl,fh.pop(),dl=fh.pop(),fh.push(dl)},"popBoundaryParseStack"),H3e=o(function(t,e,r,n,i,a,s,l,u,h,f){let d=pl.find(p=>p.alias===e);if(!(d===void 0&&(d=nc.find(p=>p.alias===e),d===void 0))){if(r!=null)if(typeof r=="object"){let[p,m]=Object.entries(r)[0];d[p]=m}else d.bgColor=r;if(n!=null)if(typeof n=="object"){let[p,m]=Object.entries(n)[0];d[p]=m}else d.fontColor=n;if(i!=null)if(typeof i=="object"){let[p,m]=Object.entries(i)[0];d[p]=m}else d.borderColor=i;if(a!=null)if(typeof a=="object"){let[p,m]=Object.entries(a)[0];d[p]=m}else d.shadowing=a;if(s!=null)if(typeof s=="object"){let[p,m]=Object.entries(s)[0];d[p]=m}else d.shape=s;if(l!=null)if(typeof l=="object"){let[p,m]=Object.entries(l)[0];d[p]=m}else d.sprite=l;if(u!=null)if(typeof u=="object"){let[p,m]=Object.entries(u)[0];d[p]=m}else d.techn=u;if(h!=null)if(typeof h=="object"){let[p,m]=Object.entries(h)[0];d[p]=m}else d.legendText=h;if(f!=null)if(typeof f=="object"){let[p,m]=Object.entries(f)[0];d[p]=m}else d.legendSprite=f}},"updateElStyle"),W3e=o(function(t,e,r,n,i,a,s){let l=sy.find(u=>u.from===e&&u.to===r);if(l!==void 0){if(n!=null)if(typeof n=="object"){let[u,h]=Object.entries(n)[0];l[u]=h}else l.textColor=n;if(i!=null)if(typeof i=="object"){let[u,h]=Object.entries(i)[0];l[u]=h}else l.lineColor=i;if(a!=null)if(typeof a=="object"){let[u,h]=Object.entries(a)[0];l[u]=parseInt(h)}else l.offsetX=parseInt(a);if(s!=null)if(typeof s=="object"){let[u,h]=Object.entries(s)[0];l[u]=parseInt(h)}else l.offsetY=parseInt(s)}},"updateRelStyle"),Y3e=o(function(t,e,r){let n=C4,i=A4;if(typeof e=="object"){let a=Object.values(e)[0];n=parseInt(a)}else n=parseInt(e);if(typeof r=="object"){let a=Object.values(r)[0];i=parseInt(a)}else i=parseInt(r);n>=1&&(C4=n),i>=1&&(A4=i)},"updateLayoutConfig"),q3e=o(function(){return C4},"getC4ShapeInRow"),X3e=o(function(){return A4},"getC4BoundaryInRow"),j3e=o(function(){return Xa},"getCurrentBoundaryParse"),K3e=o(function(){return dl},"getParentBoundaryParse"),$$=o(function(t){return t==null?pl:pl.filter(e=>e.parentBoundary===t)},"getC4ShapeArray"),Q3e=o(function(t){return pl.find(e=>e.alias===t)},"getC4Shape"),Z3e=o(function(t){return Object.keys($$(t))},"getC4ShapeKeys"),V$=o(function(t){return t==null?nc:nc.filter(e=>e.parentBoundary===t)},"getBoundaries"),J3e=V$,e5e=o(function(){return sy},"getRels"),t5e=o(function(){return s7},"getTitle"),r5e=o(function(t){o7=t},"setWrap"),dh=o(function(){return o7},"autoWrap"),n5e=o(function(){pl=[],nc=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],dl="",Xa="global",fh=[""],sy=[],fh=[""],s7="",o7=!1,C4=4,A4=2},"clear"),i5e={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},a5e={FILLED:0,OPEN:1},s5e={LEFTOF:0,RIGHTOF:1,OVER:2},o5e=o(function(t){s7=Tr(t,de())},"setTitle"),oy={addPersonOrSystem:B3e,addPersonOrSystemBoundary:G3e,addContainer:F3e,addContainerBoundary:$3e,addComponent:z3e,addDeploymentNode:V3e,popBoundaryParseStack:U3e,addRel:P3e,updateElStyle:H3e,updateRelStyle:W3e,updateLayoutConfig:Y3e,autoWrap:dh,setWrap:r5e,getC4ShapeArray:$$,getC4Shape:Q3e,getC4ShapeKeys:Z3e,getBoundaries:V$,getBoundarys:J3e,getCurrentBoundaryParse:j3e,getParentBoundaryParse:K3e,getRels:e5e,getTitle:t5e,getC4Type:I3e,getC4ShapeInRow:q3e,getC4BoundaryInRow:X3e,setAccTitle:Rr,getAccTitle:Pr,getAccDescription:Fr,setAccDescription:Br,getConfig:o(()=>de().c4,"getConfig"),clear:n5e,LINETYPE:i5e,ARROWTYPE:a5e,PLACEMENT:s5e,setTitle:o5e,setC4Type:O3e}});function Zf(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}var c7=M(()=>{"use strict";o(Zf,"ascending")});function u7(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}var U$=M(()=>{"use strict";o(u7,"descending")});function Jf(t){let e,r,n;t.length!==2?(e=Zf,r=o((l,u)=>Zf(t(l),u),"compare2"),n=o((l,u)=>t(l)-u,"delta")):(e=t===Zf||t===u7?t:l5e,r=t,n=t);function i(l,u,h=0,f=l.length){if(h>>1;r(l[d],u)<0?h=d+1:f=d}while(h>>1;r(l[d],u)<=0?h=d+1:f=d}while(hh&&n(l[d-1],u)>-n(l[d],u)?d-1:d}return o(s,"center"),{left:i,center:s,right:a}}function l5e(){return 0}var h7=M(()=>{"use strict";c7();U$();o(Jf,"bisector");o(l5e,"zero")});function f7(t){return t===null?NaN:+t}var H$=M(()=>{"use strict";o(f7,"number")});var W$,Y$,c5e,u5e,d7,q$=M(()=>{"use strict";c7();h7();H$();W$=Jf(Zf),Y$=W$.right,c5e=W$.left,u5e=Jf(f7).center,d7=Y$});function X$({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):r}function h5e({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):(t.set(n,r),r)}function f5e({_intern:t,_key:e},r){let n=e(r);return t.has(n)&&(r=t.get(n),t.delete(n)),r}function d5e(t){return t!==null&&typeof t=="object"?t.valueOf():t}var mp,j$=M(()=>{"use strict";mp=class extends Map{static{o(this,"InternMap")}constructor(e,r=d5e){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),e!=null)for(let[n,i]of e)this.set(n,i)}get(e){return super.get(X$(this,e))}has(e){return super.has(X$(this,e))}set(e,r){return super.set(h5e(this,e),r)}delete(e){return super.delete(f5e(this,e))}};o(X$,"intern_get");o(h5e,"intern_set");o(f5e,"intern_delete");o(d5e,"keyof")});function _4(t,e,r){let n=(e-t)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),s=a>=p5e?10:a>=m5e?5:a>=g5e?2:1,l,u,h;return i<0?(h=Math.pow(10,-i)/s,l=Math.round(t*h),u=Math.round(e*h),l/he&&--u,h=-h):(h=Math.pow(10,i)*s,l=Math.round(t/h),u=Math.round(e/h),l*he&&--u),u0))return[];if(t===e)return[t];let n=e=i))return[];let l=a-i+1,u=new Array(l);if(n)if(s<0)for(let h=0;h{"use strict";p5e=Math.sqrt(50),m5e=Math.sqrt(10),g5e=Math.sqrt(2);o(_4,"tickSpec");o(L4,"ticks");o(ly,"tickIncrement");o(gp,"tickStep")});function D4(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r=i)&&(r=i)}return r}var Q$=M(()=>{"use strict";o(D4,"max")});function N4(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var Z$=M(()=>{"use strict";o(N4,"min")});function R4(t,e,r){t=+t,e=+e,r=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((e-t)/r))|0,a=new Array(i);++n{"use strict";o(R4,"range")});var ph=M(()=>{"use strict";q$();h7();Q$();Z$();J$();K$();j$()});function p7(t){return t}var eV=M(()=>{"use strict";o(p7,"default")});function y5e(t){return"translate("+t+",0)"}function v5e(t){return"translate(0,"+t+")"}function x5e(t){return e=>+t(e)}function b5e(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function w5e(){return!this.__axis}function rV(t,e){var r=[],n=null,i=null,a=6,s=6,l=3,u=typeof window<"u"&&window.devicePixelRatio>1?0:.5,h=t===I4||t===M4?-1:1,f=t===M4||t===m7?"x":"y",d=t===I4||t===g7?y5e:v5e;function p(m){var g=n??(e.ticks?e.ticks.apply(e,r):e.domain()),y=i??(e.tickFormat?e.tickFormat.apply(e,r):p7),v=Math.max(a,0)+l,x=e.range(),b=+x[0]+u,w=+x[x.length-1]+u,_=(e.bandwidth?b5e:x5e)(e.copy(),u),T=m.selection?m.selection():m,E=T.selectAll(".domain").data([null]),L=T.selectAll(".tick").data(g,e).order(),C=L.exit(),A=L.enter().append("g").attr("class","tick"),I=L.select("line"),D=L.select("text");E=E.merge(E.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),L=L.merge(A),I=I.merge(A.append("line").attr("stroke","currentColor").attr(f+"2",h*a)),D=D.merge(A.append("text").attr("fill","currentColor").attr(f,h*v).attr("dy",t===I4?"0em":t===g7?"0.71em":"0.32em")),m!==T&&(E=E.transition(m),L=L.transition(m),I=I.transition(m),D=D.transition(m),C=C.transition(m).attr("opacity",tV).attr("transform",function(k){return isFinite(k=_(k))?d(k+u):this.getAttribute("transform")}),A.attr("opacity",tV).attr("transform",function(k){var R=this.parentNode.__axis;return d((R&&isFinite(R=R(k))?R:_(k))+u)})),C.remove(),E.attr("d",t===M4||t===m7?s?"M"+h*s+","+b+"H"+u+"V"+w+"H"+h*s:"M"+u+","+b+"V"+w:s?"M"+b+","+h*s+"V"+u+"H"+w+"V"+h*s:"M"+b+","+u+"H"+w),L.attr("opacity",1).attr("transform",function(k){return d(_(k)+u)}),I.attr(f+"2",h*a),D.attr(f,h*v).text(y),T.filter(w5e).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===m7?"start":t===M4?"end":"middle"),T.each(function(){this.__axis=_})}return o(p,"axis"),p.scale=function(m){return arguments.length?(e=m,p):e},p.ticks=function(){return r=Array.from(arguments),p},p.tickArguments=function(m){return arguments.length?(r=m==null?[]:Array.from(m),p):r.slice()},p.tickValues=function(m){return arguments.length?(n=m==null?null:Array.from(m),p):n&&n.slice()},p.tickFormat=function(m){return arguments.length?(i=m,p):i},p.tickSize=function(m){return arguments.length?(a=s=+m,p):a},p.tickSizeInner=function(m){return arguments.length?(a=+m,p):a},p.tickSizeOuter=function(m){return arguments.length?(s=+m,p):s},p.tickPadding=function(m){return arguments.length?(l=+m,p):l},p.offset=function(m){return arguments.length?(u=+m,p):u},p}function y7(t){return rV(I4,t)}function v7(t){return rV(g7,t)}var I4,m7,g7,M4,tV,nV=M(()=>{"use strict";eV();I4=1,m7=2,g7=3,M4=4,tV=1e-6;o(y5e,"translateX");o(v5e,"translateY");o(x5e,"number");o(b5e,"center");o(w5e,"entering");o(rV,"axis");o(y7,"axisTop");o(v7,"axisBottom")});var iV=M(()=>{"use strict";nV()});function sV(){for(var t=0,e=arguments.length,r={},n;t=0&&(n=r.slice(i+1),r=r.slice(0,i)),r&&!e.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}function E5e(t,e){for(var r=0,n=t.length,i;r{"use strict";T5e={value:o(()=>{},"value")};o(sV,"dispatch");o(O4,"Dispatch");o(k5e,"parseTypenames");O4.prototype=sV.prototype={constructor:O4,on:o(function(t,e){var r=this._,n=k5e(t+"",r),i,a=-1,s=n.length;if(arguments.length<2){for(;++a0)for(var r=new Array(i),n=0,i,a;n{"use strict";oV()});var P4,w7,T7=M(()=>{"use strict";P4="http://www.w3.org/1999/xhtml",w7={svg:"http://www.w3.org/2000/svg",xhtml:P4,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}});function ic(t){var e=t+="",r=e.indexOf(":");return r>=0&&(e=t.slice(0,r))!=="xmlns"&&(t=t.slice(r+1)),w7.hasOwnProperty(e)?{space:w7[e],local:t}:t}var B4=M(()=>{"use strict";T7();o(ic,"default")});function S5e(t){return function(){var e=this.ownerDocument,r=this.namespaceURI;return r===P4&&e.documentElement.namespaceURI===P4?e.createElement(t):e.createElementNS(r,t)}}function C5e(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function cy(t){var e=ic(t);return(e.local?C5e:S5e)(e)}var k7=M(()=>{"use strict";B4();T7();o(S5e,"creatorInherit");o(C5e,"creatorFixed");o(cy,"default")});function A5e(){}function mh(t){return t==null?A5e:function(){return this.querySelector(t)}}var F4=M(()=>{"use strict";o(A5e,"none");o(mh,"default")});function E7(t){typeof t!="function"&&(t=mh(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";ml();F4();o(E7,"default")});function S7(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}var cV=M(()=>{"use strict";o(S7,"array")});function _5e(){return[]}function yp(t){return t==null?_5e:function(){return this.querySelectorAll(t)}}var C7=M(()=>{"use strict";o(_5e,"empty");o(yp,"default")});function L5e(t){return function(){return S7(t.apply(this,arguments))}}function A7(t){typeof t=="function"?t=L5e(t):t=yp(t);for(var e=this._groups,r=e.length,n=[],i=[],a=0;a{"use strict";ml();cV();C7();o(L5e,"arrayAll");o(A7,"default")});function vp(t){return function(){return this.matches(t)}}function z4(t){return function(e){return e.matches(t)}}var uy=M(()=>{"use strict";o(vp,"default");o(z4,"childMatcher")});function N5e(t){return function(){return D5e.call(this.children,t)}}function R5e(){return this.firstElementChild}function _7(t){return this.select(t==null?R5e:N5e(typeof t=="function"?t:z4(t)))}var D5e,hV=M(()=>{"use strict";uy();D5e=Array.prototype.find;o(N5e,"childFind");o(R5e,"childFirst");o(_7,"default")});function I5e(){return Array.from(this.children)}function O5e(t){return function(){return M5e.call(this.children,t)}}function L7(t){return this.selectAll(t==null?I5e:O5e(typeof t=="function"?t:z4(t)))}var M5e,fV=M(()=>{"use strict";uy();M5e=Array.prototype.filter;o(I5e,"children");o(O5e,"childrenFilter");o(L7,"default")});function D7(t){typeof t!="function"&&(t=vp(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";ml();uy();o(D7,"default")});function hy(t){return new Array(t.length)}var N7=M(()=>{"use strict";o(hy,"default")});function R7(){return new ii(this._enter||this._groups.map(hy),this._parents)}function fy(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}var M7=M(()=>{"use strict";N7();ml();o(R7,"default");o(fy,"EnterNode");fy.prototype={constructor:fy,appendChild:o(function(t){return this._parent.insertBefore(t,this._next)},"appendChild"),insertBefore:o(function(t,e){return this._parent.insertBefore(t,e)},"insertBefore"),querySelector:o(function(t){return this._parent.querySelector(t)},"querySelector"),querySelectorAll:o(function(t){return this._parent.querySelectorAll(t)},"querySelectorAll")}});function I7(t){return function(){return t}}var pV=M(()=>{"use strict";o(I7,"default")});function P5e(t,e,r,n,i,a){for(var s=0,l,u=e.length,h=a.length;s=w&&(w=b+1);!(T=v[w])&&++w{"use strict";ml();M7();pV();o(P5e,"bindIndex");o(B5e,"bindKey");o(F5e,"datum");o(O7,"default");o(z5e,"arraylike")});function P7(){return new ii(this._exit||this._groups.map(hy),this._parents)}var gV=M(()=>{"use strict";N7();ml();o(P7,"default")});function B7(t,e,r){var n=this.enter(),i=this,a=this.exit();return typeof t=="function"?(n=t(n),n&&(n=n.selection())):n=n.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),r==null?a.remove():r(a),n&&i?n.merge(i).order():i}var yV=M(()=>{"use strict";o(B7,"default")});function F7(t){for(var e=t.selection?t.selection():t,r=this._groups,n=e._groups,i=r.length,a=n.length,s=Math.min(i,a),l=new Array(i),u=0;u{"use strict";ml();o(F7,"default")});function z7(){for(var t=this._groups,e=-1,r=t.length;++e=0;)(s=n[i])&&(a&&s.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(s,a),a=s);return this}var xV=M(()=>{"use strict";o(z7,"default")});function G7(t){t||(t=G5e);function e(d,p){return d&&p?t(d.__data__,p.__data__):!d-!p}o(e,"compareNode");for(var r=this._groups,n=r.length,i=new Array(n),a=0;ae?1:t>=e?0:NaN}var bV=M(()=>{"use strict";ml();o(G7,"default");o(G5e,"ascending")});function $7(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}var wV=M(()=>{"use strict";o($7,"default")});function V7(){return Array.from(this)}var TV=M(()=>{"use strict";o(V7,"default")});function U7(){for(var t=this._groups,e=0,r=t.length;e{"use strict";o(U7,"default")});function H7(){let t=0;for(let e of this)++t;return t}var EV=M(()=>{"use strict";o(H7,"default")});function W7(){return!this.node()}var SV=M(()=>{"use strict";o(W7,"default")});function Y7(t){for(var e=this._groups,r=0,n=e.length;r{"use strict";o(Y7,"default")});function $5e(t){return function(){this.removeAttribute(t)}}function V5e(t){return function(){this.removeAttributeNS(t.space,t.local)}}function U5e(t,e){return function(){this.setAttribute(t,e)}}function H5e(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function W5e(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttribute(t):this.setAttribute(t,r)}}function Y5e(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function q7(t,e){var r=ic(t);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((e==null?r.local?V5e:$5e:typeof e=="function"?r.local?Y5e:W5e:r.local?H5e:U5e)(r,e))}var AV=M(()=>{"use strict";B4();o($5e,"attrRemove");o(V5e,"attrRemoveNS");o(U5e,"attrConstant");o(H5e,"attrConstantNS");o(W5e,"attrFunction");o(Y5e,"attrFunctionNS");o(q7,"default")});function dy(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}var X7=M(()=>{"use strict";o(dy,"default")});function q5e(t){return function(){this.style.removeProperty(t)}}function X5e(t,e,r){return function(){this.style.setProperty(t,e,r)}}function j5e(t,e,r){return function(){var n=e.apply(this,arguments);n==null?this.style.removeProperty(t):this.style.setProperty(t,n,r)}}function j7(t,e,r){return arguments.length>1?this.each((e==null?q5e:typeof e=="function"?j5e:X5e)(t,e,r??"")):gh(this.node(),t)}function gh(t,e){return t.style.getPropertyValue(e)||dy(t).getComputedStyle(t,null).getPropertyValue(e)}var K7=M(()=>{"use strict";X7();o(q5e,"styleRemove");o(X5e,"styleConstant");o(j5e,"styleFunction");o(j7,"default");o(gh,"styleValue")});function K5e(t){return function(){delete this[t]}}function Q5e(t,e){return function(){this[t]=e}}function Z5e(t,e){return function(){var r=e.apply(this,arguments);r==null?delete this[t]:this[t]=r}}function Q7(t,e){return arguments.length>1?this.each((e==null?K5e:typeof e=="function"?Z5e:Q5e)(t,e)):this.node()[t]}var _V=M(()=>{"use strict";o(K5e,"propertyRemove");o(Q5e,"propertyConstant");o(Z5e,"propertyFunction");o(Q7,"default")});function LV(t){return t.trim().split(/^|\s+/)}function Z7(t){return t.classList||new DV(t)}function DV(t){this._node=t,this._names=LV(t.getAttribute("class")||"")}function NV(t,e){for(var r=Z7(t),n=-1,i=e.length;++n{"use strict";o(LV,"classArray");o(Z7,"classList");o(DV,"ClassList");DV.prototype={add:o(function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},"add"),remove:o(function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},"remove"),contains:o(function(t){return this._names.indexOf(t)>=0},"contains")};o(NV,"classedAdd");o(RV,"classedRemove");o(J5e,"classedTrue");o(ewe,"classedFalse");o(twe,"classedFunction");o(J7,"default")});function rwe(){this.textContent=""}function nwe(t){return function(){this.textContent=t}}function iwe(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function eA(t){return arguments.length?this.each(t==null?rwe:(typeof t=="function"?iwe:nwe)(t)):this.node().textContent}var IV=M(()=>{"use strict";o(rwe,"textRemove");o(nwe,"textConstant");o(iwe,"textFunction");o(eA,"default")});function awe(){this.innerHTML=""}function swe(t){return function(){this.innerHTML=t}}function owe(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function tA(t){return arguments.length?this.each(t==null?awe:(typeof t=="function"?owe:swe)(t)):this.node().innerHTML}var OV=M(()=>{"use strict";o(awe,"htmlRemove");o(swe,"htmlConstant");o(owe,"htmlFunction");o(tA,"default")});function lwe(){this.nextSibling&&this.parentNode.appendChild(this)}function rA(){return this.each(lwe)}var PV=M(()=>{"use strict";o(lwe,"raise");o(rA,"default")});function cwe(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function nA(){return this.each(cwe)}var BV=M(()=>{"use strict";o(cwe,"lower");o(nA,"default")});function iA(t){var e=typeof t=="function"?t:cy(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}var FV=M(()=>{"use strict";k7();o(iA,"default")});function uwe(){return null}function aA(t,e){var r=typeof t=="function"?t:cy(t),n=e==null?uwe:typeof e=="function"?e:mh(e);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}var zV=M(()=>{"use strict";k7();F4();o(uwe,"constantNull");o(aA,"default")});function hwe(){var t=this.parentNode;t&&t.removeChild(this)}function sA(){return this.each(hwe)}var GV=M(()=>{"use strict";o(hwe,"remove");o(sA,"default")});function fwe(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function dwe(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function oA(t){return this.select(t?dwe:fwe)}var $V=M(()=>{"use strict";o(fwe,"selection_cloneShallow");o(dwe,"selection_cloneDeep");o(oA,"default")});function lA(t){return arguments.length?this.property("__data__",t):this.node().__data__}var VV=M(()=>{"use strict";o(lA,"default")});function pwe(t){return function(e){t.call(this,e,this.__data__)}}function mwe(t){return t.trim().split(/^|\s+/).map(function(e){var r="",n=e.indexOf(".");return n>=0&&(r=e.slice(n+1),e=e.slice(0,n)),{type:e,name:r}})}function gwe(t){return function(){var e=this.__on;if(e){for(var r=0,n=-1,i=e.length,a;r{"use strict";o(pwe,"contextListener");o(mwe,"parseTypenames");o(gwe,"onRemove");o(ywe,"onAdd");o(cA,"default")});function HV(t,e,r){var n=dy(t),i=n.CustomEvent;typeof i=="function"?i=new i(e,r):(i=n.document.createEvent("Event"),r?(i.initEvent(e,r.bubbles,r.cancelable),i.detail=r.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function vwe(t,e){return function(){return HV(this,t,e)}}function xwe(t,e){return function(){return HV(this,t,e.apply(this,arguments))}}function uA(t,e){return this.each((typeof e=="function"?xwe:vwe)(t,e))}var WV=M(()=>{"use strict";X7();o(HV,"dispatchEvent");o(vwe,"dispatchConstant");o(xwe,"dispatchFunction");o(uA,"default")});function*hA(){for(var t=this._groups,e=0,r=t.length;e{"use strict";o(hA,"default")});function ii(t,e){this._groups=t,this._parents=e}function qV(){return new ii([[document.documentElement]],fA)}function bwe(){return this}var fA,lu,ml=M(()=>{"use strict";lV();uV();hV();fV();dV();mV();M7();gV();yV();vV();xV();bV();wV();TV();kV();EV();SV();CV();AV();K7();_V();MV();IV();OV();PV();BV();FV();zV();GV();$V();VV();UV();WV();YV();fA=[null];o(ii,"Selection");o(qV,"selection");o(bwe,"selection_selection");ii.prototype=qV.prototype={constructor:ii,select:E7,selectAll:A7,selectChild:_7,selectChildren:L7,filter:D7,data:O7,enter:R7,exit:P7,join:B7,merge:F7,selection:bwe,order:z7,sort:G7,call:$7,nodes:V7,node:U7,size:H7,empty:W7,each:Y7,attr:q7,style:j7,property:Q7,classed:J7,text:eA,html:tA,raise:rA,lower:nA,append:iA,insert:aA,remove:sA,clone:oA,datum:lA,on:cA,dispatch:uA,[Symbol.iterator]:hA};lu=qV});function ze(t){return typeof t=="string"?new ii([[document.querySelector(t)]],[document.documentElement]):new ii([[t]],fA)}var XV=M(()=>{"use strict";ml();o(ze,"default")});var gl=M(()=>{"use strict";uy();B4();XV();ml();F4();C7();K7()});var jV=M(()=>{"use strict"});function yh(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function xp(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}var dA=M(()=>{"use strict";o(yh,"default");o(xp,"extend")});function vh(){}function QV(){return this.rgb().formatHex()}function _we(){return this.rgb().formatHex8()}function Lwe(){return iU(this).formatHsl()}function ZV(){return this.rgb().formatRgb()}function vl(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=wwe.exec(t))?(r=e[1].length,e=parseInt(e[1],16),r===6?JV(e):r===3?new sa(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?G4(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?G4(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=Twe.exec(t))?new sa(e[1],e[2],e[3],1):(e=kwe.exec(t))?new sa(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Ewe.exec(t))?G4(e[1],e[2],e[3],e[4]):(e=Swe.exec(t))?G4(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Cwe.exec(t))?rU(e[1],e[2]/100,e[3]/100,1):(e=Awe.exec(t))?rU(e[1],e[2]/100,e[3]/100,e[4]):KV.hasOwnProperty(t)?JV(KV[t]):t==="transparent"?new sa(NaN,NaN,NaN,0):null}function JV(t){return new sa(t>>16&255,t>>8&255,t&255,1)}function G4(t,e,r,n){return n<=0&&(t=e=r=NaN),new sa(t,e,r,n)}function mA(t){return t instanceof vh||(t=vl(t)),t?(t=t.rgb(),new sa(t.r,t.g,t.b,t.opacity)):new sa}function wp(t,e,r,n){return arguments.length===1?mA(t):new sa(t,e,r,n??1)}function sa(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function eU(){return`#${ed(this.r)}${ed(this.g)}${ed(this.b)}`}function Dwe(){return`#${ed(this.r)}${ed(this.g)}${ed(this.b)}${ed((isNaN(this.opacity)?1:this.opacity)*255)}`}function tU(){let t=U4(this.opacity);return`${t===1?"rgb(":"rgba("}${td(this.r)}, ${td(this.g)}, ${td(this.b)}${t===1?")":`, ${t})`}`}function U4(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function td(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function ed(t){return t=td(t),(t<16?"0":"")+t.toString(16)}function rU(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new yl(t,e,r,n)}function iU(t){if(t instanceof yl)return new yl(t.h,t.s,t.l,t.opacity);if(t instanceof vh||(t=vl(t)),!t)return new yl;if(t instanceof yl)return t;t=t.rgb();var e=t.r/255,r=t.g/255,n=t.b/255,i=Math.min(e,r,n),a=Math.max(e,r,n),s=NaN,l=a-i,u=(a+i)/2;return l?(e===a?s=(r-n)/l+(r0&&u<1?0:s,new yl(s,l,u,t.opacity)}function aU(t,e,r,n){return arguments.length===1?iU(t):new yl(t,e,r,n??1)}function yl(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function nU(t){return t=(t||0)%360,t<0?t+360:t}function $4(t){return Math.max(0,Math.min(1,t||0))}function pA(t,e,r){return(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)*255}var py,V4,bp,my,ac,wwe,Twe,kwe,Ewe,Swe,Cwe,Awe,KV,gA=M(()=>{"use strict";dA();o(vh,"Color");py=.7,V4=1/py,bp="\\s*([+-]?\\d+)\\s*",my="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",ac="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",wwe=/^#([0-9a-f]{3,8})$/,Twe=new RegExp(`^rgb\\(${bp},${bp},${bp}\\)$`),kwe=new RegExp(`^rgb\\(${ac},${ac},${ac}\\)$`),Ewe=new RegExp(`^rgba\\(${bp},${bp},${bp},${my}\\)$`),Swe=new RegExp(`^rgba\\(${ac},${ac},${ac},${my}\\)$`),Cwe=new RegExp(`^hsl\\(${my},${ac},${ac}\\)$`),Awe=new RegExp(`^hsla\\(${my},${ac},${ac},${my}\\)$`),KV={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};yh(vh,vl,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:QV,formatHex:QV,formatHex8:_we,formatHsl:Lwe,formatRgb:ZV,toString:ZV});o(QV,"color_formatHex");o(_we,"color_formatHex8");o(Lwe,"color_formatHsl");o(ZV,"color_formatRgb");o(vl,"color");o(JV,"rgbn");o(G4,"rgba");o(mA,"rgbConvert");o(wp,"rgb");o(sa,"Rgb");yh(sa,wp,xp(vh,{brighter(t){return t=t==null?V4:Math.pow(V4,t),new sa(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?py:Math.pow(py,t),new sa(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new sa(td(this.r),td(this.g),td(this.b),U4(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:eU,formatHex:eU,formatHex8:Dwe,formatRgb:tU,toString:tU}));o(eU,"rgb_formatHex");o(Dwe,"rgb_formatHex8");o(tU,"rgb_formatRgb");o(U4,"clampa");o(td,"clampi");o(ed,"hex");o(rU,"hsla");o(iU,"hslConvert");o(aU,"hsl");o(yl,"Hsl");yh(yl,aU,xp(vh,{brighter(t){return t=t==null?V4:Math.pow(V4,t),new yl(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?py:Math.pow(py,t),new yl(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new sa(pA(t>=240?t-240:t+120,i,n),pA(t,i,n),pA(t<120?t+240:t-120,i,n),this.opacity)},clamp(){return new yl(nU(this.h),$4(this.s),$4(this.l),U4(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=U4(this.opacity);return`${t===1?"hsl(":"hsla("}${nU(this.h)}, ${$4(this.s)*100}%, ${$4(this.l)*100}%${t===1?")":`, ${t})`}`}}));o(nU,"clamph");o($4,"clampt");o(pA,"hsl2rgb")});var sU,oU,lU=M(()=>{"use strict";sU=Math.PI/180,oU=180/Math.PI});function pU(t){if(t instanceof sc)return new sc(t.l,t.a,t.b,t.opacity);if(t instanceof cu)return mU(t);t instanceof sa||(t=mA(t));var e=bA(t.r),r=bA(t.g),n=bA(t.b),i=yA((.2225045*e+.7168786*r+.0606169*n)/uU),a,s;return e===r&&r===n?a=s=i:(a=yA((.4360747*e+.3850649*r+.1430804*n)/cU),s=yA((.0139322*e+.0971045*r+.7141733*n)/hU)),new sc(116*i-16,500*(a-i),200*(i-s),t.opacity)}function wA(t,e,r,n){return arguments.length===1?pU(t):new sc(t,e,r,n??1)}function sc(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function yA(t){return t>Nwe?Math.pow(t,1/3):t/dU+fU}function vA(t){return t>Tp?t*t*t:dU*(t-fU)}function xA(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function bA(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Rwe(t){if(t instanceof cu)return new cu(t.h,t.c,t.l,t.opacity);if(t instanceof sc||(t=pU(t)),t.a===0&&t.b===0)return new cu(NaN,0{"use strict";dA();gA();lU();H4=18,cU=.96422,uU=1,hU=.82521,fU=4/29,Tp=6/29,dU=3*Tp*Tp,Nwe=Tp*Tp*Tp;o(pU,"labConvert");o(wA,"lab");o(sc,"Lab");yh(sc,wA,xp(vh,{brighter(t){return new sc(this.l+H4*(t??1),this.a,this.b,this.opacity)},darker(t){return new sc(this.l-H4*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,r=isNaN(this.b)?t:t-this.b/200;return e=cU*vA(e),t=uU*vA(t),r=hU*vA(r),new sa(xA(3.1338561*e-1.6168667*t-.4906146*r),xA(-.9787684*e+1.9161415*t+.033454*r),xA(.0719453*e-.2289914*t+1.4052427*r),this.opacity)}}));o(yA,"xyz2lab");o(vA,"lab2xyz");o(xA,"lrgb2rgb");o(bA,"rgb2lrgb");o(Rwe,"hclConvert");o(gy,"hcl");o(cu,"Hcl");o(mU,"hcl2lab");yh(cu,gy,xp(vh,{brighter(t){return new cu(this.h,this.c,this.l+H4*(t??1),this.opacity)},darker(t){return new cu(this.h,this.c,this.l-H4*(t??1),this.opacity)},rgb(){return mU(this).rgb()}}))});var kp=M(()=>{"use strict";gA();gU()});function TA(t,e,r,n,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*r+(1+3*t+3*a-3*s)*n+s*i)/6}function kA(t){var e=t.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,e-1):Math.floor(r*e),i=t[n],a=t[n+1],s=n>0?t[n-1]:2*i-a,l=n{"use strict";o(TA,"basis");o(kA,"default")});function SA(t){var e=t.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*e),i=t[(n+e-1)%e],a=t[n%e],s=t[(n+1)%e],l=t[(n+2)%e];return TA((r-n/e)*e,i,a,s,l)}}var yU=M(()=>{"use strict";EA();o(SA,"default")});var Ep,CA=M(()=>{"use strict";Ep=o(t=>()=>t,"default")});function vU(t,e){return function(r){return t+r*e}}function Mwe(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}function xU(t,e){var r=e-t;return r?vU(t,r>180||r<-180?r-360*Math.round(r/360):r):Ep(isNaN(t)?e:t)}function bU(t){return(t=+t)==1?uu:function(e,r){return r-e?Mwe(e,r,t):Ep(isNaN(e)?r:e)}}function uu(t,e){var r=e-t;return r?vU(t,r):Ep(isNaN(t)?e:t)}var AA=M(()=>{"use strict";CA();o(vU,"linear");o(Mwe,"exponential");o(xU,"hue");o(bU,"gamma");o(uu,"nogamma")});function wU(t){return function(e){var r=e.length,n=new Array(r),i=new Array(r),a=new Array(r),s,l;for(s=0;s{"use strict";kp();EA();yU();AA();rd=o(function t(e){var r=bU(e);function n(i,a){var s=r((i=wp(i)).r,(a=wp(a)).r),l=r(i.g,a.g),u=r(i.b,a.b),h=uu(i.opacity,a.opacity);return function(f){return i.r=s(f),i.g=l(f),i.b=u(f),i.opacity=h(f),i+""}}return o(n,"rgb"),n.gamma=t,n},"rgbGamma")(1);o(wU,"rgbSpline");Iwe=wU(kA),Owe=wU(SA)});function LA(t,e){e||(e=[]);var r=t?Math.min(e.length,t.length):0,n=e.slice(),i;return function(a){for(i=0;i{"use strict";o(LA,"default");o(TU,"isNumberArray")});function EU(t,e){var r=e?e.length:0,n=t?Math.min(r,t.length):0,i=new Array(n),a=new Array(r),s;for(s=0;s{"use strict";W4();o(EU,"genericArray")});function DA(t,e){var r=new Date;return t=+t,e=+e,function(n){return r.setTime(t*(1-n)+e*n),r}}var CU=M(()=>{"use strict";o(DA,"default")});function Ki(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}var yy=M(()=>{"use strict";o(Ki,"default")});function NA(t,e){var r={},n={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?r[i]=xh(t[i],e[i]):n[i]=e[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var AU=M(()=>{"use strict";W4();o(NA,"default")});function Pwe(t){return function(){return t}}function Bwe(t){return function(e){return t(e)+""}}function Sp(t,e){var r=MA.lastIndex=RA.lastIndex=0,n,i,a,s=-1,l=[],u=[];for(t=t+"",e=e+"";(n=MA.exec(t))&&(i=RA.exec(e));)(a=i.index)>r&&(a=e.slice(r,a),l[s]?l[s]+=a:l[++s]=a),(n=n[0])===(i=i[0])?l[s]?l[s]+=i:l[++s]=i:(l[++s]=null,u.push({i:s,x:Ki(n,i)})),r=RA.lastIndex;return r{"use strict";yy();MA=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,RA=new RegExp(MA.source,"g");o(Pwe,"zero");o(Bwe,"one");o(Sp,"default")});function xh(t,e){var r=typeof e,n;return e==null||r==="boolean"?Ep(e):(r==="number"?Ki:r==="string"?(n=vl(e))?(e=n,rd):Sp:e instanceof vl?rd:e instanceof Date?DA:TU(e)?LA:Array.isArray(e)?EU:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?NA:Ki)(t,e)}var W4=M(()=>{"use strict";kp();_A();SU();CU();yy();AU();IA();CA();kU();o(xh,"default")});function Y4(t,e){return t=+t,e=+e,function(r){return Math.round(t*(1-r)+e*r)}}var _U=M(()=>{"use strict";o(Y4,"default")});function X4(t,e,r,n,i,a){var s,l,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*r+e*n)&&(r-=t*u,n-=e*u),(l=Math.sqrt(r*r+n*n))&&(r/=l,n/=l,u/=l),t*n{"use strict";LU=180/Math.PI,q4={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};o(X4,"default")});function NU(t){let e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?q4:X4(e.a,e.b,e.c,e.d,e.e,e.f)}function RU(t){return t==null?q4:(j4||(j4=document.createElementNS("http://www.w3.org/2000/svg","g")),j4.setAttribute("transform",t),(t=j4.transform.baseVal.consolidate())?(t=t.matrix,X4(t.a,t.b,t.c,t.d,t.e,t.f)):q4)}var j4,MU=M(()=>{"use strict";DU();o(NU,"parseCss");o(RU,"parseSvg")});function IU(t,e,r,n){function i(h){return h.length?h.pop()+" ":""}o(i,"pop");function a(h,f,d,p,m,g){if(h!==d||f!==p){var y=m.push("translate(",null,e,null,r);g.push({i:y-4,x:Ki(h,d)},{i:y-2,x:Ki(f,p)})}else(d||p)&&m.push("translate("+d+e+p+r)}o(a,"translate");function s(h,f,d,p){h!==f?(h-f>180?f+=360:f-h>180&&(h+=360),p.push({i:d.push(i(d)+"rotate(",null,n)-2,x:Ki(h,f)})):f&&d.push(i(d)+"rotate("+f+n)}o(s,"rotate");function l(h,f,d,p){h!==f?p.push({i:d.push(i(d)+"skewX(",null,n)-2,x:Ki(h,f)}):f&&d.push(i(d)+"skewX("+f+n)}o(l,"skewX");function u(h,f,d,p,m,g){if(h!==d||f!==p){var y=m.push(i(m)+"scale(",null,",",null,")");g.push({i:y-4,x:Ki(h,d)},{i:y-2,x:Ki(f,p)})}else(d!==1||p!==1)&&m.push(i(m)+"scale("+d+","+p+")")}return o(u,"scale"),function(h,f){var d=[],p=[];return h=t(h),f=t(f),a(h.translateX,h.translateY,f.translateX,f.translateY,d,p),s(h.rotate,f.rotate,d,p),l(h.skewX,f.skewX,d,p),u(h.scaleX,h.scaleY,f.scaleX,f.scaleY,d,p),h=f=null,function(m){for(var g=-1,y=p.length,v;++g{"use strict";yy();MU();o(IU,"interpolateTransform");OA=IU(NU,"px, ","px)","deg)"),PA=IU(RU,", ",")",")")});function PU(t){return function(e,r){var n=t((e=gy(e)).h,(r=gy(r)).h),i=uu(e.c,r.c),a=uu(e.l,r.l),s=uu(e.opacity,r.opacity);return function(l){return e.h=n(l),e.c=i(l),e.l=a(l),e.opacity=s(l),e+""}}}var BA,Fwe,BU=M(()=>{"use strict";kp();AA();o(PU,"hcl");BA=PU(xU),Fwe=PU(uu)});var Cp=M(()=>{"use strict";W4();yy();_U();IA();OU();_A();BU()});function ky(){return nd||(GU(zwe),nd=wy.now()+Z4)}function zwe(){nd=0}function Ty(){this._call=this._time=this._next=null}function J4(t,e,r){var n=new Ty;return n.restart(t,e,r),n}function $U(){ky(),++Ap;for(var t=K4,e;t;)(e=nd-t._time)>=0&&t._call.call(void 0,e),t=t._next;--Ap}function FU(){nd=(Q4=wy.now())+Z4,Ap=xy=0;try{$U()}finally{Ap=0,$we(),nd=0}}function Gwe(){var t=wy.now(),e=t-Q4;e>zU&&(Z4-=e,Q4=t)}function $we(){for(var t,e=K4,r,n=1/0;e;)e._call?(n>e._time&&(n=e._time),t=e,e=e._next):(r=e._next,e._next=null,e=t?t._next=r:K4=r);by=t,FA(n)}function FA(t){if(!Ap){xy&&(xy=clearTimeout(xy));var e=t-nd;e>24?(t<1/0&&(xy=setTimeout(FU,t-wy.now()-Z4)),vy&&(vy=clearInterval(vy))):(vy||(Q4=wy.now(),vy=setInterval(Gwe,zU)),Ap=1,GU(FU))}}var Ap,xy,vy,zU,K4,by,Q4,nd,Z4,wy,GU,zA=M(()=>{"use strict";Ap=0,xy=0,vy=0,zU=1e3,Q4=0,nd=0,Z4=0,wy=typeof performance=="object"&&performance.now?performance:Date,GU=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};o(ky,"now");o(zwe,"clearNow");o(Ty,"Timer");Ty.prototype=J4.prototype={constructor:Ty,restart:o(function(t,e,r){if(typeof t!="function")throw new TypeError("callback is not a function");r=(r==null?ky():+r)+(e==null?0:+e),!this._next&&by!==this&&(by?by._next=this:K4=this,by=this),this._call=t,this._time=r,FA()},"restart"),stop:o(function(){this._call&&(this._call=null,this._time=1/0,FA())},"stop")};o(J4,"timer");o($U,"timerFlush");o(FU,"wake");o(Gwe,"poke");o($we,"nap");o(FA,"sleep")});function Ey(t,e,r){var n=new Ty;return e=e==null?0:+e,n.restart(i=>{n.stop(),t(i+e)},e,r),n}var VU=M(()=>{"use strict";zA();o(Ey,"default")});var e3=M(()=>{"use strict";zA();VU()});function hu(t,e,r,n,i,a){var s=t.__transition;if(!s)t.__transition={};else if(r in s)return;Hwe(t,r,{name:e,index:n,group:i,on:Vwe,tween:Uwe,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:WU})}function Cy(t,e){var r=Oi(t,e);if(r.state>WU)throw new Error("too late; already scheduled");return r}function oa(t,e){var r=Oi(t,e);if(r.state>t3)throw new Error("too late; already running");return r}function Oi(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function Hwe(t,e,r){var n=t.__transition,i;n[e]=r,r.timer=J4(a,0,r.time);function a(h){r.state=UU,r.timer.restart(s,r.delay,r.time),r.delay<=h&&s(h-r.delay)}o(a,"schedule");function s(h){var f,d,p,m;if(r.state!==UU)return u();for(f in n)if(m=n[f],m.name===r.name){if(m.state===t3)return Ey(s);m.state===HU?(m.state=Sy,m.timer.stop(),m.on.call("interrupt",t,t.__data__,m.index,m.group),delete n[f]):+f{"use strict";b7();e3();Vwe=x7("start","end","cancel","interrupt"),Uwe=[],WU=0,UU=1,r3=2,t3=3,HU=4,n3=5,Sy=6;o(hu,"default");o(Cy,"init");o(oa,"set");o(Oi,"get");o(Hwe,"create")});function Ay(t,e){var r=t.__transition,n,i,a=!0,s;if(r){e=e==null?null:e+"";for(s in r){if((n=r[s]).name!==e){a=!1;continue}i=n.state>r3&&n.state{"use strict";ys();o(Ay,"default")});function GA(t){return this.each(function(){Ay(this,t)})}var qU=M(()=>{"use strict";YU();o(GA,"default")});function Wwe(t,e){var r,n;return function(){var i=oa(this,t),a=i.tween;if(a!==r){n=r=a;for(var s=0,l=n.length;s{"use strict";ys();o(Wwe,"tweenRemove");o(Ywe,"tweenFunction");o($A,"default");o(_p,"tweenValue")});function Ly(t,e){var r;return(typeof e=="number"?Ki:e instanceof vl?rd:(r=vl(e))?(e=r,rd):Sp)(t,e)}var VA=M(()=>{"use strict";kp();Cp();o(Ly,"default")});function qwe(t){return function(){this.removeAttribute(t)}}function Xwe(t){return function(){this.removeAttributeNS(t.space,t.local)}}function jwe(t,e,r){var n,i=r+"",a;return function(){var s=this.getAttribute(t);return s===i?null:s===n?a:a=e(n=s,r)}}function Kwe(t,e,r){var n,i=r+"",a;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===n?a:a=e(n=s,r)}}function Qwe(t,e,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttribute(t):(s=this.getAttribute(t),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l)))}}function Zwe(t,e,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l)))}}function UA(t,e){var r=ic(t),n=r==="transform"?PA:Ly;return this.attrTween(t,typeof e=="function"?(r.local?Zwe:Qwe)(r,n,_p(this,"attr."+t,e)):e==null?(r.local?Xwe:qwe)(r):(r.local?Kwe:jwe)(r,n,e))}var XU=M(()=>{"use strict";Cp();gl();_y();VA();o(qwe,"attrRemove");o(Xwe,"attrRemoveNS");o(jwe,"attrConstant");o(Kwe,"attrConstantNS");o(Qwe,"attrFunction");o(Zwe,"attrFunctionNS");o(UA,"default")});function Jwe(t,e){return function(r){this.setAttribute(t,e.call(this,r))}}function eTe(t,e){return function(r){this.setAttributeNS(t.space,t.local,e.call(this,r))}}function tTe(t,e){var r,n;function i(){var a=e.apply(this,arguments);return a!==n&&(r=(n=a)&&eTe(t,a)),r}return o(i,"tween"),i._value=e,i}function rTe(t,e){var r,n;function i(){var a=e.apply(this,arguments);return a!==n&&(r=(n=a)&&Jwe(t,a)),r}return o(i,"tween"),i._value=e,i}function HA(t,e){var r="attr."+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;var n=ic(t);return this.tween(r,(n.local?tTe:rTe)(n,e))}var jU=M(()=>{"use strict";gl();o(Jwe,"attrInterpolate");o(eTe,"attrInterpolateNS");o(tTe,"attrTweenNS");o(rTe,"attrTween");o(HA,"default")});function nTe(t,e){return function(){Cy(this,t).delay=+e.apply(this,arguments)}}function iTe(t,e){return e=+e,function(){Cy(this,t).delay=e}}function WA(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?nTe:iTe)(e,t)):Oi(this.node(),e).delay}var KU=M(()=>{"use strict";ys();o(nTe,"delayFunction");o(iTe,"delayConstant");o(WA,"default")});function aTe(t,e){return function(){oa(this,t).duration=+e.apply(this,arguments)}}function sTe(t,e){return e=+e,function(){oa(this,t).duration=e}}function YA(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?aTe:sTe)(e,t)):Oi(this.node(),e).duration}var QU=M(()=>{"use strict";ys();o(aTe,"durationFunction");o(sTe,"durationConstant");o(YA,"default")});function oTe(t,e){if(typeof e!="function")throw new Error;return function(){oa(this,t).ease=e}}function qA(t){var e=this._id;return arguments.length?this.each(oTe(e,t)):Oi(this.node(),e).ease}var ZU=M(()=>{"use strict";ys();o(oTe,"easeConstant");o(qA,"default")});function lTe(t,e){return function(){var r=e.apply(this,arguments);if(typeof r!="function")throw new Error;oa(this,t).ease=r}}function XA(t){if(typeof t!="function")throw new Error;return this.each(lTe(this._id,t))}var JU=M(()=>{"use strict";ys();o(lTe,"easeVarying");o(XA,"default")});function jA(t){typeof t!="function"&&(t=vp(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";gl();id();o(jA,"default")});function KA(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,r=t._groups,n=e.length,i=r.length,a=Math.min(n,i),s=new Array(n),l=0;l{"use strict";id();o(KA,"default")});function cTe(t){return(t+"").trim().split(/^|\s+/).every(function(e){var r=e.indexOf(".");return r>=0&&(e=e.slice(0,r)),!e||e==="start"})}function uTe(t,e,r){var n,i,a=cTe(e)?Cy:oa;return function(){var s=a(this,t),l=s.on;l!==n&&(i=(n=l).copy()).on(e,r),s.on=i}}function QA(t,e){var r=this._id;return arguments.length<2?Oi(this.node(),r).on.on(t):this.each(uTe(r,t,e))}var rH=M(()=>{"use strict";ys();o(cTe,"start");o(uTe,"onFunction");o(QA,"default")});function hTe(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}function ZA(){return this.on("end.remove",hTe(this._id))}var nH=M(()=>{"use strict";o(hTe,"removeFunction");o(ZA,"default")});function JA(t){var e=this._name,r=this._id;typeof t!="function"&&(t=mh(t));for(var n=this._groups,i=n.length,a=new Array(i),s=0;s{"use strict";gl();id();ys();o(JA,"default")});function e8(t){var e=this._name,r=this._id;typeof t!="function"&&(t=yp(t));for(var n=this._groups,i=n.length,a=[],s=[],l=0;l{"use strict";gl();id();ys();o(e8,"default")});function t8(){return new fTe(this._groups,this._parents)}var fTe,sH=M(()=>{"use strict";gl();fTe=lu.prototype.constructor;o(t8,"default")});function dTe(t,e){var r,n,i;return function(){var a=gh(this,t),s=(this.style.removeProperty(t),gh(this,t));return a===s?null:a===r&&s===n?i:i=e(r=a,n=s)}}function oH(t){return function(){this.style.removeProperty(t)}}function pTe(t,e,r){var n,i=r+"",a;return function(){var s=gh(this,t);return s===i?null:s===n?a:a=e(n=s,r)}}function mTe(t,e,r){var n,i,a;return function(){var s=gh(this,t),l=r(this),u=l+"";return l==null&&(u=l=(this.style.removeProperty(t),gh(this,t))),s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l))}}function gTe(t,e){var r,n,i,a="style."+e,s="end."+a,l;return function(){var u=oa(this,t),h=u.on,f=u.value[a]==null?l||(l=oH(e)):void 0;(h!==r||i!==f)&&(n=(r=h).copy()).on(s,i=f),u.on=n}}function r8(t,e,r){var n=(t+="")=="transform"?OA:Ly;return e==null?this.styleTween(t,dTe(t,n)).on("end.style."+t,oH(t)):typeof e=="function"?this.styleTween(t,mTe(t,n,_p(this,"style."+t,e))).each(gTe(this._id,t)):this.styleTween(t,pTe(t,n,e),r).on("end.style."+t,null)}var lH=M(()=>{"use strict";Cp();gl();ys();_y();VA();o(dTe,"styleNull");o(oH,"styleRemove");o(pTe,"styleConstant");o(mTe,"styleFunction");o(gTe,"styleMaybeRemove");o(r8,"default")});function yTe(t,e,r){return function(n){this.style.setProperty(t,e.call(this,n),r)}}function vTe(t,e,r){var n,i;function a(){var s=e.apply(this,arguments);return s!==i&&(n=(i=s)&&yTe(t,s,r)),n}return o(a,"tween"),a._value=e,a}function n8(t,e,r){var n="style."+(t+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;return this.tween(n,vTe(t,e,r??""))}var cH=M(()=>{"use strict";o(yTe,"styleInterpolate");o(vTe,"styleTween");o(n8,"default")});function xTe(t){return function(){this.textContent=t}}function bTe(t){return function(){var e=t(this);this.textContent=e??""}}function i8(t){return this.tween("text",typeof t=="function"?bTe(_p(this,"text",t)):xTe(t==null?"":t+""))}var uH=M(()=>{"use strict";_y();o(xTe,"textConstant");o(bTe,"textFunction");o(i8,"default")});function wTe(t){return function(e){this.textContent=t.call(this,e)}}function TTe(t){var e,r;function n(){var i=t.apply(this,arguments);return i!==r&&(e=(r=i)&&wTe(i)),e}return o(n,"tween"),n._value=t,n}function a8(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,TTe(t))}var hH=M(()=>{"use strict";o(wTe,"textInterpolate");o(TTe,"textTween");o(a8,"default")});function s8(){for(var t=this._name,e=this._id,r=i3(),n=this._groups,i=n.length,a=0;a{"use strict";id();ys();o(s8,"default")});function o8(){var t,e,r=this,n=r._id,i=r.size();return new Promise(function(a,s){var l={value:s},u={value:o(function(){--i===0&&a()},"value")};r.each(function(){var h=oa(this,n),f=h.on;f!==t&&(e=(t=f).copy(),e._.cancel.push(l),e._.interrupt.push(l),e._.end.push(u)),h.on=e}),i===0&&a()})}var dH=M(()=>{"use strict";ys();o(o8,"default")});function ja(t,e,r,n){this._groups=t,this._parents=e,this._name=r,this._id=n}function pH(t){return lu().transition(t)}function i3(){return++kTe}var kTe,fu,id=M(()=>{"use strict";gl();XU();jU();KU();QU();ZU();JU();eH();tH();rH();nH();iH();aH();sH();lH();cH();uH();hH();fH();_y();dH();kTe=0;o(ja,"Transition");o(pH,"transition");o(i3,"newId");fu=lu.prototype;ja.prototype=pH.prototype={constructor:ja,select:JA,selectAll:e8,selectChild:fu.selectChild,selectChildren:fu.selectChildren,filter:jA,merge:KA,selection:t8,transition:s8,call:fu.call,nodes:fu.nodes,node:fu.node,size:fu.size,empty:fu.empty,each:fu.each,on:QA,attr:UA,attrTween:HA,style:r8,styleTween:n8,text:i8,textTween:a8,remove:ZA,tween:$A,delay:WA,duration:YA,ease:qA,easeVarying:XA,end:o8,[Symbol.iterator]:fu[Symbol.iterator]}});function a3(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var mH=M(()=>{"use strict";o(a3,"cubicInOut")});var l8=M(()=>{"use strict";mH()});function STe(t,e){for(var r;!(r=t.__transition)||!(r=r[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return r}function c8(t){var e,r;t instanceof ja?(e=t._id,t=t._name):(e=i3(),(r=ETe).time=ky(),t=t==null?null:t+"");for(var n=this._groups,i=n.length,a=0;a{"use strict";id();ys();l8();e3();ETe={time:null,delay:0,duration:250,ease:a3};o(STe,"inherit");o(c8,"default")});var yH=M(()=>{"use strict";gl();qU();gH();lu.prototype.interrupt=GA;lu.prototype.transition=c8});var s3=M(()=>{"use strict";yH()});var vH=M(()=>{"use strict"});var xH=M(()=>{"use strict"});var bH=M(()=>{"use strict"});function wH(t){return[+t[0],+t[1]]}function CTe(t){return[wH(t[0]),wH(t[1])]}function u8(t){return{type:t}}var t1t,r1t,n1t,i1t,a1t,s1t,TH=M(()=>{"use strict";s3();vH();xH();bH();({abs:t1t,max:r1t,min:n1t}=Math);o(wH,"number1");o(CTe,"number2");i1t={name:"x",handles:["w","e"].map(u8),input:o(function(t,e){return t==null?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},"input"),output:o(function(t){return t&&[t[0][0],t[1][0]]},"output")},a1t={name:"y",handles:["n","s"].map(u8),input:o(function(t,e){return t==null?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},"input"),output:o(function(t){return t&&[t[0][1],t[1][1]]},"output")},s1t={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(u8),input:o(function(t){return t==null?null:CTe(t)},"input"),output:o(function(t){return t},"output")};o(u8,"type")});var kH=M(()=>{"use strict";TH()});function EH(t){this._+=t[0];for(let e=1,r=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return EH;let r=10**e;return function(n){this._+=n[0];for(let i=1,a=n.length;i{"use strict";h8=Math.PI,f8=2*h8,ad=1e-6,ATe=f8-ad;o(EH,"append");o(_Te,"appendRound");sd=class{static{o(this,"Path")}constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=e==null?EH:_Te(e)}moveTo(e,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,r){this._append`L${this._x1=+e},${this._y1=+r}`}quadraticCurveTo(e,r,n,i){this._append`Q${+e},${+r},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(e,r,n,i,a,s){this._append`C${+e},${+r},${+n},${+i},${this._x1=+a},${this._y1=+s}`}arcTo(e,r,n,i,a){if(e=+e,r=+r,n=+n,i=+i,a=+a,a<0)throw new Error(`negative radius: ${a}`);let s=this._x1,l=this._y1,u=n-e,h=i-r,f=s-e,d=l-r,p=f*f+d*d;if(this._x1===null)this._append`M${this._x1=e},${this._y1=r}`;else if(p>ad)if(!(Math.abs(d*u-h*f)>ad)||!a)this._append`L${this._x1=e},${this._y1=r}`;else{let m=n-s,g=i-l,y=u*u+h*h,v=m*m+g*g,x=Math.sqrt(y),b=Math.sqrt(p),w=a*Math.tan((h8-Math.acos((y+p-v)/(2*x*b)))/2),_=w/b,T=w/x;Math.abs(_-1)>ad&&this._append`L${e+_*f},${r+_*d}`,this._append`A${a},${a},0,0,${+(d*m>f*g)},${this._x1=e+T*u},${this._y1=r+T*h}`}}arc(e,r,n,i,a,s){if(e=+e,r=+r,n=+n,s=!!s,n<0)throw new Error(`negative radius: ${n}`);let l=n*Math.cos(i),u=n*Math.sin(i),h=e+l,f=r+u,d=1^s,p=s?i-a:a-i;this._x1===null?this._append`M${h},${f}`:(Math.abs(this._x1-h)>ad||Math.abs(this._y1-f)>ad)&&this._append`L${h},${f}`,n&&(p<0&&(p=p%f8+f8),p>ATe?this._append`A${n},${n},0,1,${d},${e-l},${r-u}A${n},${n},0,1,${d},${this._x1=h},${this._y1=f}`:p>ad&&this._append`A${n},${n},0,${+(p>=h8)},${d},${this._x1=e+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(e,r,n,i){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}};o(SH,"path");SH.prototype=sd.prototype});var d8=M(()=>{"use strict";CH()});var AH=M(()=>{"use strict"});var _H=M(()=>{"use strict"});var LH=M(()=>{"use strict"});var DH=M(()=>{"use strict"});var NH=M(()=>{"use strict"});var RH=M(()=>{"use strict"});var MH=M(()=>{"use strict"});function p8(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function od(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}var Dy=M(()=>{"use strict";o(p8,"default");o(od,"formatDecimalParts")});function xl(t){return t=od(Math.abs(t)),t?t[1]:NaN}var Ny=M(()=>{"use strict";Dy();o(xl,"default")});function m8(t,e){return function(r,n){for(var i=r.length,a=[],s=0,l=t[0],u=0;i>0&&l>0&&(u+l+1>n&&(l=Math.max(1,n-u)),a.push(r.substring(i-=l,i+l)),!((u+=l+1)>n));)l=t[s=(s+1)%t.length];return a.reverse().join(e)}}var IH=M(()=>{"use strict";o(m8,"default")});function g8(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var OH=M(()=>{"use strict";o(g8,"default")});function bh(t){if(!(e=LTe.exec(t)))throw new Error("invalid format: "+t);var e;return new o3({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function o3(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}var LTe,y8=M(()=>{"use strict";LTe=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;o(bh,"formatSpecifier");bh.prototype=o3.prototype;o(o3,"FormatSpecifier");o3.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type}});function v8(t){e:for(var e=t.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?t.slice(0,n)+t.slice(i+1):t}var PH=M(()=>{"use strict";o(v8,"default")});function b8(t,e){var r=od(t,e);if(!r)return t+"";var n=r[0],i=r[1],a=i-(x8=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=n.length;return a===s?n:a>s?n+new Array(a-s+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+od(t,Math.max(0,e+a-1))[0]}var x8,w8=M(()=>{"use strict";Dy();o(b8,"default")});function l3(t,e){var r=od(t,e);if(!r)return t+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var BH=M(()=>{"use strict";Dy();o(l3,"default")});var T8,FH=M(()=>{"use strict";Dy();w8();BH();T8={"%":o((t,e)=>(t*100).toFixed(e),"%"),b:o(t=>Math.round(t).toString(2),"b"),c:o(t=>t+"","c"),d:p8,e:o((t,e)=>t.toExponential(e),"e"),f:o((t,e)=>t.toFixed(e),"f"),g:o((t,e)=>t.toPrecision(e),"g"),o:o(t=>Math.round(t).toString(8),"o"),p:o((t,e)=>l3(t*100,e),"p"),r:l3,s:b8,X:o(t=>Math.round(t).toString(16).toUpperCase(),"X"),x:o(t=>Math.round(t).toString(16),"x")}});function c3(t){return t}var zH=M(()=>{"use strict";o(c3,"default")});function k8(t){var e=t.grouping===void 0||t.thousands===void 0?c3:m8(GH.call(t.grouping,Number),t.thousands+""),r=t.currency===void 0?"":t.currency[0]+"",n=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",a=t.numerals===void 0?c3:g8(GH.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",l=t.minus===void 0?"\u2212":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function h(d){d=bh(d);var p=d.fill,m=d.align,g=d.sign,y=d.symbol,v=d.zero,x=d.width,b=d.comma,w=d.precision,_=d.trim,T=d.type;T==="n"?(b=!0,T="g"):T8[T]||(w===void 0&&(w=12),_=!0,T="g"),(v||p==="0"&&m==="=")&&(v=!0,p="0",m="=");var E=y==="$"?r:y==="#"&&/[boxX]/.test(T)?"0"+T.toLowerCase():"",L=y==="$"?n:/[%p]/.test(T)?s:"",C=T8[T],A=/[defgprs%]/.test(T);w=w===void 0?6:/[gprs]/.test(T)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function I(D){var k=E,R=L,S,O,N;if(T==="c")R=C(D)+R,D="";else{D=+D;var P=D<0||1/D<0;if(D=isNaN(D)?u:C(Math.abs(D),w),_&&(D=v8(D)),P&&+D==0&&g!=="+"&&(P=!1),k=(P?g==="("?g:l:g==="-"||g==="("?"":g)+k,R=(T==="s"?$H[8+x8/3]:"")+R+(P&&g==="("?")":""),A){for(S=-1,O=D.length;++SN||N>57){R=(N===46?i+D.slice(S+1):D.slice(S))+R,D=D.slice(0,S);break}}}b&&!v&&(D=e(D,1/0));var F=k.length+D.length+R.length,B=F>1)+k+D+R+B.slice(F);break;default:D=B+k+D+R;break}return a(D)}return o(I,"format"),I.toString=function(){return d+""},I}o(h,"newFormat");function f(d,p){var m=h((d=bh(d),d.type="f",d)),g=Math.max(-8,Math.min(8,Math.floor(xl(p)/3)))*3,y=Math.pow(10,-g),v=$H[8+g/3];return function(x){return m(y*x)+v}}return o(f,"formatPrefix"),{format:h,formatPrefix:f}}var GH,$H,VH=M(()=>{"use strict";Ny();IH();OH();y8();PH();FH();w8();zH();GH=Array.prototype.map,$H=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];o(k8,"default")});function E8(t){return u3=k8(t),h3=u3.format,f3=u3.formatPrefix,u3}var u3,h3,f3,UH=M(()=>{"use strict";VH();E8({thousands:",",grouping:[3],currency:["$",""]});o(E8,"defaultLocale")});function d3(t){return Math.max(0,-xl(Math.abs(t)))}var HH=M(()=>{"use strict";Ny();o(d3,"default")});function p3(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(xl(e)/3)))*3-xl(Math.abs(t)))}var WH=M(()=>{"use strict";Ny();o(p3,"default")});function m3(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,xl(e)-xl(t))+1}var YH=M(()=>{"use strict";Ny();o(m3,"default")});var S8=M(()=>{"use strict";UH();y8();HH();WH();YH()});var qH=M(()=>{"use strict"});var XH=M(()=>{"use strict"});var jH=M(()=>{"use strict"});var KH=M(()=>{"use strict"});function wh(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}var Ry=M(()=>{"use strict";o(wh,"initRange")});function du(){var t=new mp,e=[],r=[],n=C8;function i(a){let s=t.get(a);if(s===void 0){if(n!==C8)return n;t.set(a,s=e.push(a)-1)}return r[s%r.length]}return o(i,"scale"),i.domain=function(a){if(!arguments.length)return e.slice();e=[],t=new mp;for(let s of a)t.has(s)||t.set(s,e.push(s)-1);return i},i.range=function(a){return arguments.length?(r=Array.from(a),i):r.slice()},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return du(e,r).unknown(n)},wh.apply(i,arguments),i}var C8,A8=M(()=>{"use strict";ph();Ry();C8=Symbol("implicit");o(du,"ordinal")});function Lp(){var t=du().unknown(void 0),e=t.domain,r=t.range,n=0,i=1,a,s,l=!1,u=0,h=0,f=.5;delete t.unknown;function d(){var p=e().length,m=i{"use strict";ph();Ry();A8();o(Lp,"band")});function _8(t){return function(){return t}}var ZH=M(()=>{"use strict";o(_8,"constants")});function L8(t){return+t}var JH=M(()=>{"use strict";o(L8,"number")});function Dp(t){return t}function D8(t,e){return(e-=t=+t)?function(r){return(r-t)/e}:_8(isNaN(e)?NaN:.5)}function DTe(t,e){var r;return t>e&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function NTe(t,e,r){var n=t[0],i=t[1],a=e[0],s=e[1];return i2?RTe:NTe,u=h=null,d}o(f,"rescale");function d(p){return p==null||isNaN(p=+p)?a:(u||(u=l(t.map(n),e,r)))(n(s(p)))}return o(d,"scale"),d.invert=function(p){return s(i((h||(h=l(e,t.map(n),Ki)))(p)))},d.domain=function(p){return arguments.length?(t=Array.from(p,L8),f()):t.slice()},d.range=function(p){return arguments.length?(e=Array.from(p),f()):e.slice()},d.rangeRound=function(p){return e=Array.from(p),r=Y4,f()},d.clamp=function(p){return arguments.length?(s=p?!0:Dp,f()):s!==Dp},d.interpolate=function(p){return arguments.length?(r=p,f()):r},d.unknown=function(p){return arguments.length?(a=p,d):a},function(p,m){return n=p,i=m,f()}}function My(){return MTe()(Dp,Dp)}var eW,N8=M(()=>{"use strict";ph();Cp();ZH();JH();eW=[0,1];o(Dp,"identity");o(D8,"normalize");o(DTe,"clamper");o(NTe,"bimap");o(RTe,"polymap");o(g3,"copy");o(MTe,"transformer");o(My,"continuous")});function R8(t,e,r,n){var i=gp(t,e,r),a;switch(n=bh(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(a=p3(i,s))&&(n.precision=a),f3(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=m3(i,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=d3(i))&&(n.precision=a-(n.type==="%")*2);break}}return h3(n)}var tW=M(()=>{"use strict";ph();S8();o(R8,"tickFormat")});function ITe(t){var e=t.domain;return t.ticks=function(r){var n=e();return L4(n[0],n[n.length-1],r??10)},t.tickFormat=function(r,n){var i=e();return R8(i[0],i[i.length-1],r??10,n)},t.nice=function(r){r==null&&(r=10);var n=e(),i=0,a=n.length-1,s=n[i],l=n[a],u,h,f=10;for(l0;){if(h=ly(s,l,r),h===u)return n[i]=s,n[a]=l,e(n);if(h>0)s=Math.floor(s/h)*h,l=Math.ceil(l/h)*h;else if(h<0)s=Math.ceil(s*h)/h,l=Math.floor(l*h)/h;else break;u=h}return t},t}function bl(){var t=My();return t.copy=function(){return g3(t,bl())},wh.apply(t,arguments),ITe(t)}var rW=M(()=>{"use strict";ph();N8();Ry();tW();o(ITe,"linearish");o(bl,"linear")});function M8(t,e){t=t.slice();var r=0,n=t.length-1,i=t[r],a=t[n],s;return a{"use strict";o(M8,"nice")});function gn(t,e,r,n){function i(a){return t(a=arguments.length===0?new Date:new Date(+a)),a}return o(i,"interval"),i.floor=a=>(t(a=new Date(+a)),a),i.ceil=a=>(t(a=new Date(a-1)),e(a,1),t(a),a),i.round=a=>{let s=i(a),l=i.ceil(a);return a-s(e(a=new Date(+a),s==null?1:Math.floor(s)),a),i.range=(a,s,l)=>{let u=[];if(a=i.ceil(a),l=l==null?1:Math.floor(l),!(a0))return u;let h;do u.push(h=new Date(+a)),e(a,l),t(a);while(hgn(s=>{if(s>=s)for(;t(s),!a(s);)s.setTime(s-1)},(s,l)=>{if(s>=s)if(l<0)for(;++l<=0;)for(;e(s,-1),!a(s););else for(;--l>=0;)for(;e(s,1),!a(s););}),r&&(i.count=(a,s)=>(I8.setTime(+a),O8.setTime(+s),t(I8),t(O8),Math.floor(r(I8,O8))),i.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?i.filter(n?s=>n(s)%a===0:s=>i.count(0,s)%a===0):i)),i}var I8,O8,pu=M(()=>{"use strict";I8=new Date,O8=new Date;o(gn,"timeInterval")});var oc,iW,P8=M(()=>{"use strict";pu();oc=gn(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);oc.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?gn(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):oc);iW=oc.range});var Xs,aW,B8=M(()=>{"use strict";pu();Xs=gn(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),aW=Xs.range});var mu,OTe,y3,PTe,F8=M(()=>{"use strict";pu();mu=gn(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),OTe=mu.range,y3=gn(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),PTe=y3.range});var gu,BTe,v3,FTe,z8=M(()=>{"use strict";pu();gu=gn(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3-t.getMinutes()*6e4)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getHours()),BTe=gu.range,v3=gn(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),FTe=v3.range});var Lo,zTe,Oy,GTe,x3,$Te,G8=M(()=>{"use strict";pu();Lo=gn(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1),zTe=Lo.range,Oy=gn(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),GTe=Oy.range,x3=gn(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),$Te=x3.range});function ud(t){return gn(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,r)=>{e.setDate(e.getDate()+r*7)},(e,r)=>(r-e-(r.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/6048e5)}function hd(t){return gn(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCDate(e.getUTCDate()+r*7)},(e,r)=>(r-e)/6048e5)}var wl,Th,b3,w3,cc,T3,k3,oW,VTe,UTe,HTe,WTe,YTe,qTe,fd,Np,lW,cW,kh,uW,hW,fW,XTe,jTe,KTe,QTe,ZTe,JTe,$8=M(()=>{"use strict";pu();o(ud,"timeWeekday");wl=ud(0),Th=ud(1),b3=ud(2),w3=ud(3),cc=ud(4),T3=ud(5),k3=ud(6),oW=wl.range,VTe=Th.range,UTe=b3.range,HTe=w3.range,WTe=cc.range,YTe=T3.range,qTe=k3.range;o(hd,"utcWeekday");fd=hd(0),Np=hd(1),lW=hd(2),cW=hd(3),kh=hd(4),uW=hd(5),hW=hd(6),fW=fd.range,XTe=Np.range,jTe=lW.range,KTe=cW.range,QTe=kh.range,ZTe=uW.range,JTe=hW.range});var yu,eke,E3,tke,V8=M(()=>{"use strict";pu();yu=gn(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth()),eke=yu.range,E3=gn(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth()),tke=E3.range});var js,rke,Tl,nke,U8=M(()=>{"use strict";pu();js=gn(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());js.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:gn(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)});rke=js.range,Tl=gn(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());Tl.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:gn(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)});nke=Tl.range});function pW(t,e,r,n,i,a){let s=[[Xs,1,1e3],[Xs,5,5*1e3],[Xs,15,15*1e3],[Xs,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[e,1,2592e6],[e,3,3*2592e6],[t,1,31536e6]];function l(h,f,d){let p=fv).right(s,p);if(m===s.length)return t.every(gp(h/31536e6,f/31536e6,d));if(m===0)return oc.every(Math.max(gp(h,f,d),1));let[g,y]=s[p/s[m-1][2]{"use strict";ph();P8();B8();F8();z8();G8();$8();V8();U8();o(pW,"ticker");[ake,ske]=pW(Tl,E3,fd,x3,v3,y3),[H8,W8]=pW(js,yu,wl,Lo,gu,mu)});var S3=M(()=>{"use strict";P8();B8();F8();z8();G8();$8();V8();U8();mW()});function Y8(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function q8(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Py(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function X8(t){var e=t.dateTime,r=t.date,n=t.time,i=t.periods,a=t.days,s=t.shortDays,l=t.months,u=t.shortMonths,h=By(i),f=Fy(i),d=By(a),p=Fy(a),m=By(s),g=Fy(s),y=By(l),v=Fy(l),x=By(u),b=Fy(u),w={a:P,A:F,b:B,B:$,c:null,d:wW,e:wW,f:Lke,g:zke,G:$ke,H:Cke,I:Ake,j:_ke,L:CW,m:Dke,M:Nke,p:z,q:W,Q:EW,s:SW,S:Rke,u:Mke,U:Ike,V:Oke,w:Pke,W:Bke,x:null,X:null,y:Fke,Y:Gke,Z:Vke,"%":kW},_={a:j,A:K,b:ie,B:Q,c:null,d:TW,e:TW,f:Yke,g:rEe,G:iEe,H:Uke,I:Hke,j:Wke,L:_W,m:qke,M:Xke,p:ee,q:J,Q:EW,s:SW,S:jke,u:Kke,U:Qke,V:Zke,w:Jke,W:eEe,x:null,X:null,y:tEe,Y:nEe,Z:aEe,"%":kW},T={a:I,A:D,b:k,B:R,c:S,d:xW,e:xW,f:Tke,g:vW,G:yW,H:bW,I:bW,j:vke,L:wke,m:yke,M:xke,p:A,q:gke,Q:Eke,s:Ske,S:bke,u:hke,U:fke,V:dke,w:uke,W:pke,x:O,X:N,y:vW,Y:yW,Z:mke,"%":kke};w.x=E(r,w),w.X=E(n,w),w.c=E(e,w),_.x=E(r,_),_.X=E(n,_),_.c=E(e,_);function E(H,q){return function(Z){var ae=[],ue=-1,ce=0,te=H.length,De,oe,ke;for(Z instanceof Date||(Z=new Date(+Z));++ue53)return null;"w"in ae||(ae.w=1),"Z"in ae?(ce=q8(Py(ae.y,0,1)),te=ce.getUTCDay(),ce=te>4||te===0?Np.ceil(ce):Np(ce),ce=Oy.offset(ce,(ae.V-1)*7),ae.y=ce.getUTCFullYear(),ae.m=ce.getUTCMonth(),ae.d=ce.getUTCDate()+(ae.w+6)%7):(ce=Y8(Py(ae.y,0,1)),te=ce.getDay(),ce=te>4||te===0?Th.ceil(ce):Th(ce),ce=Lo.offset(ce,(ae.V-1)*7),ae.y=ce.getFullYear(),ae.m=ce.getMonth(),ae.d=ce.getDate()+(ae.w+6)%7)}else("W"in ae||"U"in ae)&&("w"in ae||(ae.w="u"in ae?ae.u%7:"W"in ae?1:0),te="Z"in ae?q8(Py(ae.y,0,1)).getUTCDay():Y8(Py(ae.y,0,1)).getDay(),ae.m=0,ae.d="W"in ae?(ae.w+6)%7+ae.W*7-(te+5)%7:ae.w+ae.U*7-(te+6)%7);return"Z"in ae?(ae.H+=ae.Z/100|0,ae.M+=ae.Z%100,q8(ae)):Y8(ae)}}o(L,"newParse");function C(H,q,Z,ae){for(var ue=0,ce=q.length,te=Z.length,De,oe;ue=te)return-1;if(De=q.charCodeAt(ue++),De===37){if(De=q.charAt(ue++),oe=T[De in gW?q.charAt(ue++):De],!oe||(ae=oe(H,Z,ae))<0)return-1}else if(De!=Z.charCodeAt(ae++))return-1}return ae}o(C,"parseSpecifier");function A(H,q,Z){var ae=h.exec(q.slice(Z));return ae?(H.p=f.get(ae[0].toLowerCase()),Z+ae[0].length):-1}o(A,"parsePeriod");function I(H,q,Z){var ae=m.exec(q.slice(Z));return ae?(H.w=g.get(ae[0].toLowerCase()),Z+ae[0].length):-1}o(I,"parseShortWeekday");function D(H,q,Z){var ae=d.exec(q.slice(Z));return ae?(H.w=p.get(ae[0].toLowerCase()),Z+ae[0].length):-1}o(D,"parseWeekday");function k(H,q,Z){var ae=x.exec(q.slice(Z));return ae?(H.m=b.get(ae[0].toLowerCase()),Z+ae[0].length):-1}o(k,"parseShortMonth");function R(H,q,Z){var ae=y.exec(q.slice(Z));return ae?(H.m=v.get(ae[0].toLowerCase()),Z+ae[0].length):-1}o(R,"parseMonth");function S(H,q,Z){return C(H,e,q,Z)}o(S,"parseLocaleDateTime");function O(H,q,Z){return C(H,r,q,Z)}o(O,"parseLocaleDate");function N(H,q,Z){return C(H,n,q,Z)}o(N,"parseLocaleTime");function P(H){return s[H.getDay()]}o(P,"formatShortWeekday");function F(H){return a[H.getDay()]}o(F,"formatWeekday");function B(H){return u[H.getMonth()]}o(B,"formatShortMonth");function $(H){return l[H.getMonth()]}o($,"formatMonth");function z(H){return i[+(H.getHours()>=12)]}o(z,"formatPeriod");function W(H){return 1+~~(H.getMonth()/3)}o(W,"formatQuarter");function j(H){return s[H.getUTCDay()]}o(j,"formatUTCShortWeekday");function K(H){return a[H.getUTCDay()]}o(K,"formatUTCWeekday");function ie(H){return u[H.getUTCMonth()]}o(ie,"formatUTCShortMonth");function Q(H){return l[H.getUTCMonth()]}o(Q,"formatUTCMonth");function ee(H){return i[+(H.getUTCHours()>=12)]}o(ee,"formatUTCPeriod");function J(H){return 1+~~(H.getUTCMonth()/3)}return o(J,"formatUTCQuarter"),{format:o(function(H){var q=E(H+="",w);return q.toString=function(){return H},q},"format"),parse:o(function(H){var q=L(H+="",!1);return q.toString=function(){return H},q},"parse"),utcFormat:o(function(H){var q=E(H+="",_);return q.toString=function(){return H},q},"utcFormat"),utcParse:o(function(H){var q=L(H+="",!0);return q.toString=function(){return H},q},"utcParse")}}function Hr(t,e,r){var n=t<0?"-":"",i=(n?-t:t)+"",a=i.length;return n+(a[e.toLowerCase(),r]))}function uke(t,e,r){var n=Qi.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function hke(t,e,r){var n=Qi.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function fke(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function dke(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function pke(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function yW(t,e,r){var n=Qi.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function vW(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function mke(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function gke(t,e,r){var n=Qi.exec(e.slice(r,r+1));return n?(t.q=n[0]*3-3,r+n[0].length):-1}function yke(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function xW(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function vke(t,e,r){var n=Qi.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function bW(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function xke(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function bke(t,e,r){var n=Qi.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function wke(t,e,r){var n=Qi.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function Tke(t,e,r){var n=Qi.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function kke(t,e,r){var n=oke.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function Eke(t,e,r){var n=Qi.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function Ske(t,e,r){var n=Qi.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function wW(t,e){return Hr(t.getDate(),e,2)}function Cke(t,e){return Hr(t.getHours(),e,2)}function Ake(t,e){return Hr(t.getHours()%12||12,e,2)}function _ke(t,e){return Hr(1+Lo.count(js(t),t),e,3)}function CW(t,e){return Hr(t.getMilliseconds(),e,3)}function Lke(t,e){return CW(t,e)+"000"}function Dke(t,e){return Hr(t.getMonth()+1,e,2)}function Nke(t,e){return Hr(t.getMinutes(),e,2)}function Rke(t,e){return Hr(t.getSeconds(),e,2)}function Mke(t){var e=t.getDay();return e===0?7:e}function Ike(t,e){return Hr(wl.count(js(t)-1,t),e,2)}function AW(t){var e=t.getDay();return e>=4||e===0?cc(t):cc.ceil(t)}function Oke(t,e){return t=AW(t),Hr(cc.count(js(t),t)+(js(t).getDay()===4),e,2)}function Pke(t){return t.getDay()}function Bke(t,e){return Hr(Th.count(js(t)-1,t),e,2)}function Fke(t,e){return Hr(t.getFullYear()%100,e,2)}function zke(t,e){return t=AW(t),Hr(t.getFullYear()%100,e,2)}function Gke(t,e){return Hr(t.getFullYear()%1e4,e,4)}function $ke(t,e){var r=t.getDay();return t=r>=4||r===0?cc(t):cc.ceil(t),Hr(t.getFullYear()%1e4,e,4)}function Vke(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Hr(e/60|0,"0",2)+Hr(e%60,"0",2)}function TW(t,e){return Hr(t.getUTCDate(),e,2)}function Uke(t,e){return Hr(t.getUTCHours(),e,2)}function Hke(t,e){return Hr(t.getUTCHours()%12||12,e,2)}function Wke(t,e){return Hr(1+Oy.count(Tl(t),t),e,3)}function _W(t,e){return Hr(t.getUTCMilliseconds(),e,3)}function Yke(t,e){return _W(t,e)+"000"}function qke(t,e){return Hr(t.getUTCMonth()+1,e,2)}function Xke(t,e){return Hr(t.getUTCMinutes(),e,2)}function jke(t,e){return Hr(t.getUTCSeconds(),e,2)}function Kke(t){var e=t.getUTCDay();return e===0?7:e}function Qke(t,e){return Hr(fd.count(Tl(t)-1,t),e,2)}function LW(t){var e=t.getUTCDay();return e>=4||e===0?kh(t):kh.ceil(t)}function Zke(t,e){return t=LW(t),Hr(kh.count(Tl(t),t)+(Tl(t).getUTCDay()===4),e,2)}function Jke(t){return t.getUTCDay()}function eEe(t,e){return Hr(Np.count(Tl(t)-1,t),e,2)}function tEe(t,e){return Hr(t.getUTCFullYear()%100,e,2)}function rEe(t,e){return t=LW(t),Hr(t.getUTCFullYear()%100,e,2)}function nEe(t,e){return Hr(t.getUTCFullYear()%1e4,e,4)}function iEe(t,e){var r=t.getUTCDay();return t=r>=4||r===0?kh(t):kh.ceil(t),Hr(t.getUTCFullYear()%1e4,e,4)}function aEe(){return"+0000"}function kW(){return"%"}function EW(t){return+t}function SW(t){return Math.floor(+t/1e3)}var gW,Qi,oke,lke,DW=M(()=>{"use strict";S3();o(Y8,"localDate");o(q8,"utcDate");o(Py,"newDate");o(X8,"formatLocale");gW={"-":"",_:" ",0:"0"},Qi=/^\s*\d+/,oke=/^%/,lke=/[\\^$*+?|[\]().{}]/g;o(Hr,"pad");o(cke,"requote");o(By,"formatRe");o(Fy,"formatLookup");o(uke,"parseWeekdayNumberSunday");o(hke,"parseWeekdayNumberMonday");o(fke,"parseWeekNumberSunday");o(dke,"parseWeekNumberISO");o(pke,"parseWeekNumberMonday");o(yW,"parseFullYear");o(vW,"parseYear");o(mke,"parseZone");o(gke,"parseQuarter");o(yke,"parseMonthNumber");o(xW,"parseDayOfMonth");o(vke,"parseDayOfYear");o(bW,"parseHour24");o(xke,"parseMinutes");o(bke,"parseSeconds");o(wke,"parseMilliseconds");o(Tke,"parseMicroseconds");o(kke,"parseLiteralPercent");o(Eke,"parseUnixTimestamp");o(Ske,"parseUnixTimestampSeconds");o(wW,"formatDayOfMonth");o(Cke,"formatHour24");o(Ake,"formatHour12");o(_ke,"formatDayOfYear");o(CW,"formatMilliseconds");o(Lke,"formatMicroseconds");o(Dke,"formatMonthNumber");o(Nke,"formatMinutes");o(Rke,"formatSeconds");o(Mke,"formatWeekdayNumberMonday");o(Ike,"formatWeekNumberSunday");o(AW,"dISO");o(Oke,"formatWeekNumberISO");o(Pke,"formatWeekdayNumberSunday");o(Bke,"formatWeekNumberMonday");o(Fke,"formatYear");o(zke,"formatYearISO");o(Gke,"formatFullYear");o($ke,"formatFullYearISO");o(Vke,"formatZone");o(TW,"formatUTCDayOfMonth");o(Uke,"formatUTCHour24");o(Hke,"formatUTCHour12");o(Wke,"formatUTCDayOfYear");o(_W,"formatUTCMilliseconds");o(Yke,"formatUTCMicroseconds");o(qke,"formatUTCMonthNumber");o(Xke,"formatUTCMinutes");o(jke,"formatUTCSeconds");o(Kke,"formatUTCWeekdayNumberMonday");o(Qke,"formatUTCWeekNumberSunday");o(LW,"UTCdISO");o(Zke,"formatUTCWeekNumberISO");o(Jke,"formatUTCWeekdayNumberSunday");o(eEe,"formatUTCWeekNumberMonday");o(tEe,"formatUTCYear");o(rEe,"formatUTCYearISO");o(nEe,"formatUTCFullYear");o(iEe,"formatUTCFullYearISO");o(aEe,"formatUTCZone");o(kW,"formatLiteralPercent");o(EW,"formatUnixTimestamp");o(SW,"formatUnixTimestampSeconds")});function j8(t){return Rp=X8(t),dd=Rp.format,NW=Rp.parse,RW=Rp.utcFormat,MW=Rp.utcParse,Rp}var Rp,dd,NW,RW,MW,IW=M(()=>{"use strict";DW();j8({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});o(j8,"defaultLocale")});var K8=M(()=>{"use strict";IW()});function sEe(t){return new Date(t)}function oEe(t){return t instanceof Date?+t:+new Date(+t)}function OW(t,e,r,n,i,a,s,l,u,h){var f=My(),d=f.invert,p=f.domain,m=h(".%L"),g=h(":%S"),y=h("%I:%M"),v=h("%I %p"),x=h("%a %d"),b=h("%b %d"),w=h("%B"),_=h("%Y");function T(E){return(u(E){"use strict";S3();K8();N8();Ry();nW();o(sEe,"date");o(oEe,"number");o(OW,"calendar");o(C3,"time")});var BW=M(()=>{"use strict";QH();rW();A8();PW()});function Q8(t){for(var e=t.length/6|0,r=new Array(e),n=0;n{"use strict";o(Q8,"default")});var Z8,zW=M(()=>{"use strict";FW();Z8=Q8("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab")});var GW=M(()=>{"use strict";zW()});function Pn(t){return o(function(){return t},"constant")}var A3=M(()=>{"use strict";o(Pn,"default")});function VW(t){return t>1?0:t<-1?Mp:Math.acos(t)}function e_(t){return t>=1?zy:t<=-1?-zy:Math.asin(t)}var J8,la,Eh,$W,_3,kl,pd,Zi,Mp,zy,Ip,L3=M(()=>{"use strict";J8=Math.abs,la=Math.atan2,Eh=Math.cos,$W=Math.max,_3=Math.min,kl=Math.sin,pd=Math.sqrt,Zi=1e-12,Mp=Math.PI,zy=Mp/2,Ip=2*Mp;o(VW,"acos");o(e_,"asin")});function D3(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(r==null)e=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);e=n}return t},()=>new sd(e)}var t_=M(()=>{"use strict";d8();o(D3,"withPath")});function lEe(t){return t.innerRadius}function cEe(t){return t.outerRadius}function uEe(t){return t.startAngle}function hEe(t){return t.endAngle}function fEe(t){return t&&t.padAngle}function dEe(t,e,r,n,i,a,s,l){var u=r-t,h=n-e,f=s-i,d=l-a,p=d*u-f*h;if(!(p*pS*S+O*O&&(C=I,A=D),{cx:C,cy:A,x01:-f,y01:-d,x11:C*(i/T-1),y11:A*(i/T-1)}}function El(){var t=lEe,e=cEe,r=Pn(0),n=null,i=uEe,a=hEe,s=fEe,l=null,u=D3(h);function h(){var f,d,p=+t.apply(this,arguments),m=+e.apply(this,arguments),g=i.apply(this,arguments)-zy,y=a.apply(this,arguments)-zy,v=J8(y-g),x=y>g;if(l||(l=f=u()),mZi))l.moveTo(0,0);else if(v>Ip-Zi)l.moveTo(m*Eh(g),m*kl(g)),l.arc(0,0,m,g,y,!x),p>Zi&&(l.moveTo(p*Eh(y),p*kl(y)),l.arc(0,0,p,y,g,x));else{var b=g,w=y,_=g,T=y,E=v,L=v,C=s.apply(this,arguments)/2,A=C>Zi&&(n?+n.apply(this,arguments):pd(p*p+m*m)),I=_3(J8(m-p)/2,+r.apply(this,arguments)),D=I,k=I,R,S;if(A>Zi){var O=e_(A/p*kl(C)),N=e_(A/m*kl(C));(E-=O*2)>Zi?(O*=x?1:-1,_+=O,T-=O):(E=0,_=T=(g+y)/2),(L-=N*2)>Zi?(N*=x?1:-1,b+=N,w-=N):(L=0,b=w=(g+y)/2)}var P=m*Eh(b),F=m*kl(b),B=p*Eh(T),$=p*kl(T);if(I>Zi){var z=m*Eh(w),W=m*kl(w),j=p*Eh(_),K=p*kl(_),ie;if(vZi?k>Zi?(R=N3(j,K,P,F,m,k,x),S=N3(z,W,B,$,m,k,x),l.moveTo(R.cx+R.x01,R.cy+R.y01),kZi)||!(E>Zi)?l.lineTo(B,$):D>Zi?(R=N3(B,$,z,W,p,-D,x),S=N3(P,F,j,K,p,-D,x),l.lineTo(R.cx+R.x01,R.cy+R.y01),D{"use strict";A3();L3();t_();o(lEe,"arcInnerRadius");o(cEe,"arcOuterRadius");o(uEe,"arcStartAngle");o(hEe,"arcEndAngle");o(fEe,"arcPadAngle");o(dEe,"intersect");o(N3,"cornerTangents");o(El,"default")});function Gy(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}var O2t,r_=M(()=>{"use strict";O2t=Array.prototype.slice;o(Gy,"default")});function HW(t){this._context=t}function Op(t){return new HW(t)}var n_=M(()=>{"use strict";o(HW,"Linear");HW.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}},"point")};o(Op,"default")});function WW(t){return t[0]}function YW(t){return t[1]}var qW=M(()=>{"use strict";o(WW,"x");o(YW,"y")});function Ka(t,e){var r=Pn(!0),n=null,i=Op,a=null,s=D3(l);t=typeof t=="function"?t:t===void 0?WW:Pn(t),e=typeof e=="function"?e:e===void 0?YW:Pn(e);function l(u){var h,f=(u=Gy(u)).length,d,p=!1,m;for(n==null&&(a=i(m=s())),h=0;h<=f;++h)!(h{"use strict";r_();A3();n_();t_();qW();o(Ka,"default")});function i_(t,e){return et?1:e>=t?0:NaN}var jW=M(()=>{"use strict";o(i_,"default")});function a_(t){return t}var KW=M(()=>{"use strict";o(a_,"default")});function R3(){var t=a_,e=i_,r=null,n=Pn(0),i=Pn(Ip),a=Pn(0);function s(l){var u,h=(l=Gy(l)).length,f,d,p=0,m=new Array(h),g=new Array(h),y=+n.apply(this,arguments),v=Math.min(Ip,Math.max(-Ip,i.apply(this,arguments)-y)),x,b=Math.min(Math.abs(v)/h,a.apply(this,arguments)),w=b*(v<0?-1:1),_;for(u=0;u0&&(p+=_);for(e!=null?m.sort(function(T,E){return e(g[T],g[E])}):r!=null&&m.sort(function(T,E){return r(l[T],l[E])}),u=0,d=p?(v-h*w)/p:0;u0?_*d:0)+w,g[f]={data:l[f],index:u,value:_,startAngle:y,endAngle:x,padAngle:b};return g}return o(s,"pie"),s.value=function(l){return arguments.length?(t=typeof l=="function"?l:Pn(+l),s):t},s.sortValues=function(l){return arguments.length?(e=l,r=null,s):e},s.sort=function(l){return arguments.length?(r=l,e=null,s):r},s.startAngle=function(l){return arguments.length?(n=typeof l=="function"?l:Pn(+l),s):n},s.endAngle=function(l){return arguments.length?(i=typeof l=="function"?l:Pn(+l),s):i},s.padAngle=function(l){return arguments.length?(a=typeof l=="function"?l:Pn(+l),s):a},s}var QW=M(()=>{"use strict";r_();A3();jW();KW();L3();o(R3,"default")});function s_(t){return new M3(t,!0)}function o_(t){return new M3(t,!1)}var M3,ZW=M(()=>{"use strict";M3=class{static{o(this,"Bump")}constructor(e,r){this._context=e,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,r){switch(e=+e,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,r,e,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,e,this._y0,e,r);break}}this._x0=e,this._y0=r}};o(s_,"bumpX");o(o_,"bumpY")});function Ks(){}var $y=M(()=>{"use strict";o(Ks,"default")});function Pp(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function Vy(t){this._context=t}function Do(t){return new Vy(t)}var Uy=M(()=>{"use strict";o(Pp,"point");o(Vy,"Basis");Vy.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 3:Pp(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Pp(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(Do,"default")});function JW(t){this._context=t}function I3(t){return new JW(t)}var eY=M(()=>{"use strict";$y();Uy();o(JW,"BasisClosed");JW.prototype={areaStart:Ks,areaEnd:Ks,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Pp(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(I3,"default")});function tY(t){this._context=t}function O3(t){return new tY(t)}var rY=M(()=>{"use strict";Uy();o(tY,"BasisOpen");tY.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Pp(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(O3,"default")});function nY(t,e){this._basis=new Vy(t),this._beta=e}var l_,iY=M(()=>{"use strict";Uy();o(nY,"Bundle");nY.prototype={lineStart:o(function(){this._x=[],this._y=[],this._basis.lineStart()},"lineStart"),lineEnd:o(function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n=t[0],i=e[0],a=t[r]-n,s=e[r]-i,l=-1,u;++l<=r;)u=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(n+u*a),this._beta*e[l]+(1-this._beta)*(i+u*s));this._x=this._y=null,this._basis.lineEnd()},"lineEnd"),point:o(function(t,e){this._x.push(+t),this._y.push(+e)},"point")};l_=o(function t(e){function r(n){return e===1?new Vy(n):new nY(n,e)}return o(r,"bundle"),r.beta=function(n){return t(+n)},r},"custom")(.85)});function Bp(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function P3(t,e){this._context=t,this._k=(1-e)/6}var c_,Hy=M(()=>{"use strict";o(Bp,"point");o(P3,"Cardinal");P3.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Bp(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Bp(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};c_=o(function t(e){function r(n){return new P3(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r},"custom")(0)});function B3(t,e){this._context=t,this._k=(1-e)/6}var u_,h_=M(()=>{"use strict";$y();Hy();o(B3,"CardinalClosed");B3.prototype={areaStart:Ks,areaEnd:Ks,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Bp(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};u_=o(function t(e){function r(n){return new B3(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r},"custom")(0)});function F3(t,e){this._context=t,this._k=(1-e)/6}var f_,d_=M(()=>{"use strict";Hy();o(F3,"CardinalOpen");F3.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Bp(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};f_=o(function t(e){function r(n){return new F3(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r},"custom")(0)});function Wy(t,e,r){var n=t._x1,i=t._y1,a=t._x2,s=t._y2;if(t._l01_a>Zi){var l=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,u=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*l-t._x0*t._l12_2a+t._x2*t._l01_2a)/u,i=(i*l-t._y0*t._l12_2a+t._y2*t._l01_2a)/u}if(t._l23_a>Zi){var h=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,f=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*h+t._x1*t._l23_2a-e*t._l12_2a)/f,s=(s*h+t._y1*t._l23_2a-r*t._l12_2a)/f}t._context.bezierCurveTo(n,i,a,s,t._x2,t._y2)}function aY(t,e){this._context=t,this._alpha=e}var p_,z3=M(()=>{"use strict";L3();Hy();o(Wy,"point");o(aY,"CatmullRom");aY.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Wy(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};p_=o(function t(e){function r(n){return e?new aY(n,e):new P3(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r},"custom")(.5)});function sY(t,e){this._context=t,this._alpha=e}var m_,oY=M(()=>{"use strict";h_();$y();z3();o(sY,"CatmullRomClosed");sY.prototype={areaStart:Ks,areaEnd:Ks,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Wy(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};m_=o(function t(e){function r(n){return e?new sY(n,e):new B3(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r},"custom")(.5)});function lY(t,e){this._context=t,this._alpha=e}var g_,cY=M(()=>{"use strict";d_();z3();o(lY,"CatmullRomOpen");lY.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Wy(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};g_=o(function t(e){function r(n){return e?new lY(n,e):new F3(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r},"custom")(.5)});function uY(t){this._context=t}function G3(t){return new uY(t)}var hY=M(()=>{"use strict";$y();o(uY,"LinearClosed");uY.prototype={areaStart:Ks,areaEnd:Ks,lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){this._point&&this._context.closePath()},"lineEnd"),point:o(function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))},"point")};o(G3,"default")});function fY(t){return t<0?-1:1}function dY(t,e,r){var n=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(n||i<0&&-0),s=(r-t._y1)/(i||n<0&&-0),l=(a*i+s*n)/(n+i);return(fY(a)+fY(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(l))||0}function pY(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function y_(t,e,r){var n=t._x0,i=t._y0,a=t._x1,s=t._y1,l=(a-n)/3;t._context.bezierCurveTo(n+l,i+l*e,a-l,s-l*r,a,s)}function $3(t){this._context=t}function mY(t){this._context=new gY(t)}function gY(t){this._context=t}function v_(t){return new $3(t)}function x_(t){return new mY(t)}var yY=M(()=>{"use strict";o(fY,"sign");o(dY,"slope3");o(pY,"slope2");o(y_,"point");o($3,"MonotoneX");$3.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:y_(this,this._t0,pY(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){var r=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,y_(this,pY(this,r=dY(this,t,e)),r);break;default:y_(this,this._t0,r=dY(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=r}},"point")};o(mY,"MonotoneY");(mY.prototype=Object.create($3.prototype)).point=function(t,e){$3.prototype.point.call(this,e,t)};o(gY,"ReflectContext");gY.prototype={moveTo:o(function(t,e){this._context.moveTo(e,t)},"moveTo"),closePath:o(function(){this._context.closePath()},"closePath"),lineTo:o(function(t,e){this._context.lineTo(e,t)},"lineTo"),bezierCurveTo:o(function(t,e,r,n,i,a){this._context.bezierCurveTo(e,t,n,r,a,i)},"bezierCurveTo")};o(v_,"monotoneX");o(x_,"monotoneY")});function xY(t){this._context=t}function vY(t){var e,r=t.length-1,n,i=new Array(r),a=new Array(r),s=new Array(r);for(i[0]=0,a[0]=2,s[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(s[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e{"use strict";o(xY,"Natural");xY.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=[],this._y=[]},"lineStart"),lineEnd:o(function(){var t=this._x,e=this._y,r=t.length;if(r)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),r===2)this._context.lineTo(t[1],e[1]);else for(var n=vY(t),i=vY(e),a=0,s=1;s{"use strict";o(U3,"Step");U3.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=this._y=NaN,this._point=0},"lineStart"),lineEnd:o(function(){0=0&&(this._t=1-this._t,this._line=1-this._line)},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}break}}this._x=t,this._y=e},"point")};o(H3,"default");o(b_,"stepBefore");o(w_,"stepAfter")});var TY=M(()=>{"use strict";UW();XW();QW();eY();rY();Uy();ZW();iY();h_();d_();Hy();oY();cY();z3();hY();n_();yY();bY();wY()});var kY=M(()=>{"use strict"});var EY=M(()=>{"use strict"});function Sh(t,e,r){this.k=t,this.x=e,this.y=r}function k_(t){for(;!t.__zoom;)if(!(t=t.parentNode))return T_;return t.__zoom}var T_,E_=M(()=>{"use strict";o(Sh,"Transform");Sh.prototype={constructor:Sh,scale:o(function(t){return t===1?this:new Sh(this.k*t,this.x,this.y)},"scale"),translate:o(function(t,e){return t===0&e===0?this:new Sh(this.k,this.x+this.k*t,this.y+this.k*e)},"translate"),apply:o(function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},"apply"),applyX:o(function(t){return t*this.k+this.x},"applyX"),applyY:o(function(t){return t*this.k+this.y},"applyY"),invert:o(function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},"invert"),invertX:o(function(t){return(t-this.x)/this.k},"invertX"),invertY:o(function(t){return(t-this.y)/this.k},"invertY"),rescaleX:o(function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},"rescaleX"),rescaleY:o(function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},"rescaleY"),toString:o(function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"},"toString")};T_=new Sh(1,0,0);k_.prototype=Sh.prototype;o(k_,"transform")});var SY=M(()=>{"use strict"});var CY=M(()=>{"use strict";s3();kY();EY();E_();SY()});var AY=M(()=>{"use strict";CY();E_()});var mr=M(()=>{"use strict";ph();iV();kH();AH();kp();_H();LH();b7();jV();DH();l8();NH();MH();S8();qH();XH();Cp();d8();jH();RH();KH();BW();GW();gl();TY();S3();K8();e3();s3();AY()});var _Y=Ni(Ji=>{"use strict";Object.defineProperty(Ji,"__esModule",{value:!0});Ji.BLANK_URL=Ji.relativeFirstCharacters=Ji.whitespaceEscapeCharsRegex=Ji.urlSchemeRegex=Ji.ctrlCharactersRegex=Ji.htmlCtrlEntityRegex=Ji.htmlEntitiesRegex=Ji.invalidProtocolRegex=void 0;Ji.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;Ji.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g;Ji.htmlCtrlEntityRegex=/&(newline|tab);/gi;Ji.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;Ji.urlSchemeRegex=/^.+(:|:)/gim;Ji.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;Ji.relativeFirstCharacters=[".","/"];Ji.BLANK_URL="about:blank"});var Fp=Ni(W3=>{"use strict";Object.defineProperty(W3,"__esModule",{value:!0});W3.sanitizeUrl=void 0;var Sa=_Y();function pEe(t){return Sa.relativeFirstCharacters.indexOf(t[0])>-1}o(pEe,"isRelativeUrlWithoutProtocol");function mEe(t){var e=t.replace(Sa.ctrlCharactersRegex,"");return e.replace(Sa.htmlEntitiesRegex,function(r,n){return String.fromCharCode(n)})}o(mEe,"decodeHtmlCharacters");function gEe(t){return URL.canParse(t)}o(gEe,"isValidUrl");function LY(t){try{return decodeURIComponent(t)}catch{return t}}o(LY,"decodeURI");function yEe(t){if(!t)return Sa.BLANK_URL;var e,r=LY(t.trim());do r=mEe(r).replace(Sa.htmlCtrlEntityRegex,"").replace(Sa.ctrlCharactersRegex,"").replace(Sa.whitespaceEscapeCharsRegex,"").trim(),r=LY(r),e=r.match(Sa.ctrlCharactersRegex)||r.match(Sa.htmlEntitiesRegex)||r.match(Sa.htmlCtrlEntityRegex)||r.match(Sa.whitespaceEscapeCharsRegex);while(e&&e.length>0);var n=r;if(!n)return Sa.BLANK_URL;if(pEe(n))return n;var i=n.trimStart(),a=i.match(Sa.urlSchemeRegex);if(!a)return n;var s=a[0].toLowerCase().trim();if(Sa.invalidProtocolRegex.test(s))return Sa.BLANK_URL;var l=i.replace(/\\/g,"/");if(s==="mailto:"||s.includes("://"))return l;if(s==="http:"||s==="https:"){if(!gEe(l))return Sa.BLANK_URL;var u=new URL(l);return u.protocol=u.protocol.toLowerCase(),u.hostname=u.hostname.toLowerCase(),u.toString()}return l}o(yEe,"sanitizeUrl");W3.sanitizeUrl=yEe});var S_,md,Y3,DY,NY,RY,Sl,Yy,qy=M(()=>{"use strict";S_=ka(Fp(),1);fr();md=o((t,e)=>{let r=t.append("rect");if(r.attr("x",e.x),r.attr("y",e.y),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("width",e.width),r.attr("height",e.height),e.name&&r.attr("name",e.name),e.rx&&r.attr("rx",e.rx),e.ry&&r.attr("ry",e.ry),e.attrs!==void 0)for(let n in e.attrs)r.attr(n,e.attrs[n]);return e.class&&r.attr("class",e.class),r},"drawRect"),Y3=o((t,e)=>{let r={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};md(t,r).lower()},"drawBackgroundRect"),DY=o((t,e)=>{let r=e.text.replace(jf," "),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.attr("class","legend"),n.style("text-anchor",e.anchor),e.class&&n.attr("class",e.class);let i=n.append("tspan");return i.attr("x",e.x+e.textMargin*2),i.text(r),n},"drawText"),NY=o((t,e,r,n)=>{let i=t.append("image");i.attr("x",e),i.attr("y",r);let a=(0,S_.sanitizeUrl)(n);i.attr("xlink:href",a)},"drawImage"),RY=o((t,e,r,n)=>{let i=t.append("use");i.attr("x",e),i.attr("y",r);let a=(0,S_.sanitizeUrl)(n);i.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),Sl=o(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),Yy=o(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")});var MY,C_,IY,vEe,xEe,bEe,wEe,TEe,kEe,EEe,SEe,CEe,AEe,_Ee,LEe,vu,Cl,OY=M(()=>{"use strict";fr();qy();MY=ka(Fp(),1),C_=o(function(t,e){return md(t,e)},"drawRect"),IY=o(function(t,e,r,n,i,a){let s=t.append("image");s.attr("width",e),s.attr("height",r),s.attr("x",n),s.attr("y",i);let l=a.startsWith("data:image/png;base64")?a:(0,MY.sanitizeUrl)(a);s.attr("xlink:href",l)},"drawImage"),vEe=o((t,e,r)=>{let n=t.append("g"),i=0;for(let a of e){let s=a.textColor?a.textColor:"#444444",l=a.lineColor?a.lineColor:"#444444",u=a.offsetX?parseInt(a.offsetX):0,h=a.offsetY?parseInt(a.offsetY):0,f="";if(i===0){let p=n.append("line");p.attr("x1",a.startPoint.x),p.attr("y1",a.startPoint.y),p.attr("x2",a.endPoint.x),p.attr("y2",a.endPoint.y),p.attr("stroke-width","1"),p.attr("stroke",l),p.style("fill","none"),a.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)"),i=-1}else{let p=n.append("path");p.attr("fill","none").attr("stroke-width","1").attr("stroke",l).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",a.startPoint.x).replaceAll("starty",a.startPoint.y).replaceAll("controlx",a.startPoint.x+(a.endPoint.x-a.startPoint.x)/2-(a.endPoint.x-a.startPoint.x)/4).replaceAll("controly",a.startPoint.y+(a.endPoint.y-a.startPoint.y)/2).replaceAll("stopx",a.endPoint.x).replaceAll("stopy",a.endPoint.y)),a.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)")}let d=r.messageFont();vu(r)(a.label.text,n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+u,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+h,a.label.width,a.label.height,{fill:s},d),a.techn&&a.techn.text!==""&&(d=r.messageFont(),vu(r)("["+a.techn.text+"]",n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+u,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+r.messageFontSize+5+h,Math.max(a.label.width,a.techn.width),a.techn.height,{fill:s,"font-style":"italic"},d))}},"drawRels"),xEe=o(function(t,e,r){let n=t.append("g"),i=e.bgColor?e.bgColor:"none",a=e.borderColor?e.borderColor:"#444444",s=e.fontColor?e.fontColor:"black",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};e.nodeType&&(l={"stroke-width":1});let u={x:e.x,y:e.y,fill:i,stroke:a,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:l};C_(n,u);let h=r.boundaryFont();h.fontWeight="bold",h.fontSize=h.fontSize+2,h.fontColor=s,vu(r)(e.label.text,n,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},h),e.type&&e.type.text!==""&&(h=r.boundaryFont(),h.fontColor=s,vu(r)(e.type.text,n,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},h)),e.descr&&e.descr.text!==""&&(h=r.boundaryFont(),h.fontSize=h.fontSize-2,h.fontColor=s,vu(r)(e.descr.text,n,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},h))},"drawBoundary"),bEe=o(function(t,e,r){let n=e.bgColor?e.bgColor:r[e.typeC4Shape.text+"_bg_color"],i=e.borderColor?e.borderColor:r[e.typeC4Shape.text+"_border_color"],a=e.fontColor?e.fontColor:"#FFFFFF",s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(e.typeC4Shape.text){case"person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}let l=t.append("g");l.attr("class","person-man");let u=Sl();switch(e.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":u.x=e.x,u.y=e.y,u.fill=n,u.width=e.width,u.height=e.height,u.stroke=i,u.rx=2.5,u.ry=2.5,u.attrs={"stroke-width":.5},C_(l,u);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":l.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2).replaceAll("height",e.height)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":l.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("width",e.width).replaceAll("half",e.height/2)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",e.x+e.width).replaceAll("starty",e.y).replaceAll("half",e.height/2));break}let h=LEe(r,e.typeC4Shape.text);switch(l.append("text").attr("fill",a).attr("font-family",h.fontFamily).attr("font-size",h.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",e.typeC4Shape.width).attr("x",e.x+e.width/2-e.typeC4Shape.width/2).attr("y",e.y+e.typeC4Shape.Y).text("<<"+e.typeC4Shape.text+">>"),e.typeC4Shape.text){case"person":case"external_person":IY(l,48,48,e.x+e.width/2-24,e.y+e.image.Y,s);break}let f=r[e.typeC4Shape.text+"Font"]();return f.fontWeight="bold",f.fontSize=f.fontSize+2,f.fontColor=a,vu(r)(e.label.text,l,e.x,e.y+e.label.Y,e.width,e.height,{fill:a},f),f=r[e.typeC4Shape.text+"Font"](),f.fontColor=a,e.techn&&e.techn?.text!==""?vu(r)(e.techn.text,l,e.x,e.y+e.techn.Y,e.width,e.height,{fill:a,"font-style":"italic"},f):e.type&&e.type.text!==""&&vu(r)(e.type.text,l,e.x,e.y+e.type.Y,e.width,e.height,{fill:a,"font-style":"italic"},f),e.descr&&e.descr.text!==""&&(f=r.personFont(),f.fontColor=a,vu(r)(e.descr.text,l,e.x,e.y+e.descr.Y,e.width,e.height,{fill:a},f)),e.height},"drawC4Shape"),wEe=o(function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),TEe=o(function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),kEe=o(function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),EEe=o(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},"insertArrowHead"),SEe=o(function(t){t.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},"insertArrowEnd"),CEe=o(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),AEe=o(function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertDynamicNumber"),_Ee=o(function(t){let r=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);r.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),r.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},"insertArrowCrossHead"),LEe=o((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"getC4ShapeFont"),vu=function(){function t(i,a,s,l,u,h,f){let d=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("text-anchor","middle").text(i);n(d,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d){let{fontSize:p,fontFamily:m,fontWeight:g}=d,y=i.split(je.lineBreakRegex);for(let v=0;v{"use strict";DEe=typeof global=="object"&&global&&global.Object===Object&&global,X3=DEe});var NEe,REe,ai,No=M(()=>{"use strict";A_();NEe=typeof self=="object"&&self&&self.Object===Object&&self,REe=X3||NEe||Function("return this")(),ai=REe});var MEe,ea,gd=M(()=>{"use strict";No();MEe=ai.Symbol,ea=MEe});function PEe(t){var e=IEe.call(t,Xy),r=t[Xy];try{t[Xy]=void 0;var n=!0}catch{}var i=OEe.call(t);return n&&(e?t[Xy]=r:delete t[Xy]),i}var PY,IEe,OEe,Xy,BY,FY=M(()=>{"use strict";gd();PY=Object.prototype,IEe=PY.hasOwnProperty,OEe=PY.toString,Xy=ea?ea.toStringTag:void 0;o(PEe,"getRawTag");BY=PEe});function zEe(t){return FEe.call(t)}var BEe,FEe,zY,GY=M(()=>{"use strict";BEe=Object.prototype,FEe=BEe.toString;o(zEe,"objectToString");zY=zEe});function VEe(t){return t==null?t===void 0?$Ee:GEe:$Y&&$Y in Object(t)?BY(t):zY(t)}var GEe,$Ee,$Y,ca,xu=M(()=>{"use strict";gd();FY();GY();GEe="[object Null]",$Ee="[object Undefined]",$Y=ea?ea.toStringTag:void 0;o(VEe,"baseGetTag");ca=VEe});function UEe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var yn,Qs=M(()=>{"use strict";o(UEe,"isObject");yn=UEe});function XEe(t){if(!yn(t))return!1;var e=ca(t);return e==WEe||e==YEe||e==HEe||e==qEe}var HEe,WEe,YEe,qEe,Ei,jy=M(()=>{"use strict";xu();Qs();HEe="[object AsyncFunction]",WEe="[object Function]",YEe="[object GeneratorFunction]",qEe="[object Proxy]";o(XEe,"isFunction");Ei=XEe});var jEe,j3,VY=M(()=>{"use strict";No();jEe=ai["__core-js_shared__"],j3=jEe});function KEe(t){return!!UY&&UY in t}var UY,HY,WY=M(()=>{"use strict";VY();UY=function(){var t=/[^.]+$/.exec(j3&&j3.keys&&j3.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();o(KEe,"isMasked");HY=KEe});function JEe(t){if(t!=null){try{return ZEe.call(t)}catch{}try{return t+""}catch{}}return""}var QEe,ZEe,bu,__=M(()=>{"use strict";QEe=Function.prototype,ZEe=QEe.toString;o(JEe,"toSource");bu=JEe});function o6e(t){if(!yn(t)||HY(t))return!1;var e=Ei(t)?s6e:t6e;return e.test(bu(t))}var e6e,t6e,r6e,n6e,i6e,a6e,s6e,YY,qY=M(()=>{"use strict";jy();WY();Qs();__();e6e=/[\\^$.*+?()[\]{}|]/g,t6e=/^\[object .+?Constructor\]$/,r6e=Function.prototype,n6e=Object.prototype,i6e=r6e.toString,a6e=n6e.hasOwnProperty,s6e=RegExp("^"+i6e.call(a6e).replace(e6e,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(o6e,"baseIsNative");YY=o6e});function l6e(t,e){return t?.[e]}var XY,jY=M(()=>{"use strict";o(l6e,"getValue");XY=l6e});function c6e(t,e){var r=XY(t,e);return YY(r)?r:void 0}var vs,Ch=M(()=>{"use strict";qY();jY();o(c6e,"getNative");vs=c6e});var u6e,wu,Ky=M(()=>{"use strict";Ch();u6e=vs(Object,"create"),wu=u6e});function h6e(){this.__data__=wu?wu(null):{},this.size=0}var KY,QY=M(()=>{"use strict";Ky();o(h6e,"hashClear");KY=h6e});function f6e(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var ZY,JY=M(()=>{"use strict";o(f6e,"hashDelete");ZY=f6e});function g6e(t){var e=this.__data__;if(wu){var r=e[t];return r===d6e?void 0:r}return m6e.call(e,t)?e[t]:void 0}var d6e,p6e,m6e,eq,tq=M(()=>{"use strict";Ky();d6e="__lodash_hash_undefined__",p6e=Object.prototype,m6e=p6e.hasOwnProperty;o(g6e,"hashGet");eq=g6e});function x6e(t){var e=this.__data__;return wu?e[t]!==void 0:v6e.call(e,t)}var y6e,v6e,rq,nq=M(()=>{"use strict";Ky();y6e=Object.prototype,v6e=y6e.hasOwnProperty;o(x6e,"hashHas");rq=x6e});function w6e(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=wu&&e===void 0?b6e:e,this}var b6e,iq,aq=M(()=>{"use strict";Ky();b6e="__lodash_hash_undefined__";o(w6e,"hashSet");iq=w6e});function zp(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";QY();JY();tq();nq();aq();o(zp,"Hash");zp.prototype.clear=KY;zp.prototype.delete=ZY;zp.prototype.get=eq;zp.prototype.has=rq;zp.prototype.set=iq;L_=zp});function T6e(){this.__data__=[],this.size=0}var oq,lq=M(()=>{"use strict";o(T6e,"listCacheClear");oq=T6e});function k6e(t,e){return t===e||t!==t&&e!==e}var Ro,yd=M(()=>{"use strict";o(k6e,"eq");Ro=k6e});function E6e(t,e){for(var r=t.length;r--;)if(Ro(t[r][0],e))return r;return-1}var Ah,Qy=M(()=>{"use strict";yd();o(E6e,"assocIndexOf");Ah=E6e});function A6e(t){var e=this.__data__,r=Ah(e,t);if(r<0)return!1;var n=e.length-1;return r==n?e.pop():C6e.call(e,r,1),--this.size,!0}var S6e,C6e,cq,uq=M(()=>{"use strict";Qy();S6e=Array.prototype,C6e=S6e.splice;o(A6e,"listCacheDelete");cq=A6e});function _6e(t){var e=this.__data__,r=Ah(e,t);return r<0?void 0:e[r][1]}var hq,fq=M(()=>{"use strict";Qy();o(_6e,"listCacheGet");hq=_6e});function L6e(t){return Ah(this.__data__,t)>-1}var dq,pq=M(()=>{"use strict";Qy();o(L6e,"listCacheHas");dq=L6e});function D6e(t,e){var r=this.__data__,n=Ah(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}var mq,gq=M(()=>{"use strict";Qy();o(D6e,"listCacheSet");mq=D6e});function Gp(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";lq();uq();fq();pq();gq();o(Gp,"ListCache");Gp.prototype.clear=oq;Gp.prototype.delete=cq;Gp.prototype.get=hq;Gp.prototype.has=dq;Gp.prototype.set=mq;_h=Gp});var N6e,Lh,K3=M(()=>{"use strict";Ch();No();N6e=vs(ai,"Map"),Lh=N6e});function R6e(){this.size=0,this.__data__={hash:new L_,map:new(Lh||_h),string:new L_}}var yq,vq=M(()=>{"use strict";sq();Zy();K3();o(R6e,"mapCacheClear");yq=R6e});function M6e(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var xq,bq=M(()=>{"use strict";o(M6e,"isKeyable");xq=M6e});function I6e(t,e){var r=t.__data__;return xq(e)?r[typeof e=="string"?"string":"hash"]:r.map}var Dh,Jy=M(()=>{"use strict";bq();o(I6e,"getMapData");Dh=I6e});function O6e(t){var e=Dh(this,t).delete(t);return this.size-=e?1:0,e}var wq,Tq=M(()=>{"use strict";Jy();o(O6e,"mapCacheDelete");wq=O6e});function P6e(t){return Dh(this,t).get(t)}var kq,Eq=M(()=>{"use strict";Jy();o(P6e,"mapCacheGet");kq=P6e});function B6e(t){return Dh(this,t).has(t)}var Sq,Cq=M(()=>{"use strict";Jy();o(B6e,"mapCacheHas");Sq=B6e});function F6e(t,e){var r=Dh(this,t),n=r.size;return r.set(t,e),this.size+=r.size==n?0:1,this}var Aq,_q=M(()=>{"use strict";Jy();o(F6e,"mapCacheSet");Aq=F6e});function $p(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";vq();Tq();Eq();Cq();_q();o($p,"MapCache");$p.prototype.clear=yq;$p.prototype.delete=wq;$p.prototype.get=kq;$p.prototype.has=Sq;$p.prototype.set=Aq;vd=$p});function D_(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(z6e);var r=o(function(){var n=arguments,i=e?e.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var s=t.apply(this,n);return r.cache=a.set(i,s)||a,s},"memoized");return r.cache=new(D_.Cache||vd),r}var z6e,Vp,N_=M(()=>{"use strict";Q3();z6e="Expected a function";o(D_,"memoize");D_.Cache=vd;Vp=D_});function G6e(){this.__data__=new _h,this.size=0}var Lq,Dq=M(()=>{"use strict";Zy();o(G6e,"stackClear");Lq=G6e});function $6e(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var Nq,Rq=M(()=>{"use strict";o($6e,"stackDelete");Nq=$6e});function V6e(t){return this.__data__.get(t)}var Mq,Iq=M(()=>{"use strict";o(V6e,"stackGet");Mq=V6e});function U6e(t){return this.__data__.has(t)}var Oq,Pq=M(()=>{"use strict";o(U6e,"stackHas");Oq=U6e});function W6e(t,e){var r=this.__data__;if(r instanceof _h){var n=r.__data__;if(!Lh||n.length{"use strict";Zy();K3();Q3();H6e=200;o(W6e,"stackSet");Bq=W6e});function Up(t){var e=this.__data__=new _h(t);this.size=e.size}var uc,ev=M(()=>{"use strict";Zy();Dq();Rq();Iq();Pq();Fq();o(Up,"Stack");Up.prototype.clear=Lq;Up.prototype.delete=Nq;Up.prototype.get=Mq;Up.prototype.has=Oq;Up.prototype.set=Bq;uc=Up});var Y6e,Hp,R_=M(()=>{"use strict";Ch();Y6e=function(){try{var t=vs(Object,"defineProperty");return t({},"",{}),t}catch{}}(),Hp=Y6e});function q6e(t,e,r){e=="__proto__"&&Hp?Hp(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var hc,Wp=M(()=>{"use strict";R_();o(q6e,"baseAssignValue");hc=q6e});function X6e(t,e,r){(r!==void 0&&!Ro(t[e],r)||r===void 0&&!(e in t))&&hc(t,e,r)}var tv,M_=M(()=>{"use strict";Wp();yd();o(X6e,"assignMergeValue");tv=X6e});function j6e(t){return function(e,r,n){for(var i=-1,a=Object(e),s=n(e),l=s.length;l--;){var u=s[t?l:++i];if(r(a[u],u,a)===!1)break}return e}}var zq,Gq=M(()=>{"use strict";o(j6e,"createBaseFor");zq=j6e});var K6e,Yp,Z3=M(()=>{"use strict";Gq();K6e=zq(),Yp=K6e});function Z6e(t,e){if(e)return t.slice();var r=t.length,n=Uq?Uq(r):new t.constructor(r);return t.copy(n),n}var Hq,$q,Q6e,Vq,Uq,J3,I_=M(()=>{"use strict";No();Hq=typeof exports=="object"&&exports&&!exports.nodeType&&exports,$q=Hq&&typeof module=="object"&&module&&!module.nodeType&&module,Q6e=$q&&$q.exports===Hq,Vq=Q6e?ai.Buffer:void 0,Uq=Vq?Vq.allocUnsafe:void 0;o(Z6e,"cloneBuffer");J3=Z6e});var J6e,qp,O_=M(()=>{"use strict";No();J6e=ai.Uint8Array,qp=J6e});function eSe(t){var e=new t.constructor(t.byteLength);return new qp(e).set(new qp(t)),e}var Xp,e5=M(()=>{"use strict";O_();o(eSe,"cloneArrayBuffer");Xp=eSe});function tSe(t,e){var r=e?Xp(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}var t5,P_=M(()=>{"use strict";e5();o(tSe,"cloneTypedArray");t5=tSe});function rSe(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r{"use strict";o(rSe,"copyArray");r5=rSe});var Wq,nSe,Yq,qq=M(()=>{"use strict";Qs();Wq=Object.create,nSe=function(){function t(){}return o(t,"object"),function(e){if(!yn(e))return{};if(Wq)return Wq(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}(),Yq=nSe});function iSe(t,e){return function(r){return t(e(r))}}var n5,F_=M(()=>{"use strict";o(iSe,"overArg");n5=iSe});var aSe,jp,i5=M(()=>{"use strict";F_();aSe=n5(Object.getPrototypeOf,Object),jp=aSe});function oSe(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||sSe;return t===r}var sSe,fc,Kp=M(()=>{"use strict";sSe=Object.prototype;o(oSe,"isPrototype");fc=oSe});function lSe(t){return typeof t.constructor=="function"&&!fc(t)?Yq(jp(t)):{}}var a5,z_=M(()=>{"use strict";qq();i5();Kp();o(lSe,"initCloneObject");a5=lSe});function cSe(t){return t!=null&&typeof t=="object"}var Zn,Mo=M(()=>{"use strict";o(cSe,"isObjectLike");Zn=cSe});function hSe(t){return Zn(t)&&ca(t)==uSe}var uSe,G_,Xq=M(()=>{"use strict";xu();Mo();uSe="[object Arguments]";o(hSe,"baseIsArguments");G_=hSe});var jq,fSe,dSe,pSe,Al,Qp=M(()=>{"use strict";Xq();Mo();jq=Object.prototype,fSe=jq.hasOwnProperty,dSe=jq.propertyIsEnumerable,pSe=G_(function(){return arguments}())?G_:function(t){return Zn(t)&&fSe.call(t,"callee")&&!dSe.call(t,"callee")},Al=pSe});var mSe,Mt,Vn=M(()=>{"use strict";mSe=Array.isArray,Mt=mSe});function ySe(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=gSe}var gSe,Zp,s5=M(()=>{"use strict";gSe=9007199254740991;o(ySe,"isLength");Zp=ySe});function vSe(t){return t!=null&&Zp(t.length)&&!Ei(t)}var si,Io=M(()=>{"use strict";jy();s5();o(vSe,"isArrayLike");si=vSe});function xSe(t){return Zn(t)&&si(t)}var xd,o5=M(()=>{"use strict";Io();Mo();o(xSe,"isArrayLikeObject");xd=xSe});function bSe(){return!1}var Kq,Qq=M(()=>{"use strict";o(bSe,"stubFalse");Kq=bSe});var eX,Zq,wSe,Jq,TSe,kSe,_l,Jp=M(()=>{"use strict";No();Qq();eX=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Zq=eX&&typeof module=="object"&&module&&!module.nodeType&&module,wSe=Zq&&Zq.exports===eX,Jq=wSe?ai.Buffer:void 0,TSe=Jq?Jq.isBuffer:void 0,kSe=TSe||Kq,_l=kSe});function LSe(t){if(!Zn(t)||ca(t)!=ESe)return!1;var e=jp(t);if(e===null)return!0;var r=ASe.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&tX.call(r)==_Se}var ESe,SSe,CSe,tX,ASe,_Se,rX,nX=M(()=>{"use strict";xu();i5();Mo();ESe="[object Object]",SSe=Function.prototype,CSe=Object.prototype,tX=SSe.toString,ASe=CSe.hasOwnProperty,_Se=tX.call(Object);o(LSe,"isPlainObject");rX=LSe});function eCe(t){return Zn(t)&&Zp(t.length)&&!!Bn[ca(t)]}var DSe,NSe,RSe,MSe,ISe,OSe,PSe,BSe,FSe,zSe,GSe,$Se,VSe,USe,HSe,WSe,YSe,qSe,XSe,jSe,KSe,QSe,ZSe,JSe,Bn,iX,aX=M(()=>{"use strict";xu();s5();Mo();DSe="[object Arguments]",NSe="[object Array]",RSe="[object Boolean]",MSe="[object Date]",ISe="[object Error]",OSe="[object Function]",PSe="[object Map]",BSe="[object Number]",FSe="[object Object]",zSe="[object RegExp]",GSe="[object Set]",$Se="[object String]",VSe="[object WeakMap]",USe="[object ArrayBuffer]",HSe="[object DataView]",WSe="[object Float32Array]",YSe="[object Float64Array]",qSe="[object Int8Array]",XSe="[object Int16Array]",jSe="[object Int32Array]",KSe="[object Uint8Array]",QSe="[object Uint8ClampedArray]",ZSe="[object Uint16Array]",JSe="[object Uint32Array]",Bn={};Bn[WSe]=Bn[YSe]=Bn[qSe]=Bn[XSe]=Bn[jSe]=Bn[KSe]=Bn[QSe]=Bn[ZSe]=Bn[JSe]=!0;Bn[DSe]=Bn[NSe]=Bn[USe]=Bn[RSe]=Bn[HSe]=Bn[MSe]=Bn[ISe]=Bn[OSe]=Bn[PSe]=Bn[BSe]=Bn[FSe]=Bn[zSe]=Bn[GSe]=Bn[$Se]=Bn[VSe]=!1;o(eCe,"baseIsTypedArray");iX=eCe});function tCe(t){return function(e){return t(e)}}var Oo,bd=M(()=>{"use strict";o(tCe,"baseUnary");Oo=tCe});var sX,rv,rCe,$_,nCe,Po,nv=M(()=>{"use strict";A_();sX=typeof exports=="object"&&exports&&!exports.nodeType&&exports,rv=sX&&typeof module=="object"&&module&&!module.nodeType&&module,rCe=rv&&rv.exports===sX,$_=rCe&&X3.process,nCe=function(){try{var t=rv&&rv.require&&rv.require("util").types;return t||$_&&$_.binding&&$_.binding("util")}catch{}}(),Po=nCe});var oX,iCe,Nh,iv=M(()=>{"use strict";aX();bd();nv();oX=Po&&Po.isTypedArray,iCe=oX?Oo(oX):iX,Nh=iCe});function aCe(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}var av,V_=M(()=>{"use strict";o(aCe,"safeGet");av=aCe});function lCe(t,e,r){var n=t[e];(!(oCe.call(t,e)&&Ro(n,r))||r===void 0&&!(e in t))&&hc(t,e,r)}var sCe,oCe,dc,em=M(()=>{"use strict";Wp();yd();sCe=Object.prototype,oCe=sCe.hasOwnProperty;o(lCe,"assignValue");dc=lCe});function cCe(t,e,r,n){var i=!r;r||(r={});for(var a=-1,s=e.length;++a{"use strict";em();Wp();o(cCe,"copyObject");Bo=cCe});function uCe(t,e){for(var r=-1,n=Array(t);++r{"use strict";o(uCe,"baseTimes");lX=uCe});function dCe(t,e){var r=typeof t;return e=e??hCe,!!e&&(r=="number"||r!="symbol"&&fCe.test(t))&&t>-1&&t%1==0&&t{"use strict";hCe=9007199254740991,fCe=/^(?:0|[1-9]\d*)$/;o(dCe,"isIndex");Rh=dCe});function gCe(t,e){var r=Mt(t),n=!r&&Al(t),i=!r&&!n&&_l(t),a=!r&&!n&&!i&&Nh(t),s=r||n||i||a,l=s?lX(t.length,String):[],u=l.length;for(var h in t)(e||mCe.call(t,h))&&!(s&&(h=="length"||i&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||Rh(h,u)))&&l.push(h);return l}var pCe,mCe,l5,U_=M(()=>{"use strict";cX();Qp();Vn();Jp();sv();iv();pCe=Object.prototype,mCe=pCe.hasOwnProperty;o(gCe,"arrayLikeKeys");l5=gCe});function yCe(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}var uX,hX=M(()=>{"use strict";o(yCe,"nativeKeysIn");uX=yCe});function bCe(t){if(!yn(t))return uX(t);var e=fc(t),r=[];for(var n in t)n=="constructor"&&(e||!xCe.call(t,n))||r.push(n);return r}var vCe,xCe,fX,dX=M(()=>{"use strict";Qs();Kp();hX();vCe=Object.prototype,xCe=vCe.hasOwnProperty;o(bCe,"baseKeysIn");fX=bCe});function wCe(t){return si(t)?l5(t,!0):fX(t)}var xs,Mh=M(()=>{"use strict";U_();dX();Io();o(wCe,"keysIn");xs=wCe});function TCe(t){return Bo(t,xs(t))}var pX,mX=M(()=>{"use strict";wd();Mh();o(TCe,"toPlainObject");pX=TCe});function kCe(t,e,r,n,i,a,s){var l=av(t,r),u=av(e,r),h=s.get(u);if(h){tv(t,r,h);return}var f=a?a(l,u,r+"",t,e,s):void 0,d=f===void 0;if(d){var p=Mt(u),m=!p&&_l(u),g=!p&&!m&&Nh(u);f=u,p||m||g?Mt(l)?f=l:xd(l)?f=r5(l):m?(d=!1,f=J3(u,!0)):g?(d=!1,f=t5(u,!0)):f=[]:rX(u)||Al(u)?(f=l,Al(l)?f=pX(l):(!yn(l)||Ei(l))&&(f=a5(u))):d=!1}d&&(s.set(u,f),i(f,u,n,a,s),s.delete(u)),tv(t,r,f)}var gX,yX=M(()=>{"use strict";M_();I_();P_();B_();z_();Qp();Vn();o5();Jp();jy();Qs();nX();iv();V_();mX();o(kCe,"baseMergeDeep");gX=kCe});function vX(t,e,r,n,i){t!==e&&Yp(e,function(a,s){if(i||(i=new uc),yn(a))gX(t,e,s,r,vX,n,i);else{var l=n?n(av(t,s),a,s+"",t,e,i):void 0;l===void 0&&(l=a),tv(t,s,l)}},xs)}var xX,bX=M(()=>{"use strict";ev();M_();Z3();yX();Qs();Mh();V_();o(vX,"baseMerge");xX=vX});function ECe(t){return t}var ta,Tu=M(()=>{"use strict";o(ECe,"identity");ta=ECe});function SCe(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}var wX,TX=M(()=>{"use strict";o(SCe,"apply");wX=SCe});function CCe(t,e,r){return e=kX(e===void 0?t.length-1:e,0),function(){for(var n=arguments,i=-1,a=kX(n.length-e,0),s=Array(a);++i{"use strict";TX();kX=Math.max;o(CCe,"overRest");c5=CCe});function ACe(t){return function(){return t}}var bs,W_=M(()=>{"use strict";o(ACe,"constant");bs=ACe});var _Ce,EX,SX=M(()=>{"use strict";W_();R_();Tu();_Ce=Hp?function(t,e){return Hp(t,"toString",{configurable:!0,enumerable:!1,value:bs(e),writable:!0})}:ta,EX=_Ce});function RCe(t){var e=0,r=0;return function(){var n=NCe(),i=DCe-(n-r);if(r=n,i>0){if(++e>=LCe)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var LCe,DCe,NCe,CX,AX=M(()=>{"use strict";LCe=800,DCe=16,NCe=Date.now;o(RCe,"shortOut");CX=RCe});var MCe,u5,Y_=M(()=>{"use strict";SX();AX();MCe=CX(EX),u5=MCe});function ICe(t,e){return u5(c5(t,e,ta),t+"")}var pc,tm=M(()=>{"use strict";Tu();H_();Y_();o(ICe,"baseRest");pc=ICe});function OCe(t,e,r){if(!yn(r))return!1;var n=typeof e;return(n=="number"?si(r)&&Rh(e,r.length):n=="string"&&e in r)?Ro(r[e],t):!1}var Zs,Td=M(()=>{"use strict";yd();Io();sv();Qs();o(OCe,"isIterateeCall");Zs=OCe});function PCe(t){return pc(function(e,r){var n=-1,i=r.length,a=i>1?r[i-1]:void 0,s=i>2?r[2]:void 0;for(a=t.length>3&&typeof a=="function"?(i--,a):void 0,s&&Zs(r[0],r[1],s)&&(a=i<3?void 0:a,i=1),e=Object(e);++n{"use strict";tm();Td();o(PCe,"createAssigner");h5=PCe});var BCe,Ih,X_=M(()=>{"use strict";bX();q_();BCe=h5(function(t,e,r){xX(t,e,r)}),Ih=BCe});function Q_(t,e){if(!t)return e;let r=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return FCe[r]??e}function VCe(t,e){let r=t.trim();if(r)return e.securityLevel!=="loose"?(0,DX.sanitizeUrl)(r):r}function MX(t,e){return!t||!e?0:Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function HCe(t){let e,r=0;t.forEach(i=>{r+=MX(i,e),e=i});let n=r/2;return Z_(t,n)}function WCe(t){return t.length===1?t[0]:HCe(t)}function qCe(t,e,r){let n=structuredClone(r);Y.info("our points",n),e!=="start_left"&&e!=="start_right"&&n.reverse();let i=25+t,a=Z_(n,i),s=10+t*.5,l=Math.atan2(n[0].y-a.y,n[0].x-a.x),u={x:0,y:0};return e==="start_left"?(u.x=Math.sin(l+Math.PI)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l+Math.PI)*s+(n[0].y+a.y)/2):e==="end_right"?(u.x=Math.sin(l-Math.PI)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l-Math.PI)*s+(n[0].y+a.y)/2-5):e==="end_left"?(u.x=Math.sin(l)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2-5):(u.x=Math.sin(l)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2),u}function J_(t){let e="",r="";for(let n of t)n!==void 0&&(n.startsWith("color:")||n.startsWith("text-align:")?r=r+n+";":e=e+n+";");return{style:e,labelStyle:r}}function XCe(t){let e="",r="0123456789abcdef",n=r.length;for(let i=0;i{"use strict";DX=ka(Fp(),1);mr();fr();KS();ht();$f();ip();N_();X_();Pb();K_="\u200B",FCe={curveBasis:Do,curveBasisClosed:I3,curveBasisOpen:O3,curveBumpX:s_,curveBumpY:o_,curveBundle:l_,curveCardinalClosed:u_,curveCardinalOpen:f_,curveCardinal:c_,curveCatmullRomClosed:m_,curveCatmullRomOpen:g_,curveCatmullRom:p_,curveLinear:Op,curveLinearClosed:G3,curveMonotoneX:v_,curveMonotoneY:x_,curveNatural:V3,curveStep:H3,curveStepAfter:w_,curveStepBefore:b_},zCe=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,GCe=o(function(t,e){let r=NX(t,/(?:init\b)|(?:initialize\b)/),n={};if(Array.isArray(r)){let s=r.map(l=>l.args);op(s),n=Gn(n,[...s])}else n=r.args;if(!n)return;let i=np(t,e),a="config";return n[a]!==void 0&&(i==="flowchart-v2"&&(i="flowchart"),n[i]=n[a],delete n[a]),n},"detectInit"),NX=o(function(t,e=null){try{let r=new RegExp(`[%]{2}(?![{]${zCe.source})(?=[}][%]{2}).* -`,"ig");t=t.trim().replace(r,"").replace(/'/gm,'"'),Y.debug(`Detecting diagram directive${e!==null?" type:"+e:""} based on the text:${t}`);let n,i=[];for(;(n=zf.exec(t))!==null;)if(n.index===zf.lastIndex&&zf.lastIndex++,n&&!e||e&&n[1]?.match(e)||e&&n[2]?.match(e)){let a=n[1]?n[1]:n[2],s=n[3]?n[3].trim():n[4]?JSON.parse(n[4].trim()):null;i.push({type:a,args:s})}return i.length===0?{type:t,args:null}:i.length===1?i[0]:i}catch(r){return Y.error(`ERROR: ${r.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},"detectDirective"),RX=o(function(t){return t.replace(zf,"")},"removeDirectives"),$Ce=o(function(t,e){for(let[r,n]of e.entries())if(n.match(t))return r;return-1},"isSubstringInArray");o(Q_,"interpolateToCurve");o(VCe,"formatUrl");UCe=o((t,...e)=>{let r=t.split("."),n=r.length-1,i=r[n],a=window;for(let s=0;s{let r=Math.pow(10,e);return Math.round(t*r)/r},"roundNumber"),Z_=o((t,e)=>{let r,n=e;for(let i of t){if(r){let a=MX(i,r);if(a=1)return{x:i.x,y:i.y};if(s>0&&s<1)return{x:_X((1-s)*r.x+s*i.x,5),y:_X((1-s)*r.y+s*i.y,5)}}}r=i}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),YCe=o((t,e,r)=>{Y.info(`our points ${JSON.stringify(e)}`),e[0]!==r&&(e=e.reverse());let i=Z_(e,25),a=t?10:5,s=Math.atan2(e[0].y-i.y,e[0].x-i.x),l={x:0,y:0};return l.x=Math.sin(s)*a+(e[0].x+i.x)/2,l.y=-Math.cos(s)*a+(e[0].y+i.y)/2,l},"calcCardinalityPosition");o(qCe,"calcTerminalLabelPosition");o(J_,"getStylesFromArray");LX=0,e9=o(()=>(LX++,"id-"+Math.random().toString(36).substr(2,12)+"-"+LX),"generateId");o(XCe,"makeRandomHex");t9=o(t=>XCe(t.length),"random"),jCe=o(function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},"getTextObj"),KCe=o(function(t,e){let r=e.text.replace(je.lineBreakRegex," "),[,n]=Fo(e.fontSize),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.style("text-anchor",e.anchor),i.style("font-family",e.fontFamily),i.style("font-size",n),i.style("font-weight",e.fontWeight),i.attr("fill",e.fill),e.class!==void 0&&i.attr("class",e.class);let a=i.append("tspan");return a.attr("x",e.x+e.textMargin*2),a.attr("fill",e.fill),a.text(r),i},"drawSimpleText"),r9=Vp((t,e,r)=>{if(!t||(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
"},r),je.lineBreakRegex.test(t)))return t;let n=t.split(" ").filter(Boolean),i=[],a="";return n.forEach((s,l)=>{let u=Js(`${s} `,r),h=Js(a,r);if(u>e){let{hyphenatedStrings:p,remainingWord:m}=QCe(s,e,"-",r);i.push(a,...p),a=m}else h+u>=e?(i.push(a),a=s):a=[a,s].filter(Boolean).join(" ");l+1===n.length&&i.push(a)}),i.filter(s=>s!=="").join(r.joinWith)},(t,e,r)=>`${t}${e}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),QCe=Vp((t,e,r="-",n)=>{n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},n);let i=[...t],a=[],s="";return i.forEach((l,u)=>{let h=`${s}${l}`;if(Js(h,n)>=e){let d=u+1,p=i.length===d,m=`${h}${r}`;a.push(p?h:m),s=""}else s=h}),{hyphenatedStrings:a,remainingWord:s}},(t,e,r="-",n)=>`${t}${e}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`);o(d5,"calculateTextHeight");o(Js,"calculateTextWidth");n9=Vp((t,e)=>{let{fontSize:r=12,fontFamily:n="Arial",fontWeight:i=400}=e;if(!t)return{width:0,height:0};let[,a]=Fo(r),s=["sans-serif",n],l=t.split(je.lineBreakRegex),u=[],h=ze("body");if(!h.remove)return{width:0,height:0,lineHeight:0};let f=h.append("svg");for(let p of s){let m=0,g={width:0,height:0,lineHeight:0};for(let y of l){let v=jCe();v.text=y||K_;let x=KCe(f,v).style("font-size",a).style("font-weight",i).style("font-family",p),b=(x._groups||x)[0][0].getBBox();if(b.width===0&&b.height===0)throw new Error("svg element not in render tree");g.width=Math.round(Math.max(g.width,b.width)),m=Math.round(b.height),g.height+=m,g.lineHeight=Math.round(Math.max(g.lineHeight,m))}u.push(g)}f.remove();let d=isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1;return u[d]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`),j_=class{constructor(e=!1,r){this.count=0;this.count=r?r.length:0,this.next=e?()=>this.count++:()=>Date.now()}static{o(this,"InitIDGenerator")}},ZCe=o(function(t){return f5=f5||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),f5.innerHTML=t,unescape(f5.textContent)},"entityDecode");o(i9,"isDetailedError");JCe=o((t,e,r,n)=>{if(!n)return;let i=t.node()?.getBBox();i&&t.append("text").text(n).attr("text-anchor","middle").attr("x",i.x+i.width/2).attr("y",-r).attr("class",e)},"insertTitle"),Fo=o(t=>{if(typeof t=="number")return[t,t+"px"];let e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]},"parseFontSize");o(ws,"cleanAndMerge");Ut={assignWithDepth:Gn,wrapLabel:r9,calculateTextHeight:d5,calculateTextWidth:Js,calculateTextDimensions:n9,cleanAndMerge:ws,detectInit:GCe,detectDirective:NX,isSubstringInArray:$Ce,interpolateToCurve:Q_,calcLabelPosition:WCe,calcCardinalityPosition:YCe,calcTerminalLabelPosition:qCe,formatUrl:VCe,getStylesFromArray:J_,generateId:e9,random:t9,runFunc:UCe,entityDecode:ZCe,insertTitle:JCe,parseFontSize:Fo,InitIDGenerator:j_},IX=o(function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/#\w+;/g,function(r){let n=r.substring(1,r.length-1);return/^\+?\d+$/.test(n)?"\uFB02\xB0\xB0"+n+"\xB6\xDF":"\uFB02\xB0"+n+"\xB6\xDF"}),e},"encodeEntities"),Ca=o(function(t){return t.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities"),p5=o((t,e,{counter:r=0,prefix:n,suffix:i})=>`${n?`${n}_`:""}${t}_${e}_${r}${i?`_${i}`:""}`,"getEdgeId");o(Fn,"handleUndefinedAttr")});function Ll(t,e,r,n,i){if(!e[t].width)if(r)e[t].text=r9(e[t].text,i,n),e[t].textLines=e[t].text.split(je.lineBreakRegex).length,e[t].width=i,e[t].height=d5(e[t].text,n);else{let a=e[t].text.split(je.lineBreakRegex);e[t].textLines=a.length;let s=0;e[t].height=0,e[t].width=0;for(let l of a)e[t].width=Math.max(Js(l,n),e[t].width),s=d5(l,n),e[t].height=e[t].height+s}}function zX(t,e,r,n,i){let a=new v5(i);a.data.widthLimit=r.data.widthLimit/Math.min(a9,n.length);for(let[s,l]of n.entries()){let u=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=u,u=l.image.Y+l.image.height);let h=l.wrap&&Gt.wrap,f=m5(Gt);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",Ll("label",l,h,f,a.data.widthLimit),l.label.Y=u+8,u=l.label.Y+l.label.height,l.type&&l.type.text!==""){l.type.text="["+l.type.text+"]";let g=m5(Gt);Ll("type",l,h,g,a.data.widthLimit),l.type.Y=u+5,u=l.type.Y+l.type.height}if(l.descr&&l.descr.text!==""){let g=m5(Gt);g.fontSize=g.fontSize-2,Ll("descr",l,h,g,a.data.widthLimit),l.descr.Y=u+20,u=l.descr.Y+l.descr.height}if(s==0||s%a9===0){let g=r.data.startx+Gt.diagramMarginX,y=r.data.stopy+Gt.diagramMarginY+u;a.setData(g,g,y,y)}else{let g=a.data.stopx!==a.data.startx?a.data.stopx+Gt.diagramMarginX:a.data.startx,y=a.data.starty;a.setData(g,g,y,y)}a.name=l.alias;let d=i.db.getC4ShapeArray(l.alias),p=i.db.getC4ShapeKeys(l.alias);p.length>0&&FX(a,t,d,p),e=l.alias;let m=i.db.getBoundarys(e);m.length>0&&zX(t,e,a,m,i),l.alias!=="global"&&BX(t,l,a),r.data.stopy=Math.max(a.data.stopy+Gt.c4ShapeMargin,r.data.stopy),r.data.stopx=Math.max(a.data.stopx+Gt.c4ShapeMargin,r.data.stopx),g5=Math.max(g5,r.data.stopx),y5=Math.max(y5,r.data.stopy)}}var g5,y5,PX,a9,Gt,v5,s9,ov,m5,e7e,BX,FX,Ts,OX,t7e,r7e,n7e,o9,GX=M(()=>{"use strict";mr();OY();ht();PS();fr();l7();Vt();ip();hr();ni();g5=0,y5=0,PX=4,a9=2;I1.yy=oy;Gt={},v5=class{static{o(this,"Bounds")}constructor(e){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,s9(e.db.getConfig())}setData(e,r,n,i){this.nextData.startx=this.data.startx=e,this.nextData.stopx=this.data.stopx=r,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=i}updateVal(e,r,n,i){e[r]===void 0?e[r]=n:e[r]=i(n,e[r])}insert(e){this.nextData.cnt=this.nextData.cnt+1;let r=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+e.margin:this.nextData.stopx+e.margin*2,n=r+e.width,i=this.nextData.starty+e.margin*2,a=i+e.height;(r>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>PX)&&(r=this.nextData.startx+e.margin+Gt.nextLinePaddingX,i=this.nextData.stopy+e.margin*2,this.nextData.stopx=n=r+e.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=a=i+e.height,this.nextData.cnt=1),e.x=r,e.y=i,this.updateVal(this.data,"startx",r,Math.min),this.updateVal(this.data,"starty",i,Math.min),this.updateVal(this.data,"stopx",n,Math.max),this.updateVal(this.data,"stopy",a,Math.max),this.updateVal(this.nextData,"startx",r,Math.min),this.updateVal(this.nextData,"starty",i,Math.min),this.updateVal(this.nextData,"stopx",n,Math.max),this.updateVal(this.nextData,"stopy",a,Math.max)}init(e){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},s9(e.db.getConfig())}bumpLastMargin(e){this.data.stopx+=e,this.data.stopy+=e}},s9=o(function(t){Gn(Gt,t),t.fontFamily&&(Gt.personFontFamily=Gt.systemFontFamily=Gt.messageFontFamily=t.fontFamily),t.fontSize&&(Gt.personFontSize=Gt.systemFontSize=Gt.messageFontSize=t.fontSize),t.fontWeight&&(Gt.personFontWeight=Gt.systemFontWeight=Gt.messageFontWeight=t.fontWeight)},"setConf"),ov=o((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"c4ShapeFont"),m5=o(t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight}),"boundaryFont"),e7e=o(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont");o(Ll,"calcC4ShapeTextWH");BX=o(function(t,e,r){e.x=r.data.startx,e.y=r.data.starty,e.width=r.data.stopx-r.data.startx,e.height=r.data.stopy-r.data.starty,e.label.y=Gt.c4ShapeMargin-35;let n=e.wrap&&Gt.wrap,i=m5(Gt);i.fontSize=i.fontSize+2,i.fontWeight="bold";let a=Js(e.label.text,i);Ll("label",e,n,i,a),Cl.drawBoundary(t,e,Gt)},"drawBoundary"),FX=o(function(t,e,r,n){let i=0;for(let a of n){i=0;let s=r[a],l=ov(Gt,s.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,s.typeC4Shape.width=Js("\xAB"+s.typeC4Shape.text+"\xBB",l),s.typeC4Shape.height=l.fontSize+2,s.typeC4Shape.Y=Gt.c4ShapePadding,i=s.typeC4Shape.Y+s.typeC4Shape.height-4,s.image={width:0,height:0,Y:0},s.typeC4Shape.text){case"person":case"external_person":s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height;break}s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height);let u=s.wrap&&Gt.wrap,h=Gt.width-Gt.c4ShapePadding*2,f=ov(Gt,s.typeC4Shape.text);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",Ll("label",s,u,f,h),s.label.Y=i+8,i=s.label.Y+s.label.height,s.type&&s.type.text!==""){s.type.text="["+s.type.text+"]";let m=ov(Gt,s.typeC4Shape.text);Ll("type",s,u,m,h),s.type.Y=i+5,i=s.type.Y+s.type.height}else if(s.techn&&s.techn.text!==""){s.techn.text="["+s.techn.text+"]";let m=ov(Gt,s.techn.text);Ll("techn",s,u,m,h),s.techn.Y=i+5,i=s.techn.Y+s.techn.height}let d=i,p=s.label.width;if(s.descr&&s.descr.text!==""){let m=ov(Gt,s.typeC4Shape.text);Ll("descr",s,u,m,h),s.descr.Y=i+20,i=s.descr.Y+s.descr.height,p=Math.max(s.label.width,s.descr.width),d=i-s.descr.textLines*5}p=p+Gt.c4ShapePadding,s.width=Math.max(s.width||Gt.width,p,Gt.width),s.height=Math.max(s.height||Gt.height,d,Gt.height),s.margin=s.margin||Gt.c4ShapeMargin,t.insert(s),Cl.drawC4Shape(e,s,Gt)}t.bumpLastMargin(Gt.c4ShapeMargin)},"drawC4ShapeArray"),Ts=class{static{o(this,"Point")}constructor(e,r){this.x=e,this.y=r}},OX=o(function(t,e){let r=t.x,n=t.y,i=e.x,a=e.y,s=r+t.width/2,l=n+t.height/2,u=Math.abs(r-i),h=Math.abs(n-a),f=h/u,d=t.height/t.width,p=null;return n==a&&ri?p=new Ts(r,l):r==i&&na&&(p=new Ts(s,n)),r>i&&n=f?p=new Ts(r,l+f*t.width/2):p=new Ts(s-u/h*t.height/2,n+t.height):r=f?p=new Ts(r+t.width,l+f*t.width/2):p=new Ts(s+u/h*t.height/2,n+t.height):ra?d>=f?p=new Ts(r+t.width,l-f*t.width/2):p=new Ts(s+t.height/2*u/h,n):r>i&&n>a&&(d>=f?p=new Ts(r,l-t.width/2*f):p=new Ts(s-t.height/2*u/h,n)),p},"getIntersectPoint"),t7e=o(function(t,e){let r={x:0,y:0};r.x=e.x+e.width/2,r.y=e.y+e.height/2;let n=OX(t,r);r.x=t.x+t.width/2,r.y=t.y+t.height/2;let i=OX(e,r);return{startPoint:n,endPoint:i}},"getIntersectPoints"),r7e=o(function(t,e,r,n){let i=0;for(let a of e){i=i+1;let s=a.wrap&&Gt.wrap,l=e7e(Gt);n.db.getC4Type()==="C4Dynamic"&&(a.label.text=i+": "+a.label.text);let h=Js(a.label.text,l);Ll("label",a,s,l,h),a.techn&&a.techn.text!==""&&(h=Js(a.techn.text,l),Ll("techn",a,s,l,h)),a.descr&&a.descr.text!==""&&(h=Js(a.descr.text,l),Ll("descr",a,s,l,h));let f=r(a.from),d=r(a.to),p=t7e(f,d);a.startPoint=p.startPoint,a.endPoint=p.endPoint}Cl.drawRels(t,e,Gt)},"drawRels");o(zX,"drawInsideBoundary");n7e=o(function(t,e,r,n){Gt=de().c4;let i=de().securityLevel,a;i==="sandbox"&&(a=ze("#i"+e));let s=i==="sandbox"?ze(a.nodes()[0].contentDocument.body):ze("body"),l=n.db;n.db.setWrap(Gt.wrap),PX=l.getC4ShapeInRow(),a9=l.getC4BoundaryInRow(),Y.debug(`C:${JSON.stringify(Gt,null,2)}`);let u=i==="sandbox"?s.select(`[id="${e}"]`):ze(`[id="${e}"]`);Cl.insertComputerIcon(u),Cl.insertDatabaseIcon(u),Cl.insertClockIcon(u);let h=new v5(n);h.setData(Gt.diagramMarginX,Gt.diagramMarginX,Gt.diagramMarginY,Gt.diagramMarginY),h.data.widthLimit=screen.availWidth,g5=Gt.diagramMarginX,y5=Gt.diagramMarginY;let f=n.db.getTitle(),d=n.db.getBoundarys("");zX(u,"",h,d,n),Cl.insertArrowHead(u),Cl.insertArrowEnd(u),Cl.insertArrowCrossHead(u),Cl.insertArrowFilledHead(u),r7e(u,n.db.getRels(),n.db.getC4Shape,n),h.data.stopx=g5,h.data.stopy=y5;let p=h.data,g=p.stopy-p.starty+2*Gt.diagramMarginY,v=p.stopx-p.startx+2*Gt.diagramMarginX;f&&u.append("text").text(f).attr("x",(p.stopx-p.startx)/2-4*Gt.diagramMarginX).attr("y",p.starty+Gt.diagramMarginY),Zr(u,g,v,Gt.useMaxWidth);let x=f?60:0;u.attr("viewBox",p.startx-Gt.diagramMarginX+" -"+(Gt.diagramMarginY+x)+" "+v+" "+(g+x)),Y.debug("models:",p)},"draw"),o9={drawPersonOrSystemArray:FX,drawBoundary:BX,setConf:s9,draw:n7e}});var i7e,$X,VX=M(()=>{"use strict";i7e=o(t=>`.person { +`},"getStyles"),C$=o((t,e)=>{e!==void 0&&(d3[t]=e)},"addStylesForDiagram"),A$=M4e});var zy={};pr(zy,{clear:()=>Dr,getAccDescription:()=>Br,getAccTitle:()=>Or,getDiagramTitle:()=>Fr,setAccDescription:()=>Pr,setAccTitle:()=>Mr,setDiagramTitle:()=>Zr});var V7,U7,H7,W7,Dr,Mr,Or,Pr,Br,Zr,Fr,ki=M(()=>{"use strict";gr();ka();V7="",U7="",H7="",W7=o(t=>Tr(t,mr()),"sanitizeText"),Dr=o(()=>{V7="",H7="",U7=""},"clear"),Mr=o(t=>{V7=W7(t).replace(/^\s+/g,"")},"setAccTitle"),Or=o(()=>V7,"getAccTitle"),Pr=o(t=>{H7=W7(t).replace(/\n\s+/g,` +`)},"setAccDescription"),Br=o(()=>H7,"getAccDescription"),Zr=o(t=>{U7=W7(t)},"setDiagramTitle"),Fr=o(()=>U7,"getDiagramTitle")});var _$,I4e,me,Gy,m3,$y,Y7,O4e,p3,rd,Vy,q7,Gt=M(()=>{"use strict";Wf();vt();ka();gr();Ti();$7();ki();_$=Y,I4e=my,me=mr,Gy=P4,m3=ih,$y=o(t=>Tr(t,me()),"sanitizeText"),Y7=ko,O4e=o(()=>zy,"getCommonDb"),p3={},rd=o((t,e,r)=>{p3[t]&&_$.warn(`Diagram with id ${t} already registered. Overwriting.`),p3[t]=e,r&&EC(t,r),C$(t,e.styles),e.injectUtils?.(_$,I4e,me,$y,Y7,O4e(),()=>{})},"registerDiagram"),Vy=o(t=>{if(t in p3)return p3[t];throw new q7(t)},"getDiagram"),q7=class extends Error{static{o(this,"DiagramNotFoundError")}constructor(e){super(`Diagram ${e} not found.`)}}});var ol,fh,Qa,sl,ec,Uy,X7,j7,g3,y3,D$,P4e,B4e,F4e,z4e,G4e,$4e,V4e,U4e,H4e,W4e,q4e,Y4e,X4e,j4e,K4e,Q4e,Z4e,L$,J4e,e3e,R$,t3e,r3e,n3e,i3e,dh,a3e,s3e,o3e,l3e,c3e,Hy,K7=M(()=>{"use strict";Gt();gr();ki();ol=[],fh=[""],Qa="global",sl="",ec=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Uy=[],X7="",j7=!1,g3=4,y3=2,P4e=o(function(){return D$},"getC4Type"),B4e=o(function(t){D$=Tr(t,me())},"setC4Type"),F4e=o(function(t,e,r,n,i,a,s,l,u){if(t==null||e===void 0||e===null||r===void 0||r===null||n===void 0||n===null)return;let h={},f=Uy.find(d=>d.from===e&&d.to===r);if(f?h=f:Uy.push(h),h.type=t,h.from=e,h.to=r,h.label={text:n},i==null)h.techn={text:""};else if(typeof i=="object"){let[d,p]=Object.entries(i)[0];h[d]={text:p}}else h.techn={text:i};if(a==null)h.descr={text:""};else if(typeof a=="object"){let[d,p]=Object.entries(a)[0];h[d]={text:p}}else h.descr={text:a};if(typeof s=="object"){let[d,p]=Object.entries(s)[0];h[d]=p}else h.sprite=s;if(typeof l=="object"){let[d,p]=Object.entries(l)[0];h[d]=p}else h.tags=l;if(typeof u=="object"){let[d,p]=Object.entries(u)[0];h[d]=p}else h.link=u;h.wrap=dh()},"addRel"),z4e=o(function(t,e,r,n,i,a,s){if(e===null||r===null)return;let l={},u=ol.find(h=>h.alias===e);if(u&&e===u.alias?l=u:(l.alias=e,ol.push(l)),r==null?l.label={text:""}:l.label={text:r},n==null)l.descr={text:""};else if(typeof n=="object"){let[h,f]=Object.entries(n)[0];l[h]={text:f}}else l.descr={text:n};if(typeof i=="object"){let[h,f]=Object.entries(i)[0];l[h]=f}else l.sprite=i;if(typeof a=="object"){let[h,f]=Object.entries(a)[0];l[h]=f}else l.tags=a;if(typeof s=="object"){let[h,f]=Object.entries(s)[0];l[h]=f}else l.link=s;l.typeC4Shape={text:t},l.parentBoundary=Qa,l.wrap=dh()},"addPersonOrSystem"),G4e=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=ol.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,ol.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof a=="object"){let[f,d]=Object.entries(a)[0];u[f]=d}else u.sprite=a;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.wrap=dh(),u.typeC4Shape={text:t},u.parentBoundary=Qa},"addContainer"),$4e=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=ol.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,ol.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof a=="object"){let[f,d]=Object.entries(a)[0];u[f]=d}else u.sprite=a;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.wrap=dh(),u.typeC4Shape={text:t},u.parentBoundary=Qa},"addComponent"),V4e=o(function(t,e,r,n,i){if(t===null||e===null)return;let a={},s=ec.find(l=>l.alias===t);if(s&&t===s.alias?a=s:(a.alias=t,ec.push(a)),e==null?a.label={text:""}:a.label={text:e},r==null)a.type={text:"system"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=Qa,a.wrap=dh(),sl=Qa,Qa=t,fh.push(sl)},"addPersonOrSystemBoundary"),U4e=o(function(t,e,r,n,i){if(t===null||e===null)return;let a={},s=ec.find(l=>l.alias===t);if(s&&t===s.alias?a=s:(a.alias=t,ec.push(a)),e==null?a.label={text:""}:a.label={text:e},r==null)a.type={text:"container"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=Qa,a.wrap=dh(),sl=Qa,Qa=t,fh.push(sl)},"addContainerBoundary"),H4e=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=ec.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,ec.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.type={text:"node"};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.type={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.nodeType=t,u.parentBoundary=Qa,u.wrap=dh(),sl=Qa,Qa=e,fh.push(sl)},"addDeploymentNode"),W4e=o(function(){Qa=sl,fh.pop(),sl=fh.pop(),fh.push(sl)},"popBoundaryParseStack"),q4e=o(function(t,e,r,n,i,a,s,l,u,h,f){let d=ol.find(p=>p.alias===e);if(!(d===void 0&&(d=ec.find(p=>p.alias===e),d===void 0))){if(r!=null)if(typeof r=="object"){let[p,m]=Object.entries(r)[0];d[p]=m}else d.bgColor=r;if(n!=null)if(typeof n=="object"){let[p,m]=Object.entries(n)[0];d[p]=m}else d.fontColor=n;if(i!=null)if(typeof i=="object"){let[p,m]=Object.entries(i)[0];d[p]=m}else d.borderColor=i;if(a!=null)if(typeof a=="object"){let[p,m]=Object.entries(a)[0];d[p]=m}else d.shadowing=a;if(s!=null)if(typeof s=="object"){let[p,m]=Object.entries(s)[0];d[p]=m}else d.shape=s;if(l!=null)if(typeof l=="object"){let[p,m]=Object.entries(l)[0];d[p]=m}else d.sprite=l;if(u!=null)if(typeof u=="object"){let[p,m]=Object.entries(u)[0];d[p]=m}else d.techn=u;if(h!=null)if(typeof h=="object"){let[p,m]=Object.entries(h)[0];d[p]=m}else d.legendText=h;if(f!=null)if(typeof f=="object"){let[p,m]=Object.entries(f)[0];d[p]=m}else d.legendSprite=f}},"updateElStyle"),Y4e=o(function(t,e,r,n,i,a,s){let l=Uy.find(u=>u.from===e&&u.to===r);if(l!==void 0){if(n!=null)if(typeof n=="object"){let[u,h]=Object.entries(n)[0];l[u]=h}else l.textColor=n;if(i!=null)if(typeof i=="object"){let[u,h]=Object.entries(i)[0];l[u]=h}else l.lineColor=i;if(a!=null)if(typeof a=="object"){let[u,h]=Object.entries(a)[0];l[u]=parseInt(h)}else l.offsetX=parseInt(a);if(s!=null)if(typeof s=="object"){let[u,h]=Object.entries(s)[0];l[u]=parseInt(h)}else l.offsetY=parseInt(s)}},"updateRelStyle"),X4e=o(function(t,e,r){let n=g3,i=y3;if(typeof e=="object"){let a=Object.values(e)[0];n=parseInt(a)}else n=parseInt(e);if(typeof r=="object"){let a=Object.values(r)[0];i=parseInt(a)}else i=parseInt(r);n>=1&&(g3=n),i>=1&&(y3=i)},"updateLayoutConfig"),j4e=o(function(){return g3},"getC4ShapeInRow"),K4e=o(function(){return y3},"getC4BoundaryInRow"),Q4e=o(function(){return Qa},"getCurrentBoundaryParse"),Z4e=o(function(){return sl},"getParentBoundaryParse"),L$=o(function(t){return t==null?ol:ol.filter(e=>e.parentBoundary===t)},"getC4ShapeArray"),J4e=o(function(t){return ol.find(e=>e.alias===t)},"getC4Shape"),e3e=o(function(t){return Object.keys(L$(t))},"getC4ShapeKeys"),R$=o(function(t){return t==null?ec:ec.filter(e=>e.parentBoundary===t)},"getBoundaries"),t3e=R$,r3e=o(function(){return Uy},"getRels"),n3e=o(function(){return X7},"getTitle"),i3e=o(function(t){j7=t},"setWrap"),dh=o(function(){return j7},"autoWrap"),a3e=o(function(){ol=[],ec=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],sl="",Qa="global",fh=[""],Uy=[],fh=[""],X7="",j7=!1,g3=4,y3=2},"clear"),s3e={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},o3e={FILLED:0,OPEN:1},l3e={LEFTOF:0,RIGHTOF:1,OVER:2},c3e=o(function(t){X7=Tr(t,me())},"setTitle"),Hy={addPersonOrSystem:z4e,addPersonOrSystemBoundary:V4e,addContainer:G4e,addContainerBoundary:U4e,addComponent:$4e,addDeploymentNode:H4e,popBoundaryParseStack:W4e,addRel:F4e,updateElStyle:q4e,updateRelStyle:Y4e,updateLayoutConfig:X4e,autoWrap:dh,setWrap:i3e,getC4ShapeArray:L$,getC4Shape:J4e,getC4ShapeKeys:e3e,getBoundaries:R$,getBoundarys:t3e,getCurrentBoundaryParse:Q4e,getParentBoundaryParse:Z4e,getRels:r3e,getTitle:n3e,getC4Type:P4e,getC4ShapeInRow:j4e,getC4BoundaryInRow:K4e,setAccTitle:Mr,getAccTitle:Or,getAccDescription:Br,setAccDescription:Pr,getConfig:o(()=>me().c4,"getConfig"),clear:a3e,LINETYPE:s3e,ARROWTYPE:o3e,PLACEMENT:l3e,setTitle:c3e,setC4Type:B4e}});function nd(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}var Q7=M(()=>{"use strict";o(nd,"ascending")});function Z7(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}var N$=M(()=>{"use strict";o(Z7,"descending")});function id(t){let e,r,n;t.length!==2?(e=nd,r=o((l,u)=>nd(t(l),u),"compare2"),n=o((l,u)=>t(l)-u,"delta")):(e=t===nd||t===Z7?t:u3e,r=t,n=t);function i(l,u,h=0,f=l.length){if(h>>1;r(l[d],u)<0?h=d+1:f=d}while(h>>1;r(l[d],u)<=0?h=d+1:f=d}while(hh&&n(l[d-1],u)>-n(l[d],u)?d-1:d}return o(s,"center"),{left:i,center:s,right:a}}function u3e(){return 0}var J7=M(()=>{"use strict";Q7();N$();o(id,"bisector");o(u3e,"zero")});function eA(t){return t===null?NaN:+t}var M$=M(()=>{"use strict";o(eA,"number")});var I$,O$,h3e,f3e,tA,P$=M(()=>{"use strict";Q7();J7();M$();I$=id(nd),O$=I$.right,h3e=I$.left,f3e=id(eA).center,tA=O$});function B$({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):r}function d3e({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):(t.set(n,r),r)}function p3e({_intern:t,_key:e},r){let n=e(r);return t.has(n)&&(r=t.get(n),t.delete(n)),r}function m3e(t){return t!==null&&typeof t=="object"?t.valueOf():t}var d0,F$=M(()=>{"use strict";d0=class extends Map{static{o(this,"InternMap")}constructor(e,r=m3e){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),e!=null)for(let[n,i]of e)this.set(n,i)}get(e){return super.get(B$(this,e))}has(e){return super.has(B$(this,e))}set(e,r){return super.set(d3e(this,e),r)}delete(e){return super.delete(p3e(this,e))}};o(B$,"intern_get");o(d3e,"intern_set");o(p3e,"intern_delete");o(m3e,"keyof")});function v3(t,e,r){let n=(e-t)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),s=a>=g3e?10:a>=y3e?5:a>=v3e?2:1,l,u,h;return i<0?(h=Math.pow(10,-i)/s,l=Math.round(t*h),u=Math.round(e*h),l/he&&--u,h=-h):(h=Math.pow(10,i)*s,l=Math.round(t/h),u=Math.round(e/h),l*he&&--u),u0))return[];if(t===e)return[t];let n=e=i))return[];let l=a-i+1,u=new Array(l);if(n)if(s<0)for(let h=0;h{"use strict";g3e=Math.sqrt(50),y3e=Math.sqrt(10),v3e=Math.sqrt(2);o(v3,"tickSpec");o(x3,"ticks");o(Wy,"tickIncrement");o(p0,"tickStep")});function b3(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r=i)&&(r=i)}return r}var G$=M(()=>{"use strict";o(b3,"max")});function w3(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var $$=M(()=>{"use strict";o(w3,"min")});function T3(t,e,r){t=+t,e=+e,r=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((e-t)/r))|0,a=new Array(i);++n{"use strict";o(T3,"range")});var ph=M(()=>{"use strict";P$();J7();G$();$$();V$();z$();F$()});function rA(t){return t}var U$=M(()=>{"use strict";o(rA,"default")});function x3e(t){return"translate("+t+",0)"}function b3e(t){return"translate(0,"+t+")"}function w3e(t){return e=>+t(e)}function T3e(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function k3e(){return!this.__axis}function W$(t,e){var r=[],n=null,i=null,a=6,s=6,l=3,u=typeof window<"u"&&window.devicePixelRatio>1?0:.5,h=t===E3||t===k3?-1:1,f=t===k3||t===nA?"x":"y",d=t===E3||t===iA?x3e:b3e;function p(m){var g=n??(e.ticks?e.ticks.apply(e,r):e.domain()),y=i??(e.tickFormat?e.tickFormat.apply(e,r):rA),v=Math.max(a,0)+l,x=e.range(),b=+x[0]+u,w=+x[x.length-1]+u,C=(e.bandwidth?T3e:w3e)(e.copy(),u),T=m.selection?m.selection():m,E=T.selectAll(".domain").data([null]),A=T.selectAll(".tick").data(g,e).order(),S=A.exit(),_=A.enter().append("g").attr("class","tick"),I=A.select("line"),D=A.select("text");E=E.merge(E.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),A=A.merge(_),I=I.merge(_.append("line").attr("stroke","currentColor").attr(f+"2",h*a)),D=D.merge(_.append("text").attr("fill","currentColor").attr(f,h*v).attr("dy",t===E3?"0em":t===iA?"0.71em":"0.32em")),m!==T&&(E=E.transition(m),A=A.transition(m),I=I.transition(m),D=D.transition(m),S=S.transition(m).attr("opacity",H$).attr("transform",function(k){return isFinite(k=C(k))?d(k+u):this.getAttribute("transform")}),_.attr("opacity",H$).attr("transform",function(k){var L=this.parentNode.__axis;return d((L&&isFinite(L=L(k))?L:C(k))+u)})),S.remove(),E.attr("d",t===k3||t===nA?s?"M"+h*s+","+b+"H"+u+"V"+w+"H"+h*s:"M"+u+","+b+"V"+w:s?"M"+b+","+h*s+"V"+u+"H"+w+"V"+h*s:"M"+b+","+u+"H"+w),A.attr("opacity",1).attr("transform",function(k){return d(C(k)+u)}),I.attr(f+"2",h*a),D.attr(f,h*v).text(y),T.filter(k3e).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===nA?"start":t===k3?"end":"middle"),T.each(function(){this.__axis=C})}return o(p,"axis"),p.scale=function(m){return arguments.length?(e=m,p):e},p.ticks=function(){return r=Array.from(arguments),p},p.tickArguments=function(m){return arguments.length?(r=m==null?[]:Array.from(m),p):r.slice()},p.tickValues=function(m){return arguments.length?(n=m==null?null:Array.from(m),p):n&&n.slice()},p.tickFormat=function(m){return arguments.length?(i=m,p):i},p.tickSize=function(m){return arguments.length?(a=s=+m,p):a},p.tickSizeInner=function(m){return arguments.length?(a=+m,p):a},p.tickSizeOuter=function(m){return arguments.length?(s=+m,p):s},p.tickPadding=function(m){return arguments.length?(l=+m,p):l},p.offset=function(m){return arguments.length?(u=+m,p):u},p}function aA(t){return W$(E3,t)}function sA(t){return W$(iA,t)}var E3,nA,iA,k3,H$,q$=M(()=>{"use strict";U$();E3=1,nA=2,iA=3,k3=4,H$=1e-6;o(x3e,"translateX");o(b3e,"translateY");o(w3e,"number");o(T3e,"center");o(k3e,"entering");o(W$,"axis");o(aA,"axisTop");o(sA,"axisBottom")});var Y$=M(()=>{"use strict";q$()});function j$(){for(var t=0,e=arguments.length,r={},n;t=0&&(n=r.slice(i+1),r=r.slice(0,i)),r&&!e.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}function C3e(t,e){for(var r=0,n=t.length,i;r{"use strict";E3e={value:o(()=>{},"value")};o(j$,"dispatch");o(S3,"Dispatch");o(S3e,"parseTypenames");S3.prototype=j$.prototype={constructor:S3,on:o(function(t,e){var r=this._,n=S3e(t+"",r),i,a=-1,s=n.length;if(arguments.length<2){for(;++a0)for(var r=new Array(i),n=0,i,a;n{"use strict";K$()});var C3,cA,uA=M(()=>{"use strict";C3="http://www.w3.org/1999/xhtml",cA={svg:"http://www.w3.org/2000/svg",xhtml:C3,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}});function tc(t){var e=t+="",r=e.indexOf(":");return r>=0&&(e=t.slice(0,r))!=="xmlns"&&(t=t.slice(r+1)),cA.hasOwnProperty(e)?{space:cA[e],local:t}:t}var A3=M(()=>{"use strict";uA();o(tc,"default")});function A3e(t){return function(){var e=this.ownerDocument,r=this.namespaceURI;return r===C3&&e.documentElement.namespaceURI===C3?e.createElement(t):e.createElementNS(r,t)}}function _3e(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function qy(t){var e=tc(t);return(e.local?_3e:A3e)(e)}var hA=M(()=>{"use strict";A3();uA();o(A3e,"creatorInherit");o(_3e,"creatorFixed");o(qy,"default")});function D3e(){}function mh(t){return t==null?D3e:function(){return this.querySelector(t)}}var _3=M(()=>{"use strict";o(D3e,"none");o(mh,"default")});function fA(t){typeof t!="function"&&(t=mh(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";ll();_3();o(fA,"default")});function dA(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}var Z$=M(()=>{"use strict";o(dA,"array")});function L3e(){return[]}function m0(t){return t==null?L3e:function(){return this.querySelectorAll(t)}}var pA=M(()=>{"use strict";o(L3e,"empty");o(m0,"default")});function R3e(t){return function(){return dA(t.apply(this,arguments))}}function mA(t){typeof t=="function"?t=R3e(t):t=m0(t);for(var e=this._groups,r=e.length,n=[],i=[],a=0;a{"use strict";ll();Z$();pA();o(R3e,"arrayAll");o(mA,"default")});function g0(t){return function(){return this.matches(t)}}function D3(t){return function(e){return e.matches(t)}}var Yy=M(()=>{"use strict";o(g0,"default");o(D3,"childMatcher")});function M3e(t){return function(){return N3e.call(this.children,t)}}function I3e(){return this.firstElementChild}function gA(t){return this.select(t==null?I3e:M3e(typeof t=="function"?t:D3(t)))}var N3e,eV=M(()=>{"use strict";Yy();N3e=Array.prototype.find;o(M3e,"childFind");o(I3e,"childFirst");o(gA,"default")});function P3e(){return Array.from(this.children)}function B3e(t){return function(){return O3e.call(this.children,t)}}function yA(t){return this.selectAll(t==null?P3e:B3e(typeof t=="function"?t:D3(t)))}var O3e,tV=M(()=>{"use strict";Yy();O3e=Array.prototype.filter;o(P3e,"children");o(B3e,"childrenFilter");o(yA,"default")});function vA(t){typeof t!="function"&&(t=g0(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";ll();Yy();o(vA,"default")});function Xy(t){return new Array(t.length)}var xA=M(()=>{"use strict";o(Xy,"default")});function bA(){return new oi(this._enter||this._groups.map(Xy),this._parents)}function jy(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}var wA=M(()=>{"use strict";xA();ll();o(bA,"default");o(jy,"EnterNode");jy.prototype={constructor:jy,appendChild:o(function(t){return this._parent.insertBefore(t,this._next)},"appendChild"),insertBefore:o(function(t,e){return this._parent.insertBefore(t,e)},"insertBefore"),querySelector:o(function(t){return this._parent.querySelector(t)},"querySelector"),querySelectorAll:o(function(t){return this._parent.querySelectorAll(t)},"querySelectorAll")}});function TA(t){return function(){return t}}var nV=M(()=>{"use strict";o(TA,"default")});function F3e(t,e,r,n,i,a){for(var s=0,l,u=e.length,h=a.length;s=w&&(w=b+1);!(T=v[w])&&++w{"use strict";ll();wA();nV();o(F3e,"bindIndex");o(z3e,"bindKey");o(G3e,"datum");o(kA,"default");o($3e,"arraylike")});function EA(){return new oi(this._exit||this._groups.map(Xy),this._parents)}var aV=M(()=>{"use strict";xA();ll();o(EA,"default")});function SA(t,e,r){var n=this.enter(),i=this,a=this.exit();return typeof t=="function"?(n=t(n),n&&(n=n.selection())):n=n.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),r==null?a.remove():r(a),n&&i?n.merge(i).order():i}var sV=M(()=>{"use strict";o(SA,"default")});function CA(t){for(var e=t.selection?t.selection():t,r=this._groups,n=e._groups,i=r.length,a=n.length,s=Math.min(i,a),l=new Array(i),u=0;u{"use strict";ll();o(CA,"default")});function AA(){for(var t=this._groups,e=-1,r=t.length;++e=0;)(s=n[i])&&(a&&s.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(s,a),a=s);return this}var lV=M(()=>{"use strict";o(AA,"default")});function _A(t){t||(t=V3e);function e(d,p){return d&&p?t(d.__data__,p.__data__):!d-!p}o(e,"compareNode");for(var r=this._groups,n=r.length,i=new Array(n),a=0;ae?1:t>=e?0:NaN}var cV=M(()=>{"use strict";ll();o(_A,"default");o(V3e,"ascending")});function DA(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}var uV=M(()=>{"use strict";o(DA,"default")});function LA(){return Array.from(this)}var hV=M(()=>{"use strict";o(LA,"default")});function RA(){for(var t=this._groups,e=0,r=t.length;e{"use strict";o(RA,"default")});function NA(){let t=0;for(let e of this)++t;return t}var dV=M(()=>{"use strict";o(NA,"default")});function MA(){return!this.node()}var pV=M(()=>{"use strict";o(MA,"default")});function IA(t){for(var e=this._groups,r=0,n=e.length;r{"use strict";o(IA,"default")});function U3e(t){return function(){this.removeAttribute(t)}}function H3e(t){return function(){this.removeAttributeNS(t.space,t.local)}}function W3e(t,e){return function(){this.setAttribute(t,e)}}function q3e(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Y3e(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttribute(t):this.setAttribute(t,r)}}function X3e(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function OA(t,e){var r=tc(t);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((e==null?r.local?H3e:U3e:typeof e=="function"?r.local?X3e:Y3e:r.local?q3e:W3e)(r,e))}var gV=M(()=>{"use strict";A3();o(U3e,"attrRemove");o(H3e,"attrRemoveNS");o(W3e,"attrConstant");o(q3e,"attrConstantNS");o(Y3e,"attrFunction");o(X3e,"attrFunctionNS");o(OA,"default")});function Ky(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}var PA=M(()=>{"use strict";o(Ky,"default")});function j3e(t){return function(){this.style.removeProperty(t)}}function K3e(t,e,r){return function(){this.style.setProperty(t,e,r)}}function Q3e(t,e,r){return function(){var n=e.apply(this,arguments);n==null?this.style.removeProperty(t):this.style.setProperty(t,n,r)}}function BA(t,e,r){return arguments.length>1?this.each((e==null?j3e:typeof e=="function"?Q3e:K3e)(t,e,r??"")):gh(this.node(),t)}function gh(t,e){return t.style.getPropertyValue(e)||Ky(t).getComputedStyle(t,null).getPropertyValue(e)}var FA=M(()=>{"use strict";PA();o(j3e,"styleRemove");o(K3e,"styleConstant");o(Q3e,"styleFunction");o(BA,"default");o(gh,"styleValue")});function Z3e(t){return function(){delete this[t]}}function J3e(t,e){return function(){this[t]=e}}function e5e(t,e){return function(){var r=e.apply(this,arguments);r==null?delete this[t]:this[t]=r}}function zA(t,e){return arguments.length>1?this.each((e==null?Z3e:typeof e=="function"?e5e:J3e)(t,e)):this.node()[t]}var yV=M(()=>{"use strict";o(Z3e,"propertyRemove");o(J3e,"propertyConstant");o(e5e,"propertyFunction");o(zA,"default")});function vV(t){return t.trim().split(/^|\s+/)}function GA(t){return t.classList||new xV(t)}function xV(t){this._node=t,this._names=vV(t.getAttribute("class")||"")}function bV(t,e){for(var r=GA(t),n=-1,i=e.length;++n{"use strict";o(vV,"classArray");o(GA,"classList");o(xV,"ClassList");xV.prototype={add:o(function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},"add"),remove:o(function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},"remove"),contains:o(function(t){return this._names.indexOf(t)>=0},"contains")};o(bV,"classedAdd");o(wV,"classedRemove");o(t5e,"classedTrue");o(r5e,"classedFalse");o(n5e,"classedFunction");o($A,"default")});function i5e(){this.textContent=""}function a5e(t){return function(){this.textContent=t}}function s5e(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function VA(t){return arguments.length?this.each(t==null?i5e:(typeof t=="function"?s5e:a5e)(t)):this.node().textContent}var kV=M(()=>{"use strict";o(i5e,"textRemove");o(a5e,"textConstant");o(s5e,"textFunction");o(VA,"default")});function o5e(){this.innerHTML=""}function l5e(t){return function(){this.innerHTML=t}}function c5e(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function UA(t){return arguments.length?this.each(t==null?o5e:(typeof t=="function"?c5e:l5e)(t)):this.node().innerHTML}var EV=M(()=>{"use strict";o(o5e,"htmlRemove");o(l5e,"htmlConstant");o(c5e,"htmlFunction");o(UA,"default")});function u5e(){this.nextSibling&&this.parentNode.appendChild(this)}function HA(){return this.each(u5e)}var SV=M(()=>{"use strict";o(u5e,"raise");o(HA,"default")});function h5e(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function WA(){return this.each(h5e)}var CV=M(()=>{"use strict";o(h5e,"lower");o(WA,"default")});function qA(t){var e=typeof t=="function"?t:qy(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}var AV=M(()=>{"use strict";hA();o(qA,"default")});function f5e(){return null}function YA(t,e){var r=typeof t=="function"?t:qy(t),n=e==null?f5e:typeof e=="function"?e:mh(e);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}var _V=M(()=>{"use strict";hA();_3();o(f5e,"constantNull");o(YA,"default")});function d5e(){var t=this.parentNode;t&&t.removeChild(this)}function XA(){return this.each(d5e)}var DV=M(()=>{"use strict";o(d5e,"remove");o(XA,"default")});function p5e(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function m5e(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function jA(t){return this.select(t?m5e:p5e)}var LV=M(()=>{"use strict";o(p5e,"selection_cloneShallow");o(m5e,"selection_cloneDeep");o(jA,"default")});function KA(t){return arguments.length?this.property("__data__",t):this.node().__data__}var RV=M(()=>{"use strict";o(KA,"default")});function g5e(t){return function(e){t.call(this,e,this.__data__)}}function y5e(t){return t.trim().split(/^|\s+/).map(function(e){var r="",n=e.indexOf(".");return n>=0&&(r=e.slice(n+1),e=e.slice(0,n)),{type:e,name:r}})}function v5e(t){return function(){var e=this.__on;if(e){for(var r=0,n=-1,i=e.length,a;r{"use strict";o(g5e,"contextListener");o(y5e,"parseTypenames");o(v5e,"onRemove");o(x5e,"onAdd");o(QA,"default")});function MV(t,e,r){var n=Ky(t),i=n.CustomEvent;typeof i=="function"?i=new i(e,r):(i=n.document.createEvent("Event"),r?(i.initEvent(e,r.bubbles,r.cancelable),i.detail=r.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function b5e(t,e){return function(){return MV(this,t,e)}}function w5e(t,e){return function(){return MV(this,t,e.apply(this,arguments))}}function ZA(t,e){return this.each((typeof e=="function"?w5e:b5e)(t,e))}var IV=M(()=>{"use strict";PA();o(MV,"dispatchEvent");o(b5e,"dispatchConstant");o(w5e,"dispatchFunction");o(ZA,"default")});function*JA(){for(var t=this._groups,e=0,r=t.length;e{"use strict";o(JA,"default")});function oi(t,e){this._groups=t,this._parents=e}function PV(){return new oi([[document.documentElement]],e8)}function T5e(){return this}var e8,cu,ll=M(()=>{"use strict";Q$();J$();eV();tV();rV();iV();wA();aV();sV();oV();lV();cV();uV();hV();fV();dV();pV();mV();gV();FA();yV();TV();kV();EV();SV();CV();AV();_V();DV();LV();RV();NV();IV();OV();e8=[null];o(oi,"Selection");o(PV,"selection");o(T5e,"selection_selection");oi.prototype=PV.prototype={constructor:oi,select:fA,selectAll:mA,selectChild:gA,selectChildren:yA,filter:vA,data:kA,enter:bA,exit:EA,join:SA,merge:CA,selection:T5e,order:AA,sort:_A,call:DA,nodes:LA,node:RA,size:NA,empty:MA,each:IA,attr:OA,style:BA,property:zA,classed:$A,text:VA,html:UA,raise:HA,lower:WA,append:qA,insert:YA,remove:XA,clone:jA,datum:KA,on:QA,dispatch:ZA,[Symbol.iterator]:JA};cu=PV});function $e(t){return typeof t=="string"?new oi([[document.querySelector(t)]],[document.documentElement]):new oi([[t]],e8)}var BV=M(()=>{"use strict";ll();o($e,"default")});var cl=M(()=>{"use strict";Yy();A3();BV();ll();_3();pA();FA()});var FV=M(()=>{"use strict"});function yh(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function y0(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}var t8=M(()=>{"use strict";o(yh,"default");o(y0,"extend")});function vh(){}function GV(){return this.rgb().formatHex()}function L5e(){return this.rgb().formatHex8()}function R5e(){return YV(this).formatHsl()}function $V(){return this.rgb().formatRgb()}function hl(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=k5e.exec(t))?(r=e[1].length,e=parseInt(e[1],16),r===6?VV(e):r===3?new oa(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?L3(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?L3(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=E5e.exec(t))?new oa(e[1],e[2],e[3],1):(e=S5e.exec(t))?new oa(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=C5e.exec(t))?L3(e[1],e[2],e[3],e[4]):(e=A5e.exec(t))?L3(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=_5e.exec(t))?WV(e[1],e[2]/100,e[3]/100,1):(e=D5e.exec(t))?WV(e[1],e[2]/100,e[3]/100,e[4]):zV.hasOwnProperty(t)?VV(zV[t]):t==="transparent"?new oa(NaN,NaN,NaN,0):null}function VV(t){return new oa(t>>16&255,t>>8&255,t&255,1)}function L3(t,e,r,n){return n<=0&&(t=e=r=NaN),new oa(t,e,r,n)}function n8(t){return t instanceof vh||(t=hl(t)),t?(t=t.rgb(),new oa(t.r,t.g,t.b,t.opacity)):new oa}function x0(t,e,r,n){return arguments.length===1?n8(t):new oa(t,e,r,n??1)}function oa(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function UV(){return`#${ad(this.r)}${ad(this.g)}${ad(this.b)}`}function N5e(){return`#${ad(this.r)}${ad(this.g)}${ad(this.b)}${ad((isNaN(this.opacity)?1:this.opacity)*255)}`}function HV(){let t=M3(this.opacity);return`${t===1?"rgb(":"rgba("}${sd(this.r)}, ${sd(this.g)}, ${sd(this.b)}${t===1?")":`, ${t})`}`}function M3(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function sd(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function ad(t){return t=sd(t),(t<16?"0":"")+t.toString(16)}function WV(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new ul(t,e,r,n)}function YV(t){if(t instanceof ul)return new ul(t.h,t.s,t.l,t.opacity);if(t instanceof vh||(t=hl(t)),!t)return new ul;if(t instanceof ul)return t;t=t.rgb();var e=t.r/255,r=t.g/255,n=t.b/255,i=Math.min(e,r,n),a=Math.max(e,r,n),s=NaN,l=a-i,u=(a+i)/2;return l?(e===a?s=(r-n)/l+(r0&&u<1?0:s,new ul(s,l,u,t.opacity)}function XV(t,e,r,n){return arguments.length===1?YV(t):new ul(t,e,r,n??1)}function ul(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function qV(t){return t=(t||0)%360,t<0?t+360:t}function R3(t){return Math.max(0,Math.min(1,t||0))}function r8(t,e,r){return(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)*255}var Qy,N3,v0,Zy,rc,k5e,E5e,S5e,C5e,A5e,_5e,D5e,zV,i8=M(()=>{"use strict";t8();o(vh,"Color");Qy=.7,N3=1/Qy,v0="\\s*([+-]?\\d+)\\s*",Zy="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",rc="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",k5e=/^#([0-9a-f]{3,8})$/,E5e=new RegExp(`^rgb\\(${v0},${v0},${v0}\\)$`),S5e=new RegExp(`^rgb\\(${rc},${rc},${rc}\\)$`),C5e=new RegExp(`^rgba\\(${v0},${v0},${v0},${Zy}\\)$`),A5e=new RegExp(`^rgba\\(${rc},${rc},${rc},${Zy}\\)$`),_5e=new RegExp(`^hsl\\(${Zy},${rc},${rc}\\)$`),D5e=new RegExp(`^hsla\\(${Zy},${rc},${rc},${Zy}\\)$`),zV={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};yh(vh,hl,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:GV,formatHex:GV,formatHex8:L5e,formatHsl:R5e,formatRgb:$V,toString:$V});o(GV,"color_formatHex");o(L5e,"color_formatHex8");o(R5e,"color_formatHsl");o($V,"color_formatRgb");o(hl,"color");o(VV,"rgbn");o(L3,"rgba");o(n8,"rgbConvert");o(x0,"rgb");o(oa,"Rgb");yh(oa,x0,y0(vh,{brighter(t){return t=t==null?N3:Math.pow(N3,t),new oa(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Qy:Math.pow(Qy,t),new oa(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new oa(sd(this.r),sd(this.g),sd(this.b),M3(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:UV,formatHex:UV,formatHex8:N5e,formatRgb:HV,toString:HV}));o(UV,"rgb_formatHex");o(N5e,"rgb_formatHex8");o(HV,"rgb_formatRgb");o(M3,"clampa");o(sd,"clampi");o(ad,"hex");o(WV,"hsla");o(YV,"hslConvert");o(XV,"hsl");o(ul,"Hsl");yh(ul,XV,y0(vh,{brighter(t){return t=t==null?N3:Math.pow(N3,t),new ul(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Qy:Math.pow(Qy,t),new ul(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new oa(r8(t>=240?t-240:t+120,i,n),r8(t,i,n),r8(t<120?t+240:t-120,i,n),this.opacity)},clamp(){return new ul(qV(this.h),R3(this.s),R3(this.l),M3(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=M3(this.opacity);return`${t===1?"hsl(":"hsla("}${qV(this.h)}, ${R3(this.s)*100}%, ${R3(this.l)*100}%${t===1?")":`, ${t})`}`}}));o(qV,"clamph");o(R3,"clampt");o(r8,"hsl2rgb")});var jV,KV,QV=M(()=>{"use strict";jV=Math.PI/180,KV=180/Math.PI});function nU(t){if(t instanceof nc)return new nc(t.l,t.a,t.b,t.opacity);if(t instanceof uu)return iU(t);t instanceof oa||(t=n8(t));var e=l8(t.r),r=l8(t.g),n=l8(t.b),i=a8((.2225045*e+.7168786*r+.0606169*n)/JV),a,s;return e===r&&r===n?a=s=i:(a=a8((.4360747*e+.3850649*r+.1430804*n)/ZV),s=a8((.0139322*e+.0971045*r+.7141733*n)/eU)),new nc(116*i-16,500*(a-i),200*(i-s),t.opacity)}function c8(t,e,r,n){return arguments.length===1?nU(t):new nc(t,e,r,n??1)}function nc(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function a8(t){return t>M5e?Math.pow(t,1/3):t/rU+tU}function s8(t){return t>b0?t*t*t:rU*(t-tU)}function o8(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function l8(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function I5e(t){if(t instanceof uu)return new uu(t.h,t.c,t.l,t.opacity);if(t instanceof nc||(t=nU(t)),t.a===0&&t.b===0)return new uu(NaN,0{"use strict";t8();i8();QV();I3=18,ZV=.96422,JV=1,eU=.82521,tU=4/29,b0=6/29,rU=3*b0*b0,M5e=b0*b0*b0;o(nU,"labConvert");o(c8,"lab");o(nc,"Lab");yh(nc,c8,y0(vh,{brighter(t){return new nc(this.l+I3*(t??1),this.a,this.b,this.opacity)},darker(t){return new nc(this.l-I3*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,r=isNaN(this.b)?t:t-this.b/200;return e=ZV*s8(e),t=JV*s8(t),r=eU*s8(r),new oa(o8(3.1338561*e-1.6168667*t-.4906146*r),o8(-.9787684*e+1.9161415*t+.033454*r),o8(.0719453*e-.2289914*t+1.4052427*r),this.opacity)}}));o(a8,"xyz2lab");o(s8,"lab2xyz");o(o8,"lrgb2rgb");o(l8,"rgb2lrgb");o(I5e,"hclConvert");o(Jy,"hcl");o(uu,"Hcl");o(iU,"hcl2lab");yh(uu,Jy,y0(vh,{brighter(t){return new uu(this.h,this.c,this.l+I3*(t??1),this.opacity)},darker(t){return new uu(this.h,this.c,this.l-I3*(t??1),this.opacity)},rgb(){return iU(this).rgb()}}))});var w0=M(()=>{"use strict";i8();aU()});function u8(t,e,r,n,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*r+(1+3*t+3*a-3*s)*n+s*i)/6}function h8(t){var e=t.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,e-1):Math.floor(r*e),i=t[n],a=t[n+1],s=n>0?t[n-1]:2*i-a,l=n{"use strict";o(u8,"basis");o(h8,"default")});function d8(t){var e=t.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*e),i=t[(n+e-1)%e],a=t[n%e],s=t[(n+1)%e],l=t[(n+2)%e];return u8((r-n/e)*e,i,a,s,l)}}var sU=M(()=>{"use strict";f8();o(d8,"default")});var T0,p8=M(()=>{"use strict";T0=o(t=>()=>t,"default")});function oU(t,e){return function(r){return t+r*e}}function O5e(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}function lU(t,e){var r=e-t;return r?oU(t,r>180||r<-180?r-360*Math.round(r/360):r):T0(isNaN(t)?e:t)}function cU(t){return(t=+t)==1?hu:function(e,r){return r-e?O5e(e,r,t):T0(isNaN(e)?r:e)}}function hu(t,e){var r=e-t;return r?oU(t,r):T0(isNaN(t)?e:t)}var m8=M(()=>{"use strict";p8();o(oU,"linear");o(O5e,"exponential");o(lU,"hue");o(cU,"gamma");o(hu,"nogamma")});function uU(t){return function(e){var r=e.length,n=new Array(r),i=new Array(r),a=new Array(r),s,l;for(s=0;s{"use strict";w0();f8();sU();m8();od=o(function t(e){var r=cU(e);function n(i,a){var s=r((i=x0(i)).r,(a=x0(a)).r),l=r(i.g,a.g),u=r(i.b,a.b),h=hu(i.opacity,a.opacity);return function(f){return i.r=s(f),i.g=l(f),i.b=u(f),i.opacity=h(f),i+""}}return o(n,"rgb"),n.gamma=t,n},"rgbGamma")(1);o(uU,"rgbSpline");P5e=uU(h8),B5e=uU(d8)});function y8(t,e){e||(e=[]);var r=t?Math.min(e.length,t.length):0,n=e.slice(),i;return function(a){for(i=0;i{"use strict";o(y8,"default");o(hU,"isNumberArray")});function dU(t,e){var r=e?e.length:0,n=t?Math.min(r,t.length):0,i=new Array(n),a=new Array(r),s;for(s=0;s{"use strict";O3();o(dU,"genericArray")});function v8(t,e){var r=new Date;return t=+t,e=+e,function(n){return r.setTime(t*(1-n)+e*n),r}}var mU=M(()=>{"use strict";o(v8,"default")});function Xi(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}var ev=M(()=>{"use strict";o(Xi,"default")});function x8(t,e){var r={},n={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?r[i]=xh(t[i],e[i]):n[i]=e[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var gU=M(()=>{"use strict";O3();o(x8,"default")});function F5e(t){return function(){return t}}function z5e(t){return function(e){return t(e)+""}}function k0(t,e){var r=w8.lastIndex=b8.lastIndex=0,n,i,a,s=-1,l=[],u=[];for(t=t+"",e=e+"";(n=w8.exec(t))&&(i=b8.exec(e));)(a=i.index)>r&&(a=e.slice(r,a),l[s]?l[s]+=a:l[++s]=a),(n=n[0])===(i=i[0])?l[s]?l[s]+=i:l[++s]=i:(l[++s]=null,u.push({i:s,x:Xi(n,i)})),r=b8.lastIndex;return r{"use strict";ev();w8=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,b8=new RegExp(w8.source,"g");o(F5e,"zero");o(z5e,"one");o(k0,"default")});function xh(t,e){var r=typeof e,n;return e==null||r==="boolean"?T0(e):(r==="number"?Xi:r==="string"?(n=hl(e))?(e=n,od):k0:e instanceof hl?od:e instanceof Date?v8:hU(e)?y8:Array.isArray(e)?dU:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?x8:Xi)(t,e)}var O3=M(()=>{"use strict";w0();g8();pU();mU();ev();gU();T8();p8();fU();o(xh,"default")});function P3(t,e){return t=+t,e=+e,function(r){return Math.round(t*(1-r)+e*r)}}var yU=M(()=>{"use strict";o(P3,"default")});function F3(t,e,r,n,i,a){var s,l,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*r+e*n)&&(r-=t*u,n-=e*u),(l=Math.sqrt(r*r+n*n))&&(r/=l,n/=l,u/=l),t*n{"use strict";vU=180/Math.PI,B3={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};o(F3,"default")});function bU(t){let e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?B3:F3(e.a,e.b,e.c,e.d,e.e,e.f)}function wU(t){return t==null?B3:(z3||(z3=document.createElementNS("http://www.w3.org/2000/svg","g")),z3.setAttribute("transform",t),(t=z3.transform.baseVal.consolidate())?(t=t.matrix,F3(t.a,t.b,t.c,t.d,t.e,t.f)):B3)}var z3,TU=M(()=>{"use strict";xU();o(bU,"parseCss");o(wU,"parseSvg")});function kU(t,e,r,n){function i(h){return h.length?h.pop()+" ":""}o(i,"pop");function a(h,f,d,p,m,g){if(h!==d||f!==p){var y=m.push("translate(",null,e,null,r);g.push({i:y-4,x:Xi(h,d)},{i:y-2,x:Xi(f,p)})}else(d||p)&&m.push("translate("+d+e+p+r)}o(a,"translate");function s(h,f,d,p){h!==f?(h-f>180?f+=360:f-h>180&&(h+=360),p.push({i:d.push(i(d)+"rotate(",null,n)-2,x:Xi(h,f)})):f&&d.push(i(d)+"rotate("+f+n)}o(s,"rotate");function l(h,f,d,p){h!==f?p.push({i:d.push(i(d)+"skewX(",null,n)-2,x:Xi(h,f)}):f&&d.push(i(d)+"skewX("+f+n)}o(l,"skewX");function u(h,f,d,p,m,g){if(h!==d||f!==p){var y=m.push(i(m)+"scale(",null,",",null,")");g.push({i:y-4,x:Xi(h,d)},{i:y-2,x:Xi(f,p)})}else(d!==1||p!==1)&&m.push(i(m)+"scale("+d+","+p+")")}return o(u,"scale"),function(h,f){var d=[],p=[];return h=t(h),f=t(f),a(h.translateX,h.translateY,f.translateX,f.translateY,d,p),s(h.rotate,f.rotate,d,p),l(h.skewX,f.skewX,d,p),u(h.scaleX,h.scaleY,f.scaleX,f.scaleY,d,p),h=f=null,function(m){for(var g=-1,y=p.length,v;++g{"use strict";ev();TU();o(kU,"interpolateTransform");k8=kU(bU,"px, ","px)","deg)"),E8=kU(wU,", ",")",")")});function SU(t){return function(e,r){var n=t((e=Jy(e)).h,(r=Jy(r)).h),i=hu(e.c,r.c),a=hu(e.l,r.l),s=hu(e.opacity,r.opacity);return function(l){return e.h=n(l),e.c=i(l),e.l=a(l),e.opacity=s(l),e+""}}}var S8,G5e,CU=M(()=>{"use strict";w0();m8();o(SU,"hcl");S8=SU(lU),G5e=SU(hu)});var E0=M(()=>{"use strict";O3();ev();yU();T8();EU();g8();CU()});function sv(){return ld||(DU($5e),ld=iv.now()+V3)}function $5e(){ld=0}function av(){this._call=this._time=this._next=null}function U3(t,e,r){var n=new av;return n.restart(t,e,r),n}function LU(){sv(),++S0;for(var t=G3,e;t;)(e=ld-t._time)>=0&&t._call.call(void 0,e),t=t._next;--S0}function AU(){ld=($3=iv.now())+V3,S0=rv=0;try{LU()}finally{S0=0,U5e(),ld=0}}function V5e(){var t=iv.now(),e=t-$3;e>_U&&(V3-=e,$3=t)}function U5e(){for(var t,e=G3,r,n=1/0;e;)e._call?(n>e._time&&(n=e._time),t=e,e=e._next):(r=e._next,e._next=null,e=t?t._next=r:G3=r);nv=t,C8(n)}function C8(t){if(!S0){rv&&(rv=clearTimeout(rv));var e=t-ld;e>24?(t<1/0&&(rv=setTimeout(AU,t-iv.now()-V3)),tv&&(tv=clearInterval(tv))):(tv||($3=iv.now(),tv=setInterval(V5e,_U)),S0=1,DU(AU))}}var S0,rv,tv,_U,G3,nv,$3,ld,V3,iv,DU,A8=M(()=>{"use strict";S0=0,rv=0,tv=0,_U=1e3,$3=0,ld=0,V3=0,iv=typeof performance=="object"&&performance.now?performance:Date,DU=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};o(sv,"now");o($5e,"clearNow");o(av,"Timer");av.prototype=U3.prototype={constructor:av,restart:o(function(t,e,r){if(typeof t!="function")throw new TypeError("callback is not a function");r=(r==null?sv():+r)+(e==null?0:+e),!this._next&&nv!==this&&(nv?nv._next=this:G3=this,nv=this),this._call=t,this._time=r,C8()},"restart"),stop:o(function(){this._call&&(this._call=null,this._time=1/0,C8())},"stop")};o(U3,"timer");o(LU,"timerFlush");o(AU,"wake");o(V5e,"poke");o(U5e,"nap");o(C8,"sleep")});function ov(t,e,r){var n=new av;return e=e==null?0:+e,n.restart(i=>{n.stop(),t(i+e)},e,r),n}var RU=M(()=>{"use strict";A8();o(ov,"default")});var H3=M(()=>{"use strict";A8();RU()});function fu(t,e,r,n,i,a){var s=t.__transition;if(!s)t.__transition={};else if(r in s)return;q5e(t,r,{name:e,index:n,group:i,on:H5e,tween:W5e,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:IU})}function cv(t,e){var r=Pi(t,e);if(r.state>IU)throw new Error("too late; already scheduled");return r}function la(t,e){var r=Pi(t,e);if(r.state>W3)throw new Error("too late; already running");return r}function Pi(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function q5e(t,e,r){var n=t.__transition,i;n[e]=r,r.timer=U3(a,0,r.time);function a(h){r.state=NU,r.timer.restart(s,r.delay,r.time),r.delay<=h&&s(h-r.delay)}o(a,"schedule");function s(h){var f,d,p,m;if(r.state!==NU)return u();for(f in n)if(m=n[f],m.name===r.name){if(m.state===W3)return ov(s);m.state===MU?(m.state=lv,m.timer.stop(),m.on.call("interrupt",t,t.__data__,m.index,m.group),delete n[f]):+f{"use strict";lA();H3();H5e=oA("start","end","cancel","interrupt"),W5e=[],IU=0,NU=1,q3=2,W3=3,MU=4,Y3=5,lv=6;o(fu,"default");o(cv,"init");o(la,"set");o(Pi,"get");o(q5e,"create")});function uv(t,e){var r=t.__transition,n,i,a=!0,s;if(r){e=e==null?null:e+"";for(s in r){if((n=r[s]).name!==e){a=!1;continue}i=n.state>q3&&n.state{"use strict";bs();o(uv,"default")});function _8(t){return this.each(function(){uv(this,t)})}var PU=M(()=>{"use strict";OU();o(_8,"default")});function Y5e(t,e){var r,n;return function(){var i=la(this,t),a=i.tween;if(a!==r){n=r=a;for(var s=0,l=n.length;s{"use strict";bs();o(Y5e,"tweenRemove");o(X5e,"tweenFunction");o(D8,"default");o(C0,"tweenValue")});function fv(t,e){var r;return(typeof e=="number"?Xi:e instanceof hl?od:(r=hl(e))?(e=r,od):k0)(t,e)}var L8=M(()=>{"use strict";w0();E0();o(fv,"default")});function j5e(t){return function(){this.removeAttribute(t)}}function K5e(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Q5e(t,e,r){var n,i=r+"",a;return function(){var s=this.getAttribute(t);return s===i?null:s===n?a:a=e(n=s,r)}}function Z5e(t,e,r){var n,i=r+"",a;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===n?a:a=e(n=s,r)}}function J5e(t,e,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttribute(t):(s=this.getAttribute(t),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l)))}}function ewe(t,e,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l)))}}function R8(t,e){var r=tc(t),n=r==="transform"?E8:fv;return this.attrTween(t,typeof e=="function"?(r.local?ewe:J5e)(r,n,C0(this,"attr."+t,e)):e==null?(r.local?K5e:j5e)(r):(r.local?Z5e:Q5e)(r,n,e))}var BU=M(()=>{"use strict";E0();cl();hv();L8();o(j5e,"attrRemove");o(K5e,"attrRemoveNS");o(Q5e,"attrConstant");o(Z5e,"attrConstantNS");o(J5e,"attrFunction");o(ewe,"attrFunctionNS");o(R8,"default")});function twe(t,e){return function(r){this.setAttribute(t,e.call(this,r))}}function rwe(t,e){return function(r){this.setAttributeNS(t.space,t.local,e.call(this,r))}}function nwe(t,e){var r,n;function i(){var a=e.apply(this,arguments);return a!==n&&(r=(n=a)&&rwe(t,a)),r}return o(i,"tween"),i._value=e,i}function iwe(t,e){var r,n;function i(){var a=e.apply(this,arguments);return a!==n&&(r=(n=a)&&twe(t,a)),r}return o(i,"tween"),i._value=e,i}function N8(t,e){var r="attr."+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;var n=tc(t);return this.tween(r,(n.local?nwe:iwe)(n,e))}var FU=M(()=>{"use strict";cl();o(twe,"attrInterpolate");o(rwe,"attrInterpolateNS");o(nwe,"attrTweenNS");o(iwe,"attrTween");o(N8,"default")});function awe(t,e){return function(){cv(this,t).delay=+e.apply(this,arguments)}}function swe(t,e){return e=+e,function(){cv(this,t).delay=e}}function M8(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?awe:swe)(e,t)):Pi(this.node(),e).delay}var zU=M(()=>{"use strict";bs();o(awe,"delayFunction");o(swe,"delayConstant");o(M8,"default")});function owe(t,e){return function(){la(this,t).duration=+e.apply(this,arguments)}}function lwe(t,e){return e=+e,function(){la(this,t).duration=e}}function I8(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?owe:lwe)(e,t)):Pi(this.node(),e).duration}var GU=M(()=>{"use strict";bs();o(owe,"durationFunction");o(lwe,"durationConstant");o(I8,"default")});function cwe(t,e){if(typeof e!="function")throw new Error;return function(){la(this,t).ease=e}}function O8(t){var e=this._id;return arguments.length?this.each(cwe(e,t)):Pi(this.node(),e).ease}var $U=M(()=>{"use strict";bs();o(cwe,"easeConstant");o(O8,"default")});function uwe(t,e){return function(){var r=e.apply(this,arguments);if(typeof r!="function")throw new Error;la(this,t).ease=r}}function P8(t){if(typeof t!="function")throw new Error;return this.each(uwe(this._id,t))}var VU=M(()=>{"use strict";bs();o(uwe,"easeVarying");o(P8,"default")});function B8(t){typeof t!="function"&&(t=g0(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";cl();cd();o(B8,"default")});function F8(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,r=t._groups,n=e.length,i=r.length,a=Math.min(n,i),s=new Array(n),l=0;l{"use strict";cd();o(F8,"default")});function hwe(t){return(t+"").trim().split(/^|\s+/).every(function(e){var r=e.indexOf(".");return r>=0&&(e=e.slice(0,r)),!e||e==="start"})}function fwe(t,e,r){var n,i,a=hwe(e)?cv:la;return function(){var s=a(this,t),l=s.on;l!==n&&(i=(n=l).copy()).on(e,r),s.on=i}}function z8(t,e){var r=this._id;return arguments.length<2?Pi(this.node(),r).on.on(t):this.each(fwe(r,t,e))}var WU=M(()=>{"use strict";bs();o(hwe,"start");o(fwe,"onFunction");o(z8,"default")});function dwe(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}function G8(){return this.on("end.remove",dwe(this._id))}var qU=M(()=>{"use strict";o(dwe,"removeFunction");o(G8,"default")});function $8(t){var e=this._name,r=this._id;typeof t!="function"&&(t=mh(t));for(var n=this._groups,i=n.length,a=new Array(i),s=0;s{"use strict";cl();cd();bs();o($8,"default")});function V8(t){var e=this._name,r=this._id;typeof t!="function"&&(t=m0(t));for(var n=this._groups,i=n.length,a=[],s=[],l=0;l{"use strict";cl();cd();bs();o(V8,"default")});function U8(){return new pwe(this._groups,this._parents)}var pwe,jU=M(()=>{"use strict";cl();pwe=cu.prototype.constructor;o(U8,"default")});function mwe(t,e){var r,n,i;return function(){var a=gh(this,t),s=(this.style.removeProperty(t),gh(this,t));return a===s?null:a===r&&s===n?i:i=e(r=a,n=s)}}function KU(t){return function(){this.style.removeProperty(t)}}function gwe(t,e,r){var n,i=r+"",a;return function(){var s=gh(this,t);return s===i?null:s===n?a:a=e(n=s,r)}}function ywe(t,e,r){var n,i,a;return function(){var s=gh(this,t),l=r(this),u=l+"";return l==null&&(u=l=(this.style.removeProperty(t),gh(this,t))),s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l))}}function vwe(t,e){var r,n,i,a="style."+e,s="end."+a,l;return function(){var u=la(this,t),h=u.on,f=u.value[a]==null?l||(l=KU(e)):void 0;(h!==r||i!==f)&&(n=(r=h).copy()).on(s,i=f),u.on=n}}function H8(t,e,r){var n=(t+="")=="transform"?k8:fv;return e==null?this.styleTween(t,mwe(t,n)).on("end.style."+t,KU(t)):typeof e=="function"?this.styleTween(t,ywe(t,n,C0(this,"style."+t,e))).each(vwe(this._id,t)):this.styleTween(t,gwe(t,n,e),r).on("end.style."+t,null)}var QU=M(()=>{"use strict";E0();cl();bs();hv();L8();o(mwe,"styleNull");o(KU,"styleRemove");o(gwe,"styleConstant");o(ywe,"styleFunction");o(vwe,"styleMaybeRemove");o(H8,"default")});function xwe(t,e,r){return function(n){this.style.setProperty(t,e.call(this,n),r)}}function bwe(t,e,r){var n,i;function a(){var s=e.apply(this,arguments);return s!==i&&(n=(i=s)&&xwe(t,s,r)),n}return o(a,"tween"),a._value=e,a}function W8(t,e,r){var n="style."+(t+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;return this.tween(n,bwe(t,e,r??""))}var ZU=M(()=>{"use strict";o(xwe,"styleInterpolate");o(bwe,"styleTween");o(W8,"default")});function wwe(t){return function(){this.textContent=t}}function Twe(t){return function(){var e=t(this);this.textContent=e??""}}function q8(t){return this.tween("text",typeof t=="function"?Twe(C0(this,"text",t)):wwe(t==null?"":t+""))}var JU=M(()=>{"use strict";hv();o(wwe,"textConstant");o(Twe,"textFunction");o(q8,"default")});function kwe(t){return function(e){this.textContent=t.call(this,e)}}function Ewe(t){var e,r;function n(){var i=t.apply(this,arguments);return i!==r&&(e=(r=i)&&kwe(i)),e}return o(n,"tween"),n._value=t,n}function Y8(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,Ewe(t))}var eH=M(()=>{"use strict";o(kwe,"textInterpolate");o(Ewe,"textTween");o(Y8,"default")});function X8(){for(var t=this._name,e=this._id,r=X3(),n=this._groups,i=n.length,a=0;a{"use strict";cd();bs();o(X8,"default")});function j8(){var t,e,r=this,n=r._id,i=r.size();return new Promise(function(a,s){var l={value:s},u={value:o(function(){--i===0&&a()},"value")};r.each(function(){var h=la(this,n),f=h.on;f!==t&&(e=(t=f).copy(),e._.cancel.push(l),e._.interrupt.push(l),e._.end.push(u)),h.on=e}),i===0&&a()})}var rH=M(()=>{"use strict";bs();o(j8,"default")});function Za(t,e,r,n){this._groups=t,this._parents=e,this._name=r,this._id=n}function nH(t){return cu().transition(t)}function X3(){return++Swe}var Swe,du,cd=M(()=>{"use strict";cl();BU();FU();zU();GU();$U();VU();UU();HU();WU();qU();YU();XU();jU();QU();ZU();JU();eH();tH();hv();rH();Swe=0;o(Za,"Transition");o(nH,"transition");o(X3,"newId");du=cu.prototype;Za.prototype=nH.prototype={constructor:Za,select:$8,selectAll:V8,selectChild:du.selectChild,selectChildren:du.selectChildren,filter:B8,merge:F8,selection:U8,transition:X8,call:du.call,nodes:du.nodes,node:du.node,size:du.size,empty:du.empty,each:du.each,on:z8,attr:R8,attrTween:N8,style:H8,styleTween:W8,text:q8,textTween:Y8,remove:G8,tween:D8,delay:M8,duration:I8,ease:O8,easeVarying:P8,end:j8,[Symbol.iterator]:du[Symbol.iterator]}});function j3(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var iH=M(()=>{"use strict";o(j3,"cubicInOut")});var K8=M(()=>{"use strict";iH()});function Awe(t,e){for(var r;!(r=t.__transition)||!(r=r[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return r}function Q8(t){var e,r;t instanceof Za?(e=t._id,t=t._name):(e=X3(),(r=Cwe).time=sv(),t=t==null?null:t+"");for(var n=this._groups,i=n.length,a=0;a{"use strict";cd();bs();K8();H3();Cwe={time:null,delay:0,duration:250,ease:j3};o(Awe,"inherit");o(Q8,"default")});var sH=M(()=>{"use strict";cl();PU();aH();cu.prototype.interrupt=_8;cu.prototype.transition=Q8});var K3=M(()=>{"use strict";sH()});var oH=M(()=>{"use strict"});var lH=M(()=>{"use strict"});var cH=M(()=>{"use strict"});function uH(t){return[+t[0],+t[1]]}function _we(t){return[uH(t[0]),uH(t[1])]}function Z8(t){return{type:t}}var Zpt,Jpt,e0t,t0t,r0t,n0t,hH=M(()=>{"use strict";K3();oH();lH();cH();({abs:Zpt,max:Jpt,min:e0t}=Math);o(uH,"number1");o(_we,"number2");t0t={name:"x",handles:["w","e"].map(Z8),input:o(function(t,e){return t==null?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},"input"),output:o(function(t){return t&&[t[0][0],t[1][0]]},"output")},r0t={name:"y",handles:["n","s"].map(Z8),input:o(function(t,e){return t==null?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},"input"),output:o(function(t){return t&&[t[0][1],t[1][1]]},"output")},n0t={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(Z8),input:o(function(t){return t==null?null:_we(t)},"input"),output:o(function(t){return t},"output")};o(Z8,"type")});var fH=M(()=>{"use strict";hH()});function dH(t){this._+=t[0];for(let e=1,r=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return dH;let r=10**e;return function(n){this._+=n[0];for(let i=1,a=n.length;i{"use strict";J8=Math.PI,e_=2*J8,ud=1e-6,Dwe=e_-ud;o(dH,"append");o(Lwe,"appendRound");hd=class{static{o(this,"Path")}constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=e==null?dH:Lwe(e)}moveTo(e,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,r){this._append`L${this._x1=+e},${this._y1=+r}`}quadraticCurveTo(e,r,n,i){this._append`Q${+e},${+r},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(e,r,n,i,a,s){this._append`C${+e},${+r},${+n},${+i},${this._x1=+a},${this._y1=+s}`}arcTo(e,r,n,i,a){if(e=+e,r=+r,n=+n,i=+i,a=+a,a<0)throw new Error(`negative radius: ${a}`);let s=this._x1,l=this._y1,u=n-e,h=i-r,f=s-e,d=l-r,p=f*f+d*d;if(this._x1===null)this._append`M${this._x1=e},${this._y1=r}`;else if(p>ud)if(!(Math.abs(d*u-h*f)>ud)||!a)this._append`L${this._x1=e},${this._y1=r}`;else{let m=n-s,g=i-l,y=u*u+h*h,v=m*m+g*g,x=Math.sqrt(y),b=Math.sqrt(p),w=a*Math.tan((J8-Math.acos((y+p-v)/(2*x*b)))/2),C=w/b,T=w/x;Math.abs(C-1)>ud&&this._append`L${e+C*f},${r+C*d}`,this._append`A${a},${a},0,0,${+(d*m>f*g)},${this._x1=e+T*u},${this._y1=r+T*h}`}}arc(e,r,n,i,a,s){if(e=+e,r=+r,n=+n,s=!!s,n<0)throw new Error(`negative radius: ${n}`);let l=n*Math.cos(i),u=n*Math.sin(i),h=e+l,f=r+u,d=1^s,p=s?i-a:a-i;this._x1===null?this._append`M${h},${f}`:(Math.abs(this._x1-h)>ud||Math.abs(this._y1-f)>ud)&&this._append`L${h},${f}`,n&&(p<0&&(p=p%e_+e_),p>Dwe?this._append`A${n},${n},0,1,${d},${e-l},${r-u}A${n},${n},0,1,${d},${this._x1=h},${this._y1=f}`:p>ud&&this._append`A${n},${n},0,${+(p>=J8)},${d},${this._x1=e+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(e,r,n,i){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}};o(pH,"path");pH.prototype=hd.prototype});var t_=M(()=>{"use strict";mH()});var gH=M(()=>{"use strict"});var yH=M(()=>{"use strict"});var vH=M(()=>{"use strict"});var xH=M(()=>{"use strict"});var bH=M(()=>{"use strict"});var wH=M(()=>{"use strict"});var TH=M(()=>{"use strict"});function r_(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function fd(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}var dv=M(()=>{"use strict";o(r_,"default");o(fd,"formatDecimalParts")});function fl(t){return t=fd(Math.abs(t)),t?t[1]:NaN}var pv=M(()=>{"use strict";dv();o(fl,"default")});function n_(t,e){return function(r,n){for(var i=r.length,a=[],s=0,l=t[0],u=0;i>0&&l>0&&(u+l+1>n&&(l=Math.max(1,n-u)),a.push(r.substring(i-=l,i+l)),!((u+=l+1)>n));)l=t[s=(s+1)%t.length];return a.reverse().join(e)}}var kH=M(()=>{"use strict";o(n_,"default")});function i_(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var EH=M(()=>{"use strict";o(i_,"default")});function bh(t){if(!(e=Rwe.exec(t)))throw new Error("invalid format: "+t);var e;return new Q3({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function Q3(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}var Rwe,a_=M(()=>{"use strict";Rwe=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;o(bh,"formatSpecifier");bh.prototype=Q3.prototype;o(Q3,"FormatSpecifier");Q3.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type}});function s_(t){e:for(var e=t.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?t.slice(0,n)+t.slice(i+1):t}var SH=M(()=>{"use strict";o(s_,"default")});function l_(t,e){var r=fd(t,e);if(!r)return t+"";var n=r[0],i=r[1],a=i-(o_=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=n.length;return a===s?n:a>s?n+new Array(a-s+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+fd(t,Math.max(0,e+a-1))[0]}var o_,c_=M(()=>{"use strict";dv();o(l_,"default")});function Z3(t,e){var r=fd(t,e);if(!r)return t+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var CH=M(()=>{"use strict";dv();o(Z3,"default")});var u_,AH=M(()=>{"use strict";dv();c_();CH();u_={"%":o((t,e)=>(t*100).toFixed(e),"%"),b:o(t=>Math.round(t).toString(2),"b"),c:o(t=>t+"","c"),d:r_,e:o((t,e)=>t.toExponential(e),"e"),f:o((t,e)=>t.toFixed(e),"f"),g:o((t,e)=>t.toPrecision(e),"g"),o:o(t=>Math.round(t).toString(8),"o"),p:o((t,e)=>Z3(t*100,e),"p"),r:Z3,s:l_,X:o(t=>Math.round(t).toString(16).toUpperCase(),"X"),x:o(t=>Math.round(t).toString(16),"x")}});function J3(t){return t}var _H=M(()=>{"use strict";o(J3,"default")});function h_(t){var e=t.grouping===void 0||t.thousands===void 0?J3:n_(DH.call(t.grouping,Number),t.thousands+""),r=t.currency===void 0?"":t.currency[0]+"",n=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",a=t.numerals===void 0?J3:i_(DH.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",l=t.minus===void 0?"\u2212":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function h(d){d=bh(d);var p=d.fill,m=d.align,g=d.sign,y=d.symbol,v=d.zero,x=d.width,b=d.comma,w=d.precision,C=d.trim,T=d.type;T==="n"?(b=!0,T="g"):u_[T]||(w===void 0&&(w=12),C=!0,T="g"),(v||p==="0"&&m==="=")&&(v=!0,p="0",m="=");var E=y==="$"?r:y==="#"&&/[boxX]/.test(T)?"0"+T.toLowerCase():"",A=y==="$"?n:/[%p]/.test(T)?s:"",S=u_[T],_=/[defgprs%]/.test(T);w=w===void 0?6:/[gprs]/.test(T)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function I(D){var k=E,L=A,R,O,N;if(T==="c")L=S(D)+L,D="";else{D=+D;var B=D<0||1/D<0;if(D=isNaN(D)?u:S(Math.abs(D),w),C&&(D=s_(D)),B&&+D==0&&g!=="+"&&(B=!1),k=(B?g==="("?g:l:g==="-"||g==="("?"":g)+k,L=(T==="s"?LH[8+o_/3]:"")+L+(B&&g==="("?")":""),_){for(R=-1,O=D.length;++RN||N>57){L=(N===46?i+D.slice(R+1):D.slice(R))+L,D=D.slice(0,R);break}}}b&&!v&&(D=e(D,1/0));var F=k.length+D.length+L.length,P=F>1)+k+D+L+P.slice(F);break;default:D=P+k+D+L;break}return a(D)}return o(I,"format"),I.toString=function(){return d+""},I}o(h,"newFormat");function f(d,p){var m=h((d=bh(d),d.type="f",d)),g=Math.max(-8,Math.min(8,Math.floor(fl(p)/3)))*3,y=Math.pow(10,-g),v=LH[8+g/3];return function(x){return m(y*x)+v}}return o(f,"formatPrefix"),{format:h,formatPrefix:f}}var DH,LH,RH=M(()=>{"use strict";pv();kH();EH();a_();SH();AH();c_();_H();DH=Array.prototype.map,LH=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];o(h_,"default")});function f_(t){return e5=h_(t),t5=e5.format,r5=e5.formatPrefix,e5}var e5,t5,r5,NH=M(()=>{"use strict";RH();f_({thousands:",",grouping:[3],currency:["$",""]});o(f_,"defaultLocale")});function n5(t){return Math.max(0,-fl(Math.abs(t)))}var MH=M(()=>{"use strict";pv();o(n5,"default")});function i5(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(fl(e)/3)))*3-fl(Math.abs(t)))}var IH=M(()=>{"use strict";pv();o(i5,"default")});function a5(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,fl(e)-fl(t))+1}var OH=M(()=>{"use strict";pv();o(a5,"default")});var d_=M(()=>{"use strict";NH();a_();MH();IH();OH()});var PH=M(()=>{"use strict"});var BH=M(()=>{"use strict"});var FH=M(()=>{"use strict"});var zH=M(()=>{"use strict"});function wh(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}var mv=M(()=>{"use strict";o(wh,"initRange")});function pu(){var t=new d0,e=[],r=[],n=p_;function i(a){let s=t.get(a);if(s===void 0){if(n!==p_)return n;t.set(a,s=e.push(a)-1)}return r[s%r.length]}return o(i,"scale"),i.domain=function(a){if(!arguments.length)return e.slice();e=[],t=new d0;for(let s of a)t.has(s)||t.set(s,e.push(s)-1);return i},i.range=function(a){return arguments.length?(r=Array.from(a),i):r.slice()},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return pu(e,r).unknown(n)},wh.apply(i,arguments),i}var p_,m_=M(()=>{"use strict";ph();mv();p_=Symbol("implicit");o(pu,"ordinal")});function A0(){var t=pu().unknown(void 0),e=t.domain,r=t.range,n=0,i=1,a,s,l=!1,u=0,h=0,f=.5;delete t.unknown;function d(){var p=e().length,m=i{"use strict";ph();mv();m_();o(A0,"band")});function g_(t){return function(){return t}}var $H=M(()=>{"use strict";o(g_,"constants")});function y_(t){return+t}var VH=M(()=>{"use strict";o(y_,"number")});function _0(t){return t}function v_(t,e){return(e-=t=+t)?function(r){return(r-t)/e}:g_(isNaN(e)?NaN:.5)}function Nwe(t,e){var r;return t>e&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function Mwe(t,e,r){var n=t[0],i=t[1],a=e[0],s=e[1];return i2?Iwe:Mwe,u=h=null,d}o(f,"rescale");function d(p){return p==null||isNaN(p=+p)?a:(u||(u=l(t.map(n),e,r)))(n(s(p)))}return o(d,"scale"),d.invert=function(p){return s(i((h||(h=l(e,t.map(n),Xi)))(p)))},d.domain=function(p){return arguments.length?(t=Array.from(p,y_),f()):t.slice()},d.range=function(p){return arguments.length?(e=Array.from(p),f()):e.slice()},d.rangeRound=function(p){return e=Array.from(p),r=P3,f()},d.clamp=function(p){return arguments.length?(s=p?!0:_0,f()):s!==_0},d.interpolate=function(p){return arguments.length?(r=p,f()):r},d.unknown=function(p){return arguments.length?(a=p,d):a},function(p,m){return n=p,i=m,f()}}function gv(){return Owe()(_0,_0)}var UH,x_=M(()=>{"use strict";ph();E0();$H();VH();UH=[0,1];o(_0,"identity");o(v_,"normalize");o(Nwe,"clamper");o(Mwe,"bimap");o(Iwe,"polymap");o(s5,"copy");o(Owe,"transformer");o(gv,"continuous")});function b_(t,e,r,n){var i=p0(t,e,r),a;switch(n=bh(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(a=i5(i,s))&&(n.precision=a),r5(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=a5(i,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=n5(i))&&(n.precision=a-(n.type==="%")*2);break}}return t5(n)}var HH=M(()=>{"use strict";ph();d_();o(b_,"tickFormat")});function Pwe(t){var e=t.domain;return t.ticks=function(r){var n=e();return x3(n[0],n[n.length-1],r??10)},t.tickFormat=function(r,n){var i=e();return b_(i[0],i[i.length-1],r??10,n)},t.nice=function(r){r==null&&(r=10);var n=e(),i=0,a=n.length-1,s=n[i],l=n[a],u,h,f=10;for(l0;){if(h=Wy(s,l,r),h===u)return n[i]=s,n[a]=l,e(n);if(h>0)s=Math.floor(s/h)*h,l=Math.ceil(l/h)*h;else if(h<0)s=Math.ceil(s*h)/h,l=Math.floor(l*h)/h;else break;u=h}return t},t}function dl(){var t=gv();return t.copy=function(){return s5(t,dl())},wh.apply(t,arguments),Pwe(t)}var WH=M(()=>{"use strict";ph();x_();mv();HH();o(Pwe,"linearish");o(dl,"linear")});function w_(t,e){t=t.slice();var r=0,n=t.length-1,i=t[r],a=t[n],s;return a{"use strict";o(w_,"nice")});function xn(t,e,r,n){function i(a){return t(a=arguments.length===0?new Date:new Date(+a)),a}return o(i,"interval"),i.floor=a=>(t(a=new Date(+a)),a),i.ceil=a=>(t(a=new Date(a-1)),e(a,1),t(a),a),i.round=a=>{let s=i(a),l=i.ceil(a);return a-s(e(a=new Date(+a),s==null?1:Math.floor(s)),a),i.range=(a,s,l)=>{let u=[];if(a=i.ceil(a),l=l==null?1:Math.floor(l),!(a0))return u;let h;do u.push(h=new Date(+a)),e(a,l),t(a);while(hxn(s=>{if(s>=s)for(;t(s),!a(s);)s.setTime(s-1)},(s,l)=>{if(s>=s)if(l<0)for(;++l<=0;)for(;e(s,-1),!a(s););else for(;--l>=0;)for(;e(s,1),!a(s););}),r&&(i.count=(a,s)=>(T_.setTime(+a),k_.setTime(+s),t(T_),t(k_),Math.floor(r(T_,k_))),i.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?i.filter(n?s=>n(s)%a===0:s=>i.count(0,s)%a===0):i)),i}var T_,k_,mu=M(()=>{"use strict";T_=new Date,k_=new Date;o(xn,"timeInterval")});var ic,YH,E_=M(()=>{"use strict";mu();ic=xn(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);ic.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?xn(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):ic);YH=ic.range});var Ws,XH,S_=M(()=>{"use strict";mu();Ws=xn(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),XH=Ws.range});var gu,Bwe,o5,Fwe,C_=M(()=>{"use strict";mu();gu=xn(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),Bwe=gu.range,o5=xn(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),Fwe=o5.range});var yu,zwe,l5,Gwe,A_=M(()=>{"use strict";mu();yu=xn(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3-t.getMinutes()*6e4)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getHours()),zwe=yu.range,l5=xn(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),Gwe=l5.range});var Eo,$we,vv,Vwe,c5,Uwe,__=M(()=>{"use strict";mu();Eo=xn(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1),$we=Eo.range,vv=xn(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),Vwe=vv.range,c5=xn(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),Uwe=c5.range});function md(t){return xn(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,r)=>{e.setDate(e.getDate()+r*7)},(e,r)=>(r-e-(r.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/6048e5)}function gd(t){return xn(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCDate(e.getUTCDate()+r*7)},(e,r)=>(r-e)/6048e5)}var pl,Th,u5,h5,sc,f5,d5,KH,Hwe,Wwe,qwe,Ywe,Xwe,jwe,yd,D0,QH,ZH,kh,JH,eW,tW,Kwe,Qwe,Zwe,Jwe,eTe,tTe,D_=M(()=>{"use strict";mu();o(md,"timeWeekday");pl=md(0),Th=md(1),u5=md(2),h5=md(3),sc=md(4),f5=md(5),d5=md(6),KH=pl.range,Hwe=Th.range,Wwe=u5.range,qwe=h5.range,Ywe=sc.range,Xwe=f5.range,jwe=d5.range;o(gd,"utcWeekday");yd=gd(0),D0=gd(1),QH=gd(2),ZH=gd(3),kh=gd(4),JH=gd(5),eW=gd(6),tW=yd.range,Kwe=D0.range,Qwe=QH.range,Zwe=ZH.range,Jwe=kh.range,eTe=JH.range,tTe=eW.range});var vu,rTe,p5,nTe,L_=M(()=>{"use strict";mu();vu=xn(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth()),rTe=vu.range,p5=xn(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth()),nTe=p5.range});var qs,iTe,ml,aTe,R_=M(()=>{"use strict";mu();qs=xn(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());qs.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:xn(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)});iTe=qs.range,ml=xn(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());ml.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:xn(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)});aTe=ml.range});function nW(t,e,r,n,i,a){let s=[[Ws,1,1e3],[Ws,5,5*1e3],[Ws,15,15*1e3],[Ws,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[e,1,2592e6],[e,3,3*2592e6],[t,1,31536e6]];function l(h,f,d){let p=fv).right(s,p);if(m===s.length)return t.every(p0(h/31536e6,f/31536e6,d));if(m===0)return ic.every(Math.max(p0(h,f,d),1));let[g,y]=s[p/s[m-1][2]{"use strict";ph();E_();S_();C_();A_();__();D_();L_();R_();o(nW,"ticker");[oTe,lTe]=nW(ml,p5,yd,c5,l5,o5),[N_,M_]=nW(qs,vu,pl,Eo,yu,gu)});var m5=M(()=>{"use strict";E_();S_();C_();A_();__();D_();L_();R_();iW()});function I_(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function O_(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function xv(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function P_(t){var e=t.dateTime,r=t.date,n=t.time,i=t.periods,a=t.days,s=t.shortDays,l=t.months,u=t.shortMonths,h=bv(i),f=wv(i),d=bv(a),p=wv(a),m=bv(s),g=wv(s),y=bv(l),v=wv(l),x=bv(u),b=wv(u),w={a:B,A:F,b:P,B:G,c:null,d:uW,e:uW,f:RTe,g:$Te,G:UTe,H:_Te,I:DTe,j:LTe,L:mW,m:NTe,M:MTe,p:z,q:H,Q:dW,s:pW,S:ITe,u:OTe,U:PTe,V:BTe,w:FTe,W:zTe,x:null,X:null,y:GTe,Y:VTe,Z:HTe,"%":fW},C={a:Q,A:j,b:ie,B:ne,c:null,d:hW,e:hW,f:XTe,g:ike,G:ske,H:WTe,I:qTe,j:YTe,L:yW,m:jTe,M:KTe,p:le,q:he,Q:dW,s:pW,S:QTe,u:ZTe,U:JTe,V:eke,w:tke,W:rke,x:null,X:null,y:nke,Y:ake,Z:oke,"%":fW},T={a:I,A:D,b:k,B:L,c:R,d:lW,e:lW,f:ETe,g:oW,G:sW,H:cW,I:cW,j:bTe,L:kTe,m:xTe,M:wTe,p:_,q:vTe,Q:CTe,s:ATe,S:TTe,u:dTe,U:pTe,V:mTe,w:fTe,W:gTe,x:O,X:N,y:oW,Y:sW,Z:yTe,"%":STe};w.x=E(r,w),w.X=E(n,w),w.c=E(e,w),C.x=E(r,C),C.X=E(n,C),C.c=E(e,C);function E(K,X){return function(te){var J=[],se=-1,ue=0,Z=K.length,Se,ce,ae;for(te instanceof Date||(te=new Date(+te));++se53)return null;"w"in J||(J.w=1),"Z"in J?(ue=O_(xv(J.y,0,1)),Z=ue.getUTCDay(),ue=Z>4||Z===0?D0.ceil(ue):D0(ue),ue=vv.offset(ue,(J.V-1)*7),J.y=ue.getUTCFullYear(),J.m=ue.getUTCMonth(),J.d=ue.getUTCDate()+(J.w+6)%7):(ue=I_(xv(J.y,0,1)),Z=ue.getDay(),ue=Z>4||Z===0?Th.ceil(ue):Th(ue),ue=Eo.offset(ue,(J.V-1)*7),J.y=ue.getFullYear(),J.m=ue.getMonth(),J.d=ue.getDate()+(J.w+6)%7)}else("W"in J||"U"in J)&&("w"in J||(J.w="u"in J?J.u%7:"W"in J?1:0),Z="Z"in J?O_(xv(J.y,0,1)).getUTCDay():I_(xv(J.y,0,1)).getDay(),J.m=0,J.d="W"in J?(J.w+6)%7+J.W*7-(Z+5)%7:J.w+J.U*7-(Z+6)%7);return"Z"in J?(J.H+=J.Z/100|0,J.M+=J.Z%100,O_(J)):I_(J)}}o(A,"newParse");function S(K,X,te,J){for(var se=0,ue=X.length,Z=te.length,Se,ce;se=Z)return-1;if(Se=X.charCodeAt(se++),Se===37){if(Se=X.charAt(se++),ce=T[Se in aW?X.charAt(se++):Se],!ce||(J=ce(K,te,J))<0)return-1}else if(Se!=te.charCodeAt(J++))return-1}return J}o(S,"parseSpecifier");function _(K,X,te){var J=h.exec(X.slice(te));return J?(K.p=f.get(J[0].toLowerCase()),te+J[0].length):-1}o(_,"parsePeriod");function I(K,X,te){var J=m.exec(X.slice(te));return J?(K.w=g.get(J[0].toLowerCase()),te+J[0].length):-1}o(I,"parseShortWeekday");function D(K,X,te){var J=d.exec(X.slice(te));return J?(K.w=p.get(J[0].toLowerCase()),te+J[0].length):-1}o(D,"parseWeekday");function k(K,X,te){var J=x.exec(X.slice(te));return J?(K.m=b.get(J[0].toLowerCase()),te+J[0].length):-1}o(k,"parseShortMonth");function L(K,X,te){var J=y.exec(X.slice(te));return J?(K.m=v.get(J[0].toLowerCase()),te+J[0].length):-1}o(L,"parseMonth");function R(K,X,te){return S(K,e,X,te)}o(R,"parseLocaleDateTime");function O(K,X,te){return S(K,r,X,te)}o(O,"parseLocaleDate");function N(K,X,te){return S(K,n,X,te)}o(N,"parseLocaleTime");function B(K){return s[K.getDay()]}o(B,"formatShortWeekday");function F(K){return a[K.getDay()]}o(F,"formatWeekday");function P(K){return u[K.getMonth()]}o(P,"formatShortMonth");function G(K){return l[K.getMonth()]}o(G,"formatMonth");function z(K){return i[+(K.getHours()>=12)]}o(z,"formatPeriod");function H(K){return 1+~~(K.getMonth()/3)}o(H,"formatQuarter");function Q(K){return s[K.getUTCDay()]}o(Q,"formatUTCShortWeekday");function j(K){return a[K.getUTCDay()]}o(j,"formatUTCWeekday");function ie(K){return u[K.getUTCMonth()]}o(ie,"formatUTCShortMonth");function ne(K){return l[K.getUTCMonth()]}o(ne,"formatUTCMonth");function le(K){return i[+(K.getUTCHours()>=12)]}o(le,"formatUTCPeriod");function he(K){return 1+~~(K.getUTCMonth()/3)}return o(he,"formatUTCQuarter"),{format:o(function(K){var X=E(K+="",w);return X.toString=function(){return K},X},"format"),parse:o(function(K){var X=A(K+="",!1);return X.toString=function(){return K},X},"parse"),utcFormat:o(function(K){var X=E(K+="",C);return X.toString=function(){return K},X},"utcFormat"),utcParse:o(function(K){var X=A(K+="",!0);return X.toString=function(){return K},X},"utcParse")}}function Hr(t,e,r){var n=t<0?"-":"",i=(n?-t:t)+"",a=i.length;return n+(a[e.toLowerCase(),r]))}function fTe(t,e,r){var n=ji.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function dTe(t,e,r){var n=ji.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function pTe(t,e,r){var n=ji.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function mTe(t,e,r){var n=ji.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function gTe(t,e,r){var n=ji.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function sW(t,e,r){var n=ji.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function oW(t,e,r){var n=ji.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function yTe(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function vTe(t,e,r){var n=ji.exec(e.slice(r,r+1));return n?(t.q=n[0]*3-3,r+n[0].length):-1}function xTe(t,e,r){var n=ji.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function lW(t,e,r){var n=ji.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function bTe(t,e,r){var n=ji.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function cW(t,e,r){var n=ji.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function wTe(t,e,r){var n=ji.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function TTe(t,e,r){var n=ji.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function kTe(t,e,r){var n=ji.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function ETe(t,e,r){var n=ji.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function STe(t,e,r){var n=cTe.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function CTe(t,e,r){var n=ji.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function ATe(t,e,r){var n=ji.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function uW(t,e){return Hr(t.getDate(),e,2)}function _Te(t,e){return Hr(t.getHours(),e,2)}function DTe(t,e){return Hr(t.getHours()%12||12,e,2)}function LTe(t,e){return Hr(1+Eo.count(qs(t),t),e,3)}function mW(t,e){return Hr(t.getMilliseconds(),e,3)}function RTe(t,e){return mW(t,e)+"000"}function NTe(t,e){return Hr(t.getMonth()+1,e,2)}function MTe(t,e){return Hr(t.getMinutes(),e,2)}function ITe(t,e){return Hr(t.getSeconds(),e,2)}function OTe(t){var e=t.getDay();return e===0?7:e}function PTe(t,e){return Hr(pl.count(qs(t)-1,t),e,2)}function gW(t){var e=t.getDay();return e>=4||e===0?sc(t):sc.ceil(t)}function BTe(t,e){return t=gW(t),Hr(sc.count(qs(t),t)+(qs(t).getDay()===4),e,2)}function FTe(t){return t.getDay()}function zTe(t,e){return Hr(Th.count(qs(t)-1,t),e,2)}function GTe(t,e){return Hr(t.getFullYear()%100,e,2)}function $Te(t,e){return t=gW(t),Hr(t.getFullYear()%100,e,2)}function VTe(t,e){return Hr(t.getFullYear()%1e4,e,4)}function UTe(t,e){var r=t.getDay();return t=r>=4||r===0?sc(t):sc.ceil(t),Hr(t.getFullYear()%1e4,e,4)}function HTe(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Hr(e/60|0,"0",2)+Hr(e%60,"0",2)}function hW(t,e){return Hr(t.getUTCDate(),e,2)}function WTe(t,e){return Hr(t.getUTCHours(),e,2)}function qTe(t,e){return Hr(t.getUTCHours()%12||12,e,2)}function YTe(t,e){return Hr(1+vv.count(ml(t),t),e,3)}function yW(t,e){return Hr(t.getUTCMilliseconds(),e,3)}function XTe(t,e){return yW(t,e)+"000"}function jTe(t,e){return Hr(t.getUTCMonth()+1,e,2)}function KTe(t,e){return Hr(t.getUTCMinutes(),e,2)}function QTe(t,e){return Hr(t.getUTCSeconds(),e,2)}function ZTe(t){var e=t.getUTCDay();return e===0?7:e}function JTe(t,e){return Hr(yd.count(ml(t)-1,t),e,2)}function vW(t){var e=t.getUTCDay();return e>=4||e===0?kh(t):kh.ceil(t)}function eke(t,e){return t=vW(t),Hr(kh.count(ml(t),t)+(ml(t).getUTCDay()===4),e,2)}function tke(t){return t.getUTCDay()}function rke(t,e){return Hr(D0.count(ml(t)-1,t),e,2)}function nke(t,e){return Hr(t.getUTCFullYear()%100,e,2)}function ike(t,e){return t=vW(t),Hr(t.getUTCFullYear()%100,e,2)}function ake(t,e){return Hr(t.getUTCFullYear()%1e4,e,4)}function ske(t,e){var r=t.getUTCDay();return t=r>=4||r===0?kh(t):kh.ceil(t),Hr(t.getUTCFullYear()%1e4,e,4)}function oke(){return"+0000"}function fW(){return"%"}function dW(t){return+t}function pW(t){return Math.floor(+t/1e3)}var aW,ji,cTe,uTe,xW=M(()=>{"use strict";m5();o(I_,"localDate");o(O_,"utcDate");o(xv,"newDate");o(P_,"formatLocale");aW={"-":"",_:" ",0:"0"},ji=/^\s*\d+/,cTe=/^%/,uTe=/[\\^$*+?|[\]().{}]/g;o(Hr,"pad");o(hTe,"requote");o(bv,"formatRe");o(wv,"formatLookup");o(fTe,"parseWeekdayNumberSunday");o(dTe,"parseWeekdayNumberMonday");o(pTe,"parseWeekNumberSunday");o(mTe,"parseWeekNumberISO");o(gTe,"parseWeekNumberMonday");o(sW,"parseFullYear");o(oW,"parseYear");o(yTe,"parseZone");o(vTe,"parseQuarter");o(xTe,"parseMonthNumber");o(lW,"parseDayOfMonth");o(bTe,"parseDayOfYear");o(cW,"parseHour24");o(wTe,"parseMinutes");o(TTe,"parseSeconds");o(kTe,"parseMilliseconds");o(ETe,"parseMicroseconds");o(STe,"parseLiteralPercent");o(CTe,"parseUnixTimestamp");o(ATe,"parseUnixTimestampSeconds");o(uW,"formatDayOfMonth");o(_Te,"formatHour24");o(DTe,"formatHour12");o(LTe,"formatDayOfYear");o(mW,"formatMilliseconds");o(RTe,"formatMicroseconds");o(NTe,"formatMonthNumber");o(MTe,"formatMinutes");o(ITe,"formatSeconds");o(OTe,"formatWeekdayNumberMonday");o(PTe,"formatWeekNumberSunday");o(gW,"dISO");o(BTe,"formatWeekNumberISO");o(FTe,"formatWeekdayNumberSunday");o(zTe,"formatWeekNumberMonday");o(GTe,"formatYear");o($Te,"formatYearISO");o(VTe,"formatFullYear");o(UTe,"formatFullYearISO");o(HTe,"formatZone");o(hW,"formatUTCDayOfMonth");o(WTe,"formatUTCHour24");o(qTe,"formatUTCHour12");o(YTe,"formatUTCDayOfYear");o(yW,"formatUTCMilliseconds");o(XTe,"formatUTCMicroseconds");o(jTe,"formatUTCMonthNumber");o(KTe,"formatUTCMinutes");o(QTe,"formatUTCSeconds");o(ZTe,"formatUTCWeekdayNumberMonday");o(JTe,"formatUTCWeekNumberSunday");o(vW,"UTCdISO");o(eke,"formatUTCWeekNumberISO");o(tke,"formatUTCWeekdayNumberSunday");o(rke,"formatUTCWeekNumberMonday");o(nke,"formatUTCYear");o(ike,"formatUTCYearISO");o(ake,"formatUTCFullYear");o(ske,"formatUTCFullYearISO");o(oke,"formatUTCZone");o(fW,"formatLiteralPercent");o(dW,"formatUnixTimestamp");o(pW,"formatUnixTimestampSeconds")});function B_(t){return L0=P_(t),vd=L0.format,bW=L0.parse,wW=L0.utcFormat,TW=L0.utcParse,L0}var L0,vd,bW,wW,TW,kW=M(()=>{"use strict";xW();B_({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});o(B_,"defaultLocale")});var F_=M(()=>{"use strict";kW()});function lke(t){return new Date(t)}function cke(t){return t instanceof Date?+t:+new Date(+t)}function EW(t,e,r,n,i,a,s,l,u,h){var f=gv(),d=f.invert,p=f.domain,m=h(".%L"),g=h(":%S"),y=h("%I:%M"),v=h("%I %p"),x=h("%a %d"),b=h("%b %d"),w=h("%B"),C=h("%Y");function T(E){return(u(E){"use strict";m5();F_();x_();mv();qH();o(lke,"date");o(cke,"number");o(EW,"calendar");o(g5,"time")});var CW=M(()=>{"use strict";GH();WH();m_();SW()});function z_(t){for(var e=t.length/6|0,r=new Array(e),n=0;n{"use strict";o(z_,"default")});var G_,_W=M(()=>{"use strict";AW();G_=z_("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab")});var DW=M(()=>{"use strict";_W()});function Bn(t){return o(function(){return t},"constant")}var y5=M(()=>{"use strict";o(Bn,"default")});function RW(t){return t>1?0:t<-1?R0:Math.acos(t)}function V_(t){return t>=1?Tv:t<=-1?-Tv:Math.asin(t)}var $_,ca,Eh,LW,v5,gl,xd,Ki,R0,Tv,N0,x5=M(()=>{"use strict";$_=Math.abs,ca=Math.atan2,Eh=Math.cos,LW=Math.max,v5=Math.min,gl=Math.sin,xd=Math.sqrt,Ki=1e-12,R0=Math.PI,Tv=R0/2,N0=2*R0;o(RW,"acos");o(V_,"asin")});function b5(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(r==null)e=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);e=n}return t},()=>new hd(e)}var U_=M(()=>{"use strict";t_();o(b5,"withPath")});function uke(t){return t.innerRadius}function hke(t){return t.outerRadius}function fke(t){return t.startAngle}function dke(t){return t.endAngle}function pke(t){return t&&t.padAngle}function mke(t,e,r,n,i,a,s,l){var u=r-t,h=n-e,f=s-i,d=l-a,p=d*u-f*h;if(!(p*pR*R+O*O&&(S=I,_=D),{cx:S,cy:_,x01:-f,y01:-d,x11:S*(i/T-1),y11:_*(i/T-1)}}function yl(){var t=uke,e=hke,r=Bn(0),n=null,i=fke,a=dke,s=pke,l=null,u=b5(h);function h(){var f,d,p=+t.apply(this,arguments),m=+e.apply(this,arguments),g=i.apply(this,arguments)-Tv,y=a.apply(this,arguments)-Tv,v=$_(y-g),x=y>g;if(l||(l=f=u()),mKi))l.moveTo(0,0);else if(v>N0-Ki)l.moveTo(m*Eh(g),m*gl(g)),l.arc(0,0,m,g,y,!x),p>Ki&&(l.moveTo(p*Eh(y),p*gl(y)),l.arc(0,0,p,y,g,x));else{var b=g,w=y,C=g,T=y,E=v,A=v,S=s.apply(this,arguments)/2,_=S>Ki&&(n?+n.apply(this,arguments):xd(p*p+m*m)),I=v5($_(m-p)/2,+r.apply(this,arguments)),D=I,k=I,L,R;if(_>Ki){var O=V_(_/p*gl(S)),N=V_(_/m*gl(S));(E-=O*2)>Ki?(O*=x?1:-1,C+=O,T-=O):(E=0,C=T=(g+y)/2),(A-=N*2)>Ki?(N*=x?1:-1,b+=N,w-=N):(A=0,b=w=(g+y)/2)}var B=m*Eh(b),F=m*gl(b),P=p*Eh(T),G=p*gl(T);if(I>Ki){var z=m*Eh(w),H=m*gl(w),Q=p*Eh(C),j=p*gl(C),ie;if(vKi?k>Ki?(L=w5(Q,j,B,F,m,k,x),R=w5(z,H,P,G,m,k,x),l.moveTo(L.cx+L.x01,L.cy+L.y01),kKi)||!(E>Ki)?l.lineTo(P,G):D>Ki?(L=w5(P,G,z,H,p,-D,x),R=w5(B,F,Q,j,p,-D,x),l.lineTo(L.cx+L.x01,L.cy+L.y01),D{"use strict";y5();x5();U_();o(uke,"arcInnerRadius");o(hke,"arcOuterRadius");o(fke,"arcStartAngle");o(dke,"arcEndAngle");o(pke,"arcPadAngle");o(mke,"intersect");o(w5,"cornerTangents");o(yl,"default")});function kv(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}var N1t,H_=M(()=>{"use strict";N1t=Array.prototype.slice;o(kv,"default")});function MW(t){this._context=t}function xu(t){return new MW(t)}var W_=M(()=>{"use strict";o(MW,"Linear");MW.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}},"point")};o(xu,"default")});function IW(t){return t[0]}function OW(t){return t[1]}var PW=M(()=>{"use strict";o(IW,"x");o(OW,"y")});function vl(t,e){var r=Bn(!0),n=null,i=xu,a=null,s=b5(l);t=typeof t=="function"?t:t===void 0?IW:Bn(t),e=typeof e=="function"?e:e===void 0?OW:Bn(e);function l(u){var h,f=(u=kv(u)).length,d,p=!1,m;for(n==null&&(a=i(m=s())),h=0;h<=f;++h)!(h{"use strict";H_();y5();W_();U_();PW();o(vl,"default")});function q_(t,e){return et?1:e>=t?0:NaN}var FW=M(()=>{"use strict";o(q_,"default")});function Y_(t){return t}var zW=M(()=>{"use strict";o(Y_,"default")});function T5(){var t=Y_,e=q_,r=null,n=Bn(0),i=Bn(N0),a=Bn(0);function s(l){var u,h=(l=kv(l)).length,f,d,p=0,m=new Array(h),g=new Array(h),y=+n.apply(this,arguments),v=Math.min(N0,Math.max(-N0,i.apply(this,arguments)-y)),x,b=Math.min(Math.abs(v)/h,a.apply(this,arguments)),w=b*(v<0?-1:1),C;for(u=0;u0&&(p+=C);for(e!=null?m.sort(function(T,E){return e(g[T],g[E])}):r!=null&&m.sort(function(T,E){return r(l[T],l[E])}),u=0,d=p?(v-h*w)/p:0;u0?C*d:0)+w,g[f]={data:l[f],index:u,value:C,startAngle:y,endAngle:x,padAngle:b};return g}return o(s,"pie"),s.value=function(l){return arguments.length?(t=typeof l=="function"?l:Bn(+l),s):t},s.sortValues=function(l){return arguments.length?(e=l,r=null,s):e},s.sort=function(l){return arguments.length?(r=l,e=null,s):r},s.startAngle=function(l){return arguments.length?(n=typeof l=="function"?l:Bn(+l),s):n},s.endAngle=function(l){return arguments.length?(i=typeof l=="function"?l:Bn(+l),s):i},s.padAngle=function(l){return arguments.length?(a=typeof l=="function"?l:Bn(+l),s):a},s}var GW=M(()=>{"use strict";H_();y5();FW();zW();x5();o(T5,"default")});function X_(t){return new k5(t,!0)}function j_(t){return new k5(t,!1)}var k5,$W=M(()=>{"use strict";k5=class{static{o(this,"Bump")}constructor(e,r){this._context=e,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,r){switch(e=+e,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,r,e,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,e,this._y0,e,r);break}}this._x0=e,this._y0=r}};o(X_,"bumpX");o(j_,"bumpY")});function Ys(){}var Ev=M(()=>{"use strict";o(Ys,"default")});function M0(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function Sv(t){this._context=t}function So(t){return new Sv(t)}var Cv=M(()=>{"use strict";o(M0,"point");o(Sv,"Basis");Sv.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 3:M0(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:M0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(So,"default")});function VW(t){this._context=t}function E5(t){return new VW(t)}var UW=M(()=>{"use strict";Ev();Cv();o(VW,"BasisClosed");VW.prototype={areaStart:Ys,areaEnd:Ys,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:M0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(E5,"default")});function HW(t){this._context=t}function S5(t){return new HW(t)}var WW=M(()=>{"use strict";Cv();o(HW,"BasisOpen");HW.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:M0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(S5,"default")});function qW(t,e){this._basis=new Sv(t),this._beta=e}var K_,YW=M(()=>{"use strict";Cv();o(qW,"Bundle");qW.prototype={lineStart:o(function(){this._x=[],this._y=[],this._basis.lineStart()},"lineStart"),lineEnd:o(function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n=t[0],i=e[0],a=t[r]-n,s=e[r]-i,l=-1,u;++l<=r;)u=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(n+u*a),this._beta*e[l]+(1-this._beta)*(i+u*s));this._x=this._y=null,this._basis.lineEnd()},"lineEnd"),point:o(function(t,e){this._x.push(+t),this._y.push(+e)},"point")};K_=o(function t(e){function r(n){return e===1?new Sv(n):new qW(n,e)}return o(r,"bundle"),r.beta=function(n){return t(+n)},r},"custom")(.85)});function I0(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function C5(t,e){this._context=t,this._k=(1-e)/6}var Av,_v=M(()=>{"use strict";o(I0,"point");o(C5,"Cardinal");C5.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:I0(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:I0(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};Av=o(function t(e){function r(n){return new C5(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r},"custom")(0)});function A5(t,e){this._context=t,this._k=(1-e)/6}var Q_,Z_=M(()=>{"use strict";Ev();_v();o(A5,"CardinalClosed");A5.prototype={areaStart:Ys,areaEnd:Ys,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:I0(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};Q_=o(function t(e){function r(n){return new A5(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r},"custom")(0)});function _5(t,e){this._context=t,this._k=(1-e)/6}var J_,e9=M(()=>{"use strict";_v();o(_5,"CardinalOpen");_5.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:I0(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};J_=o(function t(e){function r(n){return new _5(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r},"custom")(0)});function Dv(t,e,r){var n=t._x1,i=t._y1,a=t._x2,s=t._y2;if(t._l01_a>Ki){var l=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,u=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*l-t._x0*t._l12_2a+t._x2*t._l01_2a)/u,i=(i*l-t._y0*t._l12_2a+t._y2*t._l01_2a)/u}if(t._l23_a>Ki){var h=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,f=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*h+t._x1*t._l23_2a-e*t._l12_2a)/f,s=(s*h+t._y1*t._l23_2a-r*t._l12_2a)/f}t._context.bezierCurveTo(n,i,a,s,t._x2,t._y2)}function XW(t,e){this._context=t,this._alpha=e}var t9,D5=M(()=>{"use strict";x5();_v();o(Dv,"point");o(XW,"CatmullRom");XW.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Dv(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};t9=o(function t(e){function r(n){return e?new XW(n,e):new C5(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r},"custom")(.5)});function jW(t,e){this._context=t,this._alpha=e}var r9,KW=M(()=>{"use strict";Z_();Ev();D5();o(jW,"CatmullRomClosed");jW.prototype={areaStart:Ys,areaEnd:Ys,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Dv(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};r9=o(function t(e){function r(n){return e?new jW(n,e):new A5(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r},"custom")(.5)});function QW(t,e){this._context=t,this._alpha=e}var n9,ZW=M(()=>{"use strict";e9();D5();o(QW,"CatmullRomOpen");QW.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Dv(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};n9=o(function t(e){function r(n){return e?new QW(n,e):new _5(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r},"custom")(.5)});function JW(t){this._context=t}function L5(t){return new JW(t)}var eq=M(()=>{"use strict";Ev();o(JW,"LinearClosed");JW.prototype={areaStart:Ys,areaEnd:Ys,lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){this._point&&this._context.closePath()},"lineEnd"),point:o(function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))},"point")};o(L5,"default")});function tq(t){return t<0?-1:1}function rq(t,e,r){var n=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(n||i<0&&-0),s=(r-t._y1)/(i||n<0&&-0),l=(a*i+s*n)/(n+i);return(tq(a)+tq(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(l))||0}function nq(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function i9(t,e,r){var n=t._x0,i=t._y0,a=t._x1,s=t._y1,l=(a-n)/3;t._context.bezierCurveTo(n+l,i+l*e,a-l,s-l*r,a,s)}function R5(t){this._context=t}function iq(t){this._context=new aq(t)}function aq(t){this._context=t}function a9(t){return new R5(t)}function s9(t){return new iq(t)}var sq=M(()=>{"use strict";o(tq,"sign");o(rq,"slope3");o(nq,"slope2");o(i9,"point");o(R5,"MonotoneX");R5.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:i9(this,this._t0,nq(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){var r=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,i9(this,nq(this,r=rq(this,t,e)),r);break;default:i9(this,this._t0,r=rq(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=r}},"point")};o(iq,"MonotoneY");(iq.prototype=Object.create(R5.prototype)).point=function(t,e){R5.prototype.point.call(this,e,t)};o(aq,"ReflectContext");aq.prototype={moveTo:o(function(t,e){this._context.moveTo(e,t)},"moveTo"),closePath:o(function(){this._context.closePath()},"closePath"),lineTo:o(function(t,e){this._context.lineTo(e,t)},"lineTo"),bezierCurveTo:o(function(t,e,r,n,i,a){this._context.bezierCurveTo(e,t,n,r,a,i)},"bezierCurveTo")};o(a9,"monotoneX");o(s9,"monotoneY")});function lq(t){this._context=t}function oq(t){var e,r=t.length-1,n,i=new Array(r),a=new Array(r),s=new Array(r);for(i[0]=0,a[0]=2,s[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(s[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e{"use strict";o(lq,"Natural");lq.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=[],this._y=[]},"lineStart"),lineEnd:o(function(){var t=this._x,e=this._y,r=t.length;if(r)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),r===2)this._context.lineTo(t[1],e[1]);else for(var n=oq(t),i=oq(e),a=0,s=1;s{"use strict";o(M5,"Step");M5.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=this._y=NaN,this._point=0},"lineStart"),lineEnd:o(function(){0=0&&(this._t=1-this._t,this._line=1-this._line)},"lineEnd"),point:o(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}break}}this._x=t,this._y=e},"point")};o(I5,"default");o(o9,"stepBefore");o(l9,"stepAfter")});var hq=M(()=>{"use strict";NW();BW();GW();UW();WW();Cv();$W();YW();Z_();e9();_v();KW();ZW();D5();eq();W_();sq();cq();uq()});var fq=M(()=>{"use strict"});var dq=M(()=>{"use strict"});function Sh(t,e,r){this.k=t,this.x=e,this.y=r}function u9(t){for(;!t.__zoom;)if(!(t=t.parentNode))return c9;return t.__zoom}var c9,h9=M(()=>{"use strict";o(Sh,"Transform");Sh.prototype={constructor:Sh,scale:o(function(t){return t===1?this:new Sh(this.k*t,this.x,this.y)},"scale"),translate:o(function(t,e){return t===0&e===0?this:new Sh(this.k,this.x+this.k*t,this.y+this.k*e)},"translate"),apply:o(function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},"apply"),applyX:o(function(t){return t*this.k+this.x},"applyX"),applyY:o(function(t){return t*this.k+this.y},"applyY"),invert:o(function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},"invert"),invertX:o(function(t){return(t-this.x)/this.k},"invertX"),invertY:o(function(t){return(t-this.y)/this.k},"invertY"),rescaleX:o(function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},"rescaleX"),rescaleY:o(function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},"rescaleY"),toString:o(function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"},"toString")};c9=new Sh(1,0,0);u9.prototype=Sh.prototype;o(u9,"transform")});var pq=M(()=>{"use strict"});var mq=M(()=>{"use strict";K3();fq();dq();h9();pq()});var gq=M(()=>{"use strict";mq();h9()});var hr=M(()=>{"use strict";ph();Y$();fH();gH();w0();yH();vH();lA();FV();xH();K8();bH();TH();d_();PH();BH();E0();t_();FH();wH();zH();CW();DW();cl();hq();m5();F_();H3();K3();gq()});var yq=Ni(Qi=>{"use strict";Object.defineProperty(Qi,"__esModule",{value:!0});Qi.BLANK_URL=Qi.relativeFirstCharacters=Qi.whitespaceEscapeCharsRegex=Qi.urlSchemeRegex=Qi.ctrlCharactersRegex=Qi.htmlCtrlEntityRegex=Qi.htmlEntitiesRegex=Qi.invalidProtocolRegex=void 0;Qi.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;Qi.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g;Qi.htmlCtrlEntityRegex=/&(newline|tab);/gi;Qi.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;Qi.urlSchemeRegex=/^.+(:|:)/gim;Qi.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;Qi.relativeFirstCharacters=[".","/"];Qi.BLANK_URL="about:blank"});var O0=Ni(O5=>{"use strict";Object.defineProperty(O5,"__esModule",{value:!0});O5.sanitizeUrl=void 0;var Sa=yq();function gke(t){return Sa.relativeFirstCharacters.indexOf(t[0])>-1}o(gke,"isRelativeUrlWithoutProtocol");function yke(t){var e=t.replace(Sa.ctrlCharactersRegex,"");return e.replace(Sa.htmlEntitiesRegex,function(r,n){return String.fromCharCode(n)})}o(yke,"decodeHtmlCharacters");function vke(t){return URL.canParse(t)}o(vke,"isValidUrl");function vq(t){try{return decodeURIComponent(t)}catch{return t}}o(vq,"decodeURI");function xke(t){if(!t)return Sa.BLANK_URL;var e,r=vq(t.trim());do r=yke(r).replace(Sa.htmlCtrlEntityRegex,"").replace(Sa.ctrlCharactersRegex,"").replace(Sa.whitespaceEscapeCharsRegex,"").trim(),r=vq(r),e=r.match(Sa.ctrlCharactersRegex)||r.match(Sa.htmlEntitiesRegex)||r.match(Sa.htmlCtrlEntityRegex)||r.match(Sa.whitespaceEscapeCharsRegex);while(e&&e.length>0);var n=r;if(!n)return Sa.BLANK_URL;if(gke(n))return n;var i=n.trimStart(),a=i.match(Sa.urlSchemeRegex);if(!a)return n;var s=a[0].toLowerCase().trim();if(Sa.invalidProtocolRegex.test(s))return Sa.BLANK_URL;var l=i.replace(/\\/g,"/");if(s==="mailto:"||s.includes("://"))return l;if(s==="http:"||s==="https:"){if(!vke(l))return Sa.BLANK_URL;var u=new URL(l);return u.protocol=u.protocol.toLowerCase(),u.hostname=u.hostname.toLowerCase(),u.toString()}return l}o(xke,"sanitizeUrl");O5.sanitizeUrl=xke});var f9,bd,P5,xq,bq,wq,xl,Lv,Rv=M(()=>{"use strict";f9=Ta(O0(),1);gr();bd=o((t,e)=>{let r=t.append("rect");if(r.attr("x",e.x),r.attr("y",e.y),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("width",e.width),r.attr("height",e.height),e.name&&r.attr("name",e.name),e.rx&&r.attr("rx",e.rx),e.ry&&r.attr("ry",e.ry),e.attrs!==void 0)for(let n in e.attrs)r.attr(n,e.attrs[n]);return e.class&&r.attr("class",e.class),r},"drawRect"),P5=o((t,e)=>{let r={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};bd(t,r).lower()},"drawBackgroundRect"),xq=o((t,e)=>{let r=e.text.replace(ed," "),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.attr("class","legend"),n.style("text-anchor",e.anchor),e.class&&n.attr("class",e.class);let i=n.append("tspan");return i.attr("x",e.x+e.textMargin*2),i.text(r),n},"drawText"),bq=o((t,e,r,n)=>{let i=t.append("image");i.attr("x",e),i.attr("y",r);let a=(0,f9.sanitizeUrl)(n);i.attr("xlink:href",a)},"drawImage"),wq=o((t,e,r,n)=>{let i=t.append("use");i.attr("x",e),i.attr("y",r);let a=(0,f9.sanitizeUrl)(n);i.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),xl=o(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),Lv=o(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")});var Tq,d9,kq,bke,wke,Tke,kke,Eke,Ske,Cke,Ake,_ke,Dke,Lke,Rke,bu,bl,Eq=M(()=>{"use strict";gr();Rv();Tq=Ta(O0(),1),d9=o(function(t,e){return bd(t,e)},"drawRect"),kq=o(function(t,e,r,n,i,a){let s=t.append("image");s.attr("width",e),s.attr("height",r),s.attr("x",n),s.attr("y",i);let l=a.startsWith("data:image/png;base64")?a:(0,Tq.sanitizeUrl)(a);s.attr("xlink:href",l)},"drawImage"),bke=o((t,e,r)=>{let n=t.append("g"),i=0;for(let a of e){let s=a.textColor?a.textColor:"#444444",l=a.lineColor?a.lineColor:"#444444",u=a.offsetX?parseInt(a.offsetX):0,h=a.offsetY?parseInt(a.offsetY):0,f="";if(i===0){let p=n.append("line");p.attr("x1",a.startPoint.x),p.attr("y1",a.startPoint.y),p.attr("x2",a.endPoint.x),p.attr("y2",a.endPoint.y),p.attr("stroke-width","1"),p.attr("stroke",l),p.style("fill","none"),a.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)"),i=-1}else{let p=n.append("path");p.attr("fill","none").attr("stroke-width","1").attr("stroke",l).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",a.startPoint.x).replaceAll("starty",a.startPoint.y).replaceAll("controlx",a.startPoint.x+(a.endPoint.x-a.startPoint.x)/2-(a.endPoint.x-a.startPoint.x)/4).replaceAll("controly",a.startPoint.y+(a.endPoint.y-a.startPoint.y)/2).replaceAll("stopx",a.endPoint.x).replaceAll("stopy",a.endPoint.y)),a.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)")}let d=r.messageFont();bu(r)(a.label.text,n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+u,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+h,a.label.width,a.label.height,{fill:s},d),a.techn&&a.techn.text!==""&&(d=r.messageFont(),bu(r)("["+a.techn.text+"]",n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+u,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+r.messageFontSize+5+h,Math.max(a.label.width,a.techn.width),a.techn.height,{fill:s,"font-style":"italic"},d))}},"drawRels"),wke=o(function(t,e,r){let n=t.append("g"),i=e.bgColor?e.bgColor:"none",a=e.borderColor?e.borderColor:"#444444",s=e.fontColor?e.fontColor:"black",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};e.nodeType&&(l={"stroke-width":1});let u={x:e.x,y:e.y,fill:i,stroke:a,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:l};d9(n,u);let h=r.boundaryFont();h.fontWeight="bold",h.fontSize=h.fontSize+2,h.fontColor=s,bu(r)(e.label.text,n,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},h),e.type&&e.type.text!==""&&(h=r.boundaryFont(),h.fontColor=s,bu(r)(e.type.text,n,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},h)),e.descr&&e.descr.text!==""&&(h=r.boundaryFont(),h.fontSize=h.fontSize-2,h.fontColor=s,bu(r)(e.descr.text,n,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},h))},"drawBoundary"),Tke=o(function(t,e,r){let n=e.bgColor?e.bgColor:r[e.typeC4Shape.text+"_bg_color"],i=e.borderColor?e.borderColor:r[e.typeC4Shape.text+"_border_color"],a=e.fontColor?e.fontColor:"#FFFFFF",s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(e.typeC4Shape.text){case"person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}let l=t.append("g");l.attr("class","person-man");let u=xl();switch(e.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":u.x=e.x,u.y=e.y,u.fill=n,u.width=e.width,u.height=e.height,u.stroke=i,u.rx=2.5,u.ry=2.5,u.attrs={"stroke-width":.5},d9(l,u);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":l.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2).replaceAll("height",e.height)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":l.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("width",e.width).replaceAll("half",e.height/2)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",e.x+e.width).replaceAll("starty",e.y).replaceAll("half",e.height/2));break}let h=Rke(r,e.typeC4Shape.text);switch(l.append("text").attr("fill",a).attr("font-family",h.fontFamily).attr("font-size",h.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",e.typeC4Shape.width).attr("x",e.x+e.width/2-e.typeC4Shape.width/2).attr("y",e.y+e.typeC4Shape.Y).text("<<"+e.typeC4Shape.text+">>"),e.typeC4Shape.text){case"person":case"external_person":kq(l,48,48,e.x+e.width/2-24,e.y+e.image.Y,s);break}let f=r[e.typeC4Shape.text+"Font"]();return f.fontWeight="bold",f.fontSize=f.fontSize+2,f.fontColor=a,bu(r)(e.label.text,l,e.x,e.y+e.label.Y,e.width,e.height,{fill:a},f),f=r[e.typeC4Shape.text+"Font"](),f.fontColor=a,e.techn&&e.techn?.text!==""?bu(r)(e.techn.text,l,e.x,e.y+e.techn.Y,e.width,e.height,{fill:a,"font-style":"italic"},f):e.type&&e.type.text!==""&&bu(r)(e.type.text,l,e.x,e.y+e.type.Y,e.width,e.height,{fill:a,"font-style":"italic"},f),e.descr&&e.descr.text!==""&&(f=r.personFont(),f.fontColor=a,bu(r)(e.descr.text,l,e.x,e.y+e.descr.Y,e.width,e.height,{fill:a},f)),e.height},"drawC4Shape"),kke=o(function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),Eke=o(function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),Ske=o(function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),Cke=o(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},"insertArrowHead"),Ake=o(function(t){t.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},"insertArrowEnd"),_ke=o(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),Dke=o(function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertDynamicNumber"),Lke=o(function(t){let r=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);r.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),r.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},"insertArrowCrossHead"),Rke=o((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"getC4ShapeFont"),bu=function(){function t(i,a,s,l,u,h,f){let d=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("text-anchor","middle").text(i);n(d,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d){let{fontSize:p,fontFamily:m,fontWeight:g}=d,y=i.split(Ze.lineBreakRegex);for(let v=0;v{"use strict";Nke=typeof global=="object"&&global&&global.Object===Object&&global,F5=Nke});var Mke,Ike,li,Co=M(()=>{"use strict";p9();Mke=typeof self=="object"&&self&&self.Object===Object&&self,Ike=F5||Mke||Function("return this")(),li=Ike});var Oke,Zi,wd=M(()=>{"use strict";Co();Oke=li.Symbol,Zi=Oke});function Fke(t){var e=Pke.call(t,Nv),r=t[Nv];try{t[Nv]=void 0;var n=!0}catch{}var i=Bke.call(t);return n&&(e?t[Nv]=r:delete t[Nv]),i}var Sq,Pke,Bke,Nv,Cq,Aq=M(()=>{"use strict";wd();Sq=Object.prototype,Pke=Sq.hasOwnProperty,Bke=Sq.toString,Nv=Zi?Zi.toStringTag:void 0;o(Fke,"getRawTag");Cq=Fke});function $ke(t){return Gke.call(t)}var zke,Gke,_q,Dq=M(()=>{"use strict";zke=Object.prototype,Gke=zke.toString;o($ke,"objectToString");_q=$ke});function Hke(t){return t==null?t===void 0?Uke:Vke:Lq&&Lq in Object(t)?Cq(t):_q(t)}var Vke,Uke,Lq,ua,wu=M(()=>{"use strict";wd();Aq();Dq();Vke="[object Null]",Uke="[object Undefined]",Lq=Zi?Zi.toStringTag:void 0;o(Hke,"baseGetTag");ua=Hke});function Wke(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var bn,Xs=M(()=>{"use strict";o(Wke,"isObject");bn=Wke});function Kke(t){if(!bn(t))return!1;var e=ua(t);return e==Yke||e==Xke||e==qke||e==jke}var qke,Yke,Xke,jke,Ei,Mv=M(()=>{"use strict";wu();Xs();qke="[object AsyncFunction]",Yke="[object Function]",Xke="[object GeneratorFunction]",jke="[object Proxy]";o(Kke,"isFunction");Ei=Kke});var Qke,z5,Rq=M(()=>{"use strict";Co();Qke=li["__core-js_shared__"],z5=Qke});function Zke(t){return!!Nq&&Nq in t}var Nq,Mq,Iq=M(()=>{"use strict";Rq();Nq=function(){var t=/[^.]+$/.exec(z5&&z5.keys&&z5.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();o(Zke,"isMasked");Mq=Zke});function tEe(t){if(t!=null){try{return eEe.call(t)}catch{}try{return t+""}catch{}}return""}var Jke,eEe,Tu,m9=M(()=>{"use strict";Jke=Function.prototype,eEe=Jke.toString;o(tEe,"toSource");Tu=tEe});function cEe(t){if(!bn(t)||Mq(t))return!1;var e=Ei(t)?lEe:nEe;return e.test(Tu(t))}var rEe,nEe,iEe,aEe,sEe,oEe,lEe,Oq,Pq=M(()=>{"use strict";Mv();Iq();Xs();m9();rEe=/[\\^$.*+?()[\]{}|]/g,nEe=/^\[object .+?Constructor\]$/,iEe=Function.prototype,aEe=Object.prototype,sEe=iEe.toString,oEe=aEe.hasOwnProperty,lEe=RegExp("^"+sEe.call(oEe).replace(rEe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(cEe,"baseIsNative");Oq=cEe});function uEe(t,e){return t?.[e]}var Bq,Fq=M(()=>{"use strict";o(uEe,"getValue");Bq=uEe});function hEe(t,e){var r=Bq(t,e);return Oq(r)?r:void 0}var ws,Ch=M(()=>{"use strict";Pq();Fq();o(hEe,"getNative");ws=hEe});var fEe,ku,Iv=M(()=>{"use strict";Ch();fEe=ws(Object,"create"),ku=fEe});function dEe(){this.__data__=ku?ku(null):{},this.size=0}var zq,Gq=M(()=>{"use strict";Iv();o(dEe,"hashClear");zq=dEe});function pEe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var $q,Vq=M(()=>{"use strict";o(pEe,"hashDelete");$q=pEe});function vEe(t){var e=this.__data__;if(ku){var r=e[t];return r===mEe?void 0:r}return yEe.call(e,t)?e[t]:void 0}var mEe,gEe,yEe,Uq,Hq=M(()=>{"use strict";Iv();mEe="__lodash_hash_undefined__",gEe=Object.prototype,yEe=gEe.hasOwnProperty;o(vEe,"hashGet");Uq=vEe});function wEe(t){var e=this.__data__;return ku?e[t]!==void 0:bEe.call(e,t)}var xEe,bEe,Wq,qq=M(()=>{"use strict";Iv();xEe=Object.prototype,bEe=xEe.hasOwnProperty;o(wEe,"hashHas");Wq=wEe});function kEe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=ku&&e===void 0?TEe:e,this}var TEe,Yq,Xq=M(()=>{"use strict";Iv();TEe="__lodash_hash_undefined__";o(kEe,"hashSet");Yq=kEe});function P0(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";Gq();Vq();Hq();qq();Xq();o(P0,"Hash");P0.prototype.clear=zq;P0.prototype.delete=$q;P0.prototype.get=Uq;P0.prototype.has=Wq;P0.prototype.set=Yq;g9=P0});function EEe(){this.__data__=[],this.size=0}var Kq,Qq=M(()=>{"use strict";o(EEe,"listCacheClear");Kq=EEe});function SEe(t,e){return t===e||t!==t&&e!==e}var Ao,Td=M(()=>{"use strict";o(SEe,"eq");Ao=SEe});function CEe(t,e){for(var r=t.length;r--;)if(Ao(t[r][0],e))return r;return-1}var Ah,Ov=M(()=>{"use strict";Td();o(CEe,"assocIndexOf");Ah=CEe});function DEe(t){var e=this.__data__,r=Ah(e,t);if(r<0)return!1;var n=e.length-1;return r==n?e.pop():_Ee.call(e,r,1),--this.size,!0}var AEe,_Ee,Zq,Jq=M(()=>{"use strict";Ov();AEe=Array.prototype,_Ee=AEe.splice;o(DEe,"listCacheDelete");Zq=DEe});function LEe(t){var e=this.__data__,r=Ah(e,t);return r<0?void 0:e[r][1]}var eY,tY=M(()=>{"use strict";Ov();o(LEe,"listCacheGet");eY=LEe});function REe(t){return Ah(this.__data__,t)>-1}var rY,nY=M(()=>{"use strict";Ov();o(REe,"listCacheHas");rY=REe});function NEe(t,e){var r=this.__data__,n=Ah(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}var iY,aY=M(()=>{"use strict";Ov();o(NEe,"listCacheSet");iY=NEe});function B0(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";Qq();Jq();tY();nY();aY();o(B0,"ListCache");B0.prototype.clear=Kq;B0.prototype.delete=Zq;B0.prototype.get=eY;B0.prototype.has=rY;B0.prototype.set=iY;_h=B0});var MEe,Dh,G5=M(()=>{"use strict";Ch();Co();MEe=ws(li,"Map"),Dh=MEe});function IEe(){this.size=0,this.__data__={hash:new g9,map:new(Dh||_h),string:new g9}}var sY,oY=M(()=>{"use strict";jq();Pv();G5();o(IEe,"mapCacheClear");sY=IEe});function OEe(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var lY,cY=M(()=>{"use strict";o(OEe,"isKeyable");lY=OEe});function PEe(t,e){var r=t.__data__;return lY(e)?r[typeof e=="string"?"string":"hash"]:r.map}var Lh,Bv=M(()=>{"use strict";cY();o(PEe,"getMapData");Lh=PEe});function BEe(t){var e=Lh(this,t).delete(t);return this.size-=e?1:0,e}var uY,hY=M(()=>{"use strict";Bv();o(BEe,"mapCacheDelete");uY=BEe});function FEe(t){return Lh(this,t).get(t)}var fY,dY=M(()=>{"use strict";Bv();o(FEe,"mapCacheGet");fY=FEe});function zEe(t){return Lh(this,t).has(t)}var pY,mY=M(()=>{"use strict";Bv();o(zEe,"mapCacheHas");pY=zEe});function GEe(t,e){var r=Lh(this,t),n=r.size;return r.set(t,e),this.size+=r.size==n?0:1,this}var gY,yY=M(()=>{"use strict";Bv();o(GEe,"mapCacheSet");gY=GEe});function F0(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";oY();hY();dY();mY();yY();o(F0,"MapCache");F0.prototype.clear=sY;F0.prototype.delete=uY;F0.prototype.get=fY;F0.prototype.has=pY;F0.prototype.set=gY;kd=F0});function y9(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError($Ee);var r=o(function(){var n=arguments,i=e?e.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var s=t.apply(this,n);return r.cache=a.set(i,s)||a,s},"memoized");return r.cache=new(y9.Cache||kd),r}var $Ee,z0,v9=M(()=>{"use strict";$5();$Ee="Expected a function";o(y9,"memoize");y9.Cache=kd;z0=y9});function VEe(){this.__data__=new _h,this.size=0}var vY,xY=M(()=>{"use strict";Pv();o(VEe,"stackClear");vY=VEe});function UEe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var bY,wY=M(()=>{"use strict";o(UEe,"stackDelete");bY=UEe});function HEe(t){return this.__data__.get(t)}var TY,kY=M(()=>{"use strict";o(HEe,"stackGet");TY=HEe});function WEe(t){return this.__data__.has(t)}var EY,SY=M(()=>{"use strict";o(WEe,"stackHas");EY=WEe});function YEe(t,e){var r=this.__data__;if(r instanceof _h){var n=r.__data__;if(!Dh||n.length{"use strict";Pv();G5();$5();qEe=200;o(YEe,"stackSet");CY=YEe});function G0(t){var e=this.__data__=new _h(t);this.size=e.size}var oc,Fv=M(()=>{"use strict";Pv();xY();wY();kY();SY();AY();o(G0,"Stack");G0.prototype.clear=vY;G0.prototype.delete=bY;G0.prototype.get=TY;G0.prototype.has=EY;G0.prototype.set=CY;oc=G0});var XEe,$0,x9=M(()=>{"use strict";Ch();XEe=function(){try{var t=ws(Object,"defineProperty");return t({},"",{}),t}catch{}}(),$0=XEe});function jEe(t,e,r){e=="__proto__"&&$0?$0(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var lc,V0=M(()=>{"use strict";x9();o(jEe,"baseAssignValue");lc=jEe});function KEe(t,e,r){(r!==void 0&&!Ao(t[e],r)||r===void 0&&!(e in t))&&lc(t,e,r)}var zv,b9=M(()=>{"use strict";V0();Td();o(KEe,"assignMergeValue");zv=KEe});function QEe(t){return function(e,r,n){for(var i=-1,a=Object(e),s=n(e),l=s.length;l--;){var u=s[t?l:++i];if(r(a[u],u,a)===!1)break}return e}}var _Y,DY=M(()=>{"use strict";o(QEe,"createBaseFor");_Y=QEe});var ZEe,U0,V5=M(()=>{"use strict";DY();ZEe=_Y(),U0=ZEe});function e6e(t,e){if(e)return t.slice();var r=t.length,n=NY?NY(r):new t.constructor(r);return t.copy(n),n}var MY,LY,JEe,RY,NY,U5,w9=M(()=>{"use strict";Co();MY=typeof exports=="object"&&exports&&!exports.nodeType&&exports,LY=MY&&typeof module=="object"&&module&&!module.nodeType&&module,JEe=LY&&LY.exports===MY,RY=JEe?li.Buffer:void 0,NY=RY?RY.allocUnsafe:void 0;o(e6e,"cloneBuffer");U5=e6e});var t6e,H0,T9=M(()=>{"use strict";Co();t6e=li.Uint8Array,H0=t6e});function r6e(t){var e=new t.constructor(t.byteLength);return new H0(e).set(new H0(t)),e}var W0,H5=M(()=>{"use strict";T9();o(r6e,"cloneArrayBuffer");W0=r6e});function n6e(t,e){var r=e?W0(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}var W5,k9=M(()=>{"use strict";H5();o(n6e,"cloneTypedArray");W5=n6e});function i6e(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r{"use strict";o(i6e,"copyArray");q5=i6e});var IY,a6e,OY,PY=M(()=>{"use strict";Xs();IY=Object.create,a6e=function(){function t(){}return o(t,"object"),function(e){if(!bn(e))return{};if(IY)return IY(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}(),OY=a6e});function s6e(t,e){return function(r){return t(e(r))}}var Y5,S9=M(()=>{"use strict";o(s6e,"overArg");Y5=s6e});var o6e,q0,X5=M(()=>{"use strict";S9();o6e=Y5(Object.getPrototypeOf,Object),q0=o6e});function c6e(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||l6e;return t===r}var l6e,cc,Y0=M(()=>{"use strict";l6e=Object.prototype;o(c6e,"isPrototype");cc=c6e});function u6e(t){return typeof t.constructor=="function"&&!cc(t)?OY(q0(t)):{}}var j5,C9=M(()=>{"use strict";PY();X5();Y0();o(u6e,"initCloneObject");j5=u6e});function h6e(t){return t!=null&&typeof t=="object"}var ri,_o=M(()=>{"use strict";o(h6e,"isObjectLike");ri=h6e});function d6e(t){return ri(t)&&ua(t)==f6e}var f6e,A9,BY=M(()=>{"use strict";wu();_o();f6e="[object Arguments]";o(d6e,"baseIsArguments");A9=d6e});var FY,p6e,m6e,g6e,wl,X0=M(()=>{"use strict";BY();_o();FY=Object.prototype,p6e=FY.hasOwnProperty,m6e=FY.propertyIsEnumerable,g6e=A9(function(){return arguments}())?A9:function(t){return ri(t)&&p6e.call(t,"callee")&&!m6e.call(t,"callee")},wl=g6e});var y6e,Ot,Un=M(()=>{"use strict";y6e=Array.isArray,Ot=y6e});function x6e(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=v6e}var v6e,j0,K5=M(()=>{"use strict";v6e=9007199254740991;o(x6e,"isLength");j0=x6e});function b6e(t){return t!=null&&j0(t.length)&&!Ei(t)}var ci,Do=M(()=>{"use strict";Mv();K5();o(b6e,"isArrayLike");ci=b6e});function w6e(t){return ri(t)&&ci(t)}var Ed,Q5=M(()=>{"use strict";Do();_o();o(w6e,"isArrayLikeObject");Ed=w6e});function T6e(){return!1}var zY,GY=M(()=>{"use strict";o(T6e,"stubFalse");zY=T6e});var UY,$Y,k6e,VY,E6e,S6e,Tl,K0=M(()=>{"use strict";Co();GY();UY=typeof exports=="object"&&exports&&!exports.nodeType&&exports,$Y=UY&&typeof module=="object"&&module&&!module.nodeType&&module,k6e=$Y&&$Y.exports===UY,VY=k6e?li.Buffer:void 0,E6e=VY?VY.isBuffer:void 0,S6e=E6e||zY,Tl=S6e});function R6e(t){if(!ri(t)||ua(t)!=C6e)return!1;var e=q0(t);if(e===null)return!0;var r=D6e.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&HY.call(r)==L6e}var C6e,A6e,_6e,HY,D6e,L6e,WY,qY=M(()=>{"use strict";wu();X5();_o();C6e="[object Object]",A6e=Function.prototype,_6e=Object.prototype,HY=A6e.toString,D6e=_6e.hasOwnProperty,L6e=HY.call(Object);o(R6e,"isPlainObject");WY=R6e});function rSe(t){return ri(t)&&j0(t.length)&&!!Fn[ua(t)]}var N6e,M6e,I6e,O6e,P6e,B6e,F6e,z6e,G6e,$6e,V6e,U6e,H6e,W6e,q6e,Y6e,X6e,j6e,K6e,Q6e,Z6e,J6e,eSe,tSe,Fn,YY,XY=M(()=>{"use strict";wu();K5();_o();N6e="[object Arguments]",M6e="[object Array]",I6e="[object Boolean]",O6e="[object Date]",P6e="[object Error]",B6e="[object Function]",F6e="[object Map]",z6e="[object Number]",G6e="[object Object]",$6e="[object RegExp]",V6e="[object Set]",U6e="[object String]",H6e="[object WeakMap]",W6e="[object ArrayBuffer]",q6e="[object DataView]",Y6e="[object Float32Array]",X6e="[object Float64Array]",j6e="[object Int8Array]",K6e="[object Int16Array]",Q6e="[object Int32Array]",Z6e="[object Uint8Array]",J6e="[object Uint8ClampedArray]",eSe="[object Uint16Array]",tSe="[object Uint32Array]",Fn={};Fn[Y6e]=Fn[X6e]=Fn[j6e]=Fn[K6e]=Fn[Q6e]=Fn[Z6e]=Fn[J6e]=Fn[eSe]=Fn[tSe]=!0;Fn[N6e]=Fn[M6e]=Fn[W6e]=Fn[I6e]=Fn[q6e]=Fn[O6e]=Fn[P6e]=Fn[B6e]=Fn[F6e]=Fn[z6e]=Fn[G6e]=Fn[$6e]=Fn[V6e]=Fn[U6e]=Fn[H6e]=!1;o(rSe,"baseIsTypedArray");YY=rSe});function nSe(t){return function(e){return t(e)}}var Lo,Sd=M(()=>{"use strict";o(nSe,"baseUnary");Lo=nSe});var jY,Gv,iSe,_9,aSe,Ro,$v=M(()=>{"use strict";p9();jY=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Gv=jY&&typeof module=="object"&&module&&!module.nodeType&&module,iSe=Gv&&Gv.exports===jY,_9=iSe&&F5.process,aSe=function(){try{var t=Gv&&Gv.require&&Gv.require("util").types;return t||_9&&_9.binding&&_9.binding("util")}catch{}}(),Ro=aSe});var KY,sSe,Rh,Vv=M(()=>{"use strict";XY();Sd();$v();KY=Ro&&Ro.isTypedArray,sSe=KY?Lo(KY):YY,Rh=sSe});function oSe(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}var Uv,D9=M(()=>{"use strict";o(oSe,"safeGet");Uv=oSe});function uSe(t,e,r){var n=t[e];(!(cSe.call(t,e)&&Ao(n,r))||r===void 0&&!(e in t))&&lc(t,e,r)}var lSe,cSe,uc,Q0=M(()=>{"use strict";V0();Td();lSe=Object.prototype,cSe=lSe.hasOwnProperty;o(uSe,"assignValue");uc=uSe});function hSe(t,e,r,n){var i=!r;r||(r={});for(var a=-1,s=e.length;++a{"use strict";Q0();V0();o(hSe,"copyObject");No=hSe});function fSe(t,e){for(var r=-1,n=Array(t);++r{"use strict";o(fSe,"baseTimes");QY=fSe});function mSe(t,e){var r=typeof t;return e=e??dSe,!!e&&(r=="number"||r!="symbol"&&pSe.test(t))&&t>-1&&t%1==0&&t{"use strict";dSe=9007199254740991,pSe=/^(?:0|[1-9]\d*)$/;o(mSe,"isIndex");Nh=mSe});function vSe(t,e){var r=Ot(t),n=!r&&wl(t),i=!r&&!n&&Tl(t),a=!r&&!n&&!i&&Rh(t),s=r||n||i||a,l=s?QY(t.length,String):[],u=l.length;for(var h in t)(e||ySe.call(t,h))&&!(s&&(h=="length"||i&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||Nh(h,u)))&&l.push(h);return l}var gSe,ySe,Z5,L9=M(()=>{"use strict";ZY();X0();Un();K0();Hv();Vv();gSe=Object.prototype,ySe=gSe.hasOwnProperty;o(vSe,"arrayLikeKeys");Z5=vSe});function xSe(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}var JY,eX=M(()=>{"use strict";o(xSe,"nativeKeysIn");JY=xSe});function TSe(t){if(!bn(t))return JY(t);var e=cc(t),r=[];for(var n in t)n=="constructor"&&(e||!wSe.call(t,n))||r.push(n);return r}var bSe,wSe,tX,rX=M(()=>{"use strict";Xs();Y0();eX();bSe=Object.prototype,wSe=bSe.hasOwnProperty;o(TSe,"baseKeysIn");tX=TSe});function kSe(t){return ci(t)?Z5(t,!0):tX(t)}var Ts,Mh=M(()=>{"use strict";L9();rX();Do();o(kSe,"keysIn");Ts=kSe});function ESe(t){return No(t,Ts(t))}var nX,iX=M(()=>{"use strict";Cd();Mh();o(ESe,"toPlainObject");nX=ESe});function SSe(t,e,r,n,i,a,s){var l=Uv(t,r),u=Uv(e,r),h=s.get(u);if(h){zv(t,r,h);return}var f=a?a(l,u,r+"",t,e,s):void 0,d=f===void 0;if(d){var p=Ot(u),m=!p&&Tl(u),g=!p&&!m&&Rh(u);f=u,p||m||g?Ot(l)?f=l:Ed(l)?f=q5(l):m?(d=!1,f=U5(u,!0)):g?(d=!1,f=W5(u,!0)):f=[]:WY(u)||wl(u)?(f=l,wl(l)?f=nX(l):(!bn(l)||Ei(l))&&(f=j5(u))):d=!1}d&&(s.set(u,f),i(f,u,n,a,s),s.delete(u)),zv(t,r,f)}var aX,sX=M(()=>{"use strict";b9();w9();k9();E9();C9();X0();Un();Q5();K0();Mv();Xs();qY();Vv();D9();iX();o(SSe,"baseMergeDeep");aX=SSe});function oX(t,e,r,n,i){t!==e&&U0(e,function(a,s){if(i||(i=new oc),bn(a))aX(t,e,s,r,oX,n,i);else{var l=n?n(Uv(t,s),a,s+"",t,e,i):void 0;l===void 0&&(l=a),zv(t,s,l)}},Ts)}var lX,cX=M(()=>{"use strict";Fv();b9();V5();sX();Xs();Mh();D9();o(oX,"baseMerge");lX=oX});function CSe(t){return t}var Ji,Eu=M(()=>{"use strict";o(CSe,"identity");Ji=CSe});function ASe(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}var uX,hX=M(()=>{"use strict";o(ASe,"apply");uX=ASe});function _Se(t,e,r){return e=fX(e===void 0?t.length-1:e,0),function(){for(var n=arguments,i=-1,a=fX(n.length-e,0),s=Array(a);++i{"use strict";hX();fX=Math.max;o(_Se,"overRest");J5=_Se});function DSe(t){return function(){return t}}var ks,N9=M(()=>{"use strict";o(DSe,"constant");ks=DSe});var LSe,dX,pX=M(()=>{"use strict";N9();x9();Eu();LSe=$0?function(t,e){return $0(t,"toString",{configurable:!0,enumerable:!1,value:ks(e),writable:!0})}:Ji,dX=LSe});function ISe(t){var e=0,r=0;return function(){var n=MSe(),i=NSe-(n-r);if(r=n,i>0){if(++e>=RSe)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var RSe,NSe,MSe,mX,gX=M(()=>{"use strict";RSe=800,NSe=16,MSe=Date.now;o(ISe,"shortOut");mX=ISe});var OSe,ew,M9=M(()=>{"use strict";pX();gX();OSe=mX(dX),ew=OSe});function PSe(t,e){return ew(J5(t,e,Ji),t+"")}var hc,Z0=M(()=>{"use strict";Eu();R9();M9();o(PSe,"baseRest");hc=PSe});function BSe(t,e,r){if(!bn(r))return!1;var n=typeof e;return(n=="number"?ci(r)&&Nh(e,r.length):n=="string"&&e in r)?Ao(r[e],t):!1}var js,Ad=M(()=>{"use strict";Td();Do();Hv();Xs();o(BSe,"isIterateeCall");js=BSe});function FSe(t){return hc(function(e,r){var n=-1,i=r.length,a=i>1?r[i-1]:void 0,s=i>2?r[2]:void 0;for(a=t.length>3&&typeof a=="function"?(i--,a):void 0,s&&js(r[0],r[1],s)&&(a=i<3?void 0:a,i=1),e=Object(e);++n{"use strict";Z0();Ad();o(FSe,"createAssigner");tw=FSe});var zSe,Ih,O9=M(()=>{"use strict";cX();I9();zSe=tw(function(t,e,r){lX(t,e,r)}),Ih=zSe});function F9(t,e){if(!t)return e;let r=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return GSe[r]??e}function HSe(t,e){let r=t.trim();if(r)return e.securityLevel!=="loose"?(0,xX.sanitizeUrl)(r):r}function TX(t,e){return!t||!e?0:Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function qSe(t){let e,r=0;t.forEach(i=>{r+=TX(i,e),e=i});let n=r/2;return z9(t,n)}function YSe(t){return t.length===1?t[0]:qSe(t)}function jSe(t,e,r){let n=structuredClone(r);Y.info("our points",n),e!=="start_left"&&e!=="start_right"&&n.reverse();let i=25+t,a=z9(n,i),s=10+t*.5,l=Math.atan2(n[0].y-a.y,n[0].x-a.x),u={x:0,y:0};return e==="start_left"?(u.x=Math.sin(l+Math.PI)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l+Math.PI)*s+(n[0].y+a.y)/2):e==="end_right"?(u.x=Math.sin(l-Math.PI)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l-Math.PI)*s+(n[0].y+a.y)/2-5):e==="end_left"?(u.x=Math.sin(l)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2-5):(u.x=Math.sin(l)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2),u}function G9(t){let e="",r="";for(let n of t)n!==void 0&&(n.startsWith("color:")||n.startsWith("text-align:")?r=r+n+";":e=e+n+";");return{style:e,labelStyle:r}}function KSe(t){let e="",r="0123456789abcdef",n=r.length;for(let i=0;i{"use strict";xX=Ta(O0(),1);hr();gr();GC();vt();Wf();r0();v9();O9();C4();B9="\u200B",GSe={curveBasis:So,curveBasisClosed:E5,curveBasisOpen:S5,curveBumpX:X_,curveBumpY:j_,curveBundle:K_,curveCardinalClosed:Q_,curveCardinalOpen:J_,curveCardinal:Av,curveCatmullRomClosed:r9,curveCatmullRomOpen:n9,curveCatmullRom:t9,curveLinear:xu,curveLinearClosed:L5,curveMonotoneX:a9,curveMonotoneY:s9,curveNatural:N5,curveStep:I5,curveStepAfter:l9,curveStepBefore:o9},$Se=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,VSe=o(function(t,e){let r=bX(t,/(?:init\b)|(?:initialize\b)/),n={};if(Array.isArray(r)){let s=r.map(l=>l.args);a0(s),n=$n(n,[...s])}else n=r.args;if(!n)return;let i=t0(t,e),a="config";return n[a]!==void 0&&(i==="flowchart-v2"&&(i="flowchart"),n[i]=n[a],delete n[a]),n},"detectInit"),bX=o(function(t,e=null){try{let r=new RegExp(`[%]{2}(?![{]${$Se.source})(?=[}][%]{2}).* +`,"ig");t=t.trim().replace(r,"").replace(/'/gm,'"'),Y.debug(`Detecting diagram directive${e!==null?" type:"+e:""} based on the text:${t}`);let n,i=[];for(;(n=Uf.exec(t))!==null;)if(n.index===Uf.lastIndex&&Uf.lastIndex++,n&&!e||e&&n[1]?.match(e)||e&&n[2]?.match(e)){let a=n[1]?n[1]:n[2],s=n[3]?n[3].trim():n[4]?JSON.parse(n[4].trim()):null;i.push({type:a,args:s})}return i.length===0?{type:t,args:null}:i.length===1?i[0]:i}catch(r){return Y.error(`ERROR: ${r.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},"detectDirective"),wX=o(function(t){return t.replace(Uf,"")},"removeDirectives"),USe=o(function(t,e){for(let[r,n]of e.entries())if(n.match(t))return r;return-1},"isSubstringInArray");o(F9,"interpolateToCurve");o(HSe,"formatUrl");WSe=o((t,...e)=>{let r=t.split("."),n=r.length-1,i=r[n],a=window;for(let s=0;s{let r=Math.pow(10,e);return Math.round(t*r)/r},"roundNumber"),z9=o((t,e)=>{let r,n=e;for(let i of t){if(r){let a=TX(i,r);if(a===0)return r;if(a=1)return{x:i.x,y:i.y};if(s>0&&s<1)return{x:yX((1-s)*r.x+s*i.x,5),y:yX((1-s)*r.y+s*i.y,5)}}}r=i}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),XSe=o((t,e,r)=>{Y.info(`our points ${JSON.stringify(e)}`),e[0]!==r&&(e=e.reverse());let i=z9(e,25),a=t?10:5,s=Math.atan2(e[0].y-i.y,e[0].x-i.x),l={x:0,y:0};return l.x=Math.sin(s)*a+(e[0].x+i.x)/2,l.y=-Math.cos(s)*a+(e[0].y+i.y)/2,l},"calcCardinalityPosition");o(jSe,"calcTerminalLabelPosition");o(G9,"getStylesFromArray");vX=0,$9=o(()=>(vX++,"id-"+Math.random().toString(36).substr(2,12)+"-"+vX),"generateId");o(KSe,"makeRandomHex");V9=o(t=>KSe(t.length),"random"),QSe=o(function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},"getTextObj"),ZSe=o(function(t,e){let r=e.text.replace(Ze.lineBreakRegex," "),[,n]=Mo(e.fontSize),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.style("text-anchor",e.anchor),i.style("font-family",e.fontFamily),i.style("font-size",n),i.style("font-weight",e.fontWeight),i.attr("fill",e.fill),e.class!==void 0&&i.attr("class",e.class);let a=i.append("tspan");return a.attr("x",e.x+e.textMargin*2),a.attr("fill",e.fill),a.text(r),i},"drawSimpleText"),U9=z0((t,e,r)=>{if(!t||(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
"},r),Ze.lineBreakRegex.test(t)))return t;let n=t.split(" ").filter(Boolean),i=[],a="";return n.forEach((s,l)=>{let u=ea(`${s} `,r),h=ea(a,r);if(u>e){let{hyphenatedStrings:p,remainingWord:m}=JSe(s,e,"-",r);i.push(a,...p),a=m}else h+u>=e?(i.push(a),a=s):a=[a,s].filter(Boolean).join(" ");l+1===n.length&&i.push(a)}),i.filter(s=>s!=="").join(r.joinWith)},(t,e,r)=>`${t}${e}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),JSe=z0((t,e,r="-",n)=>{n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},n);let i=[...t],a=[],s="";return i.forEach((l,u)=>{let h=`${s}${l}`;if(ea(h,n)>=e){let d=u+1,p=i.length===d,m=`${h}${r}`;a.push(p?h:m),s=""}else s=h}),{hyphenatedStrings:a,remainingWord:s}},(t,e,r="-",n)=>`${t}${e}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`);o(nw,"calculateTextHeight");o(ea,"calculateTextWidth");H9=z0((t,e)=>{let{fontSize:r=12,fontFamily:n="Arial",fontWeight:i=400}=e;if(!t)return{width:0,height:0};let[,a]=Mo(r),s=["sans-serif",n],l=t.split(Ze.lineBreakRegex),u=[],h=$e("body");if(!h.remove)return{width:0,height:0,lineHeight:0};let f=h.append("svg");for(let p of s){let m=0,g={width:0,height:0,lineHeight:0};for(let y of l){let v=QSe();v.text=y||B9;let x=ZSe(f,v).style("font-size",a).style("font-weight",i).style("font-family",p),b=(x._groups||x)[0][0].getBBox();if(b.width===0&&b.height===0)throw new Error("svg element not in render tree");g.width=Math.round(Math.max(g.width,b.width)),m=Math.round(b.height),g.height+=m,g.lineHeight=Math.round(Math.max(g.lineHeight,m))}u.push(g)}f.remove();let d=isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1;return u[d]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`),P9=class{constructor(e=!1,r){this.count=0;this.count=r?r.length:0,this.next=e?()=>this.count++:()=>Date.now()}static{o(this,"InitIDGenerator")}},eCe=o(function(t){return rw=rw||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),rw.innerHTML=t,unescape(rw.textContent)},"entityDecode");o(W9,"isDetailedError");tCe=o((t,e,r,n)=>{if(!n)return;let i=t.node()?.getBBox();i&&t.append("text").text(n).attr("text-anchor","middle").attr("x",i.x+i.width/2).attr("y",-r).attr("class",e)},"insertTitle"),Mo=o(t=>{if(typeof t=="number")return[t,t+"px"];let e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]},"parseFontSize");o(Es,"cleanAndMerge");$t={assignWithDepth:$n,wrapLabel:U9,calculateTextHeight:nw,calculateTextWidth:ea,calculateTextDimensions:H9,cleanAndMerge:Es,detectInit:VSe,detectDirective:bX,isSubstringInArray:USe,interpolateToCurve:F9,calcLabelPosition:YSe,calcCardinalityPosition:XSe,calcTerminalLabelPosition:jSe,formatUrl:HSe,getStylesFromArray:G9,generateId:$9,random:V9,runFunc:WSe,entityDecode:eCe,insertTitle:tCe,parseFontSize:Mo,InitIDGenerator:P9},kX=o(function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/#\w+;/g,function(r){let n=r.substring(1,r.length-1);return/^\+?\d+$/.test(n)?"\uFB02\xB0\xB0"+n+"\xB6\xDF":"\uFB02\xB0"+n+"\xB6\xDF"}),e},"encodeEntities"),ta=o(function(t){return t.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities"),Oh=o((t,e,{counter:r=0,prefix:n,suffix:i},a)=>a||`${n?`${n}_`:""}${t}_${e}_${r}${i?`_${i}`:""}`,"getEdgeId");o(zn,"handleUndefinedAttr")});function kl(t,e,r,n,i){if(!e[t].width)if(r)e[t].text=U9(e[t].text,i,n),e[t].textLines=e[t].text.split(Ze.lineBreakRegex).length,e[t].width=i,e[t].height=nw(e[t].text,n);else{let a=e[t].text.split(Ze.lineBreakRegex);e[t].textLines=a.length;let s=0;e[t].height=0,e[t].width=0;for(let l of a)e[t].width=Math.max(ea(l,n),e[t].width),s=nw(l,n),e[t].height=e[t].height+s}}function _X(t,e,r,n,i){let a=new ow(i);a.data.widthLimit=r.data.widthLimit/Math.min(q9,n.length);for(let[s,l]of n.entries()){let u=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=u,u=l.image.Y+l.image.height);let h=l.wrap&&Vt.wrap,f=iw(Vt);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",kl("label",l,h,f,a.data.widthLimit),l.label.Y=u+8,u=l.label.Y+l.label.height,l.type&&l.type.text!==""){l.type.text="["+l.type.text+"]";let g=iw(Vt);kl("type",l,h,g,a.data.widthLimit),l.type.Y=u+5,u=l.type.Y+l.type.height}if(l.descr&&l.descr.text!==""){let g=iw(Vt);g.fontSize=g.fontSize-2,kl("descr",l,h,g,a.data.widthLimit),l.descr.Y=u+20,u=l.descr.Y+l.descr.height}if(s==0||s%q9===0){let g=r.data.startx+Vt.diagramMarginX,y=r.data.stopy+Vt.diagramMarginY+u;a.setData(g,g,y,y)}else{let g=a.data.stopx!==a.data.startx?a.data.stopx+Vt.diagramMarginX:a.data.startx,y=a.data.starty;a.setData(g,g,y,y)}a.name=l.alias;let d=i.db.getC4ShapeArray(l.alias),p=i.db.getC4ShapeKeys(l.alias);p.length>0&&AX(a,t,d,p),e=l.alias;let m=i.db.getBoundarys(e);m.length>0&&_X(t,e,a,m,i),l.alias!=="global"&&CX(t,l,a),r.data.stopy=Math.max(a.data.stopy+Vt.c4ShapeMargin,r.data.stopy),r.data.stopx=Math.max(a.data.stopx+Vt.c4ShapeMargin,r.data.stopx),aw=Math.max(aw,r.data.stopx),sw=Math.max(sw,r.data.stopy)}}var aw,sw,SX,q9,Vt,ow,Y9,Wv,iw,rCe,CX,AX,Ss,EX,nCe,iCe,aCe,X9,DX=M(()=>{"use strict";hr();Eq();vt();SC();gr();K7();Gt();r0();sr();Ti();aw=0,sw=0,SX=4,q9=2;gy.yy=Hy;Vt={},ow=class{static{o(this,"Bounds")}constructor(e){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,Y9(e.db.getConfig())}setData(e,r,n,i){this.nextData.startx=this.data.startx=e,this.nextData.stopx=this.data.stopx=r,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=i}updateVal(e,r,n,i){e[r]===void 0?e[r]=n:e[r]=i(n,e[r])}insert(e){this.nextData.cnt=this.nextData.cnt+1;let r=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+e.margin:this.nextData.stopx+e.margin*2,n=r+e.width,i=this.nextData.starty+e.margin*2,a=i+e.height;(r>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>SX)&&(r=this.nextData.startx+e.margin+Vt.nextLinePaddingX,i=this.nextData.stopy+e.margin*2,this.nextData.stopx=n=r+e.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=a=i+e.height,this.nextData.cnt=1),e.x=r,e.y=i,this.updateVal(this.data,"startx",r,Math.min),this.updateVal(this.data,"starty",i,Math.min),this.updateVal(this.data,"stopx",n,Math.max),this.updateVal(this.data,"stopy",a,Math.max),this.updateVal(this.nextData,"startx",r,Math.min),this.updateVal(this.nextData,"starty",i,Math.min),this.updateVal(this.nextData,"stopx",n,Math.max),this.updateVal(this.nextData,"stopy",a,Math.max)}init(e){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},Y9(e.db.getConfig())}bumpLastMargin(e){this.data.stopx+=e,this.data.stopy+=e}},Y9=o(function(t){$n(Vt,t),t.fontFamily&&(Vt.personFontFamily=Vt.systemFontFamily=Vt.messageFontFamily=t.fontFamily),t.fontSize&&(Vt.personFontSize=Vt.systemFontSize=Vt.messageFontSize=t.fontSize),t.fontWeight&&(Vt.personFontWeight=Vt.systemFontWeight=Vt.messageFontWeight=t.fontWeight)},"setConf"),Wv=o((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"c4ShapeFont"),iw=o(t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight}),"boundaryFont"),rCe=o(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont");o(kl,"calcC4ShapeTextWH");CX=o(function(t,e,r){e.x=r.data.startx,e.y=r.data.starty,e.width=r.data.stopx-r.data.startx,e.height=r.data.stopy-r.data.starty,e.label.y=Vt.c4ShapeMargin-35;let n=e.wrap&&Vt.wrap,i=iw(Vt);i.fontSize=i.fontSize+2,i.fontWeight="bold";let a=ea(e.label.text,i);kl("label",e,n,i,a),bl.drawBoundary(t,e,Vt)},"drawBoundary"),AX=o(function(t,e,r,n){let i=0;for(let a of n){i=0;let s=r[a],l=Wv(Vt,s.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,s.typeC4Shape.width=ea("\xAB"+s.typeC4Shape.text+"\xBB",l),s.typeC4Shape.height=l.fontSize+2,s.typeC4Shape.Y=Vt.c4ShapePadding,i=s.typeC4Shape.Y+s.typeC4Shape.height-4,s.image={width:0,height:0,Y:0},s.typeC4Shape.text){case"person":case"external_person":s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height;break}s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height);let u=s.wrap&&Vt.wrap,h=Vt.width-Vt.c4ShapePadding*2,f=Wv(Vt,s.typeC4Shape.text);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",kl("label",s,u,f,h),s.label.Y=i+8,i=s.label.Y+s.label.height,s.type&&s.type.text!==""){s.type.text="["+s.type.text+"]";let m=Wv(Vt,s.typeC4Shape.text);kl("type",s,u,m,h),s.type.Y=i+5,i=s.type.Y+s.type.height}else if(s.techn&&s.techn.text!==""){s.techn.text="["+s.techn.text+"]";let m=Wv(Vt,s.techn.text);kl("techn",s,u,m,h),s.techn.Y=i+5,i=s.techn.Y+s.techn.height}let d=i,p=s.label.width;if(s.descr&&s.descr.text!==""){let m=Wv(Vt,s.typeC4Shape.text);kl("descr",s,u,m,h),s.descr.Y=i+20,i=s.descr.Y+s.descr.height,p=Math.max(s.label.width,s.descr.width),d=i-s.descr.textLines*5}p=p+Vt.c4ShapePadding,s.width=Math.max(s.width||Vt.width,p,Vt.width),s.height=Math.max(s.height||Vt.height,d,Vt.height),s.margin=s.margin||Vt.c4ShapeMargin,t.insert(s),bl.drawC4Shape(e,s,Vt)}t.bumpLastMargin(Vt.c4ShapeMargin)},"drawC4ShapeArray"),Ss=class{static{o(this,"Point")}constructor(e,r){this.x=e,this.y=r}},EX=o(function(t,e){let r=t.x,n=t.y,i=e.x,a=e.y,s=r+t.width/2,l=n+t.height/2,u=Math.abs(r-i),h=Math.abs(n-a),f=h/u,d=t.height/t.width,p=null;return n==a&&ri?p=new Ss(r,l):r==i&&na&&(p=new Ss(s,n)),r>i&&n=f?p=new Ss(r,l+f*t.width/2):p=new Ss(s-u/h*t.height/2,n+t.height):r=f?p=new Ss(r+t.width,l+f*t.width/2):p=new Ss(s+u/h*t.height/2,n+t.height):ra?d>=f?p=new Ss(r+t.width,l-f*t.width/2):p=new Ss(s+t.height/2*u/h,n):r>i&&n>a&&(d>=f?p=new Ss(r,l-t.width/2*f):p=new Ss(s-t.height/2*u/h,n)),p},"getIntersectPoint"),nCe=o(function(t,e){let r={x:0,y:0};r.x=e.x+e.width/2,r.y=e.y+e.height/2;let n=EX(t,r);r.x=t.x+t.width/2,r.y=t.y+t.height/2;let i=EX(e,r);return{startPoint:n,endPoint:i}},"getIntersectPoints"),iCe=o(function(t,e,r,n){let i=0;for(let a of e){i=i+1;let s=a.wrap&&Vt.wrap,l=rCe(Vt);n.db.getC4Type()==="C4Dynamic"&&(a.label.text=i+": "+a.label.text);let h=ea(a.label.text,l);kl("label",a,s,l,h),a.techn&&a.techn.text!==""&&(h=ea(a.techn.text,l),kl("techn",a,s,l,h)),a.descr&&a.descr.text!==""&&(h=ea(a.descr.text,l),kl("descr",a,s,l,h));let f=r(a.from),d=r(a.to),p=nCe(f,d);a.startPoint=p.startPoint,a.endPoint=p.endPoint}bl.drawRels(t,e,Vt)},"drawRels");o(_X,"drawInsideBoundary");aCe=o(function(t,e,r,n){Vt=me().c4;let i=me().securityLevel,a;i==="sandbox"&&(a=$e("#i"+e));let s=i==="sandbox"?$e(a.nodes()[0].contentDocument.body):$e("body"),l=n.db;n.db.setWrap(Vt.wrap),SX=l.getC4ShapeInRow(),q9=l.getC4BoundaryInRow(),Y.debug(`C:${JSON.stringify(Vt,null,2)}`);let u=i==="sandbox"?s.select(`[id="${e}"]`):$e(`[id="${e}"]`);bl.insertComputerIcon(u),bl.insertDatabaseIcon(u),bl.insertClockIcon(u);let h=new ow(n);h.setData(Vt.diagramMarginX,Vt.diagramMarginX,Vt.diagramMarginY,Vt.diagramMarginY),h.data.widthLimit=screen.availWidth,aw=Vt.diagramMarginX,sw=Vt.diagramMarginY;let f=n.db.getTitle(),d=n.db.getBoundarys("");_X(u,"",h,d,n),bl.insertArrowHead(u),bl.insertArrowEnd(u),bl.insertArrowCrossHead(u),bl.insertArrowFilledHead(u),iCe(u,n.db.getRels(),n.db.getC4Shape,n),h.data.stopx=aw,h.data.stopy=sw;let p=h.data,g=p.stopy-p.starty+2*Vt.diagramMarginY,v=p.stopx-p.startx+2*Vt.diagramMarginX;f&&u.append("text").text(f).attr("x",(p.stopx-p.startx)/2-4*Vt.diagramMarginX).attr("y",p.starty+Vt.diagramMarginY),vn(u,g,v,Vt.useMaxWidth);let x=f?60:0;u.attr("viewBox",p.startx-Vt.diagramMarginX+" -"+(Vt.diagramMarginY+x)+" "+v+" "+(g+x)),Y.debug("models:",p)},"draw"),X9={drawPersonOrSystemArray:AX,drawBoundary:CX,setConf:Y9,draw:aCe}});var sCe,LX,RX=M(()=>{"use strict";sCe=o(t=>`.person { stroke: ${t.personBorder}; fill: ${t.personBkg}; } -`,"getStyles"),$X=i7e});var UX={};vr(UX,{diagram:()=>a7e});var a7e,HX=M(()=>{"use strict";PS();l7();GX();VX();a7e={parser:QF,db:oy,renderer:o9,styles:$X,init:o(({c4:t,wrap:e})=>{o9.setConf(t),oy.setWrap(e)},"init")}});function u9(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function ZX(t){Ed=t}function eo(t,e){if(e){if(JX.test(t))return t.replace(c7e,qX)}else if(ej.test(t))return t.replace(u7e,qX);return t}function d7e(t){return t.replace(f7e,(e,r)=>(r=r.toLowerCase(),r==="colon"?":":r.charAt(0)==="#"?r.charAt(1)==="x"?String.fromCharCode(parseInt(r.substring(2),16)):String.fromCharCode(+r.substring(1)):""))}function fn(t,e){let r=typeof t=="string"?t:t.source;e=e||"";let n={replace:o((i,a)=>{let s=typeof a=="string"?a:a.source;return s=s.replace(p7e,"$1"),r=r.replace(i,s),n},"replace"),getRegex:o(()=>new RegExp(r,e),"getRegex")};return n}function XX(t){try{t=encodeURI(t).replace(/%25/g,"%")}catch{return null}return t}function jX(t,e){let r=t.replace(/\|/g,(a,s,l)=>{let u=!1,h=s;for(;--h>=0&&l[h]==="\\";)u=!u;return u?"|":" |"}),n=r.split(/ \|/),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length{let a=i.match(/^\s+/);if(a===null)return i;let[s]=a;return s.length>=n.length?i.slice(n.length):i}).join(` -`)}function en(t,e){return kd.parse(t,e)}var Ed,JX,c7e,ej,u7e,h7e,qX,f7e,p7e,uv,nm,y7e,v7e,x7e,fv,b7e,tj,rj,h9,w7e,f9,T7e,k7e,w5,d9,E7e,nj,S7e,p9,QX,C7e,A7e,ij,_7e,aj,L7e,dv,D7e,N7e,R7e,M7e,I7e,O7e,P7e,B7e,F7e,b5,z7e,sj,oj,G7e,m9,$7e,l9,V7e,x5,cv,ku,im,hv,Eu,rm,c9,kd,u6t,h6t,f6t,d6t,p6t,m6t,g6t,lj=M(()=>{"use strict";o(u9,"_getDefaults");Ed=u9();o(ZX,"changeDefaults");JX=/[&<>"']/,c7e=new RegExp(JX.source,"g"),ej=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,u7e=new RegExp(ej.source,"g"),h7e={"&":"&","<":"<",">":">",'"':""","'":"'"},qX=o(t=>h7e[t],"getEscapeReplacement");o(eo,"escape$1");f7e=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;o(d7e,"unescape");p7e=/(^|[^\[])\^/g;o(fn,"edit");o(XX,"cleanUrl");uv={exec:o(()=>null,"exec")};o(jX,"splitCells");o(lv,"rtrim");o(m7e,"findClosingBracket");o(KX,"outputLink");o(g7e,"indentCodeCompensation");nm=class{static{o(this,"_Tokenizer")}options;rules;lexer;constructor(e){this.options=e||Ed}space(e){let r=this.rules.block.newline.exec(e);if(r&&r[0].length>0)return{type:"space",raw:r[0]}}code(e){let r=this.rules.block.code.exec(e);if(r){let n=r[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:r[0],codeBlockStyle:"indented",text:this.options.pedantic?n:lv(n,` -`)}}}fences(e){let r=this.rules.block.fences.exec(e);if(r){let n=r[0],i=g7e(n,r[3]||"");return{type:"code",raw:n,lang:r[2]?r[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):r[2],text:i}}}heading(e){let r=this.rules.block.heading.exec(e);if(r){let n=r[2].trim();if(/#$/.test(n)){let i=lv(n,"#");(this.options.pedantic||!i||/ $/.test(i))&&(n=i.trim())}return{type:"heading",raw:r[0],depth:r[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let r=this.rules.block.hr.exec(e);if(r)return{type:"hr",raw:lv(r[0],` -`)}}blockquote(e){let r=this.rules.block.blockquote.exec(e);if(r){let n=lv(r[0],` +`,"getStyles"),LX=sCe});var NX={};pr(NX,{diagram:()=>oCe});var oCe,MX=M(()=>{"use strict";SC();K7();DX();RX();oCe={parser:GF,db:Hy,renderer:X9,styles:LX,init:o(({c4:t,wrap:e})=>{X9.setConf(t),Hy.setWrap(e)},"init")}});function QX(t){return typeof t>"u"||t===null}function hCe(t){return typeof t=="object"&&t!==null}function fCe(t){return Array.isArray(t)?t:QX(t)?[]:[t]}function dCe(t,e){var r,n,i,a;if(e)for(a=Object.keys(e),r=0,n=a.length;rl&&(a=" ... ",e=n-l+a.length),r-n>l&&(s=" ...",r=n+l-s.length),{str:a+t.slice(e,r).replace(/\t/g,"\u2192")+s,pos:n-e+a.length}}function K9(t,e){return Bi.repeat(" ",e-t.length)+t}function TCe(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),typeof e.indent!="number"&&(e.indent=1),typeof e.linesBefore!="number"&&(e.linesBefore=3),typeof e.linesAfter!="number"&&(e.linesAfter=2);for(var r=/\r?\n|\r|\0/g,n=[0],i=[],a,s=-1;a=r.exec(t.buffer);)i.push(a.index),n.push(a.index+a[0].length),t.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var l="",u,h,f=Math.min(t.line+e.linesAfter,i.length).toString().length,d=e.maxLength-(e.indent+f+3);for(u=1;u<=e.linesBefore&&!(s-u<0);u++)h=j9(t.buffer,n[s-u],i[s-u],t.position-(n[s]-n[s-u]),d),l=Bi.repeat(" ",e.indent)+K9((t.line-u+1).toString(),f)+" | "+h.str+` +`+l;for(h=j9(t.buffer,n[s],i[s],t.position,d),l+=Bi.repeat(" ",e.indent)+K9((t.line+1).toString(),f)+" | "+h.str+` +`,l+=Bi.repeat("-",e.indent+f+3+h.pos)+`^ +`,u=1;u<=e.linesAfter&&!(s+u>=i.length);u++)h=j9(t.buffer,n[s+u],i[s+u],t.position-(n[s]-n[s+u]),d),l+=Bi.repeat(" ",e.indent)+K9((t.line+u+1).toString(),f)+" | "+h.str+` +`;return l.replace(/\n$/,"")}function CCe(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(n){e[String(n)]=r})}),e}function ACe(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(ECe.indexOf(r)===-1)throw new Cs('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=CCe(e.styleAliases||null),SCe.indexOf(this.kind)===-1)throw new Cs('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}function PX(t,e){var r=[];return t[e].forEach(function(n){var i=r.length;r.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(i=s)}),r[i]=n}),r}function _Ce(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},e,r;function n(i){i.multi?(t.multi[i.kind].push(i),t.multi.fallback.push(i)):t[i.kind][i.tag]=t.fallback[i.tag]=i}for(o(n,"collectType"),e=0,r=arguments.length;e=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:r*parseFloat(e,10)}function JCe(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Bi.isNegativeZero(t))return"-0.0";return r=t.toString(10),ZCe.test(r)?r.replace("e",".e"):r}function e7e(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||Bi.isNegativeZero(t))}function n7e(t){return t===null?!1:ej.exec(t)!==null||tj.exec(t)!==null}function i7e(t){var e,r,n,i,a,s,l,u=0,h=null,f,d,p;if(e=ej.exec(t),e===null&&(e=tj.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],n=+e[2]-1,i=+e[3],!e[4])return new Date(Date.UTC(r,n,i));if(a=+e[4],s=+e[5],l=+e[6],e[7]){for(u=e[7].slice(0,3);u.length<3;)u+="0";u=+u}return e[9]&&(f=+e[10],d=+(e[11]||0),h=(f*60+d)*6e4,e[9]==="-"&&(h=-h)),p=new Date(Date.UTC(r,n,i,a,s,l,u)),h&&p.setTime(p.getTime()-h),p}function a7e(t){return t.toISOString()}function o7e(t){return t==="<<"||t===null}function c7e(t){if(t===null)return!1;var e,r,n=0,i=t.length,a=nD;for(r=0;r64)){if(e<0)return!1;n+=6}return n%8===0}function u7e(t){var e,r,n=t.replace(/[\r\n=]/g,""),i=n.length,a=nD,s=0,l=[];for(e=0;e>16&255),l.push(s>>8&255),l.push(s&255)),s=s<<6|a.indexOf(n.charAt(e));return r=i%4*6,r===0?(l.push(s>>16&255),l.push(s>>8&255),l.push(s&255)):r===18?(l.push(s>>10&255),l.push(s>>2&255)):r===12&&l.push(s>>4&255),new Uint8Array(l)}function h7e(t){var e="",r=0,n,i,a=t.length,s=nD;for(n=0;n>18&63],e+=s[r>>12&63],e+=s[r>>6&63],e+=s[r&63]),r=(r<<8)+t[n];return i=a%3,i===0?(e+=s[r>>18&63],e+=s[r>>12&63],e+=s[r>>6&63],e+=s[r&63]):i===2?(e+=s[r>>10&63],e+=s[r>>4&63],e+=s[r<<2&63],e+=s[64]):i===1&&(e+=s[r>>2&63],e+=s[r<<4&63],e+=s[64],e+=s[64]),e}function f7e(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}function g7e(t){if(t===null)return!0;var e=[],r,n,i,a,s,l=t;for(r=0,n=l.length;r>10)+55296,(t-65536&1023)+56320)}function O7e(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||rj,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function cj(t,e){var r={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return r.snippet=kCe(r),new Cs(e,r)}function Qt(t,e){throw cj(t,e)}function uw(t,e){t.onWarning&&t.onWarning.call(null,cj(t,e))}function Ph(t,e,r,n){var i,a,s,l;if(e1&&(t.result+=Bi.repeat(` +`,e-1))}function P7e(t,e,r){var n,i,a,s,l,u,h,f,d=t.kind,p=t.result,m;if(m=t.input.charCodeAt(t.position),As(m)||em(m)||m===35||m===38||m===42||m===33||m===124||m===62||m===39||m===34||m===37||m===64||m===96||(m===63||m===45)&&(i=t.input.charCodeAt(t.position+1),As(i)||r&&em(i)))return!1;for(t.kind="scalar",t.result="",a=s=t.position,l=!1;m!==0;){if(m===58){if(i=t.input.charCodeAt(t.position+1),As(i)||r&&em(i))break}else if(m===35){if(n=t.input.charCodeAt(t.position-1),As(n))break}else{if(t.position===t.lineStart&&dw(t)||r&&em(m))break;if(fc(m))if(u=t.line,h=t.lineStart,f=t.lineIndent,Si(t,!1,-1),t.lineIndent>=e){l=!0,m=t.input.charCodeAt(t.position);continue}else{t.position=s,t.line=u,t.lineStart=h,t.lineIndent=f;break}}l&&(Ph(t,a,s,!1),aD(t,t.line-u),a=s=t.position,l=!1),Dd(m)||(s=t.position+1),m=t.input.charCodeAt(++t.position)}return Ph(t,a,s,!1),t.result?!0:(t.kind=d,t.result=p,!1)}function B7e(t,e){var r,n,i;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,n=i=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(Ph(t,n,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)n=t.position,t.position++,i=t.position;else return!0;else fc(r)?(Ph(t,n,i,!0),aD(t,Si(t,!1,e)),n=i=t.position):t.position===t.lineStart&&dw(t)?Qt(t,"unexpected end of the document within a single quoted scalar"):(t.position++,i=t.position);Qt(t,"unexpected end of the stream within a single quoted scalar")}function F7e(t,e){var r,n,i,a,s,l;if(l=t.input.charCodeAt(t.position),l!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=n=t.position;(l=t.input.charCodeAt(t.position))!==0;){if(l===34)return Ph(t,r,t.position,!0),t.position++,!0;if(l===92){if(Ph(t,r,t.position,!0),l=t.input.charCodeAt(++t.position),fc(l))Si(t,!1,e);else if(l<256&&oj[l])t.result+=lj[l],t.position++;else if((s=N7e(l))>0){for(i=s,a=0;i>0;i--)l=t.input.charCodeAt(++t.position),(s=R7e(l))>=0?a=(a<<4)+s:Qt(t,"expected hexadecimal character");t.result+=I7e(a),t.position++}else Qt(t,"unknown escape sequence");r=n=t.position}else fc(l)?(Ph(t,r,n,!0),aD(t,Si(t,!1,e)),r=n=t.position):t.position===t.lineStart&&dw(t)?Qt(t,"unexpected end of the document within a double quoted scalar"):(t.position++,n=t.position)}Qt(t,"unexpected end of the stream within a double quoted scalar")}function z7e(t,e){var r=!0,n,i,a,s=t.tag,l,u=t.anchor,h,f,d,p,m,g=Object.create(null),y,v,x,b;if(b=t.input.charCodeAt(t.position),b===91)f=93,m=!1,l=[];else if(b===123)f=125,m=!0,l={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=l),b=t.input.charCodeAt(++t.position);b!==0;){if(Si(t,!0,e),b=t.input.charCodeAt(t.position),b===f)return t.position++,t.tag=s,t.anchor=u,t.kind=m?"mapping":"sequence",t.result=l,!0;r?b===44&&Qt(t,"expected the node content, but found ','"):Qt(t,"missed comma between flow collection entries"),v=y=x=null,d=p=!1,b===63&&(h=t.input.charCodeAt(t.position+1),As(h)&&(d=p=!0,t.position++,Si(t,!0,e))),n=t.line,i=t.lineStart,a=t.position,rm(t,e,lw,!1,!0),v=t.tag,y=t.result,Si(t,!0,e),b=t.input.charCodeAt(t.position),(p||t.line===n)&&b===58&&(d=!0,b=t.input.charCodeAt(++t.position),Si(t,!0,e),rm(t,e,lw,!1,!0),x=t.result),m?tm(t,l,g,v,y,x,n,i,a):d?l.push(tm(t,null,g,v,y,x,n,i,a)):l.push(y),Si(t,!0,e),b=t.input.charCodeAt(t.position),b===44?(r=!0,b=t.input.charCodeAt(++t.position)):r=!1}Qt(t,"unexpected end of the stream within a flow collection")}function G7e(t,e){var r,n,i=Q9,a=!1,s=!1,l=e,u=0,h=!1,f,d;if(d=t.input.charCodeAt(t.position),d===124)n=!1;else if(d===62)n=!0;else return!1;for(t.kind="scalar",t.result="";d!==0;)if(d=t.input.charCodeAt(++t.position),d===43||d===45)Q9===i?i=d===43?BX:A7e:Qt(t,"repeat of a chomping mode identifier");else if((f=M7e(d))>=0)f===0?Qt(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?Qt(t,"repeat of an indentation width identifier"):(l=e+f-1,s=!0);else break;if(Dd(d)){do d=t.input.charCodeAt(++t.position);while(Dd(d));if(d===35)do d=t.input.charCodeAt(++t.position);while(!fc(d)&&d!==0)}for(;d!==0;){for(iD(t),t.lineIndent=0,d=t.input.charCodeAt(t.position);(!s||t.lineIndentl&&(l=t.lineIndent),fc(d)){u++;continue}if(t.lineIndente)&&u!==0)Qt(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(v&&(s=t.line,l=t.lineStart,u=t.position),rm(t,e,cw,!0,i)&&(v?g=t.result:y=t.result),v||(tm(t,d,p,m,g,y,s,l,u),m=g=y=null),Si(t,!0,-1),b=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&b!==0)Qt(t,"bad indentation of a mapping entry");else if(t.lineIndente?u=1:t.lineIndent===e?u=0:t.lineIndente?u=1:t.lineIndent===e?u=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),d=0,p=t.implicitTypes.length;d"),t.result!==null&&g.kind!==t.kind&&Qt(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+g.kind+'", not "'+t.kind+'"'),g.resolve(t.result,t.tag)?(t.result=g.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Qt(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||f}function W7e(t){var e=t.position,r,n,i,a=!1,s;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(s=t.input.charCodeAt(t.position))!==0&&(Si(t,!0,-1),s=t.input.charCodeAt(t.position),!(t.lineIndent>0||s!==37));){for(a=!0,s=t.input.charCodeAt(++t.position),r=t.position;s!==0&&!As(s);)s=t.input.charCodeAt(++t.position);for(n=t.input.slice(r,t.position),i=[],n.length<1&&Qt(t,"directive name must not be less than one character in length");s!==0;){for(;Dd(s);)s=t.input.charCodeAt(++t.position);if(s===35){do s=t.input.charCodeAt(++t.position);while(s!==0&&!fc(s));break}if(fc(s))break;for(r=t.position;s!==0&&!As(s);)s=t.input.charCodeAt(++t.position);i.push(t.input.slice(r,t.position))}s!==0&&iD(t),Bh.call(GX,n)?GX[n](t,n,i):uw(t,'unknown document directive "'+n+'"')}if(Si(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,Si(t,!0,-1)):a&&Qt(t,"directives end mark is expected"),rm(t,t.lineIndent-1,cw,!1,!0),Si(t,!0,-1),t.checkLineBreaks&&D7e.test(t.input.slice(e,t.position))&&uw(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&dw(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Si(t,!0,-1));return}if(t.position"u"&&(r=e,e=null);var n=uj(t,r);if(typeof e!="function")return n;for(var i=0,a=n.length;i=55296&&r<=56319&&e+1=56320&&n<=57343)?(r-55296)*1024+n-56320+65536:r}function xj(t){var e=/^\n* /;return e.test(t)}function wAe(t,e,r,n,i,a,s,l){var u,h=0,f=null,d=!1,p=!1,m=n!==-1,g=-1,y=xAe(qv(t,0))&&bAe(qv(t,t.length-1));if(e||s)for(u=0;u=65536?u+=2:u++){if(h=qv(t,u),!Kv(h))return J0;y=y&&WX(h,f,l),f=h}else{for(u=0;u=65536?u+=2:u++){if(h=qv(t,u),h===Xv)d=!0,m&&(p=p||u-g-1>n&&t[g+1]!==" ",g=u);else if(!Kv(h))return J0;y=y&&WX(h,f,l),f=h}p=p||m&&u-g-1>n&&t[g+1]!==" "}return!d&&!p?y&&!s&&!i(t)?bj:a===jv?J0:tD:r>9&&xj(t)?J0:s?a===jv?J0:tD:p?Tj:wj}function TAe(t,e,r,n,i){t.dump=function(){if(e.length===0)return t.quotingType===jv?'""':"''";if(!t.noCompatMode&&(fAe.indexOf(e)!==-1||dAe.test(e)))return t.quotingType===jv?'"'+e+'"':"'"+e+"'";var a=t.indent*Math.max(1,r),s=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),l=n||t.flowLevel>-1&&r>=t.flowLevel;function u(h){return vAe(t,h)}switch(o(u,"testAmbiguity"),wAe(e,l,t.indent,s,u,t.quotingType,t.forceQuotes&&!n,i)){case bj:return e;case tD:return"'"+e.replace(/'/g,"''")+"'";case wj:return"|"+qX(e,t.indent)+YX(UX(e,a));case Tj:return">"+qX(e,t.indent)+YX(UX(kAe(e,s),a));case J0:return'"'+EAe(e)+'"';default:throw new Cs("impossible error: invalid scalar style")}}()}function qX(t,e){var r=xj(t)?String(e):"",n=t[t.length-1]===` +`,i=n&&(t[t.length-2]===` +`||t===` +`),a=i?"+":n?"":"-";return r+a+` +`}function YX(t){return t[t.length-1]===` +`?t.slice(0,-1):t}function kAe(t,e){for(var r=/(\n+)([^\n]*)/g,n=function(){var h=t.indexOf(` +`);return h=h!==-1?h:t.length,r.lastIndex=h,XX(t.slice(0,h),e)}(),i=t[0]===` +`||t[0]===" ",a,s;s=r.exec(t);){var l=s[1],u=s[2];a=u[0]===" ",n+=l+(!i&&!a&&u!==""?` +`:"")+XX(u,e),i=a}return n}function XX(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,n,i=0,a,s=0,l=0,u="";n=r.exec(t);)l=n.index,l-i>e&&(a=s>i?s:l,u+=` +`+t.slice(i,a),i=a+1),s=l;return u+=` +`,t.length-i>e&&s>i?u+=t.slice(i,s)+` +`+t.slice(s+1):u+=t.slice(i),u.slice(1)}function EAe(t){for(var e="",r=0,n,i=0;i=65536?i+=2:i++)r=qv(t,i),n=Aa[r],!n&&Kv(r)?(e+=t[i],r>=65536&&(e+=t[i+1])):e+=n||mAe(r);return e}function SAe(t,e,r){var n="",i=t.tag,a,s,l;for(a=0,s=r.length;a"u"&&Su(t,e,null,!1,!1))&&(n!==""&&(n+=","+(t.condenseFlow?"":" ")),n+=t.dump);t.tag=i,t.dump="["+n+"]"}function jX(t,e,r,n){var i="",a=t.tag,s,l,u;for(s=0,l=r.length;s"u"&&Su(t,e+1,null,!0,!0,!1,!0))&&((!n||i!=="")&&(i+=eD(t,e)),t.dump&&Xv===t.dump.charCodeAt(0)?i+="-":i+="- ",i+=t.dump);t.tag=a,t.dump=i||"[]"}function CAe(t,e,r){var n="",i=t.tag,a=Object.keys(r),s,l,u,h,f;for(s=0,l=a.length;s1024&&(f+="? "),f+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Su(t,e,h,!1,!1)&&(f+=t.dump,n+=f));t.tag=i,t.dump="{"+n+"}"}function AAe(t,e,r,n){var i="",a=t.tag,s=Object.keys(r),l,u,h,f,d,p;if(t.sortKeys===!0)s.sort();else if(typeof t.sortKeys=="function")s.sort(t.sortKeys);else if(t.sortKeys)throw new Cs("sortKeys must be a boolean or a function");for(l=0,u=s.length;l1024,d&&(t.dump&&Xv===t.dump.charCodeAt(0)?p+="?":p+="? "),p+=t.dump,d&&(p+=eD(t,e)),Su(t,e+1,f,!0,d)&&(t.dump&&Xv===t.dump.charCodeAt(0)?p+=":":p+=": ",p+=t.dump,i+=p));t.tag=a,t.dump=i||"{}"}function KX(t,e,r){var n,i,a,s,l,u;for(i=r?t.explicitTypes:t.implicitTypes,a=0,s=i.length;a tag resolver accepts not "'+u+'" style');t.dump=n}return!0}return!1}function Su(t,e,r,n,i,a,s){t.tag=null,t.dump=r,KX(t,r,!1)||KX(t,r,!0);var l=fj.call(t.dump),u=n,h;n&&(n=t.flowLevel<0||t.flowLevel>e);var f=l==="[object Object]"||l==="[object Array]",d,p;if(f&&(d=t.duplicates.indexOf(r),p=d!==-1),(t.tag!==null&&t.tag!=="?"||p||t.indent!==2&&e>0)&&(i=!1),p&&t.usedDuplicates[d])t.dump="*ref_"+d;else{if(f&&p&&!t.usedDuplicates[d]&&(t.usedDuplicates[d]=!0),l==="[object Object]")n&&Object.keys(t.dump).length!==0?(AAe(t,e,t.dump,i),p&&(t.dump="&ref_"+d+t.dump)):(CAe(t,e,t.dump),p&&(t.dump="&ref_"+d+" "+t.dump));else if(l==="[object Array]")n&&t.dump.length!==0?(t.noArrayIndent&&!s&&e>0?jX(t,e-1,t.dump,i):jX(t,e,t.dump,i),p&&(t.dump="&ref_"+d+t.dump)):(SAe(t,e,t.dump),p&&(t.dump="&ref_"+d+" "+t.dump));else if(l==="[object String]")t.tag!=="?"&&TAe(t,t.dump,e,a,u);else{if(l==="[object Undefined]")return!1;if(t.skipInvalid)return!1;throw new Cs("unacceptable kind of an object to dump "+l)}t.tag!==null&&t.tag!=="?"&&(h=encodeURI(t.tag[0]==="!"?t.tag.slice(1):t.tag).replace(/!/g,"%21"),t.tag[0]==="!"?h="!"+h:h.slice(0,18)==="tag:yaml.org,2002:"?h="!!"+h.slice(18):h="!<"+h+">",t.dump=h+" "+t.dump)}return!0}function _Ae(t,e){var r=[],n=[],i,a;for(rD(t,r,n),i=0,a=n.length;i{"use strict";o(QX,"isNothing");o(hCe,"isObject");o(fCe,"toArray");o(dCe,"extend");o(pCe,"repeat");o(mCe,"isNegativeZero");gCe=QX,yCe=hCe,vCe=fCe,xCe=pCe,bCe=mCe,wCe=dCe,Bi={isNothing:gCe,isObject:yCe,toArray:vCe,repeat:xCe,isNegativeZero:bCe,extend:wCe};o(ZX,"formatError");o(Yv,"YAMLException$1");Yv.prototype=Object.create(Error.prototype);Yv.prototype.constructor=Yv;Yv.prototype.toString=o(function(e){return this.name+": "+ZX(this,e)},"toString");Cs=Yv;o(j9,"getLine");o(K9,"padStart");o(TCe,"makeSnippet");kCe=TCe,ECe=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],SCe=["scalar","sequence","mapping"];o(CCe,"compileStyleAliases");o(ACe,"Type$1");Ca=ACe;o(PX,"compileList");o(_Ce,"compileMap");o(Z9,"Schema$1");Z9.prototype.extend=o(function(e){var r=[],n=[];if(e instanceof Ca)n.push(e);else if(Array.isArray(e))n=n.concat(e);else if(e&&(Array.isArray(e.implicit)||Array.isArray(e.explicit)))e.implicit&&(r=r.concat(e.implicit)),e.explicit&&(n=n.concat(e.explicit));else throw new Cs("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");r.forEach(function(a){if(!(a instanceof Ca))throw new Cs("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new Cs("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(a.multi)throw new Cs("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),n.forEach(function(a){if(!(a instanceof Ca))throw new Cs("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(Z9.prototype);return i.implicit=(this.implicit||[]).concat(r),i.explicit=(this.explicit||[]).concat(n),i.compiledImplicit=PX(i,"implicit"),i.compiledExplicit=PX(i,"explicit"),i.compiledTypeMap=_Ce(i.compiledImplicit,i.compiledExplicit),i},"extend");DCe=Z9,LCe=new Ca("tag:yaml.org,2002:str",{kind:"scalar",construct:o(function(t){return t!==null?t:""},"construct")}),RCe=new Ca("tag:yaml.org,2002:seq",{kind:"sequence",construct:o(function(t){return t!==null?t:[]},"construct")}),NCe=new Ca("tag:yaml.org,2002:map",{kind:"mapping",construct:o(function(t){return t!==null?t:{}},"construct")}),MCe=new DCe({explicit:[LCe,RCe,NCe]});o(ICe,"resolveYamlNull");o(OCe,"constructYamlNull");o(PCe,"isNull");BCe=new Ca("tag:yaml.org,2002:null",{kind:"scalar",resolve:ICe,construct:OCe,predicate:PCe,represent:{canonical:o(function(){return"~"},"canonical"),lowercase:o(function(){return"null"},"lowercase"),uppercase:o(function(){return"NULL"},"uppercase"),camelcase:o(function(){return"Null"},"camelcase"),empty:o(function(){return""},"empty")},defaultStyle:"lowercase"});o(FCe,"resolveYamlBoolean");o(zCe,"constructYamlBoolean");o(GCe,"isBoolean");$Ce=new Ca("tag:yaml.org,2002:bool",{kind:"scalar",resolve:FCe,construct:zCe,predicate:GCe,represent:{lowercase:o(function(t){return t?"true":"false"},"lowercase"),uppercase:o(function(t){return t?"TRUE":"FALSE"},"uppercase"),camelcase:o(function(t){return t?"True":"False"},"camelcase")},defaultStyle:"lowercase"});o(VCe,"isHexCode");o(UCe,"isOctCode");o(HCe,"isDecCode");o(WCe,"resolveYamlInteger");o(qCe,"constructYamlInteger");o(YCe,"isInteger");XCe=new Ca("tag:yaml.org,2002:int",{kind:"scalar",resolve:WCe,construct:qCe,predicate:YCe,represent:{binary:o(function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},"binary"),octal:o(function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},"octal"),decimal:o(function(t){return t.toString(10)},"decimal"),hexadecimal:o(function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),jCe=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");o(KCe,"resolveYamlFloat");o(QCe,"constructYamlFloat");ZCe=/^[-+]?[0-9]+e/;o(JCe,"representYamlFloat");o(e7e,"isFloat");t7e=new Ca("tag:yaml.org,2002:float",{kind:"scalar",resolve:KCe,construct:QCe,predicate:e7e,represent:JCe,defaultStyle:"lowercase"}),JX=MCe.extend({implicit:[BCe,$Ce,XCe,t7e]}),r7e=JX,ej=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),tj=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");o(n7e,"resolveYamlTimestamp");o(i7e,"constructYamlTimestamp");o(a7e,"representYamlTimestamp");s7e=new Ca("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:n7e,construct:i7e,instanceOf:Date,represent:a7e});o(o7e,"resolveYamlMerge");l7e=new Ca("tag:yaml.org,2002:merge",{kind:"scalar",resolve:o7e}),nD=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;o(c7e,"resolveYamlBinary");o(u7e,"constructYamlBinary");o(h7e,"representYamlBinary");o(f7e,"isBinary");d7e=new Ca("tag:yaml.org,2002:binary",{kind:"scalar",resolve:c7e,construct:u7e,predicate:f7e,represent:h7e}),p7e=Object.prototype.hasOwnProperty,m7e=Object.prototype.toString;o(g7e,"resolveYamlOmap");o(y7e,"constructYamlOmap");v7e=new Ca("tag:yaml.org,2002:omap",{kind:"sequence",resolve:g7e,construct:y7e}),x7e=Object.prototype.toString;o(b7e,"resolveYamlPairs");o(w7e,"constructYamlPairs");T7e=new Ca("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:b7e,construct:w7e}),k7e=Object.prototype.hasOwnProperty;o(E7e,"resolveYamlSet");o(S7e,"constructYamlSet");C7e=new Ca("tag:yaml.org,2002:set",{kind:"mapping",resolve:E7e,construct:S7e}),rj=r7e.extend({implicit:[s7e,l7e],explicit:[d7e,v7e,T7e,C7e]}),Bh=Object.prototype.hasOwnProperty,lw=1,nj=2,ij=3,cw=4,Q9=1,A7e=2,BX=3,_7e=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,D7e=/[\x85\u2028\u2029]/,L7e=/[,\[\]\{\}]/,aj=/^(?:!|!!|![a-z\-]+!)$/i,sj=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;o(FX,"_class");o(fc,"is_EOL");o(Dd,"is_WHITE_SPACE");o(As,"is_WS_OR_EOL");o(em,"is_FLOW_INDICATOR");o(R7e,"fromHexCode");o(N7e,"escapedHexLen");o(M7e,"fromDecimalCode");o(zX,"simpleEscapeSequence");o(I7e,"charFromCodepoint");oj=new Array(256),lj=new Array(256);for(_d=0;_d<256;_d++)oj[_d]=zX(_d)?1:0,lj[_d]=zX(_d);o(O7e,"State$1");o(cj,"generateError");o(Qt,"throwError");o(uw,"throwWarning");GX={YAML:o(function(e,r,n){var i,a,s;e.version!==null&&Qt(e,"duplication of %YAML directive"),n.length!==1&&Qt(e,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),i===null&&Qt(e,"ill-formed argument of the YAML directive"),a=parseInt(i[1],10),s=parseInt(i[2],10),a!==1&&Qt(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=s<2,s!==1&&s!==2&&uw(e,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:o(function(e,r,n){var i,a;n.length!==2&&Qt(e,"TAG directive accepts exactly two arguments"),i=n[0],a=n[1],aj.test(i)||Qt(e,"ill-formed tag handle (first argument) of the TAG directive"),Bh.call(e.tagMap,i)&&Qt(e,'there is a previously declared suffix for "'+i+'" tag handle'),sj.test(a)||Qt(e,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{Qt(e,"tag prefix is malformed: "+a)}e.tagMap[i]=a},"handleTagDirective")};o(Ph,"captureSegment");o($X,"mergeMappings");o(tm,"storeMappingPair");o(iD,"readLineBreak");o(Si,"skipSeparationSpace");o(dw,"testDocumentSeparator");o(aD,"writeFoldedLines");o(P7e,"readPlainScalar");o(B7e,"readSingleQuotedScalar");o(F7e,"readDoubleQuotedScalar");o(z7e,"readFlowCollection");o(G7e,"readBlockScalar");o(VX,"readBlockSequence");o($7e,"readBlockMapping");o(V7e,"readTagProperty");o(U7e,"readAnchorProperty");o(H7e,"readAlias");o(rm,"composeNode");o(W7e,"readDocument");o(uj,"loadDocuments");o(q7e,"loadAll$1");o(Y7e,"load$1");X7e=q7e,j7e=Y7e,hj={loadAll:X7e,load:j7e},fj=Object.prototype.toString,dj=Object.prototype.hasOwnProperty,sD=65279,K7e=9,Xv=10,Q7e=13,Z7e=32,J7e=33,eAe=34,J9=35,tAe=37,rAe=38,nAe=39,iAe=42,pj=44,aAe=45,hw=58,sAe=61,oAe=62,lAe=63,cAe=64,mj=91,gj=93,uAe=96,yj=123,hAe=124,vj=125,Aa={};Aa[0]="\\0";Aa[7]="\\a";Aa[8]="\\b";Aa[9]="\\t";Aa[10]="\\n";Aa[11]="\\v";Aa[12]="\\f";Aa[13]="\\r";Aa[27]="\\e";Aa[34]='\\"';Aa[92]="\\\\";Aa[133]="\\N";Aa[160]="\\_";Aa[8232]="\\L";Aa[8233]="\\P";fAe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],dAe=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;o(pAe,"compileStyleMap");o(mAe,"encodeHex");gAe=1,jv=2;o(yAe,"State");o(UX,"indentString");o(eD,"generateNextLine");o(vAe,"testImplicitResolving");o(fw,"isWhitespace");o(Kv,"isPrintable");o(HX,"isNsCharOrWhitespace");o(WX,"isPlainSafe");o(xAe,"isPlainSafeFirst");o(bAe,"isPlainSafeLast");o(qv,"codePointAt");o(xj,"needIndentIndicator");bj=1,tD=2,wj=3,Tj=4,J0=5;o(wAe,"chooseScalarStyle");o(TAe,"writeScalar");o(qX,"blockHeader");o(YX,"dropEndingNewline");o(kAe,"foldString");o(XX,"foldLine");o(EAe,"escapeString");o(SAe,"writeFlowSequence");o(jX,"writeBlockSequence");o(CAe,"writeFlowMapping");o(AAe,"writeBlockMapping");o(KX,"detectType");o(Su,"writeNode");o(_Ae,"getDuplicateReferences");o(rD,"inspectNode");o(DAe,"dump$1");LAe=DAe,RAe={dump:LAe};o(oD,"renamed");nm=JX,im=hj.load,oTt=hj.loadAll,lTt=RAe.dump,cTt=oD("safeLoad","load"),uTt=oD("safeLoadAll","loadAll"),hTt=oD("safeDump","dump")});function hD(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function _j(t){Rd=t}function nn(t,e=""){let r=typeof t=="string"?t:t.source,n={replace:o((i,a)=>{let s=typeof a=="string"?a:a.source;return s=s.replace(Ja.caret,"$1"),r=r.replace(i,s),n},"replace"),getRegex:o(()=>new RegExp(r,e),"getRegex")};return n}function dc(t,e){if(e){if(Ja.escapeTest.test(t))return t.replace(Ja.escapeReplace,Ej)}else if(Ja.escapeTestNoEncode.test(t))return t.replace(Ja.escapeReplaceNoEncode,Ej);return t}function Sj(t){try{t=encodeURI(t).replace(Ja.percentDecode,"%")}catch{return null}return t}function Cj(t,e){let r=t.replace(Ja.findPipe,(a,s,l)=>{let u=!1,h=s;for(;--h>=0&&l[h]==="\\";)u=!u;return u?"|":" |"}),n=r.split(Ja.splitPipe),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length{let s=a.match(r.other.beginningSpace);if(s===null)return a;let[l]=s;return l.length>=i.length?a.slice(i.length):a}).join(` +`)}function Jr(t,e){return Ld.parse(t,e)}var Rd,Jv,Ja,NAe,MAe,IAe,t2,OAe,fD,Dj,Lj,PAe,dD,BAe,pD,FAe,zAe,yw,mD,GAe,Rj,$Ae,gD,kj,VAe,UAe,HAe,WAe,Nj,qAe,vw,yD,Mj,YAe,Ij,XAe,jAe,KAe,Oj,QAe,ZAe,Pj,JAe,e8e,t8e,r8e,n8e,i8e,a8e,gw,s8e,Bj,Fj,o8e,vD,l8e,cD,c8e,mw,Qv,u8e,Ej,sm,El,om,e2,Sl,am,uD,Ld,dTt,pTt,mTt,gTt,yTt,vTt,xTt,zj=M(()=>{"use strict";o(hD,"_getDefaults");Rd=hD();o(_j,"changeDefaults");Jv={exec:o(()=>null,"exec")};o(nn,"edit");Ja={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:o(t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),"listItemRegex"),nextBulletRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),"nextBulletRegex"),hrRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),"hrRegex"),fencesBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),"fencesBeginRegex"),headingBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),"headingBeginRegex"),htmlBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i"),"htmlBeginRegex")},NAe=/^(?:[ \t]*(?:\n|$))+/,MAe=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,IAe=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,t2=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,OAe=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,fD=/(?:[*+-]|\d{1,9}[.)])/,Dj=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Lj=nn(Dj).replace(/bull/g,fD).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),PAe=nn(Dj).replace(/bull/g,fD).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),dD=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,BAe=/^[^\n]+/,pD=/(?!\s*\])(?:\\.|[^\[\]\\])+/,FAe=nn(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",pD).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),zAe=nn(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,fD).getRegex(),yw="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",mD=/|$))/,GAe=nn("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",mD).replace("tag",yw).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Rj=nn(dD).replace("hr",t2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",yw).getRegex(),$Ae=nn(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Rj).getRegex(),gD={blockquote:$Ae,code:MAe,def:FAe,fences:IAe,heading:OAe,hr:t2,html:GAe,lheading:Lj,list:zAe,newline:NAe,paragraph:Rj,table:Jv,text:BAe},kj=nn("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",t2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",yw).getRegex(),VAe={...gD,lheading:PAe,table:kj,paragraph:nn(dD).replace("hr",t2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",kj).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",yw).getRegex()},UAe={...gD,html:nn(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",mD).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Jv,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:nn(dD).replace("hr",t2).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",Lj).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},HAe=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,WAe=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Nj=/^( {2,}|\\)\n(?!\s*$)/,qAe=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,Oj=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,QAe=nn(Oj,"u").replace(/punct/g,vw).getRegex(),ZAe=nn(Oj,"u").replace(/punct/g,Ij).getRegex(),Pj="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",JAe=nn(Pj,"gu").replace(/notPunctSpace/g,Mj).replace(/punctSpace/g,yD).replace(/punct/g,vw).getRegex(),e8e=nn(Pj,"gu").replace(/notPunctSpace/g,jAe).replace(/punctSpace/g,XAe).replace(/punct/g,Ij).getRegex(),t8e=nn("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Mj).replace(/punctSpace/g,yD).replace(/punct/g,vw).getRegex(),r8e=nn(/\\(punct)/,"gu").replace(/punct/g,vw).getRegex(),n8e=nn(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),i8e=nn(mD).replace("(?:-->|$)","-->").getRegex(),a8e=nn("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",i8e).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),gw=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,s8e=nn(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",gw).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Bj=nn(/^!?\[(label)\]\[(ref)\]/).replace("label",gw).replace("ref",pD).getRegex(),Fj=nn(/^!?\[(ref)\](?:\[\])?/).replace("ref",pD).getRegex(),o8e=nn("reflink|nolink(?!\\()","g").replace("reflink",Bj).replace("nolink",Fj).getRegex(),vD={_backpedal:Jv,anyPunctuation:r8e,autolink:n8e,blockSkip:KAe,br:Nj,code:WAe,del:Jv,emStrongLDelim:QAe,emStrongRDelimAst:JAe,emStrongRDelimUnd:t8e,escape:HAe,link:s8e,nolink:Fj,punctuation:YAe,reflink:Bj,reflinkSearch:o8e,tag:a8e,text:qAe,url:Jv},l8e={...vD,link:nn(/^!?\[(label)\]\((.*?)\)/).replace("label",gw).getRegex(),reflink:nn(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",gw).getRegex()},cD={...vD,emStrongRDelimAst:e8e,emStrongLDelim:ZAe,url:nn(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},Ej=o(t=>u8e[t],"getEscapeReplacement");o(dc,"escape");o(Sj,"cleanUrl");o(Cj,"splitCells");o(Zv,"rtrim");o(h8e,"findClosingBracket");o(Aj,"outputLink");o(f8e,"indentCodeCompensation");sm=class{static{o(this,"_Tokenizer")}options;rules;lexer;constructor(e){this.options=e||Rd}space(e){let r=this.rules.block.newline.exec(e);if(r&&r[0].length>0)return{type:"space",raw:r[0]}}code(e){let r=this.rules.block.code.exec(e);if(r){let n=r[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:r[0],codeBlockStyle:"indented",text:this.options.pedantic?n:Zv(n,` +`)}}}fences(e){let r=this.rules.block.fences.exec(e);if(r){let n=r[0],i=f8e(n,r[3]||"",this.rules);return{type:"code",raw:n,lang:r[2]?r[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):r[2],text:i}}}heading(e){let r=this.rules.block.heading.exec(e);if(r){let n=r[2].trim();if(this.rules.other.endingHash.test(n)){let i=Zv(n,"#");(this.options.pedantic||!i||this.rules.other.endingSpaceChar.test(i))&&(n=i.trim())}return{type:"heading",raw:r[0],depth:r[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let r=this.rules.block.hr.exec(e);if(r)return{type:"hr",raw:Zv(r[0],` +`)}}blockquote(e){let r=this.rules.block.blockquote.exec(e);if(r){let n=Zv(r[0],` `).split(` -`),i="",a="",s=[];for(;n.length>0;){let l=!1,u=[],h;for(h=0;h/.test(n[h]))u.push(n[h]),l=!0;else if(!l)u.push(n[h]);else break;n=n.slice(h);let f=u.join(` -`),d=f.replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,` - $1`).replace(/^ {0,3}>[ \t]?/gm,"");i=i?`${i} +`),i="",a="",s=[];for(;n.length>0;){let l=!1,u=[],h;for(h=0;h1,a={type:"list",raw:"",ordered:i,start:i?+n.slice(0,-1):"",loose:!1,items:[]};n=i?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=i?n:"[*+-]");let s=new RegExp(`^( {0,3}${n})((?:[ ][^\\n]*)?(?:\\n|$))`),l=!1;for(;e;){let u=!1,h="",f="";if(!(r=s.exec(e))||this.rules.block.hr.test(e))break;h=r[0],e=e.substring(h.length);let d=r[2].split(` -`,1)[0].replace(/^\t+/,x=>" ".repeat(3*x.length)),p=e.split(` -`,1)[0],m=!d.trim(),g=0;if(this.options.pedantic?(g=2,f=d.trimStart()):m?g=r[1].length+1:(g=r[2].search(/[^ ]/),g=g>4?1:g,f=d.slice(g),g+=r[1].length),m&&/^ *$/.test(p)&&(h+=p+` -`,e=e.substring(p.length+1),u=!0),!u){let x=new RegExp(`^ {0,${Math.min(3,g-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),b=new RegExp(`^ {0,${Math.min(3,g-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),w=new RegExp(`^ {0,${Math.min(3,g-1)}}(?:\`\`\`|~~~)`),_=new RegExp(`^ {0,${Math.min(3,g-1)}}#`);for(;e;){let T=e.split(` -`,1)[0];if(p=T,this.options.pedantic&&(p=p.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),w.test(p)||_.test(p)||x.test(p)||b.test(e))break;if(p.search(/[^ ]/)>=g||!p.trim())f+=` -`+p.slice(g);else{if(m||d.search(/[^ ]/)>=4||w.test(d)||_.test(d)||b.test(d))break;f+=` -`+p}!m&&!p.trim()&&(m=!0),h+=T+` -`,e=e.substring(T.length+1),d=p.slice(g)}}a.loose||(l?a.loose=!0:/\n *\n *$/.test(h)&&(l=!0));let y=null,v;this.options.gfm&&(y=/^\[[ xX]\] /.exec(f),y&&(v=y[0]!=="[ ] ",f=f.replace(/^\[[ xX]\] +/,""))),a.items.push({type:"list_item",raw:h,task:!!y,checked:v,loose:!1,text:f,tokens:[]}),a.raw+=h}a.items[a.items.length-1].raw=a.items[a.items.length-1].raw.trimEnd(),a.items[a.items.length-1].text=a.items[a.items.length-1].text.trimEnd(),a.raw=a.raw.trimEnd();for(let u=0;ud.type==="space"),f=h.length>0&&h.some(d=>/\n.*\n/.test(d.raw));a.loose=f}if(a.loose)for(let u=0;u$/,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",a=r[3]?r[3].substring(1,r[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):r[3];return{type:"def",tag:n,raw:r[0],href:i,title:a}}}table(e){let r=this.rules.block.table.exec(e);if(!r||!/[:|]/.test(r[2]))return;let n=jX(r[1]),i=r[2].replace(/^\||\| *$/g,"").split("|"),a=r[3]&&r[3].trim()?r[3].replace(/\n[ \t]*$/,"").split(` -`):[],s={type:"table",raw:r[0],header:[],align:[],rows:[]};if(n.length===i.length){for(let l of i)/^ *-+: *$/.test(l)?s.align.push("right"):/^ *:-+: *$/.test(l)?s.align.push("center"):/^ *:-+ *$/.test(l)?s.align.push("left"):s.align.push(null);for(let l=0;l({text:u,tokens:this.lexer.inline(u),header:!1,align:s.align[h]})));return s}}lheading(e){let r=this.rules.block.lheading.exec(e);if(r)return{type:"heading",raw:r[0],depth:r[2].charAt(0)==="="?1:2,text:r[1],tokens:this.lexer.inline(r[1])}}paragraph(e){let r=this.rules.block.paragraph.exec(e);if(r){let n=r[1].charAt(r[1].length-1)===` -`?r[1].slice(0,-1):r[1];return{type:"paragraph",raw:r[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let r=this.rules.block.text.exec(e);if(r)return{type:"text",raw:r[0],text:r[0],tokens:this.lexer.inline(r[0])}}escape(e){let r=this.rules.inline.escape.exec(e);if(r)return{type:"escape",raw:r[0],text:eo(r[1])}}tag(e){let r=this.rules.inline.tag.exec(e);if(r)return!this.lexer.state.inLink&&/^/i.test(r[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(r[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(r[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:r[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:r[0]}}link(e){let r=this.rules.inline.link.exec(e);if(r){let n=r[2].trim();if(!this.options.pedantic&&/^$/.test(n))return;let s=lv(n.slice(0,-1),"\\");if((n.length-s.length)%2===0)return}else{let s=m7e(r[2],"()");if(s>-1){let u=(r[0].indexOf("!")===0?5:4)+r[1].length+s;r[2]=r[2].substring(0,s),r[0]=r[0].substring(0,u).trim(),r[3]=""}}let i=r[2],a="";if(this.options.pedantic){let s=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(i);s&&(i=s[1],a=s[3])}else a=r[3]?r[3].slice(1,-1):"";return i=i.trim(),/^$/.test(n)?i=i.slice(1):i=i.slice(1,-1)),KX(r,{href:i&&i.replace(this.rules.inline.anyPunctuation,"$1"),title:a&&a.replace(this.rules.inline.anyPunctuation,"$1")},r[0],this.lexer)}}reflink(e,r){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let i=(n[2]||n[1]).replace(/\s+/g," "),a=r[i.toLowerCase()];if(!a){let s=n[0].charAt(0);return{type:"text",raw:s,text:s}}return KX(n,a,n[0],this.lexer)}}emStrong(e,r,n=""){let i=this.rules.inline.emStrongLDelim.exec(e);if(!i||i[3]&&n.match(/[\p{L}\p{N}]/u))return;if(!(i[1]||i[2]||"")||!n||this.rules.inline.punctuation.exec(n)){let s=[...i[0]].length-1,l,u,h=s,f=0,d=i[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(d.lastIndex=0,r=r.slice(-1*e.length+s);(i=d.exec(r))!=null;){if(l=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!l)continue;if(u=[...l].length,i[3]||i[4]){h+=u;continue}else if((i[5]||i[6])&&s%3&&!((s+u)%3)){f+=u;continue}if(h-=u,h>0)continue;u=Math.min(u,u+h+f);let p=[...i[0]][0].length,m=e.slice(0,s+i.index+p+u);if(Math.min(s,u)%2){let y=m.slice(1,-1);return{type:"em",raw:m,text:y,tokens:this.lexer.inlineTokens(y)}}let g=m.slice(2,-2);return{type:"strong",raw:m,text:g,tokens:this.lexer.inlineTokens(g)}}}}codespan(e){let r=this.rules.inline.code.exec(e);if(r){let n=r[2].replace(/\n/g," "),i=/[^ ]/.test(n),a=/^ /.test(n)&&/ $/.test(n);return i&&a&&(n=n.substring(1,n.length-1)),n=eo(n,!0),{type:"codespan",raw:r[0],text:n}}}br(e){let r=this.rules.inline.br.exec(e);if(r)return{type:"br",raw:r[0]}}del(e){let r=this.rules.inline.del.exec(e);if(r)return{type:"del",raw:r[0],text:r[2],tokens:this.lexer.inlineTokens(r[2])}}autolink(e){let r=this.rules.inline.autolink.exec(e);if(r){let n,i;return r[2]==="@"?(n=eo(r[1]),i="mailto:"+n):(n=eo(r[1]),i=n),{type:"link",raw:r[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let r;if(r=this.rules.inline.url.exec(e)){let n,i;if(r[2]==="@")n=eo(r[0]),i="mailto:"+n;else{let a;do a=r[0],r[0]=this.rules.inline._backpedal.exec(r[0])?.[0]??"";while(a!==r[0]);n=eo(r[0]),r[1]==="www."?i="http://"+r[0]:i=r[0]}return{type:"link",raw:r[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e){let r=this.rules.inline.text.exec(e);if(r){let n;return this.lexer.state.inRawBlock?n=r[0]:n=eo(r[0]),{type:"text",raw:r[0],text:n}}}},y7e=/^(?: *(?:\n|$))+/,v7e=/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,x7e=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,fv=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,b7e=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,tj=/(?:[*+-]|\d{1,9}[.)])/,rj=fn(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g,tj).replace(/blockCode/g,/ {4}/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).getRegex(),h9=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,w7e=/^[^\n]+/,f9=/(?!\s*\])(?:\\.|[^\[\]\\])+/,T7e=fn(/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/).replace("label",f9).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),k7e=fn(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,tj).getRegex(),w5="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",d9=/|$))/,E7e=fn("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))","i").replace("comment",d9).replace("tag",w5).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),nj=fn(h9).replace("hr",fv).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",w5).getRegex(),S7e=fn(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",nj).getRegex(),p9={blockquote:S7e,code:v7e,def:T7e,fences:x7e,heading:b7e,hr:fv,html:E7e,lheading:rj,list:k7e,newline:y7e,paragraph:nj,table:uv,text:w7e},QX=fn("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",fv).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",w5).getRegex(),C7e={...p9,table:QX,paragraph:fn(h9).replace("hr",fv).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",QX).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",w5).getRegex()},A7e={...p9,html:fn(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",d9).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:uv,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:fn(h9).replace("hr",fv).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",rj).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},ij=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,_7e=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,aj=/^( {2,}|\\)\n(?!\s*$)/,L7e=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,R7e=fn(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,"u").replace(/punct/g,dv).getRegex(),M7e=fn("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])","gu").replace(/punct/g,dv).getRegex(),I7e=fn("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])","gu").replace(/punct/g,dv).getRegex(),O7e=fn(/\\([punct])/,"gu").replace(/punct/g,dv).getRegex(),P7e=fn(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),B7e=fn(d9).replace("(?:-->|$)","-->").getRegex(),F7e=fn("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",B7e).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),b5=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,z7e=fn(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",b5).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),sj=fn(/^!?\[(label)\]\[(ref)\]/).replace("label",b5).replace("ref",f9).getRegex(),oj=fn(/^!?\[(ref)\](?:\[\])?/).replace("ref",f9).getRegex(),G7e=fn("reflink|nolink(?!\\()","g").replace("reflink",sj).replace("nolink",oj).getRegex(),m9={_backpedal:uv,anyPunctuation:O7e,autolink:P7e,blockSkip:N7e,br:aj,code:_7e,del:uv,emStrongLDelim:R7e,emStrongRDelimAst:M7e,emStrongRDelimUnd:I7e,escape:ij,link:z7e,nolink:oj,punctuation:D7e,reflink:sj,reflinkSearch:G7e,tag:F7e,text:L7e,url:uv},$7e={...m9,link:fn(/^!?\[(label)\]\((.*?)\)/).replace("label",b5).getRegex(),reflink:fn(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",b5).getRegex()},l9={...m9,escape:fn(ij).replace("])","~|])").getRegex(),url:fn(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\u+" ".repeat(h.length));let i,a,s;for(;e;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(l=>(i=l.call({lexer:this},e,r))?(e=e.substring(i.raw.length),r.push(i),!0):!1))){if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length),i.raw.length===1&&r.length>0?r[r.length-1].raw+=` -`:r.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length),a=r[r.length-1],a&&(a.type==="paragraph"||a.type==="text")?(a.raw+=` -`+i.raw,a.text+=` -`+i.text,this.inlineQueue[this.inlineQueue.length-1].src=a.text):r.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length),a=r[r.length-1],a&&(a.type==="paragraph"||a.type==="text")?(a.raw+=` -`+i.raw,a.text+=` -`+i.raw,this.inlineQueue[this.inlineQueue.length-1].src=a.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title});continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),r.push(i);continue}if(s=e,this.options.extensions&&this.options.extensions.startBlock){let l=1/0,u=e.slice(1),h;this.options.extensions.startBlock.forEach(f=>{h=f.call({lexer:this},u),typeof h=="number"&&h>=0&&(l=Math.min(l,h))}),l<1/0&&l>=0&&(s=e.substring(0,l+1))}if(this.state.top&&(i=this.tokenizer.paragraph(s))){a=r[r.length-1],n&&a?.type==="paragraph"?(a.raw+=` -`+i.raw,a.text+=` -`+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=a.text):r.push(i),n=s.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length),a=r[r.length-1],a&&a.type==="text"?(a.raw+=` -`+i.raw,a.text+=` -`+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=a.text):r.push(i);continue}if(e){let l="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(l);break}else throw new Error(l)}}return this.state.top=!0,r}inline(e,r=[]){return this.inlineQueue.push({src:e,tokens:r}),r}inlineTokens(e,r=[]){let n,i,a,s=e,l,u,h;if(this.tokens.links){let f=Object.keys(this.tokens.links);if(f.length>0)for(;(l=this.tokenizer.rules.inline.reflinkSearch.exec(s))!=null;)f.includes(l[0].slice(l[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,l.index)+"["+"a".repeat(l[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(l=this.tokenizer.rules.inline.blockSkip.exec(s))!=null;)s=s.slice(0,l.index)+"["+"a".repeat(l[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(l=this.tokenizer.rules.inline.anyPunctuation.exec(s))!=null;)s=s.slice(0,l.index)+"++"+s.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;e;)if(u||(h=""),u=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(f=>(n=f.call({lexer:this},e,r))?(e=e.substring(n.raw.length),r.push(n),!0):!1))){if(n=this.tokenizer.escape(e)){e=e.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.tag(e)){e=e.substring(n.raw.length),i=r[r.length-1],i&&n.type==="text"&&i.type==="text"?(i.raw+=n.raw,i.text+=n.text):r.push(n);continue}if(n=this.tokenizer.link(e)){e=e.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(n.raw.length),i=r[r.length-1],i&&n.type==="text"&&i.type==="text"?(i.raw+=n.raw,i.text+=n.text):r.push(n);continue}if(n=this.tokenizer.emStrong(e,s,h)){e=e.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.codespan(e)){e=e.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.br(e)){e=e.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.del(e)){e=e.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.autolink(e)){e=e.substring(n.raw.length),r.push(n);continue}if(!this.state.inLink&&(n=this.tokenizer.url(e))){e=e.substring(n.raw.length),r.push(n);continue}if(a=e,this.options.extensions&&this.options.extensions.startInline){let f=1/0,d=e.slice(1),p;this.options.extensions.startInline.forEach(m=>{p=m.call({lexer:this},d),typeof p=="number"&&p>=0&&(f=Math.min(f,p))}),f<1/0&&f>=0&&(a=e.substring(0,f+1))}if(n=this.tokenizer.inlineText(a)){e=e.substring(n.raw.length),n.raw.slice(-1)!=="_"&&(h=n.raw.slice(-1)),u=!0,i=r[r.length-1],i&&i.type==="text"?(i.raw+=n.raw,i.text+=n.text):r.push(n);continue}if(e){let f="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(f);break}else throw new Error(f)}}return r}},im=class{static{o(this,"_Renderer")}options;parser;constructor(e){this.options=e||Ed}space(e){return""}code({text:e,lang:r,escaped:n}){let i=(r||"").match(/^\S*/)?.[0],a=e.replace(/\n$/,"")+` -`;return i?'
'+(n?a:eo(a,!0))+`
-`:"
"+(n?a:eo(a,!0))+`
+`),v=this.list(y);s[s.length-1]=v,i=i.substring(0,i.length-m.raw.length)+v.raw,a=a.substring(0,a.length-g.raw.length)+v.raw,n=y.substring(s.at(-1).raw.length).split(` +`);continue}}return{type:"blockquote",raw:i,tokens:s,text:a}}}list(e){let r=this.rules.block.list.exec(e);if(r){let n=r[1].trim(),i=n.length>1,a={type:"list",raw:"",ordered:i,start:i?+n.slice(0,-1):"",loose:!1,items:[]};n=i?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=i?n:"[*+-]");let s=this.rules.other.listItemRegex(n),l=!1;for(;e;){let h=!1,f="",d="";if(!(r=s.exec(e))||this.rules.block.hr.test(e))break;f=r[0],e=e.substring(f.length);let p=r[2].split(` +`,1)[0].replace(this.rules.other.listReplaceTabs,b=>" ".repeat(3*b.length)),m=e.split(` +`,1)[0],g=!p.trim(),y=0;if(this.options.pedantic?(y=2,d=p.trimStart()):g?y=r[1].length+1:(y=r[2].search(this.rules.other.nonSpaceChar),y=y>4?1:y,d=p.slice(y),y+=r[1].length),g&&this.rules.other.blankLine.test(m)&&(f+=m+` +`,e=e.substring(m.length+1),h=!0),!h){let b=this.rules.other.nextBulletRegex(y),w=this.rules.other.hrRegex(y),C=this.rules.other.fencesBeginRegex(y),T=this.rules.other.headingBeginRegex(y),E=this.rules.other.htmlBeginRegex(y);for(;e;){let A=e.split(` +`,1)[0],S;if(m=A,this.options.pedantic?(m=m.replace(this.rules.other.listReplaceNesting," "),S=m):S=m.replace(this.rules.other.tabCharGlobal," "),C.test(m)||T.test(m)||E.test(m)||b.test(m)||w.test(m))break;if(S.search(this.rules.other.nonSpaceChar)>=y||!m.trim())d+=` +`+S.slice(y);else{if(g||p.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||C.test(p)||T.test(p)||w.test(p))break;d+=` +`+m}!g&&!m.trim()&&(g=!0),f+=A+` +`,e=e.substring(A.length+1),p=S.slice(y)}}a.loose||(l?a.loose=!0:this.rules.other.doubleBlankLine.test(f)&&(l=!0));let v=null,x;this.options.gfm&&(v=this.rules.other.listIsTask.exec(d),v&&(x=v[0]!=="[ ] ",d=d.replace(this.rules.other.listReplaceTask,""))),a.items.push({type:"list_item",raw:f,task:!!v,checked:x,loose:!1,text:d,tokens:[]}),a.raw+=f}let u=a.items.at(-1);if(u)u.raw=u.raw.trimEnd(),u.text=u.text.trimEnd();else return;a.raw=a.raw.trimEnd();for(let h=0;hp.type==="space"),d=f.length>0&&f.some(p=>this.rules.other.anyLine.test(p.raw));a.loose=d}if(a.loose)for(let h=0;h({text:u,tokens:this.lexer.inline(u),header:!1,align:s.align[h]})));return s}}lheading(e){let r=this.rules.block.lheading.exec(e);if(r)return{type:"heading",raw:r[0],depth:r[2].charAt(0)==="="?1:2,text:r[1],tokens:this.lexer.inline(r[1])}}paragraph(e){let r=this.rules.block.paragraph.exec(e);if(r){let n=r[1].charAt(r[1].length-1)===` +`?r[1].slice(0,-1):r[1];return{type:"paragraph",raw:r[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let r=this.rules.block.text.exec(e);if(r)return{type:"text",raw:r[0],text:r[0],tokens:this.lexer.inline(r[0])}}escape(e){let r=this.rules.inline.escape.exec(e);if(r)return{type:"escape",raw:r[0],text:r[1]}}tag(e){let r=this.rules.inline.tag.exec(e);if(r)return!this.lexer.state.inLink&&this.rules.other.startATag.test(r[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(r[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(r[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(r[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:r[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:r[0]}}link(e){let r=this.rules.inline.link.exec(e);if(r){let n=r[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=Zv(n.slice(0,-1),"\\");if((n.length-s.length)%2===0)return}else{let s=h8e(r[2],"()");if(s>-1){let u=(r[0].indexOf("!")===0?5:4)+r[1].length+s;r[2]=r[2].substring(0,s),r[0]=r[0].substring(0,u).trim(),r[3]=""}}let i=r[2],a="";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(i);s&&(i=s[1],a=s[3])}else a=r[3]?r[3].slice(1,-1):"";return i=i.trim(),this.rules.other.startAngleBracket.test(i)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?i=i.slice(1):i=i.slice(1,-1)),Aj(r,{href:i&&i.replace(this.rules.inline.anyPunctuation,"$1"),title:a&&a.replace(this.rules.inline.anyPunctuation,"$1")},r[0],this.lexer,this.rules)}}reflink(e,r){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let i=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),a=r[i.toLowerCase()];if(!a){let s=n[0].charAt(0);return{type:"text",raw:s,text:s}}return Aj(n,a,n[0],this.lexer,this.rules)}}emStrong(e,r,n=""){let i=this.rules.inline.emStrongLDelim.exec(e);if(!i||i[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(i[1]||i[2]||"")||!n||this.rules.inline.punctuation.exec(n)){let s=[...i[0]].length-1,l,u,h=s,f=0,d=i[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(d.lastIndex=0,r=r.slice(-1*e.length+s);(i=d.exec(r))!=null;){if(l=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!l)continue;if(u=[...l].length,i[3]||i[4]){h+=u;continue}else if((i[5]||i[6])&&s%3&&!((s+u)%3)){f+=u;continue}if(h-=u,h>0)continue;u=Math.min(u,u+h+f);let p=[...i[0]][0].length,m=e.slice(0,s+i.index+p+u);if(Math.min(s,u)%2){let y=m.slice(1,-1);return{type:"em",raw:m,text:y,tokens:this.lexer.inlineTokens(y)}}let g=m.slice(2,-2);return{type:"strong",raw:m,text:g,tokens:this.lexer.inlineTokens(g)}}}}codespan(e){let r=this.rules.inline.code.exec(e);if(r){let n=r[2].replace(this.rules.other.newLineCharGlobal," "),i=this.rules.other.nonSpaceChar.test(n),a=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return i&&a&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:r[0],text:n}}}br(e){let r=this.rules.inline.br.exec(e);if(r)return{type:"br",raw:r[0]}}del(e){let r=this.rules.inline.del.exec(e);if(r)return{type:"del",raw:r[0],text:r[2],tokens:this.lexer.inlineTokens(r[2])}}autolink(e){let r=this.rules.inline.autolink.exec(e);if(r){let n,i;return r[2]==="@"?(n=r[1],i="mailto:"+n):(n=r[1],i=n),{type:"link",raw:r[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let r;if(r=this.rules.inline.url.exec(e)){let n,i;if(r[2]==="@")n=r[0],i="mailto:"+n;else{let a;do a=r[0],r[0]=this.rules.inline._backpedal.exec(r[0])?.[0]??"";while(a!==r[0]);n=r[0],r[1]==="www."?i="http://"+r[0]:i=r[0]}return{type:"link",raw:r[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e){let r=this.rules.inline.text.exec(e);if(r){let n=this.lexer.state.inRawBlock;return{type:"text",raw:r[0],text:r[0],escaped:n}}}},El=class t{static{o(this,"_Lexer")}tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Rd,this.options.tokenizer=this.options.tokenizer||new sm,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:Ja,block:mw.normal,inline:Qv.normal};this.options.pedantic?(r.block=mw.pedantic,r.inline=Qv.pedantic):this.options.gfm&&(r.block=mw.gfm,this.options.breaks?r.inline=Qv.breaks:r.inline=Qv.gfm),this.tokenizer.rules=r}static get rules(){return{block:mw,inline:Qv}}static lex(e,r){return new t(r).lex(e)}static lexInline(e,r){return new t(r).inlineTokens(e)}lex(e){e=e.replace(Ja.carriageReturn,` +`),this.blockTokens(e,this.tokens);for(let r=0;r(i=s.call({lexer:this},e,r))?(e=e.substring(i.raw.length),r.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let s=r.at(-1);i.raw.length===1&&s!==void 0?s.raw+=` +`:r.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=` +`+i.raw,s.text+=` +`+i.text,this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=` +`+i.raw,s.text+=` +`+i.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title});continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),r.push(i);continue}let a=e;if(this.options.extensions?.startBlock){let s=1/0,l=e.slice(1),u;this.options.extensions.startBlock.forEach(h=>{u=h.call({lexer:this},l),typeof u=="number"&&u>=0&&(s=Math.min(s,u))}),s<1/0&&s>=0&&(a=e.substring(0,s+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let s=r.at(-1);n&&s?.type==="paragraph"?(s.raw+=` +`+i.raw,s.text+=` +`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i),n=a.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="text"?(s.raw+=` +`+i.raw,s.text+=` +`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(e){let s="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,r}inline(e,r=[]){return this.inlineQueue.push({src:e,tokens:r}),r}inlineTokens(e,r=[]){let n=e,i=null;if(this.tokens.links){let l=Object.keys(this.tokens.links);if(l.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)l.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(i=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,i.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let a=!1,s="";for(;e;){a||(s=""),a=!1;let l;if(this.options.extensions?.inline?.some(h=>(l=h.call({lexer:this},e,r))?(e=e.substring(l.raw.length),r.push(l),!0):!1))continue;if(l=this.tokenizer.escape(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.tag(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.link(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(l.raw.length);let h=r.at(-1);l.type==="text"&&h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(l=this.tokenizer.emStrong(e,n,s)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.codespan(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.br(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.del(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.autolink(e)){e=e.substring(l.raw.length),r.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(e))){e=e.substring(l.raw.length),r.push(l);continue}let u=e;if(this.options.extensions?.startInline){let h=1/0,f=e.slice(1),d;this.options.extensions.startInline.forEach(p=>{d=p.call({lexer:this},f),typeof d=="number"&&d>=0&&(h=Math.min(h,d))}),h<1/0&&h>=0&&(u=e.substring(0,h+1))}if(l=this.tokenizer.inlineText(u)){e=e.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(s=l.raw.slice(-1)),a=!0;let h=r.at(-1);h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(e){let h="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(h);break}else throw new Error(h)}}return r}},om=class{static{o(this,"_Renderer")}options;parser;constructor(e){this.options=e||Rd}space(e){return""}code({text:e,lang:r,escaped:n}){let i=(r||"").match(Ja.notSpaceStart)?.[0],a=e.replace(Ja.endingNewline,"")+` +`;return i?'
'+(n?a:dc(a,!0))+`
+`:"
"+(n?a:dc(a,!0))+`
`}blockquote({tokens:e}){return`
${this.parser.parse(e)}
`}html({text:e}){return e}heading({tokens:e,depth:r}){return`${this.parser.parseInline(e)} `}hr(e){return`
`}list(e){let r=e.ordered,n=e.start,i="";for(let l=0;l `+i+" -`}listitem(e){let r="";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?e.tokens.length>0&&e.tokens[0].type==="paragraph"?(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type==="text"&&(e.tokens[0].tokens[0].text=n+" "+e.tokens[0].tokens[0].text)):e.tokens.unshift({type:"text",raw:n+" ",text:n+" "}):r+=n+" "}return r+=this.parser.parse(e.tokens,!!e.loose),`
  • ${r}
  • +`}listitem(e){let r="";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type==="paragraph"?(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type==="text"&&(e.tokens[0].tokens[0].text=n+" "+dc(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:n+" ",text:n+" ",escaped:!0}):r+=n+" "}return r+=this.parser.parse(e.tokens,!!e.loose),`
  • ${r}
  • `}checkbox({checked:e}){return"'}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    `}table(e){let r="",n="";for(let a=0;a${i}`),` @@ -384,78 +436,51 @@ ${this.parser.parse(e)} `}tablerow({text:e}){return` ${e} `}tablecell(e){let r=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+r+` -`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${e}`}br(e){return"
    "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:r,tokens:n}){let i=this.parser.parseInline(n),a=XX(e);if(a===null)return i;e=a;let s='",s}image({href:e,title:r,text:n}){let i=XX(e);if(i===null)return n;e=i;let a=`${n}{let l=a[s].flat(1/0);n=n.concat(this.walkTokens(l,r))}):a.tokens&&(n=n.concat(this.walkTokens(a.tokens,r)))}}return n}use(...e){let r=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let i={...n};if(i.async=this.defaults.async||i.async||!1,n.extensions&&(n.extensions.forEach(a=>{if(!a.name)throw new Error("extension name required");if("renderer"in a){let s=r.renderers[a.name];s?r.renderers[a.name]=function(...l){let u=a.renderer.apply(this,l);return u===!1&&(u=s.apply(this,l)),u}:r.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||a.level!=="block"&&a.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let s=r[a.level];s?s.unshift(a.tokenizer):r[a.level]=[a.tokenizer],a.start&&(a.level==="block"?r.startBlock?r.startBlock.push(a.start):r.startBlock=[a.start]:a.level==="inline"&&(r.startInline?r.startInline.push(a.start):r.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(r.childTokens[a.name]=a.childTokens)}),i.extensions=r),n.renderer){let a=this.defaults.renderer||new im(this.defaults);for(let s in n.renderer){if(!(s in a))throw new Error(`renderer '${s}' does not exist`);if(["options","parser"].includes(s))continue;let l=s,u=n.renderer[l];n.useNewRenderer||(u=this.#t(u,l,a));let h=a[l];a[l]=(...f)=>{let d=u.apply(a,f);return d===!1&&(d=h.apply(a,f)),d||""}}i.renderer=a}if(n.tokenizer){let a=this.defaults.tokenizer||new nm(this.defaults);for(let s in n.tokenizer){if(!(s in a))throw new Error(`tokenizer '${s}' does not exist`);if(["options","rules","lexer"].includes(s))continue;let l=s,u=n.tokenizer[l],h=a[l];a[l]=(...f)=>{let d=u.apply(a,f);return d===!1&&(d=h.apply(a,f)),d}}i.tokenizer=a}if(n.hooks){let a=this.defaults.hooks||new rm;for(let s in n.hooks){if(!(s in a))throw new Error(`hook '${s}' does not exist`);if(s==="options")continue;let l=s,u=n.hooks[l],h=a[l];rm.passThroughHooks.has(s)?a[l]=f=>{if(this.defaults.async)return Promise.resolve(u.call(a,f)).then(p=>h.call(a,p));let d=u.call(a,f);return h.call(a,d)}:a[l]=(...f)=>{let d=u.apply(a,f);return d===!1&&(d=h.apply(a,f)),d}}i.hooks=a}if(n.walkTokens){let a=this.defaults.walkTokens,s=n.walkTokens;i.walkTokens=function(l){let u=[];return u.push(s.call(this,l)),a&&(u=u.concat(a.call(this,l))),u}}this.defaults={...this.defaults,...i}}),this}#t(e,r,n){switch(r){case"heading":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,n.parser.parseInline(i.tokens),i.depth,d7e(n.parser.parseInline(i.tokens,n.parser.textRenderer)))};case"code":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,i.text,i.lang,!!i.escaped)};case"table":return function(i){if(!i.type||i.type!==r)return e.apply(this,arguments);let a="",s="";for(let u=0;u0&&f.tokens[0].type==="paragraph"?(f.tokens[0].text=g+" "+f.tokens[0].text,f.tokens[0].tokens&&f.tokens[0].tokens.length>0&&f.tokens[0].tokens[0].type==="text"&&(f.tokens[0].tokens[0].text=g+" "+f.tokens[0].tokens[0].text)):f.tokens.unshift({type:"text",text:g+" "}):m+=g+" "}m+=this.parser.parse(f.tokens,l),u+=this.listitem({type:"list_item",raw:m,text:m,task:p,checked:!!d,loose:l,tokens:f.tokens})}return e.call(this,u,a,s)};case"html":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,i.text,i.block)};case"paragraph":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,this.parser.parseInline(i.tokens))};case"escape":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,i.text)};case"link":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,i.href,i.title,this.parser.parseInline(i.tokens))};case"image":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,i.href,i.title,i.text)};case"strong":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,this.parser.parseInline(i.tokens))};case"em":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,this.parser.parseInline(i.tokens))};case"codespan":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,i.text)};case"del":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,this.parser.parseInline(i.tokens))};case"text":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,i.text)}}return e}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,r){return ku.lex(e,r??this.defaults)}parser(e,r){return Eu.parse(e,r??this.defaults)}#e(e,r){return(n,i)=>{let a={...i},s={...this.defaults,...a};this.defaults.async===!0&&a.async===!1&&(s.silent||console.warn("marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored."),s.async=!0);let l=this.#r(!!s.silent,!!s.async);if(typeof n>"u"||n===null)return l(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(s.hooks&&(s.hooks.options=s),s.async)return Promise.resolve(s.hooks?s.hooks.preprocess(n):n).then(u=>e(u,s)).then(u=>s.hooks?s.hooks.processAllTokens(u):u).then(u=>s.walkTokens?Promise.all(this.walkTokens(u,s.walkTokens)).then(()=>u):u).then(u=>r(u,s)).then(u=>s.hooks?s.hooks.postprocess(u):u).catch(l);try{s.hooks&&(n=s.hooks.preprocess(n));let u=e(n,s);s.hooks&&(u=s.hooks.processAllTokens(u)),s.walkTokens&&this.walkTokens(u,s.walkTokens);let h=r(u,s);return s.hooks&&(h=s.hooks.postprocess(h)),h}catch(u){return l(u)}}}#r(e,r){return n=>{if(n.message+=` -Please report this to https://github.com/markedjs/marked.`,e){let i="

    An error occurred:

    "+eo(n.message+"",!0)+"
    ";return r?Promise.resolve(i):i}if(r)return Promise.reject(n);throw n}}},kd=new c9;o(en,"marked");en.options=en.setOptions=function(t){return kd.setOptions(t),en.defaults=kd.defaults,ZX(en.defaults),en};en.getDefaults=u9;en.defaults=Ed;en.use=function(...t){return kd.use(...t),en.defaults=kd.defaults,ZX(en.defaults),en};en.walkTokens=function(t,e){return kd.walkTokens(t,e)};en.parseInline=kd.parseInline;en.Parser=Eu;en.parser=Eu.parse;en.Renderer=im;en.TextRenderer=hv;en.Lexer=ku;en.lexer=ku.lex;en.Tokenizer=nm;en.Hooks=rm;en.parse=en;u6t=en.options,h6t=en.setOptions,f6t=en.use,d6t=en.walkTokens,p6t=en.parseInline,m6t=Eu.parse,g6t=ku.lex});function U7e(t,{markdownAutoWrap:e}){let n=t.replace(//g,` +`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${dc(e,!0)}`}br(e){return"
    "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:r,tokens:n}){let i=this.parser.parseInline(n),a=Sj(e);if(a===null)return i;e=a;let s='
    ",s}image({href:e,title:r,text:n}){let i=Sj(e);if(i===null)return dc(n);e=i;let a=`${n}{let l=a[s].flat(1/0);n=n.concat(this.walkTokens(l,r))}):a.tokens&&(n=n.concat(this.walkTokens(a.tokens,r)))}}return n}use(...e){let r=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let i={...n};if(i.async=this.defaults.async||i.async||!1,n.extensions&&(n.extensions.forEach(a=>{if(!a.name)throw new Error("extension name required");if("renderer"in a){let s=r.renderers[a.name];s?r.renderers[a.name]=function(...l){let u=a.renderer.apply(this,l);return u===!1&&(u=s.apply(this,l)),u}:r.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||a.level!=="block"&&a.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let s=r[a.level];s?s.unshift(a.tokenizer):r[a.level]=[a.tokenizer],a.start&&(a.level==="block"?r.startBlock?r.startBlock.push(a.start):r.startBlock=[a.start]:a.level==="inline"&&(r.startInline?r.startInline.push(a.start):r.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(r.childTokens[a.name]=a.childTokens)}),i.extensions=r),n.renderer){let a=this.defaults.renderer||new om(this.defaults);for(let s in n.renderer){if(!(s in a))throw new Error(`renderer '${s}' does not exist`);if(["options","parser"].includes(s))continue;let l=s,u=n.renderer[l],h=a[l];a[l]=(...f)=>{let d=u.apply(a,f);return d===!1&&(d=h.apply(a,f)),d||""}}i.renderer=a}if(n.tokenizer){let a=this.defaults.tokenizer||new sm(this.defaults);for(let s in n.tokenizer){if(!(s in a))throw new Error(`tokenizer '${s}' does not exist`);if(["options","rules","lexer"].includes(s))continue;let l=s,u=n.tokenizer[l],h=a[l];a[l]=(...f)=>{let d=u.apply(a,f);return d===!1&&(d=h.apply(a,f)),d}}i.tokenizer=a}if(n.hooks){let a=this.defaults.hooks||new am;for(let s in n.hooks){if(!(s in a))throw new Error(`hook '${s}' does not exist`);if(["options","block"].includes(s))continue;let l=s,u=n.hooks[l],h=a[l];am.passThroughHooks.has(s)?a[l]=f=>{if(this.defaults.async)return Promise.resolve(u.call(a,f)).then(p=>h.call(a,p));let d=u.call(a,f);return h.call(a,d)}:a[l]=(...f)=>{let d=u.apply(a,f);return d===!1&&(d=h.apply(a,f)),d}}i.hooks=a}if(n.walkTokens){let a=this.defaults.walkTokens,s=n.walkTokens;i.walkTokens=function(l){let u=[];return u.push(s.call(this,l)),a&&(u=u.concat(a.call(this,l))),u}}this.defaults={...this.defaults,...i}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,r){return El.lex(e,r??this.defaults)}parser(e,r){return Sl.parse(e,r??this.defaults)}parseMarkdown(e){return o((n,i)=>{let a={...i},s={...this.defaults,...a},l=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&a.async===!1)return l(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof n>"u"||n===null)return l(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));s.hooks&&(s.hooks.options=s,s.hooks.block=e);let u=s.hooks?s.hooks.provideLexer():e?El.lex:El.lexInline,h=s.hooks?s.hooks.provideParser():e?Sl.parse:Sl.parseInline;if(s.async)return Promise.resolve(s.hooks?s.hooks.preprocess(n):n).then(f=>u(f,s)).then(f=>s.hooks?s.hooks.processAllTokens(f):f).then(f=>s.walkTokens?Promise.all(this.walkTokens(f,s.walkTokens)).then(()=>f):f).then(f=>h(f,s)).then(f=>s.hooks?s.hooks.postprocess(f):f).catch(l);try{s.hooks&&(n=s.hooks.preprocess(n));let f=u(n,s);s.hooks&&(f=s.hooks.processAllTokens(f)),s.walkTokens&&this.walkTokens(f,s.walkTokens);let d=h(f,s);return s.hooks&&(d=s.hooks.postprocess(d)),d}catch(f){return l(f)}},"parse")}onError(e,r){return n=>{if(n.message+=` +Please report this to https://github.com/markedjs/marked.`,e){let i="

    An error occurred:

    "+dc(n.message+"",!0)+"
    ";return r?Promise.resolve(i):i}if(r)return Promise.reject(n);throw n}}},Ld=new uD;o(Jr,"marked");Jr.options=Jr.setOptions=function(t){return Ld.setOptions(t),Jr.defaults=Ld.defaults,_j(Jr.defaults),Jr};Jr.getDefaults=hD;Jr.defaults=Rd;Jr.use=function(...t){return Ld.use(...t),Jr.defaults=Ld.defaults,_j(Jr.defaults),Jr};Jr.walkTokens=function(t,e){return Ld.walkTokens(t,e)};Jr.parseInline=Ld.parseInline;Jr.Parser=Sl;Jr.parser=Sl.parse;Jr.Renderer=om;Jr.TextRenderer=e2;Jr.Lexer=El;Jr.lexer=El.lex;Jr.Tokenizer=sm;Jr.Hooks=am;Jr.parse=Jr;dTt=Jr.options,pTt=Jr.setOptions,mTt=Jr.use,gTt=Jr.walkTokens,yTt=Jr.parseInline,vTt=Sl.parse,xTt=El.lex});function d8e(t,{markdownAutoWrap:e}){let n=t.replace(//g,` `).replace(/\n{2,}/g,` -`),i=Ib(n);return e===!1?i.replace(/ /g," "):i}function cj(t,e={}){let r=U7e(t,e),n=en.lexer(r),i=[[]],a=0;function s(l,u="normal"){l.type==="text"?l.text.split(` -`).forEach((f,d)=>{d!==0&&(a++,i.push([])),f.split(" ").forEach(p=>{p=p.replace(/'/g,"'"),p&&i[a].push({content:p,type:u})})}):l.type==="strong"||l.type==="em"?l.tokens.forEach(h=>{s(h,l.type)}):l.type==="html"&&i[a].push({content:l.text,type:"normal"})}return o(s,"processNode"),n.forEach(l=>{l.type==="paragraph"?l.tokens?.forEach(u=>{s(u)}):l.type==="html"&&i[a].push({content:l.text,type:"normal"})}),i}function uj(t,{markdownAutoWrap:e}={}){let r=en.lexer(t);function n(i){return i.type==="text"?e===!1?i.text.replace(/\n */g,"
    ").replace(/ /g," "):i.text.replace(/\n */g,"
    "):i.type==="strong"?`${i.tokens?.map(n).join("")}`:i.type==="em"?`${i.tokens?.map(n).join("")}`:i.type==="paragraph"?`

    ${i.tokens?.map(n).join("")}

    `:i.type==="space"?"":i.type==="html"?`${i.text}`:i.type==="escape"?i.text:`Unsupported markdown: ${i.type}`}return o(n,"output"),r.map(n).join("")}var hj=M(()=>{"use strict";lj();MS();o(U7e,"preprocessMarkdown");o(cj,"markdownToLines");o(uj,"markdownToHTML")});function H7e(t){return Intl.Segmenter?[...new Intl.Segmenter().segment(t)].map(e=>e.segment):[...t]}function W7e(t,e){let r=H7e(e.content);return fj(t,[],r,e.type)}function fj(t,e,r,n){if(r.length===0)return[{content:e.join(""),type:n},{content:"",type:n}];let[i,...a]=r,s=[...e,i];return t([{content:s.join(""),type:n}])?fj(t,s,a,n):(e.length===0&&i&&(e.push(i),r.shift()),[{content:e.join(""),type:n},{content:r.join(""),type:n}])}function dj(t,e){if(t.some(({content:r})=>r.includes(` -`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return g9(t,e)}function g9(t,e,r=[],n=[]){if(t.length===0)return n.length>0&&r.push(n),r.length>0?r:[];let i="";t[0].content===" "&&(i=" ",t.shift());let a=t.shift()??{content:" ",type:"normal"},s=[...n];if(i!==""&&s.push({content:i,type:"normal"}),s.push(a),e(s))return g9(t,e,r,s);if(n.length>0)r.push(n),t.unshift(a);else if(a.content){let[l,u]=W7e(e,a);r.push([l]),u.content&&t.unshift(u)}return g9(t,e,r)}var pj=M(()=>{"use strict";o(H7e,"splitTextToChars");o(W7e,"splitWordToFitWidth");o(fj,"splitWordToFitWidthRecursion");o(dj,"splitLineToFitWidth");o(g9,"splitLineToFitWidthRecursion")});function mj(t,e){e&&t.attr("style",e)}async function Y7e(t,e,r,n,i=!1){let a=t.append("foreignObject");a.attr("width",`${10*r}px`),a.attr("height",`${10*r}px`);let s=a.append("xhtml:div"),l=e.label;e.label&&pi(e.label)&&(l=await hh(e.label.replace(je.lineBreakRegex,` -`),de()));let u=e.isNode?"nodeLabel":"edgeLabel",h=s.append("span");h.html(l),mj(h,e.labelStyle),h.attr("class",`${u} ${n}`),mj(s,e.labelStyle),s.style("display","table-cell"),s.style("white-space","nowrap"),s.style("line-height","1.5"),s.style("max-width",r+"px"),s.style("text-align","center"),s.attr("xmlns","http://www.w3.org/1999/xhtml"),i&&s.attr("class","labelBkg");let f=s.node().getBoundingClientRect();return f.width===r&&(s.style("display","table"),s.style("white-space","break-spaces"),s.style("width",r+"px"),f=s.node().getBoundingClientRect()),a.node()}function y9(t,e,r){return t.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",e*r-.1+"em").attr("dy",r+"em")}function q7e(t,e,r){let n=t.append("text"),i=y9(n,1,e);v9(i,r);let a=i.node().getComputedTextLength();return n.remove(),a}function gj(t,e,r){let n=t.append("text"),i=y9(n,1,e);v9(i,[{content:r,type:"normal"}]);let a=i.node()?.getBoundingClientRect();return a&&n.remove(),a}function X7e(t,e,r,n=!1){let a=e.append("g"),s=a.insert("rect").attr("class","background").attr("style","stroke: none"),l=a.append("text").attr("y","-10.1"),u=0;for(let h of r){let f=o(p=>q7e(a,1.1,p)<=t,"checkWidth"),d=f(h)?[h]:dj(h,f);for(let p of d){let m=y9(l,u,1.1);v9(m,p),u++}}if(n){let h=l.node().getBBox(),f=2;return s.attr("x",h.x-f).attr("y",h.y-f).attr("width",h.width+2*f).attr("height",h.height+2*f),a.node()}else return l.node()}function v9(t,e){t.text(""),e.forEach((r,n)=>{let i=t.append("tspan").attr("font-style",r.type==="em"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",r.type==="strong"?"bold":"normal");n===0?i.text(r.content):i.text(" "+r.content)})}function x9(t){return t.replace(/fa[bklrs]?:fa-[\w-]+/g,e=>``)}var Si,Dl=M(()=>{"use strict";Vt();fr();mr();ht();hj();hr();pj();o(mj,"applyStyle");o(Y7e,"addHtmlSpan");o(y9,"createTspan");o(q7e,"computeWidthOfText");o(gj,"computeDimensionOfText");o(X7e,"createFormattedText");o(v9,"updateTextContentAndStyles");o(x9,"replaceIconSubstring");Si=o(async(t,e="",{style:r="",isTitle:n=!1,classes:i="",useHtmlLabels:a=!0,isNode:s=!0,width:l=200,addSvgBackground:u=!1}={},h)=>{if(Y.debug("XYZ createText",e,r,n,i,a,s,"addSvgBackground: ",u),a){let f=uj(e,h),d=x9(Ca(f)),p=e.replace(/\\\\/g,"\\"),m={isNode:s,label:pi(e)?p:d,labelStyle:r.replace("fill:","color:")};return await Y7e(t,m,l,i,u)}else{let f=e.replace(//g,"
    "),d=cj(f.replace("
    ","
    "),h),p=X7e(l,t,d,e?u:!1);if(s){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));let m=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");ze(p).attr("style",m)}else{let m=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");ze(p).select("rect").attr("style",m.replace(/background:/g,"fill:"));let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");ze(p).select("text").attr("style",g)}return p}},"createText")});function Wt(t){let e=t.map((r,n)=>`${n===0?"M":"L"}${r.x},${r.y}`);return e.push("Z"),e.join(" ")}function zo(t,e,r,n,i,a){let s=[],u=r-t,h=n-e,f=u/a,d=2*Math.PI/f,p=e+h/2;for(let m=0;m<=50;m++){let g=m/50,y=t+g*u,v=p+i*Math.sin(d*(y-t));s.push({x:y,y:v})}return s}function k5(t,e,r,n,i,a){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;d{"use strict";Dl();Vt();mr();hs();fr();hr();ot=o(async(t,e,r)=>{let n,i=e.useHtmlLabels||xr(de()?.htmlLabels);r?n=r:n="node default";let a=t.insert("g").attr("class",n).attr("id",e.domId||e.id),s=a.insert("g").attr("class","label").attr("style",Fn(e.labelStyle)),l;e.label===void 0?l="":l=typeof e.label=="string"?e.label:e.label[0];let u=await Si(s,Tr(Ca(l),de()),{useHtmlLabels:i,width:e.width||de().flowchart?.wrappingWidth,cssClasses:"markdown-node-label",style:e.labelStyle,addSvgBackground:!!e.icon||!!e.img}),h=u.getBBox(),f=(e?.padding??0)/2;if(i){let d=u.children[0],p=ze(u),m=d.getElementsByTagName("img");if(m){let g=l.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=de().fontSize?de().fontSize:window.getComputedStyle(document.body).fontSize,w=5,[_=ur.fontSize]=Fo(b),T=_*w+"px";y.style.minWidth=T,y.style.maxWidth=T}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=d.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}return i?s.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"):s.attr("transform","translate(0, "+-h.height/2+")"),e.centerLabel&&s.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),s.insert("rect",":first-child"),{shapeSvg:a,bbox:h,halfPadding:f,label:s}},"labelHelper"),T5=o(async(t,e,r)=>{let n=r.useHtmlLabels||xr(de()?.flowchart?.htmlLabels),i=t.insert("g").attr("class","label").attr("style",r.labelStyle||""),a=await Si(i,Tr(Ca(e),de()),{useHtmlLabels:n,width:r.width||de()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img}),s=a.getBBox(),l=r.padding/2;if(xr(de()?.flowchart?.htmlLabels)){let u=a.children[0],h=ze(a);s=u.getBoundingClientRect(),h.attr("width",s.width),h.attr("height",s.height)}return n?i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"):i.attr("transform","translate(0, "+-s.height/2+")"),r.centerLabel&&i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),i.insert("rect",":first-child"),{shapeSvg:t,bbox:s,halfPadding:l,label:i}},"insertLabel"),Qe=o((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds"),lt=o((t,e)=>(t.look==="handDrawn"?"rough-node":"node")+" "+t.cssClasses+" "+(e||""),"getNodeClasses");o(Wt,"createPathFromPoints");o(zo,"generateFullSineWavePoints");o(k5,"generateCirclePoints")});function j7e(t,e){return t.intersect(e)}var yj,vj=M(()=>{"use strict";o(j7e,"intersectNode");yj=j7e});function K7e(t,e,r,n){var i=t.x,a=t.y,s=i-n.x,l=a-n.y,u=Math.sqrt(e*e*l*l+r*r*s*s),h=Math.abs(e*r*s/u);n.x{"use strict";o(K7e,"intersectEllipse");E5=K7e});function Q7e(t,e,r){return E5(t,e,e,r)}var xj,bj=M(()=>{"use strict";b9();o(Q7e,"intersectCircle");xj=Q7e});function Z7e(t,e,r,n){var i,a,s,l,u,h,f,d,p,m,g,y,v,x,b;if(i=e.y-t.y,s=t.x-e.x,u=e.x*t.y-t.x*e.y,p=i*r.x+s*r.y+u,m=i*n.x+s*n.y+u,!(p!==0&&m!==0&&wj(p,m))&&(a=n.y-r.y,l=r.x-n.x,h=n.x*r.y-r.x*n.y,f=a*t.x+l*t.y+h,d=a*e.x+l*e.y+h,!(f!==0&&d!==0&&wj(f,d))&&(g=i*l-a*s,g!==0)))return y=Math.abs(g/2),v=s*h-l*u,x=v<0?(v-y)/g:(v+y)/g,v=a*u-i*h,b=v<0?(v-y)/g:(v+y)/g,{x,y:b}}function wj(t,e){return t*e>0}var Tj,kj=M(()=>{"use strict";o(Z7e,"intersectLine");o(wj,"sameSign");Tj=Z7e});function J7e(t,e,r){let n=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof e.forEach=="function"?e.forEach(function(f){s=Math.min(s,f.x),l=Math.min(l,f.y)}):(s=Math.min(s,e.x),l=Math.min(l,e.y));let u=n-t.width/2-s,h=i-t.height/2-l;for(let f=0;f1&&a.sort(function(f,d){let p=f.x-r.x,m=f.y-r.y,g=Math.sqrt(p*p+m*m),y=d.x-r.x,v=d.y-r.y,x=Math.sqrt(y*y+v*v);return g{"use strict";kj();o(J7e,"intersectPolygon");Ej=J7e});var eAe,Oh,w9=M(()=>{"use strict";eAe=o((t,e)=>{var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),Oh=eAe});var qe,qt=M(()=>{"use strict";vj();bj();b9();Sj();w9();qe={node:yj,circle:xj,ellipse:E5,polygon:Ej,rect:Oh}});var Cj,mc,tAe,et,Ze,Xt=M(()=>{"use strict";Vt();Cj=o(t=>{let{handDrawnSeed:e}=de();return{fill:t,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:t,seed:e}},"solidStateFill"),mc=o(t=>{let e=tAe([...t.cssCompiledStyles||[],...t.cssStyles||[]]);return{stylesMap:e,stylesArray:[...e]}},"compileStyles"),tAe=o(t=>{let e=new Map;return t.forEach(r=>{let[n,i]=r.split(":");e.set(n.trim(),i?.trim())}),e},"styles2Map"),et=o(t=>{let{stylesArray:e}=mc(t),r=[],n=[],i=[],a=[];return e.forEach(s=>{let l=s[0];l==="color"||l==="font-size"||l==="font-family"||l==="font-weight"||l==="font-style"||l==="text-decoration"||l==="text-align"||l==="text-transform"||l==="line-height"||l==="letter-spacing"||l==="word-spacing"||l==="text-shadow"||l==="text-overflow"||l==="white-space"||l==="word-wrap"||l==="word-break"||l==="overflow-wrap"||l==="hyphens"?r.push(s.join(":")+" !important"):(n.push(s.join(":")+" !important"),l.includes("stroke")&&i.push(s.join(":")+" !important"),l==="fill"&&a.push(s.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:n.join(";"),stylesArray:e,borderStyles:i,backgroundStyles:a}},"styles2String"),Ze=o((t,e)=>{let{themeVariables:r,handDrawnSeed:n}=de(),{nodeBorder:i,mainBkg:a}=r,{stylesMap:s}=mc(t);return Object.assign({roughness:.7,fill:s.get("fill")||a,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:s.get("stroke")||i,seed:n,strokeWidth:s.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0]},e)},"userNodeOverrides")});function T9(t,e,r){if(t&&t.length){let[n,i]=e,a=Math.PI/180*r,s=Math.cos(a),l=Math.sin(a);for(let u of t){let[h,f]=u;u[0]=(h-n)*s-(f-i)*l+n,u[1]=(h-n)*l+(f-i)*s+i}}}function rAe(t,e){return t[0]===e[0]&&t[1]===e[1]}function nAe(t,e,r,n=1){let i=r,a=Math.max(e,.1),s=t[0]&&t[0][0]&&typeof t[0][0]=="number"?[t]:t,l=[0,0];if(i)for(let h of s)T9(h,l,i);let u=function(h,f,d){let p=[];for(let b of h){let w=[...b];rAe(w[0],w[w.length-1])||w.push([w[0][0],w[0][1]]),w.length>2&&p.push(w)}let m=[];f=Math.max(f,.1);let g=[];for(let b of p)for(let w=0;wb.yminw.ymin?1:b.xw.x?1:b.ymax===w.ymax?0:(b.ymax-w.ymax)/Math.abs(b.ymax-w.ymax)),!g.length)return m;let y=[],v=g[0].ymin,x=0;for(;y.length||g.length;){if(g.length){let b=-1;for(let w=0;wv);w++)b=w;g.splice(0,b+1).forEach(w=>{y.push({s:v,edge:w})})}if(y=y.filter(b=>!(b.edge.ymax<=v)),y.sort((b,w)=>b.edge.x===w.edge.x?0:(b.edge.x-w.edge.x)/Math.abs(b.edge.x-w.edge.x)),(d!==1||x%f==0)&&y.length>1)for(let b=0;b=y.length)break;let _=y[b].edge,T=y[w].edge;m.push([[Math.round(_.x),v],[Math.round(T.x),v]])}v+=d,y.forEach(b=>{b.edge.x=b.edge.x+d*b.edge.islope}),x++}return m}(s,a,n);if(i){for(let h of s)T9(h,l,-i);(function(h,f,d){let p=[];h.forEach(m=>p.push(...m)),T9(p,f,d)})(u,l,-i)}return u}function yv(t,e){var r;let n=e.hachureAngle+90,i=e.hachureGap;i<0&&(i=4*e.strokeWidth),i=Math.round(Math.max(i,.1));let a=1;return e.roughness>=1&&(((r=e.randomizer)===null||r===void 0?void 0:r.next())||Math.random())>.7&&(a=i),nAe(t,i,n,a||1)}function M5(t){let e=t[0],r=t[1];return Math.sqrt(Math.pow(e[0]-r[0],2)+Math.pow(e[1]-r[1],2))}function E9(t,e){return t.type===e}function F9(t){let e=[],r=function(s){let l=new Array;for(;s!=="";)if(s.match(/^([ \t\r\n,]+)/))s=s.substr(RegExp.$1.length);else if(s.match(/^([aAcChHlLmMqQsStTvVzZ])/))l[l.length]={type:iAe,text:RegExp.$1},s=s.substr(RegExp.$1.length);else{if(!s.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];l[l.length]={type:k9,text:`${parseFloat(RegExp.$1)}`},s=s.substr(RegExp.$1.length)}return l[l.length]={type:Aj,text:""},l}(t),n="BOD",i=0,a=r[i];for(;!E9(a,Aj);){let s=0,l=[];if(n==="BOD"){if(a.text!=="M"&&a.text!=="m")return F9("M0,0"+t);i++,s=S5[a.text],n=a.text}else E9(a,k9)?s=S5[n]:(i++,s=S5[a.text],n=a.text);if(!(i+sf%2?h+r:h+e);a.push({key:"C",data:u}),e=u[4],r=u[5];break}case"Q":a.push({key:"Q",data:[...l]}),e=l[2],r=l[3];break;case"q":{let u=l.map((h,f)=>f%2?h+r:h+e);a.push({key:"Q",data:u}),e=u[2],r=u[3];break}case"A":a.push({key:"A",data:[...l]}),e=l[5],r=l[6];break;case"a":e+=l[5],r+=l[6],a.push({key:"A",data:[l[0],l[1],l[2],l[3],l[4],e,r]});break;case"H":a.push({key:"H",data:[...l]}),e=l[0];break;case"h":e+=l[0],a.push({key:"H",data:[e]});break;case"V":a.push({key:"V",data:[...l]}),r=l[0];break;case"v":r+=l[0],a.push({key:"V",data:[r]});break;case"S":a.push({key:"S",data:[...l]}),e=l[2],r=l[3];break;case"s":{let u=l.map((h,f)=>f%2?h+r:h+e);a.push({key:"S",data:u}),e=u[2],r=u[3];break}case"T":a.push({key:"T",data:[...l]}),e=l[0],r=l[1];break;case"t":e+=l[0],r+=l[1],a.push({key:"T",data:[e,r]});break;case"Z":case"z":a.push({key:"Z",data:[]}),e=n,r=i}return a}function Pj(t){let e=[],r="",n=0,i=0,a=0,s=0,l=0,u=0;for(let{key:h,data:f}of t){switch(h){case"M":e.push({key:"M",data:[...f]}),[n,i]=f,[a,s]=f;break;case"C":e.push({key:"C",data:[...f]}),n=f[4],i=f[5],l=f[2],u=f[3];break;case"L":e.push({key:"L",data:[...f]}),[n,i]=f;break;case"H":n=f[0],e.push({key:"L",data:[n,i]});break;case"V":i=f[0],e.push({key:"L",data:[n,i]});break;case"S":{let d=0,p=0;r==="C"||r==="S"?(d=n+(n-l),p=i+(i-u)):(d=n,p=i),e.push({key:"C",data:[d,p,...f]}),l=f[0],u=f[1],n=f[2],i=f[3];break}case"T":{let[d,p]=f,m=0,g=0;r==="Q"||r==="T"?(m=n+(n-l),g=i+(i-u)):(m=n,g=i);let y=n+2*(m-n)/3,v=i+2*(g-i)/3,x=d+2*(m-d)/3,b=p+2*(g-p)/3;e.push({key:"C",data:[y,v,x,b,d,p]}),l=m,u=g,n=d,i=p;break}case"Q":{let[d,p,m,g]=f,y=n+2*(d-n)/3,v=i+2*(p-i)/3,x=m+2*(d-m)/3,b=g+2*(p-g)/3;e.push({key:"C",data:[y,v,x,b,m,g]}),l=d,u=p,n=m,i=g;break}case"A":{let d=Math.abs(f[0]),p=Math.abs(f[1]),m=f[2],g=f[3],y=f[4],v=f[5],x=f[6];d===0||p===0?(e.push({key:"C",data:[n,i,v,x,v,x]}),n=v,i=x):(n!==v||i!==x)&&(Bj(n,i,v,x,d,p,m,g,y).forEach(function(b){e.push({key:"C",data:b})}),n=v,i=x);break}case"Z":e.push({key:"Z",data:[]}),n=a,i=s}r=h}return e}function pv(t,e,r){return[t*Math.cos(r)-e*Math.sin(r),t*Math.sin(r)+e*Math.cos(r)]}function Bj(t,e,r,n,i,a,s,l,u,h){let f=(d=s,Math.PI*d/180);var d;let p=[],m=0,g=0,y=0,v=0;if(h)[m,g,y,v]=h;else{[t,e]=pv(t,e,-f),[r,n]=pv(r,n,-f);let R=(t-r)/2,S=(e-n)/2,O=R*R/(i*i)+S*S/(a*a);O>1&&(O=Math.sqrt(O),i*=O,a*=O);let N=i*i,P=a*a,F=N*P-N*S*S-P*R*R,B=N*S*S+P*R*R,$=(l===u?-1:1)*Math.sqrt(Math.abs(F/B));y=$*i*S/a+(t+r)/2,v=$*-a*R/i+(e+n)/2,m=Math.asin(parseFloat(((e-v)/a).toFixed(9))),g=Math.asin(parseFloat(((n-v)/a).toFixed(9))),tg&&(m-=2*Math.PI),!u&&g>m&&(g-=2*Math.PI)}let x=g-m;if(Math.abs(x)>120*Math.PI/180){let R=g,S=r,O=n;g=u&&g>m?m+120*Math.PI/180*1:m+120*Math.PI/180*-1,p=Bj(r=y+i*Math.cos(g),n=v+a*Math.sin(g),S,O,i,a,s,0,u,[g,R,y,v])}x=g-m;let b=Math.cos(m),w=Math.sin(m),_=Math.cos(g),T=Math.sin(g),E=Math.tan(x/4),L=4/3*i*E,C=4/3*a*E,A=[t,e],I=[t+L*w,e-C*b],D=[r+L*T,n-C*_],k=[r,n];if(I[0]=2*A[0]-I[0],I[1]=2*A[1]-I[1],h)return[I,D,k].concat(p);{p=[I,D,k].concat(p);let R=[];for(let S=0;S2){let i=[];for(let a=0;a2*Math.PI&&(m=0,g=2*Math.PI);let y=2*Math.PI/u.curveStepCount,v=Math.min(y/2,(g-m)/2),x=Mj(v,h,f,d,p,m,g,1,u);if(!u.disableMultiStroke){let b=Mj(v,h,f,d,p,m,g,1.5,u);x.push(...b)}return s&&(l?x.push(...Ph(h,f,h+d*Math.cos(m),f+p*Math.sin(m),u),...Ph(h,f,h+d*Math.cos(g),f+p*Math.sin(g),u)):x.push({op:"lineTo",data:[h,f]},{op:"lineTo",data:[h+d*Math.cos(m),f+p*Math.sin(m)]})),{type:"path",ops:x}}function Dj(t,e){let r=Pj(Oj(F9(t))),n=[],i=[0,0],a=[0,0];for(let{key:s,data:l}of r)switch(s){case"M":a=[l[0],l[1]],i=[l[0],l[1]];break;case"L":n.push(...Ph(a[0],a[1],l[0],l[1],e)),a=[l[0],l[1]];break;case"C":{let[u,h,f,d,p,m]=l;n.push(...oAe(u,h,f,d,p,m,a,e)),a=[p,m];break}case"Z":n.push(...Ph(a[0],a[1],i[0],i[1],e)),a=[i[0],i[1]]}return{type:"path",ops:n}}function S9(t,e){let r=[];for(let n of t)if(n.length){let i=e.maxRandomnessOffset||0,a=n.length;if(a>2){r.push({op:"move",data:[n[0][0]+nr(i,e),n[0][1]+nr(i,e)]});for(let s=1;s500?.4:-.0016668*u+1.233334;let f=i.maxRandomnessOffset||0;f*f*100>l&&(f=u/10);let d=f/2,p=.2+.2*Gj(i),m=i.bowing*i.maxRandomnessOffset*(n-e)/200,g=i.bowing*i.maxRandomnessOffset*(t-r)/200;m=nr(m,i,h),g=nr(g,i,h);let y=[],v=o(()=>nr(d,i,h),"M"),x=o(()=>nr(f,i,h),"k"),b=i.preserveVertices;return a&&(s?y.push({op:"move",data:[t+(b?0:v()),e+(b?0:v())]}):y.push({op:"move",data:[t+(b?0:nr(f,i,h)),e+(b?0:nr(f,i,h))]})),s?y.push({op:"bcurveTo",data:[m+t+(r-t)*p+v(),g+e+(n-e)*p+v(),m+t+2*(r-t)*p+v(),g+e+2*(n-e)*p+v(),r+(b?0:v()),n+(b?0:v())]}):y.push({op:"bcurveTo",data:[m+t+(r-t)*p+x(),g+e+(n-e)*p+x(),m+t+2*(r-t)*p+x(),g+e+2*(n-e)*p+x(),r+(b?0:x()),n+(b?0:x())]}),y}function C5(t,e,r){if(!t.length)return[];let n=[];n.push([t[0][0]+nr(e,r),t[0][1]+nr(e,r)]),n.push([t[0][0]+nr(e,r),t[0][1]+nr(e,r)]);for(let i=1;i3){let a=[],s=1-r.curveTightness;i.push({op:"move",data:[t[1][0],t[1][1]]});for(let l=1;l+21&&i.push(l)):i.push(l),i.push(t[e+3])}else{let u=t[e+0],h=t[e+1],f=t[e+2],d=t[e+3],p=Sd(u,h,.5),m=Sd(h,f,.5),g=Sd(f,d,.5),y=Sd(p,m,.5),v=Sd(m,g,.5),x=Sd(y,v,.5);O9([u,p,y,x],0,r,i),O9([x,v,g,d],0,r,i)}var a,s;return i}function cAe(t,e){return R5(t,0,t.length,e)}function R5(t,e,r,n,i){let a=i||[],s=t[e],l=t[r-1],u=0,h=1;for(let f=e+1;fu&&(u=d,h=f)}return Math.sqrt(u)>n?(R5(t,e,h+1,n,a),R5(t,h,r,n,a)):(a.length||a.push(s),a.push(l)),a}function C9(t,e=.15,r){let n=[],i=(t.length-1)/3;for(let a=0;a0?R5(n,0,n.length,r):n}var gv,A9,_9,L9,D9,N9,ks,R9,iAe,k9,Aj,S5,aAe,to,sm,P9,A5,B9,Ke,jt=M(()=>{"use strict";o(T9,"t");o(rAe,"e");o(nAe,"s");o(yv,"n");gv=class{static{o(this,"o")}constructor(e){this.helper=e}fillPolygons(e,r){return this._fillPolygons(e,r)}_fillPolygons(e,r){let n=yv(e,r);return{type:"fillSketch",ops:this.renderLines(n,r)}}renderLines(e,r){let n=[];for(let i of e)n.push(...this.helper.doubleLineOps(i[0][0],i[0][1],i[1][0],i[1][1],r));return n}};o(M5,"a");A9=class extends gv{static{o(this,"h")}fillPolygons(e,r){let n=r.hachureGap;n<0&&(n=4*r.strokeWidth),n=Math.max(n,.1);let i=yv(e,Object.assign({},r,{hachureGap:n})),a=Math.PI/180*r.hachureAngle,s=[],l=.5*n*Math.cos(a),u=.5*n*Math.sin(a);for(let[h,f]of i)M5([h,f])&&s.push([[h[0]-l,h[1]+u],[...f]],[[h[0]+l,h[1]-u],[...f]]);return{type:"fillSketch",ops:this.renderLines(s,r)}}},_9=class extends gv{static{o(this,"r")}fillPolygons(e,r){let n=this._fillPolygons(e,r),i=Object.assign({},r,{hachureAngle:r.hachureAngle+90}),a=this._fillPolygons(e,i);return n.ops=n.ops.concat(a.ops),n}},L9=class{static{o(this,"i")}constructor(e){this.helper=e}fillPolygons(e,r){let n=yv(e,r=Object.assign({},r,{hachureAngle:0}));return this.dotsOnLines(n,r)}dotsOnLines(e,r){let n=[],i=r.hachureGap;i<0&&(i=4*r.strokeWidth),i=Math.max(i,.1);let a=r.fillWeight;a<0&&(a=r.strokeWidth/2);let s=i/4;for(let l of e){let u=M5(l),h=u/i,f=Math.ceil(h)-1,d=u-f*i,p=(l[0][0]+l[1][0])/2-i/4,m=Math.min(l[0][1],l[1][1]);for(let g=0;g{let l=M5(s),u=Math.floor(l/(n+i)),h=(l+i-u*(n+i))/2,f=s[0],d=s[1];f[0]>d[0]&&(f=s[1],d=s[0]);let p=Math.atan((d[1]-f[1])/(d[0]-f[0]));for(let m=0;m{let s=M5(a),l=Math.round(s/(2*r)),u=a[0],h=a[1];u[0]>h[0]&&(u=a[1],h=a[0]);let f=Math.atan((h[1]-u[1])/(h[0]-u[0]));for(let d=0;d2*Math.PI&&(L=0,C=2*Math.PI);let A=(C-L)/b.curveStepCount,I=[];for(let D=L;D<=C;D+=A)I.push([w+T*Math.cos(D),_+E*Math.sin(D)]);return I.push([w+T*Math.cos(C),_+E*Math.sin(C)]),I.push([w,_]),am([I],b)}(e,r,n,i,a,s,h));return h.stroke!==to&&f.push(d),this._d("arc",f,h)}curve(e,r){let n=this._o(r),i=[],a=_j(e,n);if(n.fill&&n.fill!==to)if(n.fillStyle==="solid"){let s=_j(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(s.ops)})}else{let s=[],l=e;if(l.length){let u=typeof l[0][0]=="number"?[l]:l;for(let h of u)h.length<3?s.push(...h):h.length===3?s.push(...C9(Ij([h[0],h[0],h[1],h[2]]),10,(1+n.roughness)/2)):s.push(...C9(Ij(h),10,(1+n.roughness)/2))}s.length&&i.push(am([s],n))}return n.stroke!==to&&i.push(a),this._d("curve",i,n)}polygon(e,r){let n=this._o(r),i=[],a=_5(e,!0,n);return n.fill&&(n.fillStyle==="solid"?i.push(S9([e],n)):i.push(am([e],n))),n.stroke!==to&&i.push(a),this._d("polygon",i,n)}path(e,r){let n=this._o(r),i=[];if(!e)return this._d("path",i,n);e=(e||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");let a=n.fill&&n.fill!=="transparent"&&n.fill!==to,s=n.stroke!==to,l=!!(n.simplification&&n.simplification<1),u=function(f,d,p){let m=Pj(Oj(F9(f))),g=[],y=[],v=[0,0],x=[],b=o(()=>{x.length>=4&&y.push(...C9(x,d)),x=[]},"i"),w=o(()=>{b(),y.length&&(g.push(y),y=[])},"c");for(let{key:T,data:E}of m)switch(T){case"M":w(),v=[E[0],E[1]],y.push(v);break;case"L":b(),y.push([E[0],E[1]]);break;case"C":if(!x.length){let L=y.length?y[y.length-1]:v;x.push([L[0],L[1]])}x.push([E[0],E[1]]),x.push([E[2],E[3]]),x.push([E[4],E[5]]);break;case"Z":b(),y.push([v[0],v[1]])}if(w(),!p)return g;let _=[];for(let T of g){let E=cAe(T,p);E.length&&_.push(E)}return _}(e,1,l?4-4*(n.simplification||1):(1+n.roughness)/2),h=Dj(e,n);if(a)if(n.fillStyle==="solid")if(u.length===1){let f=Dj(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(f.ops)})}else i.push(S9(u,n));else i.push(am(u,n));return s&&(l?u.forEach(f=>{i.push(_5(f,!1,n))}):i.push(h)),this._d("path",i,n)}opsToPath(e,r){let n="";for(let i of e.ops){let a=typeof r=="number"&&r>=0?i.data.map(s=>+s.toFixed(r)):i.data;switch(i.op){case"move":n+=`M${a[0]} ${a[1]} `;break;case"bcurveTo":n+=`C${a[0]} ${a[1]}, ${a[2]} ${a[3]}, ${a[4]} ${a[5]} `;break;case"lineTo":n+=`L${a[0]} ${a[1]} `}}return n.trim()}toPaths(e){let r=e.sets||[],n=e.options||this.defaultOptions,i=[];for(let a of r){let s=null;switch(a.type){case"path":s={d:this.opsToPath(a),stroke:n.stroke,strokeWidth:n.strokeWidth,fill:to};break;case"fillPath":s={d:this.opsToPath(a),stroke:to,strokeWidth:0,fill:n.fill||to};break;case"fillSketch":s=this.fillSketch(a,n)}s&&i.push(s)}return i}fillSketch(e,r){let n=r.fillWeight;return n<0&&(n=r.strokeWidth/2),{d:this.opsToPath(e),stroke:r.fill||to,strokeWidth:n,fill:to}}_mergedShape(e){return e.filter((r,n)=>n===0||r.op!=="move")}},P9=class{static{o(this,"st")}constructor(e,r){this.canvas=e,this.ctx=this.canvas.getContext("2d"),this.gen=new sm(r)}draw(e){let r=e.sets||[],n=e.options||this.getDefaultOptions(),i=this.ctx,a=e.options.fixedDecimalPlaceDigits;for(let s of r)switch(s.type){case"path":i.save(),i.strokeStyle=n.stroke==="none"?"transparent":n.stroke,i.lineWidth=n.strokeWidth,n.strokeLineDash&&i.setLineDash(n.strokeLineDash),n.strokeLineDashOffset&&(i.lineDashOffset=n.strokeLineDashOffset),this._drawToContext(i,s,a),i.restore();break;case"fillPath":{i.save(),i.fillStyle=n.fill||"";let l=e.shape==="curve"||e.shape==="polygon"||e.shape==="path"?"evenodd":"nonzero";this._drawToContext(i,s,a,l),i.restore();break}case"fillSketch":this.fillSketch(i,s,n)}}fillSketch(e,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2),e.save(),n.fillLineDash&&e.setLineDash(n.fillLineDash),n.fillLineDashOffset&&(e.lineDashOffset=n.fillLineDashOffset),e.strokeStyle=n.fill||"",e.lineWidth=i,this._drawToContext(e,r,n.fixedDecimalPlaceDigits),e.restore()}_drawToContext(e,r,n,i="nonzero"){e.beginPath();for(let a of r.ops){let s=typeof n=="number"&&n>=0?a.data.map(l=>+l.toFixed(n)):a.data;switch(a.op){case"move":e.moveTo(s[0],s[1]);break;case"bcurveTo":e.bezierCurveTo(s[0],s[1],s[2],s[3],s[4],s[5]);break;case"lineTo":e.lineTo(s[0],s[1])}}r.type==="fillPath"?e.fill(i):e.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(e,r,n,i,a){let s=this.gen.line(e,r,n,i,a);return this.draw(s),s}rectangle(e,r,n,i,a){let s=this.gen.rectangle(e,r,n,i,a);return this.draw(s),s}ellipse(e,r,n,i,a){let s=this.gen.ellipse(e,r,n,i,a);return this.draw(s),s}circle(e,r,n,i){let a=this.gen.circle(e,r,n,i);return this.draw(a),a}linearPath(e,r){let n=this.gen.linearPath(e,r);return this.draw(n),n}polygon(e,r){let n=this.gen.polygon(e,r);return this.draw(n),n}arc(e,r,n,i,a,s,l=!1,u){let h=this.gen.arc(e,r,n,i,a,s,l,u);return this.draw(h),h}curve(e,r){let n=this.gen.curve(e,r);return this.draw(n),n}path(e,r){let n=this.gen.path(e,r);return this.draw(n),n}},A5="http://www.w3.org/2000/svg",B9=class{static{o(this,"ot")}constructor(e,r){this.svg=e,this.gen=new sm(r)}draw(e){let r=e.sets||[],n=e.options||this.getDefaultOptions(),i=this.svg.ownerDocument||window.document,a=i.createElementNS(A5,"g"),s=e.options.fixedDecimalPlaceDigits;for(let l of r){let u=null;switch(l.type){case"path":u=i.createElementNS(A5,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke",n.stroke),u.setAttribute("stroke-width",n.strokeWidth+""),u.setAttribute("fill","none"),n.strokeLineDash&&u.setAttribute("stroke-dasharray",n.strokeLineDash.join(" ").trim()),n.strokeLineDashOffset&&u.setAttribute("stroke-dashoffset",`${n.strokeLineDashOffset}`);break;case"fillPath":u=i.createElementNS(A5,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke","none"),u.setAttribute("stroke-width","0"),u.setAttribute("fill",n.fill||""),e.shape!=="curve"&&e.shape!=="polygon"||u.setAttribute("fill-rule","evenodd");break;case"fillSketch":u=this.fillSketch(i,l,n)}u&&a.appendChild(u)}return a}fillSketch(e,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2);let a=e.createElementNS(A5,"path");return a.setAttribute("d",this.opsToPath(r,n.fixedDecimalPlaceDigits)),a.setAttribute("stroke",n.fill||""),a.setAttribute("stroke-width",i+""),a.setAttribute("fill","none"),n.fillLineDash&&a.setAttribute("stroke-dasharray",n.fillLineDash.join(" ").trim()),n.fillLineDashOffset&&a.setAttribute("stroke-dashoffset",`${n.fillLineDashOffset}`),a}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(e,r){return this.gen.opsToPath(e,r)}line(e,r,n,i,a){let s=this.gen.line(e,r,n,i,a);return this.draw(s)}rectangle(e,r,n,i,a){let s=this.gen.rectangle(e,r,n,i,a);return this.draw(s)}ellipse(e,r,n,i,a){let s=this.gen.ellipse(e,r,n,i,a);return this.draw(s)}circle(e,r,n,i){let a=this.gen.circle(e,r,n,i);return this.draw(a)}linearPath(e,r){let n=this.gen.linearPath(e,r);return this.draw(n)}polygon(e,r){let n=this.gen.polygon(e,r);return this.draw(n)}arc(e,r,n,i,a,s,l=!1,u){let h=this.gen.arc(e,r,n,i,a,s,l,u);return this.draw(h)}curve(e,r){let n=this.gen.curve(e,r);return this.draw(n)}path(e,r){let n=this.gen.path(e,r);return this.draw(n)}},Ke={canvas:o((t,e)=>new P9(t,e),"canvas"),svg:o((t,e)=>new B9(t,e),"svg"),generator:o(t=>new sm(t),"generator"),newSeed:o(()=>sm.newSeed(),"newSeed")}});function $j(t,e){let{labelStyles:r}=et(e);e.labelStyle=r;let n=lt(e),i=n;n||(i="anchor");let a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=1,{cssStyles:l}=e,u=Ke.svg(a),h=Ze(e,{fill:"black",stroke:"none",fillStyle:"solid"});e.look!=="handDrawn"&&(h.roughness=0);let f=u.circle(0,0,s*2,h),d=a.insert(()=>f,":first-child");return d.attr("class","anchor").attr("style",Fn(l)),Qe(e,d),e.intersect=function(p){return Y.info("Circle intersect",e,s,p),qe.circle(e,s,p)},a}var Vj=M(()=>{"use strict";ht();Ft();qt();Xt();jt();hr();o($j,"anchor")});function Uj(t,e,r,n,i,a,s){let u=(t+r)/2,h=(e+n)/2,f=Math.atan2(n-e,r-t),d=(r-t)/2,p=(n-e)/2,m=d/i,g=p/a,y=Math.sqrt(m**2+g**2);if(y>1)throw new Error("The given radii are too small to create an arc between the points.");let v=Math.sqrt(1-y**2),x=u+v*a*Math.sin(f)*(s?-1:1),b=h-v*i*Math.cos(f)*(s?-1:1),w=Math.atan2((e-b)/a,(t-x)/i),T=Math.atan2((n-b)/a,(r-x)/i)-w;s&&T<0&&(T+=2*Math.PI),!s&&T>0&&(T-=2*Math.PI);let E=[];for(let L=0;L<20;L++){let C=L/19,A=w+C*T,I=x+i*Math.cos(A),D=b+a*Math.sin(A);E.push({x:I,y:D})}return E}async function Hj(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ot(t,e,lt(e)),s=a.width+e.padding+20,l=a.height+e.padding,u=l/2,h=u/(2.5+l/50),{cssStyles:f}=e,d=[{x:s/2,y:-l/2},{x:-s/2,y:-l/2},...Uj(-s/2,-l/2,-s/2,l/2,h,u,!1),{x:s/2,y:l/2},...Uj(s/2,l/2,s/2,-l/2,h,u,!0)],p=Ke.svg(i),m=Ze(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=Wt(d),y=p.path(g,m),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(${h/2}, 0)`),Qe(e,v),e.intersect=function(x){return qe.polygon(e,d,x)},i}var Wj=M(()=>{"use strict";Ft();qt();Xt();jt();o(Uj,"generateArcPoints");o(Hj,"bowTieRect")});function Aa(t,e,r,n){return t.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}var Su=M(()=>{"use strict";o(Aa,"insertPolygonShape")});async function Yj(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ot(t,e,lt(e)),s=a.height+e.padding,l=12,u=a.width+e.padding+l,h=0,f=u,d=-s,p=0,m=[{x:h+l,y:d},{x:f,y:d},{x:f,y:p},{x:h,y:p},{x:h,y:d+l},{x:h+l,y:d}],g,{cssStyles:y}=e;if(e.look==="handDrawn"){let v=Ke.svg(i),x=Ze(e,{}),b=Wt(m),w=v.path(b,x);g=i.insert(()=>w,":first-child").attr("transform",`translate(${-u/2}, ${s/2})`),y&&g.attr("style",y)}else g=Aa(i,u,s,m);return n&&g.attr("style",n),Qe(e,g),e.intersect=function(v){return qe.polygon(e,m,v)},i}var qj=M(()=>{"use strict";Ft();qt();Xt();jt();Su();Ft();o(Yj,"card")});function Xj(t,e){let{nodeStyles:r}=et(e);e.label="";let n=t.insert("g").attr("class",lt(e)).attr("id",e.domId??e.id),{cssStyles:i}=e,a=Math.max(28,e.width??0),s=[{x:0,y:a/2},{x:a/2,y:0},{x:0,y:-a/2},{x:-a/2,y:0}],l=Ke.svg(n),u=Ze(e,{});e.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=Wt(s),f=l.path(h,u),d=n.insert(()=>f,":first-child");return i&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",i),r&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",r),e.width=28,e.height=28,e.intersect=function(p){return qe.polygon(e,s,p)},n}var jj=M(()=>{"use strict";qt();jt();Xt();Ft();o(Xj,"choice")});async function Kj(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s}=await ot(t,e,lt(e)),l=a.width/2+s,u,{cssStyles:h}=e;if(e.look==="handDrawn"){let f=Ke.svg(i),d=Ze(e,{}),p=f.circle(0,0,l*2,d);u=i.insert(()=>p,":first-child"),u.attr("class","basic label-container").attr("style",Fn(h))}else u=i.insert("circle",":first-child").attr("class","basic label-container").attr("style",n).attr("r",l).attr("cx",0).attr("cy",0);return Qe(e,u),e.intersect=function(f){return Y.info("Circle intersect",e,l,f),qe.circle(e,l,f)},i}var Qj=M(()=>{"use strict";ht();Ft();qt();Xt();jt();hr();o(Kj,"circle")});function uAe(t){let e=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),n=t*2,i={x:n/2*e,y:n/2*r},a={x:-(n/2)*e,y:n/2*r},s={x:-(n/2)*e,y:-(n/2)*r},l={x:n/2*e,y:-(n/2)*r};return`M ${a.x},${a.y} L ${l.x},${l.y} - M ${i.x},${i.y} L ${s.x},${s.y}`}function Zj(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r,e.label="";let i=t.insert("g").attr("class",lt(e)).attr("id",e.domId??e.id),a=Math.max(30,e?.width??0),{cssStyles:s}=e,l=Ke.svg(i),u=Ze(e,{});e.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=l.circle(0,0,a*2,u),f=uAe(a),d=l.path(f,u),p=i.insert(()=>h,":first-child");return p.insert(()=>d),s&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",s),n&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",n),Qe(e,p),e.intersect=function(m){return Y.info("crossedCircle intersect",e,{radius:a,point:m}),qe.circle(e,a,m)},i}var Jj=M(()=>{"use strict";ht();Ft();Xt();jt();qt();o(uAe,"createLine");o(Zj,"crossedCircle")});function Bh(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dw,":first-child").attr("stroke-opacity",0),_.insert(()=>x,":first-child"),_.attr("class","text"),f&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",n),_.attr("transform",`translate(${h}, 0)`),s.attr("transform",`translate(${-l/2+h-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),Qe(e,_),e.intersect=function(T){return qe.polygon(e,p,T)},i}var tK=M(()=>{"use strict";Ft();qt();Xt();jt();o(Bh,"generateCirclePoints");o(eK,"curlyBraceLeft")});function Fh(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dw,":first-child").attr("stroke-opacity",0),_.insert(()=>x,":first-child"),_.attr("class","text"),f&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",n),_.attr("transform",`translate(${-h}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),Qe(e,_),e.intersect=function(T){return qe.polygon(e,p,T)},i}var nK=M(()=>{"use strict";Ft();qt();Xt();jt();o(Fh,"generateCirclePoints");o(rK,"curlyBraceRight")});function _a(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dL,":first-child").attr("stroke-opacity",0),C.insert(()=>b,":first-child"),C.insert(()=>T,":first-child"),C.attr("class","text"),f&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(${h-h/4}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),Qe(e,C),e.intersect=function(A){return qe.polygon(e,m,A)},i}var aK=M(()=>{"use strict";Ft();qt();Xt();jt();o(_a,"generateCirclePoints");o(iK,"curlyBraces")});async function sK(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ot(t,e,lt(e)),s=80,l=20,u=Math.max(s,(a.width+(e.padding??0)*2)*1.25,e?.width??0),h=Math.max(l,a.height+(e.padding??0)*2,e?.height??0),f=h/2,{cssStyles:d}=e,p=Ke.svg(i),m=Ze(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=u,y=h,v=g-f,x=y/4,b=[{x:v,y:0},{x,y:0},{x:0,y:y/2},{x,y},{x:v,y},...k5(-v,-y/2,f,50,270,90)],w=Wt(b),_=p.path(w,m),T=i.insert(()=>_,":first-child");return T.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&T.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&T.selectChildren("path").attr("style",n),T.attr("transform",`translate(${-u/2}, ${-h/2})`),Qe(e,T),e.intersect=function(E){return qe.polygon(e,b,E)},i}var oK=M(()=>{"use strict";Ft();qt();Xt();jt();o(sK,"curvedTrapezoid")});async function lK(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ot(t,e,lt(e)),l=Math.max(a.width+e.padding,e.width??0),u=l/2,h=u/(2.5+l/50),f=Math.max(a.height+h+e.padding,e.height??0),d,{cssStyles:p}=e;if(e.look==="handDrawn"){let m=Ke.svg(i),g=fAe(0,0,l,f,u,h),y=dAe(0,h,l,f,u,h),v=m.path(g,Ze(e,{})),x=m.path(y,Ze(e,{fill:"none"}));d=i.insert(()=>x,":first-child"),d=i.insert(()=>v,":first-child"),d.attr("class","basic label-container"),p&&d.attr("style",p)}else{let m=hAe(0,0,l,f,u,h);d=i.insert("path",":first-child").attr("d",m).attr("class","basic label-container").attr("style",Fn(p)).attr("style",n)}return d.attr("label-offset-y",h),d.attr("transform",`translate(${-l/2}, ${-(f/2+h)})`),Qe(e,d),s.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+(e.padding??0)/1.5-(a.y-(a.top??0))})`),e.intersect=function(m){let g=qe.rect(e,m),y=g.x-(e.x??0);if(u!=0&&(Math.abs(y)<(e.width??0)/2||Math.abs(y)==(e.width??0)/2&&Math.abs(g.y-(e.y??0))>(e.height??0)/2-h)){let v=h*h*(1-y*y/(u*u));v>0&&(v=Math.sqrt(v)),v=h-v,m.y-(e.y??0)>0&&(v=-v),g.y+=v}return g},i}var hAe,fAe,dAe,cK=M(()=>{"use strict";Ft();qt();Xt();jt();hr();hAe=o((t,e,r,n,i,a)=>[`M${t},${e+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createCylinderPathD"),fAe=o((t,e,r,n,i,a)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createOuterCylinderPathD"),dAe=o((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");o(lK,"cylinder")});async function uK(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ot(t,e,lt(e)),l=a.width+e.padding,u=a.height+e.padding,h=u*.2,f=-l/2,d=-u/2-h/2,{cssStyles:p}=e,m=Ke.svg(i),g=Ze(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:f,y:d+h},{x:-f,y:d+h},{x:-f,y:-d},{x:f,y:-d},{x:f,y:d},{x:-f,y:d},{x:-f,y:d+h}],v=m.polygon(y.map(b=>[b.x,b.y]),g),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),s.attr("transform",`translate(${f+(e.padding??0)/2-(a.x-(a.left??0))}, ${d+h+(e.padding??0)/2-(a.y-(a.top??0))})`),Qe(e,x),e.intersect=function(b){return qe.rect(e,b)},i}var hK=M(()=>{"use strict";Ft();qt();Xt();jt();o(uK,"dividedRectangle")});async function fK(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s}=await ot(t,e,lt(e)),u=a.width/2+s+5,h=a.width/2+s,f,{cssStyles:d}=e;if(e.look==="handDrawn"){let p=Ke.svg(i),m=Ze(e,{roughness:.2,strokeWidth:2.5}),g=Ze(e,{roughness:.2,strokeWidth:1.5}),y=p.circle(0,0,u*2,m),v=p.circle(0,0,h*2,g);f=i.insert("g",":first-child"),f.attr("class",Fn(e.cssClasses)).attr("style",Fn(d)),f.node()?.appendChild(y),f.node()?.appendChild(v)}else{f=i.insert("g",":first-child");let p=f.insert("circle",":first-child"),m=f.insert("circle");f.attr("class","basic label-container").attr("style",n),p.attr("class","outer-circle").attr("style",n).attr("r",u).attr("cx",0).attr("cy",0),m.attr("class","inner-circle").attr("style",n).attr("r",h).attr("cx",0).attr("cy",0)}return Qe(e,f),e.intersect=function(p){return Y.info("DoubleCircle intersect",e,u,p),qe.circle(e,u,p)},i}var dK=M(()=>{"use strict";ht();Ft();qt();Xt();jt();hr();o(fK,"doublecircle")});function pK(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=et(e);e.label="",e.labelStyle=n;let a=t.insert("g").attr("class",lt(e)).attr("id",e.domId??e.id),s=7,{cssStyles:l}=e,u=Ke.svg(a),{nodeBorder:h}=r,f=Ze(e,{fillStyle:"solid"});e.look!=="handDrawn"&&(f.roughness=0);let d=u.circle(0,0,s*2,f),p=a.insert(()=>d,":first-child");return p.selectAll("path").attr("style",`fill: ${h} !important;`),l&&l.length>0&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",l),i&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",i),Qe(e,p),e.intersect=function(m){return Y.info("filledCircle intersect",e,{radius:s,point:m}),qe.circle(e,s,m)},a}var mK=M(()=>{"use strict";jt();ht();qt();Xt();Ft();o(pK,"filledCircle")});async function gK(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ot(t,e,lt(e)),l=a.width+(e.padding??0),u=l+a.height,h=l+a.height,f=[{x:0,y:-u},{x:h,y:-u},{x:h/2,y:0}],{cssStyles:d}=e,p=Ke.svg(i),m=Ze(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=Wt(f),y=p.path(g,m),v=i.insert(()=>y,":first-child").attr("transform",`translate(${-u/2}, ${u/2})`);return d&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",n),e.width=l,e.height=u,Qe(e,v),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${-u/2+(e.padding??0)/2+(a.y-(a.top??0))})`),e.intersect=function(x){return Y.info("Triangle intersect",e,f,x),qe.polygon(e,f,x)},i}var yK=M(()=>{"use strict";ht();Ft();qt();Xt();jt();Ft();o(gK,"flippedTriangle")});function vK(t,e,{dir:r,config:{state:n,themeVariables:i}}){let{nodeStyles:a}=et(e);e.label="";let s=t.insert("g").attr("class",lt(e)).attr("id",e.domId??e.id),{cssStyles:l}=e,u=Math.max(70,e?.width??0),h=Math.max(10,e?.height??0);r==="LR"&&(u=Math.max(10,e?.width??0),h=Math.max(70,e?.height??0));let f=-1*u/2,d=-1*h/2,p=Ke.svg(s),m=Ze(e,{stroke:i.lineColor,fill:i.lineColor});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=p.rectangle(f,d,u,h,m),y=s.insert(()=>g,":first-child");l&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",l),a&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",a),Qe(e,y);let v=n?.padding??0;return e.width&&e.height&&(e.width+=v/2||0,e.height+=v/2||0),e.intersect=function(x){return qe.rect(e,x)},s}var xK=M(()=>{"use strict";jt();qt();Xt();Ft();o(vK,"forkJoin")});async function bK(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let i=80,a=50,{shapeSvg:s,bbox:l}=await ot(t,e,lt(e)),u=Math.max(i,l.width+(e.padding??0)*2,e?.width??0),h=Math.max(a,l.height+(e.padding??0)*2,e?.height??0),f=h/2,{cssStyles:d}=e,p=Ke.svg(s),m=Ze(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-u/2,y:-h/2},{x:u/2-f,y:-h/2},...k5(-u/2+f,0,f,50,90,270),{x:u/2-f,y:h/2},{x:-u/2,y:h/2}],y=Wt(g),v=p.path(y,m),x=s.insert(()=>v,":first-child");return x.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),Qe(e,x),e.intersect=function(b){return Y.info("Pill intersect",e,{radius:f,point:b}),qe.polygon(e,g,b)},s}var wK=M(()=>{"use strict";ht();Ft();qt();Xt();jt();o(bK,"halfRoundedRectangle")});async function TK(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ot(t,e,lt(e)),s=4,l=a.height+e.padding,u=l/s,h=a.width+2*u+e.padding,f=[{x:u,y:0},{x:h-u,y:0},{x:h,y:-l/2},{x:h-u,y:-l},{x:u,y:-l},{x:0,y:-l/2}],d,{cssStyles:p}=e;if(e.look==="handDrawn"){let m=Ke.svg(i),g=Ze(e,{}),y=pAe(0,0,h,l,u),v=m.path(y,g);d=i.insert(()=>v,":first-child").attr("transform",`translate(${-h/2}, ${l/2})`),p&&d.attr("style",p)}else d=Aa(i,h,l,f);return n&&d.attr("style",n),e.width=h,e.height=l,Qe(e,d),e.intersect=function(m){return qe.polygon(e,f,m)},i}var pAe,kK=M(()=>{"use strict";Ft();qt();Xt();jt();Su();pAe=o((t,e,r,n,i)=>[`M${t+i},${e}`,`L${t+r-i},${e}`,`L${t+r},${e-n/2}`,`L${t+r-i},${e-n}`,`L${t+i},${e-n}`,`L${t},${e-n/2}`,"Z"].join(" "),"createHexagonPathD");o(TK,"hexagon")});async function EK(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.label="",e.labelStyle=r;let{shapeSvg:i}=await ot(t,e,lt(e)),a=Math.max(30,e?.width??0),s=Math.max(30,e?.height??0),{cssStyles:l}=e,u=Ke.svg(i),h=Ze(e,{});e.look!=="handDrawn"&&(h.roughness=0,h.fillStyle="solid");let f=[{x:0,y:0},{x:a,y:0},{x:0,y:s},{x:a,y:s}],d=Wt(f),p=u.path(d,h),m=i.insert(()=>p,":first-child");return m.attr("class","basic label-container"),l&&e.look!=="handDrawn"&&m.selectChildren("path").attr("style",l),n&&e.look!=="handDrawn"&&m.selectChildren("path").attr("style",n),m.attr("transform",`translate(${-a/2}, ${-s/2})`),Qe(e,m),e.intersect=function(g){return Y.info("Pill intersect",e,{points:f}),qe.polygon(e,f,g)},i}var SK=M(()=>{"use strict";ht();Ft();qt();Xt();jt();o(EK,"hourglass")});async function CK(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=et(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,label:d}=await ot(t,e,"icon-shape default"),p=e.pos==="t",m=l,g=l,{nodeBorder:y}=r,{stylesMap:v}=mc(e),x=-g/2,b=-m/2,w=e.label?8:0,_=Ke.svg(h),T=Ze(e,{stroke:"none",fill:"none"});e.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let E=_.rectangle(x,b,g,m,T),L=Math.max(g,f.width),C=m+f.height+w,A=_.rectangle(-L/2,-C/2,L,C,{...T,fill:"transparent",stroke:"none"}),I=h.insert(()=>E,":first-child"),D=h.insert(()=>A);if(e.icon){let k=h.append("g");k.html(`${await wo(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let R=k.node().getBBox(),S=R.width,O=R.height,N=R.x,P=R.y;k.attr("transform",`translate(${-S/2-N},${p?f.height/2+w/2-O/2-P:-f.height/2-w/2-O/2-P})`),k.attr("style",`color: ${v.get("stroke")??y};`)}return d.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${p?-C/2:C/2-f.height})`),I.attr("transform",`translate(0,${p?f.height/2+w/2:-f.height/2-w/2})`),Qe(e,D),e.intersect=function(k){if(Y.info("iconSquare intersect",e,k),!e.label)return qe.rect(e,k);let R=e.x??0,S=e.y??0,O=e.height??0,N=[];return p?N=[{x:R-f.width/2,y:S-O/2},{x:R+f.width/2,y:S-O/2},{x:R+f.width/2,y:S-O/2+f.height+w},{x:R+g/2,y:S-O/2+f.height+w},{x:R+g/2,y:S+O/2},{x:R-g/2,y:S+O/2},{x:R-g/2,y:S-O/2+f.height+w},{x:R-f.width/2,y:S-O/2+f.height+w}]:N=[{x:R-g/2,y:S-O/2},{x:R+g/2,y:S-O/2},{x:R+g/2,y:S-O/2+m},{x:R+f.width/2,y:S-O/2+m},{x:R+f.width/2/2,y:S+O/2},{x:R-f.width/2,y:S+O/2},{x:R-f.width/2,y:S-O/2+m},{x:R-g/2,y:S-O/2+m}],qe.polygon(e,N,k)},h}var AK=M(()=>{"use strict";jt();ht();Kc();qt();Xt();Ft();o(CK,"icon")});async function _K(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=et(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,label:d}=await ot(t,e,"icon-shape default"),p=20,m=e.label?8:0,g=e.pos==="t",{nodeBorder:y,mainBkg:v}=r,{stylesMap:x}=mc(e),b=Ke.svg(h),w=Ze(e,{});e.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let _=x.get("fill");w.stroke=_??v;let T=h.append("g");e.icon&&T.html(`${await wo(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let E=T.node().getBBox(),L=E.width,C=E.height,A=E.x,I=E.y,D=Math.max(L,C)*Math.SQRT2+p*2,k=b.circle(0,0,D,w),R=Math.max(D,f.width),S=D+f.height+m,O=b.rectangle(-R/2,-S/2,R,S,{...w,fill:"transparent",stroke:"none"}),N=h.insert(()=>k,":first-child"),P=h.insert(()=>O);return T.attr("transform",`translate(${-L/2-A},${g?f.height/2+m/2-C/2-I:-f.height/2-m/2-C/2-I})`),T.attr("style",`color: ${x.get("stroke")??y};`),d.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${g?-S/2:S/2-f.height})`),N.attr("transform",`translate(0,${g?f.height/2+m/2:-f.height/2-m/2})`),Qe(e,P),e.intersect=function(F){return Y.info("iconSquare intersect",e,F),qe.rect(e,F)},h}var LK=M(()=>{"use strict";jt();ht();Kc();qt();Xt();Ft();o(_K,"iconCircle")});var La,zh=M(()=>{"use strict";La=o((t,e,r,n,i)=>["M",t+i,e,"H",t+r-i,"A",i,i,0,0,1,t+r,e+i,"V",e+n-i,"A",i,i,0,0,1,t+r-i,e+n,"H",t+i,"A",i,i,0,0,1,t,e+n-i,"V",e+i,"A",i,i,0,0,1,t+i,e,"Z"].join(" "),"createRoundedRectPathD")});async function DK(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=et(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,halfPadding:d,label:p}=await ot(t,e,"icon-shape default"),m=e.pos==="t",g=l+d*2,y=l+d*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=mc(e),w=-y/2,_=-g/2,T=e.label?8:0,E=Ke.svg(h),L=Ze(e,{});e.look!=="handDrawn"&&(L.roughness=0,L.fillStyle="solid");let C=b.get("fill");L.stroke=C??x;let A=E.path(La(w,_,y,g,5),L),I=Math.max(y,f.width),D=g+f.height+T,k=E.rectangle(-I/2,-D/2,I,D,{...L,fill:"transparent",stroke:"none"}),R=h.insert(()=>A,":first-child").attr("class","icon-shape2"),S=h.insert(()=>k);if(e.icon){let O=h.append("g");O.html(`${await wo(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let N=O.node().getBBox(),P=N.width,F=N.height,B=N.x,$=N.y;O.attr("transform",`translate(${-P/2-B},${m?f.height/2+T/2-F/2-$:-f.height/2-T/2-F/2-$})`),O.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${m?-D/2:D/2-f.height})`),R.attr("transform",`translate(0,${m?f.height/2+T/2:-f.height/2-T/2})`),Qe(e,S),e.intersect=function(O){if(Y.info("iconSquare intersect",e,O),!e.label)return qe.rect(e,O);let N=e.x??0,P=e.y??0,F=e.height??0,B=[];return m?B=[{x:N-f.width/2,y:P-F/2},{x:N+f.width/2,y:P-F/2},{x:N+f.width/2,y:P-F/2+f.height+T},{x:N+y/2,y:P-F/2+f.height+T},{x:N+y/2,y:P+F/2},{x:N-y/2,y:P+F/2},{x:N-y/2,y:P-F/2+f.height+T},{x:N-f.width/2,y:P-F/2+f.height+T}]:B=[{x:N-y/2,y:P-F/2},{x:N+y/2,y:P-F/2},{x:N+y/2,y:P-F/2+g},{x:N+f.width/2,y:P-F/2+g},{x:N+f.width/2/2,y:P+F/2},{x:N-f.width/2,y:P+F/2},{x:N-f.width/2,y:P-F/2+g},{x:N-y/2,y:P-F/2+g}],qe.polygon(e,B,O)},h}var NK=M(()=>{"use strict";jt();ht();Kc();qt();Xt();zh();Ft();o(DK,"iconRounded")});async function RK(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=et(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,halfPadding:d,label:p}=await ot(t,e,"icon-shape default"),m=e.pos==="t",g=l+d*2,y=l+d*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=mc(e),w=-y/2,_=-g/2,T=e.label?8:0,E=Ke.svg(h),L=Ze(e,{});e.look!=="handDrawn"&&(L.roughness=0,L.fillStyle="solid");let C=b.get("fill");L.stroke=C??x;let A=E.path(La(w,_,y,g,.1),L),I=Math.max(y,f.width),D=g+f.height+T,k=E.rectangle(-I/2,-D/2,I,D,{...L,fill:"transparent",stroke:"none"}),R=h.insert(()=>A,":first-child"),S=h.insert(()=>k);if(e.icon){let O=h.append("g");O.html(`${await wo(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let N=O.node().getBBox(),P=N.width,F=N.height,B=N.x,$=N.y;O.attr("transform",`translate(${-P/2-B},${m?f.height/2+T/2-F/2-$:-f.height/2-T/2-F/2-$})`),O.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${m?-D/2:D/2-f.height})`),R.attr("transform",`translate(0,${m?f.height/2+T/2:-f.height/2-T/2})`),Qe(e,S),e.intersect=function(O){if(Y.info("iconSquare intersect",e,O),!e.label)return qe.rect(e,O);let N=e.x??0,P=e.y??0,F=e.height??0,B=[];return m?B=[{x:N-f.width/2,y:P-F/2},{x:N+f.width/2,y:P-F/2},{x:N+f.width/2,y:P-F/2+f.height+T},{x:N+y/2,y:P-F/2+f.height+T},{x:N+y/2,y:P+F/2},{x:N-y/2,y:P+F/2},{x:N-y/2,y:P-F/2+f.height+T},{x:N-f.width/2,y:P-F/2+f.height+T}]:B=[{x:N-y/2,y:P-F/2},{x:N+y/2,y:P-F/2},{x:N+y/2,y:P-F/2+g},{x:N+f.width/2,y:P-F/2+g},{x:N+f.width/2/2,y:P+F/2},{x:N-f.width/2,y:P+F/2},{x:N-f.width/2,y:P-F/2+g},{x:N-y/2,y:P-F/2+g}],qe.polygon(e,B,O)},h}var MK=M(()=>{"use strict";jt();ht();Kc();qt();zh();Xt();Ft();o(RK,"iconSquare")});async function IK(t,e,{config:{flowchart:r}}){let n=new Image;n.src=e?.img??"",await n.decode();let i=Number(n.naturalWidth.toString().replace("px","")),a=Number(n.naturalHeight.toString().replace("px",""));e.imageAspectRatio=i/a;let{labelStyles:s}=et(e);e.labelStyle=s;let l=r?.wrappingWidth;e.defaultWidth=r?.wrappingWidth;let u=Math.max(e.label?l??0:0,e?.assetWidth??i),h=e.constraint==="on"&&e?.assetHeight?e.assetHeight*e.imageAspectRatio:u,f=e.constraint==="on"?h/e.imageAspectRatio:e?.assetHeight??a;e.width=Math.max(h,l??0);let{shapeSvg:d,bbox:p,label:m}=await ot(t,e,"image-shape default"),g=e.pos==="t",y=-h/2,v=-f/2,x=e.label?8:0,b=Ke.svg(d),w=Ze(e,{});e.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let _=b.rectangle(y,v,h,f,w),T=Math.max(h,p.width),E=f+p.height+x,L=b.rectangle(-T/2,-E/2,T,E,{...w,fill:"none",stroke:"none"}),C=d.insert(()=>_,":first-child"),A=d.insert(()=>L);if(e.img){let I=d.append("image");I.attr("href",e.img),I.attr("width",h),I.attr("height",f),I.attr("preserveAspectRatio","none"),I.attr("transform",`translate(${-h/2},${g?E/2-f:-E/2})`)}return m.attr("transform",`translate(${-p.width/2-(p.x-(p.left??0))},${g?-f/2-p.height/2-x/2:f/2-p.height/2+x/2})`),C.attr("transform",`translate(0,${g?p.height/2+x/2:-p.height/2-x/2})`),Qe(e,A),e.intersect=function(I){if(Y.info("iconSquare intersect",e,I),!e.label)return qe.rect(e,I);let D=e.x??0,k=e.y??0,R=e.height??0,S=[];return g?S=[{x:D-p.width/2,y:k-R/2},{x:D+p.width/2,y:k-R/2},{x:D+p.width/2,y:k-R/2+p.height+x},{x:D+h/2,y:k-R/2+p.height+x},{x:D+h/2,y:k+R/2},{x:D-h/2,y:k+R/2},{x:D-h/2,y:k-R/2+p.height+x},{x:D-p.width/2,y:k-R/2+p.height+x}]:S=[{x:D-h/2,y:k-R/2},{x:D+h/2,y:k-R/2},{x:D+h/2,y:k-R/2+f},{x:D+p.width/2,y:k-R/2+f},{x:D+p.width/2/2,y:k+R/2},{x:D-p.width/2,y:k+R/2},{x:D-p.width/2,y:k-R/2+f},{x:D-h/2,y:k-R/2+f}],qe.polygon(e,S,I)},d}var OK=M(()=>{"use strict";jt();ht();qt();Xt();Ft();o(IK,"imageSquare")});async function PK(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ot(t,e,lt(e)),s=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=[{x:0,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:-3*l/6,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ke.svg(i),p=Ze(e,{}),m=Wt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=Aa(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,Qe(e,h),e.intersect=function(d){return qe.polygon(e,u,d)},i}var BK=M(()=>{"use strict";Ft();qt();Xt();jt();Su();o(PK,"inv_trapezoid")});async function Cd(t,e,r){let{labelStyles:n,nodeStyles:i}=et(e);e.labelStyle=n;let{shapeSvg:a,bbox:s}=await ot(t,e,lt(e)),l=Math.max(s.width+r.labelPaddingX*2,e?.width||0),u=Math.max(s.height+r.labelPaddingY*2,e?.height||0),h=-l/2,f=-u/2,d,{rx:p,ry:m}=e,{cssStyles:g}=e;if(r?.rx&&r.ry&&(p=r.rx,m=r.ry),e.look==="handDrawn"){let y=Ke.svg(a),v=Ze(e,{}),x=p||m?y.path(La(h,f,l,u,p||0),v):y.rectangle(h,f,l,u,v);d=a.insert(()=>x,":first-child"),d.attr("class","basic label-container").attr("style",Fn(g))}else d=a.insert("rect",":first-child"),d.attr("class","basic label-container").attr("style",i).attr("rx",Fn(p)).attr("ry",Fn(m)).attr("x",h).attr("y",f).attr("width",l).attr("height",u);return Qe(e,d),e.intersect=function(y){return qe.rect(e,y)},a}var vv=M(()=>{"use strict";Ft();qt();zh();Xt();jt();hr();o(Cd,"drawRect")});async function FK(t,e){let{shapeSvg:r,bbox:n,label:i}=await ot(t,e,"label"),a=r.insert("rect",":first-child");return a.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),i.attr("transform",`translate(${-(n.width/2)-(n.x-(n.left??0))}, ${-(n.height/2)-(n.y-(n.top??0))})`),Qe(e,a),e.intersect=function(u){return qe.rect(e,u)},r}var zK=M(()=>{"use strict";vv();Ft();qt();o(FK,"labelRect")});async function GK(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ot(t,e,lt(e)),s=Math.max(a.width+(e.padding??0),e?.width??0),l=Math.max(a.height+(e.padding??0),e?.height??0),u=[{x:0,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:-(3*l)/6,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ke.svg(i),p=Ze(e,{}),m=Wt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=Aa(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,Qe(e,h),e.intersect=function(d){return qe.polygon(e,u,d)},i}var $K=M(()=>{"use strict";Ft();qt();Xt();jt();Su();o(GK,"lean_left")});async function VK(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ot(t,e,lt(e)),s=Math.max(a.width+(e.padding??0),e?.width??0),l=Math.max(a.height+(e.padding??0),e?.height??0),u=[{x:-3*l/6,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:0,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ke.svg(i),p=Ze(e,{}),m=Wt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=Aa(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,Qe(e,h),e.intersect=function(d){return qe.polygon(e,u,d)},i}var UK=M(()=>{"use strict";Ft();qt();Xt();jt();Su();o(VK,"lean_right")});function HK(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.label="",e.labelStyle=r;let i=t.insert("g").attr("class",lt(e)).attr("id",e.domId??e.id),{cssStyles:a}=e,s=Math.max(35,e?.width??0),l=Math.max(35,e?.height??0),u=7,h=[{x:s,y:0},{x:0,y:l+u/2},{x:s-2*u,y:l+u/2},{x:0,y:2*l},{x:s,y:l-u/2},{x:2*u,y:l-u/2}],f=Ke.svg(i),d=Ze(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=Wt(h),m=f.path(p,d),g=i.insert(()=>m,":first-child");return a&&e.look!=="handDrawn"&&g.selectAll("path").attr("style",a),n&&e.look!=="handDrawn"&&g.selectAll("path").attr("style",n),g.attr("transform",`translate(-${s/2},${-l})`),Qe(e,g),e.intersect=function(y){return Y.info("lightningBolt intersect",e,y),qe.polygon(e,h,y)},i}var WK=M(()=>{"use strict";ht();Ft();Xt();jt();qt();Ft();o(HK,"lightningBolt")});async function YK(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ot(t,e,lt(e)),l=Math.max(a.width+(e.padding??0),e.width??0),u=l/2,h=u/(2.5+l/50),f=Math.max(a.height+h+(e.padding??0),e.height??0),d=f*.1,p,{cssStyles:m}=e;if(e.look==="handDrawn"){let g=Ke.svg(i),y=gAe(0,0,l,f,u,h,d),v=yAe(0,h,l,f,u,h),x=Ze(e,{}),b=g.path(y,x),w=g.path(v,x);i.insert(()=>w,":first-child").attr("class","line"),p=i.insert(()=>b,":first-child"),p.attr("class","basic label-container"),m&&p.attr("style",m)}else{let g=mAe(0,0,l,f,u,h,d);p=i.insert("path",":first-child").attr("d",g).attr("class","basic label-container").attr("style",Fn(m)).attr("style",n)}return p.attr("label-offset-y",h),p.attr("transform",`translate(${-l/2}, ${-(f/2+h)})`),Qe(e,p),s.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+h-(a.y-(a.top??0))})`),e.intersect=function(g){let y=qe.rect(e,g),v=y.x-(e.x??0);if(u!=0&&(Math.abs(v)<(e.width??0)/2||Math.abs(v)==(e.width??0)/2&&Math.abs(y.y-(e.y??0))>(e.height??0)/2-h)){let x=h*h*(1-v*v/(u*u));x>0&&(x=Math.sqrt(x)),x=h-x,g.y-(e.y??0)>0&&(x=-x),y.y+=x}return y},i}var mAe,gAe,yAe,qK=M(()=>{"use strict";Ft();qt();Xt();jt();hr();mAe=o((t,e,r,n,i,a,s)=>[`M${t},${e+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${t},${e+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createCylinderPathD"),gAe=o((t,e,r,n,i,a,s)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${t},${e+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createOuterCylinderPathD"),yAe=o((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");o(YK,"linedCylinder")});async function XK(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ot(t,e,lt(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=u+h,{cssStyles:d}=e,p=Ke.svg(i),m=Ze(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-l/2-l/2*.1,y:-f/2},{x:-l/2-l/2*.1,y:f/2},...zo(-l/2-l/2*.1,f/2,l/2+l/2*.1,f/2,h,.8),{x:l/2+l/2*.1,y:-f/2},{x:-l/2-l/2*.1,y:-f/2},{x:-l/2,y:-f/2},{x:-l/2,y:f/2*1.1},{x:-l/2,y:-f/2}],y=p.polygon(g.map(x=>[x.x,x.y]),m),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)+l/2*.1/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h/2-(a.y-(a.top??0))})`),Qe(e,v),e.intersect=function(x){return qe.polygon(e,g,x)},i}var jK=M(()=>{"use strict";Ft();qt();jt();Xt();o(XK,"linedWaveEdgedRect")});async function KK(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ot(t,e,lt(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=5,f=-l/2,d=-u/2,{cssStyles:p}=e,m=Ke.svg(i),g=Ze(e,{}),y=[{x:f-h,y:d+h},{x:f-h,y:d+u+h},{x:f+l-h,y:d+u+h},{x:f+l-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d+u-h},{x:f+l+h,y:d+u-h},{x:f+l+h,y:d-h},{x:f+h,y:d-h},{x:f+h,y:d},{x:f,y:d},{x:f,y:d+h}],v=[{x:f,y:d+h},{x:f+l-h,y:d+h},{x:f+l-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d},{x:f,y:d}];e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=Wt(y),b=m.path(x,g),w=Wt(v),_=m.path(w,{...g,fill:"none"}),T=i.insert(()=>_,":first-child");return T.insert(()=>b,":first-child"),T.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",n),s.attr("transform",`translate(${-(a.width/2)-h-(a.x-(a.left??0))}, ${-(a.height/2)+h-(a.y-(a.top??0))})`),Qe(e,T),e.intersect=function(E){return qe.polygon(e,y,E)},i}var QK=M(()=>{"use strict";Ft();Xt();jt();qt();o(KK,"multiRect")});async function ZK(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ot(t,e,lt(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=u+h,d=-l/2,p=-f/2,m=5,{cssStyles:g}=e,y=zo(d-m,p+f+m,d+l-m,p+f+m,h,.8),v=y?.[y.length-1],x=[{x:d-m,y:p+m},{x:d-m,y:p+f+m},...y,{x:d+l-m,y:v.y-m},{x:d+l,y:v.y-m},{x:d+l,y:v.y-2*m},{x:d+l+m,y:v.y-2*m},{x:d+l+m,y:p-m},{x:d+m,y:p-m},{x:d+m,y:p},{x:d,y:p},{x:d,y:p+m}],b=[{x:d,y:p+m},{x:d+l-m,y:p+m},{x:d+l-m,y:v.y-m},{x:d+l,y:v.y-m},{x:d+l,y:p},{x:d,y:p}],w=Ke.svg(i),_=Ze(e,{});e.look!=="handDrawn"&&(_.roughness=0,_.fillStyle="solid");let T=Wt(x),E=w.path(T,_),L=Wt(b),C=w.path(L,_),A=i.insert(()=>E,":first-child");return A.insert(()=>C),A.attr("class","basic label-container"),g&&e.look!=="handDrawn"&&A.selectAll("path").attr("style",g),n&&e.look!=="handDrawn"&&A.selectAll("path").attr("style",n),A.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-(a.width/2)-m-(a.x-(a.left??0))}, ${-(a.height/2)+m-h/2-(a.y-(a.top??0))})`),Qe(e,A),e.intersect=function(I){return qe.polygon(e,x,I)},i}var JK=M(()=>{"use strict";Ft();qt();jt();Xt();o(ZK,"multiWaveEdgedRectangle")});async function eQ(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=et(e);e.labelStyle=n,e.useHtmlLabels||Sr().flowchart?.htmlLabels!==!1||(e.centerLabel=!0);let{shapeSvg:s,bbox:l}=await ot(t,e,lt(e)),u=Math.max(l.width+(e.padding??0)*2,e?.width??0),h=Math.max(l.height+(e.padding??0)*2,e?.height??0),f=-u/2,d=-h/2,{cssStyles:p}=e,m=Ke.svg(s),g=Ze(e,{fill:r.noteBkgColor,stroke:r.noteBorderColor});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=m.rectangle(f,d,u,h,g),v=s.insert(()=>y,":first-child");return v.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",p),i&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",i),Qe(e,v),e.intersect=function(x){return qe.rect(e,x)},s}var tQ=M(()=>{"use strict";jt();qt();Xt();Ft();Ua();o(eQ,"note")});async function rQ(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ot(t,e,lt(e)),s=a.width+e.padding,l=a.height+e.padding,u=s+l,h=[{x:u/2,y:0},{x:u,y:-u/2},{x:u/2,y:-u},{x:0,y:-u/2}],f,{cssStyles:d}=e;if(e.look==="handDrawn"){let p=Ke.svg(i),m=Ze(e,{}),g=vAe(0,0,u),y=p.path(g,m);f=i.insert(()=>y,":first-child").attr("transform",`translate(${-u/2}, ${u/2})`),d&&f.attr("style",d)}else f=Aa(i,u,u,h);return n&&f.attr("style",n),Qe(e,f),e.intersect=function(p){return Y.debug(`APA12 Intersect called SPLIT +`),i=E4(n);return e===!1?i.replace(/ /g," "):i}function Gj(t,e={}){let r=d8e(t,e),n=Jr.lexer(r),i=[[]],a=0;function s(l,u="normal"){l.type==="text"?l.text.split(` +`).forEach((f,d)=>{d!==0&&(a++,i.push([])),f.split(" ").forEach(p=>{p=p.replace(/'/g,"'"),p&&i[a].push({content:p,type:u})})}):l.type==="strong"||l.type==="em"?l.tokens.forEach(h=>{s(h,l.type)}):l.type==="html"&&i[a].push({content:l.text,type:"normal"})}return o(s,"processNode"),n.forEach(l=>{l.type==="paragraph"?l.tokens?.forEach(u=>{s(u)}):l.type==="html"&&i[a].push({content:l.text,type:"normal"})}),i}function $j(t,{markdownAutoWrap:e}={}){let r=Jr.lexer(t);function n(i){return i.type==="text"?e===!1?i.text.replace(/\n */g,"
    ").replace(/ /g," "):i.text.replace(/\n */g,"
    "):i.type==="strong"?`${i.tokens?.map(n).join("")}`:i.type==="em"?`${i.tokens?.map(n).join("")}`:i.type==="paragraph"?`

    ${i.tokens?.map(n).join("")}

    `:i.type==="space"?"":i.type==="html"?`${i.text}`:i.type==="escape"?i.text:`Unsupported markdown: ${i.type}`}return o(n,"output"),r.map(n).join("")}var Vj=M(()=>{"use strict";zj();TC();o(d8e,"preprocessMarkdown");o(Gj,"markdownToLines");o($j,"markdownToHTML")});function p8e(t){return Intl.Segmenter?[...new Intl.Segmenter().segment(t)].map(e=>e.segment):[...t]}function m8e(t,e){let r=p8e(e.content);return Uj(t,[],r,e.type)}function Uj(t,e,r,n){if(r.length===0)return[{content:e.join(""),type:n},{content:"",type:n}];let[i,...a]=r,s=[...e,i];return t([{content:s.join(""),type:n}])?Uj(t,s,a,n):(e.length===0&&i&&(e.push(i),r.shift()),[{content:e.join(""),type:n},{content:r.join(""),type:n}])}function Hj(t,e){if(t.some(({content:r})=>r.includes(` +`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return xD(t,e)}function xD(t,e,r=[],n=[]){if(t.length===0)return n.length>0&&r.push(n),r.length>0?r:[];let i="";t[0].content===" "&&(i=" ",t.shift());let a=t.shift()??{content:" ",type:"normal"},s=[...n];if(i!==""&&s.push({content:i,type:"normal"}),s.push(a),e(s))return xD(t,e,r,s);if(n.length>0)r.push(n),t.unshift(a);else if(a.content){let[l,u]=m8e(e,a);r.push([l]),u.content&&t.unshift(u)}return xD(t,e,r)}var Wj=M(()=>{"use strict";o(p8e,"splitTextToChars");o(m8e,"splitWordToFitWidth");o(Uj,"splitWordToFitWidthRecursion");o(Hj,"splitLineToFitWidth");o(xD,"splitLineToFitWidthRecursion")});function qj(t,e){e&&t.attr("style",e)}async function g8e(t,e,r,n,i=!1){let a=t.append("foreignObject");a.attr("width",`${10*r}px`),a.attr("height",`${10*r}px`);let s=a.append("xhtml:div"),l=e.label;e.label&&di(e.label)&&(l=await hh(e.label.replace(Ze.lineBreakRegex,` +`),me()));let u=e.isNode?"nodeLabel":"edgeLabel",h=s.append("span");h.html(l),qj(h,e.labelStyle),h.attr("class",`${u} ${n}`),qj(s,e.labelStyle),s.style("display","table-cell"),s.style("white-space","nowrap"),s.style("line-height","1.5"),s.style("max-width",r+"px"),s.style("text-align","center"),s.attr("xmlns","http://www.w3.org/1999/xhtml"),i&&s.attr("class","labelBkg");let f=s.node().getBoundingClientRect();return f.width===r&&(s.style("display","table"),s.style("white-space","break-spaces"),s.style("width",r+"px"),f=s.node().getBoundingClientRect()),a.node()}function bD(t,e,r){return t.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",e*r-.1+"em").attr("dy",r+"em")}function y8e(t,e,r){let n=t.append("text"),i=bD(n,1,e);wD(i,r);let a=i.node().getComputedTextLength();return n.remove(),a}function Yj(t,e,r){let n=t.append("text"),i=bD(n,1,e);wD(i,[{content:r,type:"normal"}]);let a=i.node()?.getBoundingClientRect();return a&&n.remove(),a}function v8e(t,e,r,n=!1){let a=e.append("g"),s=a.insert("rect").attr("class","background").attr("style","stroke: none"),l=a.append("text").attr("y","-10.1"),u=0;for(let h of r){let f=o(p=>y8e(a,1.1,p)<=t,"checkWidth"),d=f(h)?[h]:Hj(h,f);for(let p of d){let m=bD(l,u,1.1);wD(m,p),u++}}if(n){let h=l.node().getBBox(),f=2;return s.attr("x",h.x-f).attr("y",h.y-f).attr("width",h.width+2*f).attr("height",h.height+2*f),a.node()}else return l.node()}function wD(t,e){t.text(""),e.forEach((r,n)=>{let i=t.append("tspan").attr("font-style",r.type==="em"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",r.type==="strong"?"bold":"normal");n===0?i.text(r.content):i.text(" "+r.content)})}function TD(t){return t.replace(/fa[bklrs]?:fa-[\w-]+/g,e=>``)}var Hn,Ks=M(()=>{"use strict";Gt();gr();hr();vt();Vj();sr();Wj();o(qj,"applyStyle");o(g8e,"addHtmlSpan");o(bD,"createTspan");o(y8e,"computeWidthOfText");o(Yj,"computeDimensionOfText");o(v8e,"createFormattedText");o(wD,"updateTextContentAndStyles");o(TD,"replaceIconSubstring");Hn=o(async(t,e="",{style:r="",isTitle:n=!1,classes:i="",useHtmlLabels:a=!0,isNode:s=!0,width:l=200,addSvgBackground:u=!1}={},h)=>{if(Y.debug("XYZ createText",e,r,n,i,a,s,"addSvgBackground: ",u),a){let f=$j(e,h),d=TD(ta(f)),p=e.replace(/\\\\/g,"\\"),m={isNode:s,label:di(e)?p:d,labelStyle:r.replace("fill:","color:")};return await g8e(t,m,l,i,u)}else{let f=e.replace(//g,"
    "),d=Gj(f.replace("
    ","
    "),h),p=v8e(l,t,d,e?u:!1);if(s){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));let m=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");$e(p).attr("style",m)}else{let m=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");$e(p).select("rect").attr("style",m.replace(/background:/g,"fill:"));let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");$e(p).select("text").attr("style",g)}return p}},"createText")});function Xt(t){let e=t.map((r,n)=>`${n===0?"M":"L"}${r.x},${r.y}`);return e.push("Z"),e.join(" ")}function Io(t,e,r,n,i,a){let s=[],u=r-t,h=n-e,f=u/a,d=2*Math.PI/f,p=e+h/2;for(let m=0;m<=50;m++){let g=m/50,y=t+g*u,v=p+i*Math.sin(d*(y-t));s.push({x:y,y:v})}return s}function bw(t,e,r,n,i,a){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;d{"use strict";Ks();Gt();hr();ps();gr();sr();pt=o(async(t,e,r)=>{let n,i=e.useHtmlLabels||ur(me()?.htmlLabels);r?n=r:n="node default";let a=t.insert("g").attr("class",n).attr("id",e.domId||e.id),s=a.insert("g").attr("class","label").attr("style",zn(e.labelStyle)),l;e.label===void 0?l="":l=typeof e.label=="string"?e.label:e.label[0];let u=await Hn(s,Tr(ta(l),me()),{useHtmlLabels:i,width:e.width||me().flowchart?.wrappingWidth,cssClasses:"markdown-node-label",style:e.labelStyle,addSvgBackground:!!e.icon||!!e.img}),h=u.getBBox(),f=(e?.padding??0)/2;if(i){let d=u.children[0],p=$e(u),m=d.getElementsByTagName("img");if(m){let g=l.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=me().fontSize?me().fontSize:window.getComputedStyle(document.body).fontSize,w=5,[C=cr.fontSize]=Mo(b),T=C*w+"px";y.style.minWidth=T,y.style.maxWidth=T}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=d.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}return i?s.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"):s.attr("transform","translate(0, "+-h.height/2+")"),e.centerLabel&&s.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),s.insert("rect",":first-child"),{shapeSvg:a,bbox:h,halfPadding:f,label:s}},"labelHelper"),xw=o(async(t,e,r)=>{let n=r.useHtmlLabels||ur(me()?.flowchart?.htmlLabels),i=t.insert("g").attr("class","label").attr("style",r.labelStyle||""),a=await Hn(i,Tr(ta(e),me()),{useHtmlLabels:n,width:r.width||me()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img}),s=a.getBBox(),l=r.padding/2;if(ur(me()?.flowchart?.htmlLabels)){let u=a.children[0],h=$e(a);s=u.getBoundingClientRect(),h.attr("width",s.width),h.attr("height",s.height)}return n?i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"):i.attr("transform","translate(0, "+-s.height/2+")"),r.centerLabel&&i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),i.insert("rect",":first-child"),{shapeSvg:t,bbox:s,halfPadding:l,label:i}},"insertLabel"),je=o((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds"),ht=o((t,e)=>(t.look==="handDrawn"?"rough-node":"node")+" "+t.cssClasses+" "+(e||""),"getNodeClasses");o(Xt,"createPathFromPoints");o(Io,"generateFullSineWavePoints");o(bw,"generateCirclePoints")});function x8e(t,e){return t.intersect(e)}var Xj,jj=M(()=>{"use strict";o(x8e,"intersectNode");Xj=x8e});function b8e(t,e,r,n){var i=t.x,a=t.y,s=i-n.x,l=a-n.y,u=Math.sqrt(e*e*l*l+r*r*s*s),h=Math.abs(e*r*s/u);n.x{"use strict";o(b8e,"intersectEllipse");ww=b8e});function w8e(t,e,r){return ww(t,e,e,r)}var Kj,Qj=M(()=>{"use strict";kD();o(w8e,"intersectCircle");Kj=w8e});function T8e(t,e,r,n){var i,a,s,l,u,h,f,d,p,m,g,y,v,x,b;if(i=e.y-t.y,s=t.x-e.x,u=e.x*t.y-t.x*e.y,p=i*r.x+s*r.y+u,m=i*n.x+s*n.y+u,!(p!==0&&m!==0&&Zj(p,m))&&(a=n.y-r.y,l=r.x-n.x,h=n.x*r.y-r.x*n.y,f=a*t.x+l*t.y+h,d=a*e.x+l*e.y+h,!(f!==0&&d!==0&&Zj(f,d))&&(g=i*l-a*s,g!==0)))return y=Math.abs(g/2),v=s*h-l*u,x=v<0?(v-y)/g:(v+y)/g,v=a*u-i*h,b=v<0?(v-y)/g:(v+y)/g,{x,y:b}}function Zj(t,e){return t*e>0}var Jj,eK=M(()=>{"use strict";o(T8e,"intersectLine");o(Zj,"sameSign");Jj=T8e});function k8e(t,e,r){let n=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof e.forEach=="function"?e.forEach(function(f){s=Math.min(s,f.x),l=Math.min(l,f.y)}):(s=Math.min(s,e.x),l=Math.min(l,e.y));let u=n-t.width/2-s,h=i-t.height/2-l;for(let f=0;f1&&a.sort(function(f,d){let p=f.x-r.x,m=f.y-r.y,g=Math.sqrt(p*p+m*m),y=d.x-r.x,v=d.y-r.y,x=Math.sqrt(y*y+v*v);return g{"use strict";eK();o(k8e,"intersectPolygon");tK=k8e});var E8e,Fh,ED=M(()=>{"use strict";E8e=o((t,e)=>{var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),Fh=E8e});var Ye,Ht=M(()=>{"use strict";jj();Qj();kD();rK();ED();Ye={node:Xj,circle:Kj,ellipse:ww,polygon:tK,rect:Fh}});var nK,pc,S8e,SD,Qe,Ke,Ut=M(()=>{"use strict";Gt();nK=o(t=>{let{handDrawnSeed:e}=me();return{fill:t,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:t,seed:e}},"solidStateFill"),pc=o(t=>{let e=S8e([...t.cssCompiledStyles||[],...t.cssStyles||[]]);return{stylesMap:e,stylesArray:[...e]}},"compileStyles"),S8e=o(t=>{let e=new Map;return t.forEach(r=>{let[n,i]=r.split(":");e.set(n.trim(),i?.trim())}),e},"styles2Map"),SD=o(t=>t==="color"||t==="font-size"||t==="font-family"||t==="font-weight"||t==="font-style"||t==="text-decoration"||t==="text-align"||t==="text-transform"||t==="line-height"||t==="letter-spacing"||t==="word-spacing"||t==="text-shadow"||t==="text-overflow"||t==="white-space"||t==="word-wrap"||t==="word-break"||t==="overflow-wrap"||t==="hyphens","isLabelStyle"),Qe=o(t=>{let{stylesArray:e}=pc(t),r=[],n=[],i=[],a=[];return e.forEach(s=>{let l=s[0];SD(l)?r.push(s.join(":")+" !important"):(n.push(s.join(":")+" !important"),l.includes("stroke")&&i.push(s.join(":")+" !important"),l==="fill"&&a.push(s.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:n.join(";"),stylesArray:e,borderStyles:i,backgroundStyles:a}},"styles2String"),Ke=o((t,e)=>{let{themeVariables:r,handDrawnSeed:n}=me(),{nodeBorder:i,mainBkg:a}=r,{stylesMap:s}=pc(t);return Object.assign({roughness:.7,fill:s.get("fill")||a,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:s.get("stroke")||i,seed:n,strokeWidth:s.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0]},e)},"userNodeOverrides")});function CD(t,e,r){if(t&&t.length){let[n,i]=e,a=Math.PI/180*r,s=Math.cos(a),l=Math.sin(a);for(let u of t){let[h,f]=u;u[0]=(h-n)*s-(f-i)*l+n,u[1]=(h-n)*l+(f-i)*s+i}}}function C8e(t,e){return t[0]===e[0]&&t[1]===e[1]}function A8e(t,e,r,n=1){let i=r,a=Math.max(e,.1),s=t[0]&&t[0][0]&&typeof t[0][0]=="number"?[t]:t,l=[0,0];if(i)for(let h of s)CD(h,l,i);let u=function(h,f,d){let p=[];for(let b of h){let w=[...b];C8e(w[0],w[w.length-1])||w.push([w[0][0],w[0][1]]),w.length>2&&p.push(w)}let m=[];f=Math.max(f,.1);let g=[];for(let b of p)for(let w=0;wb.yminw.ymin?1:b.xw.x?1:b.ymax===w.ymax?0:(b.ymax-w.ymax)/Math.abs(b.ymax-w.ymax)),!g.length)return m;let y=[],v=g[0].ymin,x=0;for(;y.length||g.length;){if(g.length){let b=-1;for(let w=0;wv);w++)b=w;g.splice(0,b+1).forEach(w=>{y.push({s:v,edge:w})})}if(y=y.filter(b=>!(b.edge.ymax<=v)),y.sort((b,w)=>b.edge.x===w.edge.x?0:(b.edge.x-w.edge.x)/Math.abs(b.edge.x-w.edge.x)),(d!==1||x%f==0)&&y.length>1)for(let b=0;b=y.length)break;let C=y[b].edge,T=y[w].edge;m.push([[Math.round(C.x),v],[Math.round(T.x),v]])}v+=d,y.forEach(b=>{b.edge.x=b.edge.x+d*b.edge.islope}),x++}return m}(s,a,n);if(i){for(let h of s)CD(h,l,-i);(function(h,f,d){let p=[];h.forEach(m=>p.push(...m)),CD(p,f,d)})(u,l,-i)}return u}function a2(t,e){var r;let n=e.hachureAngle+90,i=e.hachureGap;i<0&&(i=4*e.strokeWidth),i=Math.round(Math.max(i,.1));let a=1;return e.roughness>=1&&(((r=e.randomizer)===null||r===void 0?void 0:r.next())||Math.random())>.7&&(a=i),A8e(t,i,n,a||1)}function Lw(t){let e=t[0],r=t[1];return Math.sqrt(Math.pow(e[0]-r[0],2)+Math.pow(e[1]-r[1],2))}function _D(t,e){return t.type===e}function VD(t){let e=[],r=function(s){let l=new Array;for(;s!=="";)if(s.match(/^([ \t\r\n,]+)/))s=s.substr(RegExp.$1.length);else if(s.match(/^([aAcChHlLmMqQsStTvVzZ])/))l[l.length]={type:_8e,text:RegExp.$1},s=s.substr(RegExp.$1.length);else{if(!s.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];l[l.length]={type:AD,text:`${parseFloat(RegExp.$1)}`},s=s.substr(RegExp.$1.length)}return l[l.length]={type:iK,text:""},l}(t),n="BOD",i=0,a=r[i];for(;!_D(a,iK);){let s=0,l=[];if(n==="BOD"){if(a.text!=="M"&&a.text!=="m")return VD("M0,0"+t);i++,s=Tw[a.text],n=a.text}else _D(a,AD)?s=Tw[n]:(i++,s=Tw[a.text],n=a.text);if(!(i+sf%2?h+r:h+e);a.push({key:"C",data:u}),e=u[4],r=u[5];break}case"Q":a.push({key:"Q",data:[...l]}),e=l[2],r=l[3];break;case"q":{let u=l.map((h,f)=>f%2?h+r:h+e);a.push({key:"Q",data:u}),e=u[2],r=u[3];break}case"A":a.push({key:"A",data:[...l]}),e=l[5],r=l[6];break;case"a":e+=l[5],r+=l[6],a.push({key:"A",data:[l[0],l[1],l[2],l[3],l[4],e,r]});break;case"H":a.push({key:"H",data:[...l]}),e=l[0];break;case"h":e+=l[0],a.push({key:"H",data:[e]});break;case"V":a.push({key:"V",data:[...l]}),r=l[0];break;case"v":r+=l[0],a.push({key:"V",data:[r]});break;case"S":a.push({key:"S",data:[...l]}),e=l[2],r=l[3];break;case"s":{let u=l.map((h,f)=>f%2?h+r:h+e);a.push({key:"S",data:u}),e=u[2],r=u[3];break}case"T":a.push({key:"T",data:[...l]}),e=l[0],r=l[1];break;case"t":e+=l[0],r+=l[1],a.push({key:"T",data:[e,r]});break;case"Z":case"z":a.push({key:"Z",data:[]}),e=n,r=i}return a}function dK(t){let e=[],r="",n=0,i=0,a=0,s=0,l=0,u=0;for(let{key:h,data:f}of t){switch(h){case"M":e.push({key:"M",data:[...f]}),[n,i]=f,[a,s]=f;break;case"C":e.push({key:"C",data:[...f]}),n=f[4],i=f[5],l=f[2],u=f[3];break;case"L":e.push({key:"L",data:[...f]}),[n,i]=f;break;case"H":n=f[0],e.push({key:"L",data:[n,i]});break;case"V":i=f[0],e.push({key:"L",data:[n,i]});break;case"S":{let d=0,p=0;r==="C"||r==="S"?(d=n+(n-l),p=i+(i-u)):(d=n,p=i),e.push({key:"C",data:[d,p,...f]}),l=f[0],u=f[1],n=f[2],i=f[3];break}case"T":{let[d,p]=f,m=0,g=0;r==="Q"||r==="T"?(m=n+(n-l),g=i+(i-u)):(m=n,g=i);let y=n+2*(m-n)/3,v=i+2*(g-i)/3,x=d+2*(m-d)/3,b=p+2*(g-p)/3;e.push({key:"C",data:[y,v,x,b,d,p]}),l=m,u=g,n=d,i=p;break}case"Q":{let[d,p,m,g]=f,y=n+2*(d-n)/3,v=i+2*(p-i)/3,x=m+2*(d-m)/3,b=g+2*(p-g)/3;e.push({key:"C",data:[y,v,x,b,m,g]}),l=d,u=p,n=m,i=g;break}case"A":{let d=Math.abs(f[0]),p=Math.abs(f[1]),m=f[2],g=f[3],y=f[4],v=f[5],x=f[6];d===0||p===0?(e.push({key:"C",data:[n,i,v,x,v,x]}),n=v,i=x):(n!==v||i!==x)&&(pK(n,i,v,x,d,p,m,g,y).forEach(function(b){e.push({key:"C",data:b})}),n=v,i=x);break}case"Z":e.push({key:"Z",data:[]}),n=a,i=s}r=h}return e}function r2(t,e,r){return[t*Math.cos(r)-e*Math.sin(r),t*Math.sin(r)+e*Math.cos(r)]}function pK(t,e,r,n,i,a,s,l,u,h){let f=(d=s,Math.PI*d/180);var d;let p=[],m=0,g=0,y=0,v=0;if(h)[m,g,y,v]=h;else{[t,e]=r2(t,e,-f),[r,n]=r2(r,n,-f);let L=(t-r)/2,R=(e-n)/2,O=L*L/(i*i)+R*R/(a*a);O>1&&(O=Math.sqrt(O),i*=O,a*=O);let N=i*i,B=a*a,F=N*B-N*R*R-B*L*L,P=N*R*R+B*L*L,G=(l===u?-1:1)*Math.sqrt(Math.abs(F/P));y=G*i*R/a+(t+r)/2,v=G*-a*L/i+(e+n)/2,m=Math.asin(parseFloat(((e-v)/a).toFixed(9))),g=Math.asin(parseFloat(((n-v)/a).toFixed(9))),tg&&(m-=2*Math.PI),!u&&g>m&&(g-=2*Math.PI)}let x=g-m;if(Math.abs(x)>120*Math.PI/180){let L=g,R=r,O=n;g=u&&g>m?m+120*Math.PI/180*1:m+120*Math.PI/180*-1,p=pK(r=y+i*Math.cos(g),n=v+a*Math.sin(g),R,O,i,a,s,0,u,[g,L,y,v])}x=g-m;let b=Math.cos(m),w=Math.sin(m),C=Math.cos(g),T=Math.sin(g),E=Math.tan(x/4),A=4/3*i*E,S=4/3*a*E,_=[t,e],I=[t+A*w,e-S*b],D=[r+A*T,n-S*C],k=[r,n];if(I[0]=2*_[0]-I[0],I[1]=2*_[1]-I[1],h)return[I,D,k].concat(p);{p=[I,D,k].concat(p);let L=[];for(let R=0;R2){let i=[];for(let a=0;a2*Math.PI&&(m=0,g=2*Math.PI);let y=2*Math.PI/u.curveStepCount,v=Math.min(y/2,(g-m)/2),x=uK(v,h,f,d,p,m,g,1,u);if(!u.disableMultiStroke){let b=uK(v,h,f,d,p,m,g,1.5,u);x.push(...b)}return s&&(l?x.push(...zh(h,f,h+d*Math.cos(m),f+p*Math.sin(m),u),...zh(h,f,h+d*Math.cos(g),f+p*Math.sin(g),u)):x.push({op:"lineTo",data:[h,f]},{op:"lineTo",data:[h+d*Math.cos(m),f+p*Math.sin(m)]})),{type:"path",ops:x}}function oK(t,e){let r=dK(fK(VD(t))),n=[],i=[0,0],a=[0,0];for(let{key:s,data:l}of r)switch(s){case"M":a=[l[0],l[1]],i=[l[0],l[1]];break;case"L":n.push(...zh(a[0],a[1],l[0],l[1],e)),a=[l[0],l[1]];break;case"C":{let[u,h,f,d,p,m]=l;n.push(...R8e(u,h,f,d,p,m,a,e)),a=[p,m];break}case"Z":n.push(...zh(a[0],a[1],i[0],i[1],e)),a=[i[0],i[1]]}return{type:"path",ops:n}}function DD(t,e){let r=[];for(let n of t)if(n.length){let i=e.maxRandomnessOffset||0,a=n.length;if(a>2){r.push({op:"move",data:[n[0][0]+nr(i,e),n[0][1]+nr(i,e)]});for(let s=1;s500?.4:-.0016668*u+1.233334;let f=i.maxRandomnessOffset||0;f*f*100>l&&(f=u/10);let d=f/2,p=.2+.2*yK(i),m=i.bowing*i.maxRandomnessOffset*(n-e)/200,g=i.bowing*i.maxRandomnessOffset*(t-r)/200;m=nr(m,i,h),g=nr(g,i,h);let y=[],v=o(()=>nr(d,i,h),"M"),x=o(()=>nr(f,i,h),"k"),b=i.preserveVertices;return a&&(s?y.push({op:"move",data:[t+(b?0:v()),e+(b?0:v())]}):y.push({op:"move",data:[t+(b?0:nr(f,i,h)),e+(b?0:nr(f,i,h))]})),s?y.push({op:"bcurveTo",data:[m+t+(r-t)*p+v(),g+e+(n-e)*p+v(),m+t+2*(r-t)*p+v(),g+e+2*(n-e)*p+v(),r+(b?0:v()),n+(b?0:v())]}):y.push({op:"bcurveTo",data:[m+t+(r-t)*p+x(),g+e+(n-e)*p+x(),m+t+2*(r-t)*p+x(),g+e+2*(n-e)*p+x(),r+(b?0:x()),n+(b?0:x())]}),y}function kw(t,e,r){if(!t.length)return[];let n=[];n.push([t[0][0]+nr(e,r),t[0][1]+nr(e,r)]),n.push([t[0][0]+nr(e,r),t[0][1]+nr(e,r)]);for(let i=1;i3){let a=[],s=1-r.curveTightness;i.push({op:"move",data:[t[1][0],t[1][1]]});for(let l=1;l+21&&i.push(l)):i.push(l),i.push(t[e+3])}else{let u=t[e+0],h=t[e+1],f=t[e+2],d=t[e+3],p=Nd(u,h,.5),m=Nd(h,f,.5),g=Nd(f,d,.5),y=Nd(p,m,.5),v=Nd(m,g,.5),x=Nd(y,v,.5);zD([u,p,y,x],0,r,i),zD([x,v,g,d],0,r,i)}var a,s;return i}function M8e(t,e){return Dw(t,0,t.length,e)}function Dw(t,e,r,n,i){let a=i||[],s=t[e],l=t[r-1],u=0,h=1;for(let f=e+1;fu&&(u=d,h=f)}return Math.sqrt(u)>n?(Dw(t,e,h+1,n,a),Dw(t,h,r,n,a)):(a.length||a.push(s),a.push(l)),a}function LD(t,e=.15,r){let n=[],i=(t.length-1)/3;for(let a=0;a0?Dw(n,0,n.length,r):n}var i2,RD,ND,MD,ID,OD,_s,PD,_8e,AD,iK,Tw,D8e,Qs,cm,GD,Ew,$D,Xe,Wt=M(()=>{"use strict";o(CD,"t");o(C8e,"e");o(A8e,"s");o(a2,"n");i2=class{static{o(this,"o")}constructor(e){this.helper=e}fillPolygons(e,r){return this._fillPolygons(e,r)}_fillPolygons(e,r){let n=a2(e,r);return{type:"fillSketch",ops:this.renderLines(n,r)}}renderLines(e,r){let n=[];for(let i of e)n.push(...this.helper.doubleLineOps(i[0][0],i[0][1],i[1][0],i[1][1],r));return n}};o(Lw,"a");RD=class extends i2{static{o(this,"h")}fillPolygons(e,r){let n=r.hachureGap;n<0&&(n=4*r.strokeWidth),n=Math.max(n,.1);let i=a2(e,Object.assign({},r,{hachureGap:n})),a=Math.PI/180*r.hachureAngle,s=[],l=.5*n*Math.cos(a),u=.5*n*Math.sin(a);for(let[h,f]of i)Lw([h,f])&&s.push([[h[0]-l,h[1]+u],[...f]],[[h[0]+l,h[1]-u],[...f]]);return{type:"fillSketch",ops:this.renderLines(s,r)}}},ND=class extends i2{static{o(this,"r")}fillPolygons(e,r){let n=this._fillPolygons(e,r),i=Object.assign({},r,{hachureAngle:r.hachureAngle+90}),a=this._fillPolygons(e,i);return n.ops=n.ops.concat(a.ops),n}},MD=class{static{o(this,"i")}constructor(e){this.helper=e}fillPolygons(e,r){let n=a2(e,r=Object.assign({},r,{hachureAngle:0}));return this.dotsOnLines(n,r)}dotsOnLines(e,r){let n=[],i=r.hachureGap;i<0&&(i=4*r.strokeWidth),i=Math.max(i,.1);let a=r.fillWeight;a<0&&(a=r.strokeWidth/2);let s=i/4;for(let l of e){let u=Lw(l),h=u/i,f=Math.ceil(h)-1,d=u-f*i,p=(l[0][0]+l[1][0])/2-i/4,m=Math.min(l[0][1],l[1][1]);for(let g=0;g{let l=Lw(s),u=Math.floor(l/(n+i)),h=(l+i-u*(n+i))/2,f=s[0],d=s[1];f[0]>d[0]&&(f=s[1],d=s[0]);let p=Math.atan((d[1]-f[1])/(d[0]-f[0]));for(let m=0;m{let s=Lw(a),l=Math.round(s/(2*r)),u=a[0],h=a[1];u[0]>h[0]&&(u=a[1],h=a[0]);let f=Math.atan((h[1]-u[1])/(h[0]-u[0]));for(let d=0;d2*Math.PI&&(A=0,S=2*Math.PI);let _=(S-A)/b.curveStepCount,I=[];for(let D=A;D<=S;D+=_)I.push([w+T*Math.cos(D),C+E*Math.sin(D)]);return I.push([w+T*Math.cos(S),C+E*Math.sin(S)]),I.push([w,C]),lm([I],b)}(e,r,n,i,a,s,h));return h.stroke!==Qs&&f.push(d),this._d("arc",f,h)}curve(e,r){let n=this._o(r),i=[],a=aK(e,n);if(n.fill&&n.fill!==Qs)if(n.fillStyle==="solid"){let s=aK(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(s.ops)})}else{let s=[],l=e;if(l.length){let u=typeof l[0][0]=="number"?[l]:l;for(let h of u)h.length<3?s.push(...h):h.length===3?s.push(...LD(hK([h[0],h[0],h[1],h[2]]),10,(1+n.roughness)/2)):s.push(...LD(hK(h),10,(1+n.roughness)/2))}s.length&&i.push(lm([s],n))}return n.stroke!==Qs&&i.push(a),this._d("curve",i,n)}polygon(e,r){let n=this._o(r),i=[],a=Sw(e,!0,n);return n.fill&&(n.fillStyle==="solid"?i.push(DD([e],n)):i.push(lm([e],n))),n.stroke!==Qs&&i.push(a),this._d("polygon",i,n)}path(e,r){let n=this._o(r),i=[];if(!e)return this._d("path",i,n);e=(e||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");let a=n.fill&&n.fill!=="transparent"&&n.fill!==Qs,s=n.stroke!==Qs,l=!!(n.simplification&&n.simplification<1),u=function(f,d,p){let m=dK(fK(VD(f))),g=[],y=[],v=[0,0],x=[],b=o(()=>{x.length>=4&&y.push(...LD(x,d)),x=[]},"i"),w=o(()=>{b(),y.length&&(g.push(y),y=[])},"c");for(let{key:T,data:E}of m)switch(T){case"M":w(),v=[E[0],E[1]],y.push(v);break;case"L":b(),y.push([E[0],E[1]]);break;case"C":if(!x.length){let A=y.length?y[y.length-1]:v;x.push([A[0],A[1]])}x.push([E[0],E[1]]),x.push([E[2],E[3]]),x.push([E[4],E[5]]);break;case"Z":b(),y.push([v[0],v[1]])}if(w(),!p)return g;let C=[];for(let T of g){let E=M8e(T,p);E.length&&C.push(E)}return C}(e,1,l?4-4*(n.simplification||1):(1+n.roughness)/2),h=oK(e,n);if(a)if(n.fillStyle==="solid")if(u.length===1){let f=oK(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(f.ops)})}else i.push(DD(u,n));else i.push(lm(u,n));return s&&(l?u.forEach(f=>{i.push(Sw(f,!1,n))}):i.push(h)),this._d("path",i,n)}opsToPath(e,r){let n="";for(let i of e.ops){let a=typeof r=="number"&&r>=0?i.data.map(s=>+s.toFixed(r)):i.data;switch(i.op){case"move":n+=`M${a[0]} ${a[1]} `;break;case"bcurveTo":n+=`C${a[0]} ${a[1]}, ${a[2]} ${a[3]}, ${a[4]} ${a[5]} `;break;case"lineTo":n+=`L${a[0]} ${a[1]} `}}return n.trim()}toPaths(e){let r=e.sets||[],n=e.options||this.defaultOptions,i=[];for(let a of r){let s=null;switch(a.type){case"path":s={d:this.opsToPath(a),stroke:n.stroke,strokeWidth:n.strokeWidth,fill:Qs};break;case"fillPath":s={d:this.opsToPath(a),stroke:Qs,strokeWidth:0,fill:n.fill||Qs};break;case"fillSketch":s=this.fillSketch(a,n)}s&&i.push(s)}return i}fillSketch(e,r){let n=r.fillWeight;return n<0&&(n=r.strokeWidth/2),{d:this.opsToPath(e),stroke:r.fill||Qs,strokeWidth:n,fill:Qs}}_mergedShape(e){return e.filter((r,n)=>n===0||r.op!=="move")}},GD=class{static{o(this,"st")}constructor(e,r){this.canvas=e,this.ctx=this.canvas.getContext("2d"),this.gen=new cm(r)}draw(e){let r=e.sets||[],n=e.options||this.getDefaultOptions(),i=this.ctx,a=e.options.fixedDecimalPlaceDigits;for(let s of r)switch(s.type){case"path":i.save(),i.strokeStyle=n.stroke==="none"?"transparent":n.stroke,i.lineWidth=n.strokeWidth,n.strokeLineDash&&i.setLineDash(n.strokeLineDash),n.strokeLineDashOffset&&(i.lineDashOffset=n.strokeLineDashOffset),this._drawToContext(i,s,a),i.restore();break;case"fillPath":{i.save(),i.fillStyle=n.fill||"";let l=e.shape==="curve"||e.shape==="polygon"||e.shape==="path"?"evenodd":"nonzero";this._drawToContext(i,s,a,l),i.restore();break}case"fillSketch":this.fillSketch(i,s,n)}}fillSketch(e,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2),e.save(),n.fillLineDash&&e.setLineDash(n.fillLineDash),n.fillLineDashOffset&&(e.lineDashOffset=n.fillLineDashOffset),e.strokeStyle=n.fill||"",e.lineWidth=i,this._drawToContext(e,r,n.fixedDecimalPlaceDigits),e.restore()}_drawToContext(e,r,n,i="nonzero"){e.beginPath();for(let a of r.ops){let s=typeof n=="number"&&n>=0?a.data.map(l=>+l.toFixed(n)):a.data;switch(a.op){case"move":e.moveTo(s[0],s[1]);break;case"bcurveTo":e.bezierCurveTo(s[0],s[1],s[2],s[3],s[4],s[5]);break;case"lineTo":e.lineTo(s[0],s[1])}}r.type==="fillPath"?e.fill(i):e.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(e,r,n,i,a){let s=this.gen.line(e,r,n,i,a);return this.draw(s),s}rectangle(e,r,n,i,a){let s=this.gen.rectangle(e,r,n,i,a);return this.draw(s),s}ellipse(e,r,n,i,a){let s=this.gen.ellipse(e,r,n,i,a);return this.draw(s),s}circle(e,r,n,i){let a=this.gen.circle(e,r,n,i);return this.draw(a),a}linearPath(e,r){let n=this.gen.linearPath(e,r);return this.draw(n),n}polygon(e,r){let n=this.gen.polygon(e,r);return this.draw(n),n}arc(e,r,n,i,a,s,l=!1,u){let h=this.gen.arc(e,r,n,i,a,s,l,u);return this.draw(h),h}curve(e,r){let n=this.gen.curve(e,r);return this.draw(n),n}path(e,r){let n=this.gen.path(e,r);return this.draw(n),n}},Ew="http://www.w3.org/2000/svg",$D=class{static{o(this,"ot")}constructor(e,r){this.svg=e,this.gen=new cm(r)}draw(e){let r=e.sets||[],n=e.options||this.getDefaultOptions(),i=this.svg.ownerDocument||window.document,a=i.createElementNS(Ew,"g"),s=e.options.fixedDecimalPlaceDigits;for(let l of r){let u=null;switch(l.type){case"path":u=i.createElementNS(Ew,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke",n.stroke),u.setAttribute("stroke-width",n.strokeWidth+""),u.setAttribute("fill","none"),n.strokeLineDash&&u.setAttribute("stroke-dasharray",n.strokeLineDash.join(" ").trim()),n.strokeLineDashOffset&&u.setAttribute("stroke-dashoffset",`${n.strokeLineDashOffset}`);break;case"fillPath":u=i.createElementNS(Ew,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke","none"),u.setAttribute("stroke-width","0"),u.setAttribute("fill",n.fill||""),e.shape!=="curve"&&e.shape!=="polygon"||u.setAttribute("fill-rule","evenodd");break;case"fillSketch":u=this.fillSketch(i,l,n)}u&&a.appendChild(u)}return a}fillSketch(e,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2);let a=e.createElementNS(Ew,"path");return a.setAttribute("d",this.opsToPath(r,n.fixedDecimalPlaceDigits)),a.setAttribute("stroke",n.fill||""),a.setAttribute("stroke-width",i+""),a.setAttribute("fill","none"),n.fillLineDash&&a.setAttribute("stroke-dasharray",n.fillLineDash.join(" ").trim()),n.fillLineDashOffset&&a.setAttribute("stroke-dashoffset",`${n.fillLineDashOffset}`),a}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(e,r){return this.gen.opsToPath(e,r)}line(e,r,n,i,a){let s=this.gen.line(e,r,n,i,a);return this.draw(s)}rectangle(e,r,n,i,a){let s=this.gen.rectangle(e,r,n,i,a);return this.draw(s)}ellipse(e,r,n,i,a){let s=this.gen.ellipse(e,r,n,i,a);return this.draw(s)}circle(e,r,n,i){let a=this.gen.circle(e,r,n,i);return this.draw(a)}linearPath(e,r){let n=this.gen.linearPath(e,r);return this.draw(n)}polygon(e,r){let n=this.gen.polygon(e,r);return this.draw(n)}arc(e,r,n,i,a,s,l=!1,u){let h=this.gen.arc(e,r,n,i,a,s,l,u);return this.draw(h)}curve(e,r){let n=this.gen.curve(e,r);return this.draw(n)}path(e,r){let n=this.gen.path(e,r);return this.draw(n)}},Xe={canvas:o((t,e)=>new GD(t,e),"canvas"),svg:o((t,e)=>new $D(t,e),"svg"),generator:o(t=>new cm(t),"generator"),newSeed:o(()=>cm.newSeed(),"newSeed")}});function vK(t,e){let{labelStyles:r}=Qe(e);e.labelStyle=r;let n=ht(e),i=n;n||(i="anchor");let a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=1,{cssStyles:l}=e,u=Xe.svg(a),h=Ke(e,{fill:"black",stroke:"none",fillStyle:"solid"});e.look!=="handDrawn"&&(h.roughness=0);let f=u.circle(0,0,s*2,h),d=a.insert(()=>f,":first-child");return d.attr("class","anchor").attr("style",zn(l)),je(e,d),e.intersect=function(p){return Y.info("Circle intersect",e,s,p),Ye.circle(e,s,p)},a}var xK=M(()=>{"use strict";vt();Ft();Ht();Ut();Wt();sr();o(vK,"anchor")});function bK(t,e,r,n,i,a,s){let u=(t+r)/2,h=(e+n)/2,f=Math.atan2(n-e,r-t),d=(r-t)/2,p=(n-e)/2,m=d/i,g=p/a,y=Math.sqrt(m**2+g**2);if(y>1)throw new Error("The given radii are too small to create an arc between the points.");let v=Math.sqrt(1-y**2),x=u+v*a*Math.sin(f)*(s?-1:1),b=h-v*i*Math.cos(f)*(s?-1:1),w=Math.atan2((e-b)/a,(t-x)/i),T=Math.atan2((n-b)/a,(r-x)/i)-w;s&&T<0&&(T+=2*Math.PI),!s&&T>0&&(T-=2*Math.PI);let E=[];for(let A=0;A<20;A++){let S=A/19,_=w+S*T,I=x+i*Math.cos(_),D=b+a*Math.sin(_);E.push({x:I,y:D})}return E}async function wK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=a.width+e.padding+20,l=a.height+e.padding,u=l/2,h=u/(2.5+l/50),{cssStyles:f}=e,d=[{x:s/2,y:-l/2},{x:-s/2,y:-l/2},...bK(-s/2,-l/2,-s/2,l/2,h,u,!1),{x:s/2,y:l/2},...bK(s/2,l/2,s/2,-l/2,h,u,!0)],p=Xe.svg(i),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=Xt(d),y=p.path(g,m),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(${h/2}, 0)`),je(e,v),e.intersect=function(x){return Ye.polygon(e,d,x)},i}var TK=M(()=>{"use strict";Ft();Ht();Ut();Wt();o(bK,"generateArcPoints");o(wK,"bowTieRect")});function _a(t,e,r,n){return t.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}var Cu=M(()=>{"use strict";o(_a,"insertPolygonShape")});async function kK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=a.height+e.padding,l=12,u=a.width+e.padding+l,h=0,f=u,d=-s,p=0,m=[{x:h+l,y:d},{x:f,y:d},{x:f,y:p},{x:h,y:p},{x:h,y:d+l},{x:h+l,y:d}],g,{cssStyles:y}=e;if(e.look==="handDrawn"){let v=Xe.svg(i),x=Ke(e,{}),b=Xt(m),w=v.path(b,x);g=i.insert(()=>w,":first-child").attr("transform",`translate(${-u/2}, ${s/2})`),y&&g.attr("style",y)}else g=_a(i,u,s,m);return n&&g.attr("style",n),je(e,g),e.intersect=function(v){return Ye.polygon(e,m,v)},i}var EK=M(()=>{"use strict";Ft();Ht();Ut();Wt();Cu();Ft();o(kK,"card")});function SK(t,e){let{nodeStyles:r}=Qe(e);e.label="";let n=t.insert("g").attr("class",ht(e)).attr("id",e.domId??e.id),{cssStyles:i}=e,a=Math.max(28,e.width??0),s=[{x:0,y:a/2},{x:a/2,y:0},{x:0,y:-a/2},{x:-a/2,y:0}],l=Xe.svg(n),u=Ke(e,{});e.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=Xt(s),f=l.path(h,u),d=n.insert(()=>f,":first-child");return i&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",i),r&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",r),e.width=28,e.height=28,e.intersect=function(p){return Ye.polygon(e,s,p)},n}var CK=M(()=>{"use strict";Ht();Wt();Ut();Ft();o(SK,"choice")});async function AK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s}=await pt(t,e,ht(e)),l=a.width/2+s,u,{cssStyles:h}=e;if(e.look==="handDrawn"){let f=Xe.svg(i),d=Ke(e,{}),p=f.circle(0,0,l*2,d);u=i.insert(()=>p,":first-child"),u.attr("class","basic label-container").attr("style",zn(h))}else u=i.insert("circle",":first-child").attr("class","basic label-container").attr("style",n).attr("r",l).attr("cx",0).attr("cy",0);return je(e,u),e.intersect=function(f){return Y.info("Circle intersect",e,l,f),Ye.circle(e,l,f)},i}var _K=M(()=>{"use strict";vt();Ft();Ht();Ut();Wt();sr();o(AK,"circle")});function I8e(t){let e=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),n=t*2,i={x:n/2*e,y:n/2*r},a={x:-(n/2)*e,y:n/2*r},s={x:-(n/2)*e,y:-(n/2)*r},l={x:n/2*e,y:-(n/2)*r};return`M ${a.x},${a.y} L ${l.x},${l.y} + M ${i.x},${i.y} L ${s.x},${s.y}`}function DK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r,e.label="";let i=t.insert("g").attr("class",ht(e)).attr("id",e.domId??e.id),a=Math.max(30,e?.width??0),{cssStyles:s}=e,l=Xe.svg(i),u=Ke(e,{});e.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=l.circle(0,0,a*2,u),f=I8e(a),d=l.path(f,u),p=i.insert(()=>h,":first-child");return p.insert(()=>d),s&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",s),n&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",n),je(e,p),e.intersect=function(m){return Y.info("crossedCircle intersect",e,{radius:a,point:m}),Ye.circle(e,a,m)},i}var LK=M(()=>{"use strict";vt();Ft();Ut();Wt();Ht();o(I8e,"createLine");o(DK,"crossedCircle")});function Gh(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dw,":first-child").attr("stroke-opacity",0),C.insert(()=>x,":first-child"),C.attr("class","text"),f&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(${h}, 0)`),s.attr("transform",`translate(${-l/2+h-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),je(e,C),e.intersect=function(T){return Ye.polygon(e,p,T)},i}var NK=M(()=>{"use strict";Ft();Ht();Ut();Wt();o(Gh,"generateCirclePoints");o(RK,"curlyBraceLeft")});function $h(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dw,":first-child").attr("stroke-opacity",0),C.insert(()=>x,":first-child"),C.attr("class","text"),f&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(${-h}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),je(e,C),e.intersect=function(T){return Ye.polygon(e,p,T)},i}var IK=M(()=>{"use strict";Ft();Ht();Ut();Wt();o($h,"generateCirclePoints");o(MK,"curlyBraceRight")});function Da(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dA,":first-child").attr("stroke-opacity",0),S.insert(()=>b,":first-child"),S.insert(()=>T,":first-child"),S.attr("class","text"),f&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(${h-h/4}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),je(e,S),e.intersect=function(_){return Ye.polygon(e,m,_)},i}var PK=M(()=>{"use strict";Ft();Ht();Ut();Wt();o(Da,"generateCirclePoints");o(OK,"curlyBraces")});async function BK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=80,l=20,u=Math.max(s,(a.width+(e.padding??0)*2)*1.25,e?.width??0),h=Math.max(l,a.height+(e.padding??0)*2,e?.height??0),f=h/2,{cssStyles:d}=e,p=Xe.svg(i),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=u,y=h,v=g-f,x=y/4,b=[{x:v,y:0},{x,y:0},{x:0,y:y/2},{x,y},{x:v,y},...bw(-v,-y/2,f,50,270,90)],w=Xt(b),C=p.path(w,m),T=i.insert(()=>C,":first-child");return T.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&T.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&T.selectChildren("path").attr("style",n),T.attr("transform",`translate(${-u/2}, ${-h/2})`),je(e,T),e.intersect=function(E){return Ye.polygon(e,b,E)},i}var FK=M(()=>{"use strict";Ft();Ht();Ut();Wt();o(BK,"curvedTrapezoid")});async function zK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+e.padding,e.width??0),u=l/2,h=u/(2.5+l/50),f=Math.max(a.height+h+e.padding,e.height??0),d,{cssStyles:p}=e;if(e.look==="handDrawn"){let m=Xe.svg(i),g=P8e(0,0,l,f,u,h),y=B8e(0,h,l,f,u,h),v=m.path(g,Ke(e,{})),x=m.path(y,Ke(e,{fill:"none"}));d=i.insert(()=>x,":first-child"),d=i.insert(()=>v,":first-child"),d.attr("class","basic label-container"),p&&d.attr("style",p)}else{let m=O8e(0,0,l,f,u,h);d=i.insert("path",":first-child").attr("d",m).attr("class","basic label-container").attr("style",zn(p)).attr("style",n)}return d.attr("label-offset-y",h),d.attr("transform",`translate(${-l/2}, ${-(f/2+h)})`),je(e,d),s.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+(e.padding??0)/1.5-(a.y-(a.top??0))})`),e.intersect=function(m){let g=Ye.rect(e,m),y=g.x-(e.x??0);if(u!=0&&(Math.abs(y)<(e.width??0)/2||Math.abs(y)==(e.width??0)/2&&Math.abs(g.y-(e.y??0))>(e.height??0)/2-h)){let v=h*h*(1-y*y/(u*u));v>0&&(v=Math.sqrt(v)),v=h-v,m.y-(e.y??0)>0&&(v=-v),g.y+=v}return g},i}var O8e,P8e,B8e,GK=M(()=>{"use strict";Ft();Ht();Ut();Wt();sr();O8e=o((t,e,r,n,i,a)=>[`M${t},${e+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createCylinderPathD"),P8e=o((t,e,r,n,i,a)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createOuterCylinderPathD"),B8e=o((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");o(zK,"cylinder")});async function $K(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=a.width+e.padding,u=a.height+e.padding,h=u*.2,f=-l/2,d=-u/2-h/2,{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:f,y:d+h},{x:-f,y:d+h},{x:-f,y:-d},{x:f,y:-d},{x:f,y:d},{x:-f,y:d},{x:-f,y:d+h}],v=m.polygon(y.map(b=>[b.x,b.y]),g),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),s.attr("transform",`translate(${f+(e.padding??0)/2-(a.x-(a.left??0))}, ${d+h+(e.padding??0)/2-(a.y-(a.top??0))})`),je(e,x),e.intersect=function(b){return Ye.rect(e,b)},i}var VK=M(()=>{"use strict";Ft();Ht();Ut();Wt();o($K,"dividedRectangle")});async function UK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s}=await pt(t,e,ht(e)),u=a.width/2+s+5,h=a.width/2+s,f,{cssStyles:d}=e;if(e.look==="handDrawn"){let p=Xe.svg(i),m=Ke(e,{roughness:.2,strokeWidth:2.5}),g=Ke(e,{roughness:.2,strokeWidth:1.5}),y=p.circle(0,0,u*2,m),v=p.circle(0,0,h*2,g);f=i.insert("g",":first-child"),f.attr("class",zn(e.cssClasses)).attr("style",zn(d)),f.node()?.appendChild(y),f.node()?.appendChild(v)}else{f=i.insert("g",":first-child");let p=f.insert("circle",":first-child"),m=f.insert("circle");f.attr("class","basic label-container").attr("style",n),p.attr("class","outer-circle").attr("style",n).attr("r",u).attr("cx",0).attr("cy",0),m.attr("class","inner-circle").attr("style",n).attr("r",h).attr("cx",0).attr("cy",0)}return je(e,f),e.intersect=function(p){return Y.info("DoubleCircle intersect",e,u,p),Ye.circle(e,u,p)},i}var HK=M(()=>{"use strict";vt();Ft();Ht();Ut();Wt();sr();o(UK,"doublecircle")});function WK(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=Qe(e);e.label="",e.labelStyle=n;let a=t.insert("g").attr("class",ht(e)).attr("id",e.domId??e.id),s=7,{cssStyles:l}=e,u=Xe.svg(a),{nodeBorder:h}=r,f=Ke(e,{fillStyle:"solid"});e.look!=="handDrawn"&&(f.roughness=0);let d=u.circle(0,0,s*2,f),p=a.insert(()=>d,":first-child");return p.selectAll("path").attr("style",`fill: ${h} !important;`),l&&l.length>0&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",l),i&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",i),je(e,p),e.intersect=function(m){return Y.info("filledCircle intersect",e,{radius:s,point:m}),Ye.circle(e,s,m)},a}var qK=M(()=>{"use strict";Wt();vt();Ht();Ut();Ft();o(WK,"filledCircle")});async function YK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=a.width+(e.padding??0),u=l+a.height,h=l+a.height,f=[{x:0,y:-u},{x:h,y:-u},{x:h/2,y:0}],{cssStyles:d}=e,p=Xe.svg(i),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=Xt(f),y=p.path(g,m),v=i.insert(()=>y,":first-child").attr("transform",`translate(${-u/2}, ${u/2})`);return d&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",n),e.width=l,e.height=u,je(e,v),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${-u/2+(e.padding??0)/2+(a.y-(a.top??0))})`),e.intersect=function(x){return Y.info("Triangle intersect",e,f,x),Ye.polygon(e,f,x)},i}var XK=M(()=>{"use strict";vt();Ft();Ht();Ut();Wt();Ft();o(YK,"flippedTriangle")});function jK(t,e,{dir:r,config:{state:n,themeVariables:i}}){let{nodeStyles:a}=Qe(e);e.label="";let s=t.insert("g").attr("class",ht(e)).attr("id",e.domId??e.id),{cssStyles:l}=e,u=Math.max(70,e?.width??0),h=Math.max(10,e?.height??0);r==="LR"&&(u=Math.max(10,e?.width??0),h=Math.max(70,e?.height??0));let f=-1*u/2,d=-1*h/2,p=Xe.svg(s),m=Ke(e,{stroke:i.lineColor,fill:i.lineColor});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=p.rectangle(f,d,u,h,m),y=s.insert(()=>g,":first-child");l&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",l),a&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",a),je(e,y);let v=n?.padding??0;return e.width&&e.height&&(e.width+=v/2||0,e.height+=v/2||0),e.intersect=function(x){return Ye.rect(e,x)},s}var KK=M(()=>{"use strict";Wt();Ht();Ut();Ft();o(jK,"forkJoin")});async function QK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let i=80,a=50,{shapeSvg:s,bbox:l}=await pt(t,e,ht(e)),u=Math.max(i,l.width+(e.padding??0)*2,e?.width??0),h=Math.max(a,l.height+(e.padding??0)*2,e?.height??0),f=h/2,{cssStyles:d}=e,p=Xe.svg(s),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-u/2,y:-h/2},{x:u/2-f,y:-h/2},...bw(-u/2+f,0,f,50,90,270),{x:u/2-f,y:h/2},{x:-u/2,y:h/2}],y=Xt(g),v=p.path(y,m),x=s.insert(()=>v,":first-child");return x.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),je(e,x),e.intersect=function(b){return Y.info("Pill intersect",e,{radius:f,point:b}),Ye.polygon(e,g,b)},s}var ZK=M(()=>{"use strict";vt();Ft();Ht();Ut();Wt();o(QK,"halfRoundedRectangle")});async function JK(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=4,l=a.height+e.padding,u=l/s,h=a.width+2*u+e.padding,f=[{x:u,y:0},{x:h-u,y:0},{x:h,y:-l/2},{x:h-u,y:-l},{x:u,y:-l},{x:0,y:-l/2}],d,{cssStyles:p}=e;if(e.look==="handDrawn"){let m=Xe.svg(i),g=Ke(e,{}),y=F8e(0,0,h,l,u),v=m.path(y,g);d=i.insert(()=>v,":first-child").attr("transform",`translate(${-h/2}, ${l/2})`),p&&d.attr("style",p)}else d=_a(i,h,l,f);return n&&d.attr("style",n),e.width=h,e.height=l,je(e,d),e.intersect=function(m){return Ye.polygon(e,f,m)},i}var F8e,eQ=M(()=>{"use strict";Ft();Ht();Ut();Wt();Cu();F8e=o((t,e,r,n,i)=>[`M${t+i},${e}`,`L${t+r-i},${e}`,`L${t+r},${e-n/2}`,`L${t+r-i},${e-n}`,`L${t+i},${e-n}`,`L${t},${e-n/2}`,"Z"].join(" "),"createHexagonPathD");o(JK,"hexagon")});async function tQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.label="",e.labelStyle=r;let{shapeSvg:i}=await pt(t,e,ht(e)),a=Math.max(30,e?.width??0),s=Math.max(30,e?.height??0),{cssStyles:l}=e,u=Xe.svg(i),h=Ke(e,{});e.look!=="handDrawn"&&(h.roughness=0,h.fillStyle="solid");let f=[{x:0,y:0},{x:a,y:0},{x:0,y:s},{x:a,y:s}],d=Xt(f),p=u.path(d,h),m=i.insert(()=>p,":first-child");return m.attr("class","basic label-container"),l&&e.look!=="handDrawn"&&m.selectChildren("path").attr("style",l),n&&e.look!=="handDrawn"&&m.selectChildren("path").attr("style",n),m.attr("transform",`translate(${-a/2}, ${-s/2})`),je(e,m),e.intersect=function(g){return Y.info("Pill intersect",e,{points:f}),Ye.polygon(e,f,g)},i}var rQ=M(()=>{"use strict";vt();Ft();Ht();Ut();Wt();o(tQ,"hourglass")});async function nQ(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=Qe(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,label:d}=await pt(t,e,"icon-shape default"),p=e.pos==="t",m=l,g=l,{nodeBorder:y}=r,{stylesMap:v}=pc(e),x=-g/2,b=-m/2,w=e.label?8:0,C=Xe.svg(h),T=Ke(e,{stroke:"none",fill:"none"});e.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let E=C.rectangle(x,b,g,m,T),A=Math.max(g,f.width),S=m+f.height+w,_=C.rectangle(-A/2,-S/2,A,S,{...T,fill:"transparent",stroke:"none"}),I=h.insert(()=>E,":first-child"),D=h.insert(()=>_);if(e.icon){let k=h.append("g");k.html(`${await yo(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let L=k.node().getBBox(),R=L.width,O=L.height,N=L.x,B=L.y;k.attr("transform",`translate(${-R/2-N},${p?f.height/2+w/2-O/2-B:-f.height/2-w/2-O/2-B})`),k.attr("style",`color: ${v.get("stroke")??y};`)}return d.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${p?-S/2:S/2-f.height})`),I.attr("transform",`translate(0,${p?f.height/2+w/2:-f.height/2-w/2})`),je(e,D),e.intersect=function(k){if(Y.info("iconSquare intersect",e,k),!e.label)return Ye.rect(e,k);let L=e.x??0,R=e.y??0,O=e.height??0,N=[];return p?N=[{x:L-f.width/2,y:R-O/2},{x:L+f.width/2,y:R-O/2},{x:L+f.width/2,y:R-O/2+f.height+w},{x:L+g/2,y:R-O/2+f.height+w},{x:L+g/2,y:R+O/2},{x:L-g/2,y:R+O/2},{x:L-g/2,y:R-O/2+f.height+w},{x:L-f.width/2,y:R-O/2+f.height+w}]:N=[{x:L-g/2,y:R-O/2},{x:L+g/2,y:R-O/2},{x:L+g/2,y:R-O/2+m},{x:L+f.width/2,y:R-O/2+m},{x:L+f.width/2/2,y:R+O/2},{x:L-f.width/2,y:R+O/2},{x:L-f.width/2,y:R-O/2+m},{x:L-g/2,y:R-O/2+m}],Ye.polygon(e,N,k)},h}var iQ=M(()=>{"use strict";Wt();vt();Zc();Ht();Ut();Ft();o(nQ,"icon")});async function aQ(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=Qe(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,label:d}=await pt(t,e,"icon-shape default"),p=20,m=e.label?8:0,g=e.pos==="t",{nodeBorder:y,mainBkg:v}=r,{stylesMap:x}=pc(e),b=Xe.svg(h),w=Ke(e,{});e.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let C=x.get("fill");w.stroke=C??v;let T=h.append("g");e.icon&&T.html(`${await yo(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let E=T.node().getBBox(),A=E.width,S=E.height,_=E.x,I=E.y,D=Math.max(A,S)*Math.SQRT2+p*2,k=b.circle(0,0,D,w),L=Math.max(D,f.width),R=D+f.height+m,O=b.rectangle(-L/2,-R/2,L,R,{...w,fill:"transparent",stroke:"none"}),N=h.insert(()=>k,":first-child"),B=h.insert(()=>O);return T.attr("transform",`translate(${-A/2-_},${g?f.height/2+m/2-S/2-I:-f.height/2-m/2-S/2-I})`),T.attr("style",`color: ${x.get("stroke")??y};`),d.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${g?-R/2:R/2-f.height})`),N.attr("transform",`translate(0,${g?f.height/2+m/2:-f.height/2-m/2})`),je(e,B),e.intersect=function(F){return Y.info("iconSquare intersect",e,F),Ye.rect(e,F)},h}var sQ=M(()=>{"use strict";Wt();vt();Zc();Ht();Ut();Ft();o(aQ,"iconCircle")});var La,Vh=M(()=>{"use strict";La=o((t,e,r,n,i)=>["M",t+i,e,"H",t+r-i,"A",i,i,0,0,1,t+r,e+i,"V",e+n-i,"A",i,i,0,0,1,t+r-i,e+n,"H",t+i,"A",i,i,0,0,1,t,e+n-i,"V",e+i,"A",i,i,0,0,1,t+i,e,"Z"].join(" "),"createRoundedRectPathD")});async function oQ(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=Qe(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,halfPadding:d,label:p}=await pt(t,e,"icon-shape default"),m=e.pos==="t",g=l+d*2,y=l+d*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=pc(e),w=-y/2,C=-g/2,T=e.label?8:0,E=Xe.svg(h),A=Ke(e,{});e.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");let S=b.get("fill");A.stroke=S??x;let _=E.path(La(w,C,y,g,5),A),I=Math.max(y,f.width),D=g+f.height+T,k=E.rectangle(-I/2,-D/2,I,D,{...A,fill:"transparent",stroke:"none"}),L=h.insert(()=>_,":first-child").attr("class","icon-shape2"),R=h.insert(()=>k);if(e.icon){let O=h.append("g");O.html(`${await yo(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let N=O.node().getBBox(),B=N.width,F=N.height,P=N.x,G=N.y;O.attr("transform",`translate(${-B/2-P},${m?f.height/2+T/2-F/2-G:-f.height/2-T/2-F/2-G})`),O.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${m?-D/2:D/2-f.height})`),L.attr("transform",`translate(0,${m?f.height/2+T/2:-f.height/2-T/2})`),je(e,R),e.intersect=function(O){if(Y.info("iconSquare intersect",e,O),!e.label)return Ye.rect(e,O);let N=e.x??0,B=e.y??0,F=e.height??0,P=[];return m?P=[{x:N-f.width/2,y:B-F/2},{x:N+f.width/2,y:B-F/2},{x:N+f.width/2,y:B-F/2+f.height+T},{x:N+y/2,y:B-F/2+f.height+T},{x:N+y/2,y:B+F/2},{x:N-y/2,y:B+F/2},{x:N-y/2,y:B-F/2+f.height+T},{x:N-f.width/2,y:B-F/2+f.height+T}]:P=[{x:N-y/2,y:B-F/2},{x:N+y/2,y:B-F/2},{x:N+y/2,y:B-F/2+g},{x:N+f.width/2,y:B-F/2+g},{x:N+f.width/2/2,y:B+F/2},{x:N-f.width/2,y:B+F/2},{x:N-f.width/2,y:B-F/2+g},{x:N-y/2,y:B-F/2+g}],Ye.polygon(e,P,O)},h}var lQ=M(()=>{"use strict";Wt();vt();Zc();Ht();Ut();Vh();Ft();o(oQ,"iconRounded")});async function cQ(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=Qe(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,halfPadding:d,label:p}=await pt(t,e,"icon-shape default"),m=e.pos==="t",g=l+d*2,y=l+d*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=pc(e),w=-y/2,C=-g/2,T=e.label?8:0,E=Xe.svg(h),A=Ke(e,{});e.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");let S=b.get("fill");A.stroke=S??x;let _=E.path(La(w,C,y,g,.1),A),I=Math.max(y,f.width),D=g+f.height+T,k=E.rectangle(-I/2,-D/2,I,D,{...A,fill:"transparent",stroke:"none"}),L=h.insert(()=>_,":first-child"),R=h.insert(()=>k);if(e.icon){let O=h.append("g");O.html(`${await yo(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let N=O.node().getBBox(),B=N.width,F=N.height,P=N.x,G=N.y;O.attr("transform",`translate(${-B/2-P},${m?f.height/2+T/2-F/2-G:-f.height/2-T/2-F/2-G})`),O.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${m?-D/2:D/2-f.height})`),L.attr("transform",`translate(0,${m?f.height/2+T/2:-f.height/2-T/2})`),je(e,R),e.intersect=function(O){if(Y.info("iconSquare intersect",e,O),!e.label)return Ye.rect(e,O);let N=e.x??0,B=e.y??0,F=e.height??0,P=[];return m?P=[{x:N-f.width/2,y:B-F/2},{x:N+f.width/2,y:B-F/2},{x:N+f.width/2,y:B-F/2+f.height+T},{x:N+y/2,y:B-F/2+f.height+T},{x:N+y/2,y:B+F/2},{x:N-y/2,y:B+F/2},{x:N-y/2,y:B-F/2+f.height+T},{x:N-f.width/2,y:B-F/2+f.height+T}]:P=[{x:N-y/2,y:B-F/2},{x:N+y/2,y:B-F/2},{x:N+y/2,y:B-F/2+g},{x:N+f.width/2,y:B-F/2+g},{x:N+f.width/2/2,y:B+F/2},{x:N-f.width/2,y:B+F/2},{x:N-f.width/2,y:B-F/2+g},{x:N-y/2,y:B-F/2+g}],Ye.polygon(e,P,O)},h}var uQ=M(()=>{"use strict";Wt();vt();Zc();Ht();Vh();Ut();Ft();o(cQ,"iconSquare")});async function hQ(t,e,{config:{flowchart:r}}){let n=new Image;n.src=e?.img??"",await n.decode();let i=Number(n.naturalWidth.toString().replace("px","")),a=Number(n.naturalHeight.toString().replace("px",""));e.imageAspectRatio=i/a;let{labelStyles:s}=Qe(e);e.labelStyle=s;let l=r?.wrappingWidth;e.defaultWidth=r?.wrappingWidth;let u=Math.max(e.label?l??0:0,e?.assetWidth??i),h=e.constraint==="on"&&e?.assetHeight?e.assetHeight*e.imageAspectRatio:u,f=e.constraint==="on"?h/e.imageAspectRatio:e?.assetHeight??a;e.width=Math.max(h,l??0);let{shapeSvg:d,bbox:p,label:m}=await pt(t,e,"image-shape default"),g=e.pos==="t",y=-h/2,v=-f/2,x=e.label?8:0,b=Xe.svg(d),w=Ke(e,{});e.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let C=b.rectangle(y,v,h,f,w),T=Math.max(h,p.width),E=f+p.height+x,A=b.rectangle(-T/2,-E/2,T,E,{...w,fill:"none",stroke:"none"}),S=d.insert(()=>C,":first-child"),_=d.insert(()=>A);if(e.img){let I=d.append("image");I.attr("href",e.img),I.attr("width",h),I.attr("height",f),I.attr("preserveAspectRatio","none"),I.attr("transform",`translate(${-h/2},${g?E/2-f:-E/2})`)}return m.attr("transform",`translate(${-p.width/2-(p.x-(p.left??0))},${g?-f/2-p.height/2-x/2:f/2-p.height/2+x/2})`),S.attr("transform",`translate(0,${g?p.height/2+x/2:-p.height/2-x/2})`),je(e,_),e.intersect=function(I){if(Y.info("iconSquare intersect",e,I),!e.label)return Ye.rect(e,I);let D=e.x??0,k=e.y??0,L=e.height??0,R=[];return g?R=[{x:D-p.width/2,y:k-L/2},{x:D+p.width/2,y:k-L/2},{x:D+p.width/2,y:k-L/2+p.height+x},{x:D+h/2,y:k-L/2+p.height+x},{x:D+h/2,y:k+L/2},{x:D-h/2,y:k+L/2},{x:D-h/2,y:k-L/2+p.height+x},{x:D-p.width/2,y:k-L/2+p.height+x}]:R=[{x:D-h/2,y:k-L/2},{x:D+h/2,y:k-L/2},{x:D+h/2,y:k-L/2+f},{x:D+p.width/2,y:k-L/2+f},{x:D+p.width/2/2,y:k+L/2},{x:D-p.width/2,y:k+L/2},{x:D-p.width/2,y:k-L/2+f},{x:D-h/2,y:k-L/2+f}],Ye.polygon(e,R,I)},d}var fQ=M(()=>{"use strict";Wt();vt();Ht();Ut();Ft();o(hQ,"imageSquare")});async function dQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=[{x:0,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:-3*l/6,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Xe.svg(i),p=Ke(e,{}),m=Xt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=_a(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,je(e,h),e.intersect=function(d){return Ye.polygon(e,u,d)},i}var pQ=M(()=>{"use strict";Ft();Ht();Ut();Wt();Cu();o(dQ,"inv_trapezoid")});async function Au(t,e,r){let{labelStyles:n,nodeStyles:i}=Qe(e);e.labelStyle=n;let{shapeSvg:a,bbox:s}=await pt(t,e,ht(e)),l=Math.max(s.width+r.labelPaddingX*2,e?.width||0),u=Math.max(s.height+r.labelPaddingY*2,e?.height||0),h=-l/2,f=-u/2,d,{rx:p,ry:m}=e,{cssStyles:g}=e;if(r?.rx&&r.ry&&(p=r.rx,m=r.ry),e.look==="handDrawn"){let y=Xe.svg(a),v=Ke(e,{}),x=p||m?y.path(La(h,f,l,u,p||0),v):y.rectangle(h,f,l,u,v);d=a.insert(()=>x,":first-child"),d.attr("class","basic label-container").attr("style",zn(g))}else d=a.insert("rect",":first-child"),d.attr("class","basic label-container").attr("style",i).attr("rx",zn(p)).attr("ry",zn(m)).attr("x",h).attr("y",f).attr("width",l).attr("height",u);return je(e,d),e.intersect=function(y){return Ye.rect(e,y)},a}var um=M(()=>{"use strict";Ft();Ht();Vh();Ut();Wt();sr();o(Au,"drawRect")});async function mQ(t,e){let{shapeSvg:r,bbox:n,label:i}=await pt(t,e,"label"),a=r.insert("rect",":first-child");return a.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),i.attr("transform",`translate(${-(n.width/2)-(n.x-(n.left??0))}, ${-(n.height/2)-(n.y-(n.top??0))})`),je(e,a),e.intersect=function(u){return Ye.rect(e,u)},r}var gQ=M(()=>{"use strict";um();Ft();Ht();o(mQ,"labelRect")});async function yQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=Math.max(a.width+(e.padding??0),e?.width??0),l=Math.max(a.height+(e.padding??0),e?.height??0),u=[{x:0,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:-(3*l)/6,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Xe.svg(i),p=Ke(e,{}),m=Xt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=_a(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,je(e,h),e.intersect=function(d){return Ye.polygon(e,u,d)},i}var vQ=M(()=>{"use strict";Ft();Ht();Ut();Wt();Cu();o(yQ,"lean_left")});async function xQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=Math.max(a.width+(e.padding??0),e?.width??0),l=Math.max(a.height+(e.padding??0),e?.height??0),u=[{x:-3*l/6,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:0,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Xe.svg(i),p=Ke(e,{}),m=Xt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=_a(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,je(e,h),e.intersect=function(d){return Ye.polygon(e,u,d)},i}var bQ=M(()=>{"use strict";Ft();Ht();Ut();Wt();Cu();o(xQ,"lean_right")});function wQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.label="",e.labelStyle=r;let i=t.insert("g").attr("class",ht(e)).attr("id",e.domId??e.id),{cssStyles:a}=e,s=Math.max(35,e?.width??0),l=Math.max(35,e?.height??0),u=7,h=[{x:s,y:0},{x:0,y:l+u/2},{x:s-2*u,y:l+u/2},{x:0,y:2*l},{x:s,y:l-u/2},{x:2*u,y:l-u/2}],f=Xe.svg(i),d=Ke(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=Xt(h),m=f.path(p,d),g=i.insert(()=>m,":first-child");return a&&e.look!=="handDrawn"&&g.selectAll("path").attr("style",a),n&&e.look!=="handDrawn"&&g.selectAll("path").attr("style",n),g.attr("transform",`translate(-${s/2},${-l})`),je(e,g),e.intersect=function(y){return Y.info("lightningBolt intersect",e,y),Ye.polygon(e,h,y)},i}var TQ=M(()=>{"use strict";vt();Ft();Ut();Wt();Ht();Ft();o(wQ,"lightningBolt")});async function kQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0),e.width??0),u=l/2,h=u/(2.5+l/50),f=Math.max(a.height+h+(e.padding??0),e.height??0),d=f*.1,p,{cssStyles:m}=e;if(e.look==="handDrawn"){let g=Xe.svg(i),y=G8e(0,0,l,f,u,h,d),v=$8e(0,h,l,f,u,h),x=Ke(e,{}),b=g.path(y,x),w=g.path(v,x);i.insert(()=>w,":first-child").attr("class","line"),p=i.insert(()=>b,":first-child"),p.attr("class","basic label-container"),m&&p.attr("style",m)}else{let g=z8e(0,0,l,f,u,h,d);p=i.insert("path",":first-child").attr("d",g).attr("class","basic label-container").attr("style",zn(m)).attr("style",n)}return p.attr("label-offset-y",h),p.attr("transform",`translate(${-l/2}, ${-(f/2+h)})`),je(e,p),s.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+h-(a.y-(a.top??0))})`),e.intersect=function(g){let y=Ye.rect(e,g),v=y.x-(e.x??0);if(u!=0&&(Math.abs(v)<(e.width??0)/2||Math.abs(v)==(e.width??0)/2&&Math.abs(y.y-(e.y??0))>(e.height??0)/2-h)){let x=h*h*(1-v*v/(u*u));x>0&&(x=Math.sqrt(x)),x=h-x,g.y-(e.y??0)>0&&(x=-x),y.y+=x}return y},i}var z8e,G8e,$8e,EQ=M(()=>{"use strict";Ft();Ht();Ut();Wt();sr();z8e=o((t,e,r,n,i,a,s)=>[`M${t},${e+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${t},${e+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createCylinderPathD"),G8e=o((t,e,r,n,i,a,s)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${t},${e+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createOuterCylinderPathD"),$8e=o((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");o(kQ,"linedCylinder")});async function SQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=u+h,{cssStyles:d}=e,p=Xe.svg(i),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-l/2-l/2*.1,y:-f/2},{x:-l/2-l/2*.1,y:f/2},...Io(-l/2-l/2*.1,f/2,l/2+l/2*.1,f/2,h,.8),{x:l/2+l/2*.1,y:-f/2},{x:-l/2-l/2*.1,y:-f/2},{x:-l/2,y:-f/2},{x:-l/2,y:f/2*1.1},{x:-l/2,y:-f/2}],y=p.polygon(g.map(x=>[x.x,x.y]),m),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)+l/2*.1/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h/2-(a.y-(a.top??0))})`),je(e,v),e.intersect=function(x){return Ye.polygon(e,g,x)},i}var CQ=M(()=>{"use strict";Ft();Ht();Wt();Ut();o(SQ,"linedWaveEdgedRect")});async function AQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=5,f=-l/2,d=-u/2,{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{}),y=[{x:f-h,y:d+h},{x:f-h,y:d+u+h},{x:f+l-h,y:d+u+h},{x:f+l-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d+u-h},{x:f+l+h,y:d+u-h},{x:f+l+h,y:d-h},{x:f+h,y:d-h},{x:f+h,y:d},{x:f,y:d},{x:f,y:d+h}],v=[{x:f,y:d+h},{x:f+l-h,y:d+h},{x:f+l-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d},{x:f,y:d}];e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=Xt(y),b=m.path(x,g),w=Xt(v),C=m.path(w,{...g,fill:"none"}),T=i.insert(()=>C,":first-child");return T.insert(()=>b,":first-child"),T.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",n),s.attr("transform",`translate(${-(a.width/2)-h-(a.x-(a.left??0))}, ${-(a.height/2)+h-(a.y-(a.top??0))})`),je(e,T),e.intersect=function(E){return Ye.polygon(e,y,E)},i}var _Q=M(()=>{"use strict";Ft();Ut();Wt();Ht();o(AQ,"multiRect")});async function DQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=u+h,d=-l/2,p=-f/2,m=5,{cssStyles:g}=e,y=Io(d-m,p+f+m,d+l-m,p+f+m,h,.8),v=y?.[y.length-1],x=[{x:d-m,y:p+m},{x:d-m,y:p+f+m},...y,{x:d+l-m,y:v.y-m},{x:d+l,y:v.y-m},{x:d+l,y:v.y-2*m},{x:d+l+m,y:v.y-2*m},{x:d+l+m,y:p-m},{x:d+m,y:p-m},{x:d+m,y:p},{x:d,y:p},{x:d,y:p+m}],b=[{x:d,y:p+m},{x:d+l-m,y:p+m},{x:d+l-m,y:v.y-m},{x:d+l,y:v.y-m},{x:d+l,y:p},{x:d,y:p}],w=Xe.svg(i),C=Ke(e,{});e.look!=="handDrawn"&&(C.roughness=0,C.fillStyle="solid");let T=Xt(x),E=w.path(T,C),A=Xt(b),S=w.path(A,C),_=i.insert(()=>E,":first-child");return _.insert(()=>S),_.attr("class","basic label-container"),g&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",g),n&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",n),_.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-(a.width/2)-m-(a.x-(a.left??0))}, ${-(a.height/2)+m-h/2-(a.y-(a.top??0))})`),je(e,_),e.intersect=function(I){return Ye.polygon(e,x,I)},i}var LQ=M(()=>{"use strict";Ft();Ht();Wt();Ut();o(DQ,"multiWaveEdgedRectangle")});async function RQ(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=Qe(e);e.labelStyle=n,e.useHtmlLabels||mr().flowchart?.htmlLabels!==!1||(e.centerLabel=!0);let{shapeSvg:s,bbox:l}=await pt(t,e,ht(e)),u=Math.max(l.width+(e.padding??0)*2,e?.width??0),h=Math.max(l.height+(e.padding??0)*2,e?.height??0),f=-u/2,d=-h/2,{cssStyles:p}=e,m=Xe.svg(s),g=Ke(e,{fill:r.noteBkgColor,stroke:r.noteBorderColor});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=m.rectangle(f,d,u,h,g),v=s.insert(()=>y,":first-child");return v.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",p),i&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",i),je(e,v),e.intersect=function(x){return Ye.rect(e,x)},s}var NQ=M(()=>{"use strict";Wt();Ht();Ut();Ft();ka();o(RQ,"note")});async function MQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=a.width+e.padding,l=a.height+e.padding,u=s+l,h=[{x:u/2,y:0},{x:u,y:-u/2},{x:u/2,y:-u},{x:0,y:-u/2}],f,{cssStyles:d}=e;if(e.look==="handDrawn"){let p=Xe.svg(i),m=Ke(e,{}),g=V8e(0,0,u),y=p.path(g,m);f=i.insert(()=>y,":first-child").attr("transform",`translate(${-u/2}, ${u/2})`),d&&f.attr("style",d)}else f=_a(i,u,u,h);return n&&f.attr("style",n),je(e,f),e.intersect=function(p){return Y.debug(`APA12 Intersect called SPLIT point:`,p,` node: `,e,` -res:`,qe.polygon(e,h,p)),qe.polygon(e,h,p)},i}var vAe,nQ=M(()=>{"use strict";ht();Ft();qt();Xt();jt();Su();vAe=o((t,e,r)=>[`M${t+r/2},${e}`,`L${t+r},${e-r/2}`,`L${t+r/2},${e-r}`,`L${t},${e-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");o(rQ,"question")});async function iQ(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ot(t,e,lt(e)),l=Math.max(a.width+(e.padding??0),e?.width??0),u=Math.max(a.height+(e.padding??0),e?.height??0),h=-l/2,f=-u/2,d=f/2,p=[{x:h+d,y:f},{x:h,y:0},{x:h+d,y:-f},{x:-h,y:-f},{x:-h,y:f}],{cssStyles:m}=e,g=Ke.svg(i),y=Ze(e,{});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=Wt(p),x=g.path(v,y),b=i.insert(()=>x,":first-child");return b.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",m),n&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",n),b.attr("transform",`translate(${-d/2},0)`),s.attr("transform",`translate(${-d/2-a.width/2-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),Qe(e,b),e.intersect=function(w){return qe.polygon(e,p,w)},i}var aQ=M(()=>{"use strict";Ft();qt();Xt();jt();o(iQ,"rect_left_inv_arrow")});function xAe(t,e){e&&t.attr("style",e)}async function bAe(t){let e=ze(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),n=t.label;t.label&&pi(t.label)&&(n=await hh(t.label.replace(je.lineBreakRegex,` -`),de()));let i=t.isNode?"nodeLabel":"edgeLabel";return r.html('"+n+""),xAe(r,t.labelStyle),r.style("display","inline-block"),r.style("padding-right","1px"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}var wAe,gc,I5=M(()=>{"use strict";mr();ht();Vt();fr();hr();o(xAe,"applyStyle");o(bAe,"addHtmlLabel");wAe=o(async(t,e,r,n)=>{let i=t||"";if(typeof i=="object"&&(i=i[0]),xr(de().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),Y.info("vertexText"+i);let a={isNode:n,label:Ca(i).replace(/fa[blrs]?:fa-[\w-]+/g,l=>``),labelStyle:e&&e.replace("fill:","color:")};return await bAe(a)}else{let a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",e.replace("color:","fill:"));let s=[];typeof i=="string"?s=i.split(/\\n|\n|/gi):Array.isArray(i)?s=i:s=[];for(let l of s){let u=document.createElementNS("http://www.w3.org/2000/svg","tspan");u.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),u.setAttribute("dy","1em"),u.setAttribute("x","0"),r?u.setAttribute("class","title-row"):u.setAttribute("class","row"),u.textContent=l.trim(),a.appendChild(u)}return a}},"createLabel"),gc=wAe});async function sQ(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let i;e.cssClasses?i="node "+e.cssClasses:i="node default";let a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=a.insert("g"),l=a.insert("g").attr("class","label").attr("style",n),u=e.description,h=e.label,f=l.node().appendChild(await gc(h,e.labelStyle,!0,!0)),d={width:0,height:0};if(xr(de()?.flowchart?.htmlLabels)){let C=f.children[0],A=ze(f);d=C.getBoundingClientRect(),A.attr("width",d.width),A.attr("height",d.height)}Y.info("Text 2",u);let p=u||[],m=f.getBBox(),g=l.node().appendChild(await gc(p.join?p.join("
    "):p,e.labelStyle,!0,!0)),y=g.children[0],v=ze(g);d=y.getBoundingClientRect(),v.attr("width",d.width),v.attr("height",d.height);let x=(e.padding||0)/2;ze(g).attr("transform","translate( "+(d.width>m.width?0:(m.width-d.width)/2)+", "+(m.height+x+5)+")"),ze(f).attr("transform","translate( "+(d.width(Y.debug("Rough node insert CXC",I),D),":first-child"),E=a.insert(()=>(Y.debug("Rough node insert CXC",I),I),":first-child")}else E=s.insert("rect",":first-child"),L=s.insert("line"),E.attr("class","outer title-state").attr("style",n).attr("x",-d.width/2-x).attr("y",-d.height/2-x).attr("width",d.width+(e.padding||0)).attr("height",d.height+(e.padding||0)),L.attr("class","divider").attr("x1",-d.width/2-x).attr("x2",d.width/2+x).attr("y1",-d.height/2-x+m.height+x).attr("y2",-d.height/2-x+m.height+x);return Qe(e,E),e.intersect=function(C){return qe.rect(e,C)},a}var oQ=M(()=>{"use strict";mr();fr();Ft();I5();qt();Xt();jt();Vt();zh();ht();o(sQ,"rectWithTitle")});async function lQ(t,e){let r={rx:5,ry:5,classes:"",labelPaddingX:(e?.padding||0)*1,labelPaddingY:(e?.padding||0)*1};return Cd(t,e,r)}var cQ=M(()=>{"use strict";vv();o(lQ,"roundedRect")});async function uQ(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ot(t,e,lt(e)),l=e?.padding??0,u=Math.max(a.width+(e.padding??0)*2,e?.width??0),h=Math.max(a.height+(e.padding??0)*2,e?.height??0),f=-a.width/2-l,d=-a.height/2-l,{cssStyles:p}=e,m=Ke.svg(i),g=Ze(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:f,y:d},{x:f+u+8,y:d},{x:f+u+8,y:d+h},{x:f-8,y:d+h},{x:f-8,y:d},{x:f,y:d},{x:f,y:d+h}],v=m.polygon(y.map(b=>[b.x,b.y]),g),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container").attr("style",Fn(p)),n&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),p&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),s.attr("transform",`translate(${-u/2+4+(e.padding??0)-(a.x-(a.left??0))},${-h/2+(e.padding??0)-(a.y-(a.top??0))})`),Qe(e,x),e.intersect=function(b){return qe.rect(e,b)},i}var hQ=M(()=>{"use strict";Ft();qt();Xt();jt();hr();o(uQ,"shadedProcess")});async function fQ(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ot(t,e,lt(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=-l/2,f=-u/2,{cssStyles:d}=e,p=Ke.svg(i),m=Ze(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:h,y:f},{x:h,y:f+u},{x:h+l,y:f+u},{x:h+l,y:f-u/2}],y=Wt(g),v=p.path(y,m),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),x.attr("transform",`translate(0, ${u/4})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))}, ${-u/4+(e.padding??0)-(a.y-(a.top??0))})`),Qe(e,x),e.intersect=function(b){return qe.polygon(e,g,b)},i}var dQ=M(()=>{"use strict";Ft();qt();Xt();jt();o(fQ,"slopedRect")});async function pQ(t,e){let r={rx:0,ry:0,classes:"",labelPaddingX:(e?.padding||0)*2,labelPaddingY:(e?.padding||0)*1};return Cd(t,e,r)}var mQ=M(()=>{"use strict";vv();o(pQ,"squareRect")});async function gQ(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ot(t,e,lt(e)),s=a.height+e.padding,l=a.width+s/4+e.padding,u,{cssStyles:h}=e;if(e.look==="handDrawn"){let f=Ke.svg(i),d=Ze(e,{}),p=La(-l/2,-s/2,l,s,s/2),m=f.path(p,d);u=i.insert(()=>m,":first-child"),u.attr("class","basic label-container").attr("style",Fn(h))}else u=i.insert("rect",":first-child"),u.attr("class","basic label-container").attr("style",n).attr("rx",s/2).attr("ry",s/2).attr("x",-l/2).attr("y",-s/2).attr("width",l).attr("height",s);return Qe(e,u),e.intersect=function(f){return qe.rect(e,f)},i}var yQ=M(()=>{"use strict";Ft();qt();Xt();jt();zh();hr();o(gQ,"stadium")});async function vQ(t,e){return Cd(t,e,{rx:5,ry:5,classes:"flowchart-node"})}var xQ=M(()=>{"use strict";vv();o(vQ,"state")});function bQ(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=et(e);e.labelStyle=n;let{cssStyles:a}=e,{lineColor:s,stateBorder:l,nodeBorder:u}=r,h=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),f=Ke.svg(h),d=Ze(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=f.circle(0,0,14,{...d,stroke:s,strokeWidth:2}),m=l??u,g=f.circle(0,0,5,{...d,fill:m,stroke:m,strokeWidth:2,fillStyle:"solid"}),y=h.insert(()=>p,":first-child");return y.insert(()=>g),a&&y.selectAll("path").attr("style",a),i&&y.selectAll("path").attr("style",i),Qe(e,y),e.intersect=function(v){return qe.circle(e,7,v)},h}var wQ=M(()=>{"use strict";jt();qt();Xt();Ft();o(bQ,"stateEnd")});function TQ(t,e,{config:{themeVariables:r}}){let{lineColor:n}=r,i=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a;if(e.look==="handDrawn"){let l=Ke.svg(i).circle(0,0,14,Cj(n));a=i.insert(()=>l),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14)}else a=i.insert("circle",":first-child"),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14);return Qe(e,a),e.intersect=function(s){return qe.circle(e,7,s)},i}var kQ=M(()=>{"use strict";jt();qt();Xt();Ft();o(TQ,"stateStart")});async function EQ(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ot(t,e,lt(e)),s=(e?.padding||0)/2,l=a.width+e.padding,u=a.height+e.padding,h=-a.width/2-s,f=-a.height/2-s,d=[{x:0,y:0},{x:l,y:0},{x:l,y:-u},{x:0,y:-u},{x:0,y:0},{x:-8,y:0},{x:l+8,y:0},{x:l+8,y:-u},{x:-8,y:-u},{x:-8,y:0}];if(e.look==="handDrawn"){let p=Ke.svg(i),m=Ze(e,{}),g=p.rectangle(h-8,f,l+16,u,m),y=p.line(h,f,h,f+u,m),v=p.line(h+l,f,h+l,f+u,m);i.insert(()=>y,":first-child"),i.insert(()=>v,":first-child");let x=i.insert(()=>g,":first-child"),{cssStyles:b}=e;x.attr("class","basic label-container").attr("style",Fn(b)),Qe(e,x)}else{let p=Aa(i,l,u,d);n&&p.attr("style",n),Qe(e,p)}return e.intersect=function(p){return qe.polygon(e,d,p)},i}var SQ=M(()=>{"use strict";Ft();qt();Xt();jt();Su();hr();o(EQ,"subroutine")});async function CQ(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ot(t,e,lt(e)),s=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=-s/2,h=-l/2,f=.2*l,d=.2*l,{cssStyles:p}=e,m=Ke.svg(i),g=Ze(e,{}),y=[{x:u-f/2,y:h},{x:u+s+f/2,y:h},{x:u+s+f/2,y:h+l},{x:u-f/2,y:h+l}],v=[{x:u+s-f/2,y:h+l},{x:u+s+f/2,y:h+l},{x:u+s+f/2,y:h+l-d}];e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=Wt(y),b=m.path(x,g),w=Wt(v),_=m.path(w,{...g,fillStyle:"solid"}),T=i.insert(()=>_,":first-child");return T.insert(()=>b,":first-child"),T.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",n),Qe(e,T),e.intersect=function(E){return qe.polygon(e,y,E)},i}var AQ=M(()=>{"use strict";Ft();Xt();jt();qt();o(CQ,"taggedRect")});async function _Q(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ot(t,e,lt(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=.2*l,d=.2*u,p=u+h,{cssStyles:m}=e,g=Ke.svg(i),y=Ze(e,{});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-l/2-l/2*.1,y:p/2},...zo(-l/2-l/2*.1,p/2,l/2+l/2*.1,p/2,h,.8),{x:l/2+l/2*.1,y:-p/2},{x:-l/2-l/2*.1,y:-p/2}],x=-l/2+l/2*.1,b=-p/2-d*.4,w=[{x:x+l-f,y:(b+u)*1.4},{x:x+l,y:b+u-d},{x:x+l,y:(b+u)*.9},...zo(x+l,(b+u)*1.3,x+l-f,(b+u)*1.5,-u*.03,.5)],_=Wt(v),T=g.path(_,y),E=Wt(w),L=g.path(E,{...y,fillStyle:"solid"}),C=i.insert(()=>L,":first-child");return C.insert(()=>T,":first-child"),C.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",m),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h/2-(a.y-(a.top??0))})`),Qe(e,C),e.intersect=function(A){return qe.polygon(e,v,A)},i}var LQ=M(()=>{"use strict";Ft();qt();jt();Xt();o(_Q,"taggedWaveEdgedRectangle")});async function DQ(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ot(t,e,lt(e)),s=Math.max(a.width+e.padding,e?.width||0),l=Math.max(a.height+e.padding,e?.height||0),u=-s/2,h=-l/2,f=i.insert("rect",":first-child");return f.attr("class","text").attr("style",n).attr("rx",0).attr("ry",0).attr("x",u).attr("y",h).attr("width",s).attr("height",l),Qe(e,f),e.intersect=function(d){return qe.rect(e,d)},i}var NQ=M(()=>{"use strict";Ft();qt();Xt();o(DQ,"text")});async function RQ(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s,halfPadding:l}=await ot(t,e,lt(e)),u=e.look==="neo"?l*2:l,h=a.height+u,f=h/2,d=f/(2.5+h/50),p=a.width+d+u,{cssStyles:m}=e,g;if(e.look==="handDrawn"){let y=Ke.svg(i),v=kAe(0,0,p,h,d,f),x=EAe(0,0,p,h,d,f),b=y.path(v,Ze(e,{})),w=y.path(x,Ze(e,{fill:"none"}));g=i.insert(()=>w,":first-child"),g=i.insert(()=>b,":first-child"),g.attr("class","basic label-container"),m&&g.attr("style",m)}else{let y=TAe(0,0,p,h,d,f);g=i.insert("path",":first-child").attr("d",y).attr("class","basic label-container").attr("style",Fn(m)).attr("style",n),g.attr("class","basic label-container"),m&&g.selectAll("path").attr("style",m),n&&g.selectAll("path").attr("style",n)}return g.attr("label-offset-x",d),g.attr("transform",`translate(${-p/2}, ${h/2} )`),s.attr("transform",`translate(${-(a.width/2)-d-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),Qe(e,g),e.intersect=function(y){let v=qe.rect(e,y),x=v.y-(e.y??0);if(f!=0&&(Math.abs(x)<(e.height??0)/2||Math.abs(x)==(e.height??0)/2&&Math.abs(v.x-(e.x??0))>(e.width??0)/2-d)){let b=d*d*(1-x*x/(f*f));b!=0&&(b=Math.sqrt(Math.abs(b))),b=d-b,y.x-(e.x??0)>0&&(b=-b),v.x+=b}return v},i}var TAe,kAe,EAe,MQ=M(()=>{"use strict";Ft();Xt();jt();qt();hr();TAe=o((t,e,r,n,i,a)=>`M${t},${e} +res:`,Ye.polygon(e,h,p)),Ye.polygon(e,h,p)},i}var V8e,IQ=M(()=>{"use strict";vt();Ft();Ht();Ut();Wt();Cu();V8e=o((t,e,r)=>[`M${t+r/2},${e}`,`L${t+r},${e-r/2}`,`L${t+r/2},${e-r}`,`L${t},${e-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");o(MQ,"question")});async function OQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0),e?.width??0),u=Math.max(a.height+(e.padding??0),e?.height??0),h=-l/2,f=-u/2,d=f/2,p=[{x:h+d,y:f},{x:h,y:0},{x:h+d,y:-f},{x:-h,y:-f},{x:-h,y:f}],{cssStyles:m}=e,g=Xe.svg(i),y=Ke(e,{});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=Xt(p),x=g.path(v,y),b=i.insert(()=>x,":first-child");return b.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",m),n&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",n),b.attr("transform",`translate(${-d/2},0)`),s.attr("transform",`translate(${-d/2-a.width/2-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),je(e,b),e.intersect=function(w){return Ye.polygon(e,p,w)},i}var PQ=M(()=>{"use strict";Ft();Ht();Ut();Wt();o(OQ,"rect_left_inv_arrow")});function U8e(t,e){e&&t.attr("style",e)}async function H8e(t){let e=$e(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),n=t.label;t.label&&di(t.label)&&(n=await hh(t.label.replace(Ze.lineBreakRegex,` +`),me()));let i=t.isNode?"nodeLabel":"edgeLabel";return r.html('"+n+""),U8e(r,t.labelStyle),r.style("display","inline-block"),r.style("padding-right","1px"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}var W8e,mc,Rw=M(()=>{"use strict";hr();vt();Gt();gr();sr();o(U8e,"applyStyle");o(H8e,"addHtmlLabel");W8e=o(async(t,e,r,n)=>{let i=t||"";if(typeof i=="object"&&(i=i[0]),ur(me().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),Y.info("vertexText"+i);let a={isNode:n,label:ta(i).replace(/fa[blrs]?:fa-[\w-]+/g,l=>``),labelStyle:e&&e.replace("fill:","color:")};return await H8e(a)}else{let a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",e.replace("color:","fill:"));let s=[];typeof i=="string"?s=i.split(/\\n|\n|/gi):Array.isArray(i)?s=i:s=[];for(let l of s){let u=document.createElementNS("http://www.w3.org/2000/svg","tspan");u.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),u.setAttribute("dy","1em"),u.setAttribute("x","0"),r?u.setAttribute("class","title-row"):u.setAttribute("class","row"),u.textContent=l.trim(),a.appendChild(u)}return a}},"createLabel"),mc=W8e});async function BQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let i;e.cssClasses?i="node "+e.cssClasses:i="node default";let a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=a.insert("g"),l=a.insert("g").attr("class","label").attr("style",n),u=e.description,h=e.label,f=l.node().appendChild(await mc(h,e.labelStyle,!0,!0)),d={width:0,height:0};if(ur(me()?.flowchart?.htmlLabels)){let S=f.children[0],_=$e(f);d=S.getBoundingClientRect(),_.attr("width",d.width),_.attr("height",d.height)}Y.info("Text 2",u);let p=u||[],m=f.getBBox(),g=l.node().appendChild(await mc(p.join?p.join("
    "):p,e.labelStyle,!0,!0)),y=g.children[0],v=$e(g);d=y.getBoundingClientRect(),v.attr("width",d.width),v.attr("height",d.height);let x=(e.padding||0)/2;$e(g).attr("transform","translate( "+(d.width>m.width?0:(m.width-d.width)/2)+", "+(m.height+x+5)+")"),$e(f).attr("transform","translate( "+(d.width(Y.debug("Rough node insert CXC",I),D),":first-child"),E=a.insert(()=>(Y.debug("Rough node insert CXC",I),I),":first-child")}else E=s.insert("rect",":first-child"),A=s.insert("line"),E.attr("class","outer title-state").attr("style",n).attr("x",-d.width/2-x).attr("y",-d.height/2-x).attr("width",d.width+(e.padding||0)).attr("height",d.height+(e.padding||0)),A.attr("class","divider").attr("x1",-d.width/2-x).attr("x2",d.width/2+x).attr("y1",-d.height/2-x+m.height+x).attr("y2",-d.height/2-x+m.height+x);return je(e,E),e.intersect=function(S){return Ye.rect(e,S)},a}var FQ=M(()=>{"use strict";hr();gr();Ft();Rw();Ht();Ut();Wt();Gt();Vh();vt();o(BQ,"rectWithTitle")});async function zQ(t,e){let r={rx:5,ry:5,classes:"",labelPaddingX:(e?.padding||0)*1,labelPaddingY:(e?.padding||0)*1};return Au(t,e,r)}var GQ=M(()=>{"use strict";um();o(zQ,"roundedRect")});async function $Q(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=e?.padding??0,u=Math.max(a.width+(e.padding??0)*2,e?.width??0),h=Math.max(a.height+(e.padding??0)*2,e?.height??0),f=-a.width/2-l,d=-a.height/2-l,{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:f,y:d},{x:f+u+8,y:d},{x:f+u+8,y:d+h},{x:f-8,y:d+h},{x:f-8,y:d},{x:f,y:d},{x:f,y:d+h}],v=m.polygon(y.map(b=>[b.x,b.y]),g),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container").attr("style",zn(p)),n&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),p&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),s.attr("transform",`translate(${-u/2+4+(e.padding??0)-(a.x-(a.left??0))},${-h/2+(e.padding??0)-(a.y-(a.top??0))})`),je(e,x),e.intersect=function(b){return Ye.rect(e,b)},i}var VQ=M(()=>{"use strict";Ft();Ht();Ut();Wt();sr();o($Q,"shadedProcess")});async function UQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=-l/2,f=-u/2,{cssStyles:d}=e,p=Xe.svg(i),m=Ke(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:h,y:f},{x:h,y:f+u},{x:h+l,y:f+u},{x:h+l,y:f-u/2}],y=Xt(g),v=p.path(y,m),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),x.attr("transform",`translate(0, ${u/4})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))}, ${-u/4+(e.padding??0)-(a.y-(a.top??0))})`),je(e,x),e.intersect=function(b){return Ye.polygon(e,g,b)},i}var HQ=M(()=>{"use strict";Ft();Ht();Ut();Wt();o(UQ,"slopedRect")});async function WQ(t,e){let r={rx:0,ry:0,classes:"",labelPaddingX:(e?.padding||0)*2,labelPaddingY:(e?.padding||0)*1};return Au(t,e,r)}var qQ=M(()=>{"use strict";um();o(WQ,"squareRect")});async function YQ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=a.height+e.padding,l=a.width+s/4+e.padding,u,{cssStyles:h}=e;if(e.look==="handDrawn"){let f=Xe.svg(i),d=Ke(e,{}),p=La(-l/2,-s/2,l,s,s/2),m=f.path(p,d);u=i.insert(()=>m,":first-child"),u.attr("class","basic label-container").attr("style",zn(h))}else u=i.insert("rect",":first-child"),u.attr("class","basic label-container").attr("style",n).attr("rx",s/2).attr("ry",s/2).attr("x",-l/2).attr("y",-s/2).attr("width",l).attr("height",s);return je(e,u),e.intersect=function(f){return Ye.rect(e,f)},i}var XQ=M(()=>{"use strict";Ft();Ht();Ut();Wt();Vh();sr();o(YQ,"stadium")});async function jQ(t,e){return Au(t,e,{rx:5,ry:5,classes:"flowchart-node"})}var KQ=M(()=>{"use strict";um();o(jQ,"state")});function QQ(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=Qe(e);e.labelStyle=n;let{cssStyles:a}=e,{lineColor:s,stateBorder:l,nodeBorder:u}=r,h=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),f=Xe.svg(h),d=Ke(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=f.circle(0,0,14,{...d,stroke:s,strokeWidth:2}),m=l??u,g=f.circle(0,0,5,{...d,fill:m,stroke:m,strokeWidth:2,fillStyle:"solid"}),y=h.insert(()=>p,":first-child");return y.insert(()=>g),a&&y.selectAll("path").attr("style",a),i&&y.selectAll("path").attr("style",i),je(e,y),e.intersect=function(v){return Ye.circle(e,7,v)},h}var ZQ=M(()=>{"use strict";Wt();Ht();Ut();Ft();o(QQ,"stateEnd")});function JQ(t,e,{config:{themeVariables:r}}){let{lineColor:n}=r,i=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a;if(e.look==="handDrawn"){let l=Xe.svg(i).circle(0,0,14,nK(n));a=i.insert(()=>l),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14)}else a=i.insert("circle",":first-child"),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14);return je(e,a),e.intersect=function(s){return Ye.circle(e,7,s)},i}var eZ=M(()=>{"use strict";Wt();Ht();Ut();Ft();o(JQ,"stateStart")});async function tZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=(e?.padding||0)/2,l=a.width+e.padding,u=a.height+e.padding,h=-a.width/2-s,f=-a.height/2-s,d=[{x:0,y:0},{x:l,y:0},{x:l,y:-u},{x:0,y:-u},{x:0,y:0},{x:-8,y:0},{x:l+8,y:0},{x:l+8,y:-u},{x:-8,y:-u},{x:-8,y:0}];if(e.look==="handDrawn"){let p=Xe.svg(i),m=Ke(e,{}),g=p.rectangle(h-8,f,l+16,u,m),y=p.line(h,f,h,f+u,m),v=p.line(h+l,f,h+l,f+u,m);i.insert(()=>y,":first-child"),i.insert(()=>v,":first-child");let x=i.insert(()=>g,":first-child"),{cssStyles:b}=e;x.attr("class","basic label-container").attr("style",zn(b)),je(e,x)}else{let p=_a(i,l,u,d);n&&p.attr("style",n),je(e,p)}return e.intersect=function(p){return Ye.polygon(e,d,p)},i}var rZ=M(()=>{"use strict";Ft();Ht();Ut();Wt();Cu();sr();o(tZ,"subroutine")});async function nZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=-s/2,h=-l/2,f=.2*l,d=.2*l,{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{}),y=[{x:u-f/2,y:h},{x:u+s+f/2,y:h},{x:u+s+f/2,y:h+l},{x:u-f/2,y:h+l}],v=[{x:u+s-f/2,y:h+l},{x:u+s+f/2,y:h+l},{x:u+s+f/2,y:h+l-d}];e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=Xt(y),b=m.path(x,g),w=Xt(v),C=m.path(w,{...g,fillStyle:"solid"}),T=i.insert(()=>C,":first-child");return T.insert(()=>b,":first-child"),T.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",n),je(e,T),e.intersect=function(E){return Ye.polygon(e,y,E)},i}var iZ=M(()=>{"use strict";Ft();Ut();Wt();Ht();o(nZ,"taggedRect")});async function aZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=.2*l,d=.2*u,p=u+h,{cssStyles:m}=e,g=Xe.svg(i),y=Ke(e,{});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-l/2-l/2*.1,y:p/2},...Io(-l/2-l/2*.1,p/2,l/2+l/2*.1,p/2,h,.8),{x:l/2+l/2*.1,y:-p/2},{x:-l/2-l/2*.1,y:-p/2}],x=-l/2+l/2*.1,b=-p/2-d*.4,w=[{x:x+l-f,y:(b+u)*1.4},{x:x+l,y:b+u-d},{x:x+l,y:(b+u)*.9},...Io(x+l,(b+u)*1.3,x+l-f,(b+u)*1.5,-u*.03,.5)],C=Xt(v),T=g.path(C,y),E=Xt(w),A=g.path(E,{...y,fillStyle:"solid"}),S=i.insert(()=>A,":first-child");return S.insert(()=>T,":first-child"),S.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",m),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h/2-(a.y-(a.top??0))})`),je(e,S),e.intersect=function(_){return Ye.polygon(e,v,_)},i}var sZ=M(()=>{"use strict";Ft();Ht();Wt();Ut();o(aZ,"taggedWaveEdgedRectangle")});async function oZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=Math.max(a.width+e.padding,e?.width||0),l=Math.max(a.height+e.padding,e?.height||0),u=-s/2,h=-l/2,f=i.insert("rect",":first-child");return f.attr("class","text").attr("style",n).attr("rx",0).attr("ry",0).attr("x",u).attr("y",h).attr("width",s).attr("height",l),je(e,f),e.intersect=function(d){return Ye.rect(e,d)},i}var lZ=M(()=>{"use strict";Ft();Ht();Ut();o(oZ,"text")});async function cZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s,halfPadding:l}=await pt(t,e,ht(e)),u=e.look==="neo"?l*2:l,h=a.height+u,f=h/2,d=f/(2.5+h/50),p=a.width+d+u,{cssStyles:m}=e,g;if(e.look==="handDrawn"){let y=Xe.svg(i),v=Y8e(0,0,p,h,d,f),x=X8e(0,0,p,h,d,f),b=y.path(v,Ke(e,{})),w=y.path(x,Ke(e,{fill:"none"}));g=i.insert(()=>w,":first-child"),g=i.insert(()=>b,":first-child"),g.attr("class","basic label-container"),m&&g.attr("style",m)}else{let y=q8e(0,0,p,h,d,f);g=i.insert("path",":first-child").attr("d",y).attr("class","basic label-container").attr("style",zn(m)).attr("style",n),g.attr("class","basic label-container"),m&&g.selectAll("path").attr("style",m),n&&g.selectAll("path").attr("style",n)}return g.attr("label-offset-x",d),g.attr("transform",`translate(${-p/2}, ${h/2} )`),s.attr("transform",`translate(${-(a.width/2)-d-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),je(e,g),e.intersect=function(y){let v=Ye.rect(e,y),x=v.y-(e.y??0);if(f!=0&&(Math.abs(x)<(e.height??0)/2||Math.abs(x)==(e.height??0)/2&&Math.abs(v.x-(e.x??0))>(e.width??0)/2-d)){let b=d*d*(1-x*x/(f*f));b!=0&&(b=Math.sqrt(Math.abs(b))),b=d-b,y.x-(e.x??0)>0&&(b=-b),v.x+=b}return v},i}var q8e,Y8e,X8e,uZ=M(()=>{"use strict";Ft();Ut();Wt();Ht();sr();q8e=o((t,e,r,n,i,a)=>`M${t},${e} a${i},${a} 0,0,1 0,${-n} l${r},0 a${i},${a} 0,0,1 0,${n} M${r},${-n} a${i},${a} 0,0,0 0,${n} - l${-r},0`,"createCylinderPathD"),kAe=o((t,e,r,n,i,a)=>[`M${t},${e}`,`M${t+r},${e}`,`a${i},${a} 0,0,0 0,${-n}`,`l${-r},0`,`a${i},${a} 0,0,0 0,${n}`,`l${r},0`].join(" "),"createOuterCylinderPathD"),EAe=o((t,e,r,n,i,a)=>[`M${t+r/2},${-n/2}`,`a${i},${a} 0,0,0 0,${n}`].join(" "),"createInnerCylinderPathD");o(RQ,"tiltedCylinder")});async function IQ(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ot(t,e,lt(e)),s=a.width+e.padding,l=a.height+e.padding,u=[{x:-3*l/6,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:0,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ke.svg(i),p=Ze(e,{}),m=Wt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=Aa(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,Qe(e,h),e.intersect=function(d){return qe.polygon(e,u,d)},i}var OQ=M(()=>{"use strict";Ft();qt();Xt();jt();Su();o(IQ,"trapezoid")});async function PQ(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ot(t,e,lt(e)),s=60,l=20,u=Math.max(s,a.width+(e.padding??0)*2,e?.width??0),h=Math.max(l,a.height+(e.padding??0)*2,e?.height??0),{cssStyles:f}=e,d=Ke.svg(i),p=Ze(e,{});e.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let m=[{x:-u/2*.8,y:-h/2},{x:u/2*.8,y:-h/2},{x:u/2,y:-h/2*.6},{x:u/2,y:h/2},{x:-u/2,y:h/2},{x:-u/2,y:-h/2*.6}],g=Wt(m),y=d.path(g,p),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",f),n&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",n),Qe(e,v),e.intersect=function(x){return qe.polygon(e,m,x)},i}var BQ=M(()=>{"use strict";Ft();qt();Xt();jt();o(PQ,"trapezoidalPentagon")});async function FQ(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ot(t,e,lt(e)),l=xr(de().flowchart?.htmlLabels),u=a.width+(e.padding??0),h=u+a.height,f=u+a.height,d=[{x:0,y:0},{x:f,y:0},{x:f/2,y:-h}],{cssStyles:p}=e,m=Ke.svg(i),g=Ze(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=Wt(d),v=m.path(y,g),x=i.insert(()=>v,":first-child").attr("transform",`translate(${-h/2}, ${h/2})`);return p&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",p),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),e.width=u,e.height=h,Qe(e,x),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${h/2-(a.height+(e.padding??0)/(l?2:1)-(a.y-(a.top??0)))})`),e.intersect=function(b){return Y.info("Triangle intersect",e,d,b),qe.polygon(e,d,b)},i}var zQ=M(()=>{"use strict";ht();Ft();qt();Xt();jt();Ft();fr();Vt();o(FQ,"triangle")});async function GQ(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ot(t,e,lt(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/8,f=u+h,{cssStyles:d}=e,m=70-l,g=m>0?m/2:0,y=Ke.svg(i),v=Ze(e,{});e.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=[{x:-l/2-g,y:f/2},...zo(-l/2-g,f/2,l/2+g,f/2,h,.8),{x:l/2+g,y:-f/2},{x:-l/2-g,y:-f/2}],b=Wt(x),w=y.path(b,v),_=i.insert(()=>w,":first-child");return _.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",n),_.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h-(a.y-(a.top??0))})`),Qe(e,_),e.intersect=function(T){return qe.polygon(e,x,T)},i}var $Q=M(()=>{"use strict";Ft();qt();jt();Xt();o(GQ,"waveEdgedRectangle")});async function VQ(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ot(t,e,lt(e)),s=100,l=50,u=Math.max(a.width+(e.padding??0)*2,e?.width??0),h=Math.max(a.height+(e.padding??0)*2,e?.height??0),f=u/h,d=u,p=h;d>p*f?p=d/f:d=p*f,d=Math.max(d,s),p=Math.max(p,l);let m=Math.min(p*.2,p/4),g=p+m*2,{cssStyles:y}=e,v=Ke.svg(i),x=Ze(e,{});e.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let b=[{x:-d/2,y:g/2},...zo(-d/2,g/2,d/2,g/2,m,1),{x:d/2,y:-g/2},...zo(d/2,-g/2,-d/2,-g/2,m,-1)],w=Wt(b),_=v.path(w,x),T=i.insert(()=>_,":first-child");return T.attr("class","basic label-container"),y&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",y),n&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",n),Qe(e,T),e.intersect=function(E){return qe.polygon(e,b,E)},i}var UQ=M(()=>{"use strict";Ft();qt();Xt();jt();o(VQ,"waveRectangle")});async function HQ(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ot(t,e,lt(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=5,f=-l/2,d=-u/2,{cssStyles:p}=e,m=Ke.svg(i),g=Ze(e,{}),y=[{x:f-h,y:d-h},{x:f-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d-h}],v=`M${f-h},${d-h} L${f+l},${d-h} L${f+l},${d+u} L${f-h},${d+u} L${f-h},${d-h} + l${-r},0`,"createCylinderPathD"),Y8e=o((t,e,r,n,i,a)=>[`M${t},${e}`,`M${t+r},${e}`,`a${i},${a} 0,0,0 0,${-n}`,`l${-r},0`,`a${i},${a} 0,0,0 0,${n}`,`l${r},0`].join(" "),"createOuterCylinderPathD"),X8e=o((t,e,r,n,i,a)=>[`M${t+r/2},${-n/2}`,`a${i},${a} 0,0,0 0,${n}`].join(" "),"createInnerCylinderPathD");o(cZ,"tiltedCylinder")});async function hZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=a.width+e.padding,l=a.height+e.padding,u=[{x:-3*l/6,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:0,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Xe.svg(i),p=Ke(e,{}),m=Xt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=_a(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,je(e,h),e.intersect=function(d){return Ye.polygon(e,u,d)},i}var fZ=M(()=>{"use strict";Ft();Ht();Ut();Wt();Cu();o(hZ,"trapezoid")});async function dZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=60,l=20,u=Math.max(s,a.width+(e.padding??0)*2,e?.width??0),h=Math.max(l,a.height+(e.padding??0)*2,e?.height??0),{cssStyles:f}=e,d=Xe.svg(i),p=Ke(e,{});e.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let m=[{x:-u/2*.8,y:-h/2},{x:u/2*.8,y:-h/2},{x:u/2,y:-h/2*.6},{x:u/2,y:h/2},{x:-u/2,y:h/2},{x:-u/2,y:-h/2*.6}],g=Xt(m),y=d.path(g,p),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",f),n&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",n),je(e,v),e.intersect=function(x){return Ye.polygon(e,m,x)},i}var pZ=M(()=>{"use strict";Ft();Ht();Ut();Wt();o(dZ,"trapezoidalPentagon")});async function mZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=ur(me().flowchart?.htmlLabels),u=a.width+(e.padding??0),h=u+a.height,f=u+a.height,d=[{x:0,y:0},{x:f,y:0},{x:f/2,y:-h}],{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=Xt(d),v=m.path(y,g),x=i.insert(()=>v,":first-child").attr("transform",`translate(${-h/2}, ${h/2})`);return p&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",p),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),e.width=u,e.height=h,je(e,x),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${h/2-(a.height+(e.padding??0)/(l?2:1)-(a.y-(a.top??0)))})`),e.intersect=function(b){return Y.info("Triangle intersect",e,d,b),Ye.polygon(e,d,b)},i}var gZ=M(()=>{"use strict";vt();Ft();Ht();Ut();Wt();Ft();gr();Gt();o(mZ,"triangle")});async function yZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/8,f=u+h,{cssStyles:d}=e,m=70-l,g=m>0?m/2:0,y=Xe.svg(i),v=Ke(e,{});e.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=[{x:-l/2-g,y:f/2},...Io(-l/2-g,f/2,l/2+g,f/2,h,.8),{x:l/2+g,y:-f/2},{x:-l/2-g,y:-f/2}],b=Xt(x),w=y.path(b,v),C=i.insert(()=>w,":first-child");return C.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h-(a.y-(a.top??0))})`),je(e,C),e.intersect=function(T){return Ye.polygon(e,x,T)},i}var vZ=M(()=>{"use strict";Ft();Ht();Wt();Ut();o(yZ,"waveEdgedRectangle")});async function xZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await pt(t,e,ht(e)),s=100,l=50,u=Math.max(a.width+(e.padding??0)*2,e?.width??0),h=Math.max(a.height+(e.padding??0)*2,e?.height??0),f=u/h,d=u,p=h;d>p*f?p=d/f:d=p*f,d=Math.max(d,s),p=Math.max(p,l);let m=Math.min(p*.2,p/4),g=p+m*2,{cssStyles:y}=e,v=Xe.svg(i),x=Ke(e,{});e.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let b=[{x:-d/2,y:g/2},...Io(-d/2,g/2,d/2,g/2,m,1),{x:d/2,y:-g/2},...Io(d/2,-g/2,-d/2,-g/2,m,-1)],w=Xt(b),C=v.path(w,x),T=i.insert(()=>C,":first-child");return T.attr("class","basic label-container"),y&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",y),n&&e.look!=="handDrawn"&&T.selectAll("path").attr("style",n),je(e,T),e.intersect=function(E){return Ye.polygon(e,b,E)},i}var bZ=M(()=>{"use strict";Ft();Ht();Ut();Wt();o(xZ,"waveRectangle")});async function wZ(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await pt(t,e,ht(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=5,f=-l/2,d=-u/2,{cssStyles:p}=e,m=Xe.svg(i),g=Ke(e,{}),y=[{x:f-h,y:d-h},{x:f-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d-h}],v=`M${f-h},${d-h} L${f+l},${d-h} L${f+l},${d+u} L${f-h},${d+u} L${f-h},${d-h} M${f-h},${d} L${f+l},${d} - M${f},${d-h} L${f},${d+u}`;e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=m.path(v,g),b=i.insert(()=>x,":first-child");return b.attr("transform",`translate(${h/2}, ${h/2})`),b.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",n),s.attr("transform",`translate(${-(a.width/2)+h/2-(a.x-(a.left??0))}, ${-(a.height/2)+h/2-(a.y-(a.top??0))})`),Qe(e,b),e.intersect=function(w){return qe.polygon(e,y,w)},i}var WQ=M(()=>{"use strict";Ft();Xt();jt();qt();o(HQ,"windowPane")});async function YQ(t,e,r,n,i=r.class.padding??12){let a=n?0:3,s=t.insert("g").attr("class",lt(e)).attr("id",e.domId||e.id),l=null,u=null,h=null,f=null,d=0,p=0,m=0;if(l=s.insert("g").attr("class","annotation-group text"),e.annotations.length>0){let b=e.annotations[0];await O5(l,{text:`\xAB${b}\xBB`},0),d=l.node().getBBox().height}u=s.insert("g").attr("class","label-group text"),await O5(u,e,0,["font-weight: bolder"]);let g=u.node().getBBox();p=g.height,h=s.insert("g").attr("class","members-group text");let y=0;for(let b of e.members){let w=await O5(h,b,y,[b.parseClassifier()]);y+=w+a}m=h.node().getBBox().height,m<=0&&(m=i/2),f=s.insert("g").attr("class","methods-group text");let v=0;for(let b of e.methods){let w=await O5(f,b,v,[b.parseClassifier()]);v+=w+a}let x=s.node().getBBox();if(l!==null){let b=l.node().getBBox();l.attr("transform",`translate(${-b.width/2})`)}return u.attr("transform",`translate(${-g.width/2}, ${d})`),x=s.node().getBBox(),h.attr("transform",`translate(0, ${d+p+i*2})`),x=s.node().getBBox(),f.attr("transform",`translate(0, ${d+p+(m?m+i*4:i*2)})`),x=s.node().getBBox(),{shapeSvg:s,bbox:x}}async function O5(t,e,r,n=[]){let i=t.insert("g").attr("class","label").attr("style",n.join("; ")),a=Sr(),s="useHtmlLabels"in e?e.useHtmlLabels:xr(a.htmlLabels)??!0,l="";"text"in e?l=e.text:l=e.label,!s&&l.startsWith("\\")&&(l=l.substring(1)),pi(l)&&(s=!0);let u=await Si(i,i7(Ca(l)),{width:Js(l,a)+50,classes:"markdown-node-label",useHtmlLabels:s},a),h,f=1;if(s){let d=u.children[0],p=ze(u);f=d.innerHTML.split("
    ").length,d.innerHTML.includes("")&&(f+=d.innerHTML.split("").length-1);let m=d.getElementsByTagName("img");if(m){let g=l.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=a.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,_=parseInt(b,10)*5+"px";y.style.minWidth=_,y.style.maxWidth=_}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=d.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}else{n.includes("font-weight: bolder")&&ze(u).selectAll("tspan").attr("font-weight",""),f=u.children.length;let d=u.children[0];(u.textContent===""||u.textContent.includes(">"))&&(d.textContent=l[0]+l.substring(1).replaceAll(">",">").replaceAll("<","<").trim(),l[1]===" "&&(d.textContent=d.textContent[0]+" "+d.textContent.substring(1))),d.textContent==="undefined"&&(d.textContent=""),h=u.getBBox()}return i.attr("transform","translate(0,"+(-h.height/(2*f)+r)+")"),h.height}var qQ=M(()=>{"use strict";mr();Ua();Ft();hr();Vt();Dl();fr();o(YQ,"textHelper");o(O5,"addText")});async function XQ(t,e){let r=de(),n=r.class.padding??12,i=n,a=e.useHtmlLabels??xr(r.htmlLabels)??!0,s=e;s.annotations=s.annotations??[],s.members=s.members??[],s.methods=s.methods??[];let{shapeSvg:l,bbox:u}=await YQ(t,e,r,a,i),{labelStyles:h,nodeStyles:f}=et(e);e.labelStyle=h,e.cssStyles=s.styles||"";let d=s.styles?.join(";")||f||"";e.cssStyles||(e.cssStyles=d.replaceAll("!important","").split(";"));let p=s.members.length===0&&s.methods.length===0&&!r.class?.hideEmptyMembersBox,m=Ke.svg(l),g=Ze(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=u.width,v=u.height;s.members.length===0&&s.methods.length===0?v+=i:s.members.length>0&&s.methods.length===0&&(v+=i*2);let x=-y/2,b=-v/2,w=m.rectangle(x-n,b-n-(p?n:s.members.length===0&&s.methods.length===0?-n/2:0),y+2*n,v+2*n+(p?n*2:s.members.length===0&&s.methods.length===0?-n:0),g),_=l.insert(()=>w,":first-child");_.attr("class","basic label-container");let T=_.node().getBBox();l.selectAll(".text").each((A,I,D)=>{let k=ze(D[I]),R=k.attr("transform"),S=0;if(R){let F=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(R);F&&(S=parseFloat(F[2]))}let O=S+b+n-(p?n:s.members.length===0&&s.methods.length===0?-n/2:0);a||(O-=4);let N=x;(k.attr("class").includes("label-group")||k.attr("class").includes("annotation-group"))&&(N=-k.node()?.getBBox().width/2||0,l.selectAll("text").each(function(P,F,B){window.getComputedStyle(B[F]).textAnchor==="middle"&&(N=0)})),k.attr("transform",`translate(${N}, ${O})`)});let E=l.select(".annotation-group").node().getBBox().height-(p?n/2:0)||0,L=l.select(".label-group").node().getBBox().height-(p?n/2:0)||0,C=l.select(".members-group").node().getBBox().height-(p?n/2:0)||0;if(s.members.length>0||s.methods.length>0||p){let A=m.line(T.x,E+L+b+n,T.x+T.width,E+L+b+n,g);l.insert(()=>A).attr("class","divider").attr("style",d)}if(p||s.members.length>0||s.methods.length>0){let A=m.line(T.x,E+L+C+b+i*2+n,T.x+T.width,E+L+C+b+n+i*2,g);l.insert(()=>A).attr("class","divider").attr("style",d)}if(s.look!=="handDrawn"&&l.selectAll("path").attr("style",d),_.select(":nth-child(2)").attr("style",d),l.selectAll(".divider").select("path").attr("style",d),e.labelStyle?l.selectAll("span").attr("style",e.labelStyle):l.selectAll("span").attr("style",d),!a){let A=RegExp(/color\s*:\s*([^;]*)/),I=A.exec(d);if(I){let D=I[0].replace("color","fill");l.selectAll("tspan").attr("style",D)}else if(h){let D=A.exec(h);if(D){let k=D[0].replace("color","fill");l.selectAll("tspan").attr("style",k)}}}return Qe(e,_),e.intersect=function(A){return qe.rect(e,A)},l}var jQ=M(()=>{"use strict";Ft();Vt();mr();jt();Xt();qt();qQ();fr();o(XQ,"classBox")});async function KQ(t,e,{config:r}){let{labelStyles:n,nodeStyles:i}=et(e);e.labelStyle=n||"";let a=10,s=e.width;e.width=(e.width??200)-10;let{shapeSvg:l,bbox:u,label:h}=await ot(t,e,lt(e)),f=e.padding||10,d="",p;"ticket"in e&&e.ticket&&r?.kanban?.ticketBaseUrl&&(d=r?.kanban?.ticketBaseUrl.replace("#TICKET#",e.ticket),p=l.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",d).attr("target","_blank"));let m={useHtmlLabels:e.useHtmlLabels,labelStyle:e.labelStyle||"",width:e.width,img:e.img,padding:e.padding||8,centerLabel:!1},g,y;p?{label:g,bbox:y}=await T5(p,"ticket"in e&&e.ticket||"",m):{label:g,bbox:y}=await T5(l,"ticket"in e&&e.ticket||"",m);let{label:v,bbox:x}=await T5(l,"assigned"in e&&e.assigned||"",m);e.width=s;let b=10,w=e?.width||0,_=Math.max(y.height,x.height)/2,T=Math.max(u.height+b*2,e?.height||0)+_,E=-w/2,L=-T/2;h.attr("transform","translate("+(f-w/2)+", "+(-_-u.height/2)+")"),g.attr("transform","translate("+(f-w/2)+", "+(-_+u.height/2)+")"),v.attr("transform","translate("+(f+w/2-x.width-2*a)+", "+(-_+u.height/2)+")");let C,{rx:A,ry:I}=e,{cssStyles:D}=e;if(e.look==="handDrawn"){let k=Ke.svg(l),R=Ze(e,{}),S=A||I?k.path(La(E,L,w,T,A||0),R):k.rectangle(E,L,w,T,R);C=l.insert(()=>S,":first-child"),C.attr("class","basic label-container").attr("style",D||null)}else{C=l.insert("rect",":first-child"),C.attr("class","basic label-container __APA__").attr("style",i).attr("rx",A??5).attr("ry",I??5).attr("x",E).attr("y",L).attr("width",w).attr("height",T);let k="priority"in e&&e.priority;if(k){let R=l.append("line"),S=E+2,O=L+Math.floor((A??0)/2),N=L+T-Math.floor((A??0)/2);R.attr("x1",S).attr("y1",O).attr("x2",S).attr("y2",N).attr("stroke-width","4").attr("stroke",SAe(k))}}return Qe(e,C),e.height=T,e.intersect=function(k){return qe.rect(e,k)},l}var SAe,QQ=M(()=>{"use strict";Ft();qt();zh();Xt();jt();SAe=o(t=>{switch(t){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");o(KQ,"kanbanItem")});function ZQ(t){return t in z9}var CAe,AAe,z9,G9=M(()=>{"use strict";Vj();Wj();qj();jj();Qj();Jj();tK();nK();aK();oK();cK();hK();dK();mK();yK();xK();wK();kK();SK();AK();LK();NK();MK();OK();BK();zK();$K();UK();WK();qK();jK();QK();JK();tQ();nQ();aQ();oQ();cQ();hQ();dQ();mQ();yQ();xQ();wQ();kQ();SQ();AQ();LQ();NQ();MQ();OQ();BQ();zQ();$Q();UQ();WQ();jQ();QQ();CAe=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:pQ},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:lQ},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:gQ},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:EQ},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:lK},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:Kj},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:rQ},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:TK},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:VK},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:GK},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:IQ},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:PK},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:fK},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:DQ},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:Yj},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:uQ},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:TQ},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:bQ},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:vK},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:EK},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:eK},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:rK},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:iK},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:HK},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:GQ},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:bK},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:RQ},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:YK},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:sK},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:uK},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:FQ},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:HQ},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:pK},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:PQ},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:gK},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:fQ},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:ZK},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:KK},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:Hj},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:Zj},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:_Q},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:CQ},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:VQ},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:iQ},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:XK}],AAe=o(()=>{let e=[...Object.entries({state:vQ,choice:Xj,note:eQ,rectWithTitle:sQ,labelRect:FK,iconSquare:RK,iconCircle:_K,icon:CK,iconRounded:DK,imageSquare:IK,anchor:$j,kanbanItem:KQ,classBox:XQ}),...CAe.flatMap(r=>[r.shortName,..."aliases"in r?r.aliases:[],..."internalAliases"in r?r.internalAliases:[]].map(i=>[i,r.handler]))];return Object.fromEntries(e)},"generateShapeMap"),z9=AAe();o(ZQ,"isValidShape")});function pZ(t){return typeof t>"u"||t===null}function _Ae(t){return typeof t=="object"&&t!==null}function LAe(t){return Array.isArray(t)?t:pZ(t)?[]:[t]}function DAe(t,e){var r,n,i,a;if(e)for(a=Object.keys(e),r=0,n=a.length;rl&&(a=" ... ",e=n-l+a.length),r-n>l&&(s=" ...",r=n+l-s.length),{str:a+t.slice(e,r).replace(/\t/g,"\u2192")+s,pos:n-e+a.length}}function V9(t,e){return Pi.repeat(" ",e-t.length)+t}function zAe(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),typeof e.indent!="number"&&(e.indent=1),typeof e.linesBefore!="number"&&(e.linesBefore=3),typeof e.linesAfter!="number"&&(e.linesAfter=2);for(var r=/\r?\n|\r|\0/g,n=[0],i=[],a,s=-1;a=r.exec(t.buffer);)i.push(a.index),n.push(a.index+a[0].length),t.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var l="",u,h,f=Math.min(t.line+e.linesAfter,i.length).toString().length,d=e.maxLength-(e.indent+f+3);for(u=1;u<=e.linesBefore&&!(s-u<0);u++)h=$9(t.buffer,n[s-u],i[s-u],t.position-(n[s]-n[s-u]),d),l=Pi.repeat(" ",e.indent)+V9((t.line-u+1).toString(),f)+" | "+h.str+` -`+l;for(h=$9(t.buffer,n[s],i[s],t.position,d),l+=Pi.repeat(" ",e.indent)+V9((t.line+1).toString(),f)+" | "+h.str+` -`,l+=Pi.repeat("-",e.indent+f+3+h.pos)+`^ -`,u=1;u<=e.linesAfter&&!(s+u>=i.length);u++)h=$9(t.buffer,n[s+u],i[s+u],t.position-(n[s]-n[s+u]),d),l+=Pi.repeat(" ",e.indent)+V9((t.line+u+1).toString(),f)+" | "+h.str+` -`;return l.replace(/\n$/,"")}function UAe(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(n){e[String(n)]=r})}),e}function HAe(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if($Ae.indexOf(r)===-1)throw new Es('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=UAe(e.styleAliases||null),VAe.indexOf(this.kind)===-1)throw new Es('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}function JQ(t,e){var r=[];return t[e].forEach(function(n){var i=r.length;r.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(i=s)}),r[i]=n}),r}function WAe(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},e,r;function n(i){i.multi?(t.multi[i.kind].push(i),t.multi.fallback.push(i)):t[i.kind][i.tag]=t.fallback[i.tag]=i}for(o(n,"collectType"),e=0,r=arguments.length;e=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:r*parseFloat(e,10)}function g8e(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Pi.isNegativeZero(t))return"-0.0";return r=t.toString(10),m8e.test(r)?r.replace("e",".e"):r}function y8e(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||Pi.isNegativeZero(t))}function b8e(t){return t===null?!1:yZ.exec(t)!==null||vZ.exec(t)!==null}function w8e(t){var e,r,n,i,a,s,l,u=0,h=null,f,d,p;if(e=yZ.exec(t),e===null&&(e=vZ.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],n=+e[2]-1,i=+e[3],!e[4])return new Date(Date.UTC(r,n,i));if(a=+e[4],s=+e[5],l=+e[6],e[7]){for(u=e[7].slice(0,3);u.length<3;)u+="0";u=+u}return e[9]&&(f=+e[10],d=+(e[11]||0),h=(f*60+d)*6e4,e[9]==="-"&&(h=-h)),p=new Date(Date.UTC(r,n,i,a,s,l,u)),h&&p.setTime(p.getTime()-h),p}function T8e(t){return t.toISOString()}function E8e(t){return t==="<<"||t===null}function C8e(t){if(t===null)return!1;var e,r,n=0,i=t.length,a=j9;for(r=0;r64)){if(e<0)return!1;n+=6}return n%8===0}function A8e(t){var e,r,n=t.replace(/[\r\n=]/g,""),i=n.length,a=j9,s=0,l=[];for(e=0;e>16&255),l.push(s>>8&255),l.push(s&255)),s=s<<6|a.indexOf(n.charAt(e));return r=i%4*6,r===0?(l.push(s>>16&255),l.push(s>>8&255),l.push(s&255)):r===18?(l.push(s>>10&255),l.push(s>>2&255)):r===12&&l.push(s>>4&255),new Uint8Array(l)}function _8e(t){var e="",r=0,n,i,a=t.length,s=j9;for(n=0;n>18&63],e+=s[r>>12&63],e+=s[r>>6&63],e+=s[r&63]),r=(r<<8)+t[n];return i=a%3,i===0?(e+=s[r>>18&63],e+=s[r>>12&63],e+=s[r>>6&63],e+=s[r&63]):i===2?(e+=s[r>>10&63],e+=s[r>>4&63],e+=s[r<<2&63],e+=s[64]):i===1&&(e+=s[r>>2&63],e+=s[r<<4&63],e+=s[64],e+=s[64]),e}function L8e(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}function M8e(t){if(t===null)return!0;var e=[],r,n,i,a,s,l=t;for(r=0,n=l.length;r>10)+55296,(t-65536&1023)+56320)}function Z8e(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||xZ,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function CZ(t,e){var r={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return r.snippet=GAe(r),new Es(e,r)}function Qt(t,e){throw CZ(t,e)}function F5(t,e){t.onWarning&&t.onWarning.call(null,CZ(t,e))}function Gh(t,e,r,n){var i,a,s,l;if(e1&&(t.result+=Pi.repeat(` -`,e-1))}function J8e(t,e,r){var n,i,a,s,l,u,h,f,d=t.kind,p=t.result,m;if(m=t.input.charCodeAt(t.position),Ss(m)||lm(m)||m===35||m===38||m===42||m===33||m===124||m===62||m===39||m===34||m===37||m===64||m===96||(m===63||m===45)&&(i=t.input.charCodeAt(t.position+1),Ss(i)||r&&lm(i)))return!1;for(t.kind="scalar",t.result="",a=s=t.position,l=!1;m!==0;){if(m===58){if(i=t.input.charCodeAt(t.position+1),Ss(i)||r&&lm(i))break}else if(m===35){if(n=t.input.charCodeAt(t.position-1),Ss(n))break}else{if(t.position===t.lineStart&&$5(t)||r&&lm(m))break;if(yc(m))if(u=t.line,h=t.lineStart,f=t.lineIndent,Ci(t,!1,-1),t.lineIndent>=e){l=!0,m=t.input.charCodeAt(t.position);continue}else{t.position=s,t.line=u,t.lineStart=h,t.lineIndent=f;break}}l&&(Gh(t,a,s,!1),Q9(t,t.line-u),a=s=t.position,l=!1),_d(m)||(s=t.position+1),m=t.input.charCodeAt(++t.position)}return Gh(t,a,s,!1),t.result?!0:(t.kind=d,t.result=p,!1)}function e_e(t,e){var r,n,i;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,n=i=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(Gh(t,n,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)n=t.position,t.position++,i=t.position;else return!0;else yc(r)?(Gh(t,n,i,!0),Q9(t,Ci(t,!1,e)),n=i=t.position):t.position===t.lineStart&&$5(t)?Qt(t,"unexpected end of the document within a single quoted scalar"):(t.position++,i=t.position);Qt(t,"unexpected end of the stream within a single quoted scalar")}function t_e(t,e){var r,n,i,a,s,l;if(l=t.input.charCodeAt(t.position),l!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=n=t.position;(l=t.input.charCodeAt(t.position))!==0;){if(l===34)return Gh(t,r,t.position,!0),t.position++,!0;if(l===92){if(Gh(t,r,t.position,!0),l=t.input.charCodeAt(++t.position),yc(l))Ci(t,!1,e);else if(l<256&&EZ[l])t.result+=SZ[l],t.position++;else if((s=j8e(l))>0){for(i=s,a=0;i>0;i--)l=t.input.charCodeAt(++t.position),(s=X8e(l))>=0?a=(a<<4)+s:Qt(t,"expected hexadecimal character");t.result+=Q8e(a),t.position++}else Qt(t,"unknown escape sequence");r=n=t.position}else yc(l)?(Gh(t,r,n,!0),Q9(t,Ci(t,!1,e)),r=n=t.position):t.position===t.lineStart&&$5(t)?Qt(t,"unexpected end of the document within a double quoted scalar"):(t.position++,n=t.position)}Qt(t,"unexpected end of the stream within a double quoted scalar")}function r_e(t,e){var r=!0,n,i,a,s=t.tag,l,u=t.anchor,h,f,d,p,m,g=Object.create(null),y,v,x,b;if(b=t.input.charCodeAt(t.position),b===91)f=93,m=!1,l=[];else if(b===123)f=125,m=!0,l={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=l),b=t.input.charCodeAt(++t.position);b!==0;){if(Ci(t,!0,e),b=t.input.charCodeAt(t.position),b===f)return t.position++,t.tag=s,t.anchor=u,t.kind=m?"mapping":"sequence",t.result=l,!0;r?b===44&&Qt(t,"expected the node content, but found ','"):Qt(t,"missed comma between flow collection entries"),v=y=x=null,d=p=!1,b===63&&(h=t.input.charCodeAt(t.position+1),Ss(h)&&(d=p=!0,t.position++,Ci(t,!0,e))),n=t.line,i=t.lineStart,a=t.position,um(t,e,P5,!1,!0),v=t.tag,y=t.result,Ci(t,!0,e),b=t.input.charCodeAt(t.position),(p||t.line===n)&&b===58&&(d=!0,b=t.input.charCodeAt(++t.position),Ci(t,!0,e),um(t,e,P5,!1,!0),x=t.result),m?cm(t,l,g,v,y,x,n,i,a):d?l.push(cm(t,null,g,v,y,x,n,i,a)):l.push(y),Ci(t,!0,e),b=t.input.charCodeAt(t.position),b===44?(r=!0,b=t.input.charCodeAt(++t.position)):r=!1}Qt(t,"unexpected end of the stream within a flow collection")}function n_e(t,e){var r,n,i=U9,a=!1,s=!1,l=e,u=0,h=!1,f,d;if(d=t.input.charCodeAt(t.position),d===124)n=!1;else if(d===62)n=!0;else return!1;for(t.kind="scalar",t.result="";d!==0;)if(d=t.input.charCodeAt(++t.position),d===43||d===45)U9===i?i=d===43?eZ:H8e:Qt(t,"repeat of a chomping mode identifier");else if((f=K8e(d))>=0)f===0?Qt(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?Qt(t,"repeat of an indentation width identifier"):(l=e+f-1,s=!0);else break;if(_d(d)){do d=t.input.charCodeAt(++t.position);while(_d(d));if(d===35)do d=t.input.charCodeAt(++t.position);while(!yc(d)&&d!==0)}for(;d!==0;){for(K9(t),t.lineIndent=0,d=t.input.charCodeAt(t.position);(!s||t.lineIndentl&&(l=t.lineIndent),yc(d)){u++;continue}if(t.lineIndente)&&u!==0)Qt(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(v&&(s=t.line,l=t.lineStart,u=t.position),um(t,e,B5,!0,i)&&(v?g=t.result:y=t.result),v||(cm(t,d,p,m,g,y,s,l,u),m=g=y=null),Ci(t,!0,-1),b=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&b!==0)Qt(t,"bad indentation of a mapping entry");else if(t.lineIndente?u=1:t.lineIndent===e?u=0:t.lineIndente?u=1:t.lineIndent===e?u=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),d=0,p=t.implicitTypes.length;d"),t.result!==null&&g.kind!==t.kind&&Qt(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+g.kind+'", not "'+t.kind+'"'),g.resolve(t.result,t.tag)?(t.result=g.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Qt(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||f}function l_e(t){var e=t.position,r,n,i,a=!1,s;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(s=t.input.charCodeAt(t.position))!==0&&(Ci(t,!0,-1),s=t.input.charCodeAt(t.position),!(t.lineIndent>0||s!==37));){for(a=!0,s=t.input.charCodeAt(++t.position),r=t.position;s!==0&&!Ss(s);)s=t.input.charCodeAt(++t.position);for(n=t.input.slice(r,t.position),i=[],n.length<1&&Qt(t,"directive name must not be less than one character in length");s!==0;){for(;_d(s);)s=t.input.charCodeAt(++t.position);if(s===35){do s=t.input.charCodeAt(++t.position);while(s!==0&&!yc(s));break}if(yc(s))break;for(r=t.position;s!==0&&!Ss(s);)s=t.input.charCodeAt(++t.position);i.push(t.input.slice(r,t.position))}s!==0&&K9(t),$h.call(nZ,n)?nZ[n](t,n,i):F5(t,'unknown document directive "'+n+'"')}if(Ci(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,Ci(t,!0,-1)):a&&Qt(t,"directives end mark is expected"),um(t,t.lineIndent-1,B5,!1,!0),Ci(t,!0,-1),t.checkLineBreaks&&Y8e.test(t.input.slice(e,t.position))&&F5(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&$5(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Ci(t,!0,-1));return}if(t.position"u"&&(r=e,e=null);var n=AZ(t,r);if(typeof e!="function")return n;for(var i=0,a=n.length;i=55296&&r<=56319&&e+1=56320&&n<=57343)?(r-55296)*1024+n-56320+65536:r}function PZ(t){var e=/^\n* /;return e.test(t)}function F_e(t,e,r,n,i,a,s,l){var u,h=0,f=null,d=!1,p=!1,m=n!==-1,g=-1,y=P_e(xv(t,0))&&B_e(xv(t,t.length-1));if(e||s)for(u=0;u=65536?u+=2:u++){if(h=xv(t,u),!kv(h))return om;y=y&&lZ(h,f,l),f=h}else{for(u=0;u=65536?u+=2:u++){if(h=xv(t,u),h===wv)d=!0,m&&(p=p||u-g-1>n&&t[g+1]!==" ",g=u);else if(!kv(h))return om;y=y&&lZ(h,f,l),f=h}p=p||m&&u-g-1>n&&t[g+1]!==" "}return!d&&!p?y&&!s&&!i(t)?BZ:a===Tv?om:q9:r>9&&PZ(t)?om:s?a===Tv?om:q9:p?zZ:FZ}function z_e(t,e,r,n,i){t.dump=function(){if(e.length===0)return t.quotingType===Tv?'""':"''";if(!t.noCompatMode&&(L_e.indexOf(e)!==-1||D_e.test(e)))return t.quotingType===Tv?'"'+e+'"':"'"+e+"'";var a=t.indent*Math.max(1,r),s=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),l=n||t.flowLevel>-1&&r>=t.flowLevel;function u(h){return O_e(t,h)}switch(o(u,"testAmbiguity"),F_e(e,l,t.indent,s,u,t.quotingType,t.forceQuotes&&!n,i)){case BZ:return e;case q9:return"'"+e.replace(/'/g,"''")+"'";case FZ:return"|"+cZ(e,t.indent)+uZ(sZ(e,a));case zZ:return">"+cZ(e,t.indent)+uZ(sZ(G_e(e,s),a));case om:return'"'+$_e(e)+'"';default:throw new Es("impossible error: invalid scalar style")}}()}function cZ(t,e){var r=PZ(t)?String(e):"",n=t[t.length-1]===` -`,i=n&&(t[t.length-2]===` -`||t===` -`),a=i?"+":n?"":"-";return r+a+` -`}function uZ(t){return t[t.length-1]===` -`?t.slice(0,-1):t}function G_e(t,e){for(var r=/(\n+)([^\n]*)/g,n=function(){var h=t.indexOf(` -`);return h=h!==-1?h:t.length,r.lastIndex=h,hZ(t.slice(0,h),e)}(),i=t[0]===` -`||t[0]===" ",a,s;s=r.exec(t);){var l=s[1],u=s[2];a=u[0]===" ",n+=l+(!i&&!a&&u!==""?` -`:"")+hZ(u,e),i=a}return n}function hZ(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,n,i=0,a,s=0,l=0,u="";n=r.exec(t);)l=n.index,l-i>e&&(a=s>i?s:l,u+=` -`+t.slice(i,a),i=a+1),s=l;return u+=` -`,t.length-i>e&&s>i?u+=t.slice(i,s)+` -`+t.slice(s+1):u+=t.slice(i),u.slice(1)}function $_e(t){for(var e="",r=0,n,i=0;i=65536?i+=2:i++)r=xv(t,i),n=Na[r],!n&&kv(r)?(e+=t[i],r>=65536&&(e+=t[i+1])):e+=n||R_e(r);return e}function V_e(t,e,r){var n="",i=t.tag,a,s,l;for(a=0,s=r.length;a"u"&&Cu(t,e,null,!1,!1))&&(n!==""&&(n+=","+(t.condenseFlow?"":" ")),n+=t.dump);t.tag=i,t.dump="["+n+"]"}function fZ(t,e,r,n){var i="",a=t.tag,s,l,u;for(s=0,l=r.length;s"u"&&Cu(t,e+1,null,!0,!0,!1,!0))&&((!n||i!=="")&&(i+=Y9(t,e)),t.dump&&wv===t.dump.charCodeAt(0)?i+="-":i+="- ",i+=t.dump);t.tag=a,t.dump=i||"[]"}function U_e(t,e,r){var n="",i=t.tag,a=Object.keys(r),s,l,u,h,f;for(s=0,l=a.length;s1024&&(f+="? "),f+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Cu(t,e,h,!1,!1)&&(f+=t.dump,n+=f));t.tag=i,t.dump="{"+n+"}"}function H_e(t,e,r,n){var i="",a=t.tag,s=Object.keys(r),l,u,h,f,d,p;if(t.sortKeys===!0)s.sort();else if(typeof t.sortKeys=="function")s.sort(t.sortKeys);else if(t.sortKeys)throw new Es("sortKeys must be a boolean or a function");for(l=0,u=s.length;l1024,d&&(t.dump&&wv===t.dump.charCodeAt(0)?p+="?":p+="? "),p+=t.dump,d&&(p+=Y9(t,e)),Cu(t,e+1,f,!0,d)&&(t.dump&&wv===t.dump.charCodeAt(0)?p+=":":p+=": ",p+=t.dump,i+=p));t.tag=a,t.dump=i||"{}"}function dZ(t,e,r){var n,i,a,s,l,u;for(i=r?t.explicitTypes:t.implicitTypes,a=0,s=i.length;a tag resolver accepts not "'+u+'" style');t.dump=n}return!0}return!1}function Cu(t,e,r,n,i,a,s){t.tag=null,t.dump=r,dZ(t,r,!1)||dZ(t,r,!0);var l=LZ.call(t.dump),u=n,h;n&&(n=t.flowLevel<0||t.flowLevel>e);var f=l==="[object Object]"||l==="[object Array]",d,p;if(f&&(d=t.duplicates.indexOf(r),p=d!==-1),(t.tag!==null&&t.tag!=="?"||p||t.indent!==2&&e>0)&&(i=!1),p&&t.usedDuplicates[d])t.dump="*ref_"+d;else{if(f&&p&&!t.usedDuplicates[d]&&(t.usedDuplicates[d]=!0),l==="[object Object]")n&&Object.keys(t.dump).length!==0?(H_e(t,e,t.dump,i),p&&(t.dump="&ref_"+d+t.dump)):(U_e(t,e,t.dump),p&&(t.dump="&ref_"+d+" "+t.dump));else if(l==="[object Array]")n&&t.dump.length!==0?(t.noArrayIndent&&!s&&e>0?fZ(t,e-1,t.dump,i):fZ(t,e,t.dump,i),p&&(t.dump="&ref_"+d+t.dump)):(V_e(t,e,t.dump),p&&(t.dump="&ref_"+d+" "+t.dump));else if(l==="[object String]")t.tag!=="?"&&z_e(t,t.dump,e,a,u);else{if(l==="[object Undefined]")return!1;if(t.skipInvalid)return!1;throw new Es("unacceptable kind of an object to dump "+l)}t.tag!==null&&t.tag!=="?"&&(h=encodeURI(t.tag[0]==="!"?t.tag.slice(1):t.tag).replace(/!/g,"%21"),t.tag[0]==="!"?h="!"+h:h.slice(0,18)==="tag:yaml.org,2002:"?h="!!"+h.slice(18):h="!<"+h+">",t.dump=h+" "+t.dump)}return!0}function W_e(t,e){var r=[],n=[],i,a;for(X9(t,r,n),i=0,a=n.length;i{"use strict";o(pZ,"isNothing");o(_Ae,"isObject");o(LAe,"toArray");o(DAe,"extend");o(NAe,"repeat");o(RAe,"isNegativeZero");MAe=pZ,IAe=_Ae,OAe=LAe,PAe=NAe,BAe=RAe,FAe=DAe,Pi={isNothing:MAe,isObject:IAe,toArray:OAe,repeat:PAe,isNegativeZero:BAe,extend:FAe};o(mZ,"formatError");o(bv,"YAMLException$1");bv.prototype=Object.create(Error.prototype);bv.prototype.constructor=bv;bv.prototype.toString=o(function(e){return this.name+": "+mZ(this,e)},"toString");Es=bv;o($9,"getLine");o(V9,"padStart");o(zAe,"makeSnippet");GAe=zAe,$Ae=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],VAe=["scalar","sequence","mapping"];o(UAe,"compileStyleAliases");o(HAe,"Type$1");Da=HAe;o(JQ,"compileList");o(WAe,"compileMap");o(H9,"Schema$1");H9.prototype.extend=o(function(e){var r=[],n=[];if(e instanceof Da)n.push(e);else if(Array.isArray(e))n=n.concat(e);else if(e&&(Array.isArray(e.implicit)||Array.isArray(e.explicit)))e.implicit&&(r=r.concat(e.implicit)),e.explicit&&(n=n.concat(e.explicit));else throw new Es("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");r.forEach(function(a){if(!(a instanceof Da))throw new Es("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new Es("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(a.multi)throw new Es("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),n.forEach(function(a){if(!(a instanceof Da))throw new Es("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(H9.prototype);return i.implicit=(this.implicit||[]).concat(r),i.explicit=(this.explicit||[]).concat(n),i.compiledImplicit=JQ(i,"implicit"),i.compiledExplicit=JQ(i,"explicit"),i.compiledTypeMap=WAe(i.compiledImplicit,i.compiledExplicit),i},"extend");YAe=H9,qAe=new Da("tag:yaml.org,2002:str",{kind:"scalar",construct:o(function(t){return t!==null?t:""},"construct")}),XAe=new Da("tag:yaml.org,2002:seq",{kind:"sequence",construct:o(function(t){return t!==null?t:[]},"construct")}),jAe=new Da("tag:yaml.org,2002:map",{kind:"mapping",construct:o(function(t){return t!==null?t:{}},"construct")}),KAe=new YAe({explicit:[qAe,XAe,jAe]});o(QAe,"resolveYamlNull");o(ZAe,"constructYamlNull");o(JAe,"isNull");e8e=new Da("tag:yaml.org,2002:null",{kind:"scalar",resolve:QAe,construct:ZAe,predicate:JAe,represent:{canonical:o(function(){return"~"},"canonical"),lowercase:o(function(){return"null"},"lowercase"),uppercase:o(function(){return"NULL"},"uppercase"),camelcase:o(function(){return"Null"},"camelcase"),empty:o(function(){return""},"empty")},defaultStyle:"lowercase"});o(t8e,"resolveYamlBoolean");o(r8e,"constructYamlBoolean");o(n8e,"isBoolean");i8e=new Da("tag:yaml.org,2002:bool",{kind:"scalar",resolve:t8e,construct:r8e,predicate:n8e,represent:{lowercase:o(function(t){return t?"true":"false"},"lowercase"),uppercase:o(function(t){return t?"TRUE":"FALSE"},"uppercase"),camelcase:o(function(t){return t?"True":"False"},"camelcase")},defaultStyle:"lowercase"});o(a8e,"isHexCode");o(s8e,"isOctCode");o(o8e,"isDecCode");o(l8e,"resolveYamlInteger");o(c8e,"constructYamlInteger");o(u8e,"isInteger");h8e=new Da("tag:yaml.org,2002:int",{kind:"scalar",resolve:l8e,construct:c8e,predicate:u8e,represent:{binary:o(function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},"binary"),octal:o(function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},"octal"),decimal:o(function(t){return t.toString(10)},"decimal"),hexadecimal:o(function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),f8e=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");o(d8e,"resolveYamlFloat");o(p8e,"constructYamlFloat");m8e=/^[-+]?[0-9]+e/;o(g8e,"representYamlFloat");o(y8e,"isFloat");v8e=new Da("tag:yaml.org,2002:float",{kind:"scalar",resolve:d8e,construct:p8e,predicate:y8e,represent:g8e,defaultStyle:"lowercase"}),gZ=KAe.extend({implicit:[e8e,i8e,h8e,v8e]}),x8e=gZ,yZ=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),vZ=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");o(b8e,"resolveYamlTimestamp");o(w8e,"constructYamlTimestamp");o(T8e,"representYamlTimestamp");k8e=new Da("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:b8e,construct:w8e,instanceOf:Date,represent:T8e});o(E8e,"resolveYamlMerge");S8e=new Da("tag:yaml.org,2002:merge",{kind:"scalar",resolve:E8e}),j9=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;o(C8e,"resolveYamlBinary");o(A8e,"constructYamlBinary");o(_8e,"representYamlBinary");o(L8e,"isBinary");D8e=new Da("tag:yaml.org,2002:binary",{kind:"scalar",resolve:C8e,construct:A8e,predicate:L8e,represent:_8e}),N8e=Object.prototype.hasOwnProperty,R8e=Object.prototype.toString;o(M8e,"resolveYamlOmap");o(I8e,"constructYamlOmap");O8e=new Da("tag:yaml.org,2002:omap",{kind:"sequence",resolve:M8e,construct:I8e}),P8e=Object.prototype.toString;o(B8e,"resolveYamlPairs");o(F8e,"constructYamlPairs");z8e=new Da("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:B8e,construct:F8e}),G8e=Object.prototype.hasOwnProperty;o($8e,"resolveYamlSet");o(V8e,"constructYamlSet");U8e=new Da("tag:yaml.org,2002:set",{kind:"mapping",resolve:$8e,construct:V8e}),xZ=x8e.extend({implicit:[k8e,S8e],explicit:[D8e,O8e,z8e,U8e]}),$h=Object.prototype.hasOwnProperty,P5=1,bZ=2,wZ=3,B5=4,U9=1,H8e=2,eZ=3,W8e=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Y8e=/[\x85\u2028\u2029]/,q8e=/[,\[\]\{\}]/,TZ=/^(?:!|!!|![a-z\-]+!)$/i,kZ=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;o(tZ,"_class");o(yc,"is_EOL");o(_d,"is_WHITE_SPACE");o(Ss,"is_WS_OR_EOL");o(lm,"is_FLOW_INDICATOR");o(X8e,"fromHexCode");o(j8e,"escapedHexLen");o(K8e,"fromDecimalCode");o(rZ,"simpleEscapeSequence");o(Q8e,"charFromCodepoint");EZ=new Array(256),SZ=new Array(256);for(Ad=0;Ad<256;Ad++)EZ[Ad]=rZ(Ad)?1:0,SZ[Ad]=rZ(Ad);o(Z8e,"State$1");o(CZ,"generateError");o(Qt,"throwError");o(F5,"throwWarning");nZ={YAML:o(function(e,r,n){var i,a,s;e.version!==null&&Qt(e,"duplication of %YAML directive"),n.length!==1&&Qt(e,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),i===null&&Qt(e,"ill-formed argument of the YAML directive"),a=parseInt(i[1],10),s=parseInt(i[2],10),a!==1&&Qt(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=s<2,s!==1&&s!==2&&F5(e,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:o(function(e,r,n){var i,a;n.length!==2&&Qt(e,"TAG directive accepts exactly two arguments"),i=n[0],a=n[1],TZ.test(i)||Qt(e,"ill-formed tag handle (first argument) of the TAG directive"),$h.call(e.tagMap,i)&&Qt(e,'there is a previously declared suffix for "'+i+'" tag handle'),kZ.test(a)||Qt(e,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{Qt(e,"tag prefix is malformed: "+a)}e.tagMap[i]=a},"handleTagDirective")};o(Gh,"captureSegment");o(iZ,"mergeMappings");o(cm,"storeMappingPair");o(K9,"readLineBreak");o(Ci,"skipSeparationSpace");o($5,"testDocumentSeparator");o(Q9,"writeFoldedLines");o(J8e,"readPlainScalar");o(e_e,"readSingleQuotedScalar");o(t_e,"readDoubleQuotedScalar");o(r_e,"readFlowCollection");o(n_e,"readBlockScalar");o(aZ,"readBlockSequence");o(i_e,"readBlockMapping");o(a_e,"readTagProperty");o(s_e,"readAnchorProperty");o(o_e,"readAlias");o(um,"composeNode");o(l_e,"readDocument");o(AZ,"loadDocuments");o(c_e,"loadAll$1");o(u_e,"load$1");h_e=c_e,f_e=u_e,_Z={loadAll:h_e,load:f_e},LZ=Object.prototype.toString,DZ=Object.prototype.hasOwnProperty,Z9=65279,d_e=9,wv=10,p_e=13,m_e=32,g_e=33,y_e=34,W9=35,v_e=37,x_e=38,b_e=39,w_e=42,NZ=44,T_e=45,z5=58,k_e=61,E_e=62,S_e=63,C_e=64,RZ=91,MZ=93,A_e=96,IZ=123,__e=124,OZ=125,Na={};Na[0]="\\0";Na[7]="\\a";Na[8]="\\b";Na[9]="\\t";Na[10]="\\n";Na[11]="\\v";Na[12]="\\f";Na[13]="\\r";Na[27]="\\e";Na[34]='\\"';Na[92]="\\\\";Na[133]="\\N";Na[160]="\\_";Na[8232]="\\L";Na[8233]="\\P";L_e=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],D_e=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;o(N_e,"compileStyleMap");o(R_e,"encodeHex");M_e=1,Tv=2;o(I_e,"State");o(sZ,"indentString");o(Y9,"generateNextLine");o(O_e,"testImplicitResolving");o(G5,"isWhitespace");o(kv,"isPrintable");o(oZ,"isNsCharOrWhitespace");o(lZ,"isPlainSafe");o(P_e,"isPlainSafeFirst");o(B_e,"isPlainSafeLast");o(xv,"codePointAt");o(PZ,"needIndentIndicator");BZ=1,q9=2,FZ=3,zZ=4,om=5;o(F_e,"chooseScalarStyle");o(z_e,"writeScalar");o(cZ,"blockHeader");o(uZ,"dropEndingNewline");o(G_e,"foldString");o(hZ,"foldLine");o($_e,"escapeString");o(V_e,"writeFlowSequence");o(fZ,"writeBlockSequence");o(U_e,"writeFlowMapping");o(H_e,"writeBlockMapping");o(dZ,"detectType");o(Cu,"writeNode");o(W_e,"getDuplicateReferences");o(X9,"inspectNode");o(Y_e,"dump$1");q_e=Y_e,X_e={dump:q_e};o(J9,"renamed");hm=gZ,fm=_Z.load,uNt=_Z.loadAll,hNt=X_e.dump,fNt=J9("safeLoad","load"),dNt=J9("safeLoadAll","loadAll"),pNt=J9("safeDump","dump")});function rL(t){let e=[];for(let r of t){let n=Sv.get(r);n?.styles&&(e=[...e,...n.styles??[]].map(i=>i.trim())),n?.textStyles&&(e=[...e,...n.textStyles??[]].map(i=>i.trim()))}return e}var j_e,GZ,dm,Vh,Cs,Sv,Au,nL,iL,U5,tL,Go,H5,W5,Y5,q5,K_e,Q_e,Z_e,J_e,e9e,t9e,r9e,aL,n9e,i9e,a9e,$Z,s9e,o9e,sL,VZ,UZ,l9e,HZ,c9e,u9e,h9e,f9e,d9e,Ev,WZ,YZ,p9e,m9e,qZ,g9e,y9e,v9e,x9e,b9e,XZ,jZ,w9e,T9e,k9e,E9e,S9e,C9e,X5,oL=M(()=>{"use strict";mr();hr();Vt();fr();G9();ht();V5();ki();j_e="flowchart-",GZ=0,dm=de(),Vh=new Map,Cs=[],Sv=new Map,Au=[],nL=new Map,iL=new Map,U5=0,tL=!0,W5=[],Y5=o(t=>je.sanitizeText(t,dm),"sanitizeText"),q5=o(function(t){for(let e of Vh.values())if(e.id===t)return e.domId;return t},"lookUpDomId"),K_e=o(function(t,e,r,n,i,a,s={},l){if(!t||t.trim().length===0)return;let u,h=Vh.get(t);if(h===void 0&&(h={id:t,labelType:"text",domId:j_e+t+"-"+GZ,styles:[],classes:[]},Vh.set(t,h)),GZ++,e!==void 0?(dm=de(),u=Y5(e.text.trim()),h.labelType=e.type,u.startsWith('"')&&u.endsWith('"')&&(u=u.substring(1,u.length-1)),h.text=u):h.text===void 0&&(h.text=t),r!==void 0&&(h.type=r),n?.forEach(function(f){h.styles.push(f)}),i?.forEach(function(f){h.classes.push(f)}),a!==void 0&&(h.dir=a),h.props===void 0?h.props=s:s!==void 0&&Object.assign(h.props,s),l!==void 0){let f;l.includes(` -`)?f=l+` -`:f=`{ -`+l+` -}`;let d=fm(f,{schema:hm});if(d.shape){if(d.shape!==d.shape.toLowerCase()||d.shape.includes("_"))throw new Error(`No such shape: ${d.shape}. Shape names should be lowercase.`);if(!ZQ(d.shape))throw new Error(`No such shape: ${d.shape}.`);h.type=d?.shape}d?.label&&(h.text=d?.label),d?.icon&&(h.icon=d?.icon,!d.label?.trim()&&h.text===t&&(h.text="")),d?.form&&(h.form=d?.form),d?.pos&&(h.pos=d?.pos),d?.img&&(h.img=d?.img,!d.label?.trim()&&h.text===t&&(h.text="")),d?.constraint&&(h.constraint=d.constraint),d.w&&(h.assetWidth=Number(d.w)),d.h&&(h.assetHeight=Number(d.h))}},"addVertex"),Q_e=o(function(t,e,r){let a={start:t,end:e,type:void 0,text:"",labelType:"text"};Y.info("abc78 Got edge...",a);let s=r.text;if(s!==void 0&&(a.text=Y5(s.text.trim()),a.text.startsWith('"')&&a.text.endsWith('"')&&(a.text=a.text.substring(1,a.text.length-1)),a.labelType=s.type),r!==void 0&&(a.type=r.type,a.stroke=r.stroke,a.length=r.length>10?10:r.length),Cs.length<(dm.maxEdges??500))Y.info("Pushing edge..."),Cs.push(a);else throw new Error(`Edge limit exceeded. ${Cs.length} edges found, but the limit is ${dm.maxEdges}. + M${f},${d-h} L${f},${d+u}`;e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=m.path(v,g),b=i.insert(()=>x,":first-child");return b.attr("transform",`translate(${h/2}, ${h/2})`),b.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",n),s.attr("transform",`translate(${-(a.width/2)+h/2-(a.x-(a.left??0))}, ${-(a.height/2)+h/2-(a.y-(a.top??0))})`),je(e,b),e.intersect=function(w){return Ye.polygon(e,y,w)},i}var TZ=M(()=>{"use strict";Ft();Ut();Wt();Ht();o(wZ,"windowPane")});async function UD(t,e){let r=e;if(r.alias&&(e.label=r.alias),e.look==="handDrawn"){let{themeVariables:P}=mr(),{background:G}=P,z={...e,id:e.id+"-background",look:"default",cssStyles:["stroke: none",`fill: ${G}`]};await UD(t,z)}let n=mr();e.useHtmlLabels=n.htmlLabels;let i=n.er?.diagramPadding??10,a=n.er?.entityPadding??6,{cssStyles:s}=e,{labelStyles:l}=Qe(e);if(r.attributes.length===0&&e.label){let P={rx:0,ry:0,labelPaddingX:i,labelPaddingY:i*1.5,classes:""};ea(e.label,n)+P.labelPaddingX*20){let P=f.width+i*2-(m+g+y+v);m+=P/w,g+=P/w,y>0&&(y+=P/w),v>0&&(v+=P/w)}let T=m+g+y+v,E=Xe.svg(h),A=Ke(e,{});e.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");let S=Math.max(C.width+i*2,e?.width||0,T),_=Math.max(C.height+(p[0]||d)+a,e?.height||0),I=-S/2,D=-_/2;h.selectAll("g:not(:first-child)").each((P,G,z)=>{let H=$e(z[G]),Q=H.attr("transform"),j=0,ie=0;if(Q){let le=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(Q);le&&(j=parseFloat(le[1]),ie=parseFloat(le[2]),H.attr("class").includes("attribute-name")?j+=m:H.attr("class").includes("attribute-keys")?j+=m+g:H.attr("class").includes("attribute-comment")&&(j+=m+g+y))}H.attr("transform",`translate(${I+i/2+j}, ${ie+D+f.height+a/2})`)}),h.select(".name").attr("transform","translate("+-f.width/2+", "+(D+a/2)+")");let k=E.rectangle(I,D,S,_,A),L=h.insert(()=>k,":first-child").attr("style",s.join("")),{themeVariables:R}=mr(),{rowEven:O,rowOdd:N,nodeBorder:B}=R;p.push(0);for(let[P,G]of p.entries()){if(P===0&&p.length>1)continue;let z=P%2===0&&G!==0,H=E.rectangle(I,f.height+D+G,S,f.height,{...A,fill:z?O:N,stroke:B});h.insert(()=>H,"g.label").attr("style",s.join("")).attr("class",`row-rect-${P%2===0?"even":"odd"}`)}let F=E.line(I,f.height+D,S+I,f.height+D,A);h.insert(()=>F).attr("class","divider"),F=E.line(m+I,f.height+D,m+I,_+D,A),h.insert(()=>F).attr("class","divider"),x&&(F=E.line(m+g+I,f.height+D,m+g+I,_+D,A),h.insert(()=>F).attr("class","divider")),b&&(F=E.line(m+g+y+I,f.height+D,m+g+y+I,_+D,A),h.insert(()=>F).attr("class","divider"));for(let P of p)F=E.line(I,f.height+D+P,S+I,f.height+D+P,A),h.insert(()=>F).attr("class","divider");return je(e,L),e.intersect=function(P){return Ye.rect(e,P)},h}async function s2(t,e,r,n=0,i=0,a=[],s=""){let l=t.insert("g").attr("class",`label ${a.join(" ")}`).attr("transform",`translate(${n}, ${i})`).attr("style",s);e!==Jl(e)&&(e=Jl(e),e=e.replaceAll("<","<").replaceAll(">",">"));let u=l.node().appendChild(await Hn(l,e,{width:ea(e,r)+100,style:s,useHtmlLabels:r.htmlLabels},r));if(e.includes("<")||e.includes(">")){let f=u.children[0];for(f.textContent=f.textContent.replaceAll("<","<").replaceAll(">",">");f.childNodes[0];)f=f.childNodes[0],f.textContent=f.textContent.replaceAll("<","<").replaceAll(">",">")}let h=u.getBBox();if(ur(r.htmlLabels)){let f=u.children[0];f.style.textAlign="start";let d=$e(u);h=f.getBoundingClientRect(),d.attr("width",h.width),d.attr("height",h.height)}return h}var kZ=M(()=>{"use strict";Ft();Ht();Ut();Wt();um();ka();Ks();gr();hr();sr();o(UD,"erBox");o(s2,"addText")});async function EZ(t,e,r,n,i=r.class.padding??12){let a=n?0:3,s=t.insert("g").attr("class",ht(e)).attr("id",e.domId||e.id),l=null,u=null,h=null,f=null,d=0,p=0,m=0;if(l=s.insert("g").attr("class","annotation-group text"),e.annotations.length>0){let b=e.annotations[0];await Nw(l,{text:`\xAB${b}\xBB`},0),d=l.node().getBBox().height}u=s.insert("g").attr("class","label-group text"),await Nw(u,e,0,["font-weight: bolder"]);let g=u.node().getBBox();p=g.height,h=s.insert("g").attr("class","members-group text");let y=0;for(let b of e.members){let w=await Nw(h,b,y,[b.parseClassifier()]);y+=w+a}m=h.node().getBBox().height,m<=0&&(m=i/2),f=s.insert("g").attr("class","methods-group text");let v=0;for(let b of e.methods){let w=await Nw(f,b,v,[b.parseClassifier()]);v+=w+a}let x=s.node().getBBox();if(l!==null){let b=l.node().getBBox();l.attr("transform",`translate(${-b.width/2})`)}return u.attr("transform",`translate(${-g.width/2}, ${d})`),x=s.node().getBBox(),h.attr("transform",`translate(0, ${d+p+i*2})`),x=s.node().getBBox(),f.attr("transform",`translate(0, ${d+p+(m?m+i*4:i*2)})`),x=s.node().getBBox(),{shapeSvg:s,bbox:x}}async function Nw(t,e,r,n=[]){let i=t.insert("g").attr("class","label").attr("style",n.join("; ")),a=mr(),s="useHtmlLabels"in e?e.useHtmlLabels:ur(a.htmlLabels)??!0,l="";"text"in e?l=e.text:l=e.label,!s&&l.startsWith("\\")&&(l=l.substring(1)),di(l)&&(s=!0);let u=await Hn(i,$y(ta(l)),{width:ea(l,a)+50,classes:"markdown-node-label",useHtmlLabels:s},a),h,f=1;if(s){let d=u.children[0],p=$e(u);f=d.innerHTML.split("
    ").length,d.innerHTML.includes("")&&(f+=d.innerHTML.split("").length-1);let m=d.getElementsByTagName("img");if(m){let g=l.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=a.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,C=parseInt(b,10)*5+"px";y.style.minWidth=C,y.style.maxWidth=C}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=d.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}else{n.includes("font-weight: bolder")&&$e(u).selectAll("tspan").attr("font-weight",""),f=u.children.length;let d=u.children[0];(u.textContent===""||u.textContent.includes(">"))&&(d.textContent=l[0]+l.substring(1).replaceAll(">",">").replaceAll("<","<").trim(),l[1]===" "&&(d.textContent=d.textContent[0]+" "+d.textContent.substring(1))),d.textContent==="undefined"&&(d.textContent=""),h=u.getBBox()}return i.attr("transform","translate(0,"+(-h.height/(2*f)+r)+")"),h.height}var SZ=M(()=>{"use strict";hr();ka();Ft();sr();Gt();Ks();gr();o(EZ,"textHelper");o(Nw,"addText")});async function CZ(t,e){let r=me(),n=r.class.padding??12,i=n,a=e.useHtmlLabels??ur(r.htmlLabels)??!0,s=e;s.annotations=s.annotations??[],s.members=s.members??[],s.methods=s.methods??[];let{shapeSvg:l,bbox:u}=await EZ(t,e,r,a,i),{labelStyles:h,nodeStyles:f}=Qe(e);e.labelStyle=h,e.cssStyles=s.styles||"";let d=s.styles?.join(";")||f||"";e.cssStyles||(e.cssStyles=d.replaceAll("!important","").split(";"));let p=s.members.length===0&&s.methods.length===0&&!r.class?.hideEmptyMembersBox,m=Xe.svg(l),g=Ke(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=u.width,v=u.height;s.members.length===0&&s.methods.length===0?v+=i:s.members.length>0&&s.methods.length===0&&(v+=i*2);let x=-y/2,b=-v/2,w=m.rectangle(x-n,b-n-(p?n:s.members.length===0&&s.methods.length===0?-n/2:0),y+2*n,v+2*n+(p?n*2:s.members.length===0&&s.methods.length===0?-n:0),g),C=l.insert(()=>w,":first-child");C.attr("class","basic label-container");let T=C.node().getBBox();l.selectAll(".text").each((_,I,D)=>{let k=$e(D[I]),L=k.attr("transform"),R=0;if(L){let F=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(L);F&&(R=parseFloat(F[2]))}let O=R+b+n-(p?n:s.members.length===0&&s.methods.length===0?-n/2:0);a||(O-=4);let N=x;(k.attr("class").includes("label-group")||k.attr("class").includes("annotation-group"))&&(N=-k.node()?.getBBox().width/2||0,l.selectAll("text").each(function(B,F,P){window.getComputedStyle(P[F]).textAnchor==="middle"&&(N=0)})),k.attr("transform",`translate(${N}, ${O})`)});let E=l.select(".annotation-group").node().getBBox().height-(p?n/2:0)||0,A=l.select(".label-group").node().getBBox().height-(p?n/2:0)||0,S=l.select(".members-group").node().getBBox().height-(p?n/2:0)||0;if(s.members.length>0||s.methods.length>0||p){let _=m.line(T.x,E+A+b+n,T.x+T.width,E+A+b+n,g);l.insert(()=>_).attr("class","divider").attr("style",d)}if(p||s.members.length>0||s.methods.length>0){let _=m.line(T.x,E+A+S+b+i*2+n,T.x+T.width,E+A+S+b+n+i*2,g);l.insert(()=>_).attr("class","divider").attr("style",d)}if(s.look!=="handDrawn"&&l.selectAll("path").attr("style",d),C.select(":nth-child(2)").attr("style",d),l.selectAll(".divider").select("path").attr("style",d),e.labelStyle?l.selectAll("span").attr("style",e.labelStyle):l.selectAll("span").attr("style",d),!a){let _=RegExp(/color\s*:\s*([^;]*)/),I=_.exec(d);if(I){let D=I[0].replace("color","fill");l.selectAll("tspan").attr("style",D)}else if(h){let D=_.exec(h);if(D){let k=D[0].replace("color","fill");l.selectAll("tspan").attr("style",k)}}}return je(e,C),e.intersect=function(_){return Ye.rect(e,_)},l}var AZ=M(()=>{"use strict";Ft();Gt();hr();Wt();Ut();Ht();SZ();gr();o(CZ,"classBox")});async function _Z(t,e){let{labelStyles:r,nodeStyles:n}=Qe(e);e.labelStyle=r;let i=e,a=e,s=20,l=20,u="verifyMethod"in e,h=ht(e),f=t.insert("g").attr("class",h).attr("id",e.domId??e.id),d;u?d=await _u(f,`<<${i.type}>>`,0,e.labelStyle):d=await _u(f,"<<Element>>",0,e.labelStyle);let p=d,m=await _u(f,i.name,p,e.labelStyle+"; font-weight: bold;");if(p+=m+l,u){let E=await _u(f,`${i.requirementId?`Id: ${i.requirementId}`:""}`,p,e.labelStyle);p+=E;let A=await _u(f,`${i.text?`Text: ${i.text}`:""}`,p,e.labelStyle);p+=A;let S=await _u(f,`${i.risk?`Risk: ${i.risk}`:""}`,p,e.labelStyle);p+=S,await _u(f,`${i.verifyMethod?`Verification: ${i.verifyMethod}`:""}`,p,e.labelStyle)}else{let E=await _u(f,`${a.type?`Type: ${a.type}`:""}`,p,e.labelStyle);p+=E,await _u(f,`${a.docRef?`Doc Ref: ${a.docRef}`:""}`,p,e.labelStyle)}let g=(f.node()?.getBBox().width??200)+s,y=(f.node()?.getBBox().height??200)+s,v=-g/2,x=-y/2,b=Xe.svg(f),w=Ke(e,{});e.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let C=b.rectangle(v,x,g,y,w),T=f.insert(()=>C,":first-child");if(T.attr("class","basic label-container").attr("style",n),f.selectAll(".label").each((E,A,S)=>{let _=$e(S[A]),I=_.attr("transform"),D=0,k=0;if(I){let N=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(I);N&&(D=parseFloat(N[1]),k=parseFloat(N[2]))}let L=k-y/2,R=v+s/2;(A===0||A===1)&&(R=D),_.attr("transform",`translate(${R}, ${L+s})`)}),p>d+m+l){let E=b.line(v,x+d+m+l,v+g,x+d+m+l,w);f.insert(()=>E).attr("style",n)}return je(e,T),e.intersect=function(E){return Ye.rect(e,E)},f}async function _u(t,e,r,n=""){if(e==="")return 0;let i=t.insert("g").attr("class","label").attr("style",n),a=me(),s=a.htmlLabels??!0,l=await Hn(i,$y(ta(e)),{width:ea(e,a)+50,classes:"markdown-node-label",useHtmlLabels:s,style:n},a),u;if(s){let h=l.children[0],f=$e(l);u=h.getBoundingClientRect(),f.attr("width",u.width),f.attr("height",u.height)}else{let h=l.children[0];for(let f of h.children)f.textContent=f.textContent.replaceAll(">",">").replaceAll("<","<"),n&&f.setAttribute("style",n);u=l.getBBox(),u.height+=6}return i.attr("transform",`translate(${-u.width/2},${-u.height/2+r})`),u.height}var DZ=M(()=>{"use strict";Ft();Ht();Ut();Wt();sr();Gt();Ks();hr();o(_Z,"requirementBox");o(_u,"addText")});async function LZ(t,e,{config:r}){let{labelStyles:n,nodeStyles:i}=Qe(e);e.labelStyle=n||"";let a=10,s=e.width;e.width=(e.width??200)-10;let{shapeSvg:l,bbox:u,label:h}=await pt(t,e,ht(e)),f=e.padding||10,d="",p;"ticket"in e&&e.ticket&&r?.kanban?.ticketBaseUrl&&(d=r?.kanban?.ticketBaseUrl.replace("#TICKET#",e.ticket),p=l.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",d).attr("target","_blank"));let m={useHtmlLabels:e.useHtmlLabels,labelStyle:e.labelStyle||"",width:e.width,img:e.img,padding:e.padding||8,centerLabel:!1},g,y;p?{label:g,bbox:y}=await xw(p,"ticket"in e&&e.ticket||"",m):{label:g,bbox:y}=await xw(l,"ticket"in e&&e.ticket||"",m);let{label:v,bbox:x}=await xw(l,"assigned"in e&&e.assigned||"",m);e.width=s;let b=10,w=e?.width||0,C=Math.max(y.height,x.height)/2,T=Math.max(u.height+b*2,e?.height||0)+C,E=-w/2,A=-T/2;h.attr("transform","translate("+(f-w/2)+", "+(-C-u.height/2)+")"),g.attr("transform","translate("+(f-w/2)+", "+(-C+u.height/2)+")"),v.attr("transform","translate("+(f+w/2-x.width-2*a)+", "+(-C+u.height/2)+")");let S,{rx:_,ry:I}=e,{cssStyles:D}=e;if(e.look==="handDrawn"){let k=Xe.svg(l),L=Ke(e,{}),R=_||I?k.path(La(E,A,w,T,_||0),L):k.rectangle(E,A,w,T,L);S=l.insert(()=>R,":first-child"),S.attr("class","basic label-container").attr("style",D||null)}else{S=l.insert("rect",":first-child"),S.attr("class","basic label-container __APA__").attr("style",i).attr("rx",_??5).attr("ry",I??5).attr("x",E).attr("y",A).attr("width",w).attr("height",T);let k="priority"in e&&e.priority;if(k){let L=l.append("line"),R=E+2,O=A+Math.floor((_??0)/2),N=A+T-Math.floor((_??0)/2);L.attr("x1",R).attr("y1",O).attr("x2",R).attr("y2",N).attr("stroke-width","4").attr("stroke",j8e(k))}}return je(e,S),e.height=T,e.intersect=function(k){return Ye.rect(e,k)},l}var j8e,RZ=M(()=>{"use strict";Ft();Ht();Vh();Ut();Wt();j8e=o(t=>{switch(t){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");o(LZ,"kanbanItem")});function NZ(t){return t in HD}var K8e,Q8e,HD,WD=M(()=>{"use strict";xK();TK();EK();CK();_K();LK();NK();IK();PK();FK();GK();VK();HK();qK();XK();KK();ZK();eQ();rQ();iQ();sQ();lQ();uQ();fQ();pQ();gQ();vQ();bQ();TQ();EQ();CQ();_Q();LQ();NQ();IQ();PQ();FQ();GQ();VQ();HQ();qQ();XQ();KQ();ZQ();eZ();rZ();iZ();sZ();lZ();uZ();fZ();pZ();gZ();vZ();bZ();TZ();kZ();AZ();DZ();RZ();K8e=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:WQ},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:zQ},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:YQ},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:tZ},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:zK},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:AK},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:MQ},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:JK},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:xQ},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:yQ},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:hZ},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:dQ},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:UK},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:oZ},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:kK},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:$Q},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:JQ},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:QQ},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:jK},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:tQ},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:RK},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:MK},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:OK},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:wQ},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:yZ},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:QK},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:cZ},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:kQ},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:BK},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:$K},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:mZ},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:wZ},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:WK},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:dZ},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:YK},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:UQ},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:DQ},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:AQ},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:wK},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:DK},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:aZ},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:nZ},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:xZ},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:OQ},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:SQ}],Q8e=o(()=>{let e=[...Object.entries({state:jQ,choice:SK,note:RQ,rectWithTitle:BQ,labelRect:mQ,iconSquare:cQ,iconCircle:aQ,icon:nQ,iconRounded:oQ,imageSquare:hQ,anchor:vK,kanbanItem:LZ,classBox:CZ,erBox:UD,requirementBox:_Z}),...K8e.flatMap(r=>[r.shortName,..."aliases"in r?r.aliases:[],..."internalAliases"in r?r.internalAliases:[]].map(i=>[i,r.handler]))];return Object.fromEntries(e)},"generateShapeMap"),HD=Q8e();o(NZ,"isValidShape")});var Z8e,Mw,MZ=M(()=>{"use strict";hr();pw();Gt();vt();WD();sr();gr();ki();Z8e="flowchart-",Mw=class{constructor(){this.vertexCounter=0;this.config=me();this.vertices=new Map;this.edges=[];this.classes=new Map;this.subGraphs=[];this.subGraphLookup=new Map;this.tooltips=new Map;this.subCount=0;this.firstGraphFlag=!0;this.secCount=-1;this.posCrossRef=[];this.funs=[];this.setAccTitle=Mr;this.setAccDescription=Pr;this.setDiagramTitle=Zr;this.getAccTitle=Or;this.getAccDescription=Br;this.getDiagramTitle=Fr;this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{o(this,"FlowDB")}sanitizeText(e){return Ze.sanitizeText(e,this.config)}lookUpDomId(e){for(let r of this.vertices.values())if(r.id===e)return r.domId;return e}addVertex(e,r,n,i,a,s,l={},u){if(!e||e.trim().length===0)return;let h;if(u!==void 0){let m;u.includes(` +`)?m=u+` +`:m=`{ +`+u+` +}`,h=im(m,{schema:nm})}let f=this.edges.find(m=>m.id===e);if(f){let m=h;m?.animate!==void 0&&(f.animate=m.animate),m?.animation!==void 0&&(f.animation=m.animation);return}let d,p=this.vertices.get(e);if(p===void 0&&(p={id:e,labelType:"text",domId:Z8e+e+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(e,p)),this.vertexCounter++,r!==void 0?(this.config=me(),d=this.sanitizeText(r.text.trim()),p.labelType=r.type,d.startsWith('"')&&d.endsWith('"')&&(d=d.substring(1,d.length-1)),p.text=d):p.text===void 0&&(p.text=e),n!==void 0&&(p.type=n),i?.forEach(m=>{p.styles.push(m)}),a?.forEach(m=>{p.classes.push(m)}),s!==void 0&&(p.dir=s),p.props===void 0?p.props=l:l!==void 0&&Object.assign(p.props,l),h!==void 0){if(h.shape){if(h.shape!==h.shape.toLowerCase()||h.shape.includes("_"))throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`);if(!NZ(h.shape))throw new Error(`No such shape: ${h.shape}.`);p.type=h?.shape}h?.label&&(p.text=h?.label),h?.icon&&(p.icon=h?.icon,!h.label?.trim()&&p.text===e&&(p.text="")),h?.form&&(p.form=h?.form),h?.pos&&(p.pos=h?.pos),h?.img&&(p.img=h?.img,!h.label?.trim()&&p.text===e&&(p.text="")),h?.constraint&&(p.constraint=h.constraint),h.w&&(p.assetWidth=Number(h.w)),h.h&&(p.assetHeight=Number(h.h))}}addSingleLink(e,r,n,i){let l={start:e,end:r,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1};Y.info("abc78 Got edge...",l);let u=n.text;if(u!==void 0&&(l.text=this.sanitizeText(u.text.trim()),l.text.startsWith('"')&&l.text.endsWith('"')&&(l.text=l.text.substring(1,l.text.length-1)),l.labelType=u.type),n!==void 0&&(l.type=n.type,l.stroke=n.stroke,l.length=n.length>10?10:n.length),i&&!this.edges.some(h=>h.id===i))l.id=i,l.isUserDefinedId=!0;else{let h=this.edges.filter(f=>f.start===l.start&&f.end===l.end);h.length===0?l.id=Oh(l.start,l.end,{counter:0,prefix:"L"}):l.id=Oh(l.start,l.end,{counter:h.length+1,prefix:"L"})}if(this.edges.length<(this.config.maxEdges??500))Y.info("Pushing edge..."),this.edges.push(l);else throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}. Initialize mermaid with maxEdges set to a higher number to allow more edges. You cannot set this config via configuration inside the diagram as it is a secure config. -You have to call mermaid.initialize.`)},"addSingleLink"),Z_e=o(function(t,e,r){Y.info("addLink",t,e,r);for(let n of t)for(let i of e)Q_e(n,i,r)},"addLink"),J_e=o(function(t,e){t.forEach(function(r){r==="default"?Cs.defaultInterpolate=e:Cs[r].interpolate=e})},"updateLinkInterpolate"),e9e=o(function(t,e){t.forEach(function(r){if(typeof r=="number"&&r>=Cs.length)throw new Error(`The index ${r} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${Cs.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);r==="default"?Cs.defaultStyle=e:(Cs[r].style=e,(Cs[r]?.style?.length??0)>0&&!Cs[r]?.style?.some(n=>n?.startsWith("fill"))&&Cs[r]?.style?.push("fill:none"))})},"updateLink"),t9e=o(function(t,e){t.split(",").forEach(function(r){let n=Sv.get(r);n===void 0&&(n={id:r,styles:[],textStyles:[]},Sv.set(r,n)),e?.forEach(function(i){if(/color/.exec(i)){let a=i.replace("fill","bgFill");n.textStyles.push(a)}n.styles.push(i)})})},"addClass"),r9e=o(function(t){Go=t,/.*/.exec(Go)&&(Go="LR"),/.*v/.exec(Go)&&(Go="TB"),Go==="TD"&&(Go="TB")},"setDirection"),aL=o(function(t,e){for(let r of t.split(",")){let n=Vh.get(r);n&&n.classes.push(e);let i=nL.get(r);i&&i.classes.push(e)}},"setClass"),n9e=o(function(t,e){if(e!==void 0){e=Y5(e);for(let r of t.split(","))iL.set(H5==="gen-1"?q5(r):r,e)}},"setTooltip"),i9e=o(function(t,e,r){let n=q5(t);if(de().securityLevel!=="loose"||e===void 0)return;let i=[];if(typeof r=="string"){i=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let s=0;s")),i.classed("hover",!0)}).on("mouseout",function(){e.transition().duration(500).style("opacity",0),ze(this).classed("hover",!1)})},"setupToolTips");W5.push(HZ);c9e=o(function(t="gen-1"){Vh=new Map,Sv=new Map,Cs=[],W5=[HZ],Au=[],nL=new Map,U5=0,iL=new Map,tL=!0,H5=t,dm=de(),_r()},"clear"),u9e=o(t=>{H5=t||"gen-2"},"setGen"),h9e=o(function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},"defaultStyle"),f9e=o(function(t,e,r){let n=t.text.trim(),i=r.text;t===r&&/\s/.exec(r.text)&&(n=void 0);function a(h){let f={boolean:{},number:{},string:{}},d=[],p;return{nodeList:h.filter(function(g){let y=typeof g;return g.stmt&&g.stmt==="dir"?(p=g.value,!1):g.trim()===""?!1:y in f?f[y].hasOwnProperty(g)?!1:f[y][g]=!0:d.includes(g)?!1:d.push(g)}),dir:p}}o(a,"uniq");let{nodeList:s,dir:l}=a(e.flat());if(H5==="gen-1")for(let h=0;h2e3)return{result:!1,count:0};if(WZ[Ev]=e,Au[e].id===t)return{result:!0,count:0};let n=0,i=1;for(;n=0){let s=YZ(t,a);if(s.result)return{result:!0,count:i+s.count};i=i+s.count}n=n+1}return{result:!1,count:i}},"indexNodes2"),p9e=o(function(t){return WZ[t]},"getDepthFirstPos"),m9e=o(function(){Ev=-1,Au.length>0&&YZ("none",Au.length-1)},"indexNodes"),qZ=o(function(){return Au},"getSubGraphs"),g9e=o(()=>tL?(tL=!1,!0):!1,"firstGraph"),y9e=o(t=>{let e=t.trim(),r="arrow_open";switch(e[0]){case"<":r="arrow_point",e=e.slice(1);break;case"x":r="arrow_cross",e=e.slice(1);break;case"o":r="arrow_circle",e=e.slice(1);break}let n="normal";return e.includes("=")&&(n="thick"),e.includes(".")&&(n="dotted"),{type:r,stroke:n}},"destructStartLink"),v9e=o((t,e)=>{let r=e.length,n=0;for(let i=0;i{let e=t.trim(),r=e.slice(0,-1),n="arrow_open";switch(e.slice(-1)){case"x":n="arrow_cross",e.startsWith("x")&&(n="double_"+n,r=r.slice(1));break;case">":n="arrow_point",e.startsWith("<")&&(n="double_"+n,r=r.slice(1));break;case"o":n="arrow_circle",e.startsWith("o")&&(n="double_"+n,r=r.slice(1));break}let i="normal",a=r.length-1;r.startsWith("=")&&(i="thick"),r.startsWith("~")&&(i="invisible");let s=v9e(".",r);return s&&(i="dotted",a=s),{type:n,stroke:i,length:a}},"destructEndLink"),b9e=o((t,e)=>{let r=x9e(t),n;if(e){if(n=y9e(e),n.stroke!==r.stroke)return{type:"INVALID",stroke:"INVALID"};if(n.type==="arrow_open")n.type=r.type;else{if(n.type!==r.type)return{type:"INVALID",stroke:"INVALID"};n.type="double_"+n.type}return n.type==="double_arrow"&&(n.type="double_arrow_point"),n.length=r.length,n}return r},"destructLink"),XZ=o((t,e)=>{for(let r of t)if(r.nodes.includes(e))return!0;return!1},"exists"),jZ=o((t,e)=>{let r=[];return t.nodes.forEach((n,i)=>{XZ(e,n)||r.push(t.nodes[i])}),{nodes:r}},"makeUniq"),w9e={firstGraph:g9e},T9e=o(t=>{if(t.img)return"imageSquare";if(t.icon)return t.form==="circle"?"iconCircle":t.form==="square"?"iconSquare":t.form==="rounded"?"iconRounded":"icon";switch(t.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return t.type}},"getTypeFromVertex"),k9e=o((t,e)=>t.find(r=>r.id===e),"findNode"),E9e=o(t=>{let e="none",r="arrow_point";switch(t){case"arrow_point":case"arrow_circle":case"arrow_cross":r=t;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":e=t.replace("double_",""),r=e;break}return{arrowTypeStart:e,arrowTypeEnd:r}},"destructEdgeType"),S9e=o((t,e,r,n,i,a)=>{let s=r.get(t.id),l=n.get(t.id)??!1,u=k9e(e,t.id);if(u)u.cssStyles=t.styles,u.cssCompiledStyles=rL(t.classes),u.cssClasses=t.classes.join(" ");else{let h={id:t.id,label:t.text,labelStyle:"",parentId:s,padding:i.flowchart?.padding||8,cssStyles:t.styles,cssCompiledStyles:rL(["default","node",...t.classes]),cssClasses:"default "+t.classes.join(" "),dir:t.dir,domId:t.domId,look:a,link:t.link,linkTarget:t.linkTarget,tooltip:$Z(t.id),icon:t.icon,pos:t.pos,img:t.img,assetWidth:t.assetWidth,assetHeight:t.assetHeight,constraint:t.constraint};l?e.push({...h,isGroup:!0,shape:"rect"}):e.push({...h,isGroup:!1,shape:T9e(t)})}},"addNodeFromVertex");o(rL,"getCompiledStyles");C9e=o(()=>{let t=de(),e=[],r=[],n=qZ(),i=new Map,a=new Map;for(let u=n.length-1;u>=0;u--){let h=n[u];h.nodes.length>0&&a.set(h.id,!0);for(let f of h.nodes)i.set(f,h.id)}for(let u=n.length-1;u>=0;u--){let h=n[u];e.push({id:h.id,label:h.title,labelStyle:"",parentId:i.get(h.id),padding:8,cssCompiledStyles:rL(h.classes),cssClasses:h.classes.join(" "),shape:"rect",dir:h.dir,isGroup:!0,look:t.look})}VZ().forEach(u=>{S9e(u,e,i,a,t,t.look||"classic")});let l=UZ();return l.forEach((u,h)=>{let{arrowTypeStart:f,arrowTypeEnd:d}=E9e(u.type),p=[...l.defaultStyle??[]];u.style&&p.push(...u.style);let m={id:p5(u.start,u.end,{counter:h,prefix:"L"}),start:u.start,end:u.end,type:u.type??"normal",label:u.text,labelpos:"c",thickness:u.stroke,minlen:u.length,classes:u?.stroke==="invisible"?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:u?.stroke==="invisible"?"none":f,arrowTypeEnd:u?.stroke==="invisible"?"none":d,arrowheadStyle:"fill: #333",labelStyle:p,style:p,pattern:u.stroke,look:t.look};r.push(m)}),{nodes:e,edges:r,other:{},config:t}},"getData"),X5={defaultConfig:o(()=>S4.flowchart,"defaultConfig"),setAccTitle:Rr,getAccTitle:Pr,getAccDescription:Fr,getData:C9e,setAccDescription:Br,addVertex:K_e,lookUpDomId:q5,addLink:Z_e,updateLinkInterpolate:J_e,updateLink:e9e,addClass:t9e,setDirection:r9e,setClass:aL,setTooltip:n9e,getTooltip:$Z,setClickEvent:s9e,setLink:a9e,bindFunctions:o9e,getDirection:sL,getVertices:VZ,getEdges:UZ,getClasses:l9e,clear:c9e,setGen:u9e,defaultStyle:h9e,addSubGraph:f9e,getDepthFirstPos:p9e,indexNodes:m9e,getSubGraphs:qZ,destructLink:b9e,lex:w9e,exists:XZ,makeUniq:jZ,setDiagramTitle:ln,getDiagramTitle:Jr}});var pm,j5=M(()=>{"use strict";mr();pm=o((t,e)=>{let r;return e==="sandbox"&&(r=ze("#i"+t)),(e==="sandbox"?ze(r.nodes()[0].contentDocument.body):ze("body")).select(`[id="${t}"]`)},"getDiagramElement")});var _u,Cv=M(()=>{"use strict";_u=o(({flowchart:t})=>{let e=t?.subGraphTitleMargin?.top??0,r=t?.subGraphTitleMargin?.bottom??0,n=e+r;return{subGraphTitleTopMargin:e,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:n}},"getSubGraphTitleMargins")});var KZ,A9e,_9e,L9e,D9e,N9e,R9e,QZ,mm,ZZ,K5=M(()=>{"use strict";Vt();fr();ht();Cv();mr();jt();Dl();w9();I5();zh();Xt();KZ=o(async(t,e)=>{Y.info("Creating subgraph rect for ",e.id,e);let r=de(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:f}=et(e),d=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),p=xr(r.flowchart.htmlLabels),m=d.insert("g").attr("class","cluster-label "),g=await Si(m,e.label,{style:e.labelStyle,useHtmlLabels:p,isNode:!0}),y=g.getBBox();if(xr(r.flowchart.htmlLabels)){let L=g.children[0],C=ze(g);y=L.getBoundingClientRect(),C.attr("width",y.width),C.attr("height",y.height)}let v=e.width<=y.width+e.padding?y.width+e.padding:e.width;e.width<=y.width+e.padding?e.diff=(v-e.width)/2-e.padding:e.diff=-e.padding;let x=e.height,b=e.x-v/2,w=e.y-x/2;Y.trace("Data ",e,JSON.stringify(e));let _;if(e.look==="handDrawn"){let L=Ke.svg(d),C=Ze(e,{roughness:.7,fill:a,stroke:s,fillWeight:3,seed:i}),A=L.path(La(b,w,v,x,0),C);_=d.insert(()=>(Y.debug("Rough node insert CXC",A),A),":first-child"),_.select("path:nth-child(2)").attr("style",h.join(";")),_.select("path").attr("style",f.join(";").replace("fill","stroke"))}else _=d.insert("rect",":first-child"),_.attr("style",u).attr("rx",e.rx).attr("ry",e.ry).attr("x",b).attr("y",w).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:T}=_u(r);if(m.attr("transform",`translate(${e.x-y.width/2}, ${e.y-e.height/2+T})`),l){let L=m.select("span");L&&L.attr("style",l)}let E=_.node().getBBox();return e.offsetX=0,e.width=E.width,e.height=E.height,e.offsetY=y.height-e.padding/2,e.intersect=function(L){return Oh(e,L)},{cluster:d,labelBBox:y}},"rect"),A9e=o((t,e)=>{let r=t.insert("g").attr("class","note-cluster").attr("id",e.id),n=r.insert("rect",":first-child"),i=0*e.padding,a=i/2;n.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+i).attr("height",e.height+i).attr("fill","none");let s=n.node().getBBox();return e.width=s.width,e.height=s.height,e.intersect=function(l){return Oh(e,l)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),_9e=o(async(t,e)=>{let r=de(),{themeVariables:n,handDrawnSeed:i}=r,{altBackground:a,compositeBackground:s,compositeTitleBackground:l,nodeBorder:u}=n,h=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-id",e.id).attr("data-look",e.look),f=h.insert("g",":first-child"),d=h.insert("g").attr("class","cluster-label"),p=h.append("rect"),m=d.node().appendChild(await gc(e.label,e.labelStyle,void 0,!0)),g=m.getBBox();if(xr(r.flowchart.htmlLabels)){let A=m.children[0],I=ze(m);g=A.getBoundingClientRect(),I.attr("width",g.width),I.attr("height",g.height)}let y=0*e.padding,v=y/2,x=(e.width<=g.width+e.padding?g.width+e.padding:e.width)+y;e.width<=g.width+e.padding?e.diff=(x-e.width)/2-e.padding:e.diff=-e.padding;let b=e.height+y,w=e.height+y-g.height-6,_=e.x-x/2,T=e.y-b/2;e.width=x;let E=e.y-e.height/2-v+g.height+2,L;if(e.look==="handDrawn"){let A=e.cssClasses.includes("statediagram-cluster-alt"),I=Ke.svg(h),D=e.rx||e.ry?I.path(La(_,T,x,b,10),{roughness:.7,fill:l,fillStyle:"solid",stroke:u,seed:i}):I.rectangle(_,T,x,b,{seed:i});L=h.insert(()=>D,":first-child");let k=I.rectangle(_,E,x,w,{fill:A?a:s,fillStyle:A?"hachure":"solid",stroke:u,seed:i});L=h.insert(()=>D,":first-child"),p=h.insert(()=>k)}else L=f.insert("rect",":first-child"),L.attr("class","outer").attr("x",_).attr("y",T).attr("width",x).attr("height",b).attr("data-look",e.look),p.attr("class","inner").attr("x",_).attr("y",E).attr("width",x).attr("height",w);d.attr("transform",`translate(${e.x-g.width/2}, ${T+1-(xr(r.flowchart.htmlLabels)?0:3)})`);let C=L.node().getBBox();return e.height=C.height,e.offsetX=0,e.offsetY=g.height-e.padding/2,e.labelBBox=g,e.intersect=function(A){return Oh(e,A)},{cluster:h,labelBBox:g}},"roundedWithTitle"),L9e=o(async(t,e)=>{Y.info("Creating subgraph rect for ",e.id,e);let r=de(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:f}=et(e),d=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),p=xr(r.flowchart.htmlLabels),m=d.insert("g").attr("class","cluster-label "),g=await Si(m,e.label,{style:e.labelStyle,useHtmlLabels:p,isNode:!0,width:e.width}),y=g.getBBox();if(xr(r.flowchart.htmlLabels)){let L=g.children[0],C=ze(g);y=L.getBoundingClientRect(),C.attr("width",y.width),C.attr("height",y.height)}let v=e.width<=y.width+e.padding?y.width+e.padding:e.width;e.width<=y.width+e.padding?e.diff=(v-e.width)/2-e.padding:e.diff=-e.padding;let x=e.height,b=e.x-v/2,w=e.y-x/2;Y.trace("Data ",e,JSON.stringify(e));let _;if(e.look==="handDrawn"){let L=Ke.svg(d),C=Ze(e,{roughness:.7,fill:a,stroke:s,fillWeight:4,seed:i}),A=L.path(La(b,w,v,x,e.rx),C);_=d.insert(()=>(Y.debug("Rough node insert CXC",A),A),":first-child"),_.select("path:nth-child(2)").attr("style",h.join(";")),_.select("path").attr("style",f.join(";").replace("fill","stroke"))}else _=d.insert("rect",":first-child"),_.attr("style",u).attr("rx",e.rx).attr("ry",e.ry).attr("x",b).attr("y",w).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:T}=_u(r);if(m.attr("transform",`translate(${e.x-y.width/2}, ${e.y-e.height/2+T})`),l){let L=m.select("span");L&&L.attr("style",l)}let E=_.node().getBBox();return e.offsetX=0,e.width=E.width,e.height=E.height,e.offsetY=y.height-e.padding/2,e.intersect=function(L){return Oh(e,L)},{cluster:d,labelBBox:y}},"kanbanSection"),D9e=o((t,e)=>{let r=de(),{themeVariables:n,handDrawnSeed:i}=r,{nodeBorder:a}=n,s=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-look",e.look),l=s.insert("g",":first-child"),u=0*e.padding,h=e.width+u;e.diff=-e.padding;let f=e.height+u,d=e.x-h/2,p=e.y-f/2;e.width=h;let m;if(e.look==="handDrawn"){let v=Ke.svg(s).rectangle(d,p,h,f,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:i});m=s.insert(()=>v,":first-child")}else m=l.insert("rect",":first-child"),m.attr("class","divider").attr("x",d).attr("y",p).attr("width",h).attr("height",f).attr("data-look",e.look);let g=m.node().getBBox();return e.height=g.height,e.offsetX=0,e.offsetY=0,e.intersect=function(y){return Oh(e,y)},{cluster:s,labelBBox:{}}},"divider"),N9e=KZ,R9e={rect:KZ,squareRect:N9e,roundedWithTitle:_9e,noteGroup:A9e,divider:D9e,kanbanSection:L9e},QZ=new Map,mm=o(async(t,e)=>{let r=e.shape||"rect",n=await R9e[r](t,e);return QZ.set(e.id,n),n},"insertCluster"),ZZ=o(()=>{QZ=new Map},"clear")});function Q5(t,e){if(t===void 0||e===void 0)return{angle:0,deltaX:0,deltaY:0};t=Un(t),e=Un(e);let[r,n]=[t.x,t.y],[i,a]=[e.x,e.y],s=i-r,l=a-n;return{angle:Math.atan(l/s),deltaX:s,deltaY:l}}var $o,Un,Z5,lL=M(()=>{"use strict";$o={aggregation:18,extension:18,composition:18,dependency:6,lollipop:13.5,arrow_point:4};o(Q5,"calculateDeltaAndAngle");Un=o(t=>Array.isArray(t)?{x:t[0],y:t[1]}:t,"pointTransformer"),Z5=o(t=>({x:o(function(e,r,n){let i=0,a=Un(n[0]).x=0?1:-1)}else if(r===n.length-1&&Object.hasOwn($o,t.arrowTypeEnd)){let{angle:m,deltaX:g}=Q5(n[n.length-1],n[n.length-2]);i=$o[t.arrowTypeEnd]*Math.cos(m)*(g>=0?1:-1)}let s=Math.abs(Un(e).x-Un(n[n.length-1]).x),l=Math.abs(Un(e).y-Un(n[n.length-1]).y),u=Math.abs(Un(e).x-Un(n[0]).x),h=Math.abs(Un(e).y-Un(n[0]).y),f=$o[t.arrowTypeStart],d=$o[t.arrowTypeEnd],p=1;if(s0&&l0&&h=0?1:-1)}else if(r===n.length-1&&Object.hasOwn($o,t.arrowTypeEnd)){let{angle:m,deltaY:g}=Q5(n[n.length-1],n[n.length-2]);i=$o[t.arrowTypeEnd]*Math.abs(Math.sin(m))*(g>=0?1:-1)}let s=Math.abs(Un(e).y-Un(n[n.length-1]).y),l=Math.abs(Un(e).x-Un(n[n.length-1]).x),u=Math.abs(Un(e).y-Un(n[0]).y),h=Math.abs(Un(e).x-Un(n[0]).x),f=$o[t.arrowTypeStart],d=$o[t.arrowTypeEnd],p=1;if(s0&&l0&&h{"use strict";ht();eJ=o((t,e,r,n,i)=>{e.arrowTypeStart&&JZ(t,"start",e.arrowTypeStart,r,n,i),e.arrowTypeEnd&&JZ(t,"end",e.arrowTypeEnd,r,n,i)},"addEdgeMarkers"),M9e={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},JZ=o((t,e,r,n,i,a)=>{let s=M9e[r];if(!s){Y.warn(`Unknown arrow type: ${r}`);return}let l=e==="start"?"Start":"End";t.attr(`marker-${e}`,`url(${n}#${i}_${a}-${s}${l})`)},"addEdgeMarker")});function J5(t,e){de().flowchart.htmlLabels&&t&&(t.style.width=e.length*9+"px",t.style.height="12px")}function P9e(t){let e=[],r=[];for(let n=1;n5&&Math.abs(a.y-i.y)>5||i.y===a.y&&a.x===s.x&&Math.abs(a.x-i.x)>5&&Math.abs(a.y-s.y)>5)&&(e.push(a),r.push(n))}return{cornerPoints:e,cornerPointPositions:r}}var ew,ua,iJ,Av,tw,rw,I9e,O9e,rJ,nJ,B9e,nw,cL=M(()=>{"use strict";Vt();fr();ht();Dl();hr();lL();Cv();mr();jt();I5();tJ();ew=new Map,ua=new Map,iJ=o(()=>{ew.clear(),ua.clear()},"clear"),Av=o(t=>t?t.reduce((r,n)=>r+";"+n,""):"","getLabelStyles"),tw=o(async(t,e)=>{let r=xr(de().flowchart.htmlLabels),n=await Si(t,e.label,{style:Av(e.labelStyle),useHtmlLabels:r,addSvgBackground:!0,isNode:!1});Y.info("abc82",e,e.labelType);let i=t.insert("g").attr("class","edgeLabel"),a=i.insert("g").attr("class","label");a.node().appendChild(n);let s=n.getBBox();if(r){let u=n.children[0],h=ze(n);s=u.getBoundingClientRect(),h.attr("width",s.width),h.attr("height",s.height)}a.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),ew.set(e.id,i),e.width=s.width,e.height=s.height;let l;if(e.startLabelLeft){let u=await gc(e.startLabelLeft,Av(e.labelStyle)),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),ua.get(e.id)||ua.set(e.id,{}),ua.get(e.id).startLeft=h,J5(l,e.startLabelLeft)}if(e.startLabelRight){let u=await gc(e.startLabelRight,Av(e.labelStyle)),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=h.node().appendChild(u),f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),ua.get(e.id)||ua.set(e.id,{}),ua.get(e.id).startRight=h,J5(l,e.startLabelRight)}if(e.endLabelLeft){let u=await gc(e.endLabelLeft,Av(e.labelStyle)),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),h.node().appendChild(u),ua.get(e.id)||ua.set(e.id,{}),ua.get(e.id).endLeft=h,J5(l,e.endLabelLeft)}if(e.endLabelRight){let u=await gc(e.endLabelRight,Av(e.labelStyle)),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),h.node().appendChild(u),ua.get(e.id)||ua.set(e.id,{}),ua.get(e.id).endRight=h,J5(l,e.endLabelRight)}return n},"insertEdgeLabel");o(J5,"setTerminalWidth");rw=o((t,e)=>{Y.debug("Moving label abc88 ",t.id,t.label,ew.get(t.id),e);let r=e.updatedPath?e.updatedPath:e.originalPath,n=de(),{subGraphTitleTotalMargin:i}=_u(n);if(t.label){let a=ew.get(t.id),s=t.x,l=t.y;if(r){let u=Ut.calcLabelPosition(r);Y.debug("Moving label "+t.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),e.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(t.startLabelLeft){let a=ua.get(t.id).startLeft,s=t.x,l=t.y;if(r){let u=Ut.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.startLabelRight){let a=ua.get(t.id).startRight,s=t.x,l=t.y;if(r){let u=Ut.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelLeft){let a=ua.get(t.id).endLeft,s=t.x,l=t.y;if(r){let u=Ut.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelRight){let a=ua.get(t.id).endRight,s=t.x,l=t.y;if(r){let u=Ut.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),I9e=o((t,e)=>{let r=t.x,n=t.y,i=Math.abs(e.x-r),a=Math.abs(e.y-n),s=t.width/2,l=t.height/2;return i>=s||a>=l},"outsideNode"),O9e=o((t,e,r)=>{Y.debug(`intersection calc abc89: +You have to call mermaid.initialize.`)}isLinkData(e){return e!==null&&typeof e=="object"&&"id"in e&&typeof e.id=="string"}addLink(e,r,n){let i=this.isLinkData(n)?n.id.replace("@",""):void 0;Y.info("addLink",e,r,i);for(let a of e)for(let s of r){let l=a===e[e.length-1],u=s===r[0];l&&u?this.addSingleLink(a,s,n,i):this.addSingleLink(a,s,n,void 0)}}updateLinkInterpolate(e,r){e.forEach(n=>{n==="default"?this.edges.defaultInterpolate=r:this.edges[n].interpolate=r})}updateLink(e,r){e.forEach(n=>{if(typeof n=="number"&&n>=this.edges.length)throw new Error(`The index ${n} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);n==="default"?this.edges.defaultStyle=r:(this.edges[n].style=r,(this.edges[n]?.style?.length??0)>0&&!this.edges[n]?.style?.some(i=>i?.startsWith("fill"))&&this.edges[n]?.style?.push("fill:none"))})}addClass(e,r){let n=r.join().replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");e.split(",").forEach(i=>{let a=this.classes.get(i);a===void 0&&(a={id:i,styles:[],textStyles:[]},this.classes.set(i,a)),n?.forEach(s=>{if(/color/.exec(s)){let l=s.replace("fill","bgFill");a.textStyles.push(l)}a.styles.push(s)})})}setDirection(e){this.direction=e,/.*/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),this.direction==="TD"&&(this.direction="TB")}setClass(e,r){for(let n of e.split(",")){let i=this.vertices.get(n);i&&i.classes.push(r);let a=this.edges.find(l=>l.id===n);a&&a.classes.push(r);let s=this.subGraphLookup.get(n);s&&s.classes.push(r)}}setTooltip(e,r){if(r!==void 0){r=this.sanitizeText(r);for(let n of e.split(","))this.tooltips.set(this.version==="gen-1"?this.lookUpDomId(n):n,r)}}setClickFun(e,r,n){let i=this.lookUpDomId(e);if(me().securityLevel!=="loose"||r===void 0)return;let a=[];if(typeof n=="string"){a=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let l=0;l{let l=document.querySelector(`[id="${i}"]`);l!==null&&l.addEventListener("click",()=>{$t.runFunc(r,...a)},!1)}))}setLink(e,r,n){e.split(",").forEach(i=>{let a=this.vertices.get(i);a!==void 0&&(a.link=$t.formatUrl(r,this.config),a.linkTarget=n)}),this.setClass(e,"clickable")}getTooltip(e){return this.tooltips.get(e)}setClickEvent(e,r,n){e.split(",").forEach(i=>{this.setClickFun(i,r,n)}),this.setClass(e,"clickable")}bindFunctions(e){this.funs.forEach(r=>{r(e)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(e){let r=$e(".mermaidTooltip");(r._groups||r)[0][0]===null&&(r=$e("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),$e(e).select("svg").selectAll("g.node").on("mouseover",a=>{let s=$e(a.currentTarget);if(s.attr("title")===null)return;let u=a.currentTarget?.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.text(s.attr("title")).style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.bottom+"px"),r.html(r.html().replace(/<br\/>/g,"
    ")),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),$e(a.currentTarget).classed("hover",!1)})}clear(e="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=e,this.config=me(),Dr()}setGen(e){this.version=e||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(e,r,n){let i=e.text.trim(),a=n.text;e===n&&/\s/.exec(n.text)&&(i=void 0);let s=o(f=>{let d={boolean:{},number:{},string:{}},p=[],m;return{nodeList:f.filter(function(y){let v=typeof y;return y.stmt&&y.stmt==="dir"?(m=y.value,!1):y.trim()===""?!1:v in d?d[v].hasOwnProperty(y)?!1:d[v][y]=!0:p.includes(y)?!1:p.push(y)}),dir:m}},"uniq"),{nodeList:l,dir:u}=s(r.flat());if(this.version==="gen-1")for(let f=0;f2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=r,this.subGraphs[r].id===e)return{result:!0,count:0};let i=0,a=1;for(;i=0){let l=this.indexNodes2(e,s);if(l.result)return{result:!0,count:a+l.count};a=a+l.count}i=i+1}return{result:!1,count:a}}getDepthFirstPos(e){return this.posCrossRef[e]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return this.firstGraphFlag?(this.firstGraphFlag=!1,!0):!1}destructStartLink(e){let r=e.trim(),n="arrow_open";switch(r[0]){case"<":n="arrow_point",r=r.slice(1);break;case"x":n="arrow_cross",r=r.slice(1);break;case"o":n="arrow_circle",r=r.slice(1);break}let i="normal";return r.includes("=")&&(i="thick"),r.includes(".")&&(i="dotted"),{type:n,stroke:i}}countChar(e,r){let n=r.length,i=0;for(let a=0;a":i="arrow_point",r.startsWith("<")&&(i="double_"+i,n=n.slice(1));break;case"o":i="arrow_circle",r.startsWith("o")&&(i="double_"+i,n=n.slice(1));break}let a="normal",s=n.length-1;n.startsWith("=")&&(a="thick"),n.startsWith("~")&&(a="invisible");let l=this.countChar(".",n);return l&&(a="dotted",s=l),{type:i,stroke:a,length:s}}destructLink(e,r){let n=this.destructEndLink(e),i;if(r){if(i=this.destructStartLink(r),i.stroke!==n.stroke)return{type:"INVALID",stroke:"INVALID"};if(i.type==="arrow_open")i.type=n.type;else{if(i.type!==n.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return i.type==="double_arrow"&&(i.type="double_arrow_point"),i.length=n.length,i}return n}exists(e,r){for(let n of e)if(n.nodes.includes(r))return!0;return!1}makeUniq(e,r){let n=[];return e.nodes.forEach((i,a)=>{this.exists(r,i)||n.push(e.nodes[a])}),{nodes:n}}getTypeFromVertex(e){if(e.img)return"imageSquare";if(e.icon)return e.form==="circle"?"iconCircle":e.form==="square"?"iconSquare":e.form==="rounded"?"iconRounded":"icon";switch(e.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return e.type}}findNode(e,r){return e.find(n=>n.id===r)}destructEdgeType(e){let r="none",n="arrow_point";switch(e){case"arrow_point":case"arrow_circle":case"arrow_cross":n=e;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":r=e.replace("double_",""),n=r;break}return{arrowTypeStart:r,arrowTypeEnd:n}}addNodeFromVertex(e,r,n,i,a,s){let l=n.get(e.id),u=i.get(e.id)??!1,h=this.findNode(r,e.id);if(h)h.cssStyles=e.styles,h.cssCompiledStyles=this.getCompiledStyles(e.classes),h.cssClasses=e.classes.join(" ");else{let f={id:e.id,label:e.text,labelStyle:"",parentId:l,padding:a.flowchart?.padding||8,cssStyles:e.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...e.classes]),cssClasses:"default "+e.classes.join(" "),dir:e.dir,domId:e.domId,look:s,link:e.link,linkTarget:e.linkTarget,tooltip:this.getTooltip(e.id),icon:e.icon,pos:e.pos,img:e.img,assetWidth:e.assetWidth,assetHeight:e.assetHeight,constraint:e.constraint};u?r.push({...f,isGroup:!0,shape:"rect"}):r.push({...f,isGroup:!1,shape:this.getTypeFromVertex(e)})}}getCompiledStyles(e){let r=[];for(let n of e){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}getData(){let e=me(),r=[],n=[],i=this.getSubGraphs(),a=new Map,s=new Map;for(let h=i.length-1;h>=0;h--){let f=i[h];f.nodes.length>0&&s.set(f.id,!0);for(let d of f.nodes)a.set(d,f.id)}for(let h=i.length-1;h>=0;h--){let f=i[h];r.push({id:f.id,label:f.title,labelStyle:"",parentId:a.get(f.id),padding:8,cssCompiledStyles:this.getCompiledStyles(f.classes),cssClasses:f.classes.join(" "),shape:"rect",dir:f.dir,isGroup:!0,look:e.look})}this.getVertices().forEach(h=>{this.addNodeFromVertex(h,r,a,s,e,e.look||"classic")});let u=this.getEdges();return u.forEach((h,f)=>{let{arrowTypeStart:d,arrowTypeEnd:p}=this.destructEdgeType(h.type),m=[...u.defaultStyle??[]];h.style&&m.push(...h.style);let g={id:Oh(h.start,h.end,{counter:f,prefix:"L"},h.id),isUserDefinedId:h.isUserDefinedId,start:h.start,end:h.end,type:h.type??"normal",label:h.text,labelpos:"c",thickness:h.stroke,minlen:h.length,classes:h?.stroke==="invisible"?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":d,arrowTypeEnd:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":p,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(h.classes),labelStyle:m,style:m,pattern:h.stroke,look:e.look,animate:h.animate,animation:h.animation};n.push(g)}),{nodes:r,edges:n,other:{},config:e}}defaultConfig(){return m3.flowchart}}});var gc,hm=M(()=>{"use strict";hr();gc=o((t,e)=>{let r;return e==="sandbox"&&(r=$e("#i"+t)),(e==="sandbox"?$e(r.nodes()[0].contentDocument.body):$e("body")).select(`[id="${t}"]`)},"getDiagramElement")});var Du,o2=M(()=>{"use strict";Du=o(({flowchart:t})=>{let e=t?.subGraphTitleMargin?.top??0,r=t?.subGraphTitleMargin?.bottom??0,n=e+r;return{subGraphTitleTopMargin:e,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:n}},"getSubGraphTitleMargins")});var IZ,J8e,e_e,t_e,r_e,n_e,i_e,OZ,fm,PZ,Iw=M(()=>{"use strict";Gt();gr();vt();o2();hr();Wt();Ks();ED();Rw();Vh();Ut();IZ=o(async(t,e)=>{Y.info("Creating subgraph rect for ",e.id,e);let r=me(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:f}=Qe(e),d=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),p=ur(r.flowchart.htmlLabels),m=d.insert("g").attr("class","cluster-label "),g=await Hn(m,e.label,{style:e.labelStyle,useHtmlLabels:p,isNode:!0}),y=g.getBBox();if(ur(r.flowchart.htmlLabels)){let A=g.children[0],S=$e(g);y=A.getBoundingClientRect(),S.attr("width",y.width),S.attr("height",y.height)}let v=e.width<=y.width+e.padding?y.width+e.padding:e.width;e.width<=y.width+e.padding?e.diff=(v-e.width)/2-e.padding:e.diff=-e.padding;let x=e.height,b=e.x-v/2,w=e.y-x/2;Y.trace("Data ",e,JSON.stringify(e));let C;if(e.look==="handDrawn"){let A=Xe.svg(d),S=Ke(e,{roughness:.7,fill:a,stroke:s,fillWeight:3,seed:i}),_=A.path(La(b,w,v,x,0),S);C=d.insert(()=>(Y.debug("Rough node insert CXC",_),_),":first-child"),C.select("path:nth-child(2)").attr("style",h.join(";")),C.select("path").attr("style",f.join(";").replace("fill","stroke"))}else C=d.insert("rect",":first-child"),C.attr("style",u).attr("rx",e.rx).attr("ry",e.ry).attr("x",b).attr("y",w).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:T}=Du(r);if(m.attr("transform",`translate(${e.x-y.width/2}, ${e.y-e.height/2+T})`),l){let A=m.select("span");A&&A.attr("style",l)}let E=C.node().getBBox();return e.offsetX=0,e.width=E.width,e.height=E.height,e.offsetY=y.height-e.padding/2,e.intersect=function(A){return Fh(e,A)},{cluster:d,labelBBox:y}},"rect"),J8e=o((t,e)=>{let r=t.insert("g").attr("class","note-cluster").attr("id",e.id),n=r.insert("rect",":first-child"),i=0*e.padding,a=i/2;n.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+i).attr("height",e.height+i).attr("fill","none");let s=n.node().getBBox();return e.width=s.width,e.height=s.height,e.intersect=function(l){return Fh(e,l)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),e_e=o(async(t,e)=>{let r=me(),{themeVariables:n,handDrawnSeed:i}=r,{altBackground:a,compositeBackground:s,compositeTitleBackground:l,nodeBorder:u}=n,h=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-id",e.id).attr("data-look",e.look),f=h.insert("g",":first-child"),d=h.insert("g").attr("class","cluster-label"),p=h.append("rect"),m=d.node().appendChild(await mc(e.label,e.labelStyle,void 0,!0)),g=m.getBBox();if(ur(r.flowchart.htmlLabels)){let _=m.children[0],I=$e(m);g=_.getBoundingClientRect(),I.attr("width",g.width),I.attr("height",g.height)}let y=0*e.padding,v=y/2,x=(e.width<=g.width+e.padding?g.width+e.padding:e.width)+y;e.width<=g.width+e.padding?e.diff=(x-e.width)/2-e.padding:e.diff=-e.padding;let b=e.height+y,w=e.height+y-g.height-6,C=e.x-x/2,T=e.y-b/2;e.width=x;let E=e.y-e.height/2-v+g.height+2,A;if(e.look==="handDrawn"){let _=e.cssClasses.includes("statediagram-cluster-alt"),I=Xe.svg(h),D=e.rx||e.ry?I.path(La(C,T,x,b,10),{roughness:.7,fill:l,fillStyle:"solid",stroke:u,seed:i}):I.rectangle(C,T,x,b,{seed:i});A=h.insert(()=>D,":first-child");let k=I.rectangle(C,E,x,w,{fill:_?a:s,fillStyle:_?"hachure":"solid",stroke:u,seed:i});A=h.insert(()=>D,":first-child"),p=h.insert(()=>k)}else A=f.insert("rect",":first-child"),A.attr("class","outer").attr("x",C).attr("y",T).attr("width",x).attr("height",b).attr("data-look",e.look),p.attr("class","inner").attr("x",C).attr("y",E).attr("width",x).attr("height",w);d.attr("transform",`translate(${e.x-g.width/2}, ${T+1-(ur(r.flowchart.htmlLabels)?0:3)})`);let S=A.node().getBBox();return e.height=S.height,e.offsetX=0,e.offsetY=g.height-e.padding/2,e.labelBBox=g,e.intersect=function(_){return Fh(e,_)},{cluster:h,labelBBox:g}},"roundedWithTitle"),t_e=o(async(t,e)=>{Y.info("Creating subgraph rect for ",e.id,e);let r=me(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:f}=Qe(e),d=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),p=ur(r.flowchart.htmlLabels),m=d.insert("g").attr("class","cluster-label "),g=await Hn(m,e.label,{style:e.labelStyle,useHtmlLabels:p,isNode:!0,width:e.width}),y=g.getBBox();if(ur(r.flowchart.htmlLabels)){let A=g.children[0],S=$e(g);y=A.getBoundingClientRect(),S.attr("width",y.width),S.attr("height",y.height)}let v=e.width<=y.width+e.padding?y.width+e.padding:e.width;e.width<=y.width+e.padding?e.diff=(v-e.width)/2-e.padding:e.diff=-e.padding;let x=e.height,b=e.x-v/2,w=e.y-x/2;Y.trace("Data ",e,JSON.stringify(e));let C;if(e.look==="handDrawn"){let A=Xe.svg(d),S=Ke(e,{roughness:.7,fill:a,stroke:s,fillWeight:4,seed:i}),_=A.path(La(b,w,v,x,e.rx),S);C=d.insert(()=>(Y.debug("Rough node insert CXC",_),_),":first-child"),C.select("path:nth-child(2)").attr("style",h.join(";")),C.select("path").attr("style",f.join(";").replace("fill","stroke"))}else C=d.insert("rect",":first-child"),C.attr("style",u).attr("rx",e.rx).attr("ry",e.ry).attr("x",b).attr("y",w).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:T}=Du(r);if(m.attr("transform",`translate(${e.x-y.width/2}, ${e.y-e.height/2+T})`),l){let A=m.select("span");A&&A.attr("style",l)}let E=C.node().getBBox();return e.offsetX=0,e.width=E.width,e.height=E.height,e.offsetY=y.height-e.padding/2,e.intersect=function(A){return Fh(e,A)},{cluster:d,labelBBox:y}},"kanbanSection"),r_e=o((t,e)=>{let r=me(),{themeVariables:n,handDrawnSeed:i}=r,{nodeBorder:a}=n,s=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-look",e.look),l=s.insert("g",":first-child"),u=0*e.padding,h=e.width+u;e.diff=-e.padding;let f=e.height+u,d=e.x-h/2,p=e.y-f/2;e.width=h;let m;if(e.look==="handDrawn"){let v=Xe.svg(s).rectangle(d,p,h,f,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:i});m=s.insert(()=>v,":first-child")}else m=l.insert("rect",":first-child"),m.attr("class","divider").attr("x",d).attr("y",p).attr("width",h).attr("height",f).attr("data-look",e.look);let g=m.node().getBBox();return e.height=g.height,e.offsetX=0,e.offsetY=0,e.intersect=function(y){return Fh(e,y)},{cluster:s,labelBBox:{}}},"divider"),n_e=IZ,i_e={rect:IZ,squareRect:n_e,roundedWithTitle:e_e,noteGroup:J8e,divider:r_e,kanbanSection:t_e},OZ=new Map,fm=o(async(t,e)=>{let r=e.shape||"rect",n=await i_e[r](t,e);return OZ.set(e.id,n),n},"insertCluster"),PZ=o(()=>{OZ=new Map},"clear")});function Ow(t,e){if(t===void 0||e===void 0)return{angle:0,deltaX:0,deltaY:0};t=Wn(t),e=Wn(e);let[r,n]=[t.x,t.y],[i,a]=[e.x,e.y],s=i-r,l=a-n;return{angle:Math.atan(l/s),deltaX:s,deltaY:l}}var Oo,Wn,Pw,qD=M(()=>{"use strict";Oo={aggregation:18,extension:18,composition:18,dependency:6,lollipop:13.5,arrow_point:4};o(Ow,"calculateDeltaAndAngle");Wn=o(t=>Array.isArray(t)?{x:t[0],y:t[1]}:t,"pointTransformer"),Pw=o(t=>({x:o(function(e,r,n){let i=0,a=Wn(n[0]).x=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(Oo,t.arrowTypeEnd)){let{angle:m,deltaX:g}=Ow(n[n.length-1],n[n.length-2]);i=Oo[t.arrowTypeEnd]*Math.cos(m)*(g>=0?1:-1)}let s=Math.abs(Wn(e).x-Wn(n[n.length-1]).x),l=Math.abs(Wn(e).y-Wn(n[n.length-1]).y),u=Math.abs(Wn(e).x-Wn(n[0]).x),h=Math.abs(Wn(e).y-Wn(n[0]).y),f=Oo[t.arrowTypeStart],d=Oo[t.arrowTypeEnd],p=1;if(s0&&l0&&h=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(Oo,t.arrowTypeEnd)){let{angle:m,deltaY:g}=Ow(n[n.length-1],n[n.length-2]);i=Oo[t.arrowTypeEnd]*Math.abs(Math.sin(m))*(g>=0?1:-1)}let s=Math.abs(Wn(e).y-Wn(n[n.length-1]).y),l=Math.abs(Wn(e).x-Wn(n[n.length-1]).x),u=Math.abs(Wn(e).y-Wn(n[0]).y),h=Math.abs(Wn(e).x-Wn(n[0]).x),f=Oo[t.arrowTypeStart],d=Oo[t.arrowTypeEnd],p=1;if(s0&&l0&&h{"use strict";vt();FZ=o((t,e,r,n,i,a)=>{e.arrowTypeStart&&BZ(t,"start",e.arrowTypeStart,r,n,i,a),e.arrowTypeEnd&&BZ(t,"end",e.arrowTypeEnd,r,n,i,a)},"addEdgeMarkers"),a_e={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},BZ=o((t,e,r,n,i,a,s)=>{let l=a_e[r];if(!l){Y.warn(`Unknown arrow type: ${r}`);return}let u=l.type,f=`${i}_${a}-${u}${e==="start"?"Start":"End"}`;if(s&&s.trim()!==""){let d=s.replace(/[^\dA-Za-z]/g,"_"),p=`${f}_${d}`;if(!document.getElementById(p)){let m=document.getElementById(f);if(m){let g=m.cloneNode(!0);g.id=p,g.querySelectorAll("path, circle, line").forEach(v=>{v.setAttribute("stroke",s),l.fill&&v.setAttribute("fill",s)}),m.parentNode?.appendChild(g)}}t.attr(`marker-${e}`,`url(${n}#${p})`)}else t.attr(`marker-${e}`,`url(${n}#${f})`)},"addEdgeMarker")});function Bw(t,e){me().flowchart.htmlLabels&&t&&(t.style.width=e.length*9+"px",t.style.height="12px")}function l_e(t){let e=[],r=[];for(let n=1;n5&&Math.abs(a.y-i.y)>5||i.y===a.y&&a.x===s.x&&Math.abs(a.x-i.x)>5&&Math.abs(a.y-s.y)>5)&&(e.push(a),r.push(n))}return{cornerPoints:e,cornerPointPositions:r}}var Fw,ha,VZ,l2,zw,Gw,s_e,o_e,GZ,$Z,c_e,$w,YD=M(()=>{"use strict";Gt();gr();vt();Ks();sr();qD();o2();hr();Wt();Rw();zZ();Ut();Fw=new Map,ha=new Map,VZ=o(()=>{Fw.clear(),ha.clear()},"clear"),l2=o(t=>t?t.reduce((r,n)=>r+";"+n,""):"","getLabelStyles"),zw=o(async(t,e)=>{let r=ur(me().flowchart.htmlLabels),n=await Hn(t,e.label,{style:l2(e.labelStyle),useHtmlLabels:r,addSvgBackground:!0,isNode:!1});Y.info("abc82",e,e.labelType);let i=t.insert("g").attr("class","edgeLabel"),a=i.insert("g").attr("class","label");a.node().appendChild(n);let s=n.getBBox();if(r){let u=n.children[0],h=$e(n);s=u.getBoundingClientRect(),h.attr("width",s.width),h.attr("height",s.height)}a.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),Fw.set(e.id,i),e.width=s.width,e.height=s.height;let l;if(e.startLabelLeft){let u=await mc(e.startLabelLeft,l2(e.labelStyle)),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),ha.get(e.id)||ha.set(e.id,{}),ha.get(e.id).startLeft=h,Bw(l,e.startLabelLeft)}if(e.startLabelRight){let u=await mc(e.startLabelRight,l2(e.labelStyle)),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=h.node().appendChild(u),f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),ha.get(e.id)||ha.set(e.id,{}),ha.get(e.id).startRight=h,Bw(l,e.startLabelRight)}if(e.endLabelLeft){let u=await mc(e.endLabelLeft,l2(e.labelStyle)),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),h.node().appendChild(u),ha.get(e.id)||ha.set(e.id,{}),ha.get(e.id).endLeft=h,Bw(l,e.endLabelLeft)}if(e.endLabelRight){let u=await mc(e.endLabelRight,l2(e.labelStyle)),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),h.node().appendChild(u),ha.get(e.id)||ha.set(e.id,{}),ha.get(e.id).endRight=h,Bw(l,e.endLabelRight)}return n},"insertEdgeLabel");o(Bw,"setTerminalWidth");Gw=o((t,e)=>{Y.debug("Moving label abc88 ",t.id,t.label,Fw.get(t.id),e);let r=e.updatedPath?e.updatedPath:e.originalPath,n=me(),{subGraphTitleTotalMargin:i}=Du(n);if(t.label){let a=Fw.get(t.id),s=t.x,l=t.y;if(r){let u=$t.calcLabelPosition(r);Y.debug("Moving label "+t.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),e.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(t.startLabelLeft){let a=ha.get(t.id).startLeft,s=t.x,l=t.y;if(r){let u=$t.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.startLabelRight){let a=ha.get(t.id).startRight,s=t.x,l=t.y;if(r){let u=$t.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelLeft){let a=ha.get(t.id).endLeft,s=t.x,l=t.y;if(r){let u=$t.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelRight){let a=ha.get(t.id).endRight,s=t.x,l=t.y;if(r){let u=$t.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),s_e=o((t,e)=>{let r=t.x,n=t.y,i=Math.abs(e.x-r),a=Math.abs(e.y-n),s=t.width/2,l=t.height/2;return i>=s||a>=l},"outsideNode"),o_e=o((t,e,r)=>{Y.debug(`intersection calc abc89: outsidePoint: ${JSON.stringify(e)} insidePoint : ${JSON.stringify(r)} - node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);let n=t.x,i=t.y,a=Math.abs(n-r.x),s=t.width/2,l=r.xMath.abs(n-e.x)*u){let d=r.y{Y.warn("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(a=>{if(Y.info("abc88 checking point",a,e),!I9e(e,a)&&!i){let s=O9e(e,n,a);Y.debug("abc88 inside",a,n,s),Y.debug("abc88 intersection",s,e);let l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)?Y.warn("abc88 no intersect",s,r):r.push(s),i=!0}else Y.warn("abc88 outside",a,n),n=a,i||r.push(a)}),Y.debug("returning points",r),r},"cutPathAtIntersect");o(P9e,"extractCornerPoints");nJ=o(function(t,e,r){let n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),s=r/a;return{x:e.x-s*n,y:e.y-s*i}},"findAdjacentPoint"),B9e=o(function(t){let{cornerPointPositions:e}=P9e(t),r=[];for(let n=0;n10&&Math.abs(a.y-i.y)>=10){Y.debug("Corner point fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));let m=5;s.x===l.x?p={x:h<0?l.x-m+d:l.x+m-d,y:f<0?l.y-d:l.y+d}:p={x:h<0?l.x-d:l.x+d,y:f<0?l.y-m+d:l.y+m-d}}else Y.debug("Corner point skipping fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));r.push(p,u)}else r.push(t[n]);return r},"fixCorners"),nw=o(function(t,e,r,n,i,a,s){let{handDrawnSeed:l}=de(),u=e.points,h=!1,f=i;var d=a;d.intersect&&f.intersect&&(u=u.slice(1,e.points.length-1),u.unshift(f.intersect(u[0])),Y.debug("Last point APA12",e.start,"-->",e.end,u[u.length-1],d,d.intersect(u[u.length-1])),u.push(d.intersect(u[u.length-1]))),e.toCluster&&(Y.info("to cluster abc88",r.get(e.toCluster)),u=rJ(e.points,r.get(e.toCluster).node),h=!0),e.fromCluster&&(Y.debug("from cluster abc88",r.get(e.fromCluster),JSON.stringify(u,null,2)),u=rJ(u.reverse(),r.get(e.fromCluster).node).reverse(),h=!0);let p=u.filter(L=>!Number.isNaN(L.y));p=B9e(p);let m=Do;e.curve&&(m=e.curve);let{x:g,y}=Z5(e),v=Ka().x(g).y(y).curve(m),x;switch(e.thickness){case"normal":x="edge-thickness-normal";break;case"thick":x="edge-thickness-thick";break;case"invisible":x="edge-thickness-invisible";break;default:x="edge-thickness-normal"}switch(e.pattern){case"solid":x+=" edge-pattern-solid";break;case"dotted":x+=" edge-pattern-dotted";break;case"dashed":x+=" edge-pattern-dashed";break;default:x+=" edge-pattern-solid"}let b,w=v(p),_=Array.isArray(e.style)?e.style:[e.style];if(e.look==="handDrawn"){let L=Ke.svg(t);Object.assign([],p);let C=L.path(w,{roughness:.3,seed:l});x+=" transition",b=ze(C).select("path").attr("id",e.id).attr("class"," "+x+(e.classes?" "+e.classes:"")).attr("style",_?_.reduce((I,D)=>I+";"+D,""):"");let A=b.attr("d");b.attr("d",A),t.node().appendChild(b.node())}else b=t.append("path").attr("d",w).attr("id",e.id).attr("class"," "+x+(e.classes?" "+e.classes:"")).attr("style",_?_.reduce((L,C)=>L+";"+C,""):"");let T="";(de().flowchart.arrowMarkerAbsolute||de().state.arrowMarkerAbsolute)&&(T=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,T=T.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),Y.info("arrowTypeStart",e.arrowTypeStart),Y.info("arrowTypeEnd",e.arrowTypeEnd),eJ(b,e,T,s,n);let E={};return h&&(E.updatedPath=u),E.originalPath=e.points,E},"insertEdge")});var F9e,z9e,G9e,$9e,V9e,U9e,H9e,W9e,Y9e,q9e,X9e,iw,uL=M(()=>{"use strict";ht();F9e=o((t,e,r,n)=>{e.forEach(i=>{X9e[i](t,r,n)})},"insertMarkers"),z9e=o((t,e,r)=>{Y.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),G9e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),$9e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),V9e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),U9e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),H9e=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),W9e=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),Y9e=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),q9e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),X9e={extension:z9e,composition:G9e,aggregation:$9e,dependency:V9e,lollipop:U9e,point:H9e,circle:W9e,cross:Y9e,barb:q9e},iw=F9e});async function gm(t,e,r){let n,i;e.shape==="rect"&&(e.rx&&e.ry?e.shape="roundedRect":e.shape="squareRect");let a=e.shape?z9[e.shape]:void 0;if(!a)throw new Error(`No such shape: ${e.shape}. Please check your syntax.`);if(e.link){let s;r.config.securityLevel==="sandbox"?s="_top":e.linkTarget&&(s=e.linkTarget||"_blank"),n=t.insert("svg:a").attr("xlink:href",e.link).attr("target",s??null),i=await a(n,e,r)}else i=await a(t,e,r),n=i;return e.tooltip&&i.attr("title",e.tooltip),aw.set(e.id,n),e.haveCallback&&n.attr("class",n.attr("class")+" clickable"),n}var aw,aJ,sJ,_v,sw=M(()=>{"use strict";ht();G9();aw=new Map;o(gm,"insertNode");aJ=o((t,e)=>{aw.set(e.id,t)},"setNodeElem"),sJ=o(()=>{aw.clear()},"clear"),_v=o(t=>{let e=aw.get(t.id);Y.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");let r=8,n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-r)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},"positionNode")});var oJ,lJ=M(()=>{"use strict";Ua();fr();ht();K5();cL();uL();sw();Ft();hr();oJ={common:je,getConfig:Sr,insertCluster:mm,insertEdge:nw,insertEdgeLabel:tw,insertMarkers:iw,insertNode:gm,interpolateToCurve:Q_,labelHelper:ot,log:Y,positionEdgeLabel:rw}});function K9e(t){return typeof t=="symbol"||Zn(t)&&ca(t)==j9e}var j9e,ro,Ld=M(()=>{"use strict";xu();Mo();j9e="[object Symbol]";o(K9e,"isSymbol");ro=K9e});function Q9e(t,e){for(var r=-1,n=t==null?0:t.length,i=Array(n);++r{"use strict";o(Q9e,"arrayMap");As=Q9e});function hJ(t){if(typeof t=="string")return t;if(Mt(t))return As(t,hJ)+"";if(ro(t))return uJ?uJ.call(t):"";var e=t+"";return e=="0"&&1/t==-Z9e?"-0":e}var Z9e,cJ,uJ,fJ,dJ=M(()=>{"use strict";gd();Dd();Vn();Ld();Z9e=1/0,cJ=ea?ea.prototype:void 0,uJ=cJ?cJ.toString:void 0;o(hJ,"baseToString");fJ=hJ});function eLe(t){for(var e=t.length;e--&&J9e.test(t.charAt(e)););return e}var J9e,pJ,mJ=M(()=>{"use strict";J9e=/\s/;o(eLe,"trimmedEndIndex");pJ=eLe});function rLe(t){return t&&t.slice(0,pJ(t)+1).replace(tLe,"")}var tLe,gJ,yJ=M(()=>{"use strict";mJ();tLe=/^\s+/;o(rLe,"baseTrim");gJ=rLe});function oLe(t){if(typeof t=="number")return t;if(ro(t))return vJ;if(yn(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=yn(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=gJ(t);var r=iLe.test(t);return r||aLe.test(t)?sLe(t.slice(2),r?2:8):nLe.test(t)?vJ:+t}var vJ,nLe,iLe,aLe,sLe,xJ,bJ=M(()=>{"use strict";yJ();Qs();Ld();vJ=NaN,nLe=/^[-+]0x[0-9a-f]+$/i,iLe=/^0b[01]+$/i,aLe=/^0o[0-7]+$/i,sLe=parseInt;o(oLe,"toNumber");xJ=oLe});function cLe(t){if(!t)return t===0?t:0;if(t=xJ(t),t===wJ||t===-wJ){var e=t<0?-1:1;return e*lLe}return t===t?t:0}var wJ,lLe,ym,hL=M(()=>{"use strict";bJ();wJ=1/0,lLe=17976931348623157e292;o(cLe,"toFinite");ym=cLe});function uLe(t){var e=ym(t),r=e%1;return e===e?r?e-r:e:0}var vc,vm=M(()=>{"use strict";hL();o(uLe,"toInteger");vc=uLe});var hLe,ow,TJ=M(()=>{"use strict";Ch();No();hLe=vs(ai,"WeakMap"),ow=hLe});function fLe(){}var Jn,fL=M(()=>{"use strict";o(fLe,"noop");Jn=fLe});function dLe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(dLe,"arrayEach");lw=dLe});function pLe(t,e,r,n){for(var i=t.length,a=r+(n?1:-1);n?a--:++a{"use strict";o(pLe,"baseFindIndex");cw=pLe});function mLe(t){return t!==t}var kJ,EJ=M(()=>{"use strict";o(mLe,"baseIsNaN");kJ=mLe});function gLe(t,e,r){for(var n=r-1,i=t.length;++n{"use strict";o(gLe,"strictIndexOf");SJ=gLe});function yLe(t,e,r){return e===e?SJ(t,e,r):cw(t,kJ,r)}var xm,uw=M(()=>{"use strict";pL();EJ();CJ();o(yLe,"baseIndexOf");xm=yLe});function vLe(t,e){var r=t==null?0:t.length;return!!r&&xm(t,e,0)>-1}var hw,mL=M(()=>{"use strict";uw();o(vLe,"arrayIncludes");hw=vLe});var xLe,AJ,_J=M(()=>{"use strict";F_();xLe=n5(Object.keys,Object),AJ=xLe});function TLe(t){if(!fc(t))return AJ(t);var e=[];for(var r in Object(t))wLe.call(t,r)&&r!="constructor"&&e.push(r);return e}var bLe,wLe,bm,fw=M(()=>{"use strict";Kp();_J();bLe=Object.prototype,wLe=bLe.hasOwnProperty;o(TLe,"baseKeys");bm=TLe});function kLe(t){return si(t)?l5(t):bm(t)}var zr,xc=M(()=>{"use strict";U_();fw();Io();o(kLe,"keys");zr=kLe});var ELe,SLe,CLe,ha,LJ=M(()=>{"use strict";em();wd();q_();Io();Kp();xc();ELe=Object.prototype,SLe=ELe.hasOwnProperty,CLe=h5(function(t,e){if(fc(e)||si(e)){Bo(e,zr(e),t);return}for(var r in e)SLe.call(e,r)&&dc(t,r,e[r])}),ha=CLe});function LLe(t,e){if(Mt(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||ro(t)?!0:_Le.test(t)||!ALe.test(t)||e!=null&&t in Object(e)}var ALe,_Le,wm,dw=M(()=>{"use strict";Vn();Ld();ALe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,_Le=/^\w*$/;o(LLe,"isKey");wm=LLe});function NLe(t){var e=Vp(t,function(n){return r.size===DLe&&r.clear(),n}),r=e.cache;return e}var DLe,DJ,NJ=M(()=>{"use strict";N_();DLe=500;o(NLe,"memoizeCapped");DJ=NLe});var RLe,MLe,ILe,RJ,MJ=M(()=>{"use strict";NJ();RLe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,MLe=/\\(\\)?/g,ILe=DJ(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(RLe,function(r,n,i,a){e.push(i?a.replace(MLe,"$1"):n||r)}),e}),RJ=ILe});function OLe(t){return t==null?"":fJ(t)}var pw,gL=M(()=>{"use strict";dJ();o(OLe,"toString");pw=OLe});function PLe(t,e){return Mt(t)?t:wm(t,e)?[t]:RJ(pw(t))}var Uh,Lv=M(()=>{"use strict";Vn();dw();MJ();gL();o(PLe,"castPath");Uh=PLe});function FLe(t){if(typeof t=="string"||ro(t))return t;var e=t+"";return e=="0"&&1/t==-BLe?"-0":e}var BLe,bc,Tm=M(()=>{"use strict";Ld();BLe=1/0;o(FLe,"toKey");bc=FLe});function zLe(t,e){e=Uh(e,t);for(var r=0,n=e.length;t!=null&&r{"use strict";Lv();Tm();o(zLe,"baseGet");Hh=zLe});function GLe(t,e,r){var n=t==null?void 0:Hh(t,e);return n===void 0?r:n}var IJ,OJ=M(()=>{"use strict";Dv();o(GLe,"get");IJ=GLe});function $Le(t,e){for(var r=-1,n=e.length,i=t.length;++r{"use strict";o($Le,"arrayPush");km=$Le});function VLe(t){return Mt(t)||Al(t)||!!(PJ&&t&&t[PJ])}var PJ,BJ,FJ=M(()=>{"use strict";gd();Qp();Vn();PJ=ea?ea.isConcatSpreadable:void 0;o(VLe,"isFlattenable");BJ=VLe});function zJ(t,e,r,n,i){var a=-1,s=t.length;for(r||(r=BJ),i||(i=[]);++a0&&r(l)?e>1?zJ(l,e-1,r,n,i):km(i,l):n||(i[i.length]=l)}return i}var wc,Em=M(()=>{"use strict";mw();FJ();o(zJ,"baseFlatten");wc=zJ});function ULe(t){var e=t==null?0:t.length;return e?wc(t,1):[]}var Wr,gw=M(()=>{"use strict";Em();o(ULe,"flatten");Wr=ULe});function HLe(t){return u5(c5(t,void 0,Wr),t+"")}var GJ,$J=M(()=>{"use strict";gw();H_();Y_();o(HLe,"flatRest");GJ=HLe});function WLe(t,e,r){var n=-1,i=t.length;e<0&&(e=-e>i?0:i+e),r=r>i?i:r,r<0&&(r+=i),i=e>r?0:r-e>>>0,e>>>=0;for(var a=Array(i);++n{"use strict";o(WLe,"baseSlice");yw=WLe});function eDe(t){return JLe.test(t)}var YLe,qLe,XLe,jLe,KLe,QLe,ZLe,JLe,VJ,UJ=M(()=>{"use strict";YLe="\\ud800-\\udfff",qLe="\\u0300-\\u036f",XLe="\\ufe20-\\ufe2f",jLe="\\u20d0-\\u20ff",KLe=qLe+XLe+jLe,QLe="\\ufe0e\\ufe0f",ZLe="\\u200d",JLe=RegExp("["+ZLe+YLe+KLe+QLe+"]");o(eDe,"hasUnicode");VJ=eDe});function tDe(t,e,r,n){var i=-1,a=t==null?0:t.length;for(n&&a&&(r=t[++i]);++i{"use strict";o(tDe,"arrayReduce");HJ=tDe});function rDe(t,e){return t&&Bo(e,zr(e),t)}var YJ,qJ=M(()=>{"use strict";wd();xc();o(rDe,"baseAssign");YJ=rDe});function nDe(t,e){return t&&Bo(e,xs(e),t)}var XJ,jJ=M(()=>{"use strict";wd();Mh();o(nDe,"baseAssignIn");XJ=nDe});function iDe(t,e){for(var r=-1,n=t==null?0:t.length,i=0,a=[];++r{"use strict";o(iDe,"arrayFilter");Sm=iDe});function aDe(){return[]}var xw,vL=M(()=>{"use strict";o(aDe,"stubArray");xw=aDe});var sDe,oDe,KJ,lDe,Cm,bw=M(()=>{"use strict";vw();vL();sDe=Object.prototype,oDe=sDe.propertyIsEnumerable,KJ=Object.getOwnPropertySymbols,lDe=KJ?function(t){return t==null?[]:(t=Object(t),Sm(KJ(t),function(e){return oDe.call(t,e)}))}:xw,Cm=lDe});function cDe(t,e){return Bo(t,Cm(t),e)}var QJ,ZJ=M(()=>{"use strict";wd();bw();o(cDe,"copySymbols");QJ=cDe});var uDe,hDe,ww,xL=M(()=>{"use strict";mw();i5();bw();vL();uDe=Object.getOwnPropertySymbols,hDe=uDe?function(t){for(var e=[];t;)km(e,Cm(t)),t=jp(t);return e}:xw,ww=hDe});function fDe(t,e){return Bo(t,ww(t),e)}var JJ,eee=M(()=>{"use strict";wd();xL();o(fDe,"copySymbolsIn");JJ=fDe});function dDe(t,e,r){var n=e(t);return Mt(t)?n:km(n,r(t))}var Tw,bL=M(()=>{"use strict";mw();Vn();o(dDe,"baseGetAllKeys");Tw=dDe});function pDe(t){return Tw(t,zr,Cm)}var Nv,wL=M(()=>{"use strict";bL();bw();xc();o(pDe,"getAllKeys");Nv=pDe});function mDe(t){return Tw(t,xs,ww)}var kw,TL=M(()=>{"use strict";bL();xL();Mh();o(mDe,"getAllKeysIn");kw=mDe});var gDe,Ew,tee=M(()=>{"use strict";Ch();No();gDe=vs(ai,"DataView"),Ew=gDe});var yDe,Sw,ree=M(()=>{"use strict";Ch();No();yDe=vs(ai,"Promise"),Sw=yDe});var vDe,Wh,kL=M(()=>{"use strict";Ch();No();vDe=vs(ai,"Set"),Wh=vDe});var nee,xDe,iee,aee,see,oee,bDe,wDe,TDe,kDe,EDe,Nd,no,Rd=M(()=>{"use strict";tee();K3();ree();kL();TJ();xu();__();nee="[object Map]",xDe="[object Object]",iee="[object Promise]",aee="[object Set]",see="[object WeakMap]",oee="[object DataView]",bDe=bu(Ew),wDe=bu(Lh),TDe=bu(Sw),kDe=bu(Wh),EDe=bu(ow),Nd=ca;(Ew&&Nd(new Ew(new ArrayBuffer(1)))!=oee||Lh&&Nd(new Lh)!=nee||Sw&&Nd(Sw.resolve())!=iee||Wh&&Nd(new Wh)!=aee||ow&&Nd(new ow)!=see)&&(Nd=o(function(t){var e=ca(t),r=e==xDe?t.constructor:void 0,n=r?bu(r):"";if(n)switch(n){case bDe:return oee;case wDe:return nee;case TDe:return iee;case kDe:return aee;case EDe:return see}return e},"getTag"));no=Nd});function ADe(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&CDe.call(t,"index")&&(r.index=t.index,r.input=t.input),r}var SDe,CDe,lee,cee=M(()=>{"use strict";SDe=Object.prototype,CDe=SDe.hasOwnProperty;o(ADe,"initCloneArray");lee=ADe});function _De(t,e){var r=e?Xp(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}var uee,hee=M(()=>{"use strict";e5();o(_De,"cloneDataView");uee=_De});function DDe(t){var e=new t.constructor(t.source,LDe.exec(t));return e.lastIndex=t.lastIndex,e}var LDe,fee,dee=M(()=>{"use strict";LDe=/\w*$/;o(DDe,"cloneRegExp");fee=DDe});function NDe(t){return mee?Object(mee.call(t)):{}}var pee,mee,gee,yee=M(()=>{"use strict";gd();pee=ea?ea.prototype:void 0,mee=pee?pee.valueOf:void 0;o(NDe,"cloneSymbol");gee=NDe});function QDe(t,e,r){var n=t.constructor;switch(e){case GDe:return Xp(t);case RDe:case MDe:return new n(+t);case $De:return uee(t,r);case VDe:case UDe:case HDe:case WDe:case YDe:case qDe:case XDe:case jDe:case KDe:return t5(t,r);case IDe:return new n;case ODe:case FDe:return new n(t);case PDe:return fee(t);case BDe:return new n;case zDe:return gee(t)}}var RDe,MDe,IDe,ODe,PDe,BDe,FDe,zDe,GDe,$De,VDe,UDe,HDe,WDe,YDe,qDe,XDe,jDe,KDe,vee,xee=M(()=>{"use strict";e5();hee();dee();yee();P_();RDe="[object Boolean]",MDe="[object Date]",IDe="[object Map]",ODe="[object Number]",PDe="[object RegExp]",BDe="[object Set]",FDe="[object String]",zDe="[object Symbol]",GDe="[object ArrayBuffer]",$De="[object DataView]",VDe="[object Float32Array]",UDe="[object Float64Array]",HDe="[object Int8Array]",WDe="[object Int16Array]",YDe="[object Int32Array]",qDe="[object Uint8Array]",XDe="[object Uint8ClampedArray]",jDe="[object Uint16Array]",KDe="[object Uint32Array]";o(QDe,"initCloneByTag");vee=QDe});function JDe(t){return Zn(t)&&no(t)==ZDe}var ZDe,bee,wee=M(()=>{"use strict";Rd();Mo();ZDe="[object Map]";o(JDe,"baseIsMap");bee=JDe});var Tee,eNe,kee,Eee=M(()=>{"use strict";wee();bd();nv();Tee=Po&&Po.isMap,eNe=Tee?Oo(Tee):bee,kee=eNe});function rNe(t){return Zn(t)&&no(t)==tNe}var tNe,See,Cee=M(()=>{"use strict";Rd();Mo();tNe="[object Set]";o(rNe,"baseIsSet");See=rNe});var Aee,nNe,_ee,Lee=M(()=>{"use strict";Cee();bd();nv();Aee=Po&&Po.isSet,nNe=Aee?Oo(Aee):See,_ee=nNe});function Cw(t,e,r,n,i,a){var s,l=e&iNe,u=e&aNe,h=e&sNe;if(r&&(s=i?r(t,n,i,a):r(t)),s!==void 0)return s;if(!yn(t))return t;var f=Mt(t);if(f){if(s=lee(t),!l)return r5(t,s)}else{var d=no(t),p=d==Nee||d==hNe;if(_l(t))return J3(t,l);if(d==Ree||d==Dee||p&&!i){if(s=u||p?{}:a5(t),!l)return u?JJ(t,XJ(s,t)):QJ(t,YJ(s,t))}else{if(!Sn[d])return i?t:{};s=vee(t,d,l)}}a||(a=new uc);var m=a.get(t);if(m)return m;a.set(t,s),_ee(t)?t.forEach(function(v){s.add(Cw(v,e,r,v,t,a))}):kee(t)&&t.forEach(function(v,x){s.set(x,Cw(v,e,r,x,t,a))});var g=h?u?kw:Nv:u?xs:zr,y=f?void 0:g(t);return lw(y||t,function(v,x){y&&(x=v,v=t[x]),dc(s,x,Cw(v,e,r,x,t,a))}),s}var iNe,aNe,sNe,Dee,oNe,lNe,cNe,uNe,Nee,hNe,fNe,dNe,Ree,pNe,mNe,gNe,yNe,vNe,xNe,bNe,wNe,TNe,kNe,ENe,SNe,CNe,ANe,_Ne,LNe,Sn,Aw,EL=M(()=>{"use strict";ev();dL();em();qJ();jJ();I_();B_();ZJ();eee();wL();TL();Rd();cee();xee();z_();Vn();Jp();Eee();Qs();Lee();xc();Mh();iNe=1,aNe=2,sNe=4,Dee="[object Arguments]",oNe="[object Array]",lNe="[object Boolean]",cNe="[object Date]",uNe="[object Error]",Nee="[object Function]",hNe="[object GeneratorFunction]",fNe="[object Map]",dNe="[object Number]",Ree="[object Object]",pNe="[object RegExp]",mNe="[object Set]",gNe="[object String]",yNe="[object Symbol]",vNe="[object WeakMap]",xNe="[object ArrayBuffer]",bNe="[object DataView]",wNe="[object Float32Array]",TNe="[object Float64Array]",kNe="[object Int8Array]",ENe="[object Int16Array]",SNe="[object Int32Array]",CNe="[object Uint8Array]",ANe="[object Uint8ClampedArray]",_Ne="[object Uint16Array]",LNe="[object Uint32Array]",Sn={};Sn[Dee]=Sn[oNe]=Sn[xNe]=Sn[bNe]=Sn[lNe]=Sn[cNe]=Sn[wNe]=Sn[TNe]=Sn[kNe]=Sn[ENe]=Sn[SNe]=Sn[fNe]=Sn[dNe]=Sn[Ree]=Sn[pNe]=Sn[mNe]=Sn[gNe]=Sn[yNe]=Sn[CNe]=Sn[ANe]=Sn[_Ne]=Sn[LNe]=!0;Sn[uNe]=Sn[Nee]=Sn[vNe]=!1;o(Cw,"baseClone");Aw=Cw});function NNe(t){return Aw(t,DNe)}var DNe,rn,SL=M(()=>{"use strict";EL();DNe=4;o(NNe,"clone");rn=NNe});function INe(t){return Aw(t,RNe|MNe)}var RNe,MNe,CL,Mee=M(()=>{"use strict";EL();RNe=1,MNe=4;o(INe,"cloneDeep");CL=INe});function ONe(t){for(var e=-1,r=t==null?0:t.length,n=0,i=[];++e{"use strict";o(ONe,"compact");Tc=ONe});function BNe(t){return this.__data__.set(t,PNe),this}var PNe,Oee,Pee=M(()=>{"use strict";PNe="__lodash_hash_undefined__";o(BNe,"setCacheAdd");Oee=BNe});function FNe(t){return this.__data__.has(t)}var Bee,Fee=M(()=>{"use strict";o(FNe,"setCacheHas");Bee=FNe});function _w(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new vd;++e{"use strict";Q3();Pee();Fee();o(_w,"SetCache");_w.prototype.add=_w.prototype.push=Oee;_w.prototype.has=Bee;Am=_w});function zNe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(zNe,"arraySome");Dw=zNe});function GNe(t,e){return t.has(e)}var _m,Nw=M(()=>{"use strict";o(GNe,"cacheHas");_m=GNe});function UNe(t,e,r,n,i,a){var s=r&$Ne,l=t.length,u=e.length;if(l!=u&&!(s&&u>l))return!1;var h=a.get(t),f=a.get(e);if(h&&f)return h==e&&f==t;var d=-1,p=!0,m=r&VNe?new Am:void 0;for(a.set(t,e),a.set(e,t);++d{"use strict";Lw();AL();Nw();$Ne=1,VNe=2;o(UNe,"equalArrays");Rw=UNe});function HNe(t){var e=-1,r=Array(t.size);return t.forEach(function(n,i){r[++e]=[i,n]}),r}var zee,Gee=M(()=>{"use strict";o(HNe,"mapToArray");zee=HNe});function WNe(t){var e=-1,r=Array(t.size);return t.forEach(function(n){r[++e]=n}),r}var Lm,Mw=M(()=>{"use strict";o(WNe,"setToArray");Lm=WNe});function aRe(t,e,r,n,i,a,s){switch(r){case iRe:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case nRe:return!(t.byteLength!=e.byteLength||!a(new qp(t),new qp(e)));case XNe:case jNe:case ZNe:return Ro(+t,+e);case KNe:return t.name==e.name&&t.message==e.message;case JNe:case tRe:return t==e+"";case QNe:var l=zee;case eRe:var u=n&YNe;if(l||(l=Lm),t.size!=e.size&&!u)return!1;var h=s.get(t);if(h)return h==e;n|=qNe,s.set(t,e);var f=Rw(l(t),l(e),n,i,a,s);return s.delete(t),f;case rRe:if(LL)return LL.call(t)==LL.call(e)}return!1}var YNe,qNe,XNe,jNe,KNe,QNe,ZNe,JNe,eRe,tRe,rRe,nRe,iRe,$ee,LL,Vee,Uee=M(()=>{"use strict";gd();O_();yd();_L();Gee();Mw();YNe=1,qNe=2,XNe="[object Boolean]",jNe="[object Date]",KNe="[object Error]",QNe="[object Map]",ZNe="[object Number]",JNe="[object RegExp]",eRe="[object Set]",tRe="[object String]",rRe="[object Symbol]",nRe="[object ArrayBuffer]",iRe="[object DataView]",$ee=ea?ea.prototype:void 0,LL=$ee?$ee.valueOf:void 0;o(aRe,"equalByTag");Vee=aRe});function cRe(t,e,r,n,i,a){var s=r&sRe,l=Nv(t),u=l.length,h=Nv(e),f=h.length;if(u!=f&&!s)return!1;for(var d=u;d--;){var p=l[d];if(!(s?p in e:lRe.call(e,p)))return!1}var m=a.get(t),g=a.get(e);if(m&&g)return m==e&&g==t;var y=!0;a.set(t,e),a.set(e,t);for(var v=s;++d{"use strict";wL();sRe=1,oRe=Object.prototype,lRe=oRe.hasOwnProperty;o(cRe,"equalObjects");Hee=cRe});function fRe(t,e,r,n,i,a){var s=Mt(t),l=Mt(e),u=s?qee:no(t),h=l?qee:no(e);u=u==Yee?Iw:u,h=h==Yee?Iw:h;var f=u==Iw,d=h==Iw,p=u==h;if(p&&_l(t)){if(!_l(e))return!1;s=!0,f=!1}if(p&&!f)return a||(a=new uc),s||Nh(t)?Rw(t,e,r,n,i,a):Vee(t,e,u,r,n,i,a);if(!(r&uRe)){var m=f&&Xee.call(t,"__wrapped__"),g=d&&Xee.call(e,"__wrapped__");if(m||g){var y=m?t.value():t,v=g?e.value():e;return a||(a=new uc),i(y,v,r,n,a)}}return p?(a||(a=new uc),Hee(t,e,r,n,i,a)):!1}var uRe,Yee,qee,Iw,hRe,Xee,jee,Kee=M(()=>{"use strict";ev();_L();Uee();Wee();Rd();Vn();Jp();iv();uRe=1,Yee="[object Arguments]",qee="[object Array]",Iw="[object Object]",hRe=Object.prototype,Xee=hRe.hasOwnProperty;o(fRe,"baseIsEqualDeep");jee=fRe});function Qee(t,e,r,n,i){return t===e?!0:t==null||e==null||!Zn(t)&&!Zn(e)?t!==t&&e!==e:jee(t,e,r,n,Qee,i)}var Ow,DL=M(()=>{"use strict";Kee();Mo();o(Qee,"baseIsEqual");Ow=Qee});function mRe(t,e,r,n){var i=r.length,a=i,s=!n;if(t==null)return!a;for(t=Object(t);i--;){var l=r[i];if(s&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++i{"use strict";ev();DL();dRe=1,pRe=2;o(mRe,"baseIsMatch");Zee=mRe});function gRe(t){return t===t&&!yn(t)}var Pw,NL=M(()=>{"use strict";Qs();o(gRe,"isStrictComparable");Pw=gRe});function yRe(t){for(var e=zr(t),r=e.length;r--;){var n=e[r],i=t[n];e[r]=[n,i,Pw(i)]}return e}var ete,tte=M(()=>{"use strict";NL();xc();o(yRe,"getMatchData");ete=yRe});function vRe(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}var Bw,RL=M(()=>{"use strict";o(vRe,"matchesStrictComparable");Bw=vRe});function xRe(t){var e=ete(t);return e.length==1&&e[0][2]?Bw(e[0][0],e[0][1]):function(r){return r===t||Zee(r,t,e)}}var rte,nte=M(()=>{"use strict";Jee();tte();RL();o(xRe,"baseMatches");rte=xRe});function bRe(t,e){return t!=null&&e in Object(t)}var ite,ate=M(()=>{"use strict";o(bRe,"baseHasIn");ite=bRe});function wRe(t,e,r){e=Uh(e,t);for(var n=-1,i=e.length,a=!1;++n{"use strict";Lv();Qp();Vn();sv();s5();Tm();o(wRe,"hasPath");Fw=wRe});function TRe(t,e){return t!=null&&Fw(t,e,ite)}var zw,IL=M(()=>{"use strict";ate();ML();o(TRe,"hasIn");zw=TRe});function SRe(t,e){return wm(t)&&Pw(e)?Bw(bc(t),e):function(r){var n=IJ(r,t);return n===void 0&&n===e?zw(r,t):Ow(e,n,kRe|ERe)}}var kRe,ERe,ste,ote=M(()=>{"use strict";DL();OJ();IL();dw();NL();RL();Tm();kRe=1,ERe=2;o(SRe,"baseMatchesProperty");ste=SRe});function CRe(t){return function(e){return e?.[t]}}var Gw,OL=M(()=>{"use strict";o(CRe,"baseProperty");Gw=CRe});function ARe(t){return function(e){return Hh(e,t)}}var lte,cte=M(()=>{"use strict";Dv();o(ARe,"basePropertyDeep");lte=ARe});function _Re(t){return wm(t)?Gw(bc(t)):lte(t)}var ute,hte=M(()=>{"use strict";OL();cte();dw();Tm();o(_Re,"property");ute=_Re});function LRe(t){return typeof t=="function"?t:t==null?ta:typeof t=="object"?Mt(t)?ste(t[0],t[1]):rte(t):ute(t)}var dn,Qa=M(()=>{"use strict";nte();ote();Tu();Vn();hte();o(LRe,"baseIteratee");dn=LRe});function DRe(t,e,r,n){for(var i=-1,a=t==null?0:t.length;++i{"use strict";o(DRe,"arrayAggregator");fte=DRe});function NRe(t,e){return t&&Yp(t,e,zr)}var Dm,$w=M(()=>{"use strict";Z3();xc();o(NRe,"baseForOwn");Dm=NRe});function RRe(t,e){return function(r,n){if(r==null)return r;if(!si(r))return t(r,n);for(var i=r.length,a=e?i:-1,s=Object(r);(e?a--:++a{"use strict";Io();o(RRe,"createBaseEach");pte=RRe});var MRe,_s,Yh=M(()=>{"use strict";$w();mte();MRe=pte(Dm),_s=MRe});function IRe(t,e,r,n){return _s(t,function(i,a,s){e(n,i,r(i),s)}),n}var gte,yte=M(()=>{"use strict";Yh();o(IRe,"baseAggregator");gte=IRe});function ORe(t,e){return function(r,n){var i=Mt(r)?fte:gte,a=e?e():{};return i(r,t,dn(n,2),a)}}var vte,xte=M(()=>{"use strict";dte();yte();Qa();Vn();o(ORe,"createAggregator");vte=ORe});var PRe,Vw,bte=M(()=>{"use strict";No();PRe=o(function(){return ai.Date.now()},"now"),Vw=PRe});var wte,BRe,FRe,qh,Tte=M(()=>{"use strict";tm();yd();Td();Mh();wte=Object.prototype,BRe=wte.hasOwnProperty,FRe=pc(function(t,e){t=Object(t);var r=-1,n=e.length,i=n>2?e[2]:void 0;for(i&&Zs(e[0],e[1],i)&&(n=1);++r{"use strict";o(zRe,"arrayIncludesWith");Uw=zRe});function $Re(t,e,r,n){var i=-1,a=hw,s=!0,l=t.length,u=[],h=e.length;if(!l)return u;r&&(e=As(e,Oo(r))),n?(a=Uw,s=!1):e.length>=GRe&&(a=_m,s=!1,e=new Am(e));e:for(;++i{"use strict";Lw();mL();PL();Dd();bd();Nw();GRe=200;o($Re,"baseDifference");kte=$Re});var VRe,Xh,Ste=M(()=>{"use strict";Ete();Em();tm();o5();VRe=pc(function(t,e){return xd(t)?kte(t,wc(e,1,xd,!0)):[]}),Xh=VRe});function URe(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}var fa,Cte=M(()=>{"use strict";o(URe,"last");fa=URe});function HRe(t,e,r){var n=t==null?0:t.length;return n?(e=r||e===void 0?1:vc(e),yw(t,e<0?0:e,n)):[]}var mi,Ate=M(()=>{"use strict";yL();vm();o(HRe,"drop");mi=HRe});function WRe(t,e,r){var n=t==null?0:t.length;return n?(e=r||e===void 0?1:vc(e),e=n-e,yw(t,0,e<0?0:e)):[]}var Lu,_te=M(()=>{"use strict";yL();vm();o(WRe,"dropRight");Lu=WRe});function YRe(t){return typeof t=="function"?t:ta}var Nm,Hw=M(()=>{"use strict";Tu();o(YRe,"castFunction");Nm=YRe});function qRe(t,e){var r=Mt(t)?lw:_s;return r(t,Nm(e))}var Ce,Ww=M(()=>{"use strict";dL();Yh();Hw();Vn();o(qRe,"forEach");Ce=qRe});var Lte=M(()=>{"use strict";Ww()});function XRe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(XRe,"arrayEvery");Dte=XRe});function jRe(t,e){var r=!0;return _s(t,function(n,i,a){return r=!!e(n,i,a),r}),r}var Rte,Mte=M(()=>{"use strict";Yh();o(jRe,"baseEvery");Rte=jRe});function KRe(t,e,r){var n=Mt(t)?Dte:Rte;return r&&Zs(t,e,r)&&(e=void 0),n(t,dn(e,3))}var Ra,Ite=M(()=>{"use strict";Nte();Mte();Qa();Vn();Td();o(KRe,"every");Ra=KRe});function QRe(t,e){var r=[];return _s(t,function(n,i,a){e(n,i,a)&&r.push(n)}),r}var Yw,BL=M(()=>{"use strict";Yh();o(QRe,"baseFilter");Yw=QRe});function ZRe(t,e){var r=Mt(t)?Sm:Yw;return r(t,dn(e,3))}var Yr,FL=M(()=>{"use strict";vw();BL();Qa();Vn();o(ZRe,"filter");Yr=ZRe});function JRe(t){return function(e,r,n){var i=Object(e);if(!si(e)){var a=dn(r,3);e=zr(e),r=o(function(l){return a(i[l],l,i)},"predicate")}var s=t(e,r,n);return s>-1?i[a?e[s]:s]:void 0}}var Ote,Pte=M(()=>{"use strict";Qa();Io();xc();o(JRe,"createFind");Ote=JRe});function tMe(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:vc(r);return i<0&&(i=eMe(n+i,0)),cw(t,dn(e,3),i)}var eMe,Bte,Fte=M(()=>{"use strict";pL();Qa();vm();eMe=Math.max;o(tMe,"findIndex");Bte=tMe});var rMe,Za,zte=M(()=>{"use strict";Pte();Fte();rMe=Ote(Bte),Za=rMe});function nMe(t){return t&&t.length?t[0]:void 0}var ra,Gte=M(()=>{"use strict";o(nMe,"head");ra=nMe});var $te=M(()=>{"use strict";Gte()});function iMe(t,e){var r=-1,n=si(t)?Array(t.length):[];return _s(t,function(i,a,s){n[++r]=e(i,a,s)}),n}var qw,zL=M(()=>{"use strict";Yh();Io();o(iMe,"baseMap");qw=iMe});function aMe(t,e){var r=Mt(t)?As:qw;return r(t,dn(e,3))}var Je,Rm=M(()=>{"use strict";Dd();Qa();zL();Vn();o(aMe,"map");Je=aMe});function sMe(t,e){return wc(Je(t,e),1)}var da,GL=M(()=>{"use strict";Em();Rm();o(sMe,"flatMap");da=sMe});function oMe(t,e){return t==null?t:Yp(t,Nm(e),xs)}var $L,Vte=M(()=>{"use strict";Z3();Hw();Mh();o(oMe,"forIn");$L=oMe});function lMe(t,e){return t&&Dm(t,Nm(e))}var VL,Ute=M(()=>{"use strict";$w();Hw();o(lMe,"forOwn");VL=lMe});var cMe,uMe,hMe,UL,Hte=M(()=>{"use strict";Wp();xte();cMe=Object.prototype,uMe=cMe.hasOwnProperty,hMe=vte(function(t,e,r){uMe.call(t,r)?t[r].push(e):hc(t,r,[e])}),UL=hMe});function fMe(t,e){return t>e}var Wte,Yte=M(()=>{"use strict";o(fMe,"baseGt");Wte=fMe});function mMe(t,e){return t!=null&&pMe.call(t,e)}var dMe,pMe,qte,Xte=M(()=>{"use strict";dMe=Object.prototype,pMe=dMe.hasOwnProperty;o(mMe,"baseHas");qte=mMe});function gMe(t,e){return t!=null&&Fw(t,e,qte)}var It,jte=M(()=>{"use strict";Xte();ML();o(gMe,"has");It=gMe});function vMe(t){return typeof t=="string"||!Mt(t)&&Zn(t)&&ca(t)==yMe}var yMe,gi,Xw=M(()=>{"use strict";xu();Vn();Mo();yMe="[object String]";o(vMe,"isString");gi=vMe});function xMe(t,e){return As(e,function(r){return t[r]})}var Kte,Qte=M(()=>{"use strict";Dd();o(xMe,"baseValues");Kte=xMe});function bMe(t){return t==null?[]:Kte(t,zr(t))}var br,HL=M(()=>{"use strict";Qte();xc();o(bMe,"values");br=bMe});function TMe(t,e,r,n){t=si(t)?t:br(t),r=r&&!n?vc(r):0;var i=t.length;return r<0&&(r=wMe(i+r,0)),gi(t)?r<=i&&t.indexOf(e,r)>-1:!!i&&xm(t,e,r)>-1}var wMe,Hn,Zte=M(()=>{"use strict";uw();Io();Xw();vm();HL();wMe=Math.max;o(TMe,"includes");Hn=TMe});function EMe(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:vc(r);return i<0&&(i=kMe(n+i,0)),xm(t,e,i)}var kMe,jw,Jte=M(()=>{"use strict";uw();vm();kMe=Math.max;o(EMe,"indexOf");jw=EMe});function LMe(t){if(t==null)return!0;if(si(t)&&(Mt(t)||typeof t=="string"||typeof t.splice=="function"||_l(t)||Nh(t)||Al(t)))return!t.length;var e=no(t);if(e==SMe||e==CMe)return!t.size;if(fc(t))return!bm(t).length;for(var r in t)if(_Me.call(t,r))return!1;return!0}var SMe,CMe,AMe,_Me,cr,Kw=M(()=>{"use strict";fw();Rd();Qp();Vn();Io();Jp();Kp();iv();SMe="[object Map]",CMe="[object Set]",AMe=Object.prototype,_Me=AMe.hasOwnProperty;o(LMe,"isEmpty");cr=LMe});function NMe(t){return Zn(t)&&ca(t)==DMe}var DMe,ere,tre=M(()=>{"use strict";xu();Mo();DMe="[object RegExp]";o(NMe,"baseIsRegExp");ere=NMe});var rre,RMe,Vo,nre=M(()=>{"use strict";tre();bd();nv();rre=Po&&Po.isRegExp,RMe=rre?Oo(rre):ere,Vo=RMe});function MMe(t){return t===void 0}var dr,ire=M(()=>{"use strict";o(MMe,"isUndefined");dr=MMe});function IMe(t,e){return t{"use strict";o(IMe,"baseLt");Qw=IMe});function OMe(t,e){var r={};return e=dn(e,3),Dm(t,function(n,i,a){hc(r,i,e(n,i,a))}),r}var Md,are=M(()=>{"use strict";Wp();$w();Qa();o(OMe,"mapValues");Md=OMe});function PMe(t,e,r){for(var n=-1,i=t.length;++n{"use strict";Ld();o(PMe,"baseExtremum");Mm=PMe});function BMe(t){return t&&t.length?Mm(t,ta,Wte):void 0}var Ls,sre=M(()=>{"use strict";Zw();Yte();Tu();o(BMe,"max");Ls=BMe});function FMe(t){return t&&t.length?Mm(t,ta,Qw):void 0}var Nl,YL=M(()=>{"use strict";Zw();WL();Tu();o(FMe,"min");Nl=FMe});function zMe(t,e){return t&&t.length?Mm(t,dn(e,2),Qw):void 0}var Id,ore=M(()=>{"use strict";Zw();Qa();WL();o(zMe,"minBy");Id=zMe});function $Me(t){if(typeof t!="function")throw new TypeError(GMe);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}var GMe,lre,cre=M(()=>{"use strict";GMe="Expected a function";o($Me,"negate");lre=$Me});function VMe(t,e,r,n){if(!yn(t))return t;e=Uh(e,t);for(var i=-1,a=e.length,s=a-1,l=t;l!=null&&++i{"use strict";em();Lv();sv();Qs();Tm();o(VMe,"baseSet");ure=VMe});function UMe(t,e,r){for(var n=-1,i=e.length,a={};++n{"use strict";Dv();hre();Lv();o(UMe,"basePickBy");Jw=UMe});function HMe(t,e){if(t==null)return{};var r=As(kw(t),function(n){return[n]});return e=dn(e),Jw(t,r,function(n,i){return e(n,i[0])})}var Ds,fre=M(()=>{"use strict";Dd();Qa();qL();TL();o(HMe,"pickBy");Ds=HMe});function WMe(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}var dre,pre=M(()=>{"use strict";o(WMe,"baseSortBy");dre=WMe});function YMe(t,e){if(t!==e){var r=t!==void 0,n=t===null,i=t===t,a=ro(t),s=e!==void 0,l=e===null,u=e===e,h=ro(e);if(!l&&!h&&!a&&t>e||a&&s&&u&&!l&&!h||n&&s&&u||!r&&u||!i)return 1;if(!n&&!a&&!h&&t{"use strict";Ld();o(YMe,"compareAscending");mre=YMe});function qMe(t,e,r){for(var n=-1,i=t.criteria,a=e.criteria,s=i.length,l=r.length;++n=l)return u;var h=r[n];return u*(h=="desc"?-1:1)}}return t.index-e.index}var yre,vre=M(()=>{"use strict";gre();o(qMe,"compareMultiple");yre=qMe});function XMe(t,e,r){e.length?e=As(e,function(a){return Mt(a)?function(s){return Hh(s,a.length===1?a[0]:a)}:a}):e=[ta];var n=-1;e=As(e,Oo(dn));var i=qw(t,function(a,s,l){var u=As(e,function(h){return h(a)});return{criteria:u,index:++n,value:a}});return dre(i,function(a,s){return yre(a,s,r)})}var xre,bre=M(()=>{"use strict";Dd();Dv();Qa();zL();pre();bd();vre();Tu();Vn();o(XMe,"baseOrderBy");xre=XMe});var jMe,wre,Tre=M(()=>{"use strict";OL();jMe=Gw("length"),wre=jMe});function oIe(t){for(var e=kre.lastIndex=0;kre.test(t);)++e;return e}var Ere,KMe,QMe,ZMe,JMe,eIe,tIe,XL,jL,rIe,Sre,Cre,Are,nIe,_re,Lre,iIe,aIe,sIe,kre,Dre,Nre=M(()=>{"use strict";Ere="\\ud800-\\udfff",KMe="\\u0300-\\u036f",QMe="\\ufe20-\\ufe2f",ZMe="\\u20d0-\\u20ff",JMe=KMe+QMe+ZMe,eIe="\\ufe0e\\ufe0f",tIe="["+Ere+"]",XL="["+JMe+"]",jL="\\ud83c[\\udffb-\\udfff]",rIe="(?:"+XL+"|"+jL+")",Sre="[^"+Ere+"]",Cre="(?:\\ud83c[\\udde6-\\uddff]){2}",Are="[\\ud800-\\udbff][\\udc00-\\udfff]",nIe="\\u200d",_re=rIe+"?",Lre="["+eIe+"]?",iIe="(?:"+nIe+"(?:"+[Sre,Cre,Are].join("|")+")"+Lre+_re+")*",aIe=Lre+_re+iIe,sIe="(?:"+[Sre+XL+"?",XL,Cre,Are,tIe].join("|")+")",kre=RegExp(jL+"(?="+jL+")|"+sIe+aIe,"g");o(oIe,"unicodeSize");Dre=oIe});function lIe(t){return VJ(t)?Dre(t):wre(t)}var Rre,Mre=M(()=>{"use strict";Tre();UJ();Nre();o(lIe,"stringSize");Rre=lIe});function cIe(t,e){return Jw(t,e,function(r,n){return zw(t,n)})}var Ire,Ore=M(()=>{"use strict";qL();IL();o(cIe,"basePick");Ire=cIe});var uIe,Od,Pre=M(()=>{"use strict";Ore();$J();uIe=GJ(function(t,e){return t==null?{}:Ire(t,e)}),Od=uIe});function dIe(t,e,r,n){for(var i=-1,a=fIe(hIe((e-t)/(r||1)),0),s=Array(a);a--;)s[n?a:++i]=t,t+=r;return s}var hIe,fIe,Bre,Fre=M(()=>{"use strict";hIe=Math.ceil,fIe=Math.max;o(dIe,"baseRange");Bre=dIe});function pIe(t){return function(e,r,n){return n&&typeof n!="number"&&Zs(e,r,n)&&(r=n=void 0),e=ym(e),r===void 0?(r=e,e=0):r=ym(r),n=n===void 0?e{"use strict";Fre();Td();hL();o(pIe,"createRange");zre=pIe});var mIe,Uo,$re=M(()=>{"use strict";Gre();mIe=zre(),Uo=mIe});function gIe(t,e,r,n,i){return i(t,function(a,s,l){r=n?(n=!1,a):e(r,a,s,l)}),r}var Vre,Ure=M(()=>{"use strict";o(gIe,"baseReduce");Vre=gIe});function yIe(t,e,r){var n=Mt(t)?HJ:Vre,i=arguments.length<3;return n(t,dn(e,4),r,i,_s)}var qr,KL=M(()=>{"use strict";WJ();Yh();Qa();Ure();Vn();o(yIe,"reduce");qr=yIe});function vIe(t,e){var r=Mt(t)?Sm:Yw;return r(t,lre(dn(e,3)))}var jh,Hre=M(()=>{"use strict";vw();BL();Qa();Vn();cre();o(vIe,"reject");jh=vIe});function wIe(t){if(t==null)return 0;if(si(t))return gi(t)?Rre(t):t.length;var e=no(t);return e==xIe||e==bIe?t.size:bm(t).length}var xIe,bIe,QL,Wre=M(()=>{"use strict";fw();Rd();Io();Xw();Mre();xIe="[object Map]",bIe="[object Set]";o(wIe,"size");QL=wIe});function TIe(t,e){var r;return _s(t,function(n,i,a){return r=e(n,i,a),!r}),!!r}var Yre,qre=M(()=>{"use strict";Yh();o(TIe,"baseSome");Yre=TIe});function kIe(t,e,r){var n=Mt(t)?Dw:Yre;return r&&Zs(t,e,r)&&(e=void 0),n(t,dn(e,3))}var Rv,Xre=M(()=>{"use strict";AL();Qa();qre();Vn();Td();o(kIe,"some");Rv=kIe});var EIe,kc,jre=M(()=>{"use strict";Em();bre();tm();Td();EIe=pc(function(t,e){if(t==null)return[];var r=e.length;return r>1&&Zs(t,e[0],e[1])?e=[]:r>2&&Zs(e[0],e[1],e[2])&&(e=[e[0]]),xre(t,wc(e,1),[])}),kc=EIe});var SIe,CIe,Kre,Qre=M(()=>{"use strict";kL();fL();Mw();SIe=1/0,CIe=Wh&&1/Lm(new Wh([,-0]))[1]==SIe?function(t){return new Wh(t)}:Jn,Kre=CIe});function _Ie(t,e,r){var n=-1,i=hw,a=t.length,s=!0,l=[],u=l;if(r)s=!1,i=Uw;else if(a>=AIe){var h=e?null:Kre(t);if(h)return Lm(h);s=!1,i=_m,u=new Am}else u=e?[]:l;e:for(;++n{"use strict";Lw();mL();PL();Nw();Qre();Mw();AIe=200;o(_Ie,"baseUniq");Im=_Ie});var LIe,ZL,Zre=M(()=>{"use strict";Em();tm();eT();o5();LIe=pc(function(t){return Im(wc(t,1,xd,!0))}),ZL=LIe});function DIe(t){return t&&t.length?Im(t):[]}var Om,Jre=M(()=>{"use strict";eT();o(DIe,"uniq");Om=DIe});function NIe(t,e){return t&&t.length?Im(t,dn(e,2)):[]}var ene,tne=M(()=>{"use strict";Qa();eT();o(NIe,"uniqBy");ene=NIe});function MIe(t){var e=++RIe;return pw(t)+e}var RIe,Pd,rne=M(()=>{"use strict";gL();RIe=0;o(MIe,"uniqueId");Pd=MIe});function IIe(t,e,r){for(var n=-1,i=t.length,a=e.length,s={};++n{"use strict";o(IIe,"baseZipObject");nne=IIe});function OIe(t,e){return nne(t||[],e||[],dc)}var tT,ane=M(()=>{"use strict";em();ine();o(OIe,"zipObject");tT=OIe});var Ht=M(()=>{"use strict";LJ();SL();Mee();Iee();W_();Tte();Ste();Ate();_te();Lte();Ite();FL();zte();$te();GL();gw();Ww();Vte();Ute();Hte();jte();Tu();Zte();Jte();Vn();Kw();jy();Qs();nre();Xw();ire();xc();Cte();Rm();are();sre();X_();YL();ore();fL();bte();Pre();fre();$re();KL();Hre();Wre();Xre();jre();Zre();Jre();rne();HL();ane();});function one(t,e){t[e]?t[e]++:t[e]=1}function lne(t,e){--t[e]||delete t[e]}function Mv(t,e,r,n){var i=""+e,a=""+r;if(!t&&i>a){var s=i;i=a,a=s}return i+sne+a+sne+(dr(n)?PIe:n)}function BIe(t,e,r,n){var i=""+e,a=""+r;if(!t&&i>a){var s=i;i=a,a=s}var l={v:i,w:a};return n&&(l.name=n),l}function JL(t,e){return Mv(t,e.v,e.w,e.name)}var PIe,Bd,sne,Mr,rT=M(()=>{"use strict";Ht();PIe="\0",Bd="\0",sne="",Mr=class{static{o(this,"Graph")}constructor(e={}){this._isDirected=Object.prototype.hasOwnProperty.call(e,"directed")?e.directed:!0,this._isMultigraph=Object.prototype.hasOwnProperty.call(e,"multigraph")?e.multigraph:!1,this._isCompound=Object.prototype.hasOwnProperty.call(e,"compound")?e.compound:!1,this._label=void 0,this._defaultNodeLabelFn=bs(void 0),this._defaultEdgeLabelFn=bs(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[Bd]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return Ei(e)||(e=bs(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return zr(this._nodes)}sources(){var e=this;return Yr(this.nodes(),function(r){return cr(e._in[r])})}sinks(){var e=this;return Yr(this.nodes(),function(r){return cr(e._out[r])})}setNodes(e,r){var n=arguments,i=this;return Ce(e,function(a){n.length>1?i.setNode(a,r):i.setNode(a)}),this}setNode(e,r){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=r),this):(this._nodes[e]=arguments.length>1?r:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=Bd,this._children[e]={},this._children[Bd][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var r=o(n=>this.removeEdge(this._edgeObjs[n]),"removeEdge");delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],Ce(this.children(e),n=>{this.setParent(n)}),delete this._children[e]),Ce(zr(this._in[e]),r),delete this._in[e],delete this._preds[e],Ce(zr(this._out[e]),r),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,r){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(dr(r))r=Bd;else{r+="";for(var n=r;!dr(n);n=this.parent(n))if(n===e)throw new Error("Setting "+r+" as parent of "+e+" would create a cycle");this.setNode(r)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=r,this._children[r][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var r=this._parent[e];if(r!==Bd)return r}}children(e){if(dr(e)&&(e=Bd),this._isCompound){var r=this._children[e];if(r)return zr(r)}else{if(e===Bd)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var r=this._preds[e];if(r)return zr(r)}successors(e){var r=this._sucs[e];if(r)return zr(r)}neighbors(e){var r=this.predecessors(e);if(r)return ZL(r,this.successors(e))}isLeaf(e){var r;return this.isDirected()?r=this.successors(e):r=this.neighbors(e),r.length===0}filterNodes(e){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var n=this;Ce(this._nodes,function(s,l){e(l)&&r.setNode(l,s)}),Ce(this._edgeObjs,function(s){r.hasNode(s.v)&&r.hasNode(s.w)&&r.setEdge(s,n.edge(s))});var i={};function a(s){var l=n.parent(s);return l===void 0||r.hasNode(l)?(i[s]=l,l):l in i?i[l]:a(l)}return o(a,"findParent"),this._isCompound&&Ce(r.nodes(),function(s){r.setParent(s,a(s))}),r}setDefaultEdgeLabel(e){return Ei(e)||(e=bs(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return br(this._edgeObjs)}setPath(e,r){var n=this,i=arguments;return qr(e,function(a,s){return i.length>1?n.setEdge(a,s,r):n.setEdge(a,s),s}),this}setEdge(){var e,r,n,i,a=!1,s=arguments[0];typeof s=="object"&&s!==null&&"v"in s?(e=s.v,r=s.w,n=s.name,arguments.length===2&&(i=arguments[1],a=!0)):(e=s,r=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),e=""+e,r=""+r,dr(n)||(n=""+n);var l=Mv(this._isDirected,e,r,n);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,l))return a&&(this._edgeLabels[l]=i),this;if(!dr(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(r),this._edgeLabels[l]=a?i:this._defaultEdgeLabelFn(e,r,n);var u=BIe(this._isDirected,e,r,n);return e=u.v,r=u.w,Object.freeze(u),this._edgeObjs[l]=u,one(this._preds[r],e),one(this._sucs[e],r),this._in[r][l]=u,this._out[e][l]=u,this._edgeCount++,this}edge(e,r,n){var i=arguments.length===1?JL(this._isDirected,arguments[0]):Mv(this._isDirected,e,r,n);return this._edgeLabels[i]}hasEdge(e,r,n){var i=arguments.length===1?JL(this._isDirected,arguments[0]):Mv(this._isDirected,e,r,n);return Object.prototype.hasOwnProperty.call(this._edgeLabels,i)}removeEdge(e,r,n){var i=arguments.length===1?JL(this._isDirected,arguments[0]):Mv(this._isDirected,e,r,n),a=this._edgeObjs[i];return a&&(e=a.v,r=a.w,delete this._edgeLabels[i],delete this._edgeObjs[i],lne(this._preds[r],e),lne(this._sucs[e],r),delete this._in[r][i],delete this._out[e][i],this._edgeCount--),this}inEdges(e,r){var n=this._in[e];if(n){var i=br(n);return r?Yr(i,function(a){return a.v===r}):i}}outEdges(e,r){var n=this._out[e];if(n){var i=br(n);return r?Yr(i,function(a){return a.w===r}):i}}nodeEdges(e,r){var n=this.inEdges(e,r);if(n)return n.concat(this.outEdges(e,r))}};Mr.prototype._nodeCount=0;Mr.prototype._edgeCount=0;o(one,"incrementOrInitEntry");o(lne,"decrementOrRemoveEntry");o(Mv,"edgeArgsToId");o(BIe,"edgeArgsToObj");o(JL,"edgeObjToId")});var Ns=M(()=>{"use strict";rT()});function cne(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function FIe(t,e){if(t!=="_next"&&t!=="_prev")return e}var nT,une=M(()=>{"use strict";nT=class{static{o(this,"List")}constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,r=e._prev;if(r!==e)return cne(r),r}enqueue(e){var r=this._sentinel;e._prev&&e._next&&cne(e),e._next=r._next,r._next._prev=e,r._next=e,e._prev=r}toString(){for(var e=[],r=this._sentinel,n=r._prev;n!==r;)e.push(JSON.stringify(n,FIe)),n=n._prev;return"["+e.join(", ")+"]"}};o(cne,"unlink");o(FIe,"filterOutLinks")});function hne(t,e){if(t.nodeCount()<=1)return[];var r=$Ie(t,e||zIe),n=GIe(r.graph,r.buckets,r.zeroIdx);return Wr(Je(n,function(i){return t.outEdges(i.v,i.w)}))}function GIe(t,e,r){for(var n=[],i=e[e.length-1],a=e[0],s;t.nodeCount();){for(;s=a.dequeue();)eD(t,e,r,s);for(;s=i.dequeue();)eD(t,e,r,s);if(t.nodeCount()){for(var l=e.length-2;l>0;--l)if(s=e[l].dequeue(),s){n=n.concat(eD(t,e,r,s,!0));break}}}return n}function eD(t,e,r,n,i){var a=i?[]:void 0;return Ce(t.inEdges(n.v),function(s){var l=t.edge(s),u=t.node(s.v);i&&a.push({v:s.v,w:s.w}),u.out-=l,tD(e,r,u)}),Ce(t.outEdges(n.v),function(s){var l=t.edge(s),u=s.w,h=t.node(u);h.in-=l,tD(e,r,h)}),t.removeNode(n.v),a}function $Ie(t,e){var r=new Mr,n=0,i=0;Ce(t.nodes(),function(l){r.setNode(l,{v:l,in:0,out:0})}),Ce(t.edges(),function(l){var u=r.edge(l.v,l.w)||0,h=e(l),f=u+h;r.setEdge(l.v,l.w,f),i=Math.max(i,r.node(l.v).out+=h),n=Math.max(n,r.node(l.w).in+=h)});var a=Uo(i+n+3).map(function(){return new nT}),s=n+1;return Ce(r.nodes(),function(l){tD(a,s,r.node(l))}),{graph:r,buckets:a,zeroIdx:s}}function tD(t,e,r){r.out?r.in?t[r.out-r.in+e].enqueue(r):t[t.length-1].enqueue(r):t[0].enqueue(r)}var zIe,fne=M(()=>{"use strict";Ht();Ns();une();zIe=bs(1);o(hne,"greedyFAS");o(GIe,"doGreedyFAS");o(eD,"removeNode");o($Ie,"buildState");o(tD,"assignBucket")});function dne(t){var e=t.graph().acyclicer==="greedy"?hne(t,r(t)):VIe(t);Ce(e,function(n){var i=t.edge(n);t.removeEdge(n),i.forwardName=n.name,i.reversed=!0,t.setEdge(n.w,n.v,i,Pd("rev"))});function r(n){return function(i){return n.edge(i).weight}}o(r,"weightFn")}function VIe(t){var e=[],r={},n={};function i(a){Object.prototype.hasOwnProperty.call(n,a)||(n[a]=!0,r[a]=!0,Ce(t.outEdges(a),function(s){Object.prototype.hasOwnProperty.call(r,s.w)?e.push(s):i(s.w)}),delete r[a])}return o(i,"dfs"),Ce(t.nodes(),i),e}function pne(t){Ce(t.edges(),function(e){var r=t.edge(e);if(r.reversed){t.removeEdge(e);var n=r.forwardName;delete r.reversed,delete r.forwardName,t.setEdge(e.w,e.v,r,n)}})}var rD=M(()=>{"use strict";Ht();fne();o(dne,"run");o(VIe,"dfsFAS");o(pne,"undo")});function Ec(t,e,r,n){var i;do i=Pd(n);while(t.hasNode(i));return r.dummy=e,t.setNode(i,r),i}function gne(t){var e=new Mr().setGraph(t.graph());return Ce(t.nodes(),function(r){e.setNode(r,t.node(r))}),Ce(t.edges(),function(r){var n=e.edge(r.v,r.w)||{weight:0,minlen:1},i=t.edge(r);e.setEdge(r.v,r.w,{weight:n.weight+i.weight,minlen:Math.max(n.minlen,i.minlen)})}),e}function iT(t){var e=new Mr({multigraph:t.isMultigraph()}).setGraph(t.graph());return Ce(t.nodes(),function(r){t.children(r).length||e.setNode(r,t.node(r))}),Ce(t.edges(),function(r){e.setEdge(r,t.edge(r))}),e}function nD(t,e){var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2;if(!i&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=l*i/a,h=l):(i<0&&(s=-s),u=s,h=s*a/i),{x:r+u,y:n+h}}function Kh(t){var e=Je(Uo(aD(t)+1),function(){return[]});return Ce(t.nodes(),function(r){var n=t.node(r),i=n.rank;dr(i)||(e[i][n.order]=r)}),e}function yne(t){var e=Nl(Je(t.nodes(),function(r){return t.node(r).rank}));Ce(t.nodes(),function(r){var n=t.node(r);It(n,"rank")&&(n.rank-=e)})}function vne(t){var e=Nl(Je(t.nodes(),function(a){return t.node(a).rank})),r=[];Ce(t.nodes(),function(a){var s=t.node(a).rank-e;r[s]||(r[s]=[]),r[s].push(a)});var n=0,i=t.graph().nodeRankFactor;Ce(r,function(a,s){dr(a)&&s%i!==0?--n:n&&Ce(a,function(l){t.node(l).rank+=n})})}function iD(t,e,r,n){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=n),Ec(t,"border",i,e)}function aD(t){return Ls(Je(t.nodes(),function(e){var r=t.node(e).rank;if(!dr(r))return r}))}function xne(t,e){var r={lhs:[],rhs:[]};return Ce(t,function(n){e(n)?r.lhs.push(n):r.rhs.push(n)}),r}function bne(t,e){var r=Vw();try{return e()}finally{console.log(t+" time: "+(Vw()-r)+"ms")}}function wne(t,e){return e()}var Sc=M(()=>{"use strict";Ht();Ns();o(Ec,"addDummyNode");o(gne,"simplify");o(iT,"asNonCompoundGraph");o(nD,"intersectRect");o(Kh,"buildLayerMatrix");o(yne,"normalizeRanks");o(vne,"removeEmptyRanks");o(iD,"addBorderNode");o(aD,"maxRank");o(xne,"partition");o(bne,"time");o(wne,"notime")});function kne(t){function e(r){var n=t.children(r),i=t.node(r);if(n.length&&Ce(n,e),Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,s=i.maxRank+1;a{"use strict";Ht();Sc();o(kne,"addBorderSegments");o(Tne,"addBorderNode")});function Cne(t){var e=t.graph().rankdir.toLowerCase();(e==="lr"||e==="rl")&&_ne(t)}function Ane(t){var e=t.graph().rankdir.toLowerCase();(e==="bt"||e==="rl")&&UIe(t),(e==="lr"||e==="rl")&&(HIe(t),_ne(t))}function _ne(t){Ce(t.nodes(),function(e){Sne(t.node(e))}),Ce(t.edges(),function(e){Sne(t.edge(e))})}function Sne(t){var e=t.width;t.width=t.height,t.height=e}function UIe(t){Ce(t.nodes(),function(e){sD(t.node(e))}),Ce(t.edges(),function(e){var r=t.edge(e);Ce(r.points,sD),Object.prototype.hasOwnProperty.call(r,"y")&&sD(r)})}function sD(t){t.y=-t.y}function HIe(t){Ce(t.nodes(),function(e){oD(t.node(e))}),Ce(t.edges(),function(e){var r=t.edge(e);Ce(r.points,oD),Object.prototype.hasOwnProperty.call(r,"x")&&oD(r)})}function oD(t){var e=t.x;t.x=t.y,t.y=e}var Lne=M(()=>{"use strict";Ht();o(Cne,"adjust");o(Ane,"undo");o(_ne,"swapWidthHeight");o(Sne,"swapWidthHeightOne");o(UIe,"reverseY");o(sD,"reverseYOne");o(HIe,"swapXY");o(oD,"swapXYOne")});function Dne(t){t.graph().dummyChains=[],Ce(t.edges(),function(e){YIe(t,e)})}function YIe(t,e){var r=e.v,n=t.node(r).rank,i=e.w,a=t.node(i).rank,s=e.name,l=t.edge(e),u=l.labelRank;if(a!==n+1){t.removeEdge(e);var h=void 0,f,d;for(d=0,++n;n{"use strict";Ht();Sc();o(Dne,"run");o(YIe,"normalizeEdge");o(Nne,"undo")});function Iv(t){var e={};function r(n){var i=t.node(n);if(Object.prototype.hasOwnProperty.call(e,n))return i.rank;e[n]=!0;var a=Nl(Je(t.outEdges(n),function(s){return r(s.w)-t.edge(s).minlen}));return(a===Number.POSITIVE_INFINITY||a===void 0||a===null)&&(a=0),i.rank=a}o(r,"dfs"),Ce(t.sources(),r)}function Fd(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}var aT=M(()=>{"use strict";Ht();o(Iv,"longestPath");o(Fd,"slack")});function sT(t){var e=new Mr({directed:!1}),r=t.nodes()[0],n=t.nodeCount();e.setNode(r,{});for(var i,a;qIe(e,t){"use strict";Ht();Ns();aT();o(sT,"feasibleTree");o(qIe,"tightTree");o(XIe,"findMinSlackEdge");o(jIe,"shiftRanks")});var Mne=M(()=>{"use strict"});var uD=M(()=>{"use strict"});var $Yt,hD=M(()=>{"use strict";Ht();uD();$Yt=bs(1)});var Ine=M(()=>{"use strict";hD()});var fD=M(()=>{"use strict"});var One=M(()=>{"use strict";fD()});var ZYt,Pne=M(()=>{"use strict";Ht();ZYt=bs(1)});function dD(t){var e={},r={},n=[];function i(a){if(Object.prototype.hasOwnProperty.call(r,a))throw new Ov;Object.prototype.hasOwnProperty.call(e,a)||(r[a]=!0,e[a]=!0,Ce(t.predecessors(a),i),delete r[a],n.push(a))}if(o(i,"visit"),Ce(t.sinks(),i),QL(e)!==t.nodeCount())throw new Ov;return n}function Ov(){}var pD=M(()=>{"use strict";Ht();dD.CycleException=Ov;o(dD,"topsort");o(Ov,"CycleException");Ov.prototype=new Error});var Bne=M(()=>{"use strict";pD()});function oT(t,e,r){Mt(e)||(e=[e]);var n=(t.isDirected()?t.successors:t.neighbors).bind(t),i=[],a={};return Ce(e,function(s){if(!t.hasNode(s))throw new Error("Graph does not have node: "+s);Fne(t,s,r==="post",a,n,i)}),i}function Fne(t,e,r,n,i,a){Object.prototype.hasOwnProperty.call(n,e)||(n[e]=!0,r||a.push(e),Ce(i(e),function(s){Fne(t,s,r,n,i,a)}),r&&a.push(e))}var mD=M(()=>{"use strict";Ht();o(oT,"dfs");o(Fne,"doDfs")});function gD(t,e){return oT(t,e,"post")}var zne=M(()=>{"use strict";mD();o(gD,"postorder")});function yD(t,e){return oT(t,e,"pre")}var Gne=M(()=>{"use strict";mD();o(yD,"preorder")});var $ne=M(()=>{"use strict";uD();rT()});var Vne=M(()=>{"use strict";Mne();hD();Ine();One();Pne();Bne();zne();Gne();$ne();fD();pD()});function Zh(t){t=gne(t),Iv(t);var e=sT(t);xD(e),vD(e,t);for(var r,n;r=Yne(e);)n=qne(e,t,r),Xne(e,t,r,n)}function vD(t,e){var r=gD(t,t.nodes());r=r.slice(0,r.length-1),Ce(r,function(n){eOe(t,e,n)})}function eOe(t,e,r){var n=t.node(r),i=n.parent;t.edge(r,i).cutvalue=Hne(t,e,r)}function Hne(t,e,r){var n=t.node(r),i=n.parent,a=!0,s=e.edge(r,i),l=0;return s||(a=!1,s=e.edge(i,r)),l=s.weight,Ce(e.nodeEdges(r),function(u){var h=u.v===r,f=h?u.w:u.v;if(f!==i){var d=h===a,p=e.edge(u).weight;if(l+=d?p:-p,rOe(t,r,f)){var m=t.edge(r,f).cutvalue;l+=d?-m:m}}}),l}function xD(t,e){arguments.length<2&&(e=t.nodes()[0]),Wne(t,{},1,e)}function Wne(t,e,r,n,i){var a=r,s=t.node(n);return e[n]=!0,Ce(t.neighbors(n),function(l){Object.prototype.hasOwnProperty.call(e,l)||(r=Wne(t,e,r,l,n))}),s.low=a,s.lim=r++,i?s.parent=i:delete s.parent,r}function Yne(t){return Za(t.edges(),function(e){return t.edge(e).cutvalue<0})}function qne(t,e,r){var n=r.v,i=r.w;e.hasEdge(n,i)||(n=r.w,i=r.v);var a=t.node(n),s=t.node(i),l=a,u=!1;a.lim>s.lim&&(l=s,u=!0);var h=Yr(e.edges(),function(f){return u===Une(t,t.node(f.v),l)&&u!==Une(t,t.node(f.w),l)});return Id(h,function(f){return Fd(e,f)})}function Xne(t,e,r,n){var i=r.v,a=r.w;t.removeEdge(i,a),t.setEdge(n.v,n.w,{}),xD(t),vD(t,e),tOe(t,e)}function tOe(t,e){var r=Za(t.nodes(),function(i){return!e.node(i).parent}),n=yD(t,r);n=n.slice(1),Ce(n,function(i){var a=t.node(i).parent,s=e.edge(i,a),l=!1;s||(s=e.edge(a,i),l=!0),e.node(i).rank=e.node(a).rank+(l?s.minlen:-s.minlen)})}function rOe(t,e,r){return t.hasEdge(e,r)}function Une(t,e,r){return r.low<=e.lim&&e.lim<=r.lim}var jne=M(()=>{"use strict";Ht();Vne();Sc();cD();aT();Zh.initLowLimValues=xD;Zh.initCutValues=vD;Zh.calcCutValue=Hne;Zh.leaveEdge=Yne;Zh.enterEdge=qne;Zh.exchangeEdges=Xne;o(Zh,"networkSimplex");o(vD,"initCutValues");o(eOe,"assignCutValue");o(Hne,"calcCutValue");o(xD,"initLowLimValues");o(Wne,"dfsAssignLowLim");o(Yne,"leaveEdge");o(qne,"enterEdge");o(Xne,"exchangeEdges");o(tOe,"updateRanks");o(rOe,"isTreeEdge");o(Une,"isDescendant")});function bD(t){switch(t.graph().ranker){case"network-simplex":Kne(t);break;case"tight-tree":iOe(t);break;case"longest-path":nOe(t);break;default:Kne(t)}}function iOe(t){Iv(t),sT(t)}function Kne(t){Zh(t)}var nOe,wD=M(()=>{"use strict";cD();jne();aT();o(bD,"rank");nOe=Iv;o(iOe,"tightTreeRanker");o(Kne,"networkSimplexRanker")});function Qne(t){var e=Ec(t,"root",{},"_root"),r=aOe(t),n=Ls(br(r))-1,i=2*n+1;t.graph().nestingRoot=e,Ce(t.edges(),function(s){t.edge(s).minlen*=i});var a=sOe(t)+1;Ce(t.children(),function(s){Zne(t,e,i,a,n,r,s)}),t.graph().nodeRankFactor=i}function Zne(t,e,r,n,i,a,s){var l=t.children(s);if(!l.length){s!==e&&t.setEdge(e,s,{weight:0,minlen:r});return}var u=iD(t,"_bt"),h=iD(t,"_bb"),f=t.node(s);t.setParent(u,s),f.borderTop=u,t.setParent(h,s),f.borderBottom=h,Ce(l,function(d){Zne(t,e,r,n,i,a,d);var p=t.node(d),m=p.borderTop?p.borderTop:d,g=p.borderBottom?p.borderBottom:d,y=p.borderTop?n:2*n,v=m!==g?1:i-a[s]+1;t.setEdge(u,m,{weight:y,minlen:v,nestingEdge:!0}),t.setEdge(g,h,{weight:y,minlen:v,nestingEdge:!0})}),t.parent(s)||t.setEdge(e,u,{weight:0,minlen:i+a[s]})}function aOe(t){var e={};function r(n,i){var a=t.children(n);a&&a.length&&Ce(a,function(s){r(s,i+1)}),e[n]=i}return o(r,"dfs"),Ce(t.children(),function(n){r(n,1)}),e}function sOe(t){return qr(t.edges(),function(e,r){return e+t.edge(r).weight},0)}function Jne(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,Ce(t.edges(),function(r){var n=t.edge(r);n.nestingEdge&&t.removeEdge(r)})}var eie=M(()=>{"use strict";Ht();Sc();o(Qne,"run");o(Zne,"dfs");o(aOe,"treeDepths");o(sOe,"sumWeights");o(Jne,"cleanup")});function tie(t,e,r){var n={},i;Ce(r,function(a){for(var s=t.parent(a),l,u;s;){if(l=t.parent(s),l?(u=n[l],n[l]=s):(u=i,i=s),u&&u!==s){e.setEdge(u,s);return}s=l}})}var rie=M(()=>{"use strict";Ht();o(tie,"addSubgraphConstraints")});function nie(t,e,r){var n=lOe(t),i=new Mr({compound:!0}).setGraph({root:n}).setDefaultNodeLabel(function(a){return t.node(a)});return Ce(t.nodes(),function(a){var s=t.node(a),l=t.parent(a);(s.rank===e||s.minRank<=e&&e<=s.maxRank)&&(i.setNode(a),i.setParent(a,l||n),Ce(t[r](a),function(u){var h=u.v===a?u.w:u.v,f=i.edge(h,a),d=dr(f)?0:f.weight;i.setEdge(h,a,{weight:t.edge(u).weight+d})}),Object.prototype.hasOwnProperty.call(s,"minRank")&&i.setNode(a,{borderLeft:s.borderLeft[e],borderRight:s.borderRight[e]}))}),i}function lOe(t){for(var e;t.hasNode(e=Pd("_root")););return e}var iie=M(()=>{"use strict";Ht();Ns();o(nie,"buildLayerGraph");o(lOe,"createRootNode")});function aie(t,e){for(var r=0,n=1;n0;)f%2&&(d+=l[f+1]),f=f-1>>1,l[f]+=h.weight;u+=h.weight*d})),u}var sie=M(()=>{"use strict";Ht();o(aie,"crossCount");o(cOe,"twoLayerCrossCount")});function oie(t){var e={},r=Yr(t.nodes(),function(l){return!t.children(l).length}),n=Ls(Je(r,function(l){return t.node(l).rank})),i=Je(Uo(n+1),function(){return[]});function a(l){if(!It(e,l)){e[l]=!0;var u=t.node(l);i[u.rank].push(l),Ce(t.successors(l),a)}}o(a,"dfs");var s=kc(r,function(l){return t.node(l).rank});return Ce(s,a),i}var lie=M(()=>{"use strict";Ht();o(oie,"initOrder")});function cie(t,e){return Je(e,function(r){var n=t.inEdges(r);if(n.length){var i=qr(n,function(a,s){var l=t.edge(s),u=t.node(s.v);return{sum:a.sum+l.weight*u.order,weight:a.weight+l.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}var uie=M(()=>{"use strict";Ht();o(cie,"barycenter")});function hie(t,e){var r={};Ce(t,function(i,a){var s=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:a};dr(i.barycenter)||(s.barycenter=i.barycenter,s.weight=i.weight)}),Ce(e.edges(),function(i){var a=r[i.v],s=r[i.w];!dr(a)&&!dr(s)&&(s.indegree++,a.out.push(r[i.w]))});var n=Yr(r,function(i){return!i.indegree});return uOe(n)}function uOe(t){var e=[];function r(a){return function(s){s.merged||(dr(s.barycenter)||dr(a.barycenter)||s.barycenter>=a.barycenter)&&hOe(a,s)}}o(r,"handleIn");function n(a){return function(s){s.in.push(a),--s.indegree===0&&t.push(s)}}for(o(n,"handleOut");t.length;){var i=t.pop();e.push(i),Ce(i.in.reverse(),r(i)),Ce(i.out,n(i))}return Je(Yr(e,function(a){return!a.merged}),function(a){return Od(a,["vs","i","barycenter","weight"])})}function hOe(t,e){var r=0,n=0;t.weight&&(r+=t.barycenter*t.weight,n+=t.weight),e.weight&&(r+=e.barycenter*e.weight,n+=e.weight),t.vs=e.vs.concat(t.vs),t.barycenter=r/n,t.weight=n,t.i=Math.min(e.i,t.i),e.merged=!0}var fie=M(()=>{"use strict";Ht();o(hie,"resolveConflicts");o(uOe,"doResolveConflicts");o(hOe,"mergeEntries")});function pie(t,e){var r=xne(t,function(f){return Object.prototype.hasOwnProperty.call(f,"barycenter")}),n=r.lhs,i=kc(r.rhs,function(f){return-f.i}),a=[],s=0,l=0,u=0;n.sort(fOe(!!e)),u=die(a,i,u),Ce(n,function(f){u+=f.vs.length,a.push(f.vs),s+=f.barycenter*f.weight,l+=f.weight,u=die(a,i,u)});var h={vs:Wr(a)};return l&&(h.barycenter=s/l,h.weight=l),h}function die(t,e,r){for(var n;e.length&&(n=fa(e)).i<=r;)e.pop(),t.push(n.vs),r++;return r}function fOe(t){return function(e,r){return e.barycenterr.barycenter?1:t?r.i-e.i:e.i-r.i}}var mie=M(()=>{"use strict";Ht();Sc();o(pie,"sort");o(die,"consumeUnsortable");o(fOe,"compareWithBias")});function TD(t,e,r,n){var i=t.children(e),a=t.node(e),s=a?a.borderLeft:void 0,l=a?a.borderRight:void 0,u={};s&&(i=Yr(i,function(g){return g!==s&&g!==l}));var h=cie(t,i);Ce(h,function(g){if(t.children(g.v).length){var y=TD(t,g.v,r,n);u[g.v]=y,Object.prototype.hasOwnProperty.call(y,"barycenter")&&pOe(g,y)}});var f=hie(h,r);dOe(f,u);var d=pie(f,n);if(s&&(d.vs=Wr([s,d.vs,l]),t.predecessors(s).length)){var p=t.node(t.predecessors(s)[0]),m=t.node(t.predecessors(l)[0]);Object.prototype.hasOwnProperty.call(d,"barycenter")||(d.barycenter=0,d.weight=0),d.barycenter=(d.barycenter*d.weight+p.order+m.order)/(d.weight+2),d.weight+=2}return d}function dOe(t,e){Ce(t,function(r){r.vs=Wr(r.vs.map(function(n){return e[n]?e[n].vs:n}))})}function pOe(t,e){dr(t.barycenter)?(t.barycenter=e.barycenter,t.weight=e.weight):(t.barycenter=(t.barycenter*t.weight+e.barycenter*e.weight)/(t.weight+e.weight),t.weight+=e.weight)}var gie=M(()=>{"use strict";Ht();uie();fie();mie();o(TD,"sortSubgraph");o(dOe,"expandSubgraphs");o(pOe,"mergeBarycenters")});function xie(t){var e=aD(t),r=yie(t,Uo(1,e+1),"inEdges"),n=yie(t,Uo(e-1,-1,-1),"outEdges"),i=oie(t);vie(t,i);for(var a=Number.POSITIVE_INFINITY,s,l=0,u=0;u<4;++l,++u){mOe(l%2?r:n,l%4>=2),i=Kh(t);var h=aie(t,i);h{"use strict";Ht();Ns();Sc();rie();iie();sie();lie();gie();o(xie,"order");o(yie,"buildLayerGraphs");o(mOe,"sweepLayerGraphs");o(vie,"assignOrder")});function wie(t){var e=yOe(t);Ce(t.graph().dummyChains,function(r){for(var n=t.node(r),i=n.edgeObj,a=gOe(t,e,i.v,i.w),s=a.path,l=a.lca,u=0,h=s[u],f=!0;r!==i.w;){if(n=t.node(r),f){for(;(h=s[u])!==l&&t.node(h).maxRanks||l>e[u].lim));for(h=u,u=n;(u=t.parent(u))!==h;)a.push(u);return{path:i.concat(a.reverse()),lca:h}}function yOe(t){var e={},r=0;function n(i){var a=r;Ce(t.children(i),n),e[i]={low:a,lim:r++}}return o(n,"dfs"),Ce(t.children(),n),e}var Tie=M(()=>{"use strict";Ht();o(wie,"parentDummyChains");o(gOe,"findPath");o(yOe,"postorder")});function vOe(t,e){var r={};function n(i,a){var s=0,l=0,u=i.length,h=fa(a);return Ce(a,function(f,d){var p=bOe(t,f),m=p?t.node(p).order:u;(p||f===h)&&(Ce(a.slice(l,d+1),function(g){Ce(t.predecessors(g),function(y){var v=t.node(y),x=v.order;(xh)&&kie(r,p,f)})})}o(n,"scan");function i(a,s){var l=-1,u,h=0;return Ce(s,function(f,d){if(t.node(f).dummy==="border"){var p=t.predecessors(f);p.length&&(u=t.node(p[0]).order,n(s,h,d,l,u),h=d,l=u)}n(s,h,s.length,u,a.length)}),s}return o(i,"visitLayer"),qr(e,i),r}function bOe(t,e){if(t.node(e).dummy)return Za(t.predecessors(e),function(r){return t.node(r).dummy})}function kie(t,e,r){if(e>r){var n=e;e=r,r=n}var i=t[e];i||(t[e]=i={}),i[r]=!0}function wOe(t,e,r){if(e>r){var n=e;e=r,r=n}return!!t[e]&&Object.prototype.hasOwnProperty.call(t[e],r)}function TOe(t,e,r,n){var i={},a={},s={};return Ce(e,function(l){Ce(l,function(u,h){i[u]=u,a[u]=u,s[u]=h})}),Ce(e,function(l){var u=-1;Ce(l,function(h){var f=n(h);if(f.length){f=kc(f,function(y){return s[y]});for(var d=(f.length-1)/2,p=Math.floor(d),m=Math.ceil(d);p<=m;++p){var g=f[p];a[h]===h&&u{"use strict";Ht();Ns();Sc();o(vOe,"findType1Conflicts");o(xOe,"findType2Conflicts");o(bOe,"findOtherInnerSegmentNode");o(kie,"addConflict");o(wOe,"hasConflict");o(TOe,"verticalAlignment");o(kOe,"horizontalCompaction");o(EOe,"buildBlockGraph");o(SOe,"findSmallestWidthAlignment");o(COe,"alignCoordinates");o(AOe,"balance");o(Eie,"positionX");o(_Oe,"sep");o(LOe,"width")});function Cie(t){t=iT(t),DOe(t),VL(Eie(t),function(e,r){t.node(r).x=e})}function DOe(t){var e=Kh(t),r=t.graph().ranksep,n=0;Ce(e,function(i){var a=Ls(Je(i,function(s){return t.node(s).height}));Ce(i,function(s){t.node(s).y=n+a/2}),n+=a+r})}var Aie=M(()=>{"use strict";Ht();Sc();Sie();o(Cie,"position");o(DOe,"positionY")});function Du(t,e){var r=e&&e.debugTiming?bne:wne;r("layout",()=>{var n=r(" buildLayoutGraph",()=>$Oe(t));r(" runLayout",()=>NOe(n,r)),r(" updateInputGraph",()=>ROe(t,n))})}function NOe(t,e){e(" makeSpaceForEdgeLabels",()=>VOe(t)),e(" removeSelfEdges",()=>QOe(t)),e(" acyclic",()=>dne(t)),e(" nestingGraph.run",()=>Qne(t)),e(" rank",()=>bD(iT(t))),e(" injectEdgeLabelProxies",()=>UOe(t)),e(" removeEmptyRanks",()=>vne(t)),e(" nestingGraph.cleanup",()=>Jne(t)),e(" normalizeRanks",()=>yne(t)),e(" assignRankMinMax",()=>HOe(t)),e(" removeEdgeLabelProxies",()=>WOe(t)),e(" normalize.run",()=>Dne(t)),e(" parentDummyChains",()=>wie(t)),e(" addBorderSegments",()=>kne(t)),e(" order",()=>xie(t)),e(" insertSelfEdges",()=>ZOe(t)),e(" adjustCoordinateSystem",()=>Cne(t)),e(" position",()=>Cie(t)),e(" positionSelfEdges",()=>JOe(t)),e(" removeBorderNodes",()=>KOe(t)),e(" normalize.undo",()=>Nne(t)),e(" fixupEdgeLabelCoords",()=>XOe(t)),e(" undoCoordinateSystem",()=>Ane(t)),e(" translateGraph",()=>YOe(t)),e(" assignNodeIntersects",()=>qOe(t)),e(" reversePoints",()=>jOe(t)),e(" acyclic.undo",()=>pne(t))}function ROe(t,e){Ce(t.nodes(),function(r){var n=t.node(r),i=e.node(r);n&&(n.x=i.x,n.y=i.y,e.children(r).length&&(n.width=i.width,n.height=i.height))}),Ce(t.edges(),function(r){var n=t.edge(r),i=e.edge(r);n.points=i.points,Object.prototype.hasOwnProperty.call(i,"x")&&(n.x=i.x,n.y=i.y)}),t.graph().width=e.graph().width,t.graph().height=e.graph().height}function $Oe(t){var e=new Mr({multigraph:!0,compound:!0}),r=ED(t.graph());return e.setGraph(Ih({},IOe,kD(r,MOe),Od(r,OOe))),Ce(t.nodes(),function(n){var i=ED(t.node(n));e.setNode(n,qh(kD(i,POe),BOe)),e.setParent(n,t.parent(n))}),Ce(t.edges(),function(n){var i=ED(t.edge(n));e.setEdge(n,Ih({},zOe,kD(i,FOe),Od(i,GOe)))}),e}function VOe(t){var e=t.graph();e.ranksep/=2,Ce(t.edges(),function(r){var n=t.edge(r);n.minlen*=2,n.labelpos.toLowerCase()!=="c"&&(e.rankdir==="TB"||e.rankdir==="BT"?n.width+=n.labeloffset:n.height+=n.labeloffset)})}function UOe(t){Ce(t.edges(),function(e){var r=t.edge(e);if(r.width&&r.height){var n=t.node(e.v),i=t.node(e.w),a={rank:(i.rank-n.rank)/2+n.rank,e};Ec(t,"edge-proxy",a,"_ep")}})}function HOe(t){var e=0;Ce(t.nodes(),function(r){var n=t.node(r);n.borderTop&&(n.minRank=t.node(n.borderTop).rank,n.maxRank=t.node(n.borderBottom).rank,e=Ls(e,n.maxRank))}),t.graph().maxRank=e}function WOe(t){Ce(t.nodes(),function(e){var r=t.node(e);r.dummy==="edge-proxy"&&(t.edge(r.e).labelRank=r.rank,t.removeNode(e))})}function YOe(t){var e=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,a=t.graph(),s=a.marginx||0,l=a.marginy||0;function u(h){var f=h.x,d=h.y,p=h.width,m=h.height;e=Math.min(e,f-p/2),r=Math.max(r,f+p/2),n=Math.min(n,d-m/2),i=Math.max(i,d+m/2)}o(u,"getExtremes"),Ce(t.nodes(),function(h){u(t.node(h))}),Ce(t.edges(),function(h){var f=t.edge(h);Object.prototype.hasOwnProperty.call(f,"x")&&u(f)}),e-=s,n-=l,Ce(t.nodes(),function(h){var f=t.node(h);f.x-=e,f.y-=n}),Ce(t.edges(),function(h){var f=t.edge(h);Ce(f.points,function(d){d.x-=e,d.y-=n}),Object.prototype.hasOwnProperty.call(f,"x")&&(f.x-=e),Object.prototype.hasOwnProperty.call(f,"y")&&(f.y-=n)}),a.width=r-e+s,a.height=i-n+l}function qOe(t){Ce(t.edges(),function(e){var r=t.edge(e),n=t.node(e.v),i=t.node(e.w),a,s;r.points?(a=r.points[0],s=r.points[r.points.length-1]):(r.points=[],a=i,s=n),r.points.unshift(nD(n,a)),r.points.push(nD(i,s))})}function XOe(t){Ce(t.edges(),function(e){var r=t.edge(e);if(Object.prototype.hasOwnProperty.call(r,"x"))switch((r.labelpos==="l"||r.labelpos==="r")&&(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset;break}})}function jOe(t){Ce(t.edges(),function(e){var r=t.edge(e);r.reversed&&r.points.reverse()})}function KOe(t){Ce(t.nodes(),function(e){if(t.children(e).length){var r=t.node(e),n=t.node(r.borderTop),i=t.node(r.borderBottom),a=t.node(fa(r.borderLeft)),s=t.node(fa(r.borderRight));r.width=Math.abs(s.x-a.x),r.height=Math.abs(i.y-n.y),r.x=a.x+r.width/2,r.y=n.y+r.height/2}}),Ce(t.nodes(),function(e){t.node(e).dummy==="border"&&t.removeNode(e)})}function QOe(t){Ce(t.edges(),function(e){if(e.v===e.w){var r=t.node(e.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e,label:t.edge(e)}),t.removeEdge(e)}})}function ZOe(t){var e=Kh(t);Ce(e,function(r){var n=0;Ce(r,function(i,a){var s=t.node(i);s.order=a+n,Ce(s.selfEdges,function(l){Ec(t,"selfedge",{width:l.label.width,height:l.label.height,rank:s.rank,order:a+ ++n,e:l.e,label:l.label},"_se")}),delete s.selfEdges})})}function JOe(t){Ce(t.nodes(),function(e){var r=t.node(e);if(r.dummy==="selfedge"){var n=t.node(r.e.v),i=n.x+n.width/2,a=n.y,s=r.x-i,l=n.height/2;t.setEdge(r.e,r.label),t.removeNode(e),r.label.points=[{x:i+2*s/3,y:a-l},{x:i+5*s/6,y:a-l},{x:i+s,y:a},{x:i+5*s/6,y:a+l},{x:i+2*s/3,y:a+l}],r.label.x=r.x,r.label.y=r.y}})}function kD(t,e){return Md(Od(t,e),Number)}function ED(t){var e={};return Ce(t,function(r,n){e[n.toLowerCase()]=r}),e}var MOe,IOe,OOe,POe,BOe,FOe,zOe,GOe,_ie=M(()=>{"use strict";Ht();Ns();Ene();Lne();rD();lD();wD();eie();bie();Tie();Aie();Sc();o(Du,"layout");o(NOe,"runLayout");o(ROe,"updateInputGraph");MOe=["nodesep","edgesep","ranksep","marginx","marginy"],IOe={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},OOe=["acyclicer","ranker","rankdir","align"],POe=["width","height"],BOe={width:0,height:0},FOe=["minlen","weight","width","height","labeloffset"],zOe={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},GOe=["labelpos"];o($Oe,"buildLayoutGraph");o(VOe,"makeSpaceForEdgeLabels");o(UOe,"injectEdgeLabelProxies");o(HOe,"assignRankMinMax");o(WOe,"removeEdgeLabelProxies");o(YOe,"translateGraph");o(qOe,"assignNodeIntersects");o(XOe,"fixupEdgeLabelCoords");o(jOe,"reversePointsForReversedEdges");o(KOe,"removeBorderNodes");o(QOe,"removeSelfEdges");o(ZOe,"insertSelfEdges");o(JOe,"positionSelfEdges");o(kD,"selectNumberAttrs");o(ED,"canonicalize")});var Pv=M(()=>{"use strict";rD();_ie();lD();wD()});function Ho(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:ePe(t),edges:tPe(t)};return dr(t.graph())||(e.value=rn(t.graph())),e}function ePe(t){return Je(t.nodes(),function(e){var r=t.node(e),n=t.parent(e),i={v:e};return dr(r)||(i.value=r),dr(n)||(i.parent=n),i})}function tPe(t){return Je(t.edges(),function(e){var r=t.edge(e),n={v:e.v,w:e.w};return dr(e.name)||(n.name=e.name),dr(r)||(n.value=r),n})}var SD=M(()=>{"use strict";Ht();rT();o(Ho,"write");o(ePe,"writeNodes");o(tPe,"writeEdges")});var wr,zd,Nie,Rie,lT,rPe,Mie,Iie,nPe,Bm,Die,Oie,Pie,Bie,Fie,zie=M(()=>{"use strict";ht();Ns();SD();wr=new Map,zd=new Map,Nie=new Map,Rie=o(()=>{zd.clear(),Nie.clear(),wr.clear()},"clear"),lT=o((t,e)=>{let r=zd.get(e)||[];return Y.trace("In isDescendant",e," ",t," = ",r.includes(t)),r.includes(t)},"isDescendant"),rPe=o((t,e)=>{let r=zd.get(e)||[];return Y.info("Descendants of ",e," is ",r),Y.info("Edge is ",t),t.v===e||t.w===e?!1:r?r.includes(t.v)||lT(t.v,e)||lT(t.w,e)||r.includes(t.w):(Y.debug("Tilt, ",e,",not in descendants"),!1)},"edgeInCluster"),Mie=o((t,e,r,n)=>{Y.warn("Copying children of ",t,"root",n,"data",e.node(t),n);let i=e.children(t)||[];t!==n&&i.push(t),Y.warn("Copying (nodes) clusterId",t,"nodes",i),i.forEach(a=>{if(e.children(a).length>0)Mie(a,e,r,n);else{let s=e.node(a);Y.info("cp ",a," to ",n," with parent ",t),r.setNode(a,s),n!==e.parent(a)&&(Y.warn("Setting parent",a,e.parent(a)),r.setParent(a,e.parent(a))),t!==n&&a!==t?(Y.debug("Setting parent",a,t),r.setParent(a,t)):(Y.info("In copy ",t,"root",n,"data",e.node(t),n),Y.debug("Not Setting parent for node=",a,"cluster!==rootId",t!==n,"node!==clusterId",a!==t));let l=e.edges(a);Y.debug("Copying Edges",l),l.forEach(u=>{Y.info("Edge",u);let h=e.edge(u.v,u.w,u.name);Y.info("Edge data",h,n);try{rPe(u,n)?(Y.info("Copying as ",u.v,u.w,h,u.name),r.setEdge(u.v,u.w,h,u.name),Y.info("newGraph edges ",r.edges(),r.edge(r.edges()[0]))):Y.info("Skipping copy of edge ",u.v,"-->",u.w," rootId: ",n," clusterId:",t)}catch(f){Y.error(f)}})}Y.debug("Removing node",a),e.removeNode(a)})},"copy"),Iie=o((t,e)=>{let r=e.children(t),n=[...r];for(let i of r)Nie.set(i,t),n=[...n,...Iie(i,e)];return n},"extractDescendants"),nPe=o((t,e,r)=>{let n=t.edges().filter(u=>u.v===e||u.w===e),i=t.edges().filter(u=>u.v===r||u.w===r),a=n.map(u=>({v:u.v===e?r:u.v,w:u.w===e?e:u.w})),s=i.map(u=>({v:u.v,w:u.w}));return a.filter(u=>s.some(h=>u.v===h.v&&u.w===h.w))},"findCommonEdges"),Bm=o((t,e,r)=>{let n=e.children(t);if(Y.trace("Searching children of id ",t,n),n.length<1)return t;let i;for(let a of n){let s=Bm(a,e,r),l=nPe(e,r,s);if(s)if(l.length>0)i=s;else return s}return i},"findNonClusterChild"),Die=o(t=>!wr.has(t)||!wr.get(t).externalConnections?t:wr.has(t)?wr.get(t).id:t,"getAnchorId"),Oie=o((t,e)=>{if(!t||e>10){Y.debug("Opting out, no graph ");return}else Y.debug("Opting in, graph ");t.nodes().forEach(function(r){t.children(r).length>0&&(Y.warn("Cluster identified",r," Replacement id in edges: ",Bm(r,t,r)),zd.set(r,Iie(r,t)),wr.set(r,{id:Bm(r,t,r),clusterData:t.node(r)}))}),t.nodes().forEach(function(r){let n=t.children(r),i=t.edges();n.length>0?(Y.debug("Cluster identified",r,zd),i.forEach(a=>{let s=lT(a.v,r),l=lT(a.w,r);s^l&&(Y.warn("Edge: ",a," leaves cluster ",r),Y.warn("Descendants of XXX ",r,": ",zd.get(r)),wr.get(r).externalConnections=!0)})):Y.debug("Not a cluster ",r,zd)});for(let r of wr.keys()){let n=wr.get(r).id,i=t.parent(n);i!==r&&wr.has(i)&&!wr.get(i).externalConnections&&(wr.get(r).id=i)}t.edges().forEach(function(r){let n=t.edge(r);Y.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(r)),Y.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(t.edge(r)));let i=r.v,a=r.w;if(Y.warn("Fix XXX",wr,"ids:",r.v,r.w,"Translating: ",wr.get(r.v)," --- ",wr.get(r.w)),wr.get(r.v)||wr.get(r.w)){if(Y.warn("Fixing and trying - removing XXX",r.v,r.w,r.name),i=Die(r.v),a=Die(r.w),t.removeEdge(r.v,r.w,r.name),i!==r.v){let s=t.parent(i);wr.get(s).externalConnections=!0,n.fromCluster=r.v}if(a!==r.w){let s=t.parent(a);wr.get(s).externalConnections=!0,n.toCluster=r.w}Y.warn("Fix Replacing with XXX",i,a,r.name),t.setEdge(i,a,n,r.name)}}),Y.warn("Adjusted Graph",Ho(t)),Pie(t,0),Y.trace(wr)},"adjustClustersAndEdges"),Pie=o((t,e)=>{if(Y.warn("extractor - ",e,Ho(t),t.children("D")),e>10){Y.error("Bailing out");return}let r=t.nodes(),n=!1;for(let i of r){let a=t.children(i);n=n||a.length>0}if(!n){Y.debug("Done, no node has children",t.nodes());return}Y.debug("Nodes = ",r,e);for(let i of r)if(Y.debug("Extracting node",i,wr,wr.has(i)&&!wr.get(i).externalConnections,!t.parent(i),t.node(i),t.children("D")," Depth ",e),!wr.has(i))Y.debug("Not a cluster",i,e);else if(!wr.get(i).externalConnections&&t.children(i)&&t.children(i).length>0){Y.warn("Cluster without external connections, without a parent and with children",i,e);let s=t.graph().rankdir==="TB"?"LR":"TB";wr.get(i)?.clusterData?.dir&&(s=wr.get(i).clusterData.dir,Y.warn("Fixing dir",wr.get(i).clusterData.dir,s));let l=new Mr({multigraph:!0,compound:!0}).setGraph({rankdir:s,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});Y.warn("Old graph before copy",Ho(t)),Mie(i,t,l,i),t.setNode(i,{clusterNode:!0,id:i,clusterData:wr.get(i).clusterData,label:wr.get(i).label,graph:l}),Y.warn("New graph after copy node: (",i,")",Ho(l)),Y.debug("Old graph after copy",Ho(t))}else Y.warn("Cluster ** ",i," **not meeting the criteria !externalConnections:",!wr.get(i).externalConnections," no parent: ",!t.parent(i)," children ",t.children(i)&&t.children(i).length>0,t.children("D"),e),Y.debug(wr);r=t.nodes(),Y.warn("New list of nodes",r);for(let i of r){let a=t.node(i);Y.warn(" Now next level",i,a),a?.clusterNode&&Pie(a.graph,e+1)}},"extractor"),Bie=o((t,e)=>{if(e.length===0)return[];let r=Object.assign([],e);return e.forEach(n=>{let i=t.children(n),a=Bie(t,i);r=[...r,...a]}),r},"sorter"),Fie=o(t=>Bie(t,t.children()),"sortNodesByHierarchy")});var $ie={};vr($ie,{render:()=>iPe});var Gie,iPe,Vie=M(()=>{"use strict";Pv();SD();Ns();uL();Ft();zie();sw();K5();cL();ht();Cv();Vt();Gie=o(async(t,e,r,n,i,a)=>{Y.warn("Graph in recursive render:XAX",Ho(e),i);let s=e.graph().rankdir;Y.trace("Dir in recursive render - dir:",s);let l=t.insert("g").attr("class","root");e.nodes()?Y.info("Recursive render XXX",e.nodes()):Y.info("No nodes found for",e),e.edges().length>0&&Y.info("Recursive edges",e.edge(e.edges()[0]));let u=l.insert("g").attr("class","clusters"),h=l.insert("g").attr("class","edgePaths"),f=l.insert("g").attr("class","edgeLabels"),d=l.insert("g").attr("class","nodes");await Promise.all(e.nodes().map(async function(y){let v=e.node(y);if(i!==void 0){let x=JSON.parse(JSON.stringify(i.clusterData));Y.trace(`Setting data for parent cluster XXX + node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);let n=t.x,i=t.y,a=Math.abs(n-r.x),s=t.width/2,l=r.xMath.abs(n-e.x)*u){let d=r.y{Y.warn("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(a=>{if(Y.info("abc88 checking point",a,e),!s_e(e,a)&&!i){let s=o_e(e,n,a);Y.debug("abc88 inside",a,n,s),Y.debug("abc88 intersection",s,e);let l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)?Y.warn("abc88 no intersect",s,r):r.push(s),i=!0}else Y.warn("abc88 outside",a,n),n=a,i||r.push(a)}),Y.debug("returning points",r),r},"cutPathAtIntersect");o(l_e,"extractCornerPoints");$Z=o(function(t,e,r){let n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),s=r/a;return{x:e.x-s*n,y:e.y-s*i}},"findAdjacentPoint"),c_e=o(function(t){let{cornerPointPositions:e}=l_e(t),r=[];for(let n=0;n10&&Math.abs(a.y-i.y)>=10){Y.debug("Corner point fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));let m=5;s.x===l.x?p={x:h<0?l.x-m+d:l.x+m-d,y:f<0?l.y-d:l.y+d}:p={x:h<0?l.x-d:l.x+d,y:f<0?l.y-m+d:l.y+m-d}}else Y.debug("Corner point skipping fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));r.push(p,u)}else r.push(t[n]);return r},"fixCorners"),$w=o(function(t,e,r,n,i,a,s){let{handDrawnSeed:l}=me(),u=e.points,h=!1,f=i;var d=a;let p=[];for(let _ in e.cssCompiledStyles)SD(_)||p.push(e.cssCompiledStyles[_]);d.intersect&&f.intersect&&(u=u.slice(1,e.points.length-1),u.unshift(f.intersect(u[0])),Y.debug("Last point APA12",e.start,"-->",e.end,u[u.length-1],d,d.intersect(u[u.length-1])),u.push(d.intersect(u[u.length-1]))),e.toCluster&&(Y.info("to cluster abc88",r.get(e.toCluster)),u=GZ(e.points,r.get(e.toCluster).node),h=!0),e.fromCluster&&(Y.debug("from cluster abc88",r.get(e.fromCluster),JSON.stringify(u,null,2)),u=GZ(u.reverse(),r.get(e.fromCluster).node).reverse(),h=!0);let m=u.filter(_=>!Number.isNaN(_.y));m=c_e(m);let g=So;switch(g=xu,e.curve){case"linear":g=xu;break;case"basis":g=So;break;case"cardinal":g=Av;break;default:g=So}let{x:y,y:v}=Pw(e),x=vl().x(y).y(v).curve(g),b;switch(e.thickness){case"normal":b="edge-thickness-normal";break;case"thick":b="edge-thickness-thick";break;case"invisible":b="edge-thickness-invisible";break;default:b="edge-thickness-normal"}switch(e.pattern){case"solid":b+=" edge-pattern-solid";break;case"dotted":b+=" edge-pattern-dotted";break;case"dashed":b+=" edge-pattern-dashed";break;default:b+=" edge-pattern-solid"}let w,C=x(m),T=Array.isArray(e.style)?e.style:[e.style],E=T.find(_=>_?.startsWith("stroke:"));if(e.look==="handDrawn"){let _=Xe.svg(t);Object.assign([],m);let I=_.path(C,{roughness:.3,seed:l});b+=" transition",w=$e(I).select("path").attr("id",e.id).attr("class"," "+b+(e.classes?" "+e.classes:"")).attr("style",T?T.reduce((k,L)=>k+";"+L,""):"");let D=w.attr("d");w.attr("d",D),t.node().appendChild(w.node())}else{let _=p.join(";"),I=T?T.reduce((L,R)=>L+R+";",""):"",D="";e.animate&&(D=" edge-animation-fast"),e.animation&&(D=" edge-animation-"+e.animation);let k=_?_+";"+I+";":I;w=t.append("path").attr("d",C).attr("id",e.id).attr("class"," "+b+(e.classes?" "+e.classes:"")+(D??"")).attr("style",k),E=k.match(/stroke:([^;]+)/)?.[1]}let A="";(me().flowchart.arrowMarkerAbsolute||me().state.arrowMarkerAbsolute)&&(A=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,A=A.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),Y.info("arrowTypeStart",e.arrowTypeStart),Y.info("arrowTypeEnd",e.arrowTypeEnd),FZ(w,e,A,s,n,E);let S={};return h&&(S.updatedPath=u),S.originalPath=e.points,S},"insertEdge")});var u_e,h_e,f_e,d_e,p_e,m_e,g_e,y_e,v_e,x_e,b_e,w_e,T_e,k_e,E_e,S_e,C_e,Vw,XD=M(()=>{"use strict";vt();u_e=o((t,e,r,n)=>{e.forEach(i=>{C_e[i](t,r,n)})},"insertMarkers"),h_e=o((t,e,r)=>{Y.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),f_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),d_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),p_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),m_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),g_e=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),y_e=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),v_e=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),x_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),b_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneStart").attr("class","marker onlyOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneEnd").attr("class","marker onlyOne "+e).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),w_e=o((t,e,r)=>{let n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneStart").attr("class","marker zeroOrOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("d","M9,0 L9,18");let i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+e).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),i.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),T_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreStart").attr("class","marker oneOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreEnd").attr("class","marker oneOrMore "+e).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),k_e=o((t,e,r)=>{let n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");let i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+e).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),i.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),E_e=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d",`M0,0 + L20,10 + M20,10 + L0,20`)},"requirement_arrow"),S_e=o((t,e,r)=>{let n=t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_containsEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");n.append("circle").attr("cx",10).attr("cy",10).attr("r",10).attr("fill","none"),n.append("line").attr("x1",0).attr("x2",20).attr("y1",10).attr("y2",10),n.append("line").attr("y1",0).attr("y2",20).attr("x1",10).attr("x2",10)},"requirement_contains"),C_e={extension:h_e,composition:f_e,aggregation:d_e,dependency:p_e,lollipop:m_e,point:g_e,circle:y_e,cross:v_e,barb:x_e,only_one:b_e,zero_or_one:w_e,one_or_more:T_e,zero_or_more:k_e,requirement_arrow:E_e,requirement_contains:S_e},Vw=u_e});async function dm(t,e,r){let n,i;e.shape==="rect"&&(e.rx&&e.ry?e.shape="roundedRect":e.shape="squareRect");let a=e.shape?HD[e.shape]:void 0;if(!a)throw new Error(`No such shape: ${e.shape}. Please check your syntax.`);if(e.link){let s;r.config.securityLevel==="sandbox"?s="_top":e.linkTarget&&(s=e.linkTarget||"_blank"),n=t.insert("svg:a").attr("xlink:href",e.link).attr("target",s??null),i=await a(n,e,r)}else i=await a(t,e,r),n=i;return e.tooltip&&i.attr("title",e.tooltip),Uw.set(e.id,n),e.haveCallback&&n.attr("class",n.attr("class")+" clickable"),n}var Uw,UZ,HZ,c2,Hw=M(()=>{"use strict";vt();WD();Uw=new Map;o(dm,"insertNode");UZ=o((t,e)=>{Uw.set(e.id,t)},"setNodeElem"),HZ=o(()=>{Uw.clear()},"clear"),c2=o(t=>{let e=Uw.get(t.id);Y.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");let r=8,n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-r)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},"positionNode")});var WZ,qZ=M(()=>{"use strict";ka();gr();vt();Iw();YD();XD();Hw();Ft();sr();WZ={common:Ze,getConfig:mr,insertCluster:fm,insertEdge:$w,insertEdgeLabel:zw,insertMarkers:Vw,insertNode:dm,interpolateToCurve:F9,labelHelper:pt,log:Y,positionEdgeLabel:Gw}});function __e(t){return typeof t=="symbol"||ri(t)&&ua(t)==A_e}var A_e,Zs,Md=M(()=>{"use strict";wu();_o();A_e="[object Symbol]";o(__e,"isSymbol");Zs=__e});function D_e(t,e){for(var r=-1,n=t==null?0:t.length,i=Array(n);++r{"use strict";o(D_e,"arrayMap");Ds=D_e});function jZ(t){if(typeof t=="string")return t;if(Ot(t))return Ds(t,jZ)+"";if(Zs(t))return XZ?XZ.call(t):"";var e=t+"";return e=="0"&&1/t==-L_e?"-0":e}var L_e,YZ,XZ,KZ,QZ=M(()=>{"use strict";wd();Id();Un();Md();L_e=1/0,YZ=Zi?Zi.prototype:void 0,XZ=YZ?YZ.toString:void 0;o(jZ,"baseToString");KZ=jZ});function N_e(t){for(var e=t.length;e--&&R_e.test(t.charAt(e)););return e}var R_e,ZZ,JZ=M(()=>{"use strict";R_e=/\s/;o(N_e,"trimmedEndIndex");ZZ=N_e});function I_e(t){return t&&t.slice(0,ZZ(t)+1).replace(M_e,"")}var M_e,eJ,tJ=M(()=>{"use strict";JZ();M_e=/^\s+/;o(I_e,"baseTrim");eJ=I_e});function z_e(t){if(typeof t=="number")return t;if(Zs(t))return rJ;if(bn(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=bn(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=eJ(t);var r=P_e.test(t);return r||B_e.test(t)?F_e(t.slice(2),r?2:8):O_e.test(t)?rJ:+t}var rJ,O_e,P_e,B_e,F_e,nJ,iJ=M(()=>{"use strict";tJ();Xs();Md();rJ=NaN,O_e=/^[-+]0x[0-9a-f]+$/i,P_e=/^0b[01]+$/i,B_e=/^0o[0-7]+$/i,F_e=parseInt;o(z_e,"toNumber");nJ=z_e});function $_e(t){if(!t)return t===0?t:0;if(t=nJ(t),t===aJ||t===-aJ){var e=t<0?-1:1;return e*G_e}return t===t?t:0}var aJ,G_e,pm,jD=M(()=>{"use strict";iJ();aJ=1/0,G_e=17976931348623157e292;o($_e,"toFinite");pm=$_e});function V_e(t){var e=pm(t),r=e%1;return e===e?r?e-r:e:0}var yc,mm=M(()=>{"use strict";jD();o(V_e,"toInteger");yc=V_e});var U_e,Ww,sJ=M(()=>{"use strict";Ch();Co();U_e=ws(li,"WeakMap"),Ww=U_e});function H_e(){}var ni,KD=M(()=>{"use strict";o(H_e,"noop");ni=H_e});function W_e(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(W_e,"arrayEach");qw=W_e});function q_e(t,e,r,n){for(var i=t.length,a=r+(n?1:-1);n?a--:++a{"use strict";o(q_e,"baseFindIndex");Yw=q_e});function Y_e(t){return t!==t}var oJ,lJ=M(()=>{"use strict";o(Y_e,"baseIsNaN");oJ=Y_e});function X_e(t,e,r){for(var n=r-1,i=t.length;++n{"use strict";o(X_e,"strictIndexOf");cJ=X_e});function j_e(t,e,r){return e===e?cJ(t,e,r):Yw(t,oJ,r)}var gm,Xw=M(()=>{"use strict";ZD();lJ();uJ();o(j_e,"baseIndexOf");gm=j_e});function K_e(t,e){var r=t==null?0:t.length;return!!r&&gm(t,e,0)>-1}var jw,JD=M(()=>{"use strict";Xw();o(K_e,"arrayIncludes");jw=K_e});var Q_e,hJ,fJ=M(()=>{"use strict";S9();Q_e=Y5(Object.keys,Object),hJ=Q_e});function e9e(t){if(!cc(t))return hJ(t);var e=[];for(var r in Object(t))J_e.call(t,r)&&r!="constructor"&&e.push(r);return e}var Z_e,J_e,ym,Kw=M(()=>{"use strict";Y0();fJ();Z_e=Object.prototype,J_e=Z_e.hasOwnProperty;o(e9e,"baseKeys");ym=e9e});function t9e(t){return ci(t)?Z5(t):ym(t)}var zr,vc=M(()=>{"use strict";L9();Kw();Do();o(t9e,"keys");zr=t9e});var r9e,n9e,i9e,fa,dJ=M(()=>{"use strict";Q0();Cd();I9();Do();Y0();vc();r9e=Object.prototype,n9e=r9e.hasOwnProperty,i9e=tw(function(t,e){if(cc(e)||ci(e)){No(e,zr(e),t);return}for(var r in e)n9e.call(e,r)&&uc(t,r,e[r])}),fa=i9e});function o9e(t,e){if(Ot(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||Zs(t)?!0:s9e.test(t)||!a9e.test(t)||e!=null&&t in Object(e)}var a9e,s9e,vm,Qw=M(()=>{"use strict";Un();Md();a9e=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,s9e=/^\w*$/;o(o9e,"isKey");vm=o9e});function c9e(t){var e=z0(t,function(n){return r.size===l9e&&r.clear(),n}),r=e.cache;return e}var l9e,pJ,mJ=M(()=>{"use strict";v9();l9e=500;o(c9e,"memoizeCapped");pJ=c9e});var u9e,h9e,f9e,gJ,yJ=M(()=>{"use strict";mJ();u9e=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,h9e=/\\(\\)?/g,f9e=pJ(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(u9e,function(r,n,i,a){e.push(i?a.replace(h9e,"$1"):n||r)}),e}),gJ=f9e});function d9e(t){return t==null?"":KZ(t)}var Zw,eL=M(()=>{"use strict";QZ();o(d9e,"toString");Zw=d9e});function p9e(t,e){return Ot(t)?t:vm(t,e)?[t]:gJ(Zw(t))}var Uh,u2=M(()=>{"use strict";Un();Qw();yJ();eL();o(p9e,"castPath");Uh=p9e});function g9e(t){if(typeof t=="string"||Zs(t))return t;var e=t+"";return e=="0"&&1/t==-m9e?"-0":e}var m9e,xc,xm=M(()=>{"use strict";Md();m9e=1/0;o(g9e,"toKey");xc=g9e});function y9e(t,e){e=Uh(e,t);for(var r=0,n=e.length;t!=null&&r{"use strict";u2();xm();o(y9e,"baseGet");Hh=y9e});function v9e(t,e,r){var n=t==null?void 0:Hh(t,e);return n===void 0?r:n}var vJ,xJ=M(()=>{"use strict";h2();o(v9e,"get");vJ=v9e});function x9e(t,e){for(var r=-1,n=e.length,i=t.length;++r{"use strict";o(x9e,"arrayPush");bm=x9e});function b9e(t){return Ot(t)||wl(t)||!!(bJ&&t&&t[bJ])}var bJ,wJ,TJ=M(()=>{"use strict";wd();X0();Un();bJ=Zi?Zi.isConcatSpreadable:void 0;o(b9e,"isFlattenable");wJ=b9e});function kJ(t,e,r,n,i){var a=-1,s=t.length;for(r||(r=wJ),i||(i=[]);++a0&&r(l)?e>1?kJ(l,e-1,r,n,i):bm(i,l):n||(i[i.length]=l)}return i}var bc,wm=M(()=>{"use strict";Jw();TJ();o(kJ,"baseFlatten");bc=kJ});function w9e(t){var e=t==null?0:t.length;return e?bc(t,1):[]}var Wr,eT=M(()=>{"use strict";wm();o(w9e,"flatten");Wr=w9e});function T9e(t){return ew(J5(t,void 0,Wr),t+"")}var EJ,SJ=M(()=>{"use strict";eT();R9();M9();o(T9e,"flatRest");EJ=T9e});function k9e(t,e,r){var n=-1,i=t.length;e<0&&(e=-e>i?0:i+e),r=r>i?i:r,r<0&&(r+=i),i=e>r?0:r-e>>>0,e>>>=0;for(var a=Array(i);++n{"use strict";o(k9e,"baseSlice");tT=k9e});function N9e(t){return R9e.test(t)}var E9e,S9e,C9e,A9e,_9e,D9e,L9e,R9e,CJ,AJ=M(()=>{"use strict";E9e="\\ud800-\\udfff",S9e="\\u0300-\\u036f",C9e="\\ufe20-\\ufe2f",A9e="\\u20d0-\\u20ff",_9e=S9e+C9e+A9e,D9e="\\ufe0e\\ufe0f",L9e="\\u200d",R9e=RegExp("["+L9e+E9e+_9e+D9e+"]");o(N9e,"hasUnicode");CJ=N9e});function M9e(t,e,r,n){var i=-1,a=t==null?0:t.length;for(n&&a&&(r=t[++i]);++i{"use strict";o(M9e,"arrayReduce");_J=M9e});function I9e(t,e){return t&&No(e,zr(e),t)}var LJ,RJ=M(()=>{"use strict";Cd();vc();o(I9e,"baseAssign");LJ=I9e});function O9e(t,e){return t&&No(e,Ts(e),t)}var NJ,MJ=M(()=>{"use strict";Cd();Mh();o(O9e,"baseAssignIn");NJ=O9e});function P9e(t,e){for(var r=-1,n=t==null?0:t.length,i=0,a=[];++r{"use strict";o(P9e,"arrayFilter");Tm=P9e});function B9e(){return[]}var nT,rL=M(()=>{"use strict";o(B9e,"stubArray");nT=B9e});var F9e,z9e,IJ,G9e,km,iT=M(()=>{"use strict";rT();rL();F9e=Object.prototype,z9e=F9e.propertyIsEnumerable,IJ=Object.getOwnPropertySymbols,G9e=IJ?function(t){return t==null?[]:(t=Object(t),Tm(IJ(t),function(e){return z9e.call(t,e)}))}:nT,km=G9e});function $9e(t,e){return No(t,km(t),e)}var OJ,PJ=M(()=>{"use strict";Cd();iT();o($9e,"copySymbols");OJ=$9e});var V9e,U9e,aT,nL=M(()=>{"use strict";Jw();X5();iT();rL();V9e=Object.getOwnPropertySymbols,U9e=V9e?function(t){for(var e=[];t;)bm(e,km(t)),t=q0(t);return e}:nT,aT=U9e});function H9e(t,e){return No(t,aT(t),e)}var BJ,FJ=M(()=>{"use strict";Cd();nL();o(H9e,"copySymbolsIn");BJ=H9e});function W9e(t,e,r){var n=e(t);return Ot(t)?n:bm(n,r(t))}var sT,iL=M(()=>{"use strict";Jw();Un();o(W9e,"baseGetAllKeys");sT=W9e});function q9e(t){return sT(t,zr,km)}var f2,aL=M(()=>{"use strict";iL();iT();vc();o(q9e,"getAllKeys");f2=q9e});function Y9e(t){return sT(t,Ts,aT)}var oT,sL=M(()=>{"use strict";iL();nL();Mh();o(Y9e,"getAllKeysIn");oT=Y9e});var X9e,lT,zJ=M(()=>{"use strict";Ch();Co();X9e=ws(li,"DataView"),lT=X9e});var j9e,cT,GJ=M(()=>{"use strict";Ch();Co();j9e=ws(li,"Promise"),cT=j9e});var K9e,Wh,oL=M(()=>{"use strict";Ch();Co();K9e=ws(li,"Set"),Wh=K9e});var $J,Q9e,VJ,UJ,HJ,WJ,Z9e,J9e,eDe,tDe,rDe,Od,Js,Pd=M(()=>{"use strict";zJ();G5();GJ();oL();sJ();wu();m9();$J="[object Map]",Q9e="[object Object]",VJ="[object Promise]",UJ="[object Set]",HJ="[object WeakMap]",WJ="[object DataView]",Z9e=Tu(lT),J9e=Tu(Dh),eDe=Tu(cT),tDe=Tu(Wh),rDe=Tu(Ww),Od=ua;(lT&&Od(new lT(new ArrayBuffer(1)))!=WJ||Dh&&Od(new Dh)!=$J||cT&&Od(cT.resolve())!=VJ||Wh&&Od(new Wh)!=UJ||Ww&&Od(new Ww)!=HJ)&&(Od=o(function(t){var e=ua(t),r=e==Q9e?t.constructor:void 0,n=r?Tu(r):"";if(n)switch(n){case Z9e:return WJ;case J9e:return $J;case eDe:return VJ;case tDe:return UJ;case rDe:return HJ}return e},"getTag"));Js=Od});function aDe(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&iDe.call(t,"index")&&(r.index=t.index,r.input=t.input),r}var nDe,iDe,qJ,YJ=M(()=>{"use strict";nDe=Object.prototype,iDe=nDe.hasOwnProperty;o(aDe,"initCloneArray");qJ=aDe});function sDe(t,e){var r=e?W0(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}var XJ,jJ=M(()=>{"use strict";H5();o(sDe,"cloneDataView");XJ=sDe});function lDe(t){var e=new t.constructor(t.source,oDe.exec(t));return e.lastIndex=t.lastIndex,e}var oDe,KJ,QJ=M(()=>{"use strict";oDe=/\w*$/;o(lDe,"cloneRegExp");KJ=lDe});function cDe(t){return JJ?Object(JJ.call(t)):{}}var ZJ,JJ,eee,tee=M(()=>{"use strict";wd();ZJ=Zi?Zi.prototype:void 0,JJ=ZJ?ZJ.valueOf:void 0;o(cDe,"cloneSymbol");eee=cDe});function DDe(t,e,r){var n=t.constructor;switch(e){case vDe:return W0(t);case uDe:case hDe:return new n(+t);case xDe:return XJ(t,r);case bDe:case wDe:case TDe:case kDe:case EDe:case SDe:case CDe:case ADe:case _De:return W5(t,r);case fDe:return new n;case dDe:case gDe:return new n(t);case pDe:return KJ(t);case mDe:return new n;case yDe:return eee(t)}}var uDe,hDe,fDe,dDe,pDe,mDe,gDe,yDe,vDe,xDe,bDe,wDe,TDe,kDe,EDe,SDe,CDe,ADe,_De,ree,nee=M(()=>{"use strict";H5();jJ();QJ();tee();k9();uDe="[object Boolean]",hDe="[object Date]",fDe="[object Map]",dDe="[object Number]",pDe="[object RegExp]",mDe="[object Set]",gDe="[object String]",yDe="[object Symbol]",vDe="[object ArrayBuffer]",xDe="[object DataView]",bDe="[object Float32Array]",wDe="[object Float64Array]",TDe="[object Int8Array]",kDe="[object Int16Array]",EDe="[object Int32Array]",SDe="[object Uint8Array]",CDe="[object Uint8ClampedArray]",ADe="[object Uint16Array]",_De="[object Uint32Array]";o(DDe,"initCloneByTag");ree=DDe});function RDe(t){return ri(t)&&Js(t)==LDe}var LDe,iee,aee=M(()=>{"use strict";Pd();_o();LDe="[object Map]";o(RDe,"baseIsMap");iee=RDe});var see,NDe,oee,lee=M(()=>{"use strict";aee();Sd();$v();see=Ro&&Ro.isMap,NDe=see?Lo(see):iee,oee=NDe});function IDe(t){return ri(t)&&Js(t)==MDe}var MDe,cee,uee=M(()=>{"use strict";Pd();_o();MDe="[object Set]";o(IDe,"baseIsSet");cee=IDe});var hee,ODe,fee,dee=M(()=>{"use strict";uee();Sd();$v();hee=Ro&&Ro.isSet,ODe=hee?Lo(hee):cee,fee=ODe});function uT(t,e,r,n,i,a){var s,l=e&PDe,u=e&BDe,h=e&FDe;if(r&&(s=i?r(t,n,i,a):r(t)),s!==void 0)return s;if(!bn(t))return t;var f=Ot(t);if(f){if(s=qJ(t),!l)return q5(t,s)}else{var d=Js(t),p=d==mee||d==UDe;if(Tl(t))return U5(t,l);if(d==gee||d==pee||p&&!i){if(s=u||p?{}:j5(t),!l)return u?BJ(t,NJ(s,t)):OJ(t,LJ(s,t))}else{if(!_n[d])return i?t:{};s=ree(t,d,l)}}a||(a=new oc);var m=a.get(t);if(m)return m;a.set(t,s),fee(t)?t.forEach(function(v){s.add(uT(v,e,r,v,t,a))}):oee(t)&&t.forEach(function(v,x){s.set(x,uT(v,e,r,x,t,a))});var g=h?u?oT:f2:u?Ts:zr,y=f?void 0:g(t);return qw(y||t,function(v,x){y&&(x=v,v=t[x]),uc(s,x,uT(v,e,r,x,t,a))}),s}var PDe,BDe,FDe,pee,zDe,GDe,$De,VDe,mee,UDe,HDe,WDe,gee,qDe,YDe,XDe,jDe,KDe,QDe,ZDe,JDe,eLe,tLe,rLe,nLe,iLe,aLe,sLe,oLe,_n,hT,lL=M(()=>{"use strict";Fv();QD();Q0();RJ();MJ();w9();E9();PJ();FJ();aL();sL();Pd();YJ();nee();C9();Un();K0();lee();Xs();dee();vc();Mh();PDe=1,BDe=2,FDe=4,pee="[object Arguments]",zDe="[object Array]",GDe="[object Boolean]",$De="[object Date]",VDe="[object Error]",mee="[object Function]",UDe="[object GeneratorFunction]",HDe="[object Map]",WDe="[object Number]",gee="[object Object]",qDe="[object RegExp]",YDe="[object Set]",XDe="[object String]",jDe="[object Symbol]",KDe="[object WeakMap]",QDe="[object ArrayBuffer]",ZDe="[object DataView]",JDe="[object Float32Array]",eLe="[object Float64Array]",tLe="[object Int8Array]",rLe="[object Int16Array]",nLe="[object Int32Array]",iLe="[object Uint8Array]",aLe="[object Uint8ClampedArray]",sLe="[object Uint16Array]",oLe="[object Uint32Array]",_n={};_n[pee]=_n[zDe]=_n[QDe]=_n[ZDe]=_n[GDe]=_n[$De]=_n[JDe]=_n[eLe]=_n[tLe]=_n[rLe]=_n[nLe]=_n[HDe]=_n[WDe]=_n[gee]=_n[qDe]=_n[YDe]=_n[XDe]=_n[jDe]=_n[iLe]=_n[aLe]=_n[sLe]=_n[oLe]=!0;_n[VDe]=_n[mee]=_n[KDe]=!1;o(uT,"baseClone");hT=uT});function cLe(t){return hT(t,lLe)}var lLe,an,cL=M(()=>{"use strict";lL();lLe=4;o(cLe,"clone");an=cLe});function fLe(t){return hT(t,uLe|hLe)}var uLe,hLe,uL,yee=M(()=>{"use strict";lL();uLe=1,hLe=4;o(fLe,"cloneDeep");uL=fLe});function dLe(t){for(var e=-1,r=t==null?0:t.length,n=0,i=[];++e{"use strict";o(dLe,"compact");wc=dLe});function mLe(t){return this.__data__.set(t,pLe),this}var pLe,xee,bee=M(()=>{"use strict";pLe="__lodash_hash_undefined__";o(mLe,"setCacheAdd");xee=mLe});function gLe(t){return this.__data__.has(t)}var wee,Tee=M(()=>{"use strict";o(gLe,"setCacheHas");wee=gLe});function fT(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new kd;++e{"use strict";$5();bee();Tee();o(fT,"SetCache");fT.prototype.add=fT.prototype.push=xee;fT.prototype.has=wee;Em=fT});function yLe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(yLe,"arraySome");pT=yLe});function vLe(t,e){return t.has(e)}var Sm,mT=M(()=>{"use strict";o(vLe,"cacheHas");Sm=vLe});function wLe(t,e,r,n,i,a){var s=r&xLe,l=t.length,u=e.length;if(l!=u&&!(s&&u>l))return!1;var h=a.get(t),f=a.get(e);if(h&&f)return h==e&&f==t;var d=-1,p=!0,m=r&bLe?new Em:void 0;for(a.set(t,e),a.set(e,t);++d{"use strict";dT();hL();mT();xLe=1,bLe=2;o(wLe,"equalArrays");gT=wLe});function TLe(t){var e=-1,r=Array(t.size);return t.forEach(function(n,i){r[++e]=[i,n]}),r}var kee,Eee=M(()=>{"use strict";o(TLe,"mapToArray");kee=TLe});function kLe(t){var e=-1,r=Array(t.size);return t.forEach(function(n){r[++e]=n}),r}var Cm,yT=M(()=>{"use strict";o(kLe,"setToArray");Cm=kLe});function BLe(t,e,r,n,i,a,s){switch(r){case PLe:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case OLe:return!(t.byteLength!=e.byteLength||!a(new H0(t),new H0(e)));case CLe:case ALe:case LLe:return Ao(+t,+e);case _Le:return t.name==e.name&&t.message==e.message;case RLe:case MLe:return t==e+"";case DLe:var l=kee;case NLe:var u=n&ELe;if(l||(l=Cm),t.size!=e.size&&!u)return!1;var h=s.get(t);if(h)return h==e;n|=SLe,s.set(t,e);var f=gT(l(t),l(e),n,i,a,s);return s.delete(t),f;case ILe:if(dL)return dL.call(t)==dL.call(e)}return!1}var ELe,SLe,CLe,ALe,_Le,DLe,LLe,RLe,NLe,MLe,ILe,OLe,PLe,See,dL,Cee,Aee=M(()=>{"use strict";wd();T9();Td();fL();Eee();yT();ELe=1,SLe=2,CLe="[object Boolean]",ALe="[object Date]",_Le="[object Error]",DLe="[object Map]",LLe="[object Number]",RLe="[object RegExp]",NLe="[object Set]",MLe="[object String]",ILe="[object Symbol]",OLe="[object ArrayBuffer]",PLe="[object DataView]",See=Zi?Zi.prototype:void 0,dL=See?See.valueOf:void 0;o(BLe,"equalByTag");Cee=BLe});function $Le(t,e,r,n,i,a){var s=r&FLe,l=f2(t),u=l.length,h=f2(e),f=h.length;if(u!=f&&!s)return!1;for(var d=u;d--;){var p=l[d];if(!(s?p in e:GLe.call(e,p)))return!1}var m=a.get(t),g=a.get(e);if(m&&g)return m==e&&g==t;var y=!0;a.set(t,e),a.set(e,t);for(var v=s;++d{"use strict";aL();FLe=1,zLe=Object.prototype,GLe=zLe.hasOwnProperty;o($Le,"equalObjects");_ee=$Le});function HLe(t,e,r,n,i,a){var s=Ot(t),l=Ot(e),u=s?Ree:Js(t),h=l?Ree:Js(e);u=u==Lee?vT:u,h=h==Lee?vT:h;var f=u==vT,d=h==vT,p=u==h;if(p&&Tl(t)){if(!Tl(e))return!1;s=!0,f=!1}if(p&&!f)return a||(a=new oc),s||Rh(t)?gT(t,e,r,n,i,a):Cee(t,e,u,r,n,i,a);if(!(r&VLe)){var m=f&&Nee.call(t,"__wrapped__"),g=d&&Nee.call(e,"__wrapped__");if(m||g){var y=m?t.value():t,v=g?e.value():e;return a||(a=new oc),i(y,v,r,n,a)}}return p?(a||(a=new oc),_ee(t,e,r,n,i,a)):!1}var VLe,Lee,Ree,vT,ULe,Nee,Mee,Iee=M(()=>{"use strict";Fv();fL();Aee();Dee();Pd();Un();K0();Vv();VLe=1,Lee="[object Arguments]",Ree="[object Array]",vT="[object Object]",ULe=Object.prototype,Nee=ULe.hasOwnProperty;o(HLe,"baseIsEqualDeep");Mee=HLe});function Oee(t,e,r,n,i){return t===e?!0:t==null||e==null||!ri(t)&&!ri(e)?t!==t&&e!==e:Mee(t,e,r,n,Oee,i)}var xT,pL=M(()=>{"use strict";Iee();_o();o(Oee,"baseIsEqual");xT=Oee});function YLe(t,e,r,n){var i=r.length,a=i,s=!n;if(t==null)return!a;for(t=Object(t);i--;){var l=r[i];if(s&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++i{"use strict";Fv();pL();WLe=1,qLe=2;o(YLe,"baseIsMatch");Pee=YLe});function XLe(t){return t===t&&!bn(t)}var bT,mL=M(()=>{"use strict";Xs();o(XLe,"isStrictComparable");bT=XLe});function jLe(t){for(var e=zr(t),r=e.length;r--;){var n=e[r],i=t[n];e[r]=[n,i,bT(i)]}return e}var Fee,zee=M(()=>{"use strict";mL();vc();o(jLe,"getMatchData");Fee=jLe});function KLe(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}var wT,gL=M(()=>{"use strict";o(KLe,"matchesStrictComparable");wT=KLe});function QLe(t){var e=Fee(t);return e.length==1&&e[0][2]?wT(e[0][0],e[0][1]):function(r){return r===t||Pee(r,t,e)}}var Gee,$ee=M(()=>{"use strict";Bee();zee();gL();o(QLe,"baseMatches");Gee=QLe});function ZLe(t,e){return t!=null&&e in Object(t)}var Vee,Uee=M(()=>{"use strict";o(ZLe,"baseHasIn");Vee=ZLe});function JLe(t,e,r){e=Uh(e,t);for(var n=-1,i=e.length,a=!1;++n{"use strict";u2();X0();Un();Hv();K5();xm();o(JLe,"hasPath");TT=JLe});function eRe(t,e){return t!=null&&TT(t,e,Vee)}var kT,vL=M(()=>{"use strict";Uee();yL();o(eRe,"hasIn");kT=eRe});function nRe(t,e){return vm(t)&&bT(e)?wT(xc(t),e):function(r){var n=vJ(r,t);return n===void 0&&n===e?kT(r,t):xT(e,n,tRe|rRe)}}var tRe,rRe,Hee,Wee=M(()=>{"use strict";pL();xJ();vL();Qw();mL();gL();xm();tRe=1,rRe=2;o(nRe,"baseMatchesProperty");Hee=nRe});function iRe(t){return function(e){return e?.[t]}}var ET,xL=M(()=>{"use strict";o(iRe,"baseProperty");ET=iRe});function aRe(t){return function(e){return Hh(e,t)}}var qee,Yee=M(()=>{"use strict";h2();o(aRe,"basePropertyDeep");qee=aRe});function sRe(t){return vm(t)?ET(xc(t)):qee(t)}var Xee,jee=M(()=>{"use strict";xL();Yee();Qw();xm();o(sRe,"property");Xee=sRe});function oRe(t){return typeof t=="function"?t:t==null?Ji:typeof t=="object"?Ot(t)?Hee(t[0],t[1]):Gee(t):Xee(t)}var pn,es=M(()=>{"use strict";$ee();Wee();Eu();Un();jee();o(oRe,"baseIteratee");pn=oRe});function lRe(t,e,r,n){for(var i=-1,a=t==null?0:t.length;++i{"use strict";o(lRe,"arrayAggregator");Kee=lRe});function cRe(t,e){return t&&U0(t,e,zr)}var Am,ST=M(()=>{"use strict";V5();vc();o(cRe,"baseForOwn");Am=cRe});function uRe(t,e){return function(r,n){if(r==null)return r;if(!ci(r))return t(r,n);for(var i=r.length,a=e?i:-1,s=Object(r);(e?a--:++a{"use strict";Do();o(uRe,"createBaseEach");Zee=uRe});var hRe,Ls,qh=M(()=>{"use strict";ST();Jee();hRe=Zee(Am),Ls=hRe});function fRe(t,e,r,n){return Ls(t,function(i,a,s){e(n,i,r(i),s)}),n}var ete,tte=M(()=>{"use strict";qh();o(fRe,"baseAggregator");ete=fRe});function dRe(t,e){return function(r,n){var i=Ot(r)?Kee:ete,a=e?e():{};return i(r,t,pn(n,2),a)}}var rte,nte=M(()=>{"use strict";Qee();tte();es();Un();o(dRe,"createAggregator");rte=dRe});var pRe,CT,ite=M(()=>{"use strict";Co();pRe=o(function(){return li.Date.now()},"now"),CT=pRe});var ate,mRe,gRe,Yh,ste=M(()=>{"use strict";Z0();Td();Ad();Mh();ate=Object.prototype,mRe=ate.hasOwnProperty,gRe=hc(function(t,e){t=Object(t);var r=-1,n=e.length,i=n>2?e[2]:void 0;for(i&&js(e[0],e[1],i)&&(n=1);++r{"use strict";o(yRe,"arrayIncludesWith");AT=yRe});function xRe(t,e,r,n){var i=-1,a=jw,s=!0,l=t.length,u=[],h=e.length;if(!l)return u;r&&(e=Ds(e,Lo(r))),n?(a=AT,s=!1):e.length>=vRe&&(a=Sm,s=!1,e=new Em(e));e:for(;++i{"use strict";dT();JD();bL();Id();Sd();mT();vRe=200;o(xRe,"baseDifference");ote=xRe});var bRe,Xh,cte=M(()=>{"use strict";lte();wm();Z0();Q5();bRe=hc(function(t,e){return Ed(t)?ote(t,bc(e,1,Ed,!0)):[]}),Xh=bRe});function wRe(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}var da,ute=M(()=>{"use strict";o(wRe,"last");da=wRe});function TRe(t,e,r){var n=t==null?0:t.length;return n?(e=r||e===void 0?1:yc(e),tT(t,e<0?0:e,n)):[]}var pi,hte=M(()=>{"use strict";tL();mm();o(TRe,"drop");pi=TRe});function kRe(t,e,r){var n=t==null?0:t.length;return n?(e=r||e===void 0?1:yc(e),e=n-e,tT(t,0,e<0?0:e)):[]}var Lu,fte=M(()=>{"use strict";tL();mm();o(kRe,"dropRight");Lu=kRe});function ERe(t){return typeof t=="function"?t:Ji}var _m,_T=M(()=>{"use strict";Eu();o(ERe,"castFunction");_m=ERe});function SRe(t,e){var r=Ot(t)?qw:Ls;return r(t,_m(e))}var Ae,DT=M(()=>{"use strict";QD();qh();_T();Un();o(SRe,"forEach");Ae=SRe});var dte=M(()=>{"use strict";DT()});function CRe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(CRe,"arrayEvery");pte=CRe});function ARe(t,e){var r=!0;return Ls(t,function(n,i,a){return r=!!e(n,i,a),r}),r}var gte,yte=M(()=>{"use strict";qh();o(ARe,"baseEvery");gte=ARe});function _Re(t,e,r){var n=Ot(t)?pte:gte;return r&&js(t,e,r)&&(e=void 0),n(t,pn(e,3))}var Ra,vte=M(()=>{"use strict";mte();yte();es();Un();Ad();o(_Re,"every");Ra=_Re});function DRe(t,e){var r=[];return Ls(t,function(n,i,a){e(n,i,a)&&r.push(n)}),r}var LT,wL=M(()=>{"use strict";qh();o(DRe,"baseFilter");LT=DRe});function LRe(t,e){var r=Ot(t)?Tm:LT;return r(t,pn(e,3))}var qr,TL=M(()=>{"use strict";rT();wL();es();Un();o(LRe,"filter");qr=LRe});function RRe(t){return function(e,r,n){var i=Object(e);if(!ci(e)){var a=pn(r,3);e=zr(e),r=o(function(l){return a(i[l],l,i)},"predicate")}var s=t(e,r,n);return s>-1?i[a?e[s]:s]:void 0}}var xte,bte=M(()=>{"use strict";es();Do();vc();o(RRe,"createFind");xte=RRe});function MRe(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:yc(r);return i<0&&(i=NRe(n+i,0)),Yw(t,pn(e,3),i)}var NRe,wte,Tte=M(()=>{"use strict";ZD();es();mm();NRe=Math.max;o(MRe,"findIndex");wte=MRe});var IRe,ts,kte=M(()=>{"use strict";bte();Tte();IRe=xte(wte),ts=IRe});function ORe(t){return t&&t.length?t[0]:void 0}var ra,Ete=M(()=>{"use strict";o(ORe,"head");ra=ORe});var Ste=M(()=>{"use strict";Ete()});function PRe(t,e){var r=-1,n=ci(t)?Array(t.length):[];return Ls(t,function(i,a,s){n[++r]=e(i,a,s)}),n}var RT,kL=M(()=>{"use strict";qh();Do();o(PRe,"baseMap");RT=PRe});function BRe(t,e){var r=Ot(t)?Ds:RT;return r(t,pn(e,3))}var Je,Dm=M(()=>{"use strict";Id();es();kL();Un();o(BRe,"map");Je=BRe});function FRe(t,e){return bc(Je(t,e),1)}var pa,EL=M(()=>{"use strict";wm();Dm();o(FRe,"flatMap");pa=FRe});function zRe(t,e){return t==null?t:U0(t,_m(e),Ts)}var SL,Cte=M(()=>{"use strict";V5();_T();Mh();o(zRe,"forIn");SL=zRe});function GRe(t,e){return t&&Am(t,_m(e))}var CL,Ate=M(()=>{"use strict";ST();_T();o(GRe,"forOwn");CL=GRe});var $Re,VRe,URe,AL,_te=M(()=>{"use strict";V0();nte();$Re=Object.prototype,VRe=$Re.hasOwnProperty,URe=rte(function(t,e,r){VRe.call(t,r)?t[r].push(e):lc(t,r,[e])}),AL=URe});function HRe(t,e){return t>e}var Dte,Lte=M(()=>{"use strict";o(HRe,"baseGt");Dte=HRe});function YRe(t,e){return t!=null&&qRe.call(t,e)}var WRe,qRe,Rte,Nte=M(()=>{"use strict";WRe=Object.prototype,qRe=WRe.hasOwnProperty;o(YRe,"baseHas");Rte=YRe});function XRe(t,e){return t!=null&&TT(t,e,Rte)}var Pt,Mte=M(()=>{"use strict";Nte();yL();o(XRe,"has");Pt=XRe});function KRe(t){return typeof t=="string"||!Ot(t)&&ri(t)&&ua(t)==jRe}var jRe,mi,NT=M(()=>{"use strict";wu();Un();_o();jRe="[object String]";o(KRe,"isString");mi=KRe});function QRe(t,e){return Ds(e,function(r){return t[r]})}var Ite,Ote=M(()=>{"use strict";Id();o(QRe,"baseValues");Ite=QRe});function ZRe(t){return t==null?[]:Ite(t,zr(t))}var br,_L=M(()=>{"use strict";Ote();vc();o(ZRe,"values");br=ZRe});function eNe(t,e,r,n){t=ci(t)?t:br(t),r=r&&!n?yc(r):0;var i=t.length;return r<0&&(r=JRe(i+r,0)),mi(t)?r<=i&&t.indexOf(e,r)>-1:!!i&&gm(t,e,r)>-1}var JRe,qn,Pte=M(()=>{"use strict";Xw();Do();NT();mm();_L();JRe=Math.max;o(eNe,"includes");qn=eNe});function rNe(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:yc(r);return i<0&&(i=tNe(n+i,0)),gm(t,e,i)}var tNe,MT,Bte=M(()=>{"use strict";Xw();mm();tNe=Math.max;o(rNe,"indexOf");MT=rNe});function oNe(t){if(t==null)return!0;if(ci(t)&&(Ot(t)||typeof t=="string"||typeof t.splice=="function"||Tl(t)||Rh(t)||wl(t)))return!t.length;var e=Js(t);if(e==nNe||e==iNe)return!t.size;if(cc(t))return!ym(t).length;for(var r in t)if(sNe.call(t,r))return!1;return!0}var nNe,iNe,aNe,sNe,lr,IT=M(()=>{"use strict";Kw();Pd();X0();Un();Do();K0();Y0();Vv();nNe="[object Map]",iNe="[object Set]",aNe=Object.prototype,sNe=aNe.hasOwnProperty;o(oNe,"isEmpty");lr=oNe});function cNe(t){return ri(t)&&ua(t)==lNe}var lNe,Fte,zte=M(()=>{"use strict";wu();_o();lNe="[object RegExp]";o(cNe,"baseIsRegExp");Fte=cNe});var Gte,uNe,Po,$te=M(()=>{"use strict";zte();Sd();$v();Gte=Ro&&Ro.isRegExp,uNe=Gte?Lo(Gte):Fte,Po=uNe});function hNe(t){return t===void 0}var fr,Vte=M(()=>{"use strict";o(hNe,"isUndefined");fr=hNe});function fNe(t,e){return t{"use strict";o(fNe,"baseLt");OT=fNe});function dNe(t,e){var r={};return e=pn(e,3),Am(t,function(n,i,a){lc(r,i,e(n,i,a))}),r}var Bd,Ute=M(()=>{"use strict";V0();ST();es();o(dNe,"mapValues");Bd=dNe});function pNe(t,e,r){for(var n=-1,i=t.length;++n{"use strict";Md();o(pNe,"baseExtremum");Lm=pNe});function mNe(t){return t&&t.length?Lm(t,Ji,Dte):void 0}var Rs,Hte=M(()=>{"use strict";PT();Lte();Eu();o(mNe,"max");Rs=mNe});function gNe(t){return t&&t.length?Lm(t,Ji,OT):void 0}var Cl,LL=M(()=>{"use strict";PT();DL();Eu();o(gNe,"min");Cl=gNe});function yNe(t,e){return t&&t.length?Lm(t,pn(e,2),OT):void 0}var Fd,Wte=M(()=>{"use strict";PT();es();DL();o(yNe,"minBy");Fd=yNe});function xNe(t){if(typeof t!="function")throw new TypeError(vNe);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}var vNe,qte,Yte=M(()=>{"use strict";vNe="Expected a function";o(xNe,"negate");qte=xNe});function bNe(t,e,r,n){if(!bn(t))return t;e=Uh(e,t);for(var i=-1,a=e.length,s=a-1,l=t;l!=null&&++i{"use strict";Q0();u2();Hv();Xs();xm();o(bNe,"baseSet");Xte=bNe});function wNe(t,e,r){for(var n=-1,i=e.length,a={};++n{"use strict";h2();jte();u2();o(wNe,"basePickBy");BT=wNe});function TNe(t,e){if(t==null)return{};var r=Ds(oT(t),function(n){return[n]});return e=pn(e),BT(t,r,function(n,i){return e(n,i[0])})}var Ns,Kte=M(()=>{"use strict";Id();es();RL();sL();o(TNe,"pickBy");Ns=TNe});function kNe(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}var Qte,Zte=M(()=>{"use strict";o(kNe,"baseSortBy");Qte=kNe});function ENe(t,e){if(t!==e){var r=t!==void 0,n=t===null,i=t===t,a=Zs(t),s=e!==void 0,l=e===null,u=e===e,h=Zs(e);if(!l&&!h&&!a&&t>e||a&&s&&u&&!l&&!h||n&&s&&u||!r&&u||!i)return 1;if(!n&&!a&&!h&&t{"use strict";Md();o(ENe,"compareAscending");Jte=ENe});function SNe(t,e,r){for(var n=-1,i=t.criteria,a=e.criteria,s=i.length,l=r.length;++n=l)return u;var h=r[n];return u*(h=="desc"?-1:1)}}return t.index-e.index}var tre,rre=M(()=>{"use strict";ere();o(SNe,"compareMultiple");tre=SNe});function CNe(t,e,r){e.length?e=Ds(e,function(a){return Ot(a)?function(s){return Hh(s,a.length===1?a[0]:a)}:a}):e=[Ji];var n=-1;e=Ds(e,Lo(pn));var i=RT(t,function(a,s,l){var u=Ds(e,function(h){return h(a)});return{criteria:u,index:++n,value:a}});return Qte(i,function(a,s){return tre(a,s,r)})}var nre,ire=M(()=>{"use strict";Id();h2();es();kL();Zte();Sd();rre();Eu();Un();o(CNe,"baseOrderBy");nre=CNe});var ANe,are,sre=M(()=>{"use strict";xL();ANe=ET("length"),are=ANe});function zNe(t){for(var e=ore.lastIndex=0;ore.test(t);)++e;return e}var lre,_Ne,DNe,LNe,RNe,NNe,MNe,NL,ML,INe,cre,ure,hre,ONe,fre,dre,PNe,BNe,FNe,ore,pre,mre=M(()=>{"use strict";lre="\\ud800-\\udfff",_Ne="\\u0300-\\u036f",DNe="\\ufe20-\\ufe2f",LNe="\\u20d0-\\u20ff",RNe=_Ne+DNe+LNe,NNe="\\ufe0e\\ufe0f",MNe="["+lre+"]",NL="["+RNe+"]",ML="\\ud83c[\\udffb-\\udfff]",INe="(?:"+NL+"|"+ML+")",cre="[^"+lre+"]",ure="(?:\\ud83c[\\udde6-\\uddff]){2}",hre="[\\ud800-\\udbff][\\udc00-\\udfff]",ONe="\\u200d",fre=INe+"?",dre="["+NNe+"]?",PNe="(?:"+ONe+"(?:"+[cre,ure,hre].join("|")+")"+dre+fre+")*",BNe=dre+fre+PNe,FNe="(?:"+[cre+NL+"?",NL,ure,hre,MNe].join("|")+")",ore=RegExp(ML+"(?="+ML+")|"+FNe+BNe,"g");o(zNe,"unicodeSize");pre=zNe});function GNe(t){return CJ(t)?pre(t):are(t)}var gre,yre=M(()=>{"use strict";sre();AJ();mre();o(GNe,"stringSize");gre=GNe});function $Ne(t,e){return BT(t,e,function(r,n){return kT(t,n)})}var vre,xre=M(()=>{"use strict";RL();vL();o($Ne,"basePick");vre=$Ne});var VNe,zd,bre=M(()=>{"use strict";xre();SJ();VNe=EJ(function(t,e){return t==null?{}:vre(t,e)}),zd=VNe});function WNe(t,e,r,n){for(var i=-1,a=HNe(UNe((e-t)/(r||1)),0),s=Array(a);a--;)s[n?a:++i]=t,t+=r;return s}var UNe,HNe,wre,Tre=M(()=>{"use strict";UNe=Math.ceil,HNe=Math.max;o(WNe,"baseRange");wre=WNe});function qNe(t){return function(e,r,n){return n&&typeof n!="number"&&js(e,r,n)&&(r=n=void 0),e=pm(e),r===void 0?(r=e,e=0):r=pm(r),n=n===void 0?e{"use strict";Tre();Ad();jD();o(qNe,"createRange");kre=qNe});var YNe,Bo,Sre=M(()=>{"use strict";Ere();YNe=kre(),Bo=YNe});function XNe(t,e,r,n,i){return i(t,function(a,s,l){r=n?(n=!1,a):e(r,a,s,l)}),r}var Cre,Are=M(()=>{"use strict";o(XNe,"baseReduce");Cre=XNe});function jNe(t,e,r){var n=Ot(t)?_J:Cre,i=arguments.length<3;return n(t,pn(e,4),r,i,Ls)}var Yr,IL=M(()=>{"use strict";DJ();qh();es();Are();Un();o(jNe,"reduce");Yr=jNe});function KNe(t,e){var r=Ot(t)?Tm:LT;return r(t,qte(pn(e,3)))}var jh,_re=M(()=>{"use strict";rT();wL();es();Un();Yte();o(KNe,"reject");jh=KNe});function JNe(t){if(t==null)return 0;if(ci(t))return mi(t)?gre(t):t.length;var e=Js(t);return e==QNe||e==ZNe?t.size:ym(t).length}var QNe,ZNe,OL,Dre=M(()=>{"use strict";Kw();Pd();Do();NT();yre();QNe="[object Map]",ZNe="[object Set]";o(JNe,"size");OL=JNe});function eMe(t,e){var r;return Ls(t,function(n,i,a){return r=e(n,i,a),!r}),!!r}var Lre,Rre=M(()=>{"use strict";qh();o(eMe,"baseSome");Lre=eMe});function tMe(t,e,r){var n=Ot(t)?pT:Lre;return r&&js(t,e,r)&&(e=void 0),n(t,pn(e,3))}var d2,Nre=M(()=>{"use strict";hL();es();Rre();Un();Ad();o(tMe,"some");d2=tMe});var rMe,Tc,Mre=M(()=>{"use strict";wm();ire();Z0();Ad();rMe=hc(function(t,e){if(t==null)return[];var r=e.length;return r>1&&js(t,e[0],e[1])?e=[]:r>2&&js(e[0],e[1],e[2])&&(e=[e[0]]),nre(t,bc(e,1),[])}),Tc=rMe});var nMe,iMe,Ire,Ore=M(()=>{"use strict";oL();KD();yT();nMe=1/0,iMe=Wh&&1/Cm(new Wh([,-0]))[1]==nMe?function(t){return new Wh(t)}:ni,Ire=iMe});function sMe(t,e,r){var n=-1,i=jw,a=t.length,s=!0,l=[],u=l;if(r)s=!1,i=AT;else if(a>=aMe){var h=e?null:Ire(t);if(h)return Cm(h);s=!1,i=Sm,u=new Em}else u=e?[]:l;e:for(;++n{"use strict";dT();JD();bL();mT();Ore();yT();aMe=200;o(sMe,"baseUniq");Rm=sMe});var oMe,PL,Pre=M(()=>{"use strict";wm();Z0();FT();Q5();oMe=hc(function(t){return Rm(bc(t,1,Ed,!0))}),PL=oMe});function lMe(t){return t&&t.length?Rm(t):[]}var Nm,Bre=M(()=>{"use strict";FT();o(lMe,"uniq");Nm=lMe});function cMe(t,e){return t&&t.length?Rm(t,pn(e,2)):[]}var Fre,zre=M(()=>{"use strict";es();FT();o(cMe,"uniqBy");Fre=cMe});function hMe(t){var e=++uMe;return Zw(t)+e}var uMe,Gd,Gre=M(()=>{"use strict";eL();uMe=0;o(hMe,"uniqueId");Gd=hMe});function fMe(t,e,r){for(var n=-1,i=t.length,a=e.length,s={};++n{"use strict";o(fMe,"baseZipObject");$re=fMe});function dMe(t,e){return $re(t||[],e||[],uc)}var zT,Ure=M(()=>{"use strict";Q0();Vre();o(dMe,"zipObject");zT=dMe});var qt=M(()=>{"use strict";dJ();cL();yee();vee();N9();ste();cte();hte();fte();dte();vte();TL();kte();Ste();EL();eT();DT();Cte();Ate();_te();Mte();Eu();Pte();Bte();Un();IT();Mv();Xs();$te();NT();Vte();vc();ute();Dm();Ute();Hte();O9();LL();Wte();KD();ite();bre();Kte();Sre();IL();_re();Dre();Nre();Mre();Pre();Bre();Gre();_L();Ure();});function Wre(t,e){t[e]?t[e]++:t[e]=1}function qre(t,e){--t[e]||delete t[e]}function p2(t,e,r,n){var i=""+e,a=""+r;if(!t&&i>a){var s=i;i=a,a=s}return i+Hre+a+Hre+(fr(n)?pMe:n)}function mMe(t,e,r,n){var i=""+e,a=""+r;if(!t&&i>a){var s=i;i=a,a=s}var l={v:i,w:a};return n&&(l.name=n),l}function BL(t,e){return p2(t,e.v,e.w,e.name)}var pMe,$d,Hre,sn,GT=M(()=>{"use strict";qt();pMe="\0",$d="\0",Hre="",sn=class{static{o(this,"Graph")}constructor(e={}){this._isDirected=Object.prototype.hasOwnProperty.call(e,"directed")?e.directed:!0,this._isMultigraph=Object.prototype.hasOwnProperty.call(e,"multigraph")?e.multigraph:!1,this._isCompound=Object.prototype.hasOwnProperty.call(e,"compound")?e.compound:!1,this._label=void 0,this._defaultNodeLabelFn=ks(void 0),this._defaultEdgeLabelFn=ks(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[$d]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return Ei(e)||(e=ks(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return zr(this._nodes)}sources(){var e=this;return qr(this.nodes(),function(r){return lr(e._in[r])})}sinks(){var e=this;return qr(this.nodes(),function(r){return lr(e._out[r])})}setNodes(e,r){var n=arguments,i=this;return Ae(e,function(a){n.length>1?i.setNode(a,r):i.setNode(a)}),this}setNode(e,r){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=r),this):(this._nodes[e]=arguments.length>1?r:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=$d,this._children[e]={},this._children[$d][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var r=o(n=>this.removeEdge(this._edgeObjs[n]),"removeEdge");delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],Ae(this.children(e),n=>{this.setParent(n)}),delete this._children[e]),Ae(zr(this._in[e]),r),delete this._in[e],delete this._preds[e],Ae(zr(this._out[e]),r),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,r){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(fr(r))r=$d;else{r+="";for(var n=r;!fr(n);n=this.parent(n))if(n===e)throw new Error("Setting "+r+" as parent of "+e+" would create a cycle");this.setNode(r)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=r,this._children[r][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var r=this._parent[e];if(r!==$d)return r}}children(e){if(fr(e)&&(e=$d),this._isCompound){var r=this._children[e];if(r)return zr(r)}else{if(e===$d)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var r=this._preds[e];if(r)return zr(r)}successors(e){var r=this._sucs[e];if(r)return zr(r)}neighbors(e){var r=this.predecessors(e);if(r)return PL(r,this.successors(e))}isLeaf(e){var r;return this.isDirected()?r=this.successors(e):r=this.neighbors(e),r.length===0}filterNodes(e){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var n=this;Ae(this._nodes,function(s,l){e(l)&&r.setNode(l,s)}),Ae(this._edgeObjs,function(s){r.hasNode(s.v)&&r.hasNode(s.w)&&r.setEdge(s,n.edge(s))});var i={};function a(s){var l=n.parent(s);return l===void 0||r.hasNode(l)?(i[s]=l,l):l in i?i[l]:a(l)}return o(a,"findParent"),this._isCompound&&Ae(r.nodes(),function(s){r.setParent(s,a(s))}),r}setDefaultEdgeLabel(e){return Ei(e)||(e=ks(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return br(this._edgeObjs)}setPath(e,r){var n=this,i=arguments;return Yr(e,function(a,s){return i.length>1?n.setEdge(a,s,r):n.setEdge(a,s),s}),this}setEdge(){var e,r,n,i,a=!1,s=arguments[0];typeof s=="object"&&s!==null&&"v"in s?(e=s.v,r=s.w,n=s.name,arguments.length===2&&(i=arguments[1],a=!0)):(e=s,r=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),e=""+e,r=""+r,fr(n)||(n=""+n);var l=p2(this._isDirected,e,r,n);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,l))return a&&(this._edgeLabels[l]=i),this;if(!fr(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(r),this._edgeLabels[l]=a?i:this._defaultEdgeLabelFn(e,r,n);var u=mMe(this._isDirected,e,r,n);return e=u.v,r=u.w,Object.freeze(u),this._edgeObjs[l]=u,Wre(this._preds[r],e),Wre(this._sucs[e],r),this._in[r][l]=u,this._out[e][l]=u,this._edgeCount++,this}edge(e,r,n){var i=arguments.length===1?BL(this._isDirected,arguments[0]):p2(this._isDirected,e,r,n);return this._edgeLabels[i]}hasEdge(e,r,n){var i=arguments.length===1?BL(this._isDirected,arguments[0]):p2(this._isDirected,e,r,n);return Object.prototype.hasOwnProperty.call(this._edgeLabels,i)}removeEdge(e,r,n){var i=arguments.length===1?BL(this._isDirected,arguments[0]):p2(this._isDirected,e,r,n),a=this._edgeObjs[i];return a&&(e=a.v,r=a.w,delete this._edgeLabels[i],delete this._edgeObjs[i],qre(this._preds[r],e),qre(this._sucs[e],r),delete this._in[r][i],delete this._out[e][i],this._edgeCount--),this}inEdges(e,r){var n=this._in[e];if(n){var i=br(n);return r?qr(i,function(a){return a.v===r}):i}}outEdges(e,r){var n=this._out[e];if(n){var i=br(n);return r?qr(i,function(a){return a.w===r}):i}}nodeEdges(e,r){var n=this.inEdges(e,r);if(n)return n.concat(this.outEdges(e,r))}};sn.prototype._nodeCount=0;sn.prototype._edgeCount=0;o(Wre,"incrementOrInitEntry");o(qre,"decrementOrRemoveEntry");o(p2,"edgeArgsToId");o(mMe,"edgeArgsToObj");o(BL,"edgeObjToId")});var Fo=M(()=>{"use strict";GT()});function Yre(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function gMe(t,e){if(t!=="_next"&&t!=="_prev")return e}var VT,Xre=M(()=>{"use strict";VT=class{static{o(this,"List")}constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,r=e._prev;if(r!==e)return Yre(r),r}enqueue(e){var r=this._sentinel;e._prev&&e._next&&Yre(e),e._next=r._next,r._next._prev=e,r._next=e,e._prev=r}toString(){for(var e=[],r=this._sentinel,n=r._prev;n!==r;)e.push(JSON.stringify(n,gMe)),n=n._prev;return"["+e.join(", ")+"]"}};o(Yre,"unlink");o(gMe,"filterOutLinks")});function jre(t,e){if(t.nodeCount()<=1)return[];var r=xMe(t,e||yMe),n=vMe(r.graph,r.buckets,r.zeroIdx);return Wr(Je(n,function(i){return t.outEdges(i.v,i.w)}))}function vMe(t,e,r){for(var n=[],i=e[e.length-1],a=e[0],s;t.nodeCount();){for(;s=a.dequeue();)FL(t,e,r,s);for(;s=i.dequeue();)FL(t,e,r,s);if(t.nodeCount()){for(var l=e.length-2;l>0;--l)if(s=e[l].dequeue(),s){n=n.concat(FL(t,e,r,s,!0));break}}}return n}function FL(t,e,r,n,i){var a=i?[]:void 0;return Ae(t.inEdges(n.v),function(s){var l=t.edge(s),u=t.node(s.v);i&&a.push({v:s.v,w:s.w}),u.out-=l,zL(e,r,u)}),Ae(t.outEdges(n.v),function(s){var l=t.edge(s),u=s.w,h=t.node(u);h.in-=l,zL(e,r,h)}),t.removeNode(n.v),a}function xMe(t,e){var r=new sn,n=0,i=0;Ae(t.nodes(),function(l){r.setNode(l,{v:l,in:0,out:0})}),Ae(t.edges(),function(l){var u=r.edge(l.v,l.w)||0,h=e(l),f=u+h;r.setEdge(l.v,l.w,f),i=Math.max(i,r.node(l.v).out+=h),n=Math.max(n,r.node(l.w).in+=h)});var a=Bo(i+n+3).map(function(){return new VT}),s=n+1;return Ae(r.nodes(),function(l){zL(a,s,r.node(l))}),{graph:r,buckets:a,zeroIdx:s}}function zL(t,e,r){r.out?r.in?t[r.out-r.in+e].enqueue(r):t[t.length-1].enqueue(r):t[0].enqueue(r)}var yMe,Kre=M(()=>{"use strict";qt();Fo();Xre();yMe=ks(1);o(jre,"greedyFAS");o(vMe,"doGreedyFAS");o(FL,"removeNode");o(xMe,"buildState");o(zL,"assignBucket")});function Qre(t){var e=t.graph().acyclicer==="greedy"?jre(t,r(t)):bMe(t);Ae(e,function(n){var i=t.edge(n);t.removeEdge(n),i.forwardName=n.name,i.reversed=!0,t.setEdge(n.w,n.v,i,Gd("rev"))});function r(n){return function(i){return n.edge(i).weight}}o(r,"weightFn")}function bMe(t){var e=[],r={},n={};function i(a){Object.prototype.hasOwnProperty.call(n,a)||(n[a]=!0,r[a]=!0,Ae(t.outEdges(a),function(s){Object.prototype.hasOwnProperty.call(r,s.w)?e.push(s):i(s.w)}),delete r[a])}return o(i,"dfs"),Ae(t.nodes(),i),e}function Zre(t){Ae(t.edges(),function(e){var r=t.edge(e);if(r.reversed){t.removeEdge(e);var n=r.forwardName;delete r.reversed,delete r.forwardName,t.setEdge(e.w,e.v,r,n)}})}var GL=M(()=>{"use strict";qt();Kre();o(Qre,"run");o(bMe,"dfsFAS");o(Zre,"undo")});function kc(t,e,r,n){var i;do i=Gd(n);while(t.hasNode(i));return r.dummy=e,t.setNode(i,r),i}function ene(t){var e=new sn().setGraph(t.graph());return Ae(t.nodes(),function(r){e.setNode(r,t.node(r))}),Ae(t.edges(),function(r){var n=e.edge(r.v,r.w)||{weight:0,minlen:1},i=t.edge(r);e.setEdge(r.v,r.w,{weight:n.weight+i.weight,minlen:Math.max(n.minlen,i.minlen)})}),e}function UT(t){var e=new sn({multigraph:t.isMultigraph()}).setGraph(t.graph());return Ae(t.nodes(),function(r){t.children(r).length||e.setNode(r,t.node(r))}),Ae(t.edges(),function(r){e.setEdge(r,t.edge(r))}),e}function $L(t,e){var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2;if(!i&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=l*i/a,h=l):(i<0&&(s=-s),u=s,h=s*a/i),{x:r+u,y:n+h}}function Kh(t){var e=Je(Bo(UL(t)+1),function(){return[]});return Ae(t.nodes(),function(r){var n=t.node(r),i=n.rank;fr(i)||(e[i][n.order]=r)}),e}function tne(t){var e=Cl(Je(t.nodes(),function(r){return t.node(r).rank}));Ae(t.nodes(),function(r){var n=t.node(r);Pt(n,"rank")&&(n.rank-=e)})}function rne(t){var e=Cl(Je(t.nodes(),function(a){return t.node(a).rank})),r=[];Ae(t.nodes(),function(a){var s=t.node(a).rank-e;r[s]||(r[s]=[]),r[s].push(a)});var n=0,i=t.graph().nodeRankFactor;Ae(r,function(a,s){fr(a)&&s%i!==0?--n:n&&Ae(a,function(l){t.node(l).rank+=n})})}function VL(t,e,r,n){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=n),kc(t,"border",i,e)}function UL(t){return Rs(Je(t.nodes(),function(e){var r=t.node(e).rank;if(!fr(r))return r}))}function nne(t,e){var r={lhs:[],rhs:[]};return Ae(t,function(n){e(n)?r.lhs.push(n):r.rhs.push(n)}),r}function ine(t,e){var r=CT();try{return e()}finally{console.log(t+" time: "+(CT()-r)+"ms")}}function ane(t,e){return e()}var Ec=M(()=>{"use strict";qt();Fo();o(kc,"addDummyNode");o(ene,"simplify");o(UT,"asNonCompoundGraph");o($L,"intersectRect");o(Kh,"buildLayerMatrix");o(tne,"normalizeRanks");o(rne,"removeEmptyRanks");o(VL,"addBorderNode");o(UL,"maxRank");o(nne,"partition");o(ine,"time");o(ane,"notime")});function one(t){function e(r){var n=t.children(r),i=t.node(r);if(n.length&&Ae(n,e),Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,s=i.maxRank+1;a{"use strict";qt();Ec();o(one,"addBorderSegments");o(sne,"addBorderNode")});function une(t){var e=t.graph().rankdir.toLowerCase();(e==="lr"||e==="rl")&&fne(t)}function hne(t){var e=t.graph().rankdir.toLowerCase();(e==="bt"||e==="rl")&&wMe(t),(e==="lr"||e==="rl")&&(TMe(t),fne(t))}function fne(t){Ae(t.nodes(),function(e){cne(t.node(e))}),Ae(t.edges(),function(e){cne(t.edge(e))})}function cne(t){var e=t.width;t.width=t.height,t.height=e}function wMe(t){Ae(t.nodes(),function(e){HL(t.node(e))}),Ae(t.edges(),function(e){var r=t.edge(e);Ae(r.points,HL),Object.prototype.hasOwnProperty.call(r,"y")&&HL(r)})}function HL(t){t.y=-t.y}function TMe(t){Ae(t.nodes(),function(e){WL(t.node(e))}),Ae(t.edges(),function(e){var r=t.edge(e);Ae(r.points,WL),Object.prototype.hasOwnProperty.call(r,"x")&&WL(r)})}function WL(t){var e=t.x;t.x=t.y,t.y=e}var dne=M(()=>{"use strict";qt();o(une,"adjust");o(hne,"undo");o(fne,"swapWidthHeight");o(cne,"swapWidthHeightOne");o(wMe,"reverseY");o(HL,"reverseYOne");o(TMe,"swapXY");o(WL,"swapXYOne")});function pne(t){t.graph().dummyChains=[],Ae(t.edges(),function(e){EMe(t,e)})}function EMe(t,e){var r=e.v,n=t.node(r).rank,i=e.w,a=t.node(i).rank,s=e.name,l=t.edge(e),u=l.labelRank;if(a!==n+1){t.removeEdge(e);var h=void 0,f,d;for(d=0,++n;n{"use strict";qt();Ec();o(pne,"run");o(EMe,"normalizeEdge");o(mne,"undo")});function m2(t){var e={};function r(n){var i=t.node(n);if(Object.prototype.hasOwnProperty.call(e,n))return i.rank;e[n]=!0;var a=Cl(Je(t.outEdges(n),function(s){return r(s.w)-t.edge(s).minlen}));return(a===Number.POSITIVE_INFINITY||a===void 0||a===null)&&(a=0),i.rank=a}o(r,"dfs"),Ae(t.sources(),r)}function Vd(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}var HT=M(()=>{"use strict";qt();o(m2,"longestPath");o(Vd,"slack")});function WT(t){var e=new sn({directed:!1}),r=t.nodes()[0],n=t.nodeCount();e.setNode(r,{});for(var i,a;SMe(e,t){"use strict";qt();Fo();HT();o(WT,"feasibleTree");o(SMe,"tightTree");o(CMe,"findMinSlackEdge");o(AMe,"shiftRanks")});var yne=M(()=>{"use strict"});var XL=M(()=>{"use strict"});var cHt,jL=M(()=>{"use strict";qt();XL();cHt=ks(1)});var vne=M(()=>{"use strict";jL()});var KL=M(()=>{"use strict"});var xne=M(()=>{"use strict";KL()});var bHt,bne=M(()=>{"use strict";qt();bHt=ks(1)});function QL(t){var e={},r={},n=[];function i(a){if(Object.prototype.hasOwnProperty.call(r,a))throw new g2;Object.prototype.hasOwnProperty.call(e,a)||(r[a]=!0,e[a]=!0,Ae(t.predecessors(a),i),delete r[a],n.push(a))}if(o(i,"visit"),Ae(t.sinks(),i),OL(e)!==t.nodeCount())throw new g2;return n}function g2(){}var ZL=M(()=>{"use strict";qt();QL.CycleException=g2;o(QL,"topsort");o(g2,"CycleException");g2.prototype=new Error});var wne=M(()=>{"use strict";ZL()});function qT(t,e,r){Ot(e)||(e=[e]);var n=(t.isDirected()?t.successors:t.neighbors).bind(t),i=[],a={};return Ae(e,function(s){if(!t.hasNode(s))throw new Error("Graph does not have node: "+s);Tne(t,s,r==="post",a,n,i)}),i}function Tne(t,e,r,n,i,a){Object.prototype.hasOwnProperty.call(n,e)||(n[e]=!0,r||a.push(e),Ae(i(e),function(s){Tne(t,s,r,n,i,a)}),r&&a.push(e))}var JL=M(()=>{"use strict";qt();o(qT,"dfs");o(Tne,"doDfs")});function eR(t,e){return qT(t,e,"post")}var kne=M(()=>{"use strict";JL();o(eR,"postorder")});function tR(t,e){return qT(t,e,"pre")}var Ene=M(()=>{"use strict";JL();o(tR,"preorder")});var Sne=M(()=>{"use strict";XL();GT()});var Cne=M(()=>{"use strict";yne();jL();vne();xne();bne();wne();kne();Ene();Sne();KL();ZL()});function Zh(t){t=ene(t),m2(t);var e=WT(t);nR(e),rR(e,t);for(var r,n;r=Lne(e);)n=Rne(e,t,r),Nne(e,t,r,n)}function rR(t,e){var r=eR(t,t.nodes());r=r.slice(0,r.length-1),Ae(r,function(n){NMe(t,e,n)})}function NMe(t,e,r){var n=t.node(r),i=n.parent;t.edge(r,i).cutvalue=_ne(t,e,r)}function _ne(t,e,r){var n=t.node(r),i=n.parent,a=!0,s=e.edge(r,i),l=0;return s||(a=!1,s=e.edge(i,r)),l=s.weight,Ae(e.nodeEdges(r),function(u){var h=u.v===r,f=h?u.w:u.v;if(f!==i){var d=h===a,p=e.edge(u).weight;if(l+=d?p:-p,IMe(t,r,f)){var m=t.edge(r,f).cutvalue;l+=d?-m:m}}}),l}function nR(t,e){arguments.length<2&&(e=t.nodes()[0]),Dne(t,{},1,e)}function Dne(t,e,r,n,i){var a=r,s=t.node(n);return e[n]=!0,Ae(t.neighbors(n),function(l){Object.prototype.hasOwnProperty.call(e,l)||(r=Dne(t,e,r,l,n))}),s.low=a,s.lim=r++,i?s.parent=i:delete s.parent,r}function Lne(t){return ts(t.edges(),function(e){return t.edge(e).cutvalue<0})}function Rne(t,e,r){var n=r.v,i=r.w;e.hasEdge(n,i)||(n=r.w,i=r.v);var a=t.node(n),s=t.node(i),l=a,u=!1;a.lim>s.lim&&(l=s,u=!0);var h=qr(e.edges(),function(f){return u===Ane(t,t.node(f.v),l)&&u!==Ane(t,t.node(f.w),l)});return Fd(h,function(f){return Vd(e,f)})}function Nne(t,e,r,n){var i=r.v,a=r.w;t.removeEdge(i,a),t.setEdge(n.v,n.w,{}),nR(t),rR(t,e),MMe(t,e)}function MMe(t,e){var r=ts(t.nodes(),function(i){return!e.node(i).parent}),n=tR(t,r);n=n.slice(1),Ae(n,function(i){var a=t.node(i).parent,s=e.edge(i,a),l=!1;s||(s=e.edge(a,i),l=!0),e.node(i).rank=e.node(a).rank+(l?s.minlen:-s.minlen)})}function IMe(t,e,r){return t.hasEdge(e,r)}function Ane(t,e,r){return r.low<=e.lim&&e.lim<=r.lim}var Mne=M(()=>{"use strict";qt();Cne();Ec();YL();HT();Zh.initLowLimValues=nR;Zh.initCutValues=rR;Zh.calcCutValue=_ne;Zh.leaveEdge=Lne;Zh.enterEdge=Rne;Zh.exchangeEdges=Nne;o(Zh,"networkSimplex");o(rR,"initCutValues");o(NMe,"assignCutValue");o(_ne,"calcCutValue");o(nR,"initLowLimValues");o(Dne,"dfsAssignLowLim");o(Lne,"leaveEdge");o(Rne,"enterEdge");o(Nne,"exchangeEdges");o(MMe,"updateRanks");o(IMe,"isTreeEdge");o(Ane,"isDescendant")});function iR(t){switch(t.graph().ranker){case"network-simplex":Ine(t);break;case"tight-tree":PMe(t);break;case"longest-path":OMe(t);break;default:Ine(t)}}function PMe(t){m2(t),WT(t)}function Ine(t){Zh(t)}var OMe,aR=M(()=>{"use strict";YL();Mne();HT();o(iR,"rank");OMe=m2;o(PMe,"tightTreeRanker");o(Ine,"networkSimplexRanker")});function One(t){var e=kc(t,"root",{},"_root"),r=BMe(t),n=Rs(br(r))-1,i=2*n+1;t.graph().nestingRoot=e,Ae(t.edges(),function(s){t.edge(s).minlen*=i});var a=FMe(t)+1;Ae(t.children(),function(s){Pne(t,e,i,a,n,r,s)}),t.graph().nodeRankFactor=i}function Pne(t,e,r,n,i,a,s){var l=t.children(s);if(!l.length){s!==e&&t.setEdge(e,s,{weight:0,minlen:r});return}var u=VL(t,"_bt"),h=VL(t,"_bb"),f=t.node(s);t.setParent(u,s),f.borderTop=u,t.setParent(h,s),f.borderBottom=h,Ae(l,function(d){Pne(t,e,r,n,i,a,d);var p=t.node(d),m=p.borderTop?p.borderTop:d,g=p.borderBottom?p.borderBottom:d,y=p.borderTop?n:2*n,v=m!==g?1:i-a[s]+1;t.setEdge(u,m,{weight:y,minlen:v,nestingEdge:!0}),t.setEdge(g,h,{weight:y,minlen:v,nestingEdge:!0})}),t.parent(s)||t.setEdge(e,u,{weight:0,minlen:i+a[s]})}function BMe(t){var e={};function r(n,i){var a=t.children(n);a&&a.length&&Ae(a,function(s){r(s,i+1)}),e[n]=i}return o(r,"dfs"),Ae(t.children(),function(n){r(n,1)}),e}function FMe(t){return Yr(t.edges(),function(e,r){return e+t.edge(r).weight},0)}function Bne(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,Ae(t.edges(),function(r){var n=t.edge(r);n.nestingEdge&&t.removeEdge(r)})}var Fne=M(()=>{"use strict";qt();Ec();o(One,"run");o(Pne,"dfs");o(BMe,"treeDepths");o(FMe,"sumWeights");o(Bne,"cleanup")});function zne(t,e,r){var n={},i;Ae(r,function(a){for(var s=t.parent(a),l,u;s;){if(l=t.parent(s),l?(u=n[l],n[l]=s):(u=i,i=s),u&&u!==s){e.setEdge(u,s);return}s=l}})}var Gne=M(()=>{"use strict";qt();o(zne,"addSubgraphConstraints")});function $ne(t,e,r){var n=GMe(t),i=new sn({compound:!0}).setGraph({root:n}).setDefaultNodeLabel(function(a){return t.node(a)});return Ae(t.nodes(),function(a){var s=t.node(a),l=t.parent(a);(s.rank===e||s.minRank<=e&&e<=s.maxRank)&&(i.setNode(a),i.setParent(a,l||n),Ae(t[r](a),function(u){var h=u.v===a?u.w:u.v,f=i.edge(h,a),d=fr(f)?0:f.weight;i.setEdge(h,a,{weight:t.edge(u).weight+d})}),Object.prototype.hasOwnProperty.call(s,"minRank")&&i.setNode(a,{borderLeft:s.borderLeft[e],borderRight:s.borderRight[e]}))}),i}function GMe(t){for(var e;t.hasNode(e=Gd("_root")););return e}var Vne=M(()=>{"use strict";qt();Fo();o($ne,"buildLayerGraph");o(GMe,"createRootNode")});function Une(t,e){for(var r=0,n=1;n0;)f%2&&(d+=l[f+1]),f=f-1>>1,l[f]+=h.weight;u+=h.weight*d})),u}var Hne=M(()=>{"use strict";qt();o(Une,"crossCount");o($Me,"twoLayerCrossCount")});function Wne(t){var e={},r=qr(t.nodes(),function(l){return!t.children(l).length}),n=Rs(Je(r,function(l){return t.node(l).rank})),i=Je(Bo(n+1),function(){return[]});function a(l){if(!Pt(e,l)){e[l]=!0;var u=t.node(l);i[u.rank].push(l),Ae(t.successors(l),a)}}o(a,"dfs");var s=Tc(r,function(l){return t.node(l).rank});return Ae(s,a),i}var qne=M(()=>{"use strict";qt();o(Wne,"initOrder")});function Yne(t,e){return Je(e,function(r){var n=t.inEdges(r);if(n.length){var i=Yr(n,function(a,s){var l=t.edge(s),u=t.node(s.v);return{sum:a.sum+l.weight*u.order,weight:a.weight+l.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}var Xne=M(()=>{"use strict";qt();o(Yne,"barycenter")});function jne(t,e){var r={};Ae(t,function(i,a){var s=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:a};fr(i.barycenter)||(s.barycenter=i.barycenter,s.weight=i.weight)}),Ae(e.edges(),function(i){var a=r[i.v],s=r[i.w];!fr(a)&&!fr(s)&&(s.indegree++,a.out.push(r[i.w]))});var n=qr(r,function(i){return!i.indegree});return VMe(n)}function VMe(t){var e=[];function r(a){return function(s){s.merged||(fr(s.barycenter)||fr(a.barycenter)||s.barycenter>=a.barycenter)&&UMe(a,s)}}o(r,"handleIn");function n(a){return function(s){s.in.push(a),--s.indegree===0&&t.push(s)}}for(o(n,"handleOut");t.length;){var i=t.pop();e.push(i),Ae(i.in.reverse(),r(i)),Ae(i.out,n(i))}return Je(qr(e,function(a){return!a.merged}),function(a){return zd(a,["vs","i","barycenter","weight"])})}function UMe(t,e){var r=0,n=0;t.weight&&(r+=t.barycenter*t.weight,n+=t.weight),e.weight&&(r+=e.barycenter*e.weight,n+=e.weight),t.vs=e.vs.concat(t.vs),t.barycenter=r/n,t.weight=n,t.i=Math.min(e.i,t.i),e.merged=!0}var Kne=M(()=>{"use strict";qt();o(jne,"resolveConflicts");o(VMe,"doResolveConflicts");o(UMe,"mergeEntries")});function Zne(t,e){var r=nne(t,function(f){return Object.prototype.hasOwnProperty.call(f,"barycenter")}),n=r.lhs,i=Tc(r.rhs,function(f){return-f.i}),a=[],s=0,l=0,u=0;n.sort(HMe(!!e)),u=Qne(a,i,u),Ae(n,function(f){u+=f.vs.length,a.push(f.vs),s+=f.barycenter*f.weight,l+=f.weight,u=Qne(a,i,u)});var h={vs:Wr(a)};return l&&(h.barycenter=s/l,h.weight=l),h}function Qne(t,e,r){for(var n;e.length&&(n=da(e)).i<=r;)e.pop(),t.push(n.vs),r++;return r}function HMe(t){return function(e,r){return e.barycenterr.barycenter?1:t?r.i-e.i:e.i-r.i}}var Jne=M(()=>{"use strict";qt();Ec();o(Zne,"sort");o(Qne,"consumeUnsortable");o(HMe,"compareWithBias")});function sR(t,e,r,n){var i=t.children(e),a=t.node(e),s=a?a.borderLeft:void 0,l=a?a.borderRight:void 0,u={};s&&(i=qr(i,function(g){return g!==s&&g!==l}));var h=Yne(t,i);Ae(h,function(g){if(t.children(g.v).length){var y=sR(t,g.v,r,n);u[g.v]=y,Object.prototype.hasOwnProperty.call(y,"barycenter")&&qMe(g,y)}});var f=jne(h,r);WMe(f,u);var d=Zne(f,n);if(s&&(d.vs=Wr([s,d.vs,l]),t.predecessors(s).length)){var p=t.node(t.predecessors(s)[0]),m=t.node(t.predecessors(l)[0]);Object.prototype.hasOwnProperty.call(d,"barycenter")||(d.barycenter=0,d.weight=0),d.barycenter=(d.barycenter*d.weight+p.order+m.order)/(d.weight+2),d.weight+=2}return d}function WMe(t,e){Ae(t,function(r){r.vs=Wr(r.vs.map(function(n){return e[n]?e[n].vs:n}))})}function qMe(t,e){fr(t.barycenter)?(t.barycenter=e.barycenter,t.weight=e.weight):(t.barycenter=(t.barycenter*t.weight+e.barycenter*e.weight)/(t.weight+e.weight),t.weight+=e.weight)}var eie=M(()=>{"use strict";qt();Xne();Kne();Jne();o(sR,"sortSubgraph");o(WMe,"expandSubgraphs");o(qMe,"mergeBarycenters")});function nie(t){var e=UL(t),r=tie(t,Bo(1,e+1),"inEdges"),n=tie(t,Bo(e-1,-1,-1),"outEdges"),i=Wne(t);rie(t,i);for(var a=Number.POSITIVE_INFINITY,s,l=0,u=0;u<4;++l,++u){YMe(l%2?r:n,l%4>=2),i=Kh(t);var h=Une(t,i);h{"use strict";qt();Fo();Ec();Gne();Vne();Hne();qne();eie();o(nie,"order");o(tie,"buildLayerGraphs");o(YMe,"sweepLayerGraphs");o(rie,"assignOrder")});function aie(t){var e=jMe(t);Ae(t.graph().dummyChains,function(r){for(var n=t.node(r),i=n.edgeObj,a=XMe(t,e,i.v,i.w),s=a.path,l=a.lca,u=0,h=s[u],f=!0;r!==i.w;){if(n=t.node(r),f){for(;(h=s[u])!==l&&t.node(h).maxRanks||l>e[u].lim));for(h=u,u=n;(u=t.parent(u))!==h;)a.push(u);return{path:i.concat(a.reverse()),lca:h}}function jMe(t){var e={},r=0;function n(i){var a=r;Ae(t.children(i),n),e[i]={low:a,lim:r++}}return o(n,"dfs"),Ae(t.children(),n),e}var sie=M(()=>{"use strict";qt();o(aie,"parentDummyChains");o(XMe,"findPath");o(jMe,"postorder")});function KMe(t,e){var r={};function n(i,a){var s=0,l=0,u=i.length,h=da(a);return Ae(a,function(f,d){var p=ZMe(t,f),m=p?t.node(p).order:u;(p||f===h)&&(Ae(a.slice(l,d+1),function(g){Ae(t.predecessors(g),function(y){var v=t.node(y),x=v.order;(xh)&&oie(r,p,f)})})}o(n,"scan");function i(a,s){var l=-1,u,h=0;return Ae(s,function(f,d){if(t.node(f).dummy==="border"){var p=t.predecessors(f);p.length&&(u=t.node(p[0]).order,n(s,h,d,l,u),h=d,l=u)}n(s,h,s.length,u,a.length)}),s}return o(i,"visitLayer"),Yr(e,i),r}function ZMe(t,e){if(t.node(e).dummy)return ts(t.predecessors(e),function(r){return t.node(r).dummy})}function oie(t,e,r){if(e>r){var n=e;e=r,r=n}var i=t[e];i||(t[e]=i={}),i[r]=!0}function JMe(t,e,r){if(e>r){var n=e;e=r,r=n}return!!t[e]&&Object.prototype.hasOwnProperty.call(t[e],r)}function eIe(t,e,r,n){var i={},a={},s={};return Ae(e,function(l){Ae(l,function(u,h){i[u]=u,a[u]=u,s[u]=h})}),Ae(e,function(l){var u=-1;Ae(l,function(h){var f=n(h);if(f.length){f=Tc(f,function(y){return s[y]});for(var d=(f.length-1)/2,p=Math.floor(d),m=Math.ceil(d);p<=m;++p){var g=f[p];a[h]===h&&u{"use strict";qt();Fo();Ec();o(KMe,"findType1Conflicts");o(QMe,"findType2Conflicts");o(ZMe,"findOtherInnerSegmentNode");o(oie,"addConflict");o(JMe,"hasConflict");o(eIe,"verticalAlignment");o(tIe,"horizontalCompaction");o(rIe,"buildBlockGraph");o(nIe,"findSmallestWidthAlignment");o(iIe,"alignCoordinates");o(aIe,"balance");o(lie,"positionX");o(sIe,"sep");o(oIe,"width")});function uie(t){t=UT(t),lIe(t),CL(lie(t),function(e,r){t.node(r).x=e})}function lIe(t){var e=Kh(t),r=t.graph().ranksep,n=0;Ae(e,function(i){var a=Rs(Je(i,function(s){return t.node(s).height}));Ae(i,function(s){t.node(s).y=n+a/2}),n+=a+r})}var hie=M(()=>{"use strict";qt();Ec();cie();o(uie,"position");o(lIe,"positionY")});function y2(t,e){var r=e&&e.debugTiming?ine:ane;r("layout",()=>{var n=r(" buildLayoutGraph",()=>xIe(t));r(" runLayout",()=>cIe(n,r)),r(" updateInputGraph",()=>uIe(t,n))})}function cIe(t,e){e(" makeSpaceForEdgeLabels",()=>bIe(t)),e(" removeSelfEdges",()=>DIe(t)),e(" acyclic",()=>Qre(t)),e(" nestingGraph.run",()=>One(t)),e(" rank",()=>iR(UT(t))),e(" injectEdgeLabelProxies",()=>wIe(t)),e(" removeEmptyRanks",()=>rne(t)),e(" nestingGraph.cleanup",()=>Bne(t)),e(" normalizeRanks",()=>tne(t)),e(" assignRankMinMax",()=>TIe(t)),e(" removeEdgeLabelProxies",()=>kIe(t)),e(" normalize.run",()=>pne(t)),e(" parentDummyChains",()=>aie(t)),e(" addBorderSegments",()=>one(t)),e(" order",()=>nie(t)),e(" insertSelfEdges",()=>LIe(t)),e(" adjustCoordinateSystem",()=>une(t)),e(" position",()=>uie(t)),e(" positionSelfEdges",()=>RIe(t)),e(" removeBorderNodes",()=>_Ie(t)),e(" normalize.undo",()=>mne(t)),e(" fixupEdgeLabelCoords",()=>CIe(t)),e(" undoCoordinateSystem",()=>hne(t)),e(" translateGraph",()=>EIe(t)),e(" assignNodeIntersects",()=>SIe(t)),e(" reversePoints",()=>AIe(t)),e(" acyclic.undo",()=>Zre(t))}function uIe(t,e){Ae(t.nodes(),function(r){var n=t.node(r),i=e.node(r);n&&(n.x=i.x,n.y=i.y,e.children(r).length&&(n.width=i.width,n.height=i.height))}),Ae(t.edges(),function(r){var n=t.edge(r),i=e.edge(r);n.points=i.points,Object.prototype.hasOwnProperty.call(i,"x")&&(n.x=i.x,n.y=i.y)}),t.graph().width=e.graph().width,t.graph().height=e.graph().height}function xIe(t){var e=new sn({multigraph:!0,compound:!0}),r=lR(t.graph());return e.setGraph(Ih({},fIe,oR(r,hIe),zd(r,dIe))),Ae(t.nodes(),function(n){var i=lR(t.node(n));e.setNode(n,Yh(oR(i,pIe),mIe)),e.setParent(n,t.parent(n))}),Ae(t.edges(),function(n){var i=lR(t.edge(n));e.setEdge(n,Ih({},yIe,oR(i,gIe),zd(i,vIe)))}),e}function bIe(t){var e=t.graph();e.ranksep/=2,Ae(t.edges(),function(r){var n=t.edge(r);n.minlen*=2,n.labelpos.toLowerCase()!=="c"&&(e.rankdir==="TB"||e.rankdir==="BT"?n.width+=n.labeloffset:n.height+=n.labeloffset)})}function wIe(t){Ae(t.edges(),function(e){var r=t.edge(e);if(r.width&&r.height){var n=t.node(e.v),i=t.node(e.w),a={rank:(i.rank-n.rank)/2+n.rank,e};kc(t,"edge-proxy",a,"_ep")}})}function TIe(t){var e=0;Ae(t.nodes(),function(r){var n=t.node(r);n.borderTop&&(n.minRank=t.node(n.borderTop).rank,n.maxRank=t.node(n.borderBottom).rank,e=Rs(e,n.maxRank))}),t.graph().maxRank=e}function kIe(t){Ae(t.nodes(),function(e){var r=t.node(e);r.dummy==="edge-proxy"&&(t.edge(r.e).labelRank=r.rank,t.removeNode(e))})}function EIe(t){var e=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,a=t.graph(),s=a.marginx||0,l=a.marginy||0;function u(h){var f=h.x,d=h.y,p=h.width,m=h.height;e=Math.min(e,f-p/2),r=Math.max(r,f+p/2),n=Math.min(n,d-m/2),i=Math.max(i,d+m/2)}o(u,"getExtremes"),Ae(t.nodes(),function(h){u(t.node(h))}),Ae(t.edges(),function(h){var f=t.edge(h);Object.prototype.hasOwnProperty.call(f,"x")&&u(f)}),e-=s,n-=l,Ae(t.nodes(),function(h){var f=t.node(h);f.x-=e,f.y-=n}),Ae(t.edges(),function(h){var f=t.edge(h);Ae(f.points,function(d){d.x-=e,d.y-=n}),Object.prototype.hasOwnProperty.call(f,"x")&&(f.x-=e),Object.prototype.hasOwnProperty.call(f,"y")&&(f.y-=n)}),a.width=r-e+s,a.height=i-n+l}function SIe(t){Ae(t.edges(),function(e){var r=t.edge(e),n=t.node(e.v),i=t.node(e.w),a,s;r.points?(a=r.points[0],s=r.points[r.points.length-1]):(r.points=[],a=i,s=n),r.points.unshift($L(n,a)),r.points.push($L(i,s))})}function CIe(t){Ae(t.edges(),function(e){var r=t.edge(e);if(Object.prototype.hasOwnProperty.call(r,"x"))switch((r.labelpos==="l"||r.labelpos==="r")&&(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset;break}})}function AIe(t){Ae(t.edges(),function(e){var r=t.edge(e);r.reversed&&r.points.reverse()})}function _Ie(t){Ae(t.nodes(),function(e){if(t.children(e).length){var r=t.node(e),n=t.node(r.borderTop),i=t.node(r.borderBottom),a=t.node(da(r.borderLeft)),s=t.node(da(r.borderRight));r.width=Math.abs(s.x-a.x),r.height=Math.abs(i.y-n.y),r.x=a.x+r.width/2,r.y=n.y+r.height/2}}),Ae(t.nodes(),function(e){t.node(e).dummy==="border"&&t.removeNode(e)})}function DIe(t){Ae(t.edges(),function(e){if(e.v===e.w){var r=t.node(e.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e,label:t.edge(e)}),t.removeEdge(e)}})}function LIe(t){var e=Kh(t);Ae(e,function(r){var n=0;Ae(r,function(i,a){var s=t.node(i);s.order=a+n,Ae(s.selfEdges,function(l){kc(t,"selfedge",{width:l.label.width,height:l.label.height,rank:s.rank,order:a+ ++n,e:l.e,label:l.label},"_se")}),delete s.selfEdges})})}function RIe(t){Ae(t.nodes(),function(e){var r=t.node(e);if(r.dummy==="selfedge"){var n=t.node(r.e.v),i=n.x+n.width/2,a=n.y,s=r.x-i,l=n.height/2;t.setEdge(r.e,r.label),t.removeNode(e),r.label.points=[{x:i+2*s/3,y:a-l},{x:i+5*s/6,y:a-l},{x:i+s,y:a},{x:i+5*s/6,y:a+l},{x:i+2*s/3,y:a+l}],r.label.x=r.x,r.label.y=r.y}})}function oR(t,e){return Bd(zd(t,e),Number)}function lR(t){var e={};return Ae(t,function(r,n){e[n.toLowerCase()]=r}),e}var hIe,fIe,dIe,pIe,mIe,gIe,yIe,vIe,fie=M(()=>{"use strict";qt();Fo();lne();dne();GL();qL();aR();Fne();iie();sie();hie();Ec();o(y2,"layout");o(cIe,"runLayout");o(uIe,"updateInputGraph");hIe=["nodesep","edgesep","ranksep","marginx","marginy"],fIe={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},dIe=["acyclicer","ranker","rankdir","align"],pIe=["width","height"],mIe={width:0,height:0},gIe=["minlen","weight","width","height","labeloffset"],yIe={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},vIe=["labelpos"];o(xIe,"buildLayoutGraph");o(bIe,"makeSpaceForEdgeLabels");o(wIe,"injectEdgeLabelProxies");o(TIe,"assignRankMinMax");o(kIe,"removeEdgeLabelProxies");o(EIe,"translateGraph");o(SIe,"assignNodeIntersects");o(CIe,"fixupEdgeLabelCoords");o(AIe,"reversePointsForReversedEdges");o(_Ie,"removeBorderNodes");o(DIe,"removeSelfEdges");o(LIe,"insertSelfEdges");o(RIe,"positionSelfEdges");o(oR,"selectNumberAttrs");o(lR,"canonicalize")});var cR=M(()=>{"use strict";GL();fie();qL();aR()});function zo(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:NIe(t),edges:MIe(t)};return fr(t.graph())||(e.value=an(t.graph())),e}function NIe(t){return Je(t.nodes(),function(e){var r=t.node(e),n=t.parent(e),i={v:e};return fr(r)||(i.value=r),fr(n)||(i.parent=n),i})}function MIe(t){return Je(t.edges(),function(e){var r=t.edge(e),n={v:e.v,w:e.w};return fr(e.name)||(n.name=e.name),fr(r)||(n.value=r),n})}var uR=M(()=>{"use strict";qt();GT();o(zo,"write");o(NIe,"writeNodes");o(MIe,"writeEdges")});var wr,Ud,mie,gie,YT,IIe,yie,vie,OIe,Mm,pie,xie,bie,wie,Tie,kie=M(()=>{"use strict";vt();Fo();uR();wr=new Map,Ud=new Map,mie=new Map,gie=o(()=>{Ud.clear(),mie.clear(),wr.clear()},"clear"),YT=o((t,e)=>{let r=Ud.get(e)||[];return Y.trace("In isDescendant",e," ",t," = ",r.includes(t)),r.includes(t)},"isDescendant"),IIe=o((t,e)=>{let r=Ud.get(e)||[];return Y.info("Descendants of ",e," is ",r),Y.info("Edge is ",t),t.v===e||t.w===e?!1:r?r.includes(t.v)||YT(t.v,e)||YT(t.w,e)||r.includes(t.w):(Y.debug("Tilt, ",e,",not in descendants"),!1)},"edgeInCluster"),yie=o((t,e,r,n)=>{Y.warn("Copying children of ",t,"root",n,"data",e.node(t),n);let i=e.children(t)||[];t!==n&&i.push(t),Y.warn("Copying (nodes) clusterId",t,"nodes",i),i.forEach(a=>{if(e.children(a).length>0)yie(a,e,r,n);else{let s=e.node(a);Y.info("cp ",a," to ",n," with parent ",t),r.setNode(a,s),n!==e.parent(a)&&(Y.warn("Setting parent",a,e.parent(a)),r.setParent(a,e.parent(a))),t!==n&&a!==t?(Y.debug("Setting parent",a,t),r.setParent(a,t)):(Y.info("In copy ",t,"root",n,"data",e.node(t),n),Y.debug("Not Setting parent for node=",a,"cluster!==rootId",t!==n,"node!==clusterId",a!==t));let l=e.edges(a);Y.debug("Copying Edges",l),l.forEach(u=>{Y.info("Edge",u);let h=e.edge(u.v,u.w,u.name);Y.info("Edge data",h,n);try{IIe(u,n)?(Y.info("Copying as ",u.v,u.w,h,u.name),r.setEdge(u.v,u.w,h,u.name),Y.info("newGraph edges ",r.edges(),r.edge(r.edges()[0]))):Y.info("Skipping copy of edge ",u.v,"-->",u.w," rootId: ",n," clusterId:",t)}catch(f){Y.error(f)}})}Y.debug("Removing node",a),e.removeNode(a)})},"copy"),vie=o((t,e)=>{let r=e.children(t),n=[...r];for(let i of r)mie.set(i,t),n=[...n,...vie(i,e)];return n},"extractDescendants"),OIe=o((t,e,r)=>{let n=t.edges().filter(u=>u.v===e||u.w===e),i=t.edges().filter(u=>u.v===r||u.w===r),a=n.map(u=>({v:u.v===e?r:u.v,w:u.w===e?e:u.w})),s=i.map(u=>({v:u.v,w:u.w}));return a.filter(u=>s.some(h=>u.v===h.v&&u.w===h.w))},"findCommonEdges"),Mm=o((t,e,r)=>{let n=e.children(t);if(Y.trace("Searching children of id ",t,n),n.length<1)return t;let i;for(let a of n){let s=Mm(a,e,r),l=OIe(e,r,s);if(s)if(l.length>0)i=s;else return s}return i},"findNonClusterChild"),pie=o(t=>!wr.has(t)||!wr.get(t).externalConnections?t:wr.has(t)?wr.get(t).id:t,"getAnchorId"),xie=o((t,e)=>{if(!t||e>10){Y.debug("Opting out, no graph ");return}else Y.debug("Opting in, graph ");t.nodes().forEach(function(r){t.children(r).length>0&&(Y.warn("Cluster identified",r," Replacement id in edges: ",Mm(r,t,r)),Ud.set(r,vie(r,t)),wr.set(r,{id:Mm(r,t,r),clusterData:t.node(r)}))}),t.nodes().forEach(function(r){let n=t.children(r),i=t.edges();n.length>0?(Y.debug("Cluster identified",r,Ud),i.forEach(a=>{let s=YT(a.v,r),l=YT(a.w,r);s^l&&(Y.warn("Edge: ",a," leaves cluster ",r),Y.warn("Descendants of XXX ",r,": ",Ud.get(r)),wr.get(r).externalConnections=!0)})):Y.debug("Not a cluster ",r,Ud)});for(let r of wr.keys()){let n=wr.get(r).id,i=t.parent(n);i!==r&&wr.has(i)&&!wr.get(i).externalConnections&&(wr.get(r).id=i)}t.edges().forEach(function(r){let n=t.edge(r);Y.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(r)),Y.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(t.edge(r)));let i=r.v,a=r.w;if(Y.warn("Fix XXX",wr,"ids:",r.v,r.w,"Translating: ",wr.get(r.v)," --- ",wr.get(r.w)),wr.get(r.v)||wr.get(r.w)){if(Y.warn("Fixing and trying - removing XXX",r.v,r.w,r.name),i=pie(r.v),a=pie(r.w),t.removeEdge(r.v,r.w,r.name),i!==r.v){let s=t.parent(i);wr.get(s).externalConnections=!0,n.fromCluster=r.v}if(a!==r.w){let s=t.parent(a);wr.get(s).externalConnections=!0,n.toCluster=r.w}Y.warn("Fix Replacing with XXX",i,a,r.name),t.setEdge(i,a,n,r.name)}}),Y.warn("Adjusted Graph",zo(t)),bie(t,0),Y.trace(wr)},"adjustClustersAndEdges"),bie=o((t,e)=>{if(Y.warn("extractor - ",e,zo(t),t.children("D")),e>10){Y.error("Bailing out");return}let r=t.nodes(),n=!1;for(let i of r){let a=t.children(i);n=n||a.length>0}if(!n){Y.debug("Done, no node has children",t.nodes());return}Y.debug("Nodes = ",r,e);for(let i of r)if(Y.debug("Extracting node",i,wr,wr.has(i)&&!wr.get(i).externalConnections,!t.parent(i),t.node(i),t.children("D")," Depth ",e),!wr.has(i))Y.debug("Not a cluster",i,e);else if(!wr.get(i).externalConnections&&t.children(i)&&t.children(i).length>0){Y.warn("Cluster without external connections, without a parent and with children",i,e);let s=t.graph().rankdir==="TB"?"LR":"TB";wr.get(i)?.clusterData?.dir&&(s=wr.get(i).clusterData.dir,Y.warn("Fixing dir",wr.get(i).clusterData.dir,s));let l=new sn({multigraph:!0,compound:!0}).setGraph({rankdir:s,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});Y.warn("Old graph before copy",zo(t)),yie(i,t,l,i),t.setNode(i,{clusterNode:!0,id:i,clusterData:wr.get(i).clusterData,label:wr.get(i).label,graph:l}),Y.warn("New graph after copy node: (",i,")",zo(l)),Y.debug("Old graph after copy",zo(t))}else Y.warn("Cluster ** ",i," **not meeting the criteria !externalConnections:",!wr.get(i).externalConnections," no parent: ",!t.parent(i)," children ",t.children(i)&&t.children(i).length>0,t.children("D"),e),Y.debug(wr);r=t.nodes(),Y.warn("New list of nodes",r);for(let i of r){let a=t.node(i);Y.warn(" Now next level",i,a),a?.clusterNode&&bie(a.graph,e+1)}},"extractor"),wie=o((t,e)=>{if(e.length===0)return[];let r=Object.assign([],e);return e.forEach(n=>{let i=t.children(n),a=wie(t,i);r=[...r,...a]}),r},"sorter"),Tie=o(t=>wie(t,t.children()),"sortNodesByHierarchy")});var Sie={};pr(Sie,{render:()=>PIe});var Eie,PIe,Cie=M(()=>{"use strict";cR();uR();Fo();XD();Ft();kie();Hw();Iw();YD();vt();o2();Gt();Eie=o(async(t,e,r,n,i,a)=>{Y.warn("Graph in recursive render:XAX",zo(e),i);let s=e.graph().rankdir;Y.trace("Dir in recursive render - dir:",s);let l=t.insert("g").attr("class","root");e.nodes()?Y.info("Recursive render XXX",e.nodes()):Y.info("No nodes found for",e),e.edges().length>0&&Y.info("Recursive edges",e.edge(e.edges()[0]));let u=l.insert("g").attr("class","clusters"),h=l.insert("g").attr("class","edgePaths"),f=l.insert("g").attr("class","edgeLabels"),d=l.insert("g").attr("class","nodes");await Promise.all(e.nodes().map(async function(y){let v=e.node(y);if(i!==void 0){let x=JSON.parse(JSON.stringify(i.clusterData));Y.trace(`Setting data for parent cluster XXX Node.id = `,y,` data=`,x.height,` -Parent cluster`,i.height),e.setNode(i.id,x),e.parent(y)||(Y.trace("Setting parent",y,i.id),e.setParent(y,i.id,x))}if(Y.info("(Insert) Node XXX"+y+": "+JSON.stringify(e.node(y))),v?.clusterNode){Y.info("Cluster identified XBX",y,v.width,e.node(y));let{ranksep:x,nodesep:b}=e.graph();v.graph.setGraph({...v.graph.graph(),ranksep:x+25,nodesep:b});let w=await Gie(d,v.graph,r,n,e.node(y),a),_=w.elem;Qe(v,_),v.diff=w.diff||0,Y.info("New compound node after recursive render XAX",y,"width",v.width,"height",v.height),aJ(_,v)}else e.children(y).length>0?(Y.trace("Cluster - the non recursive path XBX",y,v.id,v,v.width,"Graph:",e),Y.trace(Bm(v.id,e)),wr.set(v.id,{id:Bm(v.id,e),node:v})):(Y.trace("Node - the non recursive path XAX",y,d,e.node(y),s),await gm(d,e.node(y),{config:a,dir:s}))})),await o(async()=>{let y=e.edges().map(async function(v){let x=e.edge(v.v,v.w,v.name);Y.info("Edge "+v.v+" -> "+v.w+": "+JSON.stringify(v)),Y.info("Edge "+v.v+" -> "+v.w+": ",v," ",JSON.stringify(e.edge(v))),Y.info("Fix",wr,"ids:",v.v,v.w,"Translating: ",wr.get(v.v),wr.get(v.w)),await tw(f,x)});await Promise.all(y)},"processEdges")(),Y.info("Graph before layout:",JSON.stringify(Ho(e))),Y.info("############################################# XXX"),Y.info("### Layout ### XXX"),Y.info("############################################# XXX"),Du(e),Y.info("Graph after layout:",JSON.stringify(Ho(e)));let m=0,{subGraphTitleTotalMargin:g}=_u(a);return await Promise.all(Fie(e).map(async function(y){let v=e.node(y);if(Y.info("Position XBX => "+y+": ("+v.x,","+v.y,") width: ",v.width," height: ",v.height),v?.clusterNode)v.y+=g,Y.info("A tainted cluster node XBX1",y,v.id,v.width,v.height,v.x,v.y,e.parent(y)),wr.get(v.id).node=v,_v(v);else if(e.children(y).length>0){Y.info("A pure cluster node XBX1",y,v.id,v.x,v.y,v.width,v.height,e.parent(y)),v.height+=g,e.node(v.parentId);let x=v?.padding/2||0,b=v?.labelBBox?.height||0,w=b-x||0;Y.debug("OffsetY",w,"labelHeight",b,"halfPadding",x),await mm(u,v),wr.get(v.id).node=v}else{let x=e.node(v.parentId);v.y+=g/2,Y.info("A regular node XBX1 - using the padding",v.id,"parent",v.parentId,v.width,v.height,v.x,v.y,"offsetY",v.offsetY,"parent",x,x?.offsetY,v),_v(v)}})),e.edges().forEach(function(y){let v=e.edge(y);Y.info("Edge "+y.v+" -> "+y.w+": "+JSON.stringify(v),v),v.points.forEach(_=>_.y+=g/2);let x=e.node(y.v);var b=e.node(y.w);let w=nw(h,v,wr,r,x,b,n);rw(v,w)}),e.nodes().forEach(function(y){let v=e.node(y);Y.info(y,v.type,v.diff),v.isGroup&&(m=v.diff)}),Y.warn("Returning from recursive render XAX",l,m),{elem:l,diff:m}},"recursiveRender"),iPe=o(async(t,e)=>{let r=new Mr({multigraph:!0,compound:!0}).setGraph({rankdir:t.direction,nodesep:t.config?.nodeSpacing||t.config?.flowchart?.nodeSpacing||t.nodeSpacing,ranksep:t.config?.rankSpacing||t.config?.flowchart?.rankSpacing||t.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),n=e.select("g");iw(n,t.markers,t.type,t.diagramId),sJ(),iJ(),ZZ(),Rie(),t.nodes.forEach(a=>{r.setNode(a.id,{...a}),a.parentId&&r.setParent(a.id,a.parentId)}),Y.debug("Edges:",t.edges),t.edges.forEach(a=>{if(a.start===a.end){let s=a.start,l=s+"---"+s+"---1",u=s+"---"+s+"---2",h=r.node(s);r.setNode(l,{domId:l,id:l,parentId:h.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),r.setParent(l,h.parentId),r.setNode(u,{domId:u,id:u,parentId:h.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),r.setParent(u,h.parentId);let f=structuredClone(a),d=structuredClone(a),p=structuredClone(a);f.label="",f.arrowTypeEnd="none",f.id=s+"-cyclic-special-1",d.arrowTypeEnd="none",d.id=s+"-cyclic-special-mid",p.label="",h.isGroup&&(f.fromCluster=s,p.toCluster=s),p.id=s+"-cyclic-special-2",r.setEdge(s,l,f,s+"-cyclic-special-0"),r.setEdge(l,u,d,s+"-cyclic-special-1"),r.setEdge(u,s,p,s+"-cyc{"use strict";lJ();ht();Bv={},CD=o(t=>{for(let e of t)Bv[e.name]=e},"registerLayoutLoaders"),aPe=o(()=>{CD([{name:"dagre",loader:o(async()=>await Promise.resolve().then(()=>(Vie(),$ie)),"loader")}])},"registerDefaultLayoutLoaders");aPe();Fm=o(async(t,e)=>{if(!(t.layoutAlgorithm in Bv))throw new Error(`Unknown layout algorithm: ${t.layoutAlgorithm}`);let r=Bv[t.layoutAlgorithm];return(await r.loader()).render(t,e,oJ,{algorithm:r.algorithm})},"render"),cT=o((t="",{fallback:e="dagre"}={})=>{if(t in Bv)return t;if(e in Bv)return Y.warn(`Layout algorithm ${t} is not registered. Using ${e} as fallback.`),e;throw new Error(`Both layout algorithms ${t} and ${e} are not registered.`)},"getRegisteredLayoutAlgorithm")});var zm,sPe,oPe,uT=M(()=>{"use strict";ni();ht();zm=o((t,e,r,n)=>{t.attr("class",r);let{width:i,height:a,x:s,y:l}=sPe(t,e);Zr(t,a,i,n);let u=oPe(s,l,i,a,e);t.attr("viewBox",u),Y.debug(`viewBox configured: ${u} with padding: ${e}`)},"setupViewPortForSVG"),sPe=o((t,e)=>{let r=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:r.width+e*2,height:r.height+e*2,x:r.x,y:r.y}},"calculateDimensionsWithPadding"),oPe=o((t,e,r,n,i)=>`${t-i} ${e-i} ${r} ${n}`,"createViewBox")});var lPe,cPe,Uie,Hie=M(()=>{"use strict";mr();Vt();ht();j5();Fv();uT();hr();oL();lPe=o(function(t,e){return e.db.getClasses()},"getClasses"),cPe=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing state diagram (v2)",e);let{securityLevel:i,flowchart:a,layout:s}=de(),l;i==="sandbox"&&(l=ze("#i"+e));let u=i==="sandbox"?l.nodes()[0].contentDocument:document;Y.debug("Before getData: ");let h=n.db.getData();Y.debug("Data: ",h);let f=pm(e,i),d=sL();h.type=n.type,h.layoutAlgorithm=cT(s),h.layoutAlgorithm==="dagre"&&s==="elk"&&Y.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),h.direction=d,h.nodeSpacing=a?.nodeSpacing||50,h.rankSpacing=a?.rankSpacing||50,h.markers=["point","circle","cross"],h.diagramId=e,Y.debug("REF1:",h),await Fm(h,f);let p=h.config.flowchart?.diagramPadding??8;Ut.insertTitle(f,"flowchartTitleText",a?.titleTopMargin||0,n.db.getDiagramTitle()),zm(f,p,"flowchart",a?.useMaxWidth||!1);for(let m of h.nodes){let g=ze(`#${e} [id="${m.id}"]`);if(!g||!m.link)continue;let y=u.createElementNS("http://www.w3.org/2000/svg","a");y.setAttributeNS("http://www.w3.org/2000/svg","class",m.cssClasses),y.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),i==="sandbox"?y.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):m.linkTarget&&y.setAttributeNS("http://www.w3.org/2000/svg","target",m.linkTarget);let v=g.insert(function(){return y},":first-child"),x=g.select(".label-container");x&&v.append(function(){return x.node()});let b=g.select(".label");b&&v.append(function(){return b.node()})}},"draw"),Uie={getClasses:lPe,draw:cPe}});var AD,Wie,Yie=M(()=>{"use strict";AD=function(){var t=o(function(kn,_t,St,bt){for(St=St||{},bt=kn.length;bt--;St[kn[bt]]=_t);return St},"o"),e=[1,4],r=[1,3],n=[1,5],i=[1,8,9,10,11,27,34,36,38,44,60,83,84,85,86,87,88,101,104,105,108,110,113,114,115,120,121,122,123],a=[2,2],s=[1,13],l=[1,14],u=[1,15],h=[1,16],f=[1,23],d=[1,25],p=[1,26],m=[1,27],g=[1,49],y=[1,48],v=[1,29],x=[1,30],b=[1,31],w=[1,32],_=[1,33],T=[1,44],E=[1,46],L=[1,42],C=[1,47],A=[1,43],I=[1,50],D=[1,45],k=[1,51],R=[1,52],S=[1,34],O=[1,35],N=[1,36],P=[1,37],F=[1,57],B=[1,8,9,10,11,27,32,34,36,38,44,60,83,84,85,86,87,88,101,104,105,108,110,113,114,115,120,121,122,123],$=[1,61],z=[1,60],W=[1,62],j=[8,9,11,75,77],K=[1,77],ie=[1,90],Q=[1,95],ee=[1,94],J=[1,91],H=[1,87],q=[1,93],Z=[1,89],ae=[1,96],ue=[1,92],ce=[1,97],te=[1,88],De=[8,9,10,11,40,75,77],oe=[8,9,10,11,40,46,75,77],ke=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,88,101,104,105,108,110,113,114,115],Fe=[8,9,11,44,60,75,77,88,101,104,105,108,110,113,114,115],Be=[44,60,88,101,104,105,108,110,113,114,115],Ve=[1,123],Ge=[1,122],He=[1,130],xe=[1,144],X=[1,145],fe=[1,146],he=[1,147],ge=[1,132],ne=[1,134],ye=[1,138],U=[1,139],Te=[1,140],se=[1,141],Ee=[1,142],Ae=[1,143],Pe=[1,148],Me=[1,149],me=[1,128],We=[1,129],Re=[1,136],tt=[1,131],gt=[1,135],Et=[1,133],vt=[8,9,10,11,27,32,34,36,38,44,60,83,84,85,86,87,88,101,104,105,108,110,113,114,115,120,121,122,123],Ye=[1,151],Tt=[1,153],$e=[8,9,11],rt=[8,9,10,11,14,44,60,88,104,105,108,110,113,114,115],ft=[1,173],kt=[1,169],er=[1,170],dt=[1,174],Xe=[1,171],ct=[1,172],Lt=[77,115,118],Rt=[8,9,10,11,12,14,27,29,32,44,60,75,83,84,85,86,87,88,89,104,108,110,113,114,115],zt=[10,105],Xn=[31,49,51,53,55,57,62,64,66,67,69,71,115,116,117],or=[1,242],hn=[1,240],Tn=[1,244],Ur=[1,238],ri=[1,239],Mn=[1,241],yt=[1,243],Se=[1,245],at=[1,263],At=[8,9,11,105],pr=[8,9,10,11,60,83,104,105,108,109,110,111],In={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,edgeTextToken:78,STR:79,MD_STR:80,textToken:81,keywords:82,STYLE:83,LINKSTYLE:84,CLASSDEF:85,CLASS:86,CLICK:87,DOWN:88,UP:89,textNoTagsToken:90,stylesOpt:91,"idString[vertex]":92,"idString[class]":93,CALLBACKNAME:94,CALLBACKARGS:95,HREF:96,LINK_TARGET:97,"STR[link]":98,"STR[tooltip]":99,alphaNum:100,DEFAULT:101,numList:102,INTERPOLATE:103,NUM:104,COMMA:105,style:106,styleComponent:107,NODE_STRING:108,UNIT:109,BRKT:110,PCT:111,idStringToken:112,MINUS:113,MULT:114,UNICODE_TEXT:115,TEXT:116,TAGSTART:117,EDGE_TEXT:118,alphaNumToken:119,direction_tb:120,direction_bt:121,direction_rl:122,direction_lr:123,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",79:"STR",80:"MD_STR",83:"STYLE",84:"LINKSTYLE",85:"CLASSDEF",86:"CLASS",87:"CLICK",88:"DOWN",89:"UP",92:"idString[vertex]",93:"idString[class]",94:"CALLBACKNAME",95:"CALLBACKARGS",96:"HREF",97:"LINK_TARGET",98:"STR[link]",99:"STR[tooltip]",101:"DEFAULT",103:"INTERPOLATE",104:"NUM",105:"COMMA",108:"NODE_STRING",109:"UNIT",110:"BRKT",111:"PCT",113:"MINUS",114:"MULT",115:"UNICODE_TEXT",116:"TEXT",117:"TAGSTART",118:"EDGE_TEXT",120:"direction_tb",121:"direction_bt",122:"direction_rl",123:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[76,1],[76,2],[76,1],[76,1],[72,1],[73,3],[30,1],[30,2],[30,1],[30,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[102,1],[102,3],[91,1],[91,3],[106,1],[106,2],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[81,1],[81,1],[81,1],[81,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[78,1],[78,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[47,1],[47,2],[100,1],[100,2],[33,1],[33,1],[33,1],[33,1]],performAction:o(function(_t,St,bt,Ue,Kt,pe,bi){var be=pe.length-1;switch(Kt){case 2:this.$=[];break;case 3:(!Array.isArray(pe[be])||pe[be].length>0)&&pe[be-1].push(pe[be]),this.$=pe[be-1];break;case 4:case 181:this.$=pe[be];break;case 11:Ue.setDirection("TB"),this.$="TB";break;case 12:Ue.setDirection(pe[be-1]),this.$=pe[be-1];break;case 27:this.$=pe[be-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=Ue.addSubGraph(pe[be-6],pe[be-1],pe[be-4]);break;case 34:this.$=Ue.addSubGraph(pe[be-3],pe[be-1],pe[be-3]);break;case 35:this.$=Ue.addSubGraph(void 0,pe[be-1],void 0);break;case 37:this.$=pe[be].trim(),Ue.setAccTitle(this.$);break;case 38:case 39:this.$=pe[be].trim(),Ue.setAccDescription(this.$);break;case 43:this.$=pe[be-1]+pe[be];break;case 44:this.$=pe[be];break;case 45:Ue.addVertex(pe[be-1][0],void 0,void 0,void 0,void 0,void 0,void 0,pe[be]),Ue.addLink(pe[be-3].stmt,pe[be-1],pe[be-2]),this.$={stmt:pe[be-1],nodes:pe[be-1].concat(pe[be-3].nodes)};break;case 46:Ue.addLink(pe[be-2].stmt,pe[be],pe[be-1]),this.$={stmt:pe[be],nodes:pe[be].concat(pe[be-2].nodes)};break;case 47:Ue.addLink(pe[be-3].stmt,pe[be-1],pe[be-2]),this.$={stmt:pe[be-1],nodes:pe[be-1].concat(pe[be-3].nodes)};break;case 48:this.$={stmt:pe[be-1],nodes:pe[be-1]};break;case 49:Ue.addVertex(pe[be-1][0],void 0,void 0,void 0,void 0,void 0,void 0,pe[be]),this.$={stmt:pe[be-1],nodes:pe[be-1],shapeData:pe[be]};break;case 50:this.$={stmt:pe[be],nodes:pe[be]};break;case 51:this.$=[pe[be]];break;case 52:Ue.addVertex(pe[be-5][0],void 0,void 0,void 0,void 0,void 0,void 0,pe[be-4]),this.$=pe[be-5].concat(pe[be]);break;case 53:this.$=pe[be-4].concat(pe[be]);break;case 54:this.$=pe[be];break;case 55:this.$=pe[be-2],Ue.setClass(pe[be-2],pe[be]);break;case 56:this.$=pe[be-3],Ue.addVertex(pe[be-3],pe[be-1],"square");break;case 57:this.$=pe[be-3],Ue.addVertex(pe[be-3],pe[be-1],"doublecircle");break;case 58:this.$=pe[be-5],Ue.addVertex(pe[be-5],pe[be-2],"circle");break;case 59:this.$=pe[be-3],Ue.addVertex(pe[be-3],pe[be-1],"ellipse");break;case 60:this.$=pe[be-3],Ue.addVertex(pe[be-3],pe[be-1],"stadium");break;case 61:this.$=pe[be-3],Ue.addVertex(pe[be-3],pe[be-1],"subroutine");break;case 62:this.$=pe[be-7],Ue.addVertex(pe[be-7],pe[be-1],"rect",void 0,void 0,void 0,Object.fromEntries([[pe[be-5],pe[be-3]]]));break;case 63:this.$=pe[be-3],Ue.addVertex(pe[be-3],pe[be-1],"cylinder");break;case 64:this.$=pe[be-3],Ue.addVertex(pe[be-3],pe[be-1],"round");break;case 65:this.$=pe[be-3],Ue.addVertex(pe[be-3],pe[be-1],"diamond");break;case 66:this.$=pe[be-5],Ue.addVertex(pe[be-5],pe[be-2],"hexagon");break;case 67:this.$=pe[be-3],Ue.addVertex(pe[be-3],pe[be-1],"odd");break;case 68:this.$=pe[be-3],Ue.addVertex(pe[be-3],pe[be-1],"trapezoid");break;case 69:this.$=pe[be-3],Ue.addVertex(pe[be-3],pe[be-1],"inv_trapezoid");break;case 70:this.$=pe[be-3],Ue.addVertex(pe[be-3],pe[be-1],"lean_right");break;case 71:this.$=pe[be-3],Ue.addVertex(pe[be-3],pe[be-1],"lean_left");break;case 72:this.$=pe[be],Ue.addVertex(pe[be]);break;case 73:pe[be-1].text=pe[be],this.$=pe[be-1];break;case 74:case 75:pe[be-2].text=pe[be-1],this.$=pe[be-2];break;case 76:this.$=pe[be];break;case 77:var vo=Ue.destructLink(pe[be],pe[be-2]);this.$={type:vo.type,stroke:vo.stroke,length:vo.length,text:pe[be-1]};break;case 78:this.$={text:pe[be],type:"text"};break;case 79:this.$={text:pe[be-1].text+""+pe[be],type:pe[be-1].type};break;case 80:this.$={text:pe[be],type:"string"};break;case 81:this.$={text:pe[be],type:"markdown"};break;case 82:var vo=Ue.destructLink(pe[be]);this.$={type:vo.type,stroke:vo.stroke,length:vo.length};break;case 83:this.$=pe[be-1];break;case 84:this.$={text:pe[be],type:"text"};break;case 85:this.$={text:pe[be-1].text+""+pe[be],type:pe[be-1].type};break;case 86:this.$={text:pe[be],type:"string"};break;case 87:case 102:this.$={text:pe[be],type:"markdown"};break;case 99:this.$={text:pe[be],type:"text"};break;case 100:this.$={text:pe[be-1].text+""+pe[be],type:pe[be-1].type};break;case 101:this.$={text:pe[be],type:"text"};break;case 103:this.$=pe[be-4],Ue.addClass(pe[be-2],pe[be]);break;case 104:this.$=pe[be-4],Ue.setClass(pe[be-2],pe[be]);break;case 105:case 113:this.$=pe[be-1],Ue.setClickEvent(pe[be-1],pe[be]);break;case 106:case 114:this.$=pe[be-3],Ue.setClickEvent(pe[be-3],pe[be-2]),Ue.setTooltip(pe[be-3],pe[be]);break;case 107:this.$=pe[be-2],Ue.setClickEvent(pe[be-2],pe[be-1],pe[be]);break;case 108:this.$=pe[be-4],Ue.setClickEvent(pe[be-4],pe[be-3],pe[be-2]),Ue.setTooltip(pe[be-4],pe[be]);break;case 109:this.$=pe[be-2],Ue.setLink(pe[be-2],pe[be]);break;case 110:this.$=pe[be-4],Ue.setLink(pe[be-4],pe[be-2]),Ue.setTooltip(pe[be-4],pe[be]);break;case 111:this.$=pe[be-4],Ue.setLink(pe[be-4],pe[be-2],pe[be]);break;case 112:this.$=pe[be-6],Ue.setLink(pe[be-6],pe[be-4],pe[be]),Ue.setTooltip(pe[be-6],pe[be-2]);break;case 115:this.$=pe[be-1],Ue.setLink(pe[be-1],pe[be]);break;case 116:this.$=pe[be-3],Ue.setLink(pe[be-3],pe[be-2]),Ue.setTooltip(pe[be-3],pe[be]);break;case 117:this.$=pe[be-3],Ue.setLink(pe[be-3],pe[be-2],pe[be]);break;case 118:this.$=pe[be-5],Ue.setLink(pe[be-5],pe[be-4],pe[be]),Ue.setTooltip(pe[be-5],pe[be-2]);break;case 119:this.$=pe[be-4],Ue.addVertex(pe[be-2],void 0,void 0,pe[be]);break;case 120:this.$=pe[be-4],Ue.updateLink([pe[be-2]],pe[be]);break;case 121:this.$=pe[be-4],Ue.updateLink(pe[be-2],pe[be]);break;case 122:this.$=pe[be-8],Ue.updateLinkInterpolate([pe[be-6]],pe[be-2]),Ue.updateLink([pe[be-6]],pe[be]);break;case 123:this.$=pe[be-8],Ue.updateLinkInterpolate(pe[be-6],pe[be-2]),Ue.updateLink(pe[be-6],pe[be]);break;case 124:this.$=pe[be-6],Ue.updateLinkInterpolate([pe[be-4]],pe[be]);break;case 125:this.$=pe[be-6],Ue.updateLinkInterpolate(pe[be-4],pe[be]);break;case 126:case 128:this.$=[pe[be]];break;case 127:case 129:pe[be-2].push(pe[be]),this.$=pe[be-2];break;case 131:this.$=pe[be-1]+pe[be];break;case 179:this.$=pe[be];break;case 180:this.$=pe[be-1]+""+pe[be];break;case 182:this.$=pe[be-1]+""+pe[be];break;case 183:this.$={stmt:"dir",value:"TB"};break;case 184:this.$={stmt:"dir",value:"BT"};break;case 185:this.$={stmt:"dir",value:"RL"};break;case 186:this.$={stmt:"dir",value:"LR"};break}},"anonymous"),table:[{3:1,4:2,9:e,10:r,12:n},{1:[3]},t(i,a,{5:6}),{4:7,9:e,10:r,12:n},{4:8,9:e,10:r,12:n},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,83:v,84:x,85:b,86:w,87:_,88:T,101:E,104:L,105:C,108:A,110:I,112:41,113:D,114:k,115:R,120:S,121:O,122:N,123:P},t(i,[2,9]),t(i,[2,10]),t(i,[2,11]),{8:[1,54],9:[1,55],10:F,15:53,18:56},t(B,[2,3]),t(B,[2,4]),t(B,[2,5]),t(B,[2,6]),t(B,[2,7]),t(B,[2,8]),{8:$,9:z,11:W,21:58,41:59,72:63,75:[1,64],77:[1,65]},{8:$,9:z,11:W,21:66},{8:$,9:z,11:W,21:67},{8:$,9:z,11:W,21:68},{8:$,9:z,11:W,21:69},{8:$,9:z,11:W,21:70},{8:$,9:z,10:[1,71],11:W,21:72},t(B,[2,36]),{35:[1,73]},{37:[1,74]},t(B,[2,39]),t(j,[2,50],{18:75,39:76,10:F,40:K}),{10:[1,78]},{10:[1,79]},{10:[1,80]},{10:[1,81]},{14:ie,44:Q,60:ee,79:[1,85],88:J,94:[1,82],96:[1,83],100:84,104:H,105:q,108:Z,110:ae,113:ue,114:ce,115:te,119:86},t(B,[2,183]),t(B,[2,184]),t(B,[2,185]),t(B,[2,186]),t(De,[2,51]),t(De,[2,54],{46:[1,98]}),t(oe,[2,72],{112:111,29:[1,99],44:g,48:[1,100],50:[1,101],52:[1,102],54:[1,103],56:[1,104],58:[1,105],60:y,63:[1,106],65:[1,107],67:[1,108],68:[1,109],70:[1,110],88:T,101:E,104:L,105:C,108:A,110:I,113:D,114:k,115:R}),t(ke,[2,179]),t(ke,[2,140]),t(ke,[2,141]),t(ke,[2,142]),t(ke,[2,143]),t(ke,[2,144]),t(ke,[2,145]),t(ke,[2,146]),t(ke,[2,147]),t(ke,[2,148]),t(ke,[2,149]),t(ke,[2,150]),t(i,[2,12]),t(i,[2,18]),t(i,[2,19]),{9:[1,112]},t(Fe,[2,26],{18:113,10:F}),t(B,[2,27]),{42:114,43:38,44:g,45:39,47:40,60:y,88:T,101:E,104:L,105:C,108:A,110:I,112:41,113:D,114:k,115:R},t(B,[2,40]),t(B,[2,41]),t(B,[2,42]),t(Be,[2,76],{73:115,62:[1,117],74:[1,116]}),{76:118,78:119,79:[1,120],80:[1,121],115:Ve,118:Ge},t([44,60,62,74,88,101,104,105,108,110,113,114,115],[2,82]),t(B,[2,28]),t(B,[2,29]),t(B,[2,30]),t(B,[2,31]),t(B,[2,32]),{10:He,12:xe,14:X,27:fe,28:124,32:he,44:ge,60:ne,75:ye,79:[1,126],80:[1,127],82:137,83:U,84:Te,85:se,86:Ee,87:Ae,88:Pe,89:Me,90:125,104:me,108:We,110:Re,113:tt,114:gt,115:Et},t(vt,a,{5:150}),t(B,[2,37]),t(B,[2,38]),t(j,[2,48],{44:Ye}),t(j,[2,49],{18:152,10:F,40:Tt}),t(De,[2,44]),{44:g,47:154,60:y,88:T,101:E,104:L,105:C,108:A,110:I,112:41,113:D,114:k,115:R},{101:[1,155],102:156,104:[1,157]},{44:g,47:158,60:y,88:T,101:E,104:L,105:C,108:A,110:I,112:41,113:D,114:k,115:R},{44:g,47:159,60:y,88:T,101:E,104:L,105:C,108:A,110:I,112:41,113:D,114:k,115:R},t($e,[2,105],{10:[1,160],95:[1,161]}),{79:[1,162]},t($e,[2,113],{119:164,10:[1,163],14:ie,44:Q,60:ee,88:J,104:H,105:q,108:Z,110:ae,113:ue,114:ce,115:te}),t($e,[2,115],{10:[1,165]}),t(rt,[2,181]),t(rt,[2,168]),t(rt,[2,169]),t(rt,[2,170]),t(rt,[2,171]),t(rt,[2,172]),t(rt,[2,173]),t(rt,[2,174]),t(rt,[2,175]),t(rt,[2,176]),t(rt,[2,177]),t(rt,[2,178]),{44:g,47:166,60:y,88:T,101:E,104:L,105:C,108:A,110:I,112:41,113:D,114:k,115:R},{30:167,67:ft,79:kt,80:er,81:168,115:dt,116:Xe,117:ct},{30:175,67:ft,79:kt,80:er,81:168,115:dt,116:Xe,117:ct},{30:177,50:[1,176],67:ft,79:kt,80:er,81:168,115:dt,116:Xe,117:ct},{30:178,67:ft,79:kt,80:er,81:168,115:dt,116:Xe,117:ct},{30:179,67:ft,79:kt,80:er,81:168,115:dt,116:Xe,117:ct},{30:180,67:ft,79:kt,80:er,81:168,115:dt,116:Xe,117:ct},{108:[1,181]},{30:182,67:ft,79:kt,80:er,81:168,115:dt,116:Xe,117:ct},{30:183,65:[1,184],67:ft,79:kt,80:er,81:168,115:dt,116:Xe,117:ct},{30:185,67:ft,79:kt,80:er,81:168,115:dt,116:Xe,117:ct},{30:186,67:ft,79:kt,80:er,81:168,115:dt,116:Xe,117:ct},{30:187,67:ft,79:kt,80:er,81:168,115:dt,116:Xe,117:ct},t(ke,[2,180]),t(i,[2,20]),t(Fe,[2,25]),t(j,[2,46],{39:188,18:189,10:F,40:K}),t(Be,[2,73],{10:[1,190]}),{10:[1,191]},{30:192,67:ft,79:kt,80:er,81:168,115:dt,116:Xe,117:ct},{77:[1,193],78:194,115:Ve,118:Ge},t(Lt,[2,78]),t(Lt,[2,80]),t(Lt,[2,81]),t(Lt,[2,166]),t(Lt,[2,167]),{8:$,9:z,10:He,11:W,12:xe,14:X,21:196,27:fe,29:[1,195],32:he,44:ge,60:ne,75:ye,82:137,83:U,84:Te,85:se,86:Ee,87:Ae,88:Pe,89:Me,90:197,104:me,108:We,110:Re,113:tt,114:gt,115:Et},t(Rt,[2,99]),t(Rt,[2,101]),t(Rt,[2,102]),t(Rt,[2,155]),t(Rt,[2,156]),t(Rt,[2,157]),t(Rt,[2,158]),t(Rt,[2,159]),t(Rt,[2,160]),t(Rt,[2,161]),t(Rt,[2,162]),t(Rt,[2,163]),t(Rt,[2,164]),t(Rt,[2,165]),t(Rt,[2,88]),t(Rt,[2,89]),t(Rt,[2,90]),t(Rt,[2,91]),t(Rt,[2,92]),t(Rt,[2,93]),t(Rt,[2,94]),t(Rt,[2,95]),t(Rt,[2,96]),t(Rt,[2,97]),t(Rt,[2,98]),{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,198],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,83:v,84:x,85:b,86:w,87:_,88:T,101:E,104:L,105:C,108:A,110:I,112:41,113:D,114:k,115:R,120:S,121:O,122:N,123:P},{10:F,18:199},{44:[1,200]},t(De,[2,43]),{10:[1,201],44:g,60:y,88:T,101:E,104:L,105:C,108:A,110:I,112:111,113:D,114:k,115:R},{10:[1,202]},{10:[1,203],105:[1,204]},t(zt,[2,126]),{10:[1,205],44:g,60:y,88:T,101:E,104:L,105:C,108:A,110:I,112:111,113:D,114:k,115:R},{10:[1,206],44:g,60:y,88:T,101:E,104:L,105:C,108:A,110:I,112:111,113:D,114:k,115:R},{79:[1,207]},t($e,[2,107],{10:[1,208]}),t($e,[2,109],{10:[1,209]}),{79:[1,210]},t(rt,[2,182]),{79:[1,211],97:[1,212]},t(De,[2,55],{112:111,44:g,60:y,88:T,101:E,104:L,105:C,108:A,110:I,113:D,114:k,115:R}),{31:[1,213],67:ft,81:214,115:dt,116:Xe,117:ct},t(Xn,[2,84]),t(Xn,[2,86]),t(Xn,[2,87]),t(Xn,[2,151]),t(Xn,[2,152]),t(Xn,[2,153]),t(Xn,[2,154]),{49:[1,215],67:ft,81:214,115:dt,116:Xe,117:ct},{30:216,67:ft,79:kt,80:er,81:168,115:dt,116:Xe,117:ct},{51:[1,217],67:ft,81:214,115:dt,116:Xe,117:ct},{53:[1,218],67:ft,81:214,115:dt,116:Xe,117:ct},{55:[1,219],67:ft,81:214,115:dt,116:Xe,117:ct},{57:[1,220],67:ft,81:214,115:dt,116:Xe,117:ct},{60:[1,221]},{64:[1,222],67:ft,81:214,115:dt,116:Xe,117:ct},{66:[1,223],67:ft,81:214,115:dt,116:Xe,117:ct},{30:224,67:ft,79:kt,80:er,81:168,115:dt,116:Xe,117:ct},{31:[1,225],67:ft,81:214,115:dt,116:Xe,117:ct},{67:ft,69:[1,226],71:[1,227],81:214,115:dt,116:Xe,117:ct},{67:ft,69:[1,229],71:[1,228],81:214,115:dt,116:Xe,117:ct},t(j,[2,45],{18:152,10:F,40:Tt}),t(j,[2,47],{44:Ye}),t(Be,[2,75]),t(Be,[2,74]),{62:[1,230],67:ft,81:214,115:dt,116:Xe,117:ct},t(Be,[2,77]),t(Lt,[2,79]),{30:231,67:ft,79:kt,80:er,81:168,115:dt,116:Xe,117:ct},t(vt,a,{5:232}),t(Rt,[2,100]),t(B,[2,35]),{43:233,44:g,45:39,47:40,60:y,88:T,101:E,104:L,105:C,108:A,110:I,112:41,113:D,114:k,115:R},{10:F,18:234},{10:or,60:hn,83:Tn,91:235,104:Ur,106:236,107:237,108:ri,109:Mn,110:yt,111:Se},{10:or,60:hn,83:Tn,91:246,103:[1,247],104:Ur,106:236,107:237,108:ri,109:Mn,110:yt,111:Se},{10:or,60:hn,83:Tn,91:248,103:[1,249],104:Ur,106:236,107:237,108:ri,109:Mn,110:yt,111:Se},{104:[1,250]},{10:or,60:hn,83:Tn,91:251,104:Ur,106:236,107:237,108:ri,109:Mn,110:yt,111:Se},{44:g,47:252,60:y,88:T,101:E,104:L,105:C,108:A,110:I,112:41,113:D,114:k,115:R},t($e,[2,106]),{79:[1,253]},{79:[1,254],97:[1,255]},t($e,[2,114]),t($e,[2,116],{10:[1,256]}),t($e,[2,117]),t(oe,[2,56]),t(Xn,[2,85]),t(oe,[2,57]),{51:[1,257],67:ft,81:214,115:dt,116:Xe,117:ct},t(oe,[2,64]),t(oe,[2,59]),t(oe,[2,60]),t(oe,[2,61]),{108:[1,258]},t(oe,[2,63]),t(oe,[2,65]),{66:[1,259],67:ft,81:214,115:dt,116:Xe,117:ct},t(oe,[2,67]),t(oe,[2,68]),t(oe,[2,70]),t(oe,[2,69]),t(oe,[2,71]),t([10,44,60,88,101,104,105,108,110,113,114,115],[2,83]),{31:[1,260],67:ft,81:214,115:dt,116:Xe,117:ct},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,261],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,83:v,84:x,85:b,86:w,87:_,88:T,101:E,104:L,105:C,108:A,110:I,112:41,113:D,114:k,115:R,120:S,121:O,122:N,123:P},t(De,[2,53]),{43:262,44:g,45:39,47:40,60:y,88:T,101:E,104:L,105:C,108:A,110:I,112:41,113:D,114:k,115:R},t($e,[2,119],{105:at}),t(At,[2,128],{107:264,10:or,60:hn,83:Tn,104:Ur,108:ri,109:Mn,110:yt,111:Se}),t(pr,[2,130]),t(pr,[2,132]),t(pr,[2,133]),t(pr,[2,134]),t(pr,[2,135]),t(pr,[2,136]),t(pr,[2,137]),t(pr,[2,138]),t(pr,[2,139]),t($e,[2,120],{105:at}),{10:[1,265]},t($e,[2,121],{105:at}),{10:[1,266]},t(zt,[2,127]),t($e,[2,103],{105:at}),t($e,[2,104],{112:111,44:g,60:y,88:T,101:E,104:L,105:C,108:A,110:I,113:D,114:k,115:R}),t($e,[2,108]),t($e,[2,110],{10:[1,267]}),t($e,[2,111]),{97:[1,268]},{51:[1,269]},{62:[1,270]},{66:[1,271]},{8:$,9:z,11:W,21:272},t(B,[2,34]),t(De,[2,52]),{10:or,60:hn,83:Tn,104:Ur,106:273,107:237,108:ri,109:Mn,110:yt,111:Se},t(pr,[2,131]),{14:ie,44:Q,60:ee,88:J,100:274,104:H,105:q,108:Z,110:ae,113:ue,114:ce,115:te,119:86},{14:ie,44:Q,60:ee,88:J,100:275,104:H,105:q,108:Z,110:ae,113:ue,114:ce,115:te,119:86},{97:[1,276]},t($e,[2,118]),t(oe,[2,58]),{30:277,67:ft,79:kt,80:er,81:168,115:dt,116:Xe,117:ct},t(oe,[2,66]),t(vt,a,{5:278}),t(At,[2,129],{107:264,10:or,60:hn,83:Tn,104:Ur,108:ri,109:Mn,110:yt,111:Se}),t($e,[2,124],{119:164,10:[1,279],14:ie,44:Q,60:ee,88:J,104:H,105:q,108:Z,110:ae,113:ue,114:ce,115:te}),t($e,[2,125],{119:164,10:[1,280],14:ie,44:Q,60:ee,88:J,104:H,105:q,108:Z,110:ae,113:ue,114:ce,115:te}),t($e,[2,112]),{31:[1,281],67:ft,81:214,115:dt,116:Xe,117:ct},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,282],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,83:v,84:x,85:b,86:w,87:_,88:T,101:E,104:L,105:C,108:A,110:I,112:41,113:D,114:k,115:R,120:S,121:O,122:N,123:P},{10:or,60:hn,83:Tn,91:283,104:Ur,106:236,107:237,108:ri,109:Mn,110:yt,111:Se},{10:or,60:hn,83:Tn,91:284,104:Ur,106:236,107:237,108:ri,109:Mn,110:yt,111:Se},t(oe,[2,62]),t(B,[2,33]),t($e,[2,122],{105:at}),t($e,[2,123],{105:at})],defaultActions:{},parseError:o(function(_t,St){if(St.recoverable)this.trace(_t);else{var bt=new Error(_t);throw bt.hash=St,bt}},"parseError"),parse:o(function(_t){var St=this,bt=[0],Ue=[],Kt=[null],pe=[],bi=this.table,be="",vo=0,bF=0,wF=0,axe=2,TF=1,sxe=pe.slice.call(arguments,1),ji=Object.create(this.lexer),Pf={yy:{}};for(var gS in this.yy)Object.prototype.hasOwnProperty.call(this.yy,gS)&&(Pf.yy[gS]=this.yy[gS]);ji.setInput(_t,Pf.yy),Pf.yy.lexer=ji,Pf.yy.parser=this,typeof ji.yylloc>"u"&&(ji.yylloc={});var yS=ji.yylloc;pe.push(yS);var oxe=ji.options&&ji.options.ranges;typeof Pf.yy.parseError=="function"?this.parseError=Pf.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Sat(Vs){bt.length=bt.length-2*Vs,Kt.length=Kt.length-Vs,pe.length=pe.length-Vs}o(Sat,"popStack");function lxe(){var Vs;return Vs=Ue.pop()||ji.lex()||TF,typeof Vs!="number"&&(Vs instanceof Array&&(Ue=Vs,Vs=Ue.pop()),Vs=St.symbols_[Vs]||Vs),Vs}o(lxe,"lex");for(var Va,vS,Bf,xo,Cat,xS,Q0={},Eb,Xc,kF,Sb;;){if(Bf=bt[bt.length-1],this.defaultActions[Bf]?xo=this.defaultActions[Bf]:((Va===null||typeof Va>"u")&&(Va=lxe()),xo=bi[Bf]&&bi[Bf][Va]),typeof xo>"u"||!xo.length||!xo[0]){var bS="";Sb=[];for(Eb in bi[Bf])this.terminals_[Eb]&&Eb>axe&&Sb.push("'"+this.terminals_[Eb]+"'");ji.showPosition?bS="Parse error on line "+(vo+1)+`: -`+ji.showPosition()+` -Expecting `+Sb.join(", ")+", got '"+(this.terminals_[Va]||Va)+"'":bS="Parse error on line "+(vo+1)+": Unexpected "+(Va==TF?"end of input":"'"+(this.terminals_[Va]||Va)+"'"),this.parseError(bS,{text:ji.match,token:this.terminals_[Va]||Va,line:ji.yylineno,loc:yS,expected:Sb})}if(xo[0]instanceof Array&&xo.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Bf+", token: "+Va);switch(xo[0]){case 1:bt.push(Va),Kt.push(ji.yytext),pe.push(ji.yylloc),bt.push(xo[1]),Va=null,vS?(Va=vS,vS=null):(bF=ji.yyleng,be=ji.yytext,vo=ji.yylineno,yS=ji.yylloc,wF>0&&wF--);break;case 2:if(Xc=this.productions_[xo[1]][1],Q0.$=Kt[Kt.length-Xc],Q0._$={first_line:pe[pe.length-(Xc||1)].first_line,last_line:pe[pe.length-1].last_line,first_column:pe[pe.length-(Xc||1)].first_column,last_column:pe[pe.length-1].last_column},oxe&&(Q0._$.range=[pe[pe.length-(Xc||1)].range[0],pe[pe.length-1].range[1]]),xS=this.performAction.apply(Q0,[be,bF,vo,Pf.yy,xo[1],Kt,pe].concat(sxe)),typeof xS<"u")return xS;Xc&&(bt=bt.slice(0,-1*Xc*2),Kt=Kt.slice(0,-1*Xc),pe=pe.slice(0,-1*Xc)),bt.push(this.productions_[xo[1]][0]),Kt.push(Q0.$),pe.push(Q0._$),kF=bi[bt[bt.length-2]][bt[bt.length-1]],bt.push(kF);break;case 3:return!0}}return!0},"parse")},On=function(){var kn={EOF:1,parseError:o(function(St,bt){if(this.yy.parser)this.yy.parser.parseError(St,bt);else throw new Error(St)},"parseError"),setInput:o(function(_t,St){return this.yy=St||this.yy||{},this._input=_t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var _t=this._input[0];this.yytext+=_t,this.yyleng++,this.offset++,this.match+=_t,this.matched+=_t;var St=_t.match(/(?:\r\n?|\n).*/g);return St?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),_t},"input"),unput:o(function(_t){var St=_t.length,bt=_t.split(/(?:\r\n?|\n)/g);this._input=_t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-St),this.offset-=St;var Ue=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),bt.length-1&&(this.yylineno-=bt.length-1);var Kt=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:bt?(bt.length===Ue.length?this.yylloc.first_column:0)+Ue[Ue.length-bt.length].length-bt[0].length:this.yylloc.first_column-St},this.options.ranges&&(this.yylloc.range=[Kt[0],Kt[0]+this.yyleng-St]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(_t){this.unput(this.match.slice(_t))},"less"),pastInput:o(function(){var _t=this.matched.substr(0,this.matched.length-this.match.length);return(_t.length>20?"...":"")+_t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var _t=this.match;return _t.length<20&&(_t+=this._input.substr(0,20-_t.length)),(_t.substr(0,20)+(_t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var _t=this.pastInput(),St=new Array(_t.length+1).join("-");return _t+this.upcomingInput()+` -`+St+"^"},"showPosition"),test_match:o(function(_t,St){var bt,Ue,Kt;if(this.options.backtrack_lexer&&(Kt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Kt.yylloc.range=this.yylloc.range.slice(0))),Ue=_t[0].match(/(?:\r\n?|\n).*/g),Ue&&(this.yylineno+=Ue.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Ue?Ue[Ue.length-1].length-Ue[Ue.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+_t[0].length},this.yytext+=_t[0],this.match+=_t[0],this.matches=_t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(_t[0].length),this.matched+=_t[0],bt=this.performAction.call(this,this.yy,this,St,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),bt)return bt;if(this._backtrack){for(var pe in Kt)this[pe]=Kt[pe];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var _t,St,bt,Ue;this._more||(this.yytext="",this.match="");for(var Kt=this._currentRules(),pe=0;peSt[0].length)){if(St=bt,Ue=pe,this.options.backtrack_lexer){if(_t=this.test_match(bt,Kt[pe]),_t!==!1)return _t;if(this._backtrack){St=!1;continue}else return!1}else if(!this.options.flex)break}return St?(_t=this.test_match(St,Kt[Ue]),_t!==!1?_t:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var St=this.next();return St||this.lex()},"lex"),begin:o(function(St){this.conditionStack.push(St)},"begin"),popState:o(function(){var St=this.conditionStack.length-1;return St>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(St){return St=this.conditionStack.length-1-Math.abs(St||0),St>=0?this.conditionStack[St]:"INITIAL"},"topState"),pushState:o(function(St){this.begin(St)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(St,bt,Ue,Kt){var pe=Kt;switch(Ue){case 0:return this.begin("acc_title"),34;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),36;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),bt.yytext="",40;break;case 8:return this.pushState("shapeDataStr"),40;break;case 9:return this.popState(),40;break;case 10:let bi=/\n\s*/g;return bt.yytext=bt.yytext.replace(bi,"
    "),40;break;case 11:return 40;case 12:this.popState();break;case 13:this.begin("callbackname");break;case 14:this.popState();break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 94;case 17:this.popState();break;case 18:return 95;case 19:return"MD_STR";case 20:this.popState();break;case 21:this.begin("md_string");break;case 22:return"STR";case 23:this.popState();break;case 24:this.pushState("string");break;case 25:return 83;case 26:return 101;case 27:return 84;case 28:return 103;case 29:return 85;case 30:return 86;case 31:return 96;case 32:this.begin("click");break;case 33:this.popState();break;case 34:return 87;case 35:return St.lex.firstGraph()&&this.begin("dir"),12;break;case 36:return St.lex.firstGraph()&&this.begin("dir"),12;break;case 37:return St.lex.firstGraph()&&this.begin("dir"),12;break;case 38:return 27;case 39:return 32;case 40:return 97;case 41:return 97;case 42:return 97;case 43:return 97;case 44:return this.popState(),13;break;case 45:return this.popState(),14;break;case 46:return this.popState(),14;break;case 47:return this.popState(),14;break;case 48:return this.popState(),14;break;case 49:return this.popState(),14;break;case 50:return this.popState(),14;break;case 51:return this.popState(),14;break;case 52:return this.popState(),14;break;case 53:return this.popState(),14;break;case 54:return this.popState(),14;break;case 55:return 120;case 56:return 121;case 57:return 122;case 58:return 123;case 59:return 104;case 60:return 110;case 61:return 46;case 62:return 60;case 63:return 44;case 64:return 8;case 65:return 105;case 66:return 114;case 67:return this.popState(),77;break;case 68:return this.pushState("edgeText"),75;break;case 69:return 118;case 70:return this.popState(),77;break;case 71:return this.pushState("thickEdgeText"),75;break;case 72:return 118;case 73:return this.popState(),77;break;case 74:return this.pushState("dottedEdgeText"),75;break;case 75:return 118;case 76:return 77;case 77:return this.popState(),53;break;case 78:return"TEXT";case 79:return this.pushState("ellipseText"),52;break;case 80:return this.popState(),55;break;case 81:return this.pushState("text"),54;break;case 82:return this.popState(),57;break;case 83:return this.pushState("text"),56;break;case 84:return 58;case 85:return this.pushState("text"),67;break;case 86:return this.popState(),64;break;case 87:return this.pushState("text"),63;break;case 88:return this.popState(),49;break;case 89:return this.pushState("text"),48;break;case 90:return this.popState(),69;break;case 91:return this.popState(),71;break;case 92:return 116;case 93:return this.pushState("trapText"),68;break;case 94:return this.pushState("trapText"),70;break;case 95:return 117;case 96:return 67;case 97:return 89;case 98:return"SEP";case 99:return 88;case 100:return 114;case 101:return 110;case 102:return 44;case 103:return 108;case 104:return 113;case 105:return 115;case 106:return this.popState(),62;break;case 107:return this.pushState("text"),62;break;case 108:return this.popState(),51;break;case 109:return this.pushState("text"),50;break;case 110:return this.popState(),31;break;case 111:return this.pushState("text"),29;break;case 112:return this.popState(),66;break;case 113:return this.pushState("text"),65;break;case 114:return"TEXT";case 115:return"QUOTE";case 116:return 9;case 117:return 10;case 118:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},shapeData:{rules:[8,11,12,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},callbackargs:{rules:[17,18,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},callbackname:{rules:[14,15,16,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},href:{rules:[21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},click:{rules:[21,24,33,34,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},dottedEdgeText:{rules:[21,24,73,75,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},thickEdgeText:{rules:[21,24,70,72,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},edgeText:{rules:[21,24,67,69,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},trapText:{rules:[21,24,76,79,81,83,87,89,90,91,92,93,94,107,109,111,113],inclusive:!1},ellipseText:{rules:[21,24,76,77,78,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},text:{rules:[21,24,76,79,80,81,82,83,86,87,88,89,93,94,106,107,108,109,110,111,112,113,114],inclusive:!1},vertex:{rules:[21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},acc_descr:{rules:[3,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},acc_title:{rules:[1,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},md_string:{rules:[19,20,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},string:{rules:[21,22,23,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,70,71,73,74,76,79,81,83,84,85,87,89,93,94,95,96,97,98,99,100,101,102,103,104,105,107,109,111,113,115,116,117,118],inclusive:!0}}};return kn}();In.lexer=On;function Ir(){this.yy={}}return o(Ir,"Parser"),Ir.prototype=In,In.Parser=Ir,new Ir}();AD.parser=AD;Wie=AD});var uPe,hPe,qie,Xie=M(()=>{"use strict";To();uPe=o((t,e)=>{let r=z1,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return Hs(n,i,a,e)},"fade"),hPe=o(t=>`.label { +Parent cluster`,i.height),e.setNode(i.id,x),e.parent(y)||(Y.trace("Setting parent",y,i.id),e.setParent(y,i.id,x))}if(Y.info("(Insert) Node XXX"+y+": "+JSON.stringify(e.node(y))),v?.clusterNode){Y.info("Cluster identified XBX",y,v.width,e.node(y));let{ranksep:x,nodesep:b}=e.graph();v.graph.setGraph({...v.graph.graph(),ranksep:x+25,nodesep:b});let w=await Eie(d,v.graph,r,n,e.node(y),a),C=w.elem;je(v,C),v.diff=w.diff||0,Y.info("New compound node after recursive render XAX",y,"width",v.width,"height",v.height),UZ(C,v)}else e.children(y).length>0?(Y.trace("Cluster - the non recursive path XBX",y,v.id,v,v.width,"Graph:",e),Y.trace(Mm(v.id,e)),wr.set(v.id,{id:Mm(v.id,e),node:v})):(Y.trace("Node - the non recursive path XAX",y,d,e.node(y),s),await dm(d,e.node(y),{config:a,dir:s}))})),await o(async()=>{let y=e.edges().map(async function(v){let x=e.edge(v.v,v.w,v.name);Y.info("Edge "+v.v+" -> "+v.w+": "+JSON.stringify(v)),Y.info("Edge "+v.v+" -> "+v.w+": ",v," ",JSON.stringify(e.edge(v))),Y.info("Fix",wr,"ids:",v.v,v.w,"Translating: ",wr.get(v.v),wr.get(v.w)),await zw(f,x)});await Promise.all(y)},"processEdges")(),Y.info("Graph before layout:",JSON.stringify(zo(e))),Y.info("############################################# XXX"),Y.info("### Layout ### XXX"),Y.info("############################################# XXX"),y2(e),Y.info("Graph after layout:",JSON.stringify(zo(e)));let m=0,{subGraphTitleTotalMargin:g}=Du(a);return await Promise.all(Tie(e).map(async function(y){let v=e.node(y);if(Y.info("Position XBX => "+y+": ("+v.x,","+v.y,") width: ",v.width," height: ",v.height),v?.clusterNode)v.y+=g,Y.info("A tainted cluster node XBX1",y,v.id,v.width,v.height,v.x,v.y,e.parent(y)),wr.get(v.id).node=v,c2(v);else if(e.children(y).length>0){Y.info("A pure cluster node XBX1",y,v.id,v.x,v.y,v.width,v.height,e.parent(y)),v.height+=g,e.node(v.parentId);let x=v?.padding/2||0,b=v?.labelBBox?.height||0,w=b-x||0;Y.debug("OffsetY",w,"labelHeight",b,"halfPadding",x),await fm(u,v),wr.get(v.id).node=v}else{let x=e.node(v.parentId);v.y+=g/2,Y.info("A regular node XBX1 - using the padding",v.id,"parent",v.parentId,v.width,v.height,v.x,v.y,"offsetY",v.offsetY,"parent",x,x?.offsetY,v),c2(v)}})),e.edges().forEach(function(y){let v=e.edge(y);Y.info("Edge "+y.v+" -> "+y.w+": "+JSON.stringify(v),v),v.points.forEach(C=>C.y+=g/2);let x=e.node(y.v);var b=e.node(y.w);let w=$w(h,v,wr,r,x,b,n);Gw(v,w)}),e.nodes().forEach(function(y){let v=e.node(y);Y.info(y,v.type,v.diff),v.isGroup&&(m=v.diff)}),Y.warn("Returning from recursive render XAX",l,m),{elem:l,diff:m}},"recursiveRender"),PIe=o(async(t,e)=>{let r=new sn({multigraph:!0,compound:!0}).setGraph({rankdir:t.direction,nodesep:t.config?.nodeSpacing||t.config?.flowchart?.nodeSpacing||t.nodeSpacing,ranksep:t.config?.rankSpacing||t.config?.flowchart?.rankSpacing||t.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),n=e.select("g");Vw(n,t.markers,t.type,t.diagramId),HZ(),VZ(),PZ(),gie(),t.nodes.forEach(a=>{r.setNode(a.id,{...a}),a.parentId&&r.setParent(a.id,a.parentId)}),Y.debug("Edges:",t.edges),t.edges.forEach(a=>{if(a.start===a.end){let s=a.start,l=s+"---"+s+"---1",u=s+"---"+s+"---2",h=r.node(s);r.setNode(l,{domId:l,id:l,parentId:h.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),r.setParent(l,h.parentId),r.setNode(u,{domId:u,id:u,parentId:h.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),r.setParent(u,h.parentId);let f=structuredClone(a),d=structuredClone(a),p=structuredClone(a);f.label="",f.arrowTypeEnd="none",f.id=s+"-cyclic-special-1",d.arrowTypeStart="none",d.arrowTypeEnd="none",d.id=s+"-cyclic-special-mid",p.label="",h.isGroup&&(f.fromCluster=s,p.toCluster=s),p.id=s+"-cyclic-special-2",p.arrowTypeStart="none",r.setEdge(s,l,f,s+"-cyclic-special-0"),r.setEdge(l,u,d,s+"-cyclic-special-1"),r.setEdge(u,s,p,s+"-cyc{"use strict";qZ();vt();v2={},hR=o(t=>{for(let e of t)v2[e.name]=e},"registerLayoutLoaders"),BIe=o(()=>{hR([{name:"dagre",loader:o(async()=>await Promise.resolve().then(()=>(Cie(),Sie)),"loader")}])},"registerDefaultLayoutLoaders");BIe();Sc=o(async(t,e)=>{if(!(t.layoutAlgorithm in v2))throw new Error(`Unknown layout algorithm: ${t.layoutAlgorithm}`);let r=v2[t.layoutAlgorithm];return(await r.loader()).render(t,e,WZ,{algorithm:r.algorithm})},"render"),Jh=o((t="",{fallback:e="dagre"}={})=>{if(t in v2)return t;if(e in v2)return Y.warn(`Layout algorithm ${t} is not registered. Using ${e} as fallback.`),e;throw new Error(`Both layout algorithms ${t} and ${e} are not registered.`)},"getRegisteredLayoutAlgorithm")});var Cc,FIe,zIe,Im=M(()=>{"use strict";Ti();vt();Cc=o((t,e,r,n)=>{t.attr("class",r);let{width:i,height:a,x:s,y:l}=FIe(t,e);vn(t,a,i,n);let u=zIe(s,l,i,a,e);t.attr("viewBox",u),Y.debug(`viewBox configured: ${u} with padding: ${e}`)},"setupViewPortForSVG"),FIe=o((t,e)=>{let r=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:r.width+e*2,height:r.height+e*2,x:r.x,y:r.y}},"calculateDimensionsWithPadding"),zIe=o((t,e,r,n,i)=>`${t-i} ${e-i} ${r} ${n}`,"createViewBox")});var GIe,$Ie,Aie,_ie=M(()=>{"use strict";hr();Gt();vt();hm();Hd();Im();sr();GIe=o(function(t,e){return e.db.getClasses()},"getClasses"),$Ie=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing state diagram (v2)",e);let{securityLevel:i,flowchart:a,layout:s}=me(),l;i==="sandbox"&&(l=$e("#i"+e));let u=i==="sandbox"?l.nodes()[0].contentDocument:document;Y.debug("Before getData: ");let h=n.db.getData();Y.debug("Data: ",h);let f=gc(e,i),d=n.db.getDirection();h.type=n.type,h.layoutAlgorithm=Jh(s),h.layoutAlgorithm==="dagre"&&s==="elk"&&Y.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),h.direction=d,h.nodeSpacing=a?.nodeSpacing||50,h.rankSpacing=a?.rankSpacing||50,h.markers=["point","circle","cross"],h.diagramId=e,Y.debug("REF1:",h),await Sc(h,f);let p=h.config.flowchart?.diagramPadding??8;$t.insertTitle(f,"flowchartTitleText",a?.titleTopMargin||0,n.db.getDiagramTitle()),Cc(f,p,"flowchart",a?.useMaxWidth||!1);for(let m of h.nodes){let g=$e(`#${e} [id="${m.id}"]`);if(!g||!m.link)continue;let y=u.createElementNS("http://www.w3.org/2000/svg","a");y.setAttributeNS("http://www.w3.org/2000/svg","class",m.cssClasses),y.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),i==="sandbox"?y.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):m.linkTarget&&y.setAttributeNS("http://www.w3.org/2000/svg","target",m.linkTarget);let v=g.insert(function(){return y},":first-child"),x=g.select(".label-container");x&&v.append(function(){return x.node()});let b=g.select(".label");b&&v.append(function(){return b.node()})}},"draw"),Aie={getClasses:GIe,draw:$Ie}});var fR,dR,Die=M(()=>{"use strict";fR=function(){var t=o(function(Ur,et,mt,Kt){for(mt=mt||{},Kt=Ur.length;Kt--;mt[Ur[Kt]]=et);return mt},"o"),e=[1,4],r=[1,3],n=[1,5],i=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],a=[2,2],s=[1,13],l=[1,14],u=[1,15],h=[1,16],f=[1,23],d=[1,25],p=[1,26],m=[1,27],g=[1,49],y=[1,48],v=[1,29],x=[1,30],b=[1,31],w=[1,32],C=[1,33],T=[1,44],E=[1,46],A=[1,42],S=[1,47],_=[1,43],I=[1,50],D=[1,45],k=[1,51],L=[1,52],R=[1,34],O=[1,35],N=[1,36],B=[1,37],F=[1,57],P=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],G=[1,61],z=[1,60],H=[1,62],Q=[8,9,11,75,77,78],j=[1,78],ie=[1,91],ne=[1,96],le=[1,95],he=[1,92],K=[1,88],X=[1,94],te=[1,90],J=[1,97],se=[1,93],ue=[1,98],Z=[1,89],Se=[8,9,10,11,40,75,77,78],ce=[8,9,10,11,40,46,75,77,78],ae=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],Oe=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],ge=[44,60,89,102,105,106,109,111,114,115,116],Ge=[1,121],He=[1,122],ze=[1,124],Re=[1,123],Ie=[44,60,62,74,89,102,105,106,109,111,114,115,116],be=[1,133],W=[1,147],de=[1,148],re=[1,149],oe=[1,150],V=[1,135],xe=[1,137],q=[1,141],pe=[1,142],ve=[1,143],Pe=[1,144],_e=[1,145],we=[1,146],Ve=[1,151],De=[1,152],qe=[1,131],at=[1,132],Lt=[1,139],st=[1,134],Ue=[1,138],ct=[1,136],We=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],ot=[1,154],Yt=[1,156],bt=[8,9,11],Nt=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],xt=[1,176],ut=[1,172],Et=[1,173],ft=[1,177],yt=[1,174],nt=[1,175],dn=[77,116,119],Tt=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],On=[10,106],tn=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],Ar=[1,247],_r=[1,245],Pn=[1,249],At=[1,243],Ce=[1,244],tt=[1,246],St=[1,248],dr=[1,250],rn=[1,268],gn=[8,9,11,106],Qr=[8,9,10,11,60,84,105,106,109,110,111,112],Ri={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1]],performAction:o(function(et,mt,Kt,lt,Cn,ye,zf){var Te=ye.length-1;switch(Cn){case 2:this.$=[];break;case 3:(!Array.isArray(ye[Te])||ye[Te].length>0)&&ye[Te-1].push(ye[Te]),this.$=ye[Te-1];break;case 4:case 183:this.$=ye[Te];break;case 11:lt.setDirection("TB"),this.$="TB";break;case 12:lt.setDirection(ye[Te-1]),this.$=ye[Te-1];break;case 27:this.$=ye[Te-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=lt.addSubGraph(ye[Te-6],ye[Te-1],ye[Te-4]);break;case 34:this.$=lt.addSubGraph(ye[Te-3],ye[Te-1],ye[Te-3]);break;case 35:this.$=lt.addSubGraph(void 0,ye[Te-1],void 0);break;case 37:this.$=ye[Te].trim(),lt.setAccTitle(this.$);break;case 38:case 39:this.$=ye[Te].trim(),lt.setAccDescription(this.$);break;case 43:this.$=ye[Te-1]+ye[Te];break;case 44:this.$=ye[Te];break;case 45:lt.addVertex(ye[Te-1][ye[Te-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,ye[Te]),lt.addLink(ye[Te-3].stmt,ye[Te-1],ye[Te-2]),this.$={stmt:ye[Te-1],nodes:ye[Te-1].concat(ye[Te-3].nodes)};break;case 46:lt.addLink(ye[Te-2].stmt,ye[Te],ye[Te-1]),this.$={stmt:ye[Te],nodes:ye[Te].concat(ye[Te-2].nodes)};break;case 47:lt.addLink(ye[Te-3].stmt,ye[Te-1],ye[Te-2]),this.$={stmt:ye[Te-1],nodes:ye[Te-1].concat(ye[Te-3].nodes)};break;case 48:this.$={stmt:ye[Te-1],nodes:ye[Te-1]};break;case 49:lt.addVertex(ye[Te-1][ye[Te-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,ye[Te]),this.$={stmt:ye[Te-1],nodes:ye[Te-1],shapeData:ye[Te]};break;case 50:this.$={stmt:ye[Te],nodes:ye[Te]};break;case 51:this.$=[ye[Te]];break;case 52:lt.addVertex(ye[Te-5][ye[Te-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,ye[Te-4]),this.$=ye[Te-5].concat(ye[Te]);break;case 53:this.$=ye[Te-4].concat(ye[Te]);break;case 54:this.$=ye[Te];break;case 55:this.$=ye[Te-2],lt.setClass(ye[Te-2],ye[Te]);break;case 56:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"square");break;case 57:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"doublecircle");break;case 58:this.$=ye[Te-5],lt.addVertex(ye[Te-5],ye[Te-2],"circle");break;case 59:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"ellipse");break;case 60:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"stadium");break;case 61:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"subroutine");break;case 62:this.$=ye[Te-7],lt.addVertex(ye[Te-7],ye[Te-1],"rect",void 0,void 0,void 0,Object.fromEntries([[ye[Te-5],ye[Te-3]]]));break;case 63:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"cylinder");break;case 64:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"round");break;case 65:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"diamond");break;case 66:this.$=ye[Te-5],lt.addVertex(ye[Te-5],ye[Te-2],"hexagon");break;case 67:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"odd");break;case 68:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"trapezoid");break;case 69:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"inv_trapezoid");break;case 70:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"lean_right");break;case 71:this.$=ye[Te-3],lt.addVertex(ye[Te-3],ye[Te-1],"lean_left");break;case 72:this.$=ye[Te],lt.addVertex(ye[Te]);break;case 73:ye[Te-1].text=ye[Te],this.$=ye[Te-1];break;case 74:case 75:ye[Te-2].text=ye[Te-1],this.$=ye[Te-2];break;case 76:this.$=ye[Te];break;case 77:var xi=lt.destructLink(ye[Te],ye[Te-2]);this.$={type:xi.type,stroke:xi.stroke,length:xi.length,text:ye[Te-1]};break;case 78:var xi=lt.destructLink(ye[Te],ye[Te-2]);this.$={type:xi.type,stroke:xi.stroke,length:xi.length,text:ye[Te-1],id:ye[Te-3]};break;case 79:this.$={text:ye[Te],type:"text"};break;case 80:this.$={text:ye[Te-1].text+""+ye[Te],type:ye[Te-1].type};break;case 81:this.$={text:ye[Te],type:"string"};break;case 82:this.$={text:ye[Te],type:"markdown"};break;case 83:var xi=lt.destructLink(ye[Te]);this.$={type:xi.type,stroke:xi.stroke,length:xi.length};break;case 84:var xi=lt.destructLink(ye[Te]);this.$={type:xi.type,stroke:xi.stroke,length:xi.length,id:ye[Te-1]};break;case 85:this.$=ye[Te-1];break;case 86:this.$={text:ye[Te],type:"text"};break;case 87:this.$={text:ye[Te-1].text+""+ye[Te],type:ye[Te-1].type};break;case 88:this.$={text:ye[Te],type:"string"};break;case 89:case 104:this.$={text:ye[Te],type:"markdown"};break;case 101:this.$={text:ye[Te],type:"text"};break;case 102:this.$={text:ye[Te-1].text+""+ye[Te],type:ye[Te-1].type};break;case 103:this.$={text:ye[Te],type:"text"};break;case 105:this.$=ye[Te-4],lt.addClass(ye[Te-2],ye[Te]);break;case 106:this.$=ye[Te-4],lt.setClass(ye[Te-2],ye[Te]);break;case 107:case 115:this.$=ye[Te-1],lt.setClickEvent(ye[Te-1],ye[Te]);break;case 108:case 116:this.$=ye[Te-3],lt.setClickEvent(ye[Te-3],ye[Te-2]),lt.setTooltip(ye[Te-3],ye[Te]);break;case 109:this.$=ye[Te-2],lt.setClickEvent(ye[Te-2],ye[Te-1],ye[Te]);break;case 110:this.$=ye[Te-4],lt.setClickEvent(ye[Te-4],ye[Te-3],ye[Te-2]),lt.setTooltip(ye[Te-4],ye[Te]);break;case 111:this.$=ye[Te-2],lt.setLink(ye[Te-2],ye[Te]);break;case 112:this.$=ye[Te-4],lt.setLink(ye[Te-4],ye[Te-2]),lt.setTooltip(ye[Te-4],ye[Te]);break;case 113:this.$=ye[Te-4],lt.setLink(ye[Te-4],ye[Te-2],ye[Te]);break;case 114:this.$=ye[Te-6],lt.setLink(ye[Te-6],ye[Te-4],ye[Te]),lt.setTooltip(ye[Te-6],ye[Te-2]);break;case 117:this.$=ye[Te-1],lt.setLink(ye[Te-1],ye[Te]);break;case 118:this.$=ye[Te-3],lt.setLink(ye[Te-3],ye[Te-2]),lt.setTooltip(ye[Te-3],ye[Te]);break;case 119:this.$=ye[Te-3],lt.setLink(ye[Te-3],ye[Te-2],ye[Te]);break;case 120:this.$=ye[Te-5],lt.setLink(ye[Te-5],ye[Te-4],ye[Te]),lt.setTooltip(ye[Te-5],ye[Te-2]);break;case 121:this.$=ye[Te-4],lt.addVertex(ye[Te-2],void 0,void 0,ye[Te]);break;case 122:this.$=ye[Te-4],lt.updateLink([ye[Te-2]],ye[Te]);break;case 123:this.$=ye[Te-4],lt.updateLink(ye[Te-2],ye[Te]);break;case 124:this.$=ye[Te-8],lt.updateLinkInterpolate([ye[Te-6]],ye[Te-2]),lt.updateLink([ye[Te-6]],ye[Te]);break;case 125:this.$=ye[Te-8],lt.updateLinkInterpolate(ye[Te-6],ye[Te-2]),lt.updateLink(ye[Te-6],ye[Te]);break;case 126:this.$=ye[Te-6],lt.updateLinkInterpolate([ye[Te-4]],ye[Te]);break;case 127:this.$=ye[Te-6],lt.updateLinkInterpolate(ye[Te-4],ye[Te]);break;case 128:case 130:this.$=[ye[Te]];break;case 129:case 131:ye[Te-2].push(ye[Te]),this.$=ye[Te-2];break;case 133:this.$=ye[Te-1]+ye[Te];break;case 181:this.$=ye[Te];break;case 182:this.$=ye[Te-1]+""+ye[Te];break;case 184:this.$=ye[Te-1]+""+ye[Te];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188:this.$={stmt:"dir",value:"LR"};break}},"anonymous"),table:[{3:1,4:2,9:e,10:r,12:n},{1:[3]},t(i,a,{5:6}),{4:7,9:e,10:r,12:n},{4:8,9:e,10:r,12:n},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:w,88:C,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L,121:R,122:O,123:N,124:B},t(i,[2,9]),t(i,[2,10]),t(i,[2,11]),{8:[1,54],9:[1,55],10:F,15:53,18:56},t(P,[2,3]),t(P,[2,4]),t(P,[2,5]),t(P,[2,6]),t(P,[2,7]),t(P,[2,8]),{8:G,9:z,11:H,21:58,41:59,72:63,75:[1,64],77:[1,66],78:[1,65]},{8:G,9:z,11:H,21:67},{8:G,9:z,11:H,21:68},{8:G,9:z,11:H,21:69},{8:G,9:z,11:H,21:70},{8:G,9:z,11:H,21:71},{8:G,9:z,10:[1,72],11:H,21:73},t(P,[2,36]),{35:[1,74]},{37:[1,75]},t(P,[2,39]),t(Q,[2,50],{18:76,39:77,10:F,40:j}),{10:[1,79]},{10:[1,80]},{10:[1,81]},{10:[1,82]},{14:ie,44:ne,60:le,80:[1,86],89:he,95:[1,83],97:[1,84],101:85,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z,120:87},t(P,[2,185]),t(P,[2,186]),t(P,[2,187]),t(P,[2,188]),t(Se,[2,51]),t(Se,[2,54],{46:[1,99]}),t(ce,[2,72],{113:112,29:[1,100],44:g,48:[1,101],50:[1,102],52:[1,103],54:[1,104],56:[1,105],58:[1,106],60:y,63:[1,107],65:[1,108],67:[1,109],68:[1,110],70:[1,111],89:T,102:E,105:A,106:S,109:_,111:I,114:D,115:k,116:L}),t(ae,[2,181]),t(ae,[2,142]),t(ae,[2,143]),t(ae,[2,144]),t(ae,[2,145]),t(ae,[2,146]),t(ae,[2,147]),t(ae,[2,148]),t(ae,[2,149]),t(ae,[2,150]),t(ae,[2,151]),t(ae,[2,152]),t(i,[2,12]),t(i,[2,18]),t(i,[2,19]),{9:[1,113]},t(Oe,[2,26],{18:114,10:F}),t(P,[2,27]),{42:115,43:38,44:g,45:39,47:40,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},t(P,[2,40]),t(P,[2,41]),t(P,[2,42]),t(ge,[2,76],{73:116,62:[1,118],74:[1,117]}),{76:119,79:120,80:Ge,81:He,116:ze,119:Re},{75:[1,125],77:[1,126]},t(Ie,[2,83]),t(P,[2,28]),t(P,[2,29]),t(P,[2,30]),t(P,[2,31]),t(P,[2,32]),{10:be,12:W,14:de,27:re,28:127,32:oe,44:V,60:xe,75:q,80:[1,129],81:[1,130],83:140,84:pe,85:ve,86:Pe,87:_e,88:we,89:Ve,90:De,91:128,105:qe,109:at,111:Lt,114:st,115:Ue,116:ct},t(We,a,{5:153}),t(P,[2,37]),t(P,[2,38]),t(Q,[2,48],{44:ot}),t(Q,[2,49],{18:155,10:F,40:Yt}),t(Se,[2,44]),{44:g,47:157,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},{102:[1,158],103:159,105:[1,160]},{44:g,47:161,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},{44:g,47:162,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},t(bt,[2,107],{10:[1,163],96:[1,164]}),{80:[1,165]},t(bt,[2,115],{120:167,10:[1,166],14:ie,44:ne,60:le,89:he,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z}),t(bt,[2,117],{10:[1,168]}),t(Nt,[2,183]),t(Nt,[2,170]),t(Nt,[2,171]),t(Nt,[2,172]),t(Nt,[2,173]),t(Nt,[2,174]),t(Nt,[2,175]),t(Nt,[2,176]),t(Nt,[2,177]),t(Nt,[2,178]),t(Nt,[2,179]),t(Nt,[2,180]),{44:g,47:169,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},{30:170,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:178,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:180,50:[1,179],67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:181,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:182,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:183,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{109:[1,184]},{30:185,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:186,65:[1,187],67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:188,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:189,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{30:190,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},t(ae,[2,182]),t(i,[2,20]),t(Oe,[2,25]),t(Q,[2,46],{39:191,18:192,10:F,40:j}),t(ge,[2,73],{10:[1,193]}),{10:[1,194]},{30:195,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{77:[1,196],79:197,116:ze,119:Re},t(dn,[2,79]),t(dn,[2,81]),t(dn,[2,82]),t(dn,[2,168]),t(dn,[2,169]),{76:198,79:120,80:Ge,81:He,116:ze,119:Re},t(Ie,[2,84]),{8:G,9:z,10:be,11:H,12:W,14:de,21:200,27:re,29:[1,199],32:oe,44:V,60:xe,75:q,83:140,84:pe,85:ve,86:Pe,87:_e,88:we,89:Ve,90:De,91:201,105:qe,109:at,111:Lt,114:st,115:Ue,116:ct},t(Tt,[2,101]),t(Tt,[2,103]),t(Tt,[2,104]),t(Tt,[2,157]),t(Tt,[2,158]),t(Tt,[2,159]),t(Tt,[2,160]),t(Tt,[2,161]),t(Tt,[2,162]),t(Tt,[2,163]),t(Tt,[2,164]),t(Tt,[2,165]),t(Tt,[2,166]),t(Tt,[2,167]),t(Tt,[2,90]),t(Tt,[2,91]),t(Tt,[2,92]),t(Tt,[2,93]),t(Tt,[2,94]),t(Tt,[2,95]),t(Tt,[2,96]),t(Tt,[2,97]),t(Tt,[2,98]),t(Tt,[2,99]),t(Tt,[2,100]),{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,202],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:w,88:C,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L,121:R,122:O,123:N,124:B},{10:F,18:203},{44:[1,204]},t(Se,[2,43]),{10:[1,205],44:g,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:112,114:D,115:k,116:L},{10:[1,206]},{10:[1,207],106:[1,208]},t(On,[2,128]),{10:[1,209],44:g,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:112,114:D,115:k,116:L},{10:[1,210],44:g,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:112,114:D,115:k,116:L},{80:[1,211]},t(bt,[2,109],{10:[1,212]}),t(bt,[2,111],{10:[1,213]}),{80:[1,214]},t(Nt,[2,184]),{80:[1,215],98:[1,216]},t(Se,[2,55],{113:112,44:g,60:y,89:T,102:E,105:A,106:S,109:_,111:I,114:D,115:k,116:L}),{31:[1,217],67:xt,82:218,116:ft,117:yt,118:nt},t(tn,[2,86]),t(tn,[2,88]),t(tn,[2,89]),t(tn,[2,153]),t(tn,[2,154]),t(tn,[2,155]),t(tn,[2,156]),{49:[1,219],67:xt,82:218,116:ft,117:yt,118:nt},{30:220,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{51:[1,221],67:xt,82:218,116:ft,117:yt,118:nt},{53:[1,222],67:xt,82:218,116:ft,117:yt,118:nt},{55:[1,223],67:xt,82:218,116:ft,117:yt,118:nt},{57:[1,224],67:xt,82:218,116:ft,117:yt,118:nt},{60:[1,225]},{64:[1,226],67:xt,82:218,116:ft,117:yt,118:nt},{66:[1,227],67:xt,82:218,116:ft,117:yt,118:nt},{30:228,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},{31:[1,229],67:xt,82:218,116:ft,117:yt,118:nt},{67:xt,69:[1,230],71:[1,231],82:218,116:ft,117:yt,118:nt},{67:xt,69:[1,233],71:[1,232],82:218,116:ft,117:yt,118:nt},t(Q,[2,45],{18:155,10:F,40:Yt}),t(Q,[2,47],{44:ot}),t(ge,[2,75]),t(ge,[2,74]),{62:[1,234],67:xt,82:218,116:ft,117:yt,118:nt},t(ge,[2,77]),t(dn,[2,80]),{77:[1,235],79:197,116:ze,119:Re},{30:236,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},t(We,a,{5:237}),t(Tt,[2,102]),t(P,[2,35]),{43:238,44:g,45:39,47:40,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},{10:F,18:239},{10:Ar,60:_r,84:Pn,92:240,105:At,107:241,108:242,109:Ce,110:tt,111:St,112:dr},{10:Ar,60:_r,84:Pn,92:251,104:[1,252],105:At,107:241,108:242,109:Ce,110:tt,111:St,112:dr},{10:Ar,60:_r,84:Pn,92:253,104:[1,254],105:At,107:241,108:242,109:Ce,110:tt,111:St,112:dr},{105:[1,255]},{10:Ar,60:_r,84:Pn,92:256,105:At,107:241,108:242,109:Ce,110:tt,111:St,112:dr},{44:g,47:257,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},t(bt,[2,108]),{80:[1,258]},{80:[1,259],98:[1,260]},t(bt,[2,116]),t(bt,[2,118],{10:[1,261]}),t(bt,[2,119]),t(ce,[2,56]),t(tn,[2,87]),t(ce,[2,57]),{51:[1,262],67:xt,82:218,116:ft,117:yt,118:nt},t(ce,[2,64]),t(ce,[2,59]),t(ce,[2,60]),t(ce,[2,61]),{109:[1,263]},t(ce,[2,63]),t(ce,[2,65]),{66:[1,264],67:xt,82:218,116:ft,117:yt,118:nt},t(ce,[2,67]),t(ce,[2,68]),t(ce,[2,70]),t(ce,[2,69]),t(ce,[2,71]),t([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),t(ge,[2,78]),{31:[1,265],67:xt,82:218,116:ft,117:yt,118:nt},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,266],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:w,88:C,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L,121:R,122:O,123:N,124:B},t(Se,[2,53]),{43:267,44:g,45:39,47:40,60:y,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L},t(bt,[2,121],{106:rn}),t(gn,[2,130],{108:269,10:Ar,60:_r,84:Pn,105:At,109:Ce,110:tt,111:St,112:dr}),t(Qr,[2,132]),t(Qr,[2,134]),t(Qr,[2,135]),t(Qr,[2,136]),t(Qr,[2,137]),t(Qr,[2,138]),t(Qr,[2,139]),t(Qr,[2,140]),t(Qr,[2,141]),t(bt,[2,122],{106:rn}),{10:[1,270]},t(bt,[2,123],{106:rn}),{10:[1,271]},t(On,[2,129]),t(bt,[2,105],{106:rn}),t(bt,[2,106],{113:112,44:g,60:y,89:T,102:E,105:A,106:S,109:_,111:I,114:D,115:k,116:L}),t(bt,[2,110]),t(bt,[2,112],{10:[1,272]}),t(bt,[2,113]),{98:[1,273]},{51:[1,274]},{62:[1,275]},{66:[1,276]},{8:G,9:z,11:H,21:277},t(P,[2,34]),t(Se,[2,52]),{10:Ar,60:_r,84:Pn,105:At,107:278,108:242,109:Ce,110:tt,111:St,112:dr},t(Qr,[2,133]),{14:ie,44:ne,60:le,89:he,101:279,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z,120:87},{14:ie,44:ne,60:le,89:he,101:280,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z,120:87},{98:[1,281]},t(bt,[2,120]),t(ce,[2,58]),{30:282,67:xt,80:ut,81:Et,82:171,116:ft,117:yt,118:nt},t(ce,[2,66]),t(We,a,{5:283}),t(gn,[2,131],{108:269,10:Ar,60:_r,84:Pn,105:At,109:Ce,110:tt,111:St,112:dr}),t(bt,[2,126],{120:167,10:[1,284],14:ie,44:ne,60:le,89:he,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z}),t(bt,[2,127],{120:167,10:[1,285],14:ie,44:ne,60:le,89:he,105:K,106:X,109:te,111:J,114:se,115:ue,116:Z}),t(bt,[2,114]),{31:[1,286],67:xt,82:218,116:ft,117:yt,118:nt},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,287],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:w,88:C,89:T,102:E,105:A,106:S,109:_,111:I,113:41,114:D,115:k,116:L,121:R,122:O,123:N,124:B},{10:Ar,60:_r,84:Pn,92:288,105:At,107:241,108:242,109:Ce,110:tt,111:St,112:dr},{10:Ar,60:_r,84:Pn,92:289,105:At,107:241,108:242,109:Ce,110:tt,111:St,112:dr},t(ce,[2,62]),t(P,[2,33]),t(bt,[2,124],{106:rn}),t(bt,[2,125],{106:rn})],defaultActions:{},parseError:o(function(et,mt){if(mt.recoverable)this.trace(et);else{var Kt=new Error(et);throw Kt.hash=mt,Kt}},"parseError"),parse:o(function(et){var mt=this,Kt=[0],lt=[],Cn=[null],ye=[],zf=this.table,Te="",xi=0,cF=0,uF=0,a2e=2,hF=1,s2e=ye.slice.call(arguments,1),Yi=Object.create(this.lexer),Gf={yy:{}};for(var aC in this.yy)Object.prototype.hasOwnProperty.call(this.yy,aC)&&(Gf.yy[aC]=this.yy[aC]);Yi.setInput(et,Gf.yy),Gf.yy.lexer=Yi,Gf.yy.parser=this,typeof Yi.yylloc>"u"&&(Yi.yylloc={});var sC=Yi.yylloc;ye.push(sC);var o2e=Yi.options&&Yi.options.ranges;typeof Gf.yy.parseError=="function"?this.parseError=Gf.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function wrt(Gs){Kt.length=Kt.length-2*Gs,Cn.length=Cn.length-Gs,ye.length=ye.length-Gs}o(wrt,"popStack");function l2e(){var Gs;return Gs=lt.pop()||Yi.lex()||hF,typeof Gs!="number"&&(Gs instanceof Array&&(lt=Gs,Gs=lt.pop()),Gs=mt.symbols_[Gs]||Gs),Gs}o(l2e,"lex");for(var Ha,oC,$f,mo,Trt,lC,jp={},m4,Kc,fF,g4;;){if($f=Kt[Kt.length-1],this.defaultActions[$f]?mo=this.defaultActions[$f]:((Ha===null||typeof Ha>"u")&&(Ha=l2e()),mo=zf[$f]&&zf[$f][Ha]),typeof mo>"u"||!mo.length||!mo[0]){var cC="";g4=[];for(m4 in zf[$f])this.terminals_[m4]&&m4>a2e&&g4.push("'"+this.terminals_[m4]+"'");Yi.showPosition?cC="Parse error on line "+(xi+1)+`: +`+Yi.showPosition()+` +Expecting `+g4.join(", ")+", got '"+(this.terminals_[Ha]||Ha)+"'":cC="Parse error on line "+(xi+1)+": Unexpected "+(Ha==hF?"end of input":"'"+(this.terminals_[Ha]||Ha)+"'"),this.parseError(cC,{text:Yi.match,token:this.terminals_[Ha]||Ha,line:Yi.yylineno,loc:sC,expected:g4})}if(mo[0]instanceof Array&&mo.length>1)throw new Error("Parse Error: multiple actions possible at state: "+$f+", token: "+Ha);switch(mo[0]){case 1:Kt.push(Ha),Cn.push(Yi.yytext),ye.push(Yi.yylloc),Kt.push(mo[1]),Ha=null,oC?(Ha=oC,oC=null):(cF=Yi.yyleng,Te=Yi.yytext,xi=Yi.yylineno,sC=Yi.yylloc,uF>0&&uF--);break;case 2:if(Kc=this.productions_[mo[1]][1],jp.$=Cn[Cn.length-Kc],jp._$={first_line:ye[ye.length-(Kc||1)].first_line,last_line:ye[ye.length-1].last_line,first_column:ye[ye.length-(Kc||1)].first_column,last_column:ye[ye.length-1].last_column},o2e&&(jp._$.range=[ye[ye.length-(Kc||1)].range[0],ye[ye.length-1].range[1]]),lC=this.performAction.apply(jp,[Te,cF,xi,Gf.yy,mo[1],Cn,ye].concat(s2e)),typeof lC<"u")return lC;Kc&&(Kt=Kt.slice(0,-1*Kc*2),Cn=Cn.slice(0,-1*Kc),ye=ye.slice(0,-1*Kc)),Kt.push(this.productions_[mo[1]][0]),Cn.push(jp.$),ye.push(jp._$),fF=zf[Kt[Kt.length-2]][Kt[Kt.length-1]],Kt.push(fF);break;case 3:return!0}}return!0},"parse")},Zn=function(){var Ur={EOF:1,parseError:o(function(mt,Kt){if(this.yy.parser)this.yy.parser.parseError(mt,Kt);else throw new Error(mt)},"parseError"),setInput:o(function(et,mt){return this.yy=mt||this.yy||{},this._input=et,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var et=this._input[0];this.yytext+=et,this.yyleng++,this.offset++,this.match+=et,this.matched+=et;var mt=et.match(/(?:\r\n?|\n).*/g);return mt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),et},"input"),unput:o(function(et){var mt=et.length,Kt=et.split(/(?:\r\n?|\n)/g);this._input=et+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-mt),this.offset-=mt;var lt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Kt.length-1&&(this.yylineno-=Kt.length-1);var Cn=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Kt?(Kt.length===lt.length?this.yylloc.first_column:0)+lt[lt.length-Kt.length].length-Kt[0].length:this.yylloc.first_column-mt},this.options.ranges&&(this.yylloc.range=[Cn[0],Cn[0]+this.yyleng-mt]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(et){this.unput(this.match.slice(et))},"less"),pastInput:o(function(){var et=this.matched.substr(0,this.matched.length-this.match.length);return(et.length>20?"...":"")+et.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var et=this.match;return et.length<20&&(et+=this._input.substr(0,20-et.length)),(et.substr(0,20)+(et.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var et=this.pastInput(),mt=new Array(et.length+1).join("-");return et+this.upcomingInput()+` +`+mt+"^"},"showPosition"),test_match:o(function(et,mt){var Kt,lt,Cn;if(this.options.backtrack_lexer&&(Cn={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Cn.yylloc.range=this.yylloc.range.slice(0))),lt=et[0].match(/(?:\r\n?|\n).*/g),lt&&(this.yylineno+=lt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:lt?lt[lt.length-1].length-lt[lt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+et[0].length},this.yytext+=et[0],this.match+=et[0],this.matches=et,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(et[0].length),this.matched+=et[0],Kt=this.performAction.call(this,this.yy,this,mt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Kt)return Kt;if(this._backtrack){for(var ye in Cn)this[ye]=Cn[ye];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var et,mt,Kt,lt;this._more||(this.yytext="",this.match="");for(var Cn=this._currentRules(),ye=0;yemt[0].length)){if(mt=Kt,lt=ye,this.options.backtrack_lexer){if(et=this.test_match(Kt,Cn[ye]),et!==!1)return et;if(this._backtrack){mt=!1;continue}else return!1}else if(!this.options.flex)break}return mt?(et=this.test_match(mt,Cn[lt]),et!==!1?et:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var mt=this.next();return mt||this.lex()},"lex"),begin:o(function(mt){this.conditionStack.push(mt)},"begin"),popState:o(function(){var mt=this.conditionStack.length-1;return mt>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(mt){return mt=this.conditionStack.length-1-Math.abs(mt||0),mt>=0?this.conditionStack[mt]:"INITIAL"},"topState"),pushState:o(function(mt){this.begin(mt)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(mt,Kt,lt,Cn){var ye=Cn;switch(lt){case 0:return this.begin("acc_title"),34;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),36;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),Kt.yytext="",40;break;case 8:return this.pushState("shapeDataStr"),40;break;case 9:return this.popState(),40;break;case 10:let zf=/\n\s*/g;return Kt.yytext=Kt.yytext.replace(zf,"
    "),40;break;case 11:return 40;case 12:this.popState();break;case 13:this.begin("callbackname");break;case 14:this.popState();break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 95;case 17:this.popState();break;case 18:return 96;case 19:return"MD_STR";case 20:this.popState();break;case 21:this.begin("md_string");break;case 22:return"STR";case 23:this.popState();break;case 24:this.pushState("string");break;case 25:return 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 33:this.popState();break;case 34:return 88;case 35:return mt.lex.firstGraph()&&this.begin("dir"),12;break;case 36:return mt.lex.firstGraph()&&this.begin("dir"),12;break;case 37:return mt.lex.firstGraph()&&this.begin("dir"),12;break;case 38:return 27;case 39:return 32;case 40:return 98;case 41:return 98;case 42:return 98;case 43:return 98;case 44:return this.popState(),13;break;case 45:return this.popState(),14;break;case 46:return this.popState(),14;break;case 47:return this.popState(),14;break;case 48:return this.popState(),14;break;case 49:return this.popState(),14;break;case 50:return this.popState(),14;break;case 51:return this.popState(),14;break;case 52:return this.popState(),14;break;case 53:return this.popState(),14;break;case 54:return this.popState(),14;break;case 55:return 121;case 56:return 122;case 57:return 123;case 58:return 124;case 59:return 78;case 60:return 105;case 61:return 111;case 62:return 46;case 63:return 60;case 64:return 44;case 65:return 8;case 66:return 106;case 67:return 115;case 68:return this.popState(),77;break;case 69:return this.pushState("edgeText"),75;break;case 70:return 119;case 71:return this.popState(),77;break;case 72:return this.pushState("thickEdgeText"),75;break;case 73:return 119;case 74:return this.popState(),77;break;case 75:return this.pushState("dottedEdgeText"),75;break;case 76:return 119;case 77:return 77;case 78:return this.popState(),53;break;case 79:return"TEXT";case 80:return this.pushState("ellipseText"),52;break;case 81:return this.popState(),55;break;case 82:return this.pushState("text"),54;break;case 83:return this.popState(),57;break;case 84:return this.pushState("text"),56;break;case 85:return 58;case 86:return this.pushState("text"),67;break;case 87:return this.popState(),64;break;case 88:return this.pushState("text"),63;break;case 89:return this.popState(),49;break;case 90:return this.pushState("text"),48;break;case 91:return this.popState(),69;break;case 92:return this.popState(),71;break;case 93:return 117;case 94:return this.pushState("trapText"),68;break;case 95:return this.pushState("trapText"),70;break;case 96:return 118;case 97:return 67;case 98:return 90;case 99:return"SEP";case 100:return 89;case 101:return 115;case 102:return 111;case 103:return 44;case 104:return 109;case 105:return 114;case 106:return 116;case 107:return this.popState(),62;break;case 108:return this.pushState("text"),62;break;case 109:return this.popState(),51;break;case 110:return this.pushState("text"),50;break;case 111:return this.popState(),31;break;case 112:return this.pushState("text"),29;break;case 113:return this.popState(),66;break;case 114:return this.pushState("text"),65;break;case 115:return"TEXT";case 116:return"QUOTE";case 117:return 9;case 118:return 10;case 119:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeData:{rules:[8,11,12,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackargs:{rules:[17,18,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackname:{rules:[14,15,16,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},href:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},click:{rules:[21,24,33,34,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dottedEdgeText:{rules:[21,24,74,76,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},thickEdgeText:{rules:[21,24,71,73,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},edgeText:{rules:[21,24,68,70,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},trapText:{rules:[21,24,77,80,82,84,88,90,91,92,93,94,95,108,110,112,114],inclusive:!1},ellipseText:{rules:[21,24,77,78,79,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},text:{rules:[21,24,77,80,81,82,83,84,87,88,89,90,94,95,107,108,109,110,111,112,113,114,115],inclusive:!1},vertex:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr:{rules:[3,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_title:{rules:[1,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},md_string:{rules:[19,20,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},string:{rules:[21,22,23,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,71,72,74,75,77,80,82,84,85,86,88,90,94,95,96,97,98,99,100,101,102,103,104,105,106,108,110,112,114,116,117,118,119],inclusive:!0}}};return Ur}();Ri.lexer=Zn;function Sn(){this.yy={}}return o(Sn,"Parser"),Sn.prototype=Ri,Ri.Parser=Sn,new Sn}();fR.parser=fR;dR=fR});var Lie,Rie,Nie=M(()=>{"use strict";Die();Lie=Object.assign({},dR);Lie.parse=t=>{let e=t.replace(/}\s*\n/g,`} +`);return dR.parse(e)};Rie=Lie});var VIe,UIe,Mie,Iie=M(()=>{"use strict";Vs();VIe=o((t,e)=>{let r=Yf,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return Wa(n,i,a,e)},"fade"),UIe=o(t=>`.label { font-family: ${t.fontFamily}; color: ${t.nodeTextColor||t.textColor}; } @@ -542,7 +567,7 @@ Expecting `+Sb.join(", ")+", got '"+(this.terminals_[Va]||Va)+"'":bS="Parse erro /* For html labels only */ .labelBkg { - background-color: ${uPe(t.edgeLabelBackground,.5)}; + background-color: ${VIe(t.edgeLabelBackground,.5)}; // background-color: } @@ -601,27 +626,17 @@ Expecting `+Sb.join(", ")+", got '"+(this.terminals_[Va]||Va)+"'":bS="Parse erro } text-align: center; } -`,"getStyles"),qie=hPe});var hT={};vr(hT,{diagram:()=>fPe});var fPe,fT=M(()=>{"use strict";Vt();oL();Hie();Yie();Xie();fPe={parser:Wie,db:X5,renderer:Uie,styles:qie,init:o(t=>{t.flowchart||(t.flowchart={}),t.layout&&n7({layout:t.layout}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,n7({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}}),X5.clear(),X5.setGen("gen-2")},"init")}});var _D,Jie,eae=M(()=>{"use strict";_D=function(){var t=o(function(C,A,I,D){for(I=I||{},D=C.length;D--;I[C[D]]=A);return I},"o"),e=[6,8,10,20,22,24,26,27,28],r=[1,10],n=[1,11],i=[1,12],a=[1,13],s=[1,14],l=[1,15],u=[1,21],h=[1,22],f=[1,23],d=[1,24],p=[1,25],m=[6,8,10,13,15,18,19,20,22,24,26,27,28,41,42,43,44,45],g=[1,34],y=[27,28,46,47],v=[41,42,43,44,45],x=[17,34],b=[1,54],w=[1,53],_=[17,34,36,38],T={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,":":13,role:14,BLOCK_START:15,attributes:16,BLOCK_STOP:17,SQS:18,SQE:19,title:20,title_value:21,acc_title:22,acc_title_value:23,acc_descr:24,acc_descr_value:25,acc_descr_multiline_value:26,ALPHANUM:27,ENTITY_NAME:28,attribute:29,attributeType:30,attributeName:31,attributeKeyTypeList:32,attributeComment:33,ATTRIBUTE_WORD:34,attributeKeyType:35,COMMA:36,ATTRIBUTE_KEY:37,COMMENT:38,cardinality:39,relType:40,ZERO_OR_ONE:41,ZERO_OR_MORE:42,ONE_OR_MORE:43,ONLY_ONE:44,MD_PARENT:45,NON_IDENTIFYING:46,IDENTIFYING:47,WORD:48,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:":",15:"BLOCK_START",17:"BLOCK_STOP",18:"SQS",19:"SQE",20:"title",21:"title_value",22:"acc_title",23:"acc_title_value",24:"acc_descr",25:"acc_descr_value",26:"acc_descr_multiline_value",27:"ALPHANUM",28:"ENTITY_NAME",34:"ATTRIBUTE_WORD",36:"COMMA",37:"ATTRIBUTE_KEY",38:"COMMENT",41:"ZERO_OR_ONE",42:"ZERO_OR_MORE",43:"ONE_OR_MORE",44:"ONLY_ONE",45:"MD_PARENT",46:"NON_IDENTIFYING",47:"IDENTIFYING",48:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,4],[9,3],[9,1],[9,7],[9,6],[9,4],[9,2],[9,2],[9,2],[9,1],[11,1],[11,1],[16,1],[16,2],[29,2],[29,3],[29,3],[29,4],[30,1],[31,1],[32,1],[32,3],[35,1],[33,1],[12,3],[39,1],[39,1],[39,1],[39,1],[39,1],[40,1],[40,1],[14,1],[14,1],[14,1]],performAction:o(function(A,I,D,k,R,S,O){var N=S.length-1;switch(R){case 1:break;case 2:this.$=[];break;case 3:S[N-1].push(S[N]),this.$=S[N-1];break;case 4:case 5:this.$=S[N];break;case 6:case 7:this.$=[];break;case 8:k.addEntity(S[N-4]),k.addEntity(S[N-2]),k.addRelationship(S[N-4],S[N],S[N-2],S[N-3]);break;case 9:k.addEntity(S[N-3]),k.addAttributes(S[N-3],S[N-1]);break;case 10:k.addEntity(S[N-2]);break;case 11:k.addEntity(S[N]);break;case 12:k.addEntity(S[N-6],S[N-4]),k.addAttributes(S[N-6],S[N-1]);break;case 13:k.addEntity(S[N-5],S[N-3]);break;case 14:k.addEntity(S[N-3],S[N-1]);break;case 15:case 16:this.$=S[N].trim(),k.setAccTitle(this.$);break;case 17:case 18:this.$=S[N].trim(),k.setAccDescription(this.$);break;case 19:case 43:this.$=S[N];break;case 20:case 41:case 42:this.$=S[N].replace(/"/g,"");break;case 21:case 29:this.$=[S[N]];break;case 22:S[N].push(S[N-1]),this.$=S[N];break;case 23:this.$={attributeType:S[N-1],attributeName:S[N]};break;case 24:this.$={attributeType:S[N-2],attributeName:S[N-1],attributeKeyTypeList:S[N]};break;case 25:this.$={attributeType:S[N-2],attributeName:S[N-1],attributeComment:S[N]};break;case 26:this.$={attributeType:S[N-3],attributeName:S[N-2],attributeKeyTypeList:S[N-1],attributeComment:S[N]};break;case 27:case 28:case 31:this.$=S[N];break;case 30:S[N-2].push(S[N]),this.$=S[N-2];break;case 32:this.$=S[N].replace(/"/g,"");break;case 33:this.$={cardA:S[N],relType:S[N-1],cardB:S[N-2]};break;case 34:this.$=k.Cardinality.ZERO_OR_ONE;break;case 35:this.$=k.Cardinality.ZERO_OR_MORE;break;case 36:this.$=k.Cardinality.ONE_OR_MORE;break;case 37:this.$=k.Cardinality.ONLY_ONE;break;case 38:this.$=k.Cardinality.MD_PARENT;break;case 39:this.$=k.Identification.NON_IDENTIFYING;break;case 40:this.$=k.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,20:r,22:n,24:i,26:a,27:s,28:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:16,11:9,20:r,22:n,24:i,26:a,27:s,28:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,11],{12:17,39:20,15:[1,18],18:[1,19],41:u,42:h,43:f,44:d,45:p}),{21:[1,26]},{23:[1,27]},{25:[1,28]},t(e,[2,18]),t(m,[2,19]),t(m,[2,20]),t(e,[2,4]),{11:29,27:s,28:l},{16:30,17:[1,31],29:32,30:33,34:g},{11:35,27:s,28:l},{40:36,46:[1,37],47:[1,38]},t(y,[2,34]),t(y,[2,35]),t(y,[2,36]),t(y,[2,37]),t(y,[2,38]),t(e,[2,15]),t(e,[2,16]),t(e,[2,17]),{13:[1,39]},{17:[1,40]},t(e,[2,10]),{16:41,17:[2,21],29:32,30:33,34:g},{31:42,34:[1,43]},{34:[2,27]},{19:[1,44]},{39:45,41:u,42:h,43:f,44:d,45:p},t(v,[2,39]),t(v,[2,40]),{14:46,27:[1,49],28:[1,48],48:[1,47]},t(e,[2,9]),{17:[2,22]},t(x,[2,23],{32:50,33:51,35:52,37:b,38:w}),t([17,34,37,38],[2,28]),t(e,[2,14],{15:[1,55]}),t([27,28],[2,33]),t(e,[2,8]),t(e,[2,41]),t(e,[2,42]),t(e,[2,43]),t(x,[2,24],{33:56,36:[1,57],38:w}),t(x,[2,25]),t(_,[2,29]),t(x,[2,32]),t(_,[2,31]),{16:58,17:[1,59],29:32,30:33,34:g},t(x,[2,26]),{35:60,37:b},{17:[1,61]},t(e,[2,13]),t(_,[2,30]),t(e,[2,12])],defaultActions:{34:[2,27],41:[2,22]},parseError:o(function(A,I){if(I.recoverable)this.trace(A);else{var D=new Error(A);throw D.hash=I,D}},"parseError"),parse:o(function(A){var I=this,D=[0],k=[],R=[null],S=[],O=this.table,N="",P=0,F=0,B=0,$=2,z=1,W=S.slice.call(arguments,1),j=Object.create(this.lexer),K={yy:{}};for(var ie in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ie)&&(K.yy[ie]=this.yy[ie]);j.setInput(A,K.yy),K.yy.lexer=j,K.yy.parser=this,typeof j.yylloc>"u"&&(j.yylloc={});var Q=j.yylloc;S.push(Q);var ee=j.options&&j.options.ranges;typeof K.yy.parseError=="function"?this.parseError=K.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function J(Ge){D.length=D.length-2*Ge,R.length=R.length-Ge,S.length=S.length-Ge}o(J,"popStack");function H(){var Ge;return Ge=k.pop()||j.lex()||z,typeof Ge!="number"&&(Ge instanceof Array&&(k=Ge,Ge=k.pop()),Ge=I.symbols_[Ge]||Ge),Ge}o(H,"lex");for(var q,Z,ae,ue,ce,te,De={},oe,ke,Fe,Be;;){if(ae=D[D.length-1],this.defaultActions[ae]?ue=this.defaultActions[ae]:((q===null||typeof q>"u")&&(q=H()),ue=O[ae]&&O[ae][q]),typeof ue>"u"||!ue.length||!ue[0]){var Ve="";Be=[];for(oe in O[ae])this.terminals_[oe]&&oe>$&&Be.push("'"+this.terminals_[oe]+"'");j.showPosition?Ve="Parse error on line "+(P+1)+`: -`+j.showPosition()+` -Expecting `+Be.join(", ")+", got '"+(this.terminals_[q]||q)+"'":Ve="Parse error on line "+(P+1)+": Unexpected "+(q==z?"end of input":"'"+(this.terminals_[q]||q)+"'"),this.parseError(Ve,{text:j.match,token:this.terminals_[q]||q,line:j.yylineno,loc:Q,expected:Be})}if(ue[0]instanceof Array&&ue.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ae+", token: "+q);switch(ue[0]){case 1:D.push(q),R.push(j.yytext),S.push(j.yylloc),D.push(ue[1]),q=null,Z?(q=Z,Z=null):(F=j.yyleng,N=j.yytext,P=j.yylineno,Q=j.yylloc,B>0&&B--);break;case 2:if(ke=this.productions_[ue[1]][1],De.$=R[R.length-ke],De._$={first_line:S[S.length-(ke||1)].first_line,last_line:S[S.length-1].last_line,first_column:S[S.length-(ke||1)].first_column,last_column:S[S.length-1].last_column},ee&&(De._$.range=[S[S.length-(ke||1)].range[0],S[S.length-1].range[1]]),te=this.performAction.apply(De,[N,F,P,K.yy,ue[1],R,S].concat(W)),typeof te<"u")return te;ke&&(D=D.slice(0,-1*ke*2),R=R.slice(0,-1*ke),S=S.slice(0,-1*ke)),D.push(this.productions_[ue[1]][0]),R.push(De.$),S.push(De._$),Fe=O[D[D.length-2]][D[D.length-1]],D.push(Fe);break;case 3:return!0}}return!0},"parse")},E=function(){var C={EOF:1,parseError:o(function(I,D){if(this.yy.parser)this.yy.parser.parseError(I,D);else throw new Error(I)},"parseError"),setInput:o(function(A,I){return this.yy=I||this.yy||{},this._input=A,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var A=this._input[0];this.yytext+=A,this.yyleng++,this.offset++,this.match+=A,this.matched+=A;var I=A.match(/(?:\r\n?|\n).*/g);return I?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),A},"input"),unput:o(function(A){var I=A.length,D=A.split(/(?:\r\n?|\n)/g);this._input=A+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-I),this.offset-=I;var k=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),D.length-1&&(this.yylineno-=D.length-1);var R=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:D?(D.length===k.length?this.yylloc.first_column:0)+k[k.length-D.length].length-D[0].length:this.yylloc.first_column-I},this.options.ranges&&(this.yylloc.range=[R[0],R[0]+this.yyleng-I]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(A){this.unput(this.match.slice(A))},"less"),pastInput:o(function(){var A=this.matched.substr(0,this.matched.length-this.match.length);return(A.length>20?"...":"")+A.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var A=this.match;return A.length<20&&(A+=this._input.substr(0,20-A.length)),(A.substr(0,20)+(A.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var A=this.pastInput(),I=new Array(A.length+1).join("-");return A+this.upcomingInput()+` -`+I+"^"},"showPosition"),test_match:o(function(A,I){var D,k,R;if(this.options.backtrack_lexer&&(R={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(R.yylloc.range=this.yylloc.range.slice(0))),k=A[0].match(/(?:\r\n?|\n).*/g),k&&(this.yylineno+=k.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:k?k[k.length-1].length-k[k.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+A[0].length},this.yytext+=A[0],this.match+=A[0],this.matches=A,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(A[0].length),this.matched+=A[0],D=this.performAction.call(this,this.yy,this,I,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),D)return D;if(this._backtrack){for(var S in R)this[S]=R[S];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var A,I,D,k;this._more||(this.yytext="",this.match="");for(var R=this._currentRules(),S=0;SI[0].length)){if(I=D,k=S,this.options.backtrack_lexer){if(A=this.test_match(D,R[S]),A!==!1)return A;if(this._backtrack){I=!1;continue}else return!1}else if(!this.options.flex)break}return I?(A=this.test_match(I,R[k]),A!==!1?A:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var I=this.next();return I||this.lex()},"lex"),begin:o(function(I){this.conditionStack.push(I)},"begin"),popState:o(function(){var I=this.conditionStack.length-1;return I>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(I){return I=this.conditionStack.length-1-Math.abs(I||0),I>=0?this.conditionStack[I]:"INITIAL"},"topState"),pushState:o(function(I){this.begin(I)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(I,D,k,R){var S=R;switch(k){case 0:return this.begin("acc_title"),22;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),24;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 10;case 8:break;case 9:return 8;case 10:return 28;case 11:return 48;case 12:return 4;case 13:return this.begin("block"),15;break;case 14:return 36;case 15:break;case 16:return 37;case 17:return 34;case 18:return 34;case 19:return 38;case 20:break;case 21:return this.popState(),17;break;case 22:return D.yytext[0];case 23:return 18;case 24:return 19;case 25:return 41;case 26:return 43;case 27:return 43;case 28:return 43;case 29:return 41;case 30:return 41;case 31:return 42;case 32:return 42;case 33:return 42;case 34:return 42;case 35:return 42;case 36:return 43;case 37:return 42;case 38:return 43;case 39:return 44;case 40:return 44;case 41:return 44;case 42:return 44;case 43:return 41;case 44:return 42;case 45:return 43;case 46:return 45;case 47:return 46;case 48:return 47;case 49:return 47;case 50:return 46;case 51:return 46;case 52:return 46;case 53:return 27;case 54:return D.yytext[0];case 55:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:,)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[\*A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z_][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[14,15,16,17,18,19,20,21,22],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],inclusive:!0}}};return C}();T.lexer=E;function L(){this.yy={}}return o(L,"Parser"),L.prototype=T,T.Parser=L,new L}();_D.parser=_D;Jie=_D});var Gd,LD,xPe,bPe,tae,wPe,TPe,kPe,EPe,SPe,rae,nae=M(()=>{"use strict";ht();Vt();ki();Gd=new Map,LD=[],xPe={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},bPe={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},tae=o(function(t,e=void 0){return Gd.has(t)?!Gd.get(t).alias&&e&&(Gd.get(t).alias=e,Y.info(`Add alias '${e}' to entity '${t}'`)):(Gd.set(t,{attributes:[],alias:e}),Y.info("Added new entity :",t)),Gd.get(t)},"addEntity"),wPe=o(()=>Gd,"getEntities"),TPe=o(function(t,e){let r=tae(t),n;for(n=e.length-1;n>=0;n--)r.attributes.push(e[n]),Y.debug("Added attribute ",e[n].attributeName)},"addAttributes"),kPe=o(function(t,e,r,n){let i={entityA:t,roleA:e,entityB:r,relSpec:n};LD.push(i),Y.debug("Added new relationship :",i)},"addRelationship"),EPe=o(()=>LD,"getRelationships"),SPe=o(function(){Gd=new Map,LD=[],_r()},"clear"),rae={Cardinality:xPe,Identification:bPe,getConfig:o(()=>de().er,"getConfig"),addEntity:tae,addAttributes:TPe,getEntities:wPe,addRelationship:kPe,getRelationships:EPe,clear:SPe,setAccTitle:Rr,getAccTitle:Pr,setAccDescription:Br,getAccDescription:Fr,setDiagramTitle:ln,getDiagramTitle:Jr}});var Rl,CPe,Wo,iae=M(()=>{"use strict";Rl={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END",MD_PARENT_END:"MD_PARENT_END",MD_PARENT_START:"MD_PARENT_START"},CPe=o(function(t,e){let r;t.append("defs").append("marker").attr("id",Rl.MD_PARENT_START).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",Rl.MD_PARENT_END).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",Rl.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",Rl.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),r=t.append("defs").append("marker").attr("id",Rl.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),r=t.append("defs").append("marker").attr("id",Rl.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",Rl.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",Rl.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),r=t.append("defs").append("marker").attr("id",Rl.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),r=t.append("defs").append("marker").attr("id",Rl.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"insertMarkers"),Wo={ERMarkers:Rl,insertMarkers:CPe}});var aae,sae=M(()=>{"use strict";aae=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i});function APe(t){return typeof t=="string"&&aae.test(t)}var oae,lae=M(()=>{"use strict";sae();o(APe,"validate");oae=APe});function cae(t,e=0){return pa[t[e+0]]+pa[t[e+1]]+pa[t[e+2]]+pa[t[e+3]]+"-"+pa[t[e+4]]+pa[t[e+5]]+"-"+pa[t[e+6]]+pa[t[e+7]]+"-"+pa[t[e+8]]+pa[t[e+9]]+"-"+pa[t[e+10]]+pa[t[e+11]]+pa[t[e+12]]+pa[t[e+13]]+pa[t[e+14]]+pa[t[e+15]]}var pa,uae=M(()=>{"use strict";pa=[];for(let t=0;t<256;++t)pa.push((t+256).toString(16).slice(1));o(cae,"unsafeStringify")});function _Pe(t){if(!oae(t))throw TypeError("Invalid UUID");let e,r=new Uint8Array(16);return r[0]=(e=parseInt(t.slice(0,8),16))>>>24,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=e&255,r[4]=(e=parseInt(t.slice(9,13),16))>>>8,r[5]=e&255,r[6]=(e=parseInt(t.slice(14,18),16))>>>8,r[7]=e&255,r[8]=(e=parseInt(t.slice(19,23),16))>>>8,r[9]=e&255,r[10]=(e=parseInt(t.slice(24,36),16))/1099511627776&255,r[11]=e/4294967296&255,r[12]=e>>>24&255,r[13]=e>>>16&255,r[14]=e>>>8&255,r[15]=e&255,r}var hae,fae=M(()=>{"use strict";lae();o(_Pe,"parse");hae=_Pe});function LPe(t){t=unescape(encodeURIComponent(t));let e=[];for(let r=0;r{"use strict";uae();fae();o(LPe,"stringToBytes");DPe="6ba7b810-9dad-11d1-80b4-00c04fd430c8",NPe="6ba7b811-9dad-11d1-80b4-00c04fd430c8";o(DD,"v35")});function RPe(t,e,r,n){switch(t){case 0:return e&r^~e&n;case 1:return e^r^n;case 2:return e&r^e&n^r&n;case 3:return e^r^n}}function ND(t,e){return t<>>32-e}function MPe(t){let e=[1518500249,1859775393,2400959708,3395469782],r=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof t=="string"){let s=unescape(encodeURIComponent(t));t=[];for(let l=0;l>>0;p=d,d=f,f=ND(h,30)>>>0,h=u,u=y}r[0]=r[0]+u>>>0,r[1]=r[1]+h>>>0,r[2]=r[2]+f>>>0,r[3]=r[3]+d>>>0,r[4]=r[4]+p>>>0}return[r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,r[0]&255,r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,r[1]&255,r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,r[2]&255,r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,r[3]&255,r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,r[4]&255]}var pae,mae=M(()=>{"use strict";o(RPe,"f");o(ND,"ROTL");o(MPe,"sha1");pae=MPe});var IPe,RD,gae=M(()=>{"use strict";dae();mae();IPe=DD("v5",80,pae),RD=IPe});var yae=M(()=>{"use strict";gae()});function HPe(t="",e=""){let r=t.replace(OPe,"");return`${xae(e)}${xae(r)}${RD(t,UPe)}`}function xae(t=""){return t.length>0?`${t}-`:""}var OPe,Bi,zv,PPe,BPe,FPe,zPe,bae,GPe,vae,$Pe,VPe,UPe,wae,Tae=M(()=>{"use strict";Ns();mr();Pv();Vt();ht();hr();iae();ni();fr();yae();OPe=/[^\dA-Za-z](\W)*/g,Bi={},zv=new Map,PPe=o(function(t){let e=Object.keys(t);for(let r of e)Bi[r]=t[r]},"setConf"),BPe=o((t,e,r)=>{let n=Bi.entityPadding/3,i=Bi.entityPadding/3,a=Bi.fontSize*.85,s=e.node().getBBox(),l=[],u=!1,h=!1,f=0,d=0,p=0,m=0,g=s.height+n*2,y=1;r.forEach(w=>{w.attributeKeyTypeList!==void 0&&w.attributeKeyTypeList.length>0&&(u=!0),w.attributeComment!==void 0&&(h=!0)}),r.forEach(w=>{let _=`${e.node().id}-attr-${y}`,T=0,E=ou(w.attributeType),L=t.append("text").classed("er entityLabel",!0).attr("id",`${_}-type`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",de().fontFamily).style("font-size",a+"px").text(E),C=t.append("text").classed("er entityLabel",!0).attr("id",`${_}-name`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",de().fontFamily).style("font-size",a+"px").text(w.attributeName),A={};A.tn=L,A.nn=C;let I=L.node().getBBox(),D=C.node().getBBox();if(f=Math.max(f,I.width),d=Math.max(d,D.width),T=Math.max(I.height,D.height),u){let k=w.attributeKeyTypeList!==void 0?w.attributeKeyTypeList.join(","):"",R=t.append("text").classed("er entityLabel",!0).attr("id",`${_}-key`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",de().fontFamily).style("font-size",a+"px").text(k);A.kn=R;let S=R.node().getBBox();p=Math.max(p,S.width),T=Math.max(T,S.height)}if(h){let k=t.append("text").classed("er entityLabel",!0).attr("id",`${_}-comment`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",de().fontFamily).style("font-size",a+"px").text(w.attributeComment||"");A.cn=k;let R=k.node().getBBox();m=Math.max(m,R.width),T=Math.max(T,R.height)}A.height=T,l.push(A),g+=T+n*2,y+=1});let v=4;u&&(v+=2),h&&(v+=2);let x=f+d+p+m,b={width:Math.max(Bi.minEntityWidth,Math.max(s.width+Bi.entityPadding*2,x+i*v)),height:r.length>0?g:Math.max(Bi.minEntityHeight,s.height+Bi.entityPadding*2)};if(r.length>0){let w=Math.max(0,(b.width-x-i*v)/(v/2));e.attr("transform","translate("+b.width/2+","+(n+s.height/2)+")");let _=s.height+n*2,T="attributeBoxOdd";l.forEach(E=>{let L=_+n+E.height/2;E.tn.attr("transform","translate("+i+","+L+")");let C=t.insert("rect","#"+E.tn.node().id).classed(`er ${T}`,!0).attr("x",0).attr("y",_).attr("width",f+i*2+w).attr("height",E.height+n*2),A=parseFloat(C.attr("x"))+parseFloat(C.attr("width"));E.nn.attr("transform","translate("+(A+i)+","+L+")");let I=t.insert("rect","#"+E.nn.node().id).classed(`er ${T}`,!0).attr("x",A).attr("y",_).attr("width",d+i*2+w).attr("height",E.height+n*2),D=parseFloat(I.attr("x"))+parseFloat(I.attr("width"));if(u){E.kn.attr("transform","translate("+(D+i)+","+L+")");let k=t.insert("rect","#"+E.kn.node().id).classed(`er ${T}`,!0).attr("x",D).attr("y",_).attr("width",p+i*2+w).attr("height",E.height+n*2);D=parseFloat(k.attr("x"))+parseFloat(k.attr("width"))}h&&(E.cn.attr("transform","translate("+(D+i)+","+L+")"),t.insert("rect","#"+E.cn.node().id).classed(`er ${T}`,"true").attr("x",D).attr("y",_).attr("width",m+i*2+w).attr("height",E.height+n*2)),_+=E.height+n*2,T=T==="attributeBoxOdd"?"attributeBoxEven":"attributeBoxOdd"})}else b.height=Math.max(Bi.minEntityHeight,g),e.attr("transform","translate("+b.width/2+","+b.height/2+")");return b},"drawAttributes"),FPe=o(function(t,e,r){let n=[...e.keys()],i;return n.forEach(function(a){let s=HPe(a,"entity");zv.set(a,s);let l=t.append("g").attr("id",s);i=i===void 0?s:i;let u="text-"+s,h=l.append("text").classed("er entityLabel",!0).attr("id",u).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","middle").style("font-family",de().fontFamily).style("font-size",Bi.fontSize+"px").text(e.get(a).alias??a),{width:f,height:d}=BPe(l,h,e.get(a).attributes),m=l.insert("rect","#"+u).classed("er entityBox",!0).attr("x",0).attr("y",0).attr("width",f).attr("height",d).node().getBBox();r.setNode(s,{width:m.width,height:m.height,shape:"rect",id:s})}),i},"drawEntities"),zPe=o(function(t,e){e.nodes().forEach(function(r){r!==void 0&&e.node(r)!==void 0&&t.select("#"+r).attr("transform","translate("+(e.node(r).x-e.node(r).width/2)+","+(e.node(r).y-e.node(r).height/2)+" )")})},"adjustEntities"),bae=o(function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")},"getEdgeName"),GPe=o(function(t,e){return t.forEach(function(r){e.setEdge(zv.get(r.entityA),zv.get(r.entityB),{relationship:r},bae(r))}),t},"addRelationships"),vae=0,$Pe=o(function(t,e,r,n,i){vae++;let a=r.edge(zv.get(e.entityA),zv.get(e.entityB),bae(e)),s=Ka().x(function(y){return y.x}).y(function(y){return y.y}).curve(Do),l=t.insert("path","#"+n).classed("er relationshipLine",!0).attr("d",s(a.points)).style("stroke",Bi.stroke).style("fill","none");e.relSpec.relType===i.db.Identification.NON_IDENTIFYING&&l.attr("stroke-dasharray","8,8");let u="";switch(Bi.arrowMarkerAbsolute&&(u=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,u=u.replace(/\(/g,"\\("),u=u.replace(/\)/g,"\\)")),e.relSpec.cardA){case i.db.Cardinality.ZERO_OR_ONE:l.attr("marker-end","url("+u+"#"+Wo.ERMarkers.ZERO_OR_ONE_END+")");break;case i.db.Cardinality.ZERO_OR_MORE:l.attr("marker-end","url("+u+"#"+Wo.ERMarkers.ZERO_OR_MORE_END+")");break;case i.db.Cardinality.ONE_OR_MORE:l.attr("marker-end","url("+u+"#"+Wo.ERMarkers.ONE_OR_MORE_END+")");break;case i.db.Cardinality.ONLY_ONE:l.attr("marker-end","url("+u+"#"+Wo.ERMarkers.ONLY_ONE_END+")");break;case i.db.Cardinality.MD_PARENT:l.attr("marker-end","url("+u+"#"+Wo.ERMarkers.MD_PARENT_END+")");break}switch(e.relSpec.cardB){case i.db.Cardinality.ZERO_OR_ONE:l.attr("marker-start","url("+u+"#"+Wo.ERMarkers.ZERO_OR_ONE_START+")");break;case i.db.Cardinality.ZERO_OR_MORE:l.attr("marker-start","url("+u+"#"+Wo.ERMarkers.ZERO_OR_MORE_START+")");break;case i.db.Cardinality.ONE_OR_MORE:l.attr("marker-start","url("+u+"#"+Wo.ERMarkers.ONE_OR_MORE_START+")");break;case i.db.Cardinality.ONLY_ONE:l.attr("marker-start","url("+u+"#"+Wo.ERMarkers.ONLY_ONE_START+")");break;case i.db.Cardinality.MD_PARENT:l.attr("marker-start","url("+u+"#"+Wo.ERMarkers.MD_PARENT_START+")");break}let h=l.node().getTotalLength(),f=l.node().getPointAtLength(h*.5),d="rel"+vae,p=e.roleA.split(/
    /g),m=t.append("text").classed("er relationshipLabel",!0).attr("id",d).attr("x",f.x).attr("y",f.y).style("text-anchor","middle").style("dominant-baseline","middle").style("font-family",de().fontFamily).style("font-size",Bi.fontSize+"px");if(p.length==1)m.text(e.roleA);else{let y=-(p.length-1)*.5;p.forEach((v,x)=>{m.append("tspan").attr("x",f.x).attr("dy",`${x===0?y:1}em`).text(v)})}let g=m.node().getBBox();t.insert("rect","#"+d).classed("er relationshipLabelBox",!0).attr("x",f.x-g.width/2).attr("y",f.y-g.height/2).attr("width",g.width).attr("height",g.height)},"drawRelationshipFromLayout"),VPe=o(function(t,e,r,n){Bi=de().er,Y.info("Drawing ER diagram");let i=de().securityLevel,a;i==="sandbox"&&(a=ze("#i"+e));let l=(i==="sandbox"?ze(a.nodes()[0].contentDocument.body):ze("body")).select(`[id='${e}']`);Wo.insertMarkers(l,Bi);let u;u=new Mr({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:Bi.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});let h=FPe(l,n.db.getEntities(),u),f=GPe(n.db.getRelationships(),u);Du(u),zPe(l,u),f.forEach(function(y){$Pe(l,y,u,h,n)});let d=Bi.diagramPadding;Ut.insertTitle(l,"entityTitleText",Bi.titleTopMargin,n.db.getDiagramTitle());let p=l.node().getBBox(),m=p.width+d*2,g=p.height+d*2;Zr(l,g,m,Bi.useMaxWidth),l.attr("viewBox",`${p.x-d} ${p.y-d} ${m} ${g}`)},"draw"),UPe="28e9f9db-3c8d-5aa5-9faf-44286ae5937c";o(HPe,"generateId");o(xae,"strWithHyphen");wae={setConf:PPe,draw:VPe}});var WPe,kae,Eae=M(()=>{"use strict";WPe=o(t=>` +`,"getStyles"),Mie=UIe});var XT={};pr(XT,{diagram:()=>HIe});var HIe,jT=M(()=>{"use strict";Gt();MZ();_ie();Nie();Iie();HIe={parser:Rie,get db(){return new Mw},renderer:Aie,styles:Mie,init:o(t=>{t.flowchart||(t.flowchart={}),t.layout&&Gy({layout:t.layout}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,Gy({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}})},"init")}});var pR,zie,Gie=M(()=>{"use strict";pR=function(){var t=o(function(J,se,ue,Z){for(ue=ue||{},Z=J.length;Z--;ue[J[Z]]=se);return ue},"o"),e=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,50],r=[1,10],n=[1,11],i=[1,12],a=[1,13],s=[1,20],l=[1,21],u=[1,22],h=[1,23],f=[1,24],d=[1,19],p=[1,25],m=[1,26],g=[1,18],y=[1,33],v=[1,34],x=[1,35],b=[1,36],w=[1,37],C=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,50,63,64,65,66,67],T=[1,42],E=[1,43],A=[1,52],S=[40,50,68,69],_=[1,63],I=[1,61],D=[1,58],k=[1,62],L=[1,64],R=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,63,64,65,66,67],O=[63,64,65,66,67],N=[1,81],B=[1,80],F=[1,78],P=[1,79],G=[6,10,42,47],z=[6,10,13,41,42,47,48,49],H=[1,89],Q=[1,88],j=[1,87],ie=[19,56],ne=[1,98],le=[1,97],he=[19,56,58,60],K={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,attribute:51,attributeType:52,attributeName:53,attributeKeyTypeList:54,attributeComment:55,ATTRIBUTE_WORD:56,attributeKeyType:57,",":58,ATTRIBUTE_KEY:59,COMMENT:60,cardinality:61,relType:62,ZERO_OR_ONE:63,ZERO_OR_MORE:64,ONE_OR_MORE:65,ONLY_ONE:66,MD_PARENT:67,NON_IDENTIFYING:68,IDENTIFYING:69,WORD:70,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",56:"ATTRIBUTE_WORD",58:",",59:"ATTRIBUTE_KEY",60:"COMMENT",63:"ZERO_OR_ONE",64:"ZERO_OR_MORE",65:"ONE_OR_MORE",66:"ONLY_ONE",67:"MD_PARENT",68:"NON_IDENTIFYING",69:"IDENTIFYING",70:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[18,1],[18,2],[51,2],[51,3],[51,3],[51,4],[52,1],[53,1],[54,1],[54,3],[57,1],[55,1],[12,3],[61,1],[61,1],[61,1],[61,1],[61,1],[62,1],[62,1],[14,1],[14,1],[14,1]],performAction:o(function(se,ue,Z,Se,ce,ae,Oe){var ge=ae.length-1;switch(ce){case 1:break;case 2:this.$=[];break;case 3:ae[ge-1].push(ae[ge]),this.$=ae[ge-1];break;case 4:case 5:this.$=ae[ge];break;case 6:case 7:this.$=[];break;case 8:Se.addEntity(ae[ge-4]),Se.addEntity(ae[ge-2]),Se.addRelationship(ae[ge-4],ae[ge],ae[ge-2],ae[ge-3]);break;case 9:Se.addEntity(ae[ge-8]),Se.addEntity(ae[ge-4]),Se.addRelationship(ae[ge-8],ae[ge],ae[ge-4],ae[ge-5]),Se.setClass([ae[ge-8]],ae[ge-6]),Se.setClass([ae[ge-4]],ae[ge-2]);break;case 10:Se.addEntity(ae[ge-6]),Se.addEntity(ae[ge-2]),Se.addRelationship(ae[ge-6],ae[ge],ae[ge-2],ae[ge-3]),Se.setClass([ae[ge-6]],ae[ge-4]);break;case 11:Se.addEntity(ae[ge-6]),Se.addEntity(ae[ge-4]),Se.addRelationship(ae[ge-6],ae[ge],ae[ge-4],ae[ge-5]),Se.setClass([ae[ge-4]],ae[ge-2]);break;case 12:Se.addEntity(ae[ge-3]),Se.addAttributes(ae[ge-3],ae[ge-1]);break;case 13:Se.addEntity(ae[ge-5]),Se.addAttributes(ae[ge-5],ae[ge-1]),Se.setClass([ae[ge-5]],ae[ge-3]);break;case 14:Se.addEntity(ae[ge-2]);break;case 15:Se.addEntity(ae[ge-4]),Se.setClass([ae[ge-4]],ae[ge-2]);break;case 16:Se.addEntity(ae[ge]);break;case 17:Se.addEntity(ae[ge-2]),Se.setClass([ae[ge-2]],ae[ge]);break;case 18:Se.addEntity(ae[ge-6],ae[ge-4]),Se.addAttributes(ae[ge-6],ae[ge-1]);break;case 19:Se.addEntity(ae[ge-8],ae[ge-6]),Se.addAttributes(ae[ge-8],ae[ge-1]),Se.setClass([ae[ge-8]],ae[ge-3]);break;case 20:Se.addEntity(ae[ge-5],ae[ge-3]);break;case 21:Se.addEntity(ae[ge-7],ae[ge-5]),Se.setClass([ae[ge-7]],ae[ge-2]);break;case 22:Se.addEntity(ae[ge-3],ae[ge-1]);break;case 23:Se.addEntity(ae[ge-5],ae[ge-3]),Se.setClass([ae[ge-5]],ae[ge]);break;case 24:case 25:this.$=ae[ge].trim(),Se.setAccTitle(this.$);break;case 26:case 27:this.$=ae[ge].trim(),Se.setAccDescription(this.$);break;case 32:Se.setDirection("TB");break;case 33:Se.setDirection("BT");break;case 34:Se.setDirection("RL");break;case 35:Se.setDirection("LR");break;case 36:this.$=ae[ge-3],Se.addClass(ae[ge-2],ae[ge-1]);break;case 37:case 38:case 56:case 64:this.$=[ae[ge]];break;case 39:case 40:this.$=ae[ge-2].concat([ae[ge]]);break;case 41:this.$=ae[ge-2],Se.setClass(ae[ge-1],ae[ge]);break;case 42:this.$=ae[ge-3],Se.addCssStyles(ae[ge-2],ae[ge-1]);break;case 43:this.$=[ae[ge]];break;case 44:ae[ge-2].push(ae[ge]),this.$=ae[ge-2];break;case 46:this.$=ae[ge-1]+ae[ge];break;case 54:case 76:case 77:this.$=ae[ge].replace(/"/g,"");break;case 55:case 78:this.$=ae[ge];break;case 57:ae[ge].push(ae[ge-1]),this.$=ae[ge];break;case 58:this.$={type:ae[ge-1],name:ae[ge]};break;case 59:this.$={type:ae[ge-2],name:ae[ge-1],keys:ae[ge]};break;case 60:this.$={type:ae[ge-2],name:ae[ge-1],comment:ae[ge]};break;case 61:this.$={type:ae[ge-3],name:ae[ge-2],keys:ae[ge-1],comment:ae[ge]};break;case 62:case 63:case 66:this.$=ae[ge];break;case 65:ae[ge-2].push(ae[ge]),this.$=ae[ge-2];break;case 67:this.$=ae[ge].replace(/"/g,"");break;case 68:this.$={cardA:ae[ge],relType:ae[ge-1],cardB:ae[ge-2]};break;case 69:this.$=Se.Cardinality.ZERO_OR_ONE;break;case 70:this.$=Se.Cardinality.ZERO_OR_MORE;break;case 71:this.$=Se.Cardinality.ONE_OR_MORE;break;case 72:this.$=Se.Cardinality.ONLY_ONE;break;case 73:this.$=Se.Cardinality.MD_PARENT;break;case 74:this.$=Se.Identification.NON_IDENTIFYING;break;case 75:this.$=Se.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:f,40:d,43:p,44:m,50:g},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:27,11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:f,40:d,43:p,44:m,50:g},t(e,[2,5]),t(e,[2,6]),t(e,[2,16],{12:28,61:32,15:[1,29],17:[1,30],20:[1,31],63:y,64:v,65:x,66:b,67:w}),{23:[1,38]},{25:[1,39]},{27:[1,40]},t(e,[2,27]),t(e,[2,28]),t(e,[2,29]),t(e,[2,30]),t(e,[2,31]),t(C,[2,54]),t(C,[2,55]),t(e,[2,32]),t(e,[2,33]),t(e,[2,34]),t(e,[2,35]),{16:41,40:T,41:E},{16:44,40:T,41:E},{16:45,40:T,41:E},t(e,[2,4]),{11:46,40:d,50:g},{16:47,40:T,41:E},{18:48,19:[1,49],51:50,52:51,56:A},{11:53,40:d,50:g},{62:54,68:[1,55],69:[1,56]},t(S,[2,69]),t(S,[2,70]),t(S,[2,71]),t(S,[2,72]),t(S,[2,73]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),{13:_,38:57,41:I,42:D,45:59,46:60,48:k,49:L},t(R,[2,37]),t(R,[2,38]),{16:65,40:T,41:E,42:D},{13:_,38:66,41:I,42:D,45:59,46:60,48:k,49:L},{13:[1,67],15:[1,68]},t(e,[2,17],{61:32,12:69,17:[1,70],42:D,63:y,64:v,65:x,66:b,67:w}),{19:[1,71]},t(e,[2,14]),{18:72,19:[2,56],51:50,52:51,56:A},{53:73,56:[1,74]},{56:[2,62]},{21:[1,75]},{61:76,63:y,64:v,65:x,66:b,67:w},t(O,[2,74]),t(O,[2,75]),{6:N,10:B,39:77,42:F,47:P},{40:[1,82],41:[1,83]},t(G,[2,43],{46:84,13:_,41:I,48:k,49:L}),t(z,[2,45]),t(z,[2,50]),t(z,[2,51]),t(z,[2,52]),t(z,[2,53]),t(e,[2,41],{42:D}),{6:N,10:B,39:85,42:F,47:P},{14:86,40:H,50:Q,70:j},{16:90,40:T,41:E},{11:91,40:d,50:g},{18:92,19:[1,93],51:50,52:51,56:A},t(e,[2,12]),{19:[2,57]},t(ie,[2,58],{54:94,55:95,57:96,59:ne,60:le}),t([19,56,59,60],[2,63]),t(e,[2,22],{15:[1,100],17:[1,99]}),t([40,50],[2,68]),t(e,[2,36]),{13:_,41:I,45:101,46:60,48:k,49:L},t(e,[2,47]),t(e,[2,48]),t(e,[2,49]),t(R,[2,39]),t(R,[2,40]),t(z,[2,46]),t(e,[2,42]),t(e,[2,8]),t(e,[2,76]),t(e,[2,77]),t(e,[2,78]),{13:[1,102],42:D},{13:[1,104],15:[1,103]},{19:[1,105]},t(e,[2,15]),t(ie,[2,59],{55:106,58:[1,107],60:le}),t(ie,[2,60]),t(he,[2,64]),t(ie,[2,67]),t(he,[2,66]),{18:108,19:[1,109],51:50,52:51,56:A},{16:110,40:T,41:E},t(G,[2,44],{46:84,13:_,41:I,48:k,49:L}),{14:111,40:H,50:Q,70:j},{16:112,40:T,41:E},{14:113,40:H,50:Q,70:j},t(e,[2,13]),t(ie,[2,61]),{57:114,59:ne},{19:[1,115]},t(e,[2,20]),t(e,[2,23],{17:[1,116],42:D}),t(e,[2,11]),{13:[1,117],42:D},t(e,[2,10]),t(he,[2,65]),t(e,[2,18]),{18:118,19:[1,119],51:50,52:51,56:A},{14:120,40:H,50:Q,70:j},{19:[1,121]},t(e,[2,21]),t(e,[2,9]),t(e,[2,19])],defaultActions:{52:[2,62],72:[2,57]},parseError:o(function(se,ue){if(ue.recoverable)this.trace(se);else{var Z=new Error(se);throw Z.hash=ue,Z}},"parseError"),parse:o(function(se){var ue=this,Z=[0],Se=[],ce=[null],ae=[],Oe=this.table,ge="",Ge=0,He=0,ze=0,Re=2,Ie=1,be=ae.slice.call(arguments,1),W=Object.create(this.lexer),de={yy:{}};for(var re in this.yy)Object.prototype.hasOwnProperty.call(this.yy,re)&&(de.yy[re]=this.yy[re]);W.setInput(se,de.yy),de.yy.lexer=W,de.yy.parser=this,typeof W.yylloc>"u"&&(W.yylloc={});var oe=W.yylloc;ae.push(oe);var V=W.options&&W.options.ranges;typeof de.yy.parseError=="function"?this.parseError=de.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xe(ct){Z.length=Z.length-2*ct,ce.length=ce.length-ct,ae.length=ae.length-ct}o(xe,"popStack");function q(){var ct;return ct=Se.pop()||W.lex()||Ie,typeof ct!="number"&&(ct instanceof Array&&(Se=ct,ct=Se.pop()),ct=ue.symbols_[ct]||ct),ct}o(q,"lex");for(var pe,ve,Pe,_e,we,Ve,De={},qe,at,Lt,st;;){if(Pe=Z[Z.length-1],this.defaultActions[Pe]?_e=this.defaultActions[Pe]:((pe===null||typeof pe>"u")&&(pe=q()),_e=Oe[Pe]&&Oe[Pe][pe]),typeof _e>"u"||!_e.length||!_e[0]){var Ue="";st=[];for(qe in Oe[Pe])this.terminals_[qe]&&qe>Re&&st.push("'"+this.terminals_[qe]+"'");W.showPosition?Ue="Parse error on line "+(Ge+1)+`: +`+W.showPosition()+` +Expecting `+st.join(", ")+", got '"+(this.terminals_[pe]||pe)+"'":Ue="Parse error on line "+(Ge+1)+": Unexpected "+(pe==Ie?"end of input":"'"+(this.terminals_[pe]||pe)+"'"),this.parseError(Ue,{text:W.match,token:this.terminals_[pe]||pe,line:W.yylineno,loc:oe,expected:st})}if(_e[0]instanceof Array&&_e.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Pe+", token: "+pe);switch(_e[0]){case 1:Z.push(pe),ce.push(W.yytext),ae.push(W.yylloc),Z.push(_e[1]),pe=null,ve?(pe=ve,ve=null):(He=W.yyleng,ge=W.yytext,Ge=W.yylineno,oe=W.yylloc,ze>0&&ze--);break;case 2:if(at=this.productions_[_e[1]][1],De.$=ce[ce.length-at],De._$={first_line:ae[ae.length-(at||1)].first_line,last_line:ae[ae.length-1].last_line,first_column:ae[ae.length-(at||1)].first_column,last_column:ae[ae.length-1].last_column},V&&(De._$.range=[ae[ae.length-(at||1)].range[0],ae[ae.length-1].range[1]]),Ve=this.performAction.apply(De,[ge,He,Ge,de.yy,_e[1],ce,ae].concat(be)),typeof Ve<"u")return Ve;at&&(Z=Z.slice(0,-1*at*2),ce=ce.slice(0,-1*at),ae=ae.slice(0,-1*at)),Z.push(this.productions_[_e[1]][0]),ce.push(De.$),ae.push(De._$),Lt=Oe[Z[Z.length-2]][Z[Z.length-1]],Z.push(Lt);break;case 3:return!0}}return!0},"parse")},X=function(){var J={EOF:1,parseError:o(function(ue,Z){if(this.yy.parser)this.yy.parser.parseError(ue,Z);else throw new Error(ue)},"parseError"),setInput:o(function(se,ue){return this.yy=ue||this.yy||{},this._input=se,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var se=this._input[0];this.yytext+=se,this.yyleng++,this.offset++,this.match+=se,this.matched+=se;var ue=se.match(/(?:\r\n?|\n).*/g);return ue?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),se},"input"),unput:o(function(se){var ue=se.length,Z=se.split(/(?:\r\n?|\n)/g);this._input=se+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ue),this.offset-=ue;var Se=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Z.length-1&&(this.yylineno-=Z.length-1);var ce=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Z?(Z.length===Se.length?this.yylloc.first_column:0)+Se[Se.length-Z.length].length-Z[0].length:this.yylloc.first_column-ue},this.options.ranges&&(this.yylloc.range=[ce[0],ce[0]+this.yyleng-ue]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(se){this.unput(this.match.slice(se))},"less"),pastInput:o(function(){var se=this.matched.substr(0,this.matched.length-this.match.length);return(se.length>20?"...":"")+se.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var se=this.match;return se.length<20&&(se+=this._input.substr(0,20-se.length)),(se.substr(0,20)+(se.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var se=this.pastInput(),ue=new Array(se.length+1).join("-");return se+this.upcomingInput()+` +`+ue+"^"},"showPosition"),test_match:o(function(se,ue){var Z,Se,ce;if(this.options.backtrack_lexer&&(ce={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ce.yylloc.range=this.yylloc.range.slice(0))),Se=se[0].match(/(?:\r\n?|\n).*/g),Se&&(this.yylineno+=Se.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Se?Se[Se.length-1].length-Se[Se.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+se[0].length},this.yytext+=se[0],this.match+=se[0],this.matches=se,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(se[0].length),this.matched+=se[0],Z=this.performAction.call(this,this.yy,this,ue,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Z)return Z;if(this._backtrack){for(var ae in ce)this[ae]=ce[ae];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var se,ue,Z,Se;this._more||(this.yytext="",this.match="");for(var ce=this._currentRules(),ae=0;aeue[0].length)){if(ue=Z,Se=ae,this.options.backtrack_lexer){if(se=this.test_match(Z,ce[ae]),se!==!1)return se;if(this._backtrack){ue=!1;continue}else return!1}else if(!this.options.flex)break}return ue?(se=this.test_match(ue,ce[Se]),se!==!1?se:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var ue=this.next();return ue||this.lex()},"lex"),begin:o(function(ue){this.conditionStack.push(ue)},"begin"),popState:o(function(){var ue=this.conditionStack.length-1;return ue>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(ue){return ue=this.conditionStack.length-1-Math.abs(ue||0),ue>=0?this.conditionStack[ue]:"INITIAL"},"topState"),pushState:o(function(ue){this.begin(ue)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(ue,Z,Se,ce){var ae=ce;switch(Se){case 0:return this.begin("acc_title"),24;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),26;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:break;case 13:return 8;case 14:return 50;case 15:return 70;case 16:return 4;case 17:return this.begin("block"),17;break;case 18:return 49;case 19:return 49;case 20:return 42;case 21:return 15;case 22:return 13;case 23:break;case 24:return 59;case 25:return 56;case 26:return 56;case 27:return 60;case 28:break;case 29:return this.popState(),19;break;case 30:return Z.yytext[0];case 31:return 20;case 32:return 21;case 33:return this.begin("style"),44;break;case 34:return this.popState(),10;break;case 35:break;case 36:return 13;case 37:return 42;case 38:return 49;case 39:return this.begin("style"),37;break;case 40:return 43;case 41:return 63;case 42:return 65;case 43:return 65;case 44:return 65;case 45:return 63;case 46:return 63;case 47:return 64;case 48:return 64;case 49:return 64;case 50:return 64;case 51:return 64;case 52:return 65;case 53:return 64;case 54:return 65;case 55:return 66;case 56:return 66;case 57:return 66;case 58:return 66;case 59:return 63;case 60:return 64;case 61:return 65;case 62:return 67;case 63:return 68;case 64:return 69;case 65:return 69;case 66:return 68;case 67:return 68;case 68:return 68;case 69:return 41;case 70:return 47;case 71:return 40;case 72:return 48;case 73:return Z.yytext[0];case 74:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:[0-9])/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[34,35,36,37,38,69,70],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[23,24,25,26,27,28,29,30],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,71,72,73,74],inclusive:!0}}};return J}();K.lexer=X;function te(){this.yy={}}return o(te,"Parser"),te.prototype=K,K.Parser=te,new te}();pR.parser=pR;zie=pR});var KT,$ie=M(()=>{"use strict";vt();Gt();ki();sr();KT=class{constructor(){this.entities=new Map;this.relationships=[];this.classes=new Map;this.direction="TB";this.Cardinality={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"};this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"};this.setAccTitle=Mr;this.getAccTitle=Or;this.setAccDescription=Pr;this.getAccDescription=Br;this.setDiagramTitle=Zr;this.getDiagramTitle=Fr;this.getConfig=o(()=>me().er,"getConfig");this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"ErDB")}addEntity(e,r=""){return this.entities.has(e)?!this.entities.get(e)?.alias&&r&&(this.entities.get(e).alias=r,Y.info(`Add alias '${r}' to entity '${e}'`)):(this.entities.set(e,{id:`entity-${e}-${this.entities.size}`,label:e,attributes:[],alias:r,shape:"erBox",look:me().look??"default",cssClasses:"default",cssStyles:[]}),Y.info("Added new entity :",e)),this.entities.get(e)}getEntity(e){return this.entities.get(e)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(e,r){let n=this.addEntity(e),i;for(i=r.length-1;i>=0;i--)r[i].keys||(r[i].keys=[]),r[i].comment||(r[i].comment=""),n.attributes.push(r[i]),Y.debug("Added attribute ",r[i].name)}addRelationship(e,r,n,i){let a=this.entities.get(e),s=this.entities.get(n);if(!a||!s)return;let l={entityA:a.id,roleA:r,entityB:s.id,relSpec:i};this.relationships.push(l),Y.debug("Added new relationship :",l)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(e){this.direction=e}getCompiledStyles(e){let r=[];for(let n of e){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}addCssStyles(e,r){for(let n of e){let i=this.entities.get(n);if(!r||!i)return;for(let a of r)i.cssStyles.push(a)}}addClass(e,r){e.forEach(n=>{let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)})})}setClass(e,r){for(let n of e){let i=this.entities.get(n);if(i)for(let a of r)i.cssClasses+=" "+a}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],Dr()}getData(){let e=[],r=[],n=me();for(let a of this.entities.keys()){let s=this.entities.get(a);s&&(s.cssCompiledStyles=this.getCompiledStyles(s.cssClasses.split(" ")),e.push(s))}let i=0;for(let a of this.relationships){let s={id:Oh(a.entityA,a.entityB,{prefix:"id",counter:i++}),type:"normal",curve:"basis",start:a.entityA,end:a.entityB,label:a.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:a.relSpec.cardB.toLowerCase(),arrowTypeEnd:a.relSpec.cardA.toLowerCase(),pattern:a.relSpec.relType=="IDENTIFYING"?"solid":"dashed",look:n.look};r.push(s)}return{nodes:e,edges:r,other:{},config:n,direction:"TB"}}}});var mR={};pr(mR,{draw:()=>QIe});var QIe,Vie=M(()=>{"use strict";Gt();vt();hm();Hd();Im();sr();hr();QIe=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing er diagram (unified)",e);let{securityLevel:i,er:a,layout:s}=me(),l=n.db.getData(),u=gc(e,i);l.type=n.type,l.layoutAlgorithm=Jh(s),l.config.flowchart.nodeSpacing=a?.nodeSpacing||140,l.config.flowchart.rankSpacing=a?.rankSpacing||80,l.direction=n.db.getDirection(),l.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],l.diagramId=e,await Sc(l,u),l.layoutAlgorithm==="elk"&&u.select(".edges").lower();let h=u.selectAll('[id*="-background"]');Array.from(h).length>0&&h.each(function(){let d=$e(this),m=d.attr("id").replace("-background",""),g=u.select(`#${CSS.escape(m)}`);if(!g.empty()){let y=g.attr("transform");d.attr("transform",y)}});let f=8;$t.insertTitle(u,"erDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Cc(u,f,"erDiagram",a?.useMaxWidth??!0)},"draw")});var ZIe,JIe,Uie,Hie=M(()=>{"use strict";Vs();ZIe=o((t,e)=>{let r=Yf,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return Wa(n,i,a,e)},"fade"),JIe=o(t=>` .entityBox { fill: ${t.mainBkg}; stroke: ${t.nodeBorder}; } - .attributeBoxOdd { - fill: ${t.attributeBackgroundColorOdd}; - stroke: ${t.nodeBorder}; - } - - .attributeBoxEven { - fill: ${t.attributeBackgroundColorEven}; - stroke: ${t.nodeBorder}; - } - .relationshipLabelBox { fill: ${t.tertiaryColor}; opacity: 0.7; @@ -631,88 +646,108 @@ Expecting `+Be.join(", ")+", got '"+(this.terminals_[q]||q)+"'":Ve="Parse error } } - .relationshipLine { - stroke: ${t.lineColor}; - } + .labelBkg { + background-color: ${ZIe(t.tertiaryColor,.5)}; + } - .entityTitleText { - text-anchor: middle; - font-size: 18px; - fill: ${t.textColor}; - } - #MD_PARENT_START { - fill: #f5f5f5 !important; - stroke: ${t.lineColor} !important; + .edgeLabel .label { + fill: ${t.nodeBorder}; + font-size: 14px; + } + + .label { + font-family: ${t.fontFamily}; + color: ${t.nodeTextColor||t.textColor}; + } + + .edge-pattern-dashed { + stroke-dasharray: 8,8; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon + { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + stroke-width: 1px; + } + + .relationshipLine { + stroke: ${t.lineColor}; stroke-width: 1; + fill: none; } - #MD_PARENT_END { - fill: #f5f5f5 !important; + + .marker { + fill: none !important; stroke: ${t.lineColor} !important; stroke-width: 1; } - -`,"getStyles"),kae=WPe});var Sae={};vr(Sae,{diagram:()=>YPe});var YPe,Cae=M(()=>{"use strict";eae();nae();Tae();Eae();YPe={parser:Jie,db:rae,renderer:wae,styles:kae}});function ei(t){return typeof t=="object"&&t!==null&&typeof t.$type=="string"}function ma(t){return typeof t=="object"&&t!==null&&typeof t.$refText=="string"}function MD(t){return typeof t=="object"&&t!==null&&typeof t.name=="string"&&typeof t.type=="string"&&typeof t.path=="string"}function Vd(t){return typeof t=="object"&&t!==null&&ei(t.container)&&ma(t.reference)&&typeof t.message=="string"}function io(t){return typeof t=="object"&&t!==null&&Array.isArray(t.content)}function Jh(t){return typeof t=="object"&&t!==null&&typeof t.tokenType=="object"}function Gv(t){return io(t)&&typeof t.fullText=="string"}var $d,Yo=M(()=>{"use strict";o(ei,"isAstNode");o(ma,"isReference");o(MD,"isAstNodeDescription");o(Vd,"isLinkingError");$d=class{static{o(this,"AbstractAstReflection")}constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,r){return ei(e)&&this.isSubtype(e.$type,r)}isSubtype(e,r){if(e===r)return!0;let n=this.subtypes[e];n||(n=this.subtypes[e]={});let i=n[r];if(i!==void 0)return i;{let a=this.computeIsSubtype(e,r);return n[r]=a,a}}getAllSubTypes(e){let r=this.allSubtypes[e];if(r)return r;{let n=this.getAllTypes(),i=[];for(let a of n)this.isSubtype(a,e)&&i.push(a);return this.allSubtypes[e]=i,i}}};o(io,"isCompositeCstNode");o(Jh,"isLeafCstNode");o(Gv,"isRootCstNode")});function KPe(t){return typeof t=="string"?t:typeof t>"u"?"undefined":typeof t.toString=="function"?t.toString():Object.prototype.toString.call(t)}function dT(t){return!!t&&typeof t[Symbol.iterator]=="function"}function tn(...t){if(t.length===1){let e=t[0];if(e instanceof ao)return e;if(dT(e))return new ao(()=>e[Symbol.iterator](),r=>r.next());if(typeof e.length=="number")return new ao(()=>({index:0}),r=>r.index1?new ao(()=>({collIndex:0,arrIndex:0}),e=>{do{if(e.iterator){let r=e.iterator.next();if(!r.done)return r;e.iterator=void 0}if(e.array){if(e.arrIndex{"use strict";ao=class t{static{o(this,"StreamImpl")}constructor(e,r){this.startFn=e,this.nextFn=r}iterator(){let e={state:this.startFn(),next:o(()=>this.nextFn(e.state),"next"),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let e=this.iterator(),r=0,n=e.next();for(;!n.done;)r++,n=e.next();return r}toArray(){let e=[],r=this.iterator(),n;do n=r.next(),n.value!==void 0&&e.push(n.value);while(!n.done);return e}toSet(){return new Set(this)}toMap(e,r){let n=this.map(i=>[e?e(i):i,r?r(i):i]);return new Map(n)}toString(){return this.join()}concat(e){let r=e[Symbol.iterator]();return new t(()=>({first:this.startFn(),firstDone:!1}),n=>{let i;if(!n.firstDone){do if(i=this.nextFn(n.first),!i.done)return i;while(!i.done);n.firstDone=!0}do if(i=r.next(),!i.done)return i;while(!i.done);return Ja})}join(e=","){let r=this.iterator(),n="",i,a=!1;do i=r.next(),i.done||(a&&(n+=e),n+=KPe(i.value)),a=!0;while(!i.done);return n}indexOf(e,r=0){let n=this.iterator(),i=0,a=n.next();for(;!a.done;){if(i>=r&&a.value===e)return i;a=n.next(),i++}return-1}every(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(!e(n.value))return!1;n=r.next()}return!0}some(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(e(n.value))return!0;n=r.next()}return!1}forEach(e){let r=this.iterator(),n=0,i=r.next();for(;!i.done;)e(i.value,n),i=r.next(),n++}map(e){return new t(this.startFn,r=>{let{done:n,value:i}=this.nextFn(r);return n?Ja:{done:!1,value:e(i)}})}filter(e){return new t(this.startFn,r=>{let n;do if(n=this.nextFn(r),!n.done&&e(n.value))return n;while(!n.done);return Ja})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,r){let n=this.iterator(),i=r,a=n.next();for(;!a.done;)i===void 0?i=a.value:i=e(i,a.value),a=n.next();return i}reduceRight(e,r){return this.recursiveReduce(this.iterator(),e,r)}recursiveReduce(e,r,n){let i=e.next();if(i.done)return n;let a=this.recursiveReduce(e,r,n);return a===void 0?i.value:r(a,i.value)}find(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(e(n.value))return n.value;n=r.next()}}findIndex(e){let r=this.iterator(),n=0,i=r.next();for(;!i.done;){if(e(i.value))return n;i=r.next(),n++}return-1}includes(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(n.value===e)return!0;n=r.next()}return!1}flatMap(e){return new t(()=>({this:this.startFn()}),r=>{do{if(r.iterator){let a=r.iterator.next();if(a.done)r.iterator=void 0;else return a}let{done:n,value:i}=this.nextFn(r.this);if(!n){let a=e(i);if(dT(a))r.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}}while(r.iterator);return Ja})}flat(e){if(e===void 0&&(e=1),e<=0)return this;let r=e>1?this.flat(e-1):this;return new t(()=>({this:r.startFn()}),n=>{do{if(n.iterator){let s=n.iterator.next();if(s.done)n.iterator=void 0;else return s}let{done:i,value:a}=r.nextFn(n.this);if(!i)if(dT(a))n.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}while(n.iterator);return Ja})}head(){let r=this.iterator().next();if(!r.done)return r.value}tail(e=1){return new t(()=>{let r=this.startFn();for(let n=0;n({size:0,state:this.startFn()}),r=>(r.size++,r.size>e?Ja:this.nextFn(r.state)))}distinct(e){let r=new Set;return this.filter(n=>{let i=e?e(n):n;return r.has(i)?!1:(r.add(i),!0)})}exclude(e,r){let n=new Set;for(let i of e){let a=r?r(i):i;n.add(a)}return this.filter(i=>{let a=r?r(i):i;return!n.has(a)})}};o(KPe,"toString");o(dT,"isIterable");$v=new ao(()=>{},()=>Ja),Ja=Object.freeze({done:!0,value:void 0});o(tn,"stream");Cc=class extends ao{static{o(this,"TreeStreamImpl")}constructor(e,r,n){super(()=>({iterators:n?.includeRoot?[[e][Symbol.iterator]()]:[r(e)[Symbol.iterator]()],pruned:!1}),i=>{for(i.pruned&&(i.iterators.pop(),i.pruned=!1);i.iterators.length>0;){let s=i.iterators[i.iterators.length-1].next();if(s.done)i.iterators.pop();else return i.iterators.push(r(s.value)[Symbol.iterator]()),s}return Ja})}iterator(){let e={state:this.startFn(),next:o(()=>this.nextFn(e.state),"next"),prune:o(()=>{e.state.pruned=!0},"prune"),[Symbol.iterator]:()=>e};return e}};(function(t){function e(a){return a.reduce((s,l)=>s+l,0)}o(e,"sum"),t.sum=e;function r(a){return a.reduce((s,l)=>s*l,0)}o(r,"product"),t.product=r;function n(a){return a.reduce((s,l)=>Math.min(s,l))}o(n,"min"),t.min=n;function i(a){return a.reduce((s,l)=>Math.max(s,l))}o(i,"max"),t.max=i})(Gm||(Gm={}))});var mT={};vr(mT,{DefaultNameRegexp:()=>pT,RangeComparison:()=>Nu,compareRange:()=>Dae,findCommentNode:()=>BD,findDeclarationNodeAtOffset:()=>ZPe,findLeafNodeAtOffset:()=>FD,findLeafNodeBeforeOffset:()=>Nae,flattenCst:()=>QPe,getInteriorNodes:()=>tBe,getNextNode:()=>JPe,getPreviousNode:()=>Mae,getStartlineNode:()=>eBe,inRange:()=>PD,isChildNode:()=>OD,isCommentNode:()=>ID,streamCst:()=>Ud,toDocumentSegment:()=>Hd,tokenToRange:()=>$m});function Ud(t){return new Cc(t,e=>io(e)?e.content:[],{includeRoot:!0})}function QPe(t){return Ud(t).filter(Jh)}function OD(t,e){for(;t.container;)if(t=t.container,t===e)return!0;return!1}function $m(t){return{start:{character:t.startColumn-1,line:t.startLine-1},end:{character:t.endColumn,line:t.endLine-1}}}function Hd(t){if(!t)return;let{offset:e,end:r,range:n}=t;return{range:n,offset:e,end:r,length:r-e}}function Dae(t,e){if(t.end.linee.end.line||t.start.line===e.end.line&&t.start.character>e.end.character)return Nu.After;let r=t.start.line>e.start.line||t.start.line===e.start.line&&t.start.character>=e.start.character,n=t.end.lineNu.After}function ZPe(t,e,r=pT){if(t){if(e>0){let n=e-t.offset,i=t.text.charAt(n);r.test(i)||e--}return FD(t,e)}}function BD(t,e){if(t){let r=Mae(t,!0);if(r&&ID(r,e))return r;if(Gv(t)){let n=t.content.findIndex(i=>!i.hidden);for(let i=n-1;i>=0;i--){let a=t.content[i];if(ID(a,e))return a}}}}function ID(t,e){return Jh(t)&&e.includes(t.tokenType.name)}function FD(t,e){if(Jh(t))return t;if(io(t)){let r=Rae(t,e,!1);if(r)return FD(r,e)}}function Nae(t,e){if(Jh(t))return t;if(io(t)){let r=Rae(t,e,!0);if(r)return Nae(r,e)}}function Rae(t,e,r){let n=0,i=t.content.length-1,a;for(;n<=i;){let s=Math.floor((n+i)/2),l=t.content[s];if(l.offset<=e&&l.end>e)return l;l.end<=e?(a=r?l:void 0,n=s+1):i=s-1}return a}function Mae(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t);for(;n>0;){n--;let i=r.content[n];if(e||!i.hidden)return i}t=r}}function JPe(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t),i=r.content.length-1;for(;n{"use strict";Yo();Rs();o(Ud,"streamCst");o(QPe,"flattenCst");o(OD,"isChildNode");o($m,"tokenToRange");o(Hd,"toDocumentSegment");(function(t){t[t.Before=0]="Before",t[t.After=1]="After",t[t.OverlapFront=2]="OverlapFront",t[t.OverlapBack=3]="OverlapBack",t[t.Inside=4]="Inside"})(Nu||(Nu={}));o(Dae,"compareRange");o(PD,"inRange");pT=/^[\w\p{L}]$/u;o(ZPe,"findDeclarationNodeAtOffset");o(BD,"findCommentNode");o(ID,"isCommentNode");o(FD,"findLeafNodeAtOffset");o(Nae,"findLeafNodeBeforeOffset");o(Rae,"binarySearch");o(Mae,"getPreviousNode");o(JPe,"getNextNode");o(eBe,"getStartlineNode");o(tBe,"getInteriorNodes");o(rBe,"getCommonParent");o(Lae,"getParentChain")});function ef(t){throw new Error("Error! The input value was not handled.")}var Wd,gT=M(()=>{"use strict";Wd=class extends Error{static{o(this,"ErrorWithLocation")}constructor(e,r){super(e?`${r} at ${e.range.start.line}:${e.range.start.character}`:r)}};o(ef,"assertUnreachable")});var Yv={};vr(Yv,{AbstractElement:()=>GD,AbstractRule:()=>Vv,AbstractType:()=>Uv,Action:()=>pN,Alternatives:()=>mN,ArrayLiteral:()=>$D,ArrayType:()=>VD,Assignment:()=>gN,BooleanLiteral:()=>HD,CharacterRange:()=>yN,Condition:()=>yT,Conjunction:()=>YD,CrossReference:()=>xN,Disjunction:()=>XD,EndOfFile:()=>bN,Grammar:()=>KD,GrammarImport:()=>Oae,Group:()=>TN,InferredType:()=>QD,Interface:()=>ZD,Keyword:()=>kN,LangiumGrammarAstReflection:()=>Vm,LangiumGrammarTerminals:()=>nBe,NamedArgument:()=>Pae,NegatedToken:()=>EN,Negation:()=>JD,NumberLiteral:()=>tN,Parameter:()=>rN,ParameterReference:()=>nN,ParserRule:()=>aN,ReferenceType:()=>sN,RegexToken:()=>CN,ReturnType:()=>Bae,RuleCall:()=>_N,SimpleType:()=>cN,StringLiteral:()=>uN,TerminalAlternatives:()=>LN,TerminalGroup:()=>NN,TerminalRule:()=>xT,TerminalRuleCall:()=>MN,Type:()=>hN,TypeAttribute:()=>Fae,TypeDefinition:()=>zD,UnionType:()=>fN,UnorderedGroup:()=>IN,UntilToken:()=>ON,ValueLiteral:()=>vT,Wildcard:()=>BN,isAbstractElement:()=>Hv,isAbstractRule:()=>iBe,isAbstractType:()=>aBe,isAction:()=>Ru,isAlternatives:()=>kT,isArrayLiteral:()=>uBe,isArrayType:()=>UD,isAssignment:()=>Il,isBooleanLiteral:()=>WD,isCharacterRange:()=>vN,isCondition:()=>sBe,isConjunction:()=>qD,isCrossReference:()=>Yd,isDisjunction:()=>jD,isEndOfFile:()=>wN,isFeatureName:()=>oBe,isGrammar:()=>hBe,isGrammarImport:()=>fBe,isGroup:()=>tf,isInferredType:()=>bT,isInterface:()=>wT,isKeyword:()=>Xo,isNamedArgument:()=>dBe,isNegatedToken:()=>SN,isNegation:()=>eN,isNumberLiteral:()=>pBe,isParameter:()=>mBe,isParameterReference:()=>iN,isParserRule:()=>Ma,isPrimitiveType:()=>Iae,isReferenceType:()=>oN,isRegexToken:()=>AN,isReturnType:()=>lN,isRuleCall:()=>Ol,isSimpleType:()=>TT,isStringLiteral:()=>gBe,isTerminalAlternatives:()=>DN,isTerminalGroup:()=>RN,isTerminalRule:()=>qo,isTerminalRuleCall:()=>ET,isType:()=>Wv,isTypeAttribute:()=>yBe,isTypeDefinition:()=>lBe,isUnionType:()=>dN,isUnorderedGroup:()=>ST,isUntilToken:()=>PN,isValueLiteral:()=>cBe,isWildcard:()=>FN,reflection:()=>lr});function iBe(t){return lr.isInstance(t,Vv)}function aBe(t){return lr.isInstance(t,Uv)}function sBe(t){return lr.isInstance(t,yT)}function oBe(t){return Iae(t)||t==="current"||t==="entry"||t==="extends"||t==="false"||t==="fragment"||t==="grammar"||t==="hidden"||t==="import"||t==="interface"||t==="returns"||t==="terminal"||t==="true"||t==="type"||t==="infer"||t==="infers"||t==="with"||typeof t=="string"&&/\^?[_a-zA-Z][\w_]*/.test(t)}function Iae(t){return t==="string"||t==="number"||t==="boolean"||t==="Date"||t==="bigint"}function lBe(t){return lr.isInstance(t,zD)}function cBe(t){return lr.isInstance(t,vT)}function Hv(t){return lr.isInstance(t,GD)}function uBe(t){return lr.isInstance(t,$D)}function UD(t){return lr.isInstance(t,VD)}function WD(t){return lr.isInstance(t,HD)}function qD(t){return lr.isInstance(t,YD)}function jD(t){return lr.isInstance(t,XD)}function hBe(t){return lr.isInstance(t,KD)}function fBe(t){return lr.isInstance(t,Oae)}function bT(t){return lr.isInstance(t,QD)}function wT(t){return lr.isInstance(t,ZD)}function dBe(t){return lr.isInstance(t,Pae)}function eN(t){return lr.isInstance(t,JD)}function pBe(t){return lr.isInstance(t,tN)}function mBe(t){return lr.isInstance(t,rN)}function iN(t){return lr.isInstance(t,nN)}function Ma(t){return lr.isInstance(t,aN)}function oN(t){return lr.isInstance(t,sN)}function lN(t){return lr.isInstance(t,Bae)}function TT(t){return lr.isInstance(t,cN)}function gBe(t){return lr.isInstance(t,uN)}function qo(t){return lr.isInstance(t,xT)}function Wv(t){return lr.isInstance(t,hN)}function yBe(t){return lr.isInstance(t,Fae)}function dN(t){return lr.isInstance(t,fN)}function Ru(t){return lr.isInstance(t,pN)}function kT(t){return lr.isInstance(t,mN)}function Il(t){return lr.isInstance(t,gN)}function vN(t){return lr.isInstance(t,yN)}function Yd(t){return lr.isInstance(t,xN)}function wN(t){return lr.isInstance(t,bN)}function tf(t){return lr.isInstance(t,TN)}function Xo(t){return lr.isInstance(t,kN)}function SN(t){return lr.isInstance(t,EN)}function AN(t){return lr.isInstance(t,CN)}function Ol(t){return lr.isInstance(t,_N)}function DN(t){return lr.isInstance(t,LN)}function RN(t){return lr.isInstance(t,NN)}function ET(t){return lr.isInstance(t,MN)}function ST(t){return lr.isInstance(t,IN)}function PN(t){return lr.isInstance(t,ON)}function FN(t){return lr.isInstance(t,BN)}var nBe,Vv,Uv,yT,zD,vT,GD,$D,VD,HD,YD,XD,KD,Oae,QD,ZD,Pae,JD,tN,rN,nN,aN,sN,Bae,cN,uN,xT,hN,Fae,fN,pN,mN,gN,yN,xN,bN,TN,kN,EN,CN,_N,LN,NN,MN,IN,ON,BN,Vm,lr,Ac=M(()=>{"use strict";Yo();nBe={ID:/\^?[_a-zA-Z][\w_]*/,STRING:/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,NUMBER:/NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/,RegexLiteral:/\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/,WS:/\s+/,ML_COMMENT:/\/\*[\s\S]*?\*\//,SL_COMMENT:/\/\/[^\n\r]*/},Vv="AbstractRule";o(iBe,"isAbstractRule");Uv="AbstractType";o(aBe,"isAbstractType");yT="Condition";o(sBe,"isCondition");o(oBe,"isFeatureName");o(Iae,"isPrimitiveType");zD="TypeDefinition";o(lBe,"isTypeDefinition");vT="ValueLiteral";o(cBe,"isValueLiteral");GD="AbstractElement";o(Hv,"isAbstractElement");$D="ArrayLiteral";o(uBe,"isArrayLiteral");VD="ArrayType";o(UD,"isArrayType");HD="BooleanLiteral";o(WD,"isBooleanLiteral");YD="Conjunction";o(qD,"isConjunction");XD="Disjunction";o(jD,"isDisjunction");KD="Grammar";o(hBe,"isGrammar");Oae="GrammarImport";o(fBe,"isGrammarImport");QD="InferredType";o(bT,"isInferredType");ZD="Interface";o(wT,"isInterface");Pae="NamedArgument";o(dBe,"isNamedArgument");JD="Negation";o(eN,"isNegation");tN="NumberLiteral";o(pBe,"isNumberLiteral");rN="Parameter";o(mBe,"isParameter");nN="ParameterReference";o(iN,"isParameterReference");aN="ParserRule";o(Ma,"isParserRule");sN="ReferenceType";o(oN,"isReferenceType");Bae="ReturnType";o(lN,"isReturnType");cN="SimpleType";o(TT,"isSimpleType");uN="StringLiteral";o(gBe,"isStringLiteral");xT="TerminalRule";o(qo,"isTerminalRule");hN="Type";o(Wv,"isType");Fae="TypeAttribute";o(yBe,"isTypeAttribute");fN="UnionType";o(dN,"isUnionType");pN="Action";o(Ru,"isAction");mN="Alternatives";o(kT,"isAlternatives");gN="Assignment";o(Il,"isAssignment");yN="CharacterRange";o(vN,"isCharacterRange");xN="CrossReference";o(Yd,"isCrossReference");bN="EndOfFile";o(wN,"isEndOfFile");TN="Group";o(tf,"isGroup");kN="Keyword";o(Xo,"isKeyword");EN="NegatedToken";o(SN,"isNegatedToken");CN="RegexToken";o(AN,"isRegexToken");_N="RuleCall";o(Ol,"isRuleCall");LN="TerminalAlternatives";o(DN,"isTerminalAlternatives");NN="TerminalGroup";o(RN,"isTerminalGroup");MN="TerminalRuleCall";o(ET,"isTerminalRuleCall");IN="UnorderedGroup";o(ST,"isUnorderedGroup");ON="UntilToken";o(PN,"isUntilToken");BN="Wildcard";o(FN,"isWildcard");Vm=class extends $d{static{o(this,"LangiumGrammarAstReflection")}getAllTypes(){return["AbstractElement","AbstractRule","AbstractType","Action","Alternatives","ArrayLiteral","ArrayType","Assignment","BooleanLiteral","CharacterRange","Condition","Conjunction","CrossReference","Disjunction","EndOfFile","Grammar","GrammarImport","Group","InferredType","Interface","Keyword","NamedArgument","NegatedToken","Negation","NumberLiteral","Parameter","ParameterReference","ParserRule","ReferenceType","RegexToken","ReturnType","RuleCall","SimpleType","StringLiteral","TerminalAlternatives","TerminalGroup","TerminalRule","TerminalRuleCall","Type","TypeAttribute","TypeDefinition","UnionType","UnorderedGroup","UntilToken","ValueLiteral","Wildcard"]}computeIsSubtype(e,r){switch(e){case pN:case mN:case gN:case yN:case xN:case bN:case TN:case kN:case EN:case CN:case _N:case LN:case NN:case MN:case IN:case ON:case BN:return this.isSubtype(GD,r);case $D:case tN:case uN:return this.isSubtype(vT,r);case VD:case sN:case cN:case fN:return this.isSubtype(zD,r);case HD:return this.isSubtype(yT,r)||this.isSubtype(vT,r);case YD:case XD:case JD:case nN:return this.isSubtype(yT,r);case QD:case ZD:case hN:return this.isSubtype(Uv,r);case aN:return this.isSubtype(Vv,r)||this.isSubtype(Uv,r);case xT:return this.isSubtype(Vv,r);default:return!1}}getReferenceType(e){let r=`${e.container.$type}:${e.property}`;switch(r){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return Uv;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return Vv;case"Grammar:usedGrammars":return KD;case"NamedArgument:parameter":case"ParameterReference:parameter":return rN;case"TerminalRuleCall:rule":return xT;default:throw new Error(`${r} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case"AbstractElement":return{name:"AbstractElement",properties:[{name:"cardinality"},{name:"lookahead"}]};case"ArrayLiteral":return{name:"ArrayLiteral",properties:[{name:"elements",defaultValue:[]}]};case"ArrayType":return{name:"ArrayType",properties:[{name:"elementType"}]};case"BooleanLiteral":return{name:"BooleanLiteral",properties:[{name:"true",defaultValue:!1}]};case"Conjunction":return{name:"Conjunction",properties:[{name:"left"},{name:"right"}]};case"Disjunction":return{name:"Disjunction",properties:[{name:"left"},{name:"right"}]};case"Grammar":return{name:"Grammar",properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case"GrammarImport":return{name:"GrammarImport",properties:[{name:"path"}]};case"InferredType":return{name:"InferredType",properties:[{name:"name"}]};case"Interface":return{name:"Interface",properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case"NamedArgument":return{name:"NamedArgument",properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case"Negation":return{name:"Negation",properties:[{name:"value"}]};case"NumberLiteral":return{name:"NumberLiteral",properties:[{name:"value"}]};case"Parameter":return{name:"Parameter",properties:[{name:"name"}]};case"ParameterReference":return{name:"ParameterReference",properties:[{name:"parameter"}]};case"ParserRule":return{name:"ParserRule",properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case"ReferenceType":return{name:"ReferenceType",properties:[{name:"referenceType"}]};case"ReturnType":return{name:"ReturnType",properties:[{name:"name"}]};case"SimpleType":return{name:"SimpleType",properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case"StringLiteral":return{name:"StringLiteral",properties:[{name:"value"}]};case"TerminalRule":return{name:"TerminalRule",properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case"Type":return{name:"Type",properties:[{name:"name"},{name:"type"}]};case"TypeAttribute":return{name:"TypeAttribute",properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case"UnionType":return{name:"UnionType",properties:[{name:"types",defaultValue:[]}]};case"Action":return{name:"Action",properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case"Alternatives":return{name:"Alternatives",properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case"Assignment":return{name:"Assignment",properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case"CharacterRange":return{name:"CharacterRange",properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case"CrossReference":return{name:"CrossReference",properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case"EndOfFile":return{name:"EndOfFile",properties:[{name:"cardinality"},{name:"lookahead"}]};case"Group":return{name:"Group",properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case"Keyword":return{name:"Keyword",properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case"NegatedToken":return{name:"NegatedToken",properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case"RegexToken":return{name:"RegexToken",properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case"RuleCall":return{name:"RuleCall",properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case"TerminalAlternatives":return{name:"TerminalAlternatives",properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case"TerminalGroup":return{name:"TerminalGroup",properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case"TerminalRuleCall":return{name:"TerminalRuleCall",properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case"UnorderedGroup":return{name:"UnorderedGroup",properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case"UntilToken":return{name:"UntilToken",properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case"Wildcard":return{name:"Wildcard",properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:e,properties:[]}}}},lr=new Vm});var AT={};vr(AT,{assignMandatoryProperties:()=>$N,copyAstNode:()=>GN,findLocalReferences:()=>xBe,findRootNode:()=>zae,getContainerOfType:()=>qd,getDocument:()=>Fi,hasContainerOfType:()=>vBe,linkContentToContainer:()=>CT,streamAllContents:()=>_c,streamAst:()=>jo,streamContents:()=>qv,streamReferences:()=>Um});function CT(t){for(let[e,r]of Object.entries(t))e.startsWith("$")||(Array.isArray(r)?r.forEach((n,i)=>{ei(n)&&(n.$container=t,n.$containerProperty=e,n.$containerIndex=i)}):ei(r)&&(r.$container=t,r.$containerProperty=e))}function qd(t,e){let r=t;for(;r;){if(e(r))return r;r=r.$container}}function vBe(t,e){let r=t;for(;r;){if(e(r))return!0;r=r.$container}return!1}function Fi(t){let r=zae(t).$document;if(!r)throw new Error("AST node has no document.");return r}function zae(t){for(;t.$container;)t=t.$container;return t}function qv(t,e){if(!t)throw new Error("Node must be an AstNode.");let r=e?.range;return new ao(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),n=>{for(;n.keyIndexqv(r,e))}function jo(t,e){if(t){if(e?.range&&!zN(t,e.range))return new Cc(t,()=>[])}else throw new Error("Root node must be an AstNode.");return new Cc(t,r=>qv(r,e),{includeRoot:!0})}function zN(t,e){var r;if(!e)return!0;let n=(r=t.$cstNode)===null||r===void 0?void 0:r.range;return n?PD(n,e):!1}function Um(t){return new ao(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),e=>{for(;e.keyIndex{Um(n).forEach(i=>{i.reference.ref===t&&r.push(i.reference)})}),tn(r)}function $N(t,e){let r=t.getTypeMetaData(e.$type),n=e;for(let i of r.properties)i.defaultValue!==void 0&&n[i.name]===void 0&&(n[i.name]=Gae(i.defaultValue))}function Gae(t){return Array.isArray(t)?[...t.map(Gae)]:t}function GN(t,e){let r={$type:t.$type};for(let[n,i]of Object.entries(t))if(!n.startsWith("$"))if(ei(i))r[n]=GN(i,e);else if(ma(i))r[n]=e(r,n,i.$refNode,i.$refText);else if(Array.isArray(i)){let a=[];for(let s of i)ei(s)?a.push(GN(s,e)):ma(s)?a.push(e(r,n,s.$refNode,s.$refText)):a.push(s);r[n]=a}else r[n]=i;return CT(r),r}var es=M(()=>{"use strict";Yo();Rs();Ml();o(CT,"linkContentToContainer");o(qd,"getContainerOfType");o(vBe,"hasContainerOfType");o(Fi,"getDocument");o(zae,"findRootNode");o(qv,"streamContents");o(_c,"streamAllContents");o(jo,"streamAst");o(zN,"isAstNodeInRange");o(Um,"streamReferences");o(xBe,"findLocalReferences");o($N,"assignMandatoryProperties");o(Gae,"copyDefaultValue");o(GN,"copyAstNode")});function ar(t){return t.charCodeAt(0)}function _T(t,e){Array.isArray(t)?t.forEach(function(r){e.push(r)}):e.push(t)}function Hm(t,e){if(t[e]===!0)throw"duplicate flag "+e;let r=t[e];t[e]=!0}function Xd(t){if(t===void 0)throw Error("Internal Error - Should never get here!");return!0}function Xv(){throw Error("Internal Error - Should never get here!")}function VN(t){return t.type==="Character"}var UN=M(()=>{"use strict";o(ar,"cc");o(_T,"insertToSet");o(Hm,"addFlag");o(Xd,"ASSERT_EXISTS");o(Xv,"ASSERT_NEVER_REACH_HERE");o(VN,"isCharacter")});var jv,Kv,HN,$ae=M(()=>{"use strict";UN();jv=[];for(let t=ar("0");t<=ar("9");t++)jv.push(t);Kv=[ar("_")].concat(jv);for(let t=ar("a");t<=ar("z");t++)Kv.push(t);for(let t=ar("A");t<=ar("Z");t++)Kv.push(t);HN=[ar(" "),ar("\f"),ar(` -`),ar("\r"),ar(" "),ar("\v"),ar(" "),ar("\xA0"),ar("\u1680"),ar("\u2000"),ar("\u2001"),ar("\u2002"),ar("\u2003"),ar("\u2004"),ar("\u2005"),ar("\u2006"),ar("\u2007"),ar("\u2008"),ar("\u2009"),ar("\u200A"),ar("\u2028"),ar("\u2029"),ar("\u202F"),ar("\u205F"),ar("\u3000"),ar("\uFEFF")]});var bBe,LT,wBe,jd,Vae=M(()=>{"use strict";UN();$ae();bBe=/[0-9a-fA-F]/,LT=/[0-9]/,wBe=/[1-9]/,jd=class{static{o(this,"RegExpParser")}constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");let r=this.disjunction();this.consumeChar("/");let n={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":Hm(n,"global");break;case"i":Hm(n,"ignoreCase");break;case"m":Hm(n,"multiLine");break;case"u":Hm(n,"unicode");break;case"y":Hm(n,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:n,value:r,loc:this.loc(0)}}disjunction(){let e=[],r=this.idx;for(e.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(r)}}alternative(){let e=[],r=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(r)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){let e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let r;switch(this.popChar()){case"=":r="Lookahead";break;case"!":r="NegativeLookahead";break}Xd(r);let n=this.disjunction();return this.consumeChar(")"),{type:r,value:n,loc:this.loc(e)}}return Xv()}quantifier(e=!1){let r,n=this.idx;switch(this.popChar()){case"*":r={atLeast:0,atMost:1/0};break;case"+":r={atLeast:1,atMost:1/0};break;case"?":r={atLeast:0,atMost:1};break;case"{":let i=this.integerIncludingZero();switch(this.popChar()){case"}":r={atLeast:i,atMost:i};break;case",":let a;this.isDigit()?(a=this.integerIncludingZero(),r={atLeast:i,atMost:a}):r={atLeast:i,atMost:1/0},this.consumeChar("}");break}if(e===!0&&r===void 0)return;Xd(r);break}if(!(e===!0&&r===void 0)&&Xd(r))return this.peekChar(0)==="?"?(this.consumeChar("?"),r.greedy=!1):r.greedy=!0,r.type="Quantifier",r.loc=this.loc(n),r}atom(){let e,r=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),Xd(e)?(e.loc=this.loc(r),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):Xv()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[ar(` -`),ar("\r"),ar("\u2028"),ar("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,r=!1;switch(this.popChar()){case"d":e=jv;break;case"D":e=jv,r=!0;break;case"s":e=HN;break;case"S":e=HN,r=!0;break;case"w":e=Kv;break;case"W":e=Kv,r=!0;break}return Xd(e)?{type:"Set",value:e,complement:r}:Xv()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=ar("\f");break;case"n":e=ar(` -`);break;case"r":e=ar("\r");break;case"t":e=ar(" ");break;case"v":e=ar("\v");break}return Xd(e)?{type:"Character",value:e}:Xv()}controlLetterEscapeAtom(){this.consumeChar("c");let e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:ar("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){let e=this.popChar();return{type:"Character",value:ar(e)}}classPatternCharacterAtom(){switch(this.peekChar()){case` -`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:let e=this.popChar();return{type:"Character",value:ar(e)}}}characterClass(){let e=[],r=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),r=!0);this.isClassAtom();){let n=this.classAtom(),i=n.type==="Character";if(VN(n)&&this.isRangeDash()){this.consumeChar("-");let a=this.classAtom(),s=a.type==="Character";if(VN(a)){if(a.valueeOe});var eOe,qie=M(()=>{"use strict";Gie();$ie();Vie();Hie();eOe={parser:zie,get db(){return new KT},renderer:mR,styles:Uie}});function ii(t){return typeof t=="object"&&t!==null&&typeof t.$type=="string"}function ma(t){return typeof t=="object"&&t!==null&&typeof t.$refText=="string"}function gR(t){return typeof t=="object"&&t!==null&&typeof t.name=="string"&&typeof t.type=="string"&&typeof t.path=="string"}function qd(t){return typeof t=="object"&&t!==null&&ii(t.container)&&ma(t.reference)&&typeof t.message=="string"}function Al(t){return typeof t=="object"&&t!==null&&Array.isArray(t.content)}function ef(t){return typeof t=="object"&&t!==null&&typeof t.tokenType=="object"}function x2(t){return Al(t)&&typeof t.fullText=="string"}var Wd,_l=M(()=>{"use strict";o(ii,"isAstNode");o(ma,"isReference");o(gR,"isAstNodeDescription");o(qd,"isLinkingError");Wd=class{static{o(this,"AbstractAstReflection")}constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,r){return ii(e)&&this.isSubtype(e.$type,r)}isSubtype(e,r){if(e===r)return!0;let n=this.subtypes[e];n||(n=this.subtypes[e]={});let i=n[r];if(i!==void 0)return i;{let a=this.computeIsSubtype(e,r);return n[r]=a,a}}getAllSubTypes(e){let r=this.allSubtypes[e];if(r)return r;{let n=this.getAllTypes(),i=[];for(let a of n)this.isSubtype(a,e)&&i.push(a);return this.allSubtypes[e]=i,i}}};o(Al,"isCompositeCstNode");o(ef,"isLeafCstNode");o(x2,"isRootCstNode")});function iOe(t){return typeof t=="string"?t:typeof t>"u"?"undefined":typeof t.toString=="function"?t.toString():Object.prototype.toString.call(t)}function QT(t){return!!t&&typeof t[Symbol.iterator]=="function"}function en(...t){if(t.length===1){let e=t[0];if(e instanceof eo)return e;if(QT(e))return new eo(()=>e[Symbol.iterator](),r=>r.next());if(typeof e.length=="number")return new eo(()=>({index:0}),r=>r.index1?new eo(()=>({collIndex:0,arrIndex:0}),e=>{do{if(e.iterator){let r=e.iterator.next();if(!r.done)return r;e.iterator=void 0}if(e.array){if(e.arrIndex{"use strict";eo=class t{static{o(this,"StreamImpl")}constructor(e,r){this.startFn=e,this.nextFn=r}iterator(){let e={state:this.startFn(),next:o(()=>this.nextFn(e.state),"next"),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let e=this.iterator(),r=0,n=e.next();for(;!n.done;)r++,n=e.next();return r}toArray(){let e=[],r=this.iterator(),n;do n=r.next(),n.value!==void 0&&e.push(n.value);while(!n.done);return e}toSet(){return new Set(this)}toMap(e,r){let n=this.map(i=>[e?e(i):i,r?r(i):i]);return new Map(n)}toString(){return this.join()}concat(e){return new t(()=>({first:this.startFn(),firstDone:!1,iterator:e[Symbol.iterator]()}),r=>{let n;if(!r.firstDone){do if(n=this.nextFn(r.first),!n.done)return n;while(!n.done);r.firstDone=!0}do if(n=r.iterator.next(),!n.done)return n;while(!n.done);return Na})}join(e=","){let r=this.iterator(),n="",i,a=!1;do i=r.next(),i.done||(a&&(n+=e),n+=iOe(i.value)),a=!0;while(!i.done);return n}indexOf(e,r=0){let n=this.iterator(),i=0,a=n.next();for(;!a.done;){if(i>=r&&a.value===e)return i;a=n.next(),i++}return-1}every(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(!e(n.value))return!1;n=r.next()}return!0}some(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(e(n.value))return!0;n=r.next()}return!1}forEach(e){let r=this.iterator(),n=0,i=r.next();for(;!i.done;)e(i.value,n),i=r.next(),n++}map(e){return new t(this.startFn,r=>{let{done:n,value:i}=this.nextFn(r);return n?Na:{done:!1,value:e(i)}})}filter(e){return new t(this.startFn,r=>{let n;do if(n=this.nextFn(r),!n.done&&e(n.value))return n;while(!n.done);return Na})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,r){let n=this.iterator(),i=r,a=n.next();for(;!a.done;)i===void 0?i=a.value:i=e(i,a.value),a=n.next();return i}reduceRight(e,r){return this.recursiveReduce(this.iterator(),e,r)}recursiveReduce(e,r,n){let i=e.next();if(i.done)return n;let a=this.recursiveReduce(e,r,n);return a===void 0?i.value:r(a,i.value)}find(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(e(n.value))return n.value;n=r.next()}}findIndex(e){let r=this.iterator(),n=0,i=r.next();for(;!i.done;){if(e(i.value))return n;i=r.next(),n++}return-1}includes(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(n.value===e)return!0;n=r.next()}return!1}flatMap(e){return new t(()=>({this:this.startFn()}),r=>{do{if(r.iterator){let a=r.iterator.next();if(a.done)r.iterator=void 0;else return a}let{done:n,value:i}=this.nextFn(r.this);if(!n){let a=e(i);if(QT(a))r.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}}while(r.iterator);return Na})}flat(e){if(e===void 0&&(e=1),e<=0)return this;let r=e>1?this.flat(e-1):this;return new t(()=>({this:r.startFn()}),n=>{do{if(n.iterator){let s=n.iterator.next();if(s.done)n.iterator=void 0;else return s}let{done:i,value:a}=r.nextFn(n.this);if(!i)if(QT(a))n.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}while(n.iterator);return Na})}head(){let r=this.iterator().next();if(!r.done)return r.value}tail(e=1){return new t(()=>{let r=this.startFn();for(let n=0;n({size:0,state:this.startFn()}),r=>(r.size++,r.size>e?Na:this.nextFn(r.state)))}distinct(e){return new t(()=>({set:new Set,internalState:this.startFn()}),r=>{let n;do if(n=this.nextFn(r.internalState),!n.done){let i=e?e(n.value):n.value;if(!r.set.has(i))return r.set.add(i),n}while(!n.done);return Na})}exclude(e,r){let n=new Set;for(let i of e){let a=r?r(i):i;n.add(a)}return this.filter(i=>{let a=r?r(i):i;return!n.has(a)})}};o(iOe,"toString");o(QT,"isIterable");b2=new eo(()=>{},()=>Na),Na=Object.freeze({done:!0,value:void 0});o(en,"stream");Ac=class extends eo{static{o(this,"TreeStreamImpl")}constructor(e,r,n){super(()=>({iterators:n?.includeRoot?[[e][Symbol.iterator]()]:[r(e)[Symbol.iterator]()],pruned:!1}),i=>{for(i.pruned&&(i.iterators.pop(),i.pruned=!1);i.iterators.length>0;){let s=i.iterators[i.iterators.length-1].next();if(s.done)i.iterators.pop();else return i.iterators.push(r(s.value)[Symbol.iterator]()),s}return Na})}iterator(){let e={state:this.startFn(),next:o(()=>this.nextFn(e.state),"next"),prune:o(()=>{e.state.pruned=!0},"prune"),[Symbol.iterator]:()=>e};return e}};(function(t){function e(a){return a.reduce((s,l)=>s+l,0)}o(e,"sum"),t.sum=e;function r(a){return a.reduce((s,l)=>s*l,0)}o(r,"product"),t.product=r;function n(a){return a.reduce((s,l)=>Math.min(s,l))}o(n,"min"),t.min=n;function i(a){return a.reduce((s,l)=>Math.max(s,l))}o(i,"max"),t.max=i})(Om||(Om={}))});var JT={};pr(JT,{DefaultNameRegexp:()=>ZT,RangeComparison:()=>_c,compareRange:()=>Kie,findCommentNode:()=>bR,findDeclarationNodeAtOffset:()=>sOe,findLeafNodeAtOffset:()=>wR,findLeafNodeBeforeOffset:()=>Qie,flattenCst:()=>aOe,getInteriorNodes:()=>cOe,getNextNode:()=>oOe,getPreviousNode:()=>Jie,getStartlineNode:()=>lOe,inRange:()=>xR,isChildNode:()=>vR,isCommentNode:()=>yR,streamCst:()=>Yd,toDocumentSegment:()=>Xd,tokenToRange:()=>Pm});function Yd(t){return new Ac(t,e=>Al(e)?e.content:[],{includeRoot:!0})}function aOe(t){return Yd(t).filter(ef)}function vR(t,e){for(;t.container;)if(t=t.container,t===e)return!0;return!1}function Pm(t){return{start:{character:t.startColumn-1,line:t.startLine-1},end:{character:t.endColumn,line:t.endLine-1}}}function Xd(t){if(!t)return;let{offset:e,end:r,range:n}=t;return{range:n,offset:e,end:r,length:r-e}}function Kie(t,e){if(t.end.linee.end.line||t.start.line===e.end.line&&t.start.character>=e.end.character)return _c.After;let r=t.start.line>e.start.line||t.start.line===e.start.line&&t.start.character>=e.start.character,n=t.end.line_c.After}function sOe(t,e,r=ZT){if(t){if(e>0){let n=e-t.offset,i=t.text.charAt(n);r.test(i)||e--}return wR(t,e)}}function bR(t,e){if(t){let r=Jie(t,!0);if(r&&yR(r,e))return r;if(x2(t)){let n=t.content.findIndex(i=>!i.hidden);for(let i=n-1;i>=0;i--){let a=t.content[i];if(yR(a,e))return a}}}}function yR(t,e){return ef(t)&&e.includes(t.tokenType.name)}function wR(t,e){if(ef(t))return t;if(Al(t)){let r=Zie(t,e,!1);if(r)return wR(r,e)}}function Qie(t,e){if(ef(t))return t;if(Al(t)){let r=Zie(t,e,!0);if(r)return Qie(r,e)}}function Zie(t,e,r){let n=0,i=t.content.length-1,a;for(;n<=i;){let s=Math.floor((n+i)/2),l=t.content[s];if(l.offset<=e&&l.end>e)return l;l.end<=e?(a=r?l:void 0,n=s+1):i=s-1}return a}function Jie(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t);for(;n>0;){n--;let i=r.content[n];if(e||!i.hidden)return i}t=r}}function oOe(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t),i=r.content.length-1;for(;n{"use strict";_l();Ms();o(Yd,"streamCst");o(aOe,"flattenCst");o(vR,"isChildNode");o(Pm,"tokenToRange");o(Xd,"toDocumentSegment");(function(t){t[t.Before=0]="Before",t[t.After=1]="After",t[t.OverlapFront=2]="OverlapFront",t[t.OverlapBack=3]="OverlapBack",t[t.Inside=4]="Inside",t[t.Outside=5]="Outside"})(_c||(_c={}));o(Kie,"compareRange");o(xR,"inRange");ZT=/^[\w\p{L}]$/u;o(sOe,"findDeclarationNodeAtOffset");o(bR,"findCommentNode");o(yR,"isCommentNode");o(wR,"findLeafNodeAtOffset");o(Qie,"findLeafNodeBeforeOffset");o(Zie,"binarySearch");o(Jie,"getPreviousNode");o(oOe,"getNextNode");o(lOe,"getStartlineNode");o(cOe,"getInteriorNodes");o(uOe,"getCommonParent");o(jie,"getParentChain")});function Dc(t){throw new Error("Error! The input value was not handled.")}var jd,ek=M(()=>{"use strict";jd=class extends Error{static{o(this,"ErrorWithLocation")}constructor(e,r){super(e?`${r} at ${e.range.start.line}:${e.range.start.character}`:r)}};o(Dc,"assertUnreachable")});var D2={};pr(D2,{AbstractElement:()=>zm,AbstractRule:()=>Bm,AbstractType:()=>Fm,Action:()=>ig,Alternatives:()=>ag,ArrayLiteral:()=>Gm,ArrayType:()=>$m,Assignment:()=>sg,BooleanLiteral:()=>Vm,CharacterRange:()=>og,Condition:()=>w2,Conjunction:()=>Um,CrossReference:()=>lg,Disjunction:()=>Hm,EndOfFile:()=>cg,Grammar:()=>Wm,GrammarImport:()=>k2,Group:()=>ug,InferredType:()=>qm,Interface:()=>Ym,Keyword:()=>hg,LangiumGrammarAstReflection:()=>wg,LangiumGrammarTerminals:()=>hOe,NamedArgument:()=>E2,NegatedToken:()=>fg,Negation:()=>Xm,NumberLiteral:()=>jm,Parameter:()=>Km,ParameterReference:()=>Qm,ParserRule:()=>Zm,ReferenceType:()=>Jm,RegexToken:()=>dg,ReturnType:()=>S2,RuleCall:()=>pg,SimpleType:()=>eg,StringLiteral:()=>tg,TerminalAlternatives:()=>mg,TerminalGroup:()=>gg,TerminalRule:()=>Kd,TerminalRuleCall:()=>yg,Type:()=>rg,TypeAttribute:()=>C2,TypeDefinition:()=>tk,UnionType:()=>ng,UnorderedGroup:()=>vg,UntilToken:()=>xg,ValueLiteral:()=>T2,Wildcard:()=>bg,isAbstractElement:()=>A2,isAbstractRule:()=>fOe,isAbstractType:()=>dOe,isAction:()=>Ru,isAlternatives:()=>ak,isArrayLiteral:()=>vOe,isArrayType:()=>TR,isAssignment:()=>Ll,isBooleanLiteral:()=>kR,isCharacterRange:()=>RR,isCondition:()=>pOe,isConjunction:()=>ER,isCrossReference:()=>Qd,isDisjunction:()=>SR,isEndOfFile:()=>NR,isFeatureName:()=>mOe,isGrammar:()=>xOe,isGrammarImport:()=>bOe,isGroup:()=>tf,isInferredType:()=>rk,isInterface:()=>nk,isKeyword:()=>Go,isNamedArgument:()=>wOe,isNegatedToken:()=>MR,isNegation:()=>CR,isNumberLiteral:()=>TOe,isParameter:()=>kOe,isParameterReference:()=>AR,isParserRule:()=>Ma,isPrimitiveType:()=>eae,isReferenceType:()=>_R,isRegexToken:()=>IR,isReturnType:()=>DR,isRuleCall:()=>Rl,isSimpleType:()=>ik,isStringLiteral:()=>EOe,isTerminalAlternatives:()=>OR,isTerminalGroup:()=>PR,isTerminalRule:()=>to,isTerminalRuleCall:()=>sk,isType:()=>_2,isTypeAttribute:()=>SOe,isTypeDefinition:()=>gOe,isUnionType:()=>LR,isUnorderedGroup:()=>ok,isUntilToken:()=>BR,isValueLiteral:()=>yOe,isWildcard:()=>FR,reflection:()=>or});function fOe(t){return or.isInstance(t,Bm)}function dOe(t){return or.isInstance(t,Fm)}function pOe(t){return or.isInstance(t,w2)}function mOe(t){return eae(t)||t==="current"||t==="entry"||t==="extends"||t==="false"||t==="fragment"||t==="grammar"||t==="hidden"||t==="import"||t==="interface"||t==="returns"||t==="terminal"||t==="true"||t==="type"||t==="infer"||t==="infers"||t==="with"||typeof t=="string"&&/\^?[_a-zA-Z][\w_]*/.test(t)}function eae(t){return t==="string"||t==="number"||t==="boolean"||t==="Date"||t==="bigint"}function gOe(t){return or.isInstance(t,tk)}function yOe(t){return or.isInstance(t,T2)}function A2(t){return or.isInstance(t,zm)}function vOe(t){return or.isInstance(t,Gm)}function TR(t){return or.isInstance(t,$m)}function kR(t){return or.isInstance(t,Vm)}function ER(t){return or.isInstance(t,Um)}function SR(t){return or.isInstance(t,Hm)}function xOe(t){return or.isInstance(t,Wm)}function bOe(t){return or.isInstance(t,k2)}function rk(t){return or.isInstance(t,qm)}function nk(t){return or.isInstance(t,Ym)}function wOe(t){return or.isInstance(t,E2)}function CR(t){return or.isInstance(t,Xm)}function TOe(t){return or.isInstance(t,jm)}function kOe(t){return or.isInstance(t,Km)}function AR(t){return or.isInstance(t,Qm)}function Ma(t){return or.isInstance(t,Zm)}function _R(t){return or.isInstance(t,Jm)}function DR(t){return or.isInstance(t,S2)}function ik(t){return or.isInstance(t,eg)}function EOe(t){return or.isInstance(t,tg)}function to(t){return or.isInstance(t,Kd)}function _2(t){return or.isInstance(t,rg)}function SOe(t){return or.isInstance(t,C2)}function LR(t){return or.isInstance(t,ng)}function Ru(t){return or.isInstance(t,ig)}function ak(t){return or.isInstance(t,ag)}function Ll(t){return or.isInstance(t,sg)}function RR(t){return or.isInstance(t,og)}function Qd(t){return or.isInstance(t,lg)}function NR(t){return or.isInstance(t,cg)}function tf(t){return or.isInstance(t,ug)}function Go(t){return or.isInstance(t,hg)}function MR(t){return or.isInstance(t,fg)}function IR(t){return or.isInstance(t,dg)}function Rl(t){return or.isInstance(t,pg)}function OR(t){return or.isInstance(t,mg)}function PR(t){return or.isInstance(t,gg)}function sk(t){return or.isInstance(t,yg)}function ok(t){return or.isInstance(t,vg)}function BR(t){return or.isInstance(t,xg)}function FR(t){return or.isInstance(t,bg)}var hOe,Bm,Fm,w2,tk,T2,zm,Gm,$m,Vm,Um,Hm,Wm,k2,qm,Ym,E2,Xm,jm,Km,Qm,Zm,Jm,S2,eg,tg,Kd,rg,C2,ng,ig,ag,sg,og,lg,cg,ug,hg,fg,dg,pg,mg,gg,yg,vg,xg,bg,wg,or,Lc=M(()=>{"use strict";_l();hOe={ID:/\^?[_a-zA-Z][\w_]*/,STRING:/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,NUMBER:/NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/,RegexLiteral:/\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/,WS:/\s+/,ML_COMMENT:/\/\*[\s\S]*?\*\//,SL_COMMENT:/\/\/[^\n\r]*/},Bm="AbstractRule";o(fOe,"isAbstractRule");Fm="AbstractType";o(dOe,"isAbstractType");w2="Condition";o(pOe,"isCondition");o(mOe,"isFeatureName");o(eae,"isPrimitiveType");tk="TypeDefinition";o(gOe,"isTypeDefinition");T2="ValueLiteral";o(yOe,"isValueLiteral");zm="AbstractElement";o(A2,"isAbstractElement");Gm="ArrayLiteral";o(vOe,"isArrayLiteral");$m="ArrayType";o(TR,"isArrayType");Vm="BooleanLiteral";o(kR,"isBooleanLiteral");Um="Conjunction";o(ER,"isConjunction");Hm="Disjunction";o(SR,"isDisjunction");Wm="Grammar";o(xOe,"isGrammar");k2="GrammarImport";o(bOe,"isGrammarImport");qm="InferredType";o(rk,"isInferredType");Ym="Interface";o(nk,"isInterface");E2="NamedArgument";o(wOe,"isNamedArgument");Xm="Negation";o(CR,"isNegation");jm="NumberLiteral";o(TOe,"isNumberLiteral");Km="Parameter";o(kOe,"isParameter");Qm="ParameterReference";o(AR,"isParameterReference");Zm="ParserRule";o(Ma,"isParserRule");Jm="ReferenceType";o(_R,"isReferenceType");S2="ReturnType";o(DR,"isReturnType");eg="SimpleType";o(ik,"isSimpleType");tg="StringLiteral";o(EOe,"isStringLiteral");Kd="TerminalRule";o(to,"isTerminalRule");rg="Type";o(_2,"isType");C2="TypeAttribute";o(SOe,"isTypeAttribute");ng="UnionType";o(LR,"isUnionType");ig="Action";o(Ru,"isAction");ag="Alternatives";o(ak,"isAlternatives");sg="Assignment";o(Ll,"isAssignment");og="CharacterRange";o(RR,"isCharacterRange");lg="CrossReference";o(Qd,"isCrossReference");cg="EndOfFile";o(NR,"isEndOfFile");ug="Group";o(tf,"isGroup");hg="Keyword";o(Go,"isKeyword");fg="NegatedToken";o(MR,"isNegatedToken");dg="RegexToken";o(IR,"isRegexToken");pg="RuleCall";o(Rl,"isRuleCall");mg="TerminalAlternatives";o(OR,"isTerminalAlternatives");gg="TerminalGroup";o(PR,"isTerminalGroup");yg="TerminalRuleCall";o(sk,"isTerminalRuleCall");vg="UnorderedGroup";o(ok,"isUnorderedGroup");xg="UntilToken";o(BR,"isUntilToken");bg="Wildcard";o(FR,"isWildcard");wg=class extends Wd{static{o(this,"LangiumGrammarAstReflection")}getAllTypes(){return[zm,Bm,Fm,ig,ag,Gm,$m,sg,Vm,og,w2,Um,lg,Hm,cg,Wm,k2,ug,qm,Ym,hg,E2,fg,Xm,jm,Km,Qm,Zm,Jm,dg,S2,pg,eg,tg,mg,gg,Kd,yg,rg,C2,tk,ng,vg,xg,T2,bg]}computeIsSubtype(e,r){switch(e){case ig:case ag:case sg:case og:case lg:case cg:case ug:case hg:case fg:case dg:case pg:case mg:case gg:case yg:case vg:case xg:case bg:return this.isSubtype(zm,r);case Gm:case jm:case tg:return this.isSubtype(T2,r);case $m:case Jm:case eg:case ng:return this.isSubtype(tk,r);case Vm:return this.isSubtype(w2,r)||this.isSubtype(T2,r);case Um:case Hm:case Xm:case Qm:return this.isSubtype(w2,r);case qm:case Ym:case rg:return this.isSubtype(Fm,r);case Zm:return this.isSubtype(Bm,r)||this.isSubtype(Fm,r);case Kd:return this.isSubtype(Bm,r);default:return!1}}getReferenceType(e){let r=`${e.container.$type}:${e.property}`;switch(r){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return Fm;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return Bm;case"Grammar:usedGrammars":return Wm;case"NamedArgument:parameter":case"ParameterReference:parameter":return Km;case"TerminalRuleCall:rule":return Kd;default:throw new Error(`${r} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case zm:return{name:zm,properties:[{name:"cardinality"},{name:"lookahead"}]};case Gm:return{name:Gm,properties:[{name:"elements",defaultValue:[]}]};case $m:return{name:$m,properties:[{name:"elementType"}]};case Vm:return{name:Vm,properties:[{name:"true",defaultValue:!1}]};case Um:return{name:Um,properties:[{name:"left"},{name:"right"}]};case Hm:return{name:Hm,properties:[{name:"left"},{name:"right"}]};case Wm:return{name:Wm,properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case k2:return{name:k2,properties:[{name:"path"}]};case qm:return{name:qm,properties:[{name:"name"}]};case Ym:return{name:Ym,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case E2:return{name:E2,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case Xm:return{name:Xm,properties:[{name:"value"}]};case jm:return{name:jm,properties:[{name:"value"}]};case Km:return{name:Km,properties:[{name:"name"}]};case Qm:return{name:Qm,properties:[{name:"parameter"}]};case Zm:return{name:Zm,properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case Jm:return{name:Jm,properties:[{name:"referenceType"}]};case S2:return{name:S2,properties:[{name:"name"}]};case eg:return{name:eg,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case tg:return{name:tg,properties:[{name:"value"}]};case Kd:return{name:Kd,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case rg:return{name:rg,properties:[{name:"name"},{name:"type"}]};case C2:return{name:C2,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case ng:return{name:ng,properties:[{name:"types",defaultValue:[]}]};case ig:return{name:ig,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case ag:return{name:ag,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case sg:return{name:sg,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case og:return{name:og,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case lg:return{name:lg,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case cg:return{name:cg,properties:[{name:"cardinality"},{name:"lookahead"}]};case ug:return{name:ug,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case hg:return{name:hg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case fg:return{name:fg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case dg:return{name:dg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case pg:return{name:pg,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case mg:return{name:mg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case gg:return{name:gg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case yg:return{name:yg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case vg:return{name:vg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case xg:return{name:xg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case bg:return{name:bg,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:e,properties:[]}}}},or=new wg});var ck={};pr(ck,{assignMandatoryProperties:()=>$R,copyAstNode:()=>GR,findLocalReferences:()=>AOe,findRootNode:()=>L2,getContainerOfType:()=>Zd,getDocument:()=>Ia,hasContainerOfType:()=>COe,linkContentToContainer:()=>lk,streamAllContents:()=>Rc,streamAst:()=>$o,streamContents:()=>R2,streamReferences:()=>Tg});function lk(t){for(let[e,r]of Object.entries(t))e.startsWith("$")||(Array.isArray(r)?r.forEach((n,i)=>{ii(n)&&(n.$container=t,n.$containerProperty=e,n.$containerIndex=i)}):ii(r)&&(r.$container=t,r.$containerProperty=e))}function Zd(t,e){let r=t;for(;r;){if(e(r))return r;r=r.$container}}function COe(t,e){let r=t;for(;r;){if(e(r))return!0;r=r.$container}return!1}function Ia(t){let r=L2(t).$document;if(!r)throw new Error("AST node has no document.");return r}function L2(t){for(;t.$container;)t=t.$container;return t}function R2(t,e){if(!t)throw new Error("Node must be an AstNode.");let r=e?.range;return new eo(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),n=>{for(;n.keyIndexR2(r,e))}function $o(t,e){if(t){if(e?.range&&!zR(t,e.range))return new Ac(t,()=>[])}else throw new Error("Root node must be an AstNode.");return new Ac(t,r=>R2(r,e),{includeRoot:!0})}function zR(t,e){var r;if(!e)return!0;let n=(r=t.$cstNode)===null||r===void 0?void 0:r.range;return n?xR(n,e):!1}function Tg(t){return new eo(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),e=>{for(;e.keyIndex{Tg(n).forEach(i=>{i.reference.ref===t&&r.push(i.reference)})}),en(r)}function $R(t,e){let r=t.getTypeMetaData(e.$type),n=e;for(let i of r.properties)i.defaultValue!==void 0&&n[i.name]===void 0&&(n[i.name]=tae(i.defaultValue))}function tae(t){return Array.isArray(t)?[...t.map(tae)]:t}function GR(t,e){let r={$type:t.$type};for(let[n,i]of Object.entries(t))if(!n.startsWith("$"))if(ii(i))r[n]=GR(i,e);else if(ma(i))r[n]=e(r,n,i.$refNode,i.$refText);else if(Array.isArray(i)){let a=[];for(let s of i)ii(s)?a.push(GR(s,e)):ma(s)?a.push(e(r,n,s.$refNode,s.$refText)):a.push(s);r[n]=a}else r[n]=i;return lk(r),r}var rs=M(()=>{"use strict";_l();Ms();Dl();o(lk,"linkContentToContainer");o(Zd,"getContainerOfType");o(COe,"hasContainerOfType");o(Ia,"getDocument");o(L2,"findRootNode");o(R2,"streamContents");o(Rc,"streamAllContents");o($o,"streamAst");o(zR,"isAstNodeInRange");o(Tg,"streamReferences");o(AOe,"findLocalReferences");o($R,"assignMandatoryProperties");o(tae,"copyDefaultValue");o(GR,"copyAstNode")});function ir(t){return t.charCodeAt(0)}function uk(t,e){Array.isArray(t)?t.forEach(function(r){e.push(r)}):e.push(t)}function kg(t,e){if(t[e]===!0)throw"duplicate flag "+e;let r=t[e];t[e]=!0}function Jd(t){if(t===void 0)throw Error("Internal Error - Should never get here!");return!0}function N2(){throw Error("Internal Error - Should never get here!")}function VR(t){return t.type==="Character"}var UR=M(()=>{"use strict";o(ir,"cc");o(uk,"insertToSet");o(kg,"addFlag");o(Jd,"ASSERT_EXISTS");o(N2,"ASSERT_NEVER_REACH_HERE");o(VR,"isCharacter")});var M2,I2,HR,rae=M(()=>{"use strict";UR();M2=[];for(let t=ir("0");t<=ir("9");t++)M2.push(t);I2=[ir("_")].concat(M2);for(let t=ir("a");t<=ir("z");t++)I2.push(t);for(let t=ir("A");t<=ir("Z");t++)I2.push(t);HR=[ir(" "),ir("\f"),ir(` +`),ir("\r"),ir(" "),ir("\v"),ir(" "),ir("\xA0"),ir("\u1680"),ir("\u2000"),ir("\u2001"),ir("\u2002"),ir("\u2003"),ir("\u2004"),ir("\u2005"),ir("\u2006"),ir("\u2007"),ir("\u2008"),ir("\u2009"),ir("\u200A"),ir("\u2028"),ir("\u2029"),ir("\u202F"),ir("\u205F"),ir("\u3000"),ir("\uFEFF")]});var _Oe,hk,DOe,ep,nae=M(()=>{"use strict";UR();rae();_Oe=/[0-9a-fA-F]/,hk=/[0-9]/,DOe=/[1-9]/,ep=class{static{o(this,"RegExpParser")}constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");let r=this.disjunction();this.consumeChar("/");let n={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":kg(n,"global");break;case"i":kg(n,"ignoreCase");break;case"m":kg(n,"multiLine");break;case"u":kg(n,"unicode");break;case"y":kg(n,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:n,value:r,loc:this.loc(0)}}disjunction(){let e=[],r=this.idx;for(e.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(r)}}alternative(){let e=[],r=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(r)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){let e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let r;switch(this.popChar()){case"=":r="Lookahead";break;case"!":r="NegativeLookahead";break}Jd(r);let n=this.disjunction();return this.consumeChar(")"),{type:r,value:n,loc:this.loc(e)}}return N2()}quantifier(e=!1){let r,n=this.idx;switch(this.popChar()){case"*":r={atLeast:0,atMost:1/0};break;case"+":r={atLeast:1,atMost:1/0};break;case"?":r={atLeast:0,atMost:1};break;case"{":let i=this.integerIncludingZero();switch(this.popChar()){case"}":r={atLeast:i,atMost:i};break;case",":let a;this.isDigit()?(a=this.integerIncludingZero(),r={atLeast:i,atMost:a}):r={atLeast:i,atMost:1/0},this.consumeChar("}");break}if(e===!0&&r===void 0)return;Jd(r);break}if(!(e===!0&&r===void 0)&&Jd(r))return this.peekChar(0)==="?"?(this.consumeChar("?"),r.greedy=!1):r.greedy=!0,r.type="Quantifier",r.loc=this.loc(n),r}atom(){let e,r=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),Jd(e)?(e.loc=this.loc(r),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):N2()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[ir(` +`),ir("\r"),ir("\u2028"),ir("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,r=!1;switch(this.popChar()){case"d":e=M2;break;case"D":e=M2,r=!0;break;case"s":e=HR;break;case"S":e=HR,r=!0;break;case"w":e=I2;break;case"W":e=I2,r=!0;break}return Jd(e)?{type:"Set",value:e,complement:r}:N2()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=ir("\f");break;case"n":e=ir(` +`);break;case"r":e=ir("\r");break;case"t":e=ir(" ");break;case"v":e=ir("\v");break}return Jd(e)?{type:"Character",value:e}:N2()}controlLetterEscapeAtom(){this.consumeChar("c");let e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:ir("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){let e=this.popChar();return{type:"Character",value:ir(e)}}classPatternCharacterAtom(){switch(this.peekChar()){case` +`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:let e=this.popChar();return{type:"Character",value:ir(e)}}}characterClass(){let e=[],r=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),r=!0);this.isClassAtom();){let n=this.classAtom(),i=n.type==="Character";if(VR(n)&&this.isRangeDash()){this.consumeChar("-");let a=this.classAtom(),s=a.type==="Character";if(VR(a)){if(a.value=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}}});var Lc,Uae=M(()=>{"use strict";Lc=class{static{o(this,"BaseRegExpVisitor")}visitChildren(e){for(let r in e){let n=e[r];e.hasOwnProperty(r)&&(n.type!==void 0?this.visit(n):Array.isArray(n)&&n.forEach(i=>{this.visit(i)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e);break}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}}});var Qv=M(()=>{"use strict";Vae();Uae()});var NT={};vr(NT,{NEWLINE_REGEXP:()=>YN,escapeRegExp:()=>Qd,getCaseInsensitivePattern:()=>XN,getTerminalParts:()=>TBe,isMultilineComment:()=>qN,isWhitespace:()=>DT,partialMatches:()=>jN,partialRegExp:()=>Wae});function TBe(t){try{typeof t!="string"&&(t=t.source),t=`/${t}/`;let e=Hae.pattern(t),r=[];for(let n of e.value.value)Kd.reset(t),Kd.visit(n),r.push({start:Kd.startRegexp,end:Kd.endRegex});return r}catch{return[]}}function qN(t){try{return typeof t=="string"&&(t=new RegExp(t)),t=t.toString(),Kd.reset(t),Kd.visit(Hae.pattern(t)),Kd.multiline}catch{return!1}}function DT(t){return(typeof t=="string"?new RegExp(t):t).test(" ")}function Qd(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function XN(t){return Array.prototype.map.call(t,e=>/\w/.test(e)?`[${e.toLowerCase()}${e.toUpperCase()}]`:Qd(e)).join("")}function jN(t,e){let r=Wae(t),n=e.match(r);return!!n&&n[0].length>0}function Wae(t){typeof t=="string"&&(t=new RegExp(t));let e=t,r=t.source,n=0;function i(){let a="",s;function l(h){a+=r.substr(n,h),n+=h}o(l,"appendRaw");function u(h){a+="(?:"+r.substr(n,h)+"|$)",n+=h}for(o(u,"appendOptional");n",n)-n+1);break;default:u(2);break}break;case"[":s=/\[(?:\\.|.)*?\]/g,s.lastIndex=n,s=s.exec(r)||[],u(s[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":l(1);break;case"{":s=/\{\d+,?\d*\}/g,s.lastIndex=n,s=s.exec(r),s?l(s[0].length):u(1);break;case"(":if(r[n+1]==="?")switch(r[n+2]){case":":a+="(?:",n+=3,a+=i()+"|$)";break;case"=":a+="(?=",n+=3,a+=i()+")";break;case"!":s=n,n+=3,i(),a+=r.substr(s,n-s);break;case"<":switch(r[n+3]){case"=":case"!":s=n,n+=4,i(),a+=r.substr(s,n-s);break;default:l(r.indexOf(">",n)-n+1),a+=i()+"|$)";break}break}else l(1),a+=i()+"|$)";break;case")":return++n,a;default:u(1);break}return a}return o(i,"process"),new RegExp(i(),t.flags)}var YN,Hae,WN,Kd,Wm=M(()=>{"use strict";Qv();YN=/\r?\n/gm,Hae=new jd,WN=class extends Lc{static{o(this,"TerminalRegExpVisitor")}constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){let r=String.fromCharCode(e.value);if(!this.multiline&&r===` -`&&(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let n=Qd(r);this.endRegexpStack.push(n),this.isStarting&&(this.startRegexp+=n)}}visitSet(e){if(!this.multiline){let r=this.regex.substring(e.loc.begin,e.loc.end),n=new RegExp(r);this.multiline=!!` -`.match(n)}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let r=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(r),this.isStarting&&(this.startRegexp+=r)}}visitChildren(e){e.type==="Group"&&e.quantifier||super.visitChildren(e)}},Kd=new WN;o(TBe,"getTerminalParts");o(qN,"isMultilineComment");o(DT,"isWhitespace");o(Qd,"escapeRegExp");o(XN,"getCaseInsensitivePattern");o(jN,"partialMatches");o(Wae,"partialRegExp")});var MT={};vr(MT,{findAssignment:()=>iR,findNameAssignment:()=>RT,findNodeForKeyword:()=>rR,findNodeForProperty:()=>Jv,findNodesForKeyword:()=>kBe,findNodesForKeywordInternal:()=>nR,findNodesForProperty:()=>eR,getActionAtElement:()=>Kae,getActionType:()=>Zae,getAllReachableRules:()=>Zv,getCrossReferenceTerminal:()=>ZN,getEntryRule:()=>Yae,getExplicitRuleType:()=>aR,getHiddenRules:()=>qae,getRuleType:()=>sR,getTypeName:()=>Zd,isArrayCardinality:()=>SBe,isArrayOperator:()=>CBe,isCommentTerminal:()=>JN,isDataType:()=>ABe,isDataTypeRule:()=>e2,isOptionalCardinality:()=>EBe,terminalRegex:()=>Ym});function Yae(t){return t.rules.find(e=>Ma(e)&&e.entry)}function qae(t){return t.rules.filter(e=>qo(e)&&e.hidden)}function Zv(t,e){let r=new Set,n=Yae(t);if(!n)return new Set(t.rules);let i=[n].concat(qae(t));for(let s of i)Xae(s,r,e);let a=new Set;for(let s of t.rules)(r.has(s.name)||qo(s)&&s.hidden)&&a.add(s);return a}function Xae(t,e,r){e.add(t.name),_c(t).forEach(n=>{if(Ol(n)||r&&ET(n)){let i=n.rule.ref;i&&!e.has(i.name)&&Xae(i,e,r)}})}function ZN(t){if(t.terminal)return t.terminal;if(t.type.ref){let e=RT(t.type.ref);return e?.terminal}}function JN(t){return t.hidden&&!Ym(t).test(" ")}function eR(t,e){return!t||!e?[]:tR(t,e,t.astNode,!0)}function Jv(t,e,r){if(!t||!e)return;let n=tR(t,e,t.astNode,!0);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function tR(t,e,r,n){if(!n){let i=qd(t.grammarSource,Il);if(i&&i.feature===e)return[t]}return io(t)&&t.astNode===r?t.content.flatMap(i=>tR(i,e,r,!1)):[]}function kBe(t,e){return t?nR(t,e,t?.astNode):[]}function rR(t,e,r){if(!t)return;let n=nR(t,e,t?.astNode);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function nR(t,e,r){if(t.astNode!==r)return[];if(Xo(t.grammarSource)&&t.grammarSource.value===e)return[t];let n=Ud(t).iterator(),i,a=[];do if(i=n.next(),!i.done){let s=i.value;s.astNode===r?Xo(s.grammarSource)&&s.grammarSource.value===e&&a.push(s):n.prune()}while(!i.done);return a}function iR(t){var e;let r=t.astNode;for(;r===((e=t.container)===null||e===void 0?void 0:e.astNode);){let n=qd(t.grammarSource,Il);if(n)return n;t=t.container}}function RT(t){let e=t;return bT(e)&&(Ru(e.$container)?e=e.$container.$container:Ma(e.$container)?e=e.$container:ef(e.$container)),jae(t,e,new Map)}function jae(t,e,r){var n;function i(a,s){let l;return qd(a,Il)||(l=jae(s,s,r)),r.set(t,l),l}if(o(i,"go"),r.has(t))return r.get(t);r.set(t,void 0);for(let a of _c(e)){if(Il(a)&&a.feature.toLowerCase()==="name")return r.set(t,a),a;if(Ol(a)&&Ma(a.rule.ref))return i(a,a.rule.ref);if(TT(a)&&(!((n=a.typeRef)===null||n===void 0)&&n.ref))return i(a,a.typeRef.ref)}}function Kae(t){let e=t.$container;if(tf(e)){let r=e.elements,n=r.indexOf(t);for(let i=n-1;i>=0;i--){let a=r[i];if(Ru(a))return a;{let s=_c(r[i]).find(Ru);if(s)return s}}}if(Hv(e))return Kae(e)}function EBe(t,e){return t==="?"||t==="*"||tf(e)&&!!e.guardCondition}function SBe(t){return t==="*"||t==="+"}function CBe(t){return t==="+="}function e2(t){return Qae(t,new Set)}function Qae(t,e){if(e.has(t))return!0;e.add(t);for(let r of _c(t))if(Ol(r)){if(!r.rule.ref||Ma(r.rule.ref)&&!Qae(r.rule.ref,e))return!1}else{if(Il(r))return!1;if(Ru(r))return!1}return!!t.definition}function ABe(t){return QN(t.type,new Set)}function QN(t,e){if(e.has(t))return!0;if(e.add(t),UD(t))return!1;if(oN(t))return!1;if(dN(t))return t.types.every(r=>QN(r,e));if(TT(t)){if(t.primitiveType!==void 0)return!0;if(t.stringType!==void 0)return!0;if(t.typeRef!==void 0){let r=t.typeRef.ref;return Wv(r)?QN(r.type,e):!1}else return!1}else return!1}function aR(t){if(t.inferredType)return t.inferredType.name;if(t.dataType)return t.dataType;if(t.returnType){let e=t.returnType.ref;if(e){if(Ma(e))return e.name;if(wT(e)||Wv(e))return e.name}}}function Zd(t){var e;if(Ma(t))return e2(t)?t.name:(e=aR(t))!==null&&e!==void 0?e:t.name;if(wT(t)||Wv(t)||lN(t))return t.name;if(Ru(t)){let r=Zae(t);if(r)return r}else if(bT(t))return t.name;throw new Error("Cannot get name of Unknown Type")}function Zae(t){var e;if(t.inferredType)return t.inferredType.name;if(!((e=t.type)===null||e===void 0)&&e.ref)return Zd(t.type.ref)}function sR(t){var e,r,n;return qo(t)?(r=(e=t.type)===null||e===void 0?void 0:e.name)!==null&&r!==void 0?r:"string":e2(t)?t.name:(n=aR(t))!==null&&n!==void 0?n:t.name}function Ym(t){let e={s:!1,i:!1,u:!1},r=qm(t.definition,e),n=Object.entries(e).filter(([,i])=>i).map(([i])=>i).join("");return new RegExp(r,n)}function qm(t,e){if(DN(t))return _Be(t);if(RN(t))return LBe(t);if(vN(t))return RBe(t);if(ET(t)){let r=t.rule.ref;if(!r)throw new Error("Missing rule reference.");return Mu(qm(r.definition),{cardinality:t.cardinality,lookahead:t.lookahead})}else{if(SN(t))return NBe(t);if(PN(t))return DBe(t);if(AN(t)){let r=t.regex.lastIndexOf("/"),n=t.regex.substring(1,r),i=t.regex.substring(r+1);return e&&(e.i=i.includes("i"),e.s=i.includes("s"),e.u=i.includes("u")),Mu(n,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}else{if(FN(t))return Mu(oR,{cardinality:t.cardinality,lookahead:t.lookahead});throw new Error(`Invalid terminal element: ${t?.$type}`)}}}function _Be(t){return Mu(t.elements.map(e=>qm(e)).join("|"),{cardinality:t.cardinality,lookahead:t.lookahead})}function LBe(t){return Mu(t.elements.map(e=>qm(e)).join(""),{cardinality:t.cardinality,lookahead:t.lookahead})}function DBe(t){return Mu(`${oR}*?${qm(t.terminal)}`,{cardinality:t.cardinality,lookahead:t.lookahead})}function NBe(t){return Mu(`(?!${qm(t.terminal)})${oR}*?`,{cardinality:t.cardinality,lookahead:t.lookahead})}function RBe(t){return t.right?Mu(`[${KN(t.left)}-${KN(t.right)}]`,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1}):Mu(KN(t.left),{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}function KN(t){return Qd(t.value)}function Mu(t,e){var r;return(e.wrap!==!1||e.lookahead)&&(t=`(${(r=e.lookahead)!==null&&r!==void 0?r:""}${t})`),e.cardinality?`${t}${e.cardinality}`:t}var oR,Pl=M(()=>{"use strict";gT();Ac();Yo();es();Ml();Wm();o(Yae,"getEntryRule");o(qae,"getHiddenRules");o(Zv,"getAllReachableRules");o(Xae,"ruleDfs");o(ZN,"getCrossReferenceTerminal");o(JN,"isCommentTerminal");o(eR,"findNodesForProperty");o(Jv,"findNodeForProperty");o(tR,"findNodesForPropertyInternal");o(kBe,"findNodesForKeyword");o(rR,"findNodeForKeyword");o(nR,"findNodesForKeywordInternal");o(iR,"findAssignment");o(RT,"findNameAssignment");o(jae,"findNameAssignmentInternal");o(Kae,"getActionAtElement");o(EBe,"isOptionalCardinality");o(SBe,"isArrayCardinality");o(CBe,"isArrayOperator");o(e2,"isDataTypeRule");o(Qae,"isDataTypeRuleInternal");o(ABe,"isDataType");o(QN,"isDataTypeInternal");o(aR,"getExplicitRuleType");o(Zd,"getTypeName");o(Zae,"getActionType");o(sR,"getRuleType");o(Ym,"terminalRegex");oR=/[\s\S]/.source;o(qm,"abstractElementToRegex");o(_Be,"terminalAlternativesToRegex");o(LBe,"terminalGroupToRegex");o(DBe,"untilTokenToRegex");o(NBe,"negateTokenToRegex");o(RBe,"characterRangeToRegex");o(KN,"keywordToRegex");o(Mu,"withCardinality")});function lR(t){let e=[],r=t.Grammar;for(let n of r.rules)qo(n)&&JN(n)&&qN(Ym(n))&&e.push(n.name);return{multilineCommentRules:e,nameRegexp:pT}}var cR=M(()=>{"use strict";Ml();Pl();Wm();Ac();o(lR,"createGrammarConfig")});var uR=M(()=>{"use strict"});function Xm(t){console&&console.error&&console.error(`Error: ${t}`)}function t2(t){console&&console.warn&&console.warn(`Warning: ${t}`)}var Jae=M(()=>{"use strict";o(Xm,"PRINT_ERROR");o(t2,"PRINT_WARNING")});function r2(t){let e=new Date().getTime(),r=t();return{time:new Date().getTime()-e,value:r}}var ese=M(()=>{"use strict";o(r2,"timer")});function n2(t){function e(){}o(e,"FakeConstructor"),e.prototype=t;let r=new e;function n(){return typeof r.bar}return o(n,"fakeAccess"),n(),n(),t;(0,eval)(t)}var tse=M(()=>{"use strict";o(n2,"toFastProperties")});var jm=M(()=>{"use strict";Jae();ese();tse()});function MBe(t){return IBe(t)?t.LABEL:t.name}function IBe(t){return gi(t.LABEL)&&t.LABEL!==""}function IT(t){return Je(t,Km)}function Km(t){function e(r){return Je(r,Km)}if(o(e,"convertDefinition"),t instanceof nn){let r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return gi(t.label)&&(r.label=t.label),r}else{if(t instanceof Cn)return{type:"Alternative",definition:e(t.definition)};if(t instanceof an)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof An)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof _n)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:Km(new kr({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof vn)return{type:"RepetitionWithSeparator",idx:t.idx,separator:Km(new kr({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof Lr)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof xn)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof kr){let r={type:"Terminal",name:t.terminalType.name,label:MBe(t.terminalType),idx:t.idx};gi(t.label)&&(r.terminalLabel=t.label);let n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(r.pattern=Vo(n)?n.source:n),r}else{if(t instanceof ts)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}var so,nn,ts,Cn,an,An,_n,Lr,vn,xn,kr,OT=M(()=>{"use strict";Ht();o(MBe,"tokenLabel");o(IBe,"hasTokenLabel");so=class{static{o(this,"AbstractProduction")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),Ce(this.definition,r=>{r.accept(e)})}},nn=class extends so{static{o(this,"NonTerminal")}constructor(e){super([]),this.idx=1,ha(this,Ds(e,r=>r!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}},ts=class extends so{static{o(this,"Rule")}constructor(e){super(e.definition),this.orgText="",ha(this,Ds(e,r=>r!==void 0))}},Cn=class extends so{static{o(this,"Alternative")}constructor(e){super(e.definition),this.ignoreAmbiguities=!1,ha(this,Ds(e,r=>r!==void 0))}},an=class extends so{static{o(this,"Option")}constructor(e){super(e.definition),this.idx=1,ha(this,Ds(e,r=>r!==void 0))}},An=class extends so{static{o(this,"RepetitionMandatory")}constructor(e){super(e.definition),this.idx=1,ha(this,Ds(e,r=>r!==void 0))}},_n=class extends so{static{o(this,"RepetitionMandatoryWithSeparator")}constructor(e){super(e.definition),this.idx=1,ha(this,Ds(e,r=>r!==void 0))}},Lr=class extends so{static{o(this,"Repetition")}constructor(e){super(e.definition),this.idx=1,ha(this,Ds(e,r=>r!==void 0))}},vn=class extends so{static{o(this,"RepetitionWithSeparator")}constructor(e){super(e.definition),this.idx=1,ha(this,Ds(e,r=>r!==void 0))}},xn=class extends so{static{o(this,"Alternation")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,ha(this,Ds(e,r=>r!==void 0))}},kr=class{static{o(this,"Terminal")}constructor(e){this.idx=1,ha(this,Ds(e,r=>r!==void 0))}accept(e){e.visit(this)}};o(IT,"serializeGrammar");o(Km,"serializeProduction")});var rs,rse=M(()=>{"use strict";OT();rs=class{static{o(this,"GAstVisitor")}visit(e){let r=e;switch(r.constructor){case nn:return this.visitNonTerminal(r);case Cn:return this.visitAlternative(r);case an:return this.visitOption(r);case An:return this.visitRepetitionMandatory(r);case _n:return this.visitRepetitionMandatoryWithSeparator(r);case vn:return this.visitRepetitionWithSeparator(r);case Lr:return this.visitRepetition(r);case xn:return this.visitAlternation(r);case kr:return this.visitTerminal(r);case ts:return this.visitRule(r);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}}});function hR(t){return t instanceof Cn||t instanceof an||t instanceof Lr||t instanceof An||t instanceof _n||t instanceof vn||t instanceof kr||t instanceof ts}function Jd(t,e=[]){return t instanceof an||t instanceof Lr||t instanceof vn?!0:t instanceof xn?Rv(t.definition,n=>Jd(n,e)):t instanceof nn&&Hn(e,t)?!1:t instanceof so?(t instanceof nn&&e.push(t),Ra(t.definition,n=>Jd(n,e))):!1}function fR(t){return t instanceof xn}function Ms(t){if(t instanceof nn)return"SUBRULE";if(t instanceof an)return"OPTION";if(t instanceof xn)return"OR";if(t instanceof An)return"AT_LEAST_ONE";if(t instanceof _n)return"AT_LEAST_ONE_SEP";if(t instanceof vn)return"MANY_SEP";if(t instanceof Lr)return"MANY";if(t instanceof kr)return"CONSUME";throw Error("non exhaustive match")}var nse=M(()=>{"use strict";Ht();OT();o(hR,"isSequenceProd");o(Jd,"isOptionalProd");o(fR,"isBranchingProd");o(Ms,"getProductionDslName")});var ns=M(()=>{"use strict";OT();rse();nse()});function ise(t,e,r){return[new an({definition:[new kr({terminalType:t.separator})].concat(t.definition)})].concat(e,r)}var Iu,PT=M(()=>{"use strict";Ht();ns();Iu=class{static{o(this,"RestWalker")}walk(e,r=[]){Ce(e.definition,(n,i)=>{let a=mi(e.definition,i+1);if(n instanceof nn)this.walkProdRef(n,a,r);else if(n instanceof kr)this.walkTerminal(n,a,r);else if(n instanceof Cn)this.walkFlat(n,a,r);else if(n instanceof an)this.walkOption(n,a,r);else if(n instanceof An)this.walkAtLeastOne(n,a,r);else if(n instanceof _n)this.walkAtLeastOneSep(n,a,r);else if(n instanceof vn)this.walkManySep(n,a,r);else if(n instanceof Lr)this.walkMany(n,a,r);else if(n instanceof xn)this.walkOr(n,a,r);else throw Error("non exhaustive match")})}walkTerminal(e,r,n){}walkProdRef(e,r,n){}walkFlat(e,r,n){let i=r.concat(n);this.walk(e,i)}walkOption(e,r,n){let i=r.concat(n);this.walk(e,i)}walkAtLeastOne(e,r,n){let i=[new an({definition:e.definition})].concat(r,n);this.walk(e,i)}walkAtLeastOneSep(e,r,n){let i=ise(e,r,n);this.walk(e,i)}walkMany(e,r,n){let i=[new an({definition:e.definition})].concat(r,n);this.walk(e,i)}walkManySep(e,r,n){let i=ise(e,r,n);this.walk(e,i)}walkOr(e,r,n){let i=r.concat(n);Ce(e.definition,a=>{let s=new Cn({definition:[a]});this.walk(s,i)})}};o(ise,"restForRepetitionWithSeparator")});function e0(t){if(t instanceof nn)return e0(t.referencedRule);if(t instanceof kr)return BBe(t);if(hR(t))return OBe(t);if(fR(t))return PBe(t);throw Error("non exhaustive match")}function OBe(t){let e=[],r=t.definition,n=0,i=r.length>n,a,s=!0;for(;i&&s;)a=r[n],s=Jd(a),e=e.concat(e0(a)),n=n+1,i=r.length>n;return Om(e)}function PBe(t){let e=Je(t.definition,r=>e0(r));return Om(Wr(e))}function BBe(t){return[t.terminalType]}var dR=M(()=>{"use strict";Ht();ns();o(e0,"first");o(OBe,"firstForSequence");o(PBe,"firstForBranching");o(BBe,"firstForTerminal")});var BT,pR=M(()=>{"use strict";BT="_~IN~_"});function ase(t){let e={};return Ce(t,r=>{let n=new mR(r).startWalking();ha(e,n)}),e}function FBe(t,e){return t.name+e+BT}var mR,sse=M(()=>{"use strict";PT();dR();Ht();pR();ns();mR=class extends Iu{static{o(this,"ResyncFollowsWalker")}constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,r,n){}walkProdRef(e,r,n){let i=FBe(e.referencedRule,e.idx)+this.topProd.name,a=r.concat(n),s=new Cn({definition:a}),l=e0(s);this.follows[i]=l}};o(ase,"computeAllProdsFollows");o(FBe,"buildBetweenProdsFollowPrefix")});function Qm(t){let e=t.toString();if(FT.hasOwnProperty(e))return FT[e];{let r=zBe.pattern(e);return FT[e]=r,r}}function ose(){FT={}}var FT,zBe,zT=M(()=>{"use strict";Qv();FT={},zBe=new jd;o(Qm,"getRegExpAst");o(ose,"clearRegExpParserCache")});function use(t,e=!1){try{let r=Qm(t);return gR(r.value,{},r.flags.ignoreCase)}catch(r){if(r.message===cse)e&&t2(`${i2} Unable to optimize: < ${t.toString()} > +`:case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}parseHexDigits(e){let r="";for(let i=0;i=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}}});var Nc,iae=M(()=>{"use strict";Nc=class{static{o(this,"BaseRegExpVisitor")}visitChildren(e){for(let r in e){let n=e[r];e.hasOwnProperty(r)&&(n.type!==void 0?this.visit(n):Array.isArray(n)&&n.forEach(i=>{this.visit(i)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e);break}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}}});var O2=M(()=>{"use strict";nae();iae()});var fk={};pr(fk,{NEWLINE_REGEXP:()=>qR,escapeRegExp:()=>rp,getCaseInsensitivePattern:()=>XR,getTerminalParts:()=>LOe,isMultilineComment:()=>YR,isWhitespace:()=>Eg,partialMatches:()=>jR,partialRegExp:()=>oae,whitespaceCharacters:()=>sae});function LOe(t){try{typeof t!="string"&&(t=t.source),t=`/${t}/`;let e=aae.pattern(t),r=[];for(let n of e.value.value)tp.reset(t),tp.visit(n),r.push({start:tp.startRegexp,end:tp.endRegex});return r}catch{return[]}}function YR(t){try{return typeof t=="string"&&(t=new RegExp(t)),t=t.toString(),tp.reset(t),tp.visit(aae.pattern(t)),tp.multiline}catch{return!1}}function Eg(t){let e=typeof t=="string"?new RegExp(t):t;return sae.some(r=>e.test(r))}function rp(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function XR(t){return Array.prototype.map.call(t,e=>/\w/.test(e)?`[${e.toLowerCase()}${e.toUpperCase()}]`:rp(e)).join("")}function jR(t,e){let r=oae(t),n=e.match(r);return!!n&&n[0].length>0}function oae(t){typeof t=="string"&&(t=new RegExp(t));let e=t,r=t.source,n=0;function i(){let a="",s;function l(h){a+=r.substr(n,h),n+=h}o(l,"appendRaw");function u(h){a+="(?:"+r.substr(n,h)+"|$)",n+=h}for(o(u,"appendOptional");n",n)-n+1);break;default:u(2);break}break;case"[":s=/\[(?:\\.|.)*?\]/g,s.lastIndex=n,s=s.exec(r)||[],u(s[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":l(1);break;case"{":s=/\{\d+,?\d*\}/g,s.lastIndex=n,s=s.exec(r),s?l(s[0].length):u(1);break;case"(":if(r[n+1]==="?")switch(r[n+2]){case":":a+="(?:",n+=3,a+=i()+"|$)";break;case"=":a+="(?=",n+=3,a+=i()+")";break;case"!":s=n,n+=3,i(),a+=r.substr(s,n-s);break;case"<":switch(r[n+3]){case"=":case"!":s=n,n+=4,i(),a+=r.substr(s,n-s);break;default:l(r.indexOf(">",n)-n+1),a+=i()+"|$)";break}break}else l(1),a+=i()+"|$)";break;case")":return++n,a;default:u(1);break}return a}return o(i,"process"),new RegExp(i(),t.flags)}var qR,aae,WR,tp,sae,Sg=M(()=>{"use strict";O2();qR=/\r?\n/gm,aae=new ep,WR=class extends Nc{static{o(this,"TerminalRegExpVisitor")}constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){let r=String.fromCharCode(e.value);if(!this.multiline&&r===` +`&&(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let n=rp(r);this.endRegexpStack.push(n),this.isStarting&&(this.startRegexp+=n)}}visitSet(e){if(!this.multiline){let r=this.regex.substring(e.loc.begin,e.loc.end),n=new RegExp(r);this.multiline=!!` +`.match(n)}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let r=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(r),this.isStarting&&(this.startRegexp+=r)}}visitChildren(e){e.type==="Group"&&e.quantifier||super.visitChildren(e)}},tp=new WR;o(LOe,"getTerminalParts");o(YR,"isMultilineComment");sae=`\f +\r \v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF`.split("");o(Eg,"isWhitespace");o(rp,"escapeRegExp");o(XR,"getCaseInsensitivePattern");o(jR,"partialMatches");o(oae,"partialRegExp")});var pk={};pr(pk,{findAssignment:()=>iN,findNameAssignment:()=>dk,findNodeForKeyword:()=>rN,findNodeForProperty:()=>B2,findNodesForKeyword:()=>ROe,findNodesForKeywordInternal:()=>nN,findNodesForProperty:()=>eN,getActionAtElement:()=>fae,getActionType:()=>pae,getAllReachableRules:()=>P2,getCrossReferenceTerminal:()=>ZR,getEntryRule:()=>lae,getExplicitRuleType:()=>Cg,getHiddenRules:()=>cae,getRuleType:()=>aN,getRuleTypeName:()=>POe,getTypeName:()=>z2,isArrayCardinality:()=>MOe,isArrayOperator:()=>IOe,isCommentTerminal:()=>JR,isDataType:()=>OOe,isDataTypeRule:()=>F2,isOptionalCardinality:()=>NOe,terminalRegex:()=>Ag});function lae(t){return t.rules.find(e=>Ma(e)&&e.entry)}function cae(t){return t.rules.filter(e=>to(e)&&e.hidden)}function P2(t,e){let r=new Set,n=lae(t);if(!n)return new Set(t.rules);let i=[n].concat(cae(t));for(let s of i)uae(s,r,e);let a=new Set;for(let s of t.rules)(r.has(s.name)||to(s)&&s.hidden)&&a.add(s);return a}function uae(t,e,r){e.add(t.name),Rc(t).forEach(n=>{if(Rl(n)||r&&sk(n)){let i=n.rule.ref;i&&!e.has(i.name)&&uae(i,e,r)}})}function ZR(t){if(t.terminal)return t.terminal;if(t.type.ref){let e=dk(t.type.ref);return e?.terminal}}function JR(t){return t.hidden&&!Eg(Ag(t))}function eN(t,e){return!t||!e?[]:tN(t,e,t.astNode,!0)}function B2(t,e,r){if(!t||!e)return;let n=tN(t,e,t.astNode,!0);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function tN(t,e,r,n){if(!n){let i=Zd(t.grammarSource,Ll);if(i&&i.feature===e)return[t]}return Al(t)&&t.astNode===r?t.content.flatMap(i=>tN(i,e,r,!1)):[]}function ROe(t,e){return t?nN(t,e,t?.astNode):[]}function rN(t,e,r){if(!t)return;let n=nN(t,e,t?.astNode);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function nN(t,e,r){if(t.astNode!==r)return[];if(Go(t.grammarSource)&&t.grammarSource.value===e)return[t];let n=Yd(t).iterator(),i,a=[];do if(i=n.next(),!i.done){let s=i.value;s.astNode===r?Go(s.grammarSource)&&s.grammarSource.value===e&&a.push(s):n.prune()}while(!i.done);return a}function iN(t){var e;let r=t.astNode;for(;r===((e=t.container)===null||e===void 0?void 0:e.astNode);){let n=Zd(t.grammarSource,Ll);if(n)return n;t=t.container}}function dk(t){let e=t;return rk(e)&&(Ru(e.$container)?e=e.$container.$container:Ma(e.$container)?e=e.$container:Dc(e.$container)),hae(t,e,new Map)}function hae(t,e,r){var n;function i(a,s){let l;return Zd(a,Ll)||(l=hae(s,s,r)),r.set(t,l),l}if(o(i,"go"),r.has(t))return r.get(t);r.set(t,void 0);for(let a of Rc(e)){if(Ll(a)&&a.feature.toLowerCase()==="name")return r.set(t,a),a;if(Rl(a)&&Ma(a.rule.ref))return i(a,a.rule.ref);if(ik(a)&&(!((n=a.typeRef)===null||n===void 0)&&n.ref))return i(a,a.typeRef.ref)}}function fae(t){let e=t.$container;if(tf(e)){let r=e.elements,n=r.indexOf(t);for(let i=n-1;i>=0;i--){let a=r[i];if(Ru(a))return a;{let s=Rc(r[i]).find(Ru);if(s)return s}}}if(A2(e))return fae(e)}function NOe(t,e){return t==="?"||t==="*"||tf(e)&&!!e.guardCondition}function MOe(t){return t==="*"||t==="+"}function IOe(t){return t==="+="}function F2(t){return dae(t,new Set)}function dae(t,e){if(e.has(t))return!0;e.add(t);for(let r of Rc(t))if(Rl(r)){if(!r.rule.ref||Ma(r.rule.ref)&&!dae(r.rule.ref,e))return!1}else{if(Ll(r))return!1;if(Ru(r))return!1}return!!t.definition}function OOe(t){return QR(t.type,new Set)}function QR(t,e){if(e.has(t))return!0;if(e.add(t),TR(t))return!1;if(_R(t))return!1;if(LR(t))return t.types.every(r=>QR(r,e));if(ik(t)){if(t.primitiveType!==void 0)return!0;if(t.stringType!==void 0)return!0;if(t.typeRef!==void 0){let r=t.typeRef.ref;return _2(r)?QR(r.type,e):!1}else return!1}else return!1}function Cg(t){if(t.inferredType)return t.inferredType.name;if(t.dataType)return t.dataType;if(t.returnType){let e=t.returnType.ref;if(e){if(Ma(e))return e.name;if(nk(e)||_2(e))return e.name}}}function z2(t){var e;if(Ma(t))return F2(t)?t.name:(e=Cg(t))!==null&&e!==void 0?e:t.name;if(nk(t)||_2(t)||DR(t))return t.name;if(Ru(t)){let r=pae(t);if(r)return r}else if(rk(t))return t.name;throw new Error("Cannot get name of Unknown Type")}function pae(t){var e;if(t.inferredType)return t.inferredType.name;if(!((e=t.type)===null||e===void 0)&&e.ref)return z2(t.type.ref)}function POe(t){var e,r,n;return to(t)?(r=(e=t.type)===null||e===void 0?void 0:e.name)!==null&&r!==void 0?r:"string":F2(t)?t.name:(n=Cg(t))!==null&&n!==void 0?n:t.name}function aN(t){var e,r,n;return to(t)?(r=(e=t.type)===null||e===void 0?void 0:e.name)!==null&&r!==void 0?r:"string":(n=Cg(t))!==null&&n!==void 0?n:t.name}function Ag(t){let e={s:!1,i:!1,u:!1},r=_g(t.definition,e),n=Object.entries(e).filter(([,i])=>i).map(([i])=>i).join("");return new RegExp(r,n)}function _g(t,e){if(OR(t))return BOe(t);if(PR(t))return FOe(t);if(RR(t))return $Oe(t);if(sk(t)){let r=t.rule.ref;if(!r)throw new Error("Missing rule reference.");return Nu(_g(r.definition),{cardinality:t.cardinality,lookahead:t.lookahead})}else{if(MR(t))return GOe(t);if(BR(t))return zOe(t);if(IR(t)){let r=t.regex.lastIndexOf("/"),n=t.regex.substring(1,r),i=t.regex.substring(r+1);return e&&(e.i=i.includes("i"),e.s=i.includes("s"),e.u=i.includes("u")),Nu(n,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}else{if(FR(t))return Nu(sN,{cardinality:t.cardinality,lookahead:t.lookahead});throw new Error(`Invalid terminal element: ${t?.$type}`)}}}function BOe(t){return Nu(t.elements.map(e=>_g(e)).join("|"),{cardinality:t.cardinality,lookahead:t.lookahead})}function FOe(t){return Nu(t.elements.map(e=>_g(e)).join(""),{cardinality:t.cardinality,lookahead:t.lookahead})}function zOe(t){return Nu(`${sN}*?${_g(t.terminal)}`,{cardinality:t.cardinality,lookahead:t.lookahead})}function GOe(t){return Nu(`(?!${_g(t.terminal)})${sN}*?`,{cardinality:t.cardinality,lookahead:t.lookahead})}function $Oe(t){return t.right?Nu(`[${KR(t.left)}-${KR(t.right)}]`,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1}):Nu(KR(t.left),{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}function KR(t){return rp(t.value)}function Nu(t,e){var r;return(e.wrap!==!1||e.lookahead)&&(t=`(${(r=e.lookahead)!==null&&r!==void 0?r:""}${t})`),e.cardinality?`${t}${e.cardinality}`:t}var sN,Nl=M(()=>{"use strict";ek();Lc();_l();rs();Dl();Sg();o(lae,"getEntryRule");o(cae,"getHiddenRules");o(P2,"getAllReachableRules");o(uae,"ruleDfs");o(ZR,"getCrossReferenceTerminal");o(JR,"isCommentTerminal");o(eN,"findNodesForProperty");o(B2,"findNodeForProperty");o(tN,"findNodesForPropertyInternal");o(ROe,"findNodesForKeyword");o(rN,"findNodeForKeyword");o(nN,"findNodesForKeywordInternal");o(iN,"findAssignment");o(dk,"findNameAssignment");o(hae,"findNameAssignmentInternal");o(fae,"getActionAtElement");o(NOe,"isOptionalCardinality");o(MOe,"isArrayCardinality");o(IOe,"isArrayOperator");o(F2,"isDataTypeRule");o(dae,"isDataTypeRuleInternal");o(OOe,"isDataType");o(QR,"isDataTypeInternal");o(Cg,"getExplicitRuleType");o(z2,"getTypeName");o(pae,"getActionType");o(POe,"getRuleTypeName");o(aN,"getRuleType");o(Ag,"terminalRegex");sN=/[\s\S]/.source;o(_g,"abstractElementToRegex");o(BOe,"terminalAlternativesToRegex");o(FOe,"terminalGroupToRegex");o(zOe,"untilTokenToRegex");o(GOe,"negateTokenToRegex");o($Oe,"characterRangeToRegex");o(KR,"keywordToRegex");o(Nu,"withCardinality")});function oN(t){let e=[],r=t.Grammar;for(let n of r.rules)to(n)&&JR(n)&&YR(Ag(n))&&e.push(n.name);return{multilineCommentRules:e,nameRegexp:ZT}}var lN=M(()=>{"use strict";Dl();Nl();Sg();Lc();o(oN,"createGrammarConfig")});var cN=M(()=>{"use strict"});function Dg(t){console&&console.error&&console.error(`Error: ${t}`)}function G2(t){console&&console.warn&&console.warn(`Warning: ${t}`)}var mae=M(()=>{"use strict";o(Dg,"PRINT_ERROR");o(G2,"PRINT_WARNING")});function $2(t){let e=new Date().getTime(),r=t();return{time:new Date().getTime()-e,value:r}}var gae=M(()=>{"use strict";o($2,"timer")});function V2(t){function e(){}o(e,"FakeConstructor"),e.prototype=t;let r=new e;function n(){return typeof r.bar}return o(n,"fakeAccess"),n(),n(),t;(0,eval)(t)}var yae=M(()=>{"use strict";o(V2,"toFastProperties")});var Lg=M(()=>{"use strict";mae();gae();yae()});function VOe(t){return UOe(t)?t.LABEL:t.name}function UOe(t){return mi(t.LABEL)&&t.LABEL!==""}function mk(t){return Je(t,Rg)}function Rg(t){function e(r){return Je(r,Rg)}if(o(e,"convertDefinition"),t instanceof on){let r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return mi(t.label)&&(r.label=t.label),r}else{if(t instanceof Dn)return{type:"Alternative",definition:e(t.definition)};if(t instanceof ln)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof Ln)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof Rn)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:Rg(new kr({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof wn)return{type:"RepetitionWithSeparator",idx:t.idx,separator:Rg(new kr({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof Lr)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof Tn)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof kr){let r={type:"Terminal",name:t.terminalType.name,label:VOe(t.terminalType),idx:t.idx};mi(t.label)&&(r.terminalLabel=t.label);let n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(r.pattern=Po(n)?n.source:n),r}else{if(t instanceof ns)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}var ro,on,ns,Dn,ln,Ln,Rn,Lr,wn,Tn,kr,gk=M(()=>{"use strict";qt();o(VOe,"tokenLabel");o(UOe,"hasTokenLabel");ro=class{static{o(this,"AbstractProduction")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),Ae(this.definition,r=>{r.accept(e)})}},on=class extends ro{static{o(this,"NonTerminal")}constructor(e){super([]),this.idx=1,fa(this,Ns(e,r=>r!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}},ns=class extends ro{static{o(this,"Rule")}constructor(e){super(e.definition),this.orgText="",fa(this,Ns(e,r=>r!==void 0))}},Dn=class extends ro{static{o(this,"Alternative")}constructor(e){super(e.definition),this.ignoreAmbiguities=!1,fa(this,Ns(e,r=>r!==void 0))}},ln=class extends ro{static{o(this,"Option")}constructor(e){super(e.definition),this.idx=1,fa(this,Ns(e,r=>r!==void 0))}},Ln=class extends ro{static{o(this,"RepetitionMandatory")}constructor(e){super(e.definition),this.idx=1,fa(this,Ns(e,r=>r!==void 0))}},Rn=class extends ro{static{o(this,"RepetitionMandatoryWithSeparator")}constructor(e){super(e.definition),this.idx=1,fa(this,Ns(e,r=>r!==void 0))}},Lr=class extends ro{static{o(this,"Repetition")}constructor(e){super(e.definition),this.idx=1,fa(this,Ns(e,r=>r!==void 0))}},wn=class extends ro{static{o(this,"RepetitionWithSeparator")}constructor(e){super(e.definition),this.idx=1,fa(this,Ns(e,r=>r!==void 0))}},Tn=class extends ro{static{o(this,"Alternation")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,fa(this,Ns(e,r=>r!==void 0))}},kr=class{static{o(this,"Terminal")}constructor(e){this.idx=1,fa(this,Ns(e,r=>r!==void 0))}accept(e){e.visit(this)}};o(mk,"serializeGrammar");o(Rg,"serializeProduction")});var is,vae=M(()=>{"use strict";gk();is=class{static{o(this,"GAstVisitor")}visit(e){let r=e;switch(r.constructor){case on:return this.visitNonTerminal(r);case Dn:return this.visitAlternative(r);case ln:return this.visitOption(r);case Ln:return this.visitRepetitionMandatory(r);case Rn:return this.visitRepetitionMandatoryWithSeparator(r);case wn:return this.visitRepetitionWithSeparator(r);case Lr:return this.visitRepetition(r);case Tn:return this.visitAlternation(r);case kr:return this.visitTerminal(r);case ns:return this.visitRule(r);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}}});function uN(t){return t instanceof Dn||t instanceof ln||t instanceof Lr||t instanceof Ln||t instanceof Rn||t instanceof wn||t instanceof kr||t instanceof ns}function np(t,e=[]){return t instanceof ln||t instanceof Lr||t instanceof wn?!0:t instanceof Tn?d2(t.definition,n=>np(n,e)):t instanceof on&&qn(e,t)?!1:t instanceof ro?(t instanceof on&&e.push(t),Ra(t.definition,n=>np(n,e))):!1}function hN(t){return t instanceof Tn}function Is(t){if(t instanceof on)return"SUBRULE";if(t instanceof ln)return"OPTION";if(t instanceof Tn)return"OR";if(t instanceof Ln)return"AT_LEAST_ONE";if(t instanceof Rn)return"AT_LEAST_ONE_SEP";if(t instanceof wn)return"MANY_SEP";if(t instanceof Lr)return"MANY";if(t instanceof kr)return"CONSUME";throw Error("non exhaustive match")}var xae=M(()=>{"use strict";qt();gk();o(uN,"isSequenceProd");o(np,"isOptionalProd");o(hN,"isBranchingProd");o(Is,"getProductionDslName")});var as=M(()=>{"use strict";gk();vae();xae()});function bae(t,e,r){return[new ln({definition:[new kr({terminalType:t.separator})].concat(t.definition)})].concat(e,r)}var Mu,yk=M(()=>{"use strict";qt();as();Mu=class{static{o(this,"RestWalker")}walk(e,r=[]){Ae(e.definition,(n,i)=>{let a=pi(e.definition,i+1);if(n instanceof on)this.walkProdRef(n,a,r);else if(n instanceof kr)this.walkTerminal(n,a,r);else if(n instanceof Dn)this.walkFlat(n,a,r);else if(n instanceof ln)this.walkOption(n,a,r);else if(n instanceof Ln)this.walkAtLeastOne(n,a,r);else if(n instanceof Rn)this.walkAtLeastOneSep(n,a,r);else if(n instanceof wn)this.walkManySep(n,a,r);else if(n instanceof Lr)this.walkMany(n,a,r);else if(n instanceof Tn)this.walkOr(n,a,r);else throw Error("non exhaustive match")})}walkTerminal(e,r,n){}walkProdRef(e,r,n){}walkFlat(e,r,n){let i=r.concat(n);this.walk(e,i)}walkOption(e,r,n){let i=r.concat(n);this.walk(e,i)}walkAtLeastOne(e,r,n){let i=[new ln({definition:e.definition})].concat(r,n);this.walk(e,i)}walkAtLeastOneSep(e,r,n){let i=bae(e,r,n);this.walk(e,i)}walkMany(e,r,n){let i=[new ln({definition:e.definition})].concat(r,n);this.walk(e,i)}walkManySep(e,r,n){let i=bae(e,r,n);this.walk(e,i)}walkOr(e,r,n){let i=r.concat(n);Ae(e.definition,a=>{let s=new Dn({definition:[a]});this.walk(s,i)})}};o(bae,"restForRepetitionWithSeparator")});function ip(t){if(t instanceof on)return ip(t.referencedRule);if(t instanceof kr)return qOe(t);if(uN(t))return HOe(t);if(hN(t))return WOe(t);throw Error("non exhaustive match")}function HOe(t){let e=[],r=t.definition,n=0,i=r.length>n,a,s=!0;for(;i&&s;)a=r[n],s=np(a),e=e.concat(ip(a)),n=n+1,i=r.length>n;return Nm(e)}function WOe(t){let e=Je(t.definition,r=>ip(r));return Nm(Wr(e))}function qOe(t){return[t.terminalType]}var fN=M(()=>{"use strict";qt();as();o(ip,"first");o(HOe,"firstForSequence");o(WOe,"firstForBranching");o(qOe,"firstForTerminal")});var vk,dN=M(()=>{"use strict";vk="_~IN~_"});function wae(t){let e={};return Ae(t,r=>{let n=new pN(r).startWalking();fa(e,n)}),e}function YOe(t,e){return t.name+e+vk}var pN,Tae=M(()=>{"use strict";yk();fN();qt();dN();as();pN=class extends Mu{static{o(this,"ResyncFollowsWalker")}constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,r,n){}walkProdRef(e,r,n){let i=YOe(e.referencedRule,e.idx)+this.topProd.name,a=r.concat(n),s=new Dn({definition:a}),l=ip(s);this.follows[i]=l}};o(wae,"computeAllProdsFollows");o(YOe,"buildBetweenProdsFollowPrefix")});function Ng(t){let e=t.toString();if(xk.hasOwnProperty(e))return xk[e];{let r=XOe.pattern(e);return xk[e]=r,r}}function kae(){xk={}}var xk,XOe,bk=M(()=>{"use strict";O2();xk={},XOe=new ep;o(Ng,"getRegExpAst");o(kae,"clearRegExpParserCache")});function Cae(t,e=!1){try{let r=Ng(t);return mN(r.value,{},r.flags.ignoreCase)}catch(r){if(r.message===Sae)e&&G2(`${U2} Unable to optimize: < ${t.toString()} > Complement Sets cannot be automatically optimized. This will disable the lexer's first char optimizations. See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let n="";e&&(n=` This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),Xm(`${i2} + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),Dg(`${U2} Failed parsing: < ${t.toString()} > Using the @chevrotain/regexp-to-ast library - Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function gR(t,e,r){switch(t.type){case"Disjunction":for(let i=0;i{if(typeof u=="number")GT(u,e,r);else{let h=u;if(r===!0)for(let f=h.from;f<=h.to;f++)GT(f,e,r);else{for(let f=h.from;f<=h.to&&f=Zm){let f=h.from>=Zm?h.from:Zm,d=h.to,p=Dc(f),m=Dc(d);for(let g=p;g<=m;g++)e[g]=g}}}});break;case"Group":gR(s.value,e,r);break;default:throw Error("Non Exhaustive Match")}let l=s.quantifier!==void 0&&s.quantifier.atLeast===0;if(s.type==="Group"&&yR(s)===!1||s.type!=="Group"&&l===!1)break}break;default:throw Error("non exhaustive match!")}return br(e)}function GT(t,e,r){let n=Dc(t);e[n]=n,r===!0&&GBe(t,e)}function GBe(t,e){let r=String.fromCharCode(t),n=r.toUpperCase();if(n!==r){let i=Dc(n.charCodeAt(0));e[i]=i}else{let i=r.toLowerCase();if(i!==r){let a=Dc(i.charCodeAt(0));e[a]=a}}}function lse(t,e){return Za(t.value,r=>{if(typeof r=="number")return Hn(e,r);{let n=r;return Za(e,i=>n.from<=i&&i<=n.to)!==void 0}})}function yR(t){let e=t.quantifier;return e&&e.atLeast===0?!0:t.value?Mt(t.value)?Ra(t.value,yR):yR(t.value):!1}function $T(t,e){if(e instanceof RegExp){let r=Qm(e),n=new vR(t);return n.visit(r),n.found}else return Za(e,r=>Hn(t,r.charCodeAt(0)))!==void 0}var cse,i2,vR,hse=M(()=>{"use strict";Qv();Ht();jm();zT();xR();cse="Complement Sets are not supported for first char optimization",i2=`Unable to use "first char" lexer optimizations: -`;o(use,"getOptimizedStartCodesIndices");o(gR,"firstCharOptimizedIndices");o(GT,"addOptimizedIdxToResult");o(GBe,"handleIgnoreCase");o(lse,"findCode");o(yR,"isWholeOptional");vR=class extends Lc{static{o(this,"CharCodeFinder")}constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(this.found!==!0){switch(e.type){case"Lookahead":this.visitLookahead(e);return;case"NegativeLookahead":this.visitNegativeLookahead(e);return}super.visitChildren(e)}}visitCharacter(e){Hn(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?lse(e,this.targetCharCodes)===void 0&&(this.found=!0):lse(e,this.targetCharCodes)!==void 0&&(this.found=!0)}};o($T,"canMatchCharCode")});function pse(t,e){e=qh(e,{useSticky:wR,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:o((b,w)=>w(),"tracer")});let r=e.tracer;r("initCharCodeToOptimizedIndexMap",()=>{iFe()});let n;r("Reject Lexer.NA",()=>{n=jh(t,b=>b[t0]===oi.NA)});let i=!1,a;r("Transform Patterns",()=>{i=!1,a=Je(n,b=>{let w=b[t0];if(Vo(w)){let _=w.source;return _.length===1&&_!=="^"&&_!=="$"&&_!=="."&&!w.ignoreCase?_:_.length===2&&_[0]==="\\"&&!Hn(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],_[1])?_[1]:e.useSticky?dse(w):fse(w)}else{if(Ei(w))return i=!0,{exec:w};if(typeof w=="object")return i=!0,w;if(typeof w=="string"){if(w.length===1)return w;{let _=w.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),T=new RegExp(_);return e.useSticky?dse(T):fse(T)}}else throw Error("non exhaustive match")}})});let s,l,u,h,f;r("misc mapping",()=>{s=Je(n,b=>b.tokenTypeIdx),l=Je(n,b=>{let w=b.GROUP;if(w!==oi.SKIPPED){if(gi(w))return w;if(dr(w))return!1;throw Error("non exhaustive match")}}),u=Je(n,b=>{let w=b.LONGER_ALT;if(w)return Mt(w)?Je(w,T=>jw(n,T)):[jw(n,w)]}),h=Je(n,b=>b.PUSH_MODE),f=Je(n,b=>It(b,"POP_MODE"))});let d;r("Line Terminator Handling",()=>{let b=Tse(e.lineTerminatorCharacters);d=Je(n,w=>!1),e.positionTracking!=="onlyOffset"&&(d=Je(n,w=>It(w,"LINE_BREAKS")?!!w.LINE_BREAKS:wse(w,b)===!1&&$T(b,w.PATTERN)))});let p,m,g,y;r("Misc Mapping #2",()=>{p=Je(n,xse),m=Je(a,rFe),g=qr(n,(b,w)=>{let _=w.GROUP;return gi(_)&&_!==oi.SKIPPED&&(b[_]=[]),b},{}),y=Je(a,(b,w)=>({pattern:a[w],longerAlt:u[w],canLineTerminator:d[w],isCustom:p[w],short:m[w],group:l[w],push:h[w],pop:f[w],tokenTypeIdx:s[w],tokenType:n[w]}))});let v=!0,x=[];return e.safeMode||r("First Char Optimization",()=>{x=qr(n,(b,w,_)=>{if(typeof w.PATTERN=="string"){let T=w.PATTERN.charCodeAt(0),E=Dc(T);bR(b,E,y[_])}else if(Mt(w.START_CHARS_HINT)){let T;Ce(w.START_CHARS_HINT,E=>{let L=typeof E=="string"?E.charCodeAt(0):E,C=Dc(L);T!==C&&(T=C,bR(b,C,y[_]))})}else if(Vo(w.PATTERN))if(w.PATTERN.unicode)v=!1,e.ensureOptimizations&&Xm(`${i2} Unable to analyze < ${w.PATTERN.toString()} > pattern. + Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function mN(t,e,r){switch(t.type){case"Disjunction":for(let i=0;i{if(typeof u=="number")wk(u,e,r);else{let h=u;if(r===!0)for(let f=h.from;f<=h.to;f++)wk(f,e,r);else{for(let f=h.from;f<=h.to&&f=Mg){let f=h.from>=Mg?h.from:Mg,d=h.to,p=Mc(f),m=Mc(d);for(let g=p;g<=m;g++)e[g]=g}}}});break;case"Group":mN(s.value,e,r);break;default:throw Error("Non Exhaustive Match")}let l=s.quantifier!==void 0&&s.quantifier.atLeast===0;if(s.type==="Group"&&gN(s)===!1||s.type!=="Group"&&l===!1)break}break;default:throw Error("non exhaustive match!")}return br(e)}function wk(t,e,r){let n=Mc(t);e[n]=n,r===!0&&jOe(t,e)}function jOe(t,e){let r=String.fromCharCode(t),n=r.toUpperCase();if(n!==r){let i=Mc(n.charCodeAt(0));e[i]=i}else{let i=r.toLowerCase();if(i!==r){let a=Mc(i.charCodeAt(0));e[a]=a}}}function Eae(t,e){return ts(t.value,r=>{if(typeof r=="number")return qn(e,r);{let n=r;return ts(e,i=>n.from<=i&&i<=n.to)!==void 0}})}function gN(t){let e=t.quantifier;return e&&e.atLeast===0?!0:t.value?Ot(t.value)?Ra(t.value,gN):gN(t.value):!1}function Tk(t,e){if(e instanceof RegExp){let r=Ng(e),n=new yN(t);return n.visit(r),n.found}else return ts(e,r=>qn(t,r.charCodeAt(0)))!==void 0}var Sae,U2,yN,Aae=M(()=>{"use strict";O2();qt();Lg();bk();vN();Sae="Complement Sets are not supported for first char optimization",U2=`Unable to use "first char" lexer optimizations: +`;o(Cae,"getOptimizedStartCodesIndices");o(mN,"firstCharOptimizedIndices");o(wk,"addOptimizedIdxToResult");o(jOe,"handleIgnoreCase");o(Eae,"findCode");o(gN,"isWholeOptional");yN=class extends Nc{static{o(this,"CharCodeFinder")}constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(this.found!==!0){switch(e.type){case"Lookahead":this.visitLookahead(e);return;case"NegativeLookahead":this.visitNegativeLookahead(e);return}super.visitChildren(e)}}visitCharacter(e){qn(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?Eae(e,this.targetCharCodes)===void 0&&(this.found=!0):Eae(e,this.targetCharCodes)!==void 0&&(this.found=!0)}};o(Tk,"canMatchCharCode")});function Lae(t,e){e=Yh(e,{useSticky:bN,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:o((b,w)=>w(),"tracer")});let r=e.tracer;r("initCharCodeToOptimizedIndexMap",()=>{dPe()});let n;r("Reject Lexer.NA",()=>{n=jh(t,b=>b[ap]===Xn.NA)});let i=!1,a;r("Transform Patterns",()=>{i=!1,a=Je(n,b=>{let w=b[ap];if(Po(w)){let C=w.source;return C.length===1&&C!=="^"&&C!=="$"&&C!=="."&&!w.ignoreCase?C:C.length===2&&C[0]==="\\"&&!qn(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],C[1])?C[1]:e.useSticky?Dae(w):_ae(w)}else{if(Ei(w))return i=!0,{exec:w};if(typeof w=="object")return i=!0,w;if(typeof w=="string"){if(w.length===1)return w;{let C=w.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),T=new RegExp(C);return e.useSticky?Dae(T):_ae(T)}}else throw Error("non exhaustive match")}})});let s,l,u,h,f;r("misc mapping",()=>{s=Je(n,b=>b.tokenTypeIdx),l=Je(n,b=>{let w=b.GROUP;if(w!==Xn.SKIPPED){if(mi(w))return w;if(fr(w))return!1;throw Error("non exhaustive match")}}),u=Je(n,b=>{let w=b.LONGER_ALT;if(w)return Ot(w)?Je(w,T=>MT(n,T)):[MT(n,w)]}),h=Je(n,b=>b.PUSH_MODE),f=Je(n,b=>Pt(b,"POP_MODE"))});let d;r("Line Terminator Handling",()=>{let b=Fae(e.lineTerminatorCharacters);d=Je(n,w=>!1),e.positionTracking!=="onlyOffset"&&(d=Je(n,w=>Pt(w,"LINE_BREAKS")?!!w.LINE_BREAKS:Bae(w,b)===!1&&Tk(b,w.PATTERN)))});let p,m,g,y;r("Misc Mapping #2",()=>{p=Je(n,Oae),m=Je(a,hPe),g=Yr(n,(b,w)=>{let C=w.GROUP;return mi(C)&&C!==Xn.SKIPPED&&(b[C]=[]),b},{}),y=Je(a,(b,w)=>({pattern:a[w],longerAlt:u[w],canLineTerminator:d[w],isCustom:p[w],short:m[w],group:l[w],push:h[w],pop:f[w],tokenTypeIdx:s[w],tokenType:n[w]}))});let v=!0,x=[];return e.safeMode||r("First Char Optimization",()=>{x=Yr(n,(b,w,C)=>{if(typeof w.PATTERN=="string"){let T=w.PATTERN.charCodeAt(0),E=Mc(T);xN(b,E,y[C])}else if(Ot(w.START_CHARS_HINT)){let T;Ae(w.START_CHARS_HINT,E=>{let A=typeof E=="string"?E.charCodeAt(0):E,S=Mc(A);T!==S&&(T=S,xN(b,S,y[C]))})}else if(Po(w.PATTERN))if(w.PATTERN.unicode)v=!1,e.ensureOptimizations&&Dg(`${U2} Unable to analyze < ${w.PATTERN.toString()} > pattern. The regexp unicode flag is not currently supported by the regexp-to-ast library. This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{let T=use(w.PATTERN,e.ensureOptimizations);cr(T)&&(v=!1),Ce(T,E=>{bR(b,E,y[_])})}else e.ensureOptimizations&&Xm(`${i2} TokenType: <${w.name}> is using a custom token pattern without providing parameter. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{let T=Cae(w.PATTERN,e.ensureOptimizations);lr(T)&&(v=!1),Ae(T,E=>{xN(b,E,y[C])})}else e.ensureOptimizations&&Dg(`${U2} TokenType: <${w.name}> is using a custom token pattern without providing parameter. This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),v=!1;return b},[])}),{emptyGroups:g,patternIdxToConfig:y,charCodeToPatternIdxToConfig:x,hasCustom:i,canBeOptimized:v}}function mse(t,e){let r=[],n=VBe(t);r=r.concat(n.errors);let i=UBe(n.valid),a=i.valid;return r=r.concat(i.errors),r=r.concat($Be(a)),r=r.concat(QBe(a)),r=r.concat(ZBe(a,e)),r=r.concat(JBe(a)),r}function $Be(t){let e=[],r=Yr(t,n=>Vo(n[t0]));return e=e.concat(WBe(r)),e=e.concat(XBe(r)),e=e.concat(jBe(r)),e=e.concat(KBe(r)),e=e.concat(YBe(r)),e}function VBe(t){let e=Yr(t,i=>!It(i,t0)),r=Je(e,i=>({message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:Wn.MISSING_PATTERN,tokenTypes:[i]})),n=Xh(t,e);return{errors:r,valid:n}}function UBe(t){let e=Yr(t,i=>{let a=i[t0];return!Vo(a)&&!Ei(a)&&!It(a,"exec")&&!gi(a)}),r=Je(e,i=>({message:"Token Type: ->"+i.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:Wn.INVALID_PATTERN,tokenTypes:[i]})),n=Xh(t,e);return{errors:r,valid:n}}function WBe(t){class e extends Lc{static{o(this,"EndAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitEndAnchor(a){this.found=!0}}let r=Yr(t,i=>{let a=i.PATTERN;try{let s=Qm(a),l=new e;return l.visit(s),l.found}catch{return HBe.test(a.source)}});return Je(r,i=>({message:`Unexpected RegExp Anchor Error: + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),v=!1;return b},[])}),{emptyGroups:g,patternIdxToConfig:y,charCodeToPatternIdxToConfig:x,hasCustom:i,canBeOptimized:v}}function Rae(t,e){let r=[],n=QOe(t);r=r.concat(n.errors);let i=ZOe(n.valid),a=i.valid;return r=r.concat(i.errors),r=r.concat(KOe(a)),r=r.concat(sPe(a)),r=r.concat(oPe(a,e)),r=r.concat(lPe(a)),r}function KOe(t){let e=[],r=qr(t,n=>Po(n[ap]));return e=e.concat(ePe(r)),e=e.concat(nPe(r)),e=e.concat(iPe(r)),e=e.concat(aPe(r)),e=e.concat(tPe(r)),e}function QOe(t){let e=qr(t,i=>!Pt(i,ap)),r=Je(e,i=>({message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:Yn.MISSING_PATTERN,tokenTypes:[i]})),n=Xh(t,e);return{errors:r,valid:n}}function ZOe(t){let e=qr(t,i=>{let a=i[ap];return!Po(a)&&!Ei(a)&&!Pt(a,"exec")&&!mi(a)}),r=Je(e,i=>({message:"Token Type: ->"+i.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:Yn.INVALID_PATTERN,tokenTypes:[i]})),n=Xh(t,e);return{errors:r,valid:n}}function ePe(t){class e extends Nc{static{o(this,"EndAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitEndAnchor(a){this.found=!0}}let r=qr(t,i=>{let a=i.PATTERN;try{let s=Ng(a),l=new e;return l.visit(s),l.found}catch{return JOe.test(a.source)}});return Je(r,i=>({message:`Unexpected RegExp Anchor Error: Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Wn.EOI_ANCHOR_FOUND,tokenTypes:[i]}))}function YBe(t){let e=Yr(t,n=>n.PATTERN.test(""));return Je(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' must not match an empty string",type:Wn.EMPTY_MATCH_PATTERN,tokenTypes:[n]}))}function XBe(t){class e extends Lc{static{o(this,"StartAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitStartAnchor(a){this.found=!0}}let r=Yr(t,i=>{let a=i.PATTERN;try{let s=Qm(a),l=new e;return l.visit(s),l.found}catch{return qBe.test(a.source)}});return Je(r,i=>({message:`Unexpected RegExp Anchor Error: + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Yn.EOI_ANCHOR_FOUND,tokenTypes:[i]}))}function tPe(t){let e=qr(t,n=>n.PATTERN.test(""));return Je(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' must not match an empty string",type:Yn.EMPTY_MATCH_PATTERN,tokenTypes:[n]}))}function nPe(t){class e extends Nc{static{o(this,"StartAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitStartAnchor(a){this.found=!0}}let r=qr(t,i=>{let a=i.PATTERN;try{let s=Ng(a),l=new e;return l.visit(s),l.found}catch{return rPe.test(a.source)}});return Je(r,i=>({message:`Unexpected RegExp Anchor Error: Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Wn.SOI_ANCHOR_FOUND,tokenTypes:[i]}))}function jBe(t){let e=Yr(t,n=>{let i=n[t0];return i instanceof RegExp&&(i.multiline||i.global)});return Je(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:Wn.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}))}function KBe(t){let e=[],r=Je(t,a=>qr(t,(s,l)=>(a.PATTERN.source===l.PATTERN.source&&!Hn(e,l)&&l.PATTERN!==oi.NA&&(e.push(l),s.push(l)),s),[]));r=Tc(r);let n=Yr(r,a=>a.length>1);return Je(n,a=>{let s=Je(a,u=>u.name);return{message:`The same RegExp pattern ->${ra(a).PATTERN}<-has been used in all of the following Token Types: ${s.join(", ")} <-`,type:Wn.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}})}function QBe(t){let e=Yr(t,n=>{if(!It(n,"GROUP"))return!1;let i=n.GROUP;return i!==oi.SKIPPED&&i!==oi.NA&&!gi(i)});return Je(e,n=>({message:"Token Type: ->"+n.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:Wn.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}))}function ZBe(t,e){let r=Yr(t,i=>i.PUSH_MODE!==void 0&&!Hn(e,i.PUSH_MODE));return Je(r,i=>({message:`Token Type: ->${i.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${i.PUSH_MODE}<-which does not exist`,type:Wn.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}))}function JBe(t){let e=[],r=qr(t,(n,i,a)=>{let s=i.PATTERN;return s===oi.NA||(gi(s)?n.push({str:s,idx:a,tokenType:i}):Vo(s)&&tFe(s)&&n.push({str:s.source,idx:a,tokenType:i})),n},[]);return Ce(t,(n,i)=>{Ce(r,({str:a,idx:s,tokenType:l})=>{if(i${l.name}<- can never be matched. + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Yn.SOI_ANCHOR_FOUND,tokenTypes:[i]}))}function iPe(t){let e=qr(t,n=>{let i=n[ap];return i instanceof RegExp&&(i.multiline||i.global)});return Je(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:Yn.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}))}function aPe(t){let e=[],r=Je(t,a=>Yr(t,(s,l)=>(a.PATTERN.source===l.PATTERN.source&&!qn(e,l)&&l.PATTERN!==Xn.NA&&(e.push(l),s.push(l)),s),[]));r=wc(r);let n=qr(r,a=>a.length>1);return Je(n,a=>{let s=Je(a,u=>u.name);return{message:`The same RegExp pattern ->${ra(a).PATTERN}<-has been used in all of the following Token Types: ${s.join(", ")} <-`,type:Yn.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}})}function sPe(t){let e=qr(t,n=>{if(!Pt(n,"GROUP"))return!1;let i=n.GROUP;return i!==Xn.SKIPPED&&i!==Xn.NA&&!mi(i)});return Je(e,n=>({message:"Token Type: ->"+n.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:Yn.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}))}function oPe(t,e){let r=qr(t,i=>i.PUSH_MODE!==void 0&&!qn(e,i.PUSH_MODE));return Je(r,i=>({message:`Token Type: ->${i.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${i.PUSH_MODE}<-which does not exist`,type:Yn.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}))}function lPe(t){let e=[],r=Yr(t,(n,i,a)=>{let s=i.PATTERN;return s===Xn.NA||(mi(s)?n.push({str:s,idx:a,tokenType:i}):Po(s)&&uPe(s)&&n.push({str:s.source,idx:a,tokenType:i})),n},[]);return Ae(t,(n,i)=>{Ae(r,({str:a,idx:s,tokenType:l})=>{if(i${l.name}<- can never be matched. Because it appears AFTER the Token Type ->${n.name}<-in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:u,type:Wn.UNREACHABLE_PATTERN,tokenTypes:[n,l]})}})}),e}function eFe(t,e){if(Vo(e)){let r=e.exec(t);return r!==null&&r.index===0}else{if(Ei(e))return e(t,0,[],{});if(It(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function tFe(t){return Za([".","\\","[","]","|","^","$","(",")","?","*","+","{"],r=>t.source.indexOf(r)!==-1)===void 0}function fse(t){let e=t.ignoreCase?"i":"";return new RegExp(`^(?:${t.source})`,e)}function dse(t){let e=t.ignoreCase?"iy":"y";return new RegExp(`${t.source}`,e)}function gse(t,e,r){let n=[];return It(t,Jm)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+Jm+`> property in its definition -`,type:Wn.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),It(t,VT)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+VT+`> property in its definition -`,type:Wn.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),It(t,VT)&&It(t,Jm)&&!It(t.modes,t.defaultMode)&&n.push({message:`A MultiMode Lexer cannot be initialized with a ${Jm}: <${t.defaultMode}>which does not exist -`,type:Wn.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),It(t,VT)&&Ce(t.modes,(i,a)=>{Ce(i,(s,l)=>{if(dr(s))n.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${a}> at index: <${l}> -`,type:Wn.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(It(s,"LONGER_ALT")){let u=Mt(s.LONGER_ALT)?s.LONGER_ALT:[s.LONGER_ALT];Ce(u,h=>{!dr(h)&&!Hn(i,h)&&n.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${h.name}> on token <${s.name}> outside of mode <${a}> -`,type:Wn.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),n}function yse(t,e,r){let n=[],i=!1,a=Tc(Wr(br(t.modes))),s=jh(a,u=>u[t0]===oi.NA),l=Tse(r);return e&&Ce(s,u=>{let h=wse(u,l);if(h!==!1){let d={message:nFe(u,h),type:h.issue,tokenType:u};n.push(d)}else It(u,"LINE_BREAKS")?u.LINE_BREAKS===!0&&(i=!0):$T(l,u.PATTERN)&&(i=!0)}),e&&!i&&n.push({message:`Warning: No LINE_BREAKS Found. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:u,type:Yn.UNREACHABLE_PATTERN,tokenTypes:[n,l]})}})}),e}function cPe(t,e){if(Po(e)){let r=e.exec(t);return r!==null&&r.index===0}else{if(Ei(e))return e(t,0,[],{});if(Pt(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function uPe(t){return ts([".","\\","[","]","|","^","$","(",")","?","*","+","{"],r=>t.source.indexOf(r)!==-1)===void 0}function _ae(t){let e=t.ignoreCase?"i":"";return new RegExp(`^(?:${t.source})`,e)}function Dae(t){let e=t.ignoreCase?"iy":"y";return new RegExp(`${t.source}`,e)}function Nae(t,e,r){let n=[];return Pt(t,Ig)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+Ig+`> property in its definition +`,type:Yn.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),Pt(t,kk)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+kk+`> property in its definition +`,type:Yn.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),Pt(t,kk)&&Pt(t,Ig)&&!Pt(t.modes,t.defaultMode)&&n.push({message:`A MultiMode Lexer cannot be initialized with a ${Ig}: <${t.defaultMode}>which does not exist +`,type:Yn.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),Pt(t,kk)&&Ae(t.modes,(i,a)=>{Ae(i,(s,l)=>{if(fr(s))n.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${a}> at index: <${l}> +`,type:Yn.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(Pt(s,"LONGER_ALT")){let u=Ot(s.LONGER_ALT)?s.LONGER_ALT:[s.LONGER_ALT];Ae(u,h=>{!fr(h)&&!qn(i,h)&&n.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${h.name}> on token <${s.name}> outside of mode <${a}> +`,type:Yn.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),n}function Mae(t,e,r){let n=[],i=!1,a=wc(Wr(br(t.modes))),s=jh(a,u=>u[ap]===Xn.NA),l=Fae(r);return e&&Ae(s,u=>{let h=Bae(u,l);if(h!==!1){let d={message:fPe(u,h),type:h.issue,tokenType:u};n.push(d)}else Pt(u,"LINE_BREAKS")?u.LINE_BREAKS===!0&&(i=!0):Tk(l,u.PATTERN)&&(i=!0)}),e&&!i&&n.push({message:`Warning: No LINE_BREAKS Found. This Lexer has been defined to track line and column information, But none of the Token Types can be identified as matching a line terminator. See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`,type:Wn.NO_LINE_BREAKS_FLAGS}),n}function vse(t){let e={},r=zr(t);return Ce(r,n=>{let i=t[n];if(Mt(i))e[n]=[];else throw Error("non exhaustive match")}),e}function xse(t){let e=t.PATTERN;if(Vo(e))return!1;if(Ei(e))return!0;if(It(e,"exec"))return!0;if(gi(e))return!1;throw Error("non exhaustive match")}function rFe(t){return gi(t)&&t.length===1?t.charCodeAt(0):!1}function wse(t,e){if(It(t,"LINE_BREAKS"))return!1;if(Vo(t.PATTERN)){try{$T(e,t.PATTERN)}catch(r){return{issue:Wn.IDENTIFY_TERMINATOR,errMsg:r.message}}return!1}else{if(gi(t.PATTERN))return!1;if(xse(t))return{issue:Wn.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}}function nFe(t,e){if(e.issue===Wn.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern. + for details.`,type:Yn.NO_LINE_BREAKS_FLAGS}),n}function Iae(t){let e={},r=zr(t);return Ae(r,n=>{let i=t[n];if(Ot(i))e[n]=[];else throw Error("non exhaustive match")}),e}function Oae(t){let e=t.PATTERN;if(Po(e))return!1;if(Ei(e))return!0;if(Pt(e,"exec"))return!0;if(mi(e))return!1;throw Error("non exhaustive match")}function hPe(t){return mi(t)&&t.length===1?t.charCodeAt(0):!1}function Bae(t,e){if(Pt(t,"LINE_BREAKS"))return!1;if(Po(t.PATTERN)){try{Tk(e,t.PATTERN)}catch(r){return{issue:Yn.IDENTIFY_TERMINATOR,errMsg:r.message}}return!1}else{if(mi(t.PATTERN))return!1;if(Oae(t))return{issue:Yn.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}}function fPe(t,e){if(e.issue===Yn.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern. The problem is in the <${t.name}> Token Type Root cause: ${e.errMsg}. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(e.issue===Wn.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(e.issue===Yn.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. The problem is in the <${t.name}> Token Type - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}function Tse(t){return Je(t,r=>gi(r)?r.charCodeAt(0):r)}function bR(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Dc(t){return t255?255+~~(t/255):t}}var t0,Jm,VT,wR,HBe,qBe,bse,Zm,UT,xR=M(()=>{"use strict";Qv();a2();Ht();jm();hse();zT();t0="PATTERN",Jm="defaultMode",VT="modes",wR=typeof new RegExp("(?:)").sticky=="boolean";o(pse,"analyzeTokenTypes");o(mse,"validatePatterns");o($Be,"validateRegExpPattern");o(VBe,"findMissingPatterns");o(UBe,"findInvalidPatterns");HBe=/[^\\][$]/;o(WBe,"findEndOfInputAnchor");o(YBe,"findEmptyMatchRegExps");qBe=/[^\\[][\^]|^\^/;o(XBe,"findStartOfInputAnchor");o(jBe,"findUnsupportedFlags");o(KBe,"findDuplicatePatterns");o(QBe,"findInvalidGroupType");o(ZBe,"findModesThatDoNotExist");o(JBe,"findUnreachablePatterns");o(eFe,"testTokenType");o(tFe,"noMetaChar");o(fse,"addStartOfInput");o(dse,"addStickyFlag");o(gse,"performRuntimeChecks");o(yse,"performWarningRuntimeChecks");o(vse,"cloneEmptyGroups");o(xse,"isCustomPattern");o(rFe,"isShortPattern");bse={test:o(function(t){let e=t.length;for(let r=this.lastIndex;r{r.isParent=r.categoryMatches.length>0})}function aFe(t){let e=rn(t),r=t,n=!0;for(;n;){r=Tc(Wr(Je(r,a=>a.CATEGORIES)));let i=Xh(r,e);e=e.concat(i),cr(i)?n=!1:r=i}return e}function sFe(t){Ce(t,e=>{TR(e)||(Sse[kse]=e,e.tokenTypeIdx=kse++),Ese(e)&&!Mt(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Ese(e)||(e.CATEGORIES=[]),cFe(e)||(e.categoryMatches=[]),uFe(e)||(e.categoryMatchesMap={})})}function oFe(t){Ce(t,e=>{e.categoryMatches=[],Ce(e.categoryMatchesMap,(r,n)=>{e.categoryMatches.push(Sse[n].tokenTypeIdx)})})}function lFe(t){Ce(t,e=>{Cse([],e)})}function Cse(t,e){Ce(t,r=>{e.categoryMatchesMap[r.tokenTypeIdx]=!0}),Ce(e.CATEGORIES,r=>{let n=t.concat(e);Hn(n,r)||Cse(n,r)})}function TR(t){return It(t,"tokenTypeIdx")}function Ese(t){return It(t,"CATEGORIES")}function cFe(t){return It(t,"categoryMatches")}function uFe(t){return It(t,"categoryMatchesMap")}function Ase(t){return It(t,"tokenTypeIdx")}var kse,Sse,r0=M(()=>{"use strict";Ht();o(Ou,"tokenStructuredMatcher");o(eg,"tokenStructuredMatcherNoCategories");kse=1,Sse={};o(Pu,"augmentTokenTypes");o(aFe,"expandCategories");o(sFe,"assignTokenDefaultProps");o(oFe,"assignCategoriesTokensProp");o(lFe,"assignCategoriesMapProp");o(Cse,"singleAssignCategoriesToksMap");o(TR,"hasShortKeyProperty");o(Ese,"hasCategoriesProperty");o(cFe,"hasExtendingTokensTypesProperty");o(uFe,"hasExtendingTokensTypesMapProperty");o(Ase,"isTokenType")});var kR,ER=M(()=>{"use strict";kR={buildUnableToPopLexerModeMessage(t){return`Unable to pop Lexer Mode after encountering Token ->${t.image}<- The Mode Stack is empty`},buildUnexpectedCharactersMessage(t,e,r,n,i){return`unexpected character: ->${t.charAt(e)}<- at offset: ${e}, skipped ${r} characters.`}}});var Wn,s2,oi,a2=M(()=>{"use strict";xR();Ht();jm();r0();ER();zT();(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",t[t.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"})(Wn||(Wn={}));s2={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` -`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:kR,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(s2);oi=class{static{o(this,"Lexer")}constructor(e,r=s2){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(i,a)=>{if(this.traceInitPerf===!0){this.traceInitIndent++;let s=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${i}>`);let{time:l,value:u}=r2(a),h=l>10?console.warn:console.log;return this.traceInitIndent time: ${l}ms`),this.traceInitIndent--,u}else return a()},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`);this.config=ha({},s2,r);let n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let i,a=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===s2.lineTerminatorsPattern)this.config.lineTerminatorsPattern=bse;else if(this.config.lineTerminatorCharacters===s2.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(r.safeMode&&r.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),Mt(e)?i={modes:{defaultMode:rn(e)},defaultMode:Jm}:(a=!1,i=rn(e))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(gse(i,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(yse(i,this.trackStartLines,this.config.lineTerminatorCharacters))})),i.modes=i.modes?i.modes:{},Ce(i.modes,(l,u)=>{i.modes[u]=jh(l,h=>dr(h))});let s=zr(i.modes);if(Ce(i.modes,(l,u)=>{this.TRACE_INIT(`Mode: <${u}> processing`,()=>{if(this.modes.push(u),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(mse(l,s))}),cr(this.lexerDefinitionErrors)){Pu(l);let h;this.TRACE_INIT("analyzeTokenTypes",()=>{h=pse(l,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[u]=h.patternIdxToConfig,this.charCodeToPatternIdxToConfig[u]=h.charCodeToPatternIdxToConfig,this.emptyGroups=ha({},this.emptyGroups,h.emptyGroups),this.hasCustom=h.hasCustom||this.hasCustom,this.canModeBeOptimized[u]=h.canBeOptimized}})}),this.defaultMode=i.defaultMode,!cr(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){let u=Je(this.lexerDefinitionErrors,h=>h.message).join(`----------------------- + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}function Fae(t){return Je(t,r=>mi(r)?r.charCodeAt(0):r)}function xN(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Mc(t){return t255?255+~~(t/255):t}}var ap,Ig,kk,bN,JOe,rPe,Pae,Mg,Ek,vN=M(()=>{"use strict";O2();H2();qt();Lg();Aae();bk();ap="PATTERN",Ig="defaultMode",kk="modes",bN=typeof new RegExp("(?:)").sticky=="boolean";o(Lae,"analyzeTokenTypes");o(Rae,"validatePatterns");o(KOe,"validateRegExpPattern");o(QOe,"findMissingPatterns");o(ZOe,"findInvalidPatterns");JOe=/[^\\][$]/;o(ePe,"findEndOfInputAnchor");o(tPe,"findEmptyMatchRegExps");rPe=/[^\\[][\^]|^\^/;o(nPe,"findStartOfInputAnchor");o(iPe,"findUnsupportedFlags");o(aPe,"findDuplicatePatterns");o(sPe,"findInvalidGroupType");o(oPe,"findModesThatDoNotExist");o(lPe,"findUnreachablePatterns");o(cPe,"testTokenType");o(uPe,"noMetaChar");o(_ae,"addStartOfInput");o(Dae,"addStickyFlag");o(Nae,"performRuntimeChecks");o(Mae,"performWarningRuntimeChecks");o(Iae,"cloneEmptyGroups");o(Oae,"isCustomPattern");o(hPe,"isShortPattern");Pae={test:o(function(t){let e=t.length;for(let r=this.lastIndex;r{r.isParent=r.categoryMatches.length>0})}function pPe(t){let e=an(t),r=t,n=!0;for(;n;){r=wc(Wr(Je(r,a=>a.CATEGORIES)));let i=Xh(r,e);e=e.concat(i),lr(i)?n=!1:r=i}return e}function mPe(t){Ae(t,e=>{wN(e)||($ae[zae]=e,e.tokenTypeIdx=zae++),Gae(e)&&!Ot(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Gae(e)||(e.CATEGORIES=[]),vPe(e)||(e.categoryMatches=[]),xPe(e)||(e.categoryMatchesMap={})})}function gPe(t){Ae(t,e=>{e.categoryMatches=[],Ae(e.categoryMatchesMap,(r,n)=>{e.categoryMatches.push($ae[n].tokenTypeIdx)})})}function yPe(t){Ae(t,e=>{Vae([],e)})}function Vae(t,e){Ae(t,r=>{e.categoryMatchesMap[r.tokenTypeIdx]=!0}),Ae(e.CATEGORIES,r=>{let n=t.concat(e);qn(n,r)||Vae(n,r)})}function wN(t){return Pt(t,"tokenTypeIdx")}function Gae(t){return Pt(t,"CATEGORIES")}function vPe(t){return Pt(t,"categoryMatches")}function xPe(t){return Pt(t,"categoryMatchesMap")}function Uae(t){return Pt(t,"tokenTypeIdx")}var zae,$ae,sp=M(()=>{"use strict";qt();o(Iu,"tokenStructuredMatcher");o(Og,"tokenStructuredMatcherNoCategories");zae=1,$ae={};o(Ou,"augmentTokenTypes");o(pPe,"expandCategories");o(mPe,"assignTokenDefaultProps");o(gPe,"assignCategoriesTokensProp");o(yPe,"assignCategoriesMapProp");o(Vae,"singleAssignCategoriesToksMap");o(wN,"hasShortKeyProperty");o(Gae,"hasCategoriesProperty");o(vPe,"hasExtendingTokensTypesProperty");o(xPe,"hasExtendingTokensTypesMapProperty");o(Uae,"isTokenType")});var Pg,TN=M(()=>{"use strict";Pg={buildUnableToPopLexerModeMessage(t){return`Unable to pop Lexer Mode after encountering Token ->${t.image}<- The Mode Stack is empty`},buildUnexpectedCharactersMessage(t,e,r,n,i){return`unexpected character: ->${t.charAt(e)}<- at offset: ${e}, skipped ${r} characters.`}}});var Yn,W2,Xn,H2=M(()=>{"use strict";vN();qt();Lg();sp();TN();bk();(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",t[t.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"})(Yn||(Yn={}));W2={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:Pg,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(W2);Xn=class{static{o(this,"Lexer")}constructor(e,r=W2){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(i,a)=>{if(this.traceInitPerf===!0){this.traceInitIndent++;let s=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${i}>`);let{time:l,value:u}=$2(a),h=l>10?console.warn:console.log;return this.traceInitIndent time: ${l}ms`),this.traceInitIndent--,u}else return a()},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=fa({},W2,r);let n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let i,a=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===W2.lineTerminatorsPattern)this.config.lineTerminatorsPattern=Pae;else if(this.config.lineTerminatorCharacters===W2.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(r.safeMode&&r.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),Ot(e)?i={modes:{defaultMode:an(e)},defaultMode:Ig}:(a=!1,i=an(e))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Nae(i,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(Mae(i,this.trackStartLines,this.config.lineTerminatorCharacters))})),i.modes=i.modes?i.modes:{},Ae(i.modes,(l,u)=>{i.modes[u]=jh(l,h=>fr(h))});let s=zr(i.modes);if(Ae(i.modes,(l,u)=>{this.TRACE_INIT(`Mode: <${u}> processing`,()=>{if(this.modes.push(u),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Rae(l,s))}),lr(this.lexerDefinitionErrors)){Ou(l);let h;this.TRACE_INIT("analyzeTokenTypes",()=>{h=Lae(l,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[u]=h.patternIdxToConfig,this.charCodeToPatternIdxToConfig[u]=h.charCodeToPatternIdxToConfig,this.emptyGroups=fa({},this.emptyGroups,h.emptyGroups),this.hasCustom=h.hasCustom||this.hasCustom,this.canModeBeOptimized[u]=h.canBeOptimized}})}),this.defaultMode=i.defaultMode,!lr(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){let u=Je(this.lexerDefinitionErrors,h=>h.message).join(`----------------------- `);throw new Error(`Errors detected in definition of Lexer: -`+u)}Ce(this.lexerDefinitionWarning,l=>{t2(l.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(wR?(this.chopInput=ta,this.match=this.matchWithTest):(this.updateLastIndex=Jn,this.match=this.matchWithExec),a&&(this.handleModes=Jn),this.trackStartLines===!1&&(this.computeNewColumn=ta),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=Jn),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else if(/onlyOffset/i.test(this.config.positionTracking))this.createTokenInstance=this.createOffsetOnlyToken;else throw Error(`Invalid config option: "${this.config.positionTracking}"`);this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{let l=qr(this.canModeBeOptimized,(u,h,f)=>(h===!1&&u.push(f),u),[]);if(r.ensureOptimizations&&!cr(l))throw Error(`Lexer Modes: < ${l.join(", ")} > cannot be optimized. +`+u)}Ae(this.lexerDefinitionWarning,l=>{G2(l.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(bN?(this.chopInput=Ji,this.match=this.matchWithTest):(this.updateLastIndex=ni,this.match=this.matchWithExec),a&&(this.handleModes=ni),this.trackStartLines===!1&&(this.computeNewColumn=Ji),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=ni),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else if(/onlyOffset/i.test(this.config.positionTracking))this.createTokenInstance=this.createOffsetOnlyToken;else throw Error(`Invalid config option: "${this.config.positionTracking}"`);this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{let l=Yr(this.canModeBeOptimized,(u,h,f)=>(h===!1&&u.push(f),u),[]);if(r.ensureOptimizations&&!lr(l))throw Error(`Lexer Modes: < ${l.join(", ")} > cannot be optimized. Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{ose()}),this.TRACE_INIT("toFastProperties",()=>{n2(this)})})}tokenize(e,r=this.defaultMode){if(!cr(this.lexerDefinitionErrors)){let i=Je(this.lexerDefinitionErrors,a=>a.message).join(`----------------------- + Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{kae()}),this.TRACE_INIT("toFastProperties",()=>{V2(this)})})}tokenize(e,r=this.defaultMode){if(!lr(this.lexerDefinitionErrors)){let i=Je(this.lexerDefinitionErrors,a=>a.message).join(`----------------------- `);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -`+i)}return this.tokenizeInternal(e,r)}tokenizeInternal(e,r){let n,i,a,s,l,u,h,f,d,p,m,g,y,v,x,b,w=e,_=w.length,T=0,E=0,L=this.hasCustom?0:Math.floor(e.length/10),C=new Array(L),A=[],I=this.trackStartLines?1:void 0,D=this.trackStartLines?1:void 0,k=vse(this.emptyGroups),R=this.trackStartLines,S=this.config.lineTerminatorsPattern,O=0,N=[],P=[],F=[],B=[];Object.freeze(B);let $;function z(){return N}o(z,"getPossiblePatternsSlow");function W(ee){let J=Dc(ee),H=P[J];return H===void 0?B:H}o(W,"getPossiblePatternsOptimized");let j=o(ee=>{if(F.length===1&&ee.tokenType.PUSH_MODE===void 0){let J=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(ee);A.push({offset:ee.startOffset,line:ee.startLine,column:ee.startColumn,length:ee.image.length,message:J})}else{F.pop();let J=fa(F);N=this.patternIdxToConfig[J],P=this.charCodeToPatternIdxToConfig[J],O=N.length;let H=this.canModeBeOptimized[J]&&this.config.safeMode===!1;P&&H?$=W:$=z}},"pop_mode");function K(ee){F.push(ee),P=this.charCodeToPatternIdxToConfig[ee],N=this.patternIdxToConfig[ee],O=N.length,O=N.length;let J=this.canModeBeOptimized[ee]&&this.config.safeMode===!1;P&&J?$=W:$=z}o(K,"push_mode"),K.call(this,r);let ie,Q=this.config.recoveryEnabled;for(;T<_;){u=null;let ee=w.charCodeAt(T),J=$(ee),H=J.length;for(n=0;nu.length){u=s,h=f,ie=ue;break}}}break}}if(u!==null){if(d=u.length,p=ie.group,p!==void 0&&(m=ie.tokenTypeIdx,g=this.createTokenInstance(u,T,m,ie.tokenType,I,D,d),this.handlePayload(g,h),p===!1?E=this.addToken(C,E,g):k[p].push(g)),e=this.chopInput(e,d),T=T+d,D=this.computeNewColumn(D,d),R===!0&&ie.canLineTerminator===!0){let q=0,Z,ae;S.lastIndex=0;do Z=S.test(u),Z===!0&&(ae=S.lastIndex-1,q++);while(Z===!0);q!==0&&(I=I+q,D=d-ae,this.updateTokenEndLineColumnLocation(g,p,ae,q,I,D,d))}this.handleModes(ie,j,K,g)}else{let q=T,Z=I,ae=D,ue=Q===!1;for(;ue===!1&&T<_;)for(e=this.chopInput(e,1),T++,i=0;i{"use strict";Ht();a2();r0();o(Bu,"tokenLabel");o(SR,"hasTokenLabel");hFe="parent",_se="categories",Lse="label",Dse="group",Nse="push_mode",Rse="pop_mode",Mse="longer_alt",Ise="line_breaks",Ose="start_chars_hint";o(HT,"createToken");o(fFe,"createTokenInternal");oo=HT({name:"EOF",pattern:oi.NA});Pu([oo]);o(n0,"createTokenInstance");o(o2,"tokenMatcher")});var Fu,Pse,Bl,tg=M(()=>{"use strict";i0();Ht();ns();Fu={buildMismatchTokenMessage({expected:t,actual:e,previous:r,ruleName:n}){return`Expecting ${SR(t)?`--> ${Bu(t)} <--`:`token of type --> ${t.name} <--`} but found --> '${e.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:t,ruleName:e}){return"Redundant input, expecting EOF but found: "+t.image},buildNoViableAltMessage({expectedPathsPerAlt:t,actual:e,previous:r,customUserDescription:n,ruleName:i}){let a="Expecting: ",l=` -but found: '`+ra(e).image+"'";if(n)return a+n+l;{let u=qr(t,(p,m)=>p.concat(m),[]),h=Je(u,p=>`[${Je(p,m=>Bu(m)).join(", ")}]`),d=`one of these possible Token sequences: +`+i)}return this.tokenizeInternal(e,r)}tokenizeInternal(e,r){let n,i,a,s,l,u,h,f,d,p,m,g,y,v,x,b,w=e,C=w.length,T=0,E=0,A=this.hasCustom?0:Math.floor(e.length/10),S=new Array(A),_=[],I=this.trackStartLines?1:void 0,D=this.trackStartLines?1:void 0,k=Iae(this.emptyGroups),L=this.trackStartLines,R=this.config.lineTerminatorsPattern,O=0,N=[],B=[],F=[],P=[];Object.freeze(P);let G;function z(){return N}o(z,"getPossiblePatternsSlow");function H(le){let he=Mc(le),K=B[he];return K===void 0?P:K}o(H,"getPossiblePatternsOptimized");let Q=o(le=>{if(F.length===1&&le.tokenType.PUSH_MODE===void 0){let he=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(le);_.push({offset:le.startOffset,line:le.startLine,column:le.startColumn,length:le.image.length,message:he})}else{F.pop();let he=da(F);N=this.patternIdxToConfig[he],B=this.charCodeToPatternIdxToConfig[he],O=N.length;let K=this.canModeBeOptimized[he]&&this.config.safeMode===!1;B&&K?G=H:G=z}},"pop_mode");function j(le){F.push(le),B=this.charCodeToPatternIdxToConfig[le],N=this.patternIdxToConfig[le],O=N.length,O=N.length;let he=this.canModeBeOptimized[le]&&this.config.safeMode===!1;B&&he?G=H:G=z}o(j,"push_mode"),j.call(this,r);let ie,ne=this.config.recoveryEnabled;for(;Tu.length){u=s,h=f,ie=se;break}}}break}}if(u!==null){if(d=u.length,p=ie.group,p!==void 0&&(m=ie.tokenTypeIdx,g=this.createTokenInstance(u,T,m,ie.tokenType,I,D,d),this.handlePayload(g,h),p===!1?E=this.addToken(S,E,g):k[p].push(g)),e=this.chopInput(e,d),T=T+d,D=this.computeNewColumn(D,d),L===!0&&ie.canLineTerminator===!0){let X=0,te,J;R.lastIndex=0;do te=R.test(u),te===!0&&(J=R.lastIndex-1,X++);while(te===!0);X!==0&&(I=I+X,D=d-J,this.updateTokenEndLineColumnLocation(g,p,J,X,I,D,d))}this.handleModes(ie,Q,j,g)}else{let X=T,te=I,J=D,se=ne===!1;for(;se===!1&&T{"use strict";qt();H2();sp();o(Pu,"tokenLabel");o(kN,"hasTokenLabel");bPe="parent",Hae="categories",Wae="label",qae="group",Yae="push_mode",Xae="pop_mode",jae="longer_alt",Kae="line_breaks",Qae="start_chars_hint";o(rf,"createToken");o(wPe,"createTokenInternal");no=rf({name:"EOF",pattern:Xn.NA});Ou([no]);o(Bu,"createTokenInstance");o(q2,"tokenMatcher")});var Fu,Zae,Ml,Bg=M(()=>{"use strict";op();qt();as();Fu={buildMismatchTokenMessage({expected:t,actual:e,previous:r,ruleName:n}){return`Expecting ${kN(t)?`--> ${Pu(t)} <--`:`token of type --> ${t.name} <--`} but found --> '${e.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:t,ruleName:e}){return"Redundant input, expecting EOF but found: "+t.image},buildNoViableAltMessage({expectedPathsPerAlt:t,actual:e,previous:r,customUserDescription:n,ruleName:i}){let a="Expecting: ",l=` +but found: '`+ra(e).image+"'";if(n)return a+n+l;{let u=Yr(t,(p,m)=>p.concat(m),[]),h=Je(u,p=>`[${Je(p,m=>Pu(m)).join(", ")}]`),d=`one of these possible Token sequences: ${Je(h,(p,m)=>` ${m+1}. ${p}`).join(` `)}`;return a+d+l}},buildEarlyExitMessage({expectedIterationPaths:t,actual:e,customUserDescription:r,ruleName:n}){let i="Expecting: ",s=` but found: '`+ra(e).image+"'";if(r)return i+r+s;{let u=`expecting at least one iteration which starts with one of these possible Token sequences:: - <${Je(t,h=>`[${Je(h,f=>Bu(f)).join(",")}]`).join(" ,")}>`;return i+u+s}}};Object.freeze(Fu);Pse={buildRuleNotFoundError(t,e){return"Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- -inside top level rule: ->`+t.name+"<-"}},Bl={buildDuplicateFoundError(t,e){function r(f){return f instanceof kr?f.terminalType.name:f instanceof nn?f.nonTerminalName:""}o(r,"getExtraProductionArgument");let n=t.name,i=ra(e),a=i.idx,s=Ms(i),l=r(i),u=a>0,h=`->${s}${u?a:""}<- ${l?`with argument: ->${l}<-`:""} + <${Je(t,h=>`[${Je(h,f=>Pu(f)).join(",")}]`).join(" ,")}>`;return i+u+s}}};Object.freeze(Fu);Zae={buildRuleNotFoundError(t,e){return"Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- +inside top level rule: ->`+t.name+"<-"}},Ml={buildDuplicateFoundError(t,e){function r(f){return f instanceof kr?f.terminalType.name:f instanceof on?f.nonTerminalName:""}o(r,"getExtraProductionArgument");let n=t.name,i=ra(e),a=i.idx,s=Is(i),l=r(i),u=a>0,h=`->${s}${u?a:""}<- ${l?`with argument: ->${l}<-`:""} appears more than once (${e.length} times) in the top level rule: ->${n}<-. For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES `;return h=h.replace(/[ \t]+/g," "),h=h.replace(/\s\s+/g,` @@ -720,14 +755,14 @@ inside top level rule: ->`+t.name+"<-"}},Bl={buildDuplicateFoundError(t,e){funct The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${t.name}>. To resolve this make sure each Terminal and Non-Terminal names are unique This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`},buildAlternationPrefixAmbiguityError(t){let e=Je(t.prefixPath,i=>Bu(i)).join(", "),r=t.alternation.idx===0?"":t.alternation.idx;return`Ambiguous alternatives: <${t.ambiguityIndices.join(" ,")}> due to common lookahead prefix +and Non-Terminal names start with a lower case letter.`},buildAlternationPrefixAmbiguityError(t){let e=Je(t.prefixPath,i=>Pu(i)).join(", "),r=t.alternation.idx===0?"":t.alternation.idx;return`Ambiguous alternatives: <${t.ambiguityIndices.join(" ,")}> due to common lookahead prefix in inside <${t.topLevelRule.name}> Rule, <${e}> may appears as a prefix path in all these alternatives. See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`},buildAlternationAmbiguityError(t){let e=Je(t.prefixPath,i=>Bu(i)).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(" ,")}> in inside <${t.topLevelRule.name}> Rule, +For Further details.`},buildAlternationAmbiguityError(t){let e=Je(t.prefixPath,i=>Pu(i)).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(" ,")}> in inside <${t.topLevelRule.name}> Rule, <${e}> may appears as a prefix path in all these alternatives. `;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,n},buildEmptyRepetitionError(t){let e=Ms(t.repetition);return t.repetition.idx!==0&&(e+=t.repetition.idx),`The repetition <${e}> within Rule <${t.topLevelRule.name}> can never consume any tokens. +For Further details.`,n},buildEmptyRepetitionError(t){let e=Is(t.repetition);return t.repetition.idx!==0&&(e+=t.repetition.idx),`The repetition <${e}> within Rule <${t.topLevelRule.name}> can never consume any tokens. This could lead to an infinite loop.`},buildTokenNameError(t){return"deprecated"},buildEmptyAlternationError(t){return`Ambiguous empty alternative: <${t.emptyChoiceIdx+1}> in inside <${t.topLevelRule.name}> Rule. Only the last alternative may be an empty alternative.`},buildTooManyAlternativesError(t){return`An Alternation cannot have more than 256 alternatives: inside <${t.topLevelRule.name}> Rule. @@ -736,61 +771,62 @@ rule: <${e}> can be invoked from itself (directly or indirectly) without consuming any Tokens. The grammar path that causes this is: ${n} To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError(t){return"deprecated"},buildDuplicateRuleNameError(t){let e;return t.topLevelRule instanceof ts?e=t.topLevelRule.name:e=t.topLevelRule,`Duplicate definition, rule: ->${e}<- is already defined in the grammar: ->${t.grammarName}<-`}}});function Bse(t,e){let r=new CR(t,e);return r.resolveRefs(),r.errors}var CR,Fse=M(()=>{"use strict";Is();Ht();ns();o(Bse,"resolveGrammar");CR=class extends rs{static{o(this,"GastRefResolverVisitor")}constructor(e,r){super(),this.nameToTopRule=e,this.errMsgProvider=r,this.errors=[]}resolveRefs(){Ce(br(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){let r=this.nameToTopRule[e.nonTerminalName];if(r)e.referencedRule=r;else{let n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:n,type:zi.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}}});function XT(t,e,r=[]){r=rn(r);let n=[],i=0;function a(l){return l.concat(mi(t,i+1))}o(a,"remainingPathWith");function s(l){let u=XT(a(l),e,r);return n.concat(u)}for(o(s,"getAlternativesForProd");r.length{cr(u.definition)===!1&&(n=s(u.definition))}),n;if(l instanceof kr)r.push(l.terminalType);else throw Error("non exhaustive match")}i++}return n.push({partialPath:r,suffixDef:mi(t,i)}),n}function jT(t,e,r,n){let i="EXIT_NONE_TERMINAL",a=[i],s="EXIT_ALTERNATIVE",l=!1,u=e.length,h=u-n-1,f=[],d=[];for(d.push({idx:-1,def:t,ruleStack:[],occurrenceStack:[]});!cr(d);){let p=d.pop();if(p===s){l&&fa(d).idx<=h&&d.pop();continue}let m=p.def,g=p.idx,y=p.ruleStack,v=p.occurrenceStack;if(cr(m))continue;let x=m[0];if(x===i){let b={idx:g,def:mi(m),ruleStack:Lu(y),occurrenceStack:Lu(v)};d.push(b)}else if(x instanceof kr)if(g=0;b--){let w=x.definition[b],_={idx:g,def:w.definition.concat(mi(m)),ruleStack:y,occurrenceStack:v};d.push(_),d.push(s)}else if(x instanceof Cn)d.push({idx:g,def:x.definition.concat(mi(m)),ruleStack:y,occurrenceStack:v});else if(x instanceof ts)d.push(dFe(x,g,y,v));else throw Error("non exhaustive match")}return f}function dFe(t,e,r,n){let i=rn(r);i.push(t.name);let a=rn(n);return a.push(1),{idx:e,def:t.definition,ruleStack:i,occurrenceStack:a}}var AR,WT,rg,YT,l2,qT,c2,u2=M(()=>{"use strict";Ht();dR();PT();ns();AR=class extends Iu{static{o(this,"AbstractNextPossibleTokensWalker")}constructor(e,r){super(),this.topProd=e,this.path=r,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=rn(this.path.ruleStack).reverse(),this.occurrenceStack=rn(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,r=[]){this.found||super.walk(e,r)}walkProdRef(e,r,n){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){let i=r.concat(n);this.updateExpectedNext(),this.walk(e.referencedRule,i)}}updateExpectedNext(){cr(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},WT=class extends AR{static{o(this,"NextAfterTokenWalker")}constructor(e,r){super(e,r),this.path=r,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,r,n){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){let i=r.concat(n),a=new Cn({definition:i});this.possibleTokTypes=e0(a),this.found=!0}}},rg=class extends Iu{static{o(this,"AbstractNextTerminalAfterProductionWalker")}constructor(e,r){super(),this.topRule=e,this.occurrence=r,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}},YT=class extends rg{static{o(this,"NextTerminalAfterManyWalker")}walkMany(e,r,n){if(e.idx===this.occurrence){let i=ra(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof kr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkMany(e,r,n)}},l2=class extends rg{static{o(this,"NextTerminalAfterManySepWalker")}walkManySep(e,r,n){if(e.idx===this.occurrence){let i=ra(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof kr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkManySep(e,r,n)}},qT=class extends rg{static{o(this,"NextTerminalAfterAtLeastOneWalker")}walkAtLeastOne(e,r,n){if(e.idx===this.occurrence){let i=ra(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof kr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOne(e,r,n)}},c2=class extends rg{static{o(this,"NextTerminalAfterAtLeastOneSepWalker")}walkAtLeastOneSep(e,r,n){if(e.idx===this.occurrence){let i=ra(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof kr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOneSep(e,r,n)}};o(XT,"possiblePathsFrom");o(jT,"nextPossibleTokensAfter");o(dFe,"expandTopLevelRule")});function h2(t){if(t instanceof an||t==="Option")return Yn.OPTION;if(t instanceof Lr||t==="Repetition")return Yn.REPETITION;if(t instanceof An||t==="RepetitionMandatory")return Yn.REPETITION_MANDATORY;if(t instanceof _n||t==="RepetitionMandatoryWithSeparator")return Yn.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof vn||t==="RepetitionWithSeparator")return Yn.REPETITION_WITH_SEPARATOR;if(t instanceof xn||t==="Alternation")return Yn.ALTERNATION;throw Error("non exhaustive match")}function QT(t){let{occurrence:e,rule:r,prodType:n,maxLookahead:i}=t,a=h2(n);return a===Yn.ALTERNATION?ng(e,r,i):ig(e,r,a,i)}function Gse(t,e,r,n,i,a){let s=ng(t,e,r),l=Yse(s)?eg:Ou;return a(s,n,l,i)}function $se(t,e,r,n,i,a){let s=ig(t,e,i,r),l=Yse(s)?eg:Ou;return a(s[0],l,n)}function Vse(t,e,r,n){let i=t.length,a=Ra(t,s=>Ra(s,l=>l.length===1));if(e)return function(s){let l=Je(s,u=>u.GATE);for(let u=0;uWr(u)),l=qr(s,(u,h,f)=>(Ce(h,d=>{It(u,d.tokenTypeIdx)||(u[d.tokenTypeIdx]=f),Ce(d.categoryMatches,p=>{It(u,p)||(u[p]=f)})}),u),{});return function(){let u=this.LA(1);return l[u.tokenTypeIdx]}}else return function(){for(let s=0;sa.length===1),i=t.length;if(n&&!r){let a=Wr(t);if(a.length===1&&cr(a[0].categoryMatches)){let l=a[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===l}}else{let s=qr(a,(l,u,h)=>(l[u.tokenTypeIdx]=!0,Ce(u.categoryMatches,f=>{l[f]=!0}),l),[]);return function(){let l=this.LA(1);return s[l.tokenTypeIdx]===!0}}}else return function(){e:for(let a=0;aXT([s],1)),n=zse(r.length),i=Je(r,s=>{let l={};return Ce(s,u=>{let h=_R(u.partialPath);Ce(h,f=>{l[f]=!0})}),l}),a=r;for(let s=1;s<=e;s++){let l=a;a=zse(l.length);for(let u=0;u{let x=_R(v.partialPath);Ce(x,b=>{i[u][b]=!0})})}}}}return n}function ng(t,e,r,n){let i=new KT(t,Yn.ALTERNATION,n);return e.accept(i),Hse(i.result,r)}function ig(t,e,r,n){let i=new KT(t,r);e.accept(i);let a=i.result,l=new LR(e,t,r).startWalking(),u=new Cn({definition:a}),h=new Cn({definition:l});return Hse([u,h],n)}function ZT(t,e){e:for(let r=0;r{let i=e[n];return r===i||i.categoryMatchesMap[r.tokenTypeIdx]})}function Yse(t){return Ra(t,e=>Ra(e,r=>Ra(r,n=>cr(n.categoryMatches))))}var Yn,LR,KT,ag=M(()=>{"use strict";Ht();u2();PT();r0();ns();(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(Yn||(Yn={}));o(h2,"getProdType");o(QT,"getLookaheadPaths");o(Gse,"buildLookaheadFuncForOr");o($se,"buildLookaheadFuncForOptionalProd");o(Vse,"buildAlternativesLookAheadFunc");o(Use,"buildSingleAlternativeLookaheadFunction");LR=class extends Iu{static{o(this,"RestDefinitionFinderWalker")}constructor(e,r,n){super(),this.topProd=e,this.targetOccurrence=r,this.targetProdType=n}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(e,r,n,i){return e.idx===this.targetOccurrence&&this.targetProdType===r?(this.restDef=n.concat(i),!0):!1}walkOption(e,r,n){this.checkIsTarget(e,Yn.OPTION,r,n)||super.walkOption(e,r,n)}walkAtLeastOne(e,r,n){this.checkIsTarget(e,Yn.REPETITION_MANDATORY,r,n)||super.walkOption(e,r,n)}walkAtLeastOneSep(e,r,n){this.checkIsTarget(e,Yn.REPETITION_MANDATORY_WITH_SEPARATOR,r,n)||super.walkOption(e,r,n)}walkMany(e,r,n){this.checkIsTarget(e,Yn.REPETITION,r,n)||super.walkOption(e,r,n)}walkManySep(e,r,n){this.checkIsTarget(e,Yn.REPETITION_WITH_SEPARATOR,r,n)||super.walkOption(e,r,n)}},KT=class extends rs{static{o(this,"InsideDefinitionFinderVisitor")}constructor(e,r,n){super(),this.targetOccurrence=e,this.targetProdType=r,this.targetRef=n,this.result=[]}checkIsTarget(e,r){e.idx===this.targetOccurrence&&this.targetProdType===r&&(this.targetRef===void 0||e===this.targetRef)&&(this.result=e.definition)}visitOption(e){this.checkIsTarget(e,Yn.OPTION)}visitRepetition(e){this.checkIsTarget(e,Yn.REPETITION)}visitRepetitionMandatory(e){this.checkIsTarget(e,Yn.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(e){this.checkIsTarget(e,Yn.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(e){this.checkIsTarget(e,Yn.REPETITION_WITH_SEPARATOR)}visitAlternation(e){this.checkIsTarget(e,Yn.ALTERNATION)}};o(zse,"initializeArrayOfArrays");o(_R,"pathToHashKeys");o(pFe,"isUniquePrefixHash");o(Hse,"lookAheadSequenceFromAlternatives");o(ng,"getLookaheadPathsForOr");o(ig,"getLookaheadPathsForOptionalProd");o(ZT,"containsPath");o(Wse,"isStrictPrefixOfPath");o(Yse,"areTokenCategoriesNotUsed")});function qse(t){let e=t.lookaheadStrategy.validate({rules:t.rules,tokenTypes:t.tokenTypes,grammarName:t.grammarName});return Je(e,r=>Object.assign({type:zi.CUSTOM_LOOKAHEAD_VALIDATION},r))}function Xse(t,e,r,n){let i=da(t,u=>mFe(u,r)),a=wFe(t,e,r),s=da(t,u=>vFe(u,r)),l=da(t,u=>yFe(u,t,n,r));return i.concat(a,s,l)}function mFe(t,e){let r=new DR;t.accept(r);let n=r.allProductions,i=UL(n,gFe),a=Ds(i,l=>l.length>1);return Je(br(a),l=>{let u=ra(l),h=e.buildDuplicateFoundError(t,l),f=Ms(u),d={message:h,type:zi.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:f,occurrence:u.idx},p=jse(u);return p&&(d.parameter=p),d})}function gFe(t){return`${Ms(t)}_#_${t.idx}_#_${jse(t)}`}function jse(t){return t instanceof kr?t.terminalType.name:t instanceof nn?t.nonTerminalName:""}function yFe(t,e,r,n){let i=[];if(qr(e,(s,l)=>l.name===t.name?s+1:s,0)>1){let s=n.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});i.push({message:s,type:zi.DUPLICATE_RULE_NAME,ruleName:t.name})}return i}function Kse(t,e,r){let n=[],i;return Hn(e,t)||(i=`Invalid rule override, rule: ->${t}<- cannot be overridden in the grammar: ->${r}<-as it is not defined in any of the super grammars `,n.push({message:i,type:zi.INVALID_RULE_OVERRIDE,ruleName:t})),n}function RR(t,e,r,n=[]){let i=[],a=JT(e.definition);if(cr(a))return[];{let s=t.name;Hn(a,t)&&i.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:n}),type:zi.LEFT_RECURSION,ruleName:s});let u=Xh(a,n.concat([t])),h=da(u,f=>{let d=rn(n);return d.push(f),RR(t,f,r,d)});return i.concat(h)}}function JT(t){let e=[];if(cr(t))return e;let r=ra(t);if(r instanceof nn)e.push(r.referencedRule);else if(r instanceof Cn||r instanceof an||r instanceof An||r instanceof _n||r instanceof vn||r instanceof Lr)e=e.concat(JT(r.definition));else if(r instanceof xn)e=Wr(Je(r.definition,a=>JT(a.definition)));else if(!(r instanceof kr))throw Error("non exhaustive match");let n=Jd(r),i=t.length>1;if(n&&i){let a=mi(t);return e.concat(JT(a))}else return e}function Qse(t,e){let r=new f2;t.accept(r);let n=r.alternations;return da(n,a=>{let s=Lu(a.definition);return da(s,(l,u)=>{let h=jT([l],[],Ou,1);return cr(h)?[{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:a,emptyChoiceIdx:u}),type:zi.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:a.idx,alternative:u+1}]:[]})})}function Zse(t,e,r){let n=new f2;t.accept(n);let i=n.alternations;return i=jh(i,s=>s.ignoreAmbiguities===!0),da(i,s=>{let l=s.idx,u=s.maxLookahead||e,h=ng(l,t,u,s),f=xFe(h,s,t,r),d=bFe(h,s,t,r);return f.concat(d)})}function vFe(t,e){let r=new f2;t.accept(r);let n=r.alternations;return da(n,a=>a.definition.length>255?[{message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:a}),type:zi.TOO_MANY_ALTS,ruleName:t.name,occurrence:a.idx}]:[])}function Jse(t,e,r){let n=[];return Ce(t,i=>{let a=new NR;i.accept(a);let s=a.allProductions;Ce(s,l=>{let u=h2(l),h=l.maxLookahead||e,f=l.idx,p=ig(f,i,u,h)[0];if(cr(Wr(p))){let m=r.buildEmptyRepetitionError({topLevelRule:i,repetition:l});n.push({message:m,type:zi.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),n}function xFe(t,e,r,n){let i=[],a=qr(t,(l,u,h)=>(e.definition[h].ignoreAmbiguities===!0||Ce(u,f=>{let d=[h];Ce(t,(p,m)=>{h!==m&&ZT(p,f)&&e.definition[m].ignoreAmbiguities!==!0&&d.push(m)}),d.length>1&&!ZT(i,f)&&(i.push(f),l.push({alts:d,path:f}))}),l),[]);return Je(a,l=>{let u=Je(l.alts,f=>f+1);return{message:n.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:u,prefixPath:l.path}),type:zi.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:l.alts}})}function bFe(t,e,r,n){let i=qr(t,(s,l,u)=>{let h=Je(l,f=>({idx:u,path:f}));return s.concat(h)},[]);return Tc(da(i,s=>{if(e.definition[s.idx].ignoreAmbiguities===!0)return[];let u=s.idx,h=s.path,f=Yr(i,p=>e.definition[p.idx].ignoreAmbiguities!==!0&&p.idx{let m=[p.idx+1,u+1],g=e.idx===0?"":e.idx;return{message:n.buildAlternationPrefixAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:m,prefixPath:p.path}),type:zi.AMBIGUOUS_PREFIX_ALTS,ruleName:r.name,occurrence:g,alternatives:m}})}))}function wFe(t,e,r){let n=[],i=Je(e,a=>a.name);return Ce(t,a=>{let s=a.name;if(Hn(i,s)){let l=r.buildNamespaceConflictError(a);n.push({message:l,type:zi.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:s})}}),n}var DR,f2,NR,d2=M(()=>{"use strict";Ht();Is();ns();ag();u2();r0();o(qse,"validateLookahead");o(Xse,"validateGrammar");o(mFe,"validateDuplicateProductions");o(gFe,"identifyProductionForDuplicates");o(jse,"getExtraProductionArgument");DR=class extends rs{static{o(this,"OccurrenceValidationCollector")}constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}};o(yFe,"validateRuleDoesNotAlreadyExist");o(Kse,"validateRuleIsOverridden");o(RR,"validateNoLeftRecursion");o(JT,"getFirstNoneTerminal");f2=class extends rs{static{o(this,"OrCollector")}constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}};o(Qse,"validateEmptyOrAlternative");o(Zse,"validateAmbiguousAlternationAlternatives");NR=class extends rs{static{o(this,"RepetitionCollector")}constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}};o(vFe,"validateTooManyAlts");o(Jse,"validateSomeNonEmptyLookaheadPath");o(xFe,"checkAlternativesAmbiguities");o(bFe,"checkPrefixAlternativesAmbiguities");o(wFe,"checkTerminalAndNoneTerminalsNameSpace")});function eoe(t){let e=qh(t,{errMsgProvider:Pse}),r={};return Ce(t.rules,n=>{r[n.name]=n}),Bse(r,e.errMsgProvider)}function toe(t){return t=qh(t,{errMsgProvider:Bl}),Xse(t.rules,t.tokenTypes,t.errMsgProvider,t.grammarName)}var roe=M(()=>{"use strict";Ht();Fse();d2();tg();o(eoe,"resolveGrammar");o(toe,"validateGrammar")});function rf(t){return Hn(ooe,t.name)}var noe,ioe,aoe,soe,ooe,sg,a0,p2,m2,g2,og=M(()=>{"use strict";Ht();noe="MismatchedTokenException",ioe="NoViableAltException",aoe="EarlyExitException",soe="NotAllInputParsedException",ooe=[noe,ioe,aoe,soe];Object.freeze(ooe);o(rf,"isRecognitionException");sg=class extends Error{static{o(this,"RecognitionException")}constructor(e,r){super(e),this.token=r,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},a0=class extends sg{static{o(this,"MismatchedTokenException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=noe}},p2=class extends sg{static{o(this,"NoViableAltException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=ioe}},m2=class extends sg{static{o(this,"NotAllInputParsedException")}constructor(e,r){super(e,r),this.name=soe}},g2=class extends sg{static{o(this,"EarlyExitException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=aoe}}});function TFe(t,e,r,n,i,a,s){let l=this.getKeyForAutomaticLookahead(n,i),u=this.firstAfterRepMap[l];if(u===void 0){let p=this.getCurrRuleFullName(),m=this.getGAstProductions()[p];u=new a(m,i).startWalking(),this.firstAfterRepMap[l]=u}let h=u.token,f=u.occurrence,d=u.isEndOfRule;this.RULE_STACK.length===1&&d&&h===void 0&&(h=oo,f=1),!(h===void 0||f===void 0)&&this.shouldInRepetitionRecoveryBeTried(h,f,s)&&this.tryInRepetitionRecovery(t,e,r,h)}var MR,OR,IR,ek,PR=M(()=>{"use strict";i0();Ht();og();pR();Is();MR={},OR="InRuleRecoveryException",IR=class extends Error{static{o(this,"InRuleRecoveryException")}constructor(e){super(e),this.name=OR}},ek=class{static{o(this,"Recoverable")}initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=It(e,"recoveryEnabled")?e.recoveryEnabled:is.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=TFe)}getTokenToInsert(e){let r=n0(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,r,n,i){let a=this.findReSyncTokenType(),s=this.exportLexerState(),l=[],u=!1,h=this.LA(1),f=this.LA(1),d=o(()=>{let p=this.LA(0),m=this.errorMessageProvider.buildMismatchTokenMessage({expected:i,actual:h,previous:p,ruleName:this.getCurrRuleFullName()}),g=new a0(m,h,this.LA(0));g.resyncedTokens=Lu(l),this.SAVE_ERROR(g)},"generateErrorMessage");for(;!u;)if(this.tokenMatcher(f,i)){d();return}else if(n.call(this)){d(),e.apply(this,r);return}else this.tokenMatcher(f,a)?u=!0:(f=this.SKIP_TOKEN(),this.addToResyncTokens(f,l));this.importLexerState(s)}shouldInRepetitionRecoveryBeTried(e,r,n){return!(n===!1||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))}getFollowsForInRuleRecovery(e,r){let n=this.getCurrentGrammarPath(e,r);return this.getNextPossibleTokenTypes(n)}tryInRuleRecovery(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){let n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new IR("sad sad panda")}canPerformInRuleRecovery(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,r){if(!this.canTokenTypeBeInsertedInRecovery(e)||cr(r))return!1;let n=this.LA(1);return Za(r,a=>this.tokenMatcher(n,a))!==void 0}canRecoverWithSingleTokenDeletion(e){return this.canTokenTypeBeDeletedInRecovery(e)?this.tokenMatcher(this.LA(2),e):!1}isInCurrentRuleReSyncSet(e){let r=this.getCurrFollowKey(),n=this.getFollowSetFromFollowKey(r);return Hn(n,e)}findReSyncTokenType(){let e=this.flattenFollowSet(),r=this.LA(1),n=2;for(;;){let i=Za(e,a=>o2(r,a));if(i!==void 0)return i;r=this.LA(n),n++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return MR;let e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(n)}}buildFullFollowKeyStack(){let e=this.RULE_STACK,r=this.RULE_OCCURRENCE_STACK;return Je(e,(n,i)=>i===0?MR:{ruleName:this.shortRuleNameToFullName(n),idxInCallingRule:r[i],inRule:this.shortRuleNameToFullName(e[i-1])})}flattenFollowSet(){let e=Je(this.buildFullFollowKeyStack(),r=>this.getFollowSetFromFollowKey(r));return Wr(e)}getFollowSetFromFollowKey(e){if(e===MR)return[oo];let r=e.ruleName+e.idxInCallingRule+BT+e.inRule;return this.resyncFollows[r]}addToResyncTokens(e,r){return this.tokenMatcher(e,oo)||r.push(e),r}reSyncTo(e){let r=[],n=this.LA(1);for(;this.tokenMatcher(n,e)===!1;)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,r);return Lu(r)}attemptInRepetitionRecovery(e,r,n,i,a,s,l){}getCurrentGrammarPath(e,r){let n=this.getHumanReadableRuleStack(),i=rn(this.RULE_OCCURRENCE_STACK);return{ruleStack:n,occurrenceStack:i,lastTok:e,lastTokOccurrence:r}}getHumanReadableRuleStack(){return Je(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}};o(TFe,"attemptInRepetitionRecovery")});function tk(t,e,r){return r|e|t}var rk=M(()=>{"use strict";o(tk,"getKeyForAutomaticLookahead")});var zu,BR=M(()=>{"use strict";Ht();tg();Is();d2();ag();zu=class{static{o(this,"LLkLookaheadStrategy")}constructor(e){var r;this.maxLookahead=(r=e?.maxLookahead)!==null&&r!==void 0?r:is.maxLookahead}validate(e){let r=this.validateNoLeftRecursion(e.rules);if(cr(r)){let n=this.validateEmptyOrAlternatives(e.rules),i=this.validateAmbiguousAlternationAlternatives(e.rules,this.maxLookahead),a=this.validateSomeNonEmptyLookaheadPath(e.rules,this.maxLookahead);return[...r,...n,...i,...a]}return r}validateNoLeftRecursion(e){return da(e,r=>RR(r,r,Bl))}validateEmptyOrAlternatives(e){return da(e,r=>Qse(r,Bl))}validateAmbiguousAlternationAlternatives(e,r){return da(e,n=>Zse(n,r,Bl))}validateSomeNonEmptyLookaheadPath(e,r){return Jse(e,r,Bl)}buildLookaheadForAlternation(e){return Gse(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,Vse)}buildLookaheadForOptional(e){return $se(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,h2(e.prodType),Use)}}});function kFe(t){nk.reset(),t.accept(nk);let e=nk.dslMethods;return nk.reset(),e}var ik,FR,nk,loe=M(()=>{"use strict";Ht();Is();rk();ns();BR();ik=class{static{o(this,"LooksAhead")}initLooksAhead(e){this.dynamicTokensEnabled=It(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:is.dynamicTokensEnabled,this.maxLookahead=It(e,"maxLookahead")?e.maxLookahead:is.maxLookahead,this.lookaheadStrategy=It(e,"lookaheadStrategy")?e.lookaheadStrategy:new zu({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){Ce(e,r=>{this.TRACE_INIT(`${r.name} Rule Lookahead`,()=>{let{alternation:n,repetition:i,option:a,repetitionMandatory:s,repetitionMandatoryWithSeparator:l,repetitionWithSeparator:u}=kFe(r);Ce(n,h=>{let f=h.idx===0?"":h.idx;this.TRACE_INIT(`${Ms(h)}${f}`,()=>{let d=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:h.idx,rule:r,maxLookahead:h.maxLookahead||this.maxLookahead,hasPredicates:h.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),p=tk(this.fullRuleNameToShort[r.name],256,h.idx);this.setLaFuncCache(p,d)})}),Ce(i,h=>{this.computeLookaheadFunc(r,h.idx,768,"Repetition",h.maxLookahead,Ms(h))}),Ce(a,h=>{this.computeLookaheadFunc(r,h.idx,512,"Option",h.maxLookahead,Ms(h))}),Ce(s,h=>{this.computeLookaheadFunc(r,h.idx,1024,"RepetitionMandatory",h.maxLookahead,Ms(h))}),Ce(l,h=>{this.computeLookaheadFunc(r,h.idx,1536,"RepetitionMandatoryWithSeparator",h.maxLookahead,Ms(h))}),Ce(u,h=>{this.computeLookaheadFunc(r,h.idx,1280,"RepetitionWithSeparator",h.maxLookahead,Ms(h))})})})}computeLookaheadFunc(e,r,n,i,a,s){this.TRACE_INIT(`${s}${r===0?"":r}`,()=>{let l=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:r,rule:e,maxLookahead:a||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:i}),u=tk(this.fullRuleNameToShort[e.name],n,r);this.setLaFuncCache(u,l)})}getKeyForAutomaticLookahead(e,r){let n=this.getLastExplicitRuleShortName();return tk(n,e,r)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,r){this.lookAheadFuncsCache.set(e,r)}},FR=class extends rs{static{o(this,"DslMethodsCollectorVisitor")}constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}},nk=new FR;o(kFe,"collectMethods")});function $R(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{"use strict";o($R,"setNodeLocationOnlyOffset");o(VR,"setNodeLocationFull");o(coe,"addTerminalToCst");o(uoe,"addNoneTerminalToCst")});function UR(t,e){Object.defineProperty(t,EFe,{enumerable:!1,configurable:!0,writable:!1,value:e})}var EFe,foe=M(()=>{"use strict";EFe="name";o(UR,"defineNameProp")});function SFe(t,e){let r=zr(t),n=r.length;for(let i=0;is.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>: +see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError(t){return"deprecated"},buildDuplicateRuleNameError(t){let e;return t.topLevelRule instanceof ns?e=t.topLevelRule.name:e=t.topLevelRule,`Duplicate definition, rule: ->${e}<- is already defined in the grammar: ->${t.grammarName}<-`}}});function Jae(t,e){let r=new EN(t,e);return r.resolveRefs(),r.errors}var EN,ese=M(()=>{"use strict";Os();qt();as();o(Jae,"resolveGrammar");EN=class extends is{static{o(this,"GastRefResolverVisitor")}constructor(e,r){super(),this.nameToTopRule=e,this.errMsgProvider=r,this.errors=[]}resolveRefs(){Ae(br(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){let r=this.nameToTopRule[e.nonTerminalName];if(r)e.referencedRule=r;else{let n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:n,type:Fi.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}}});function _k(t,e,r=[]){r=an(r);let n=[],i=0;function a(l){return l.concat(pi(t,i+1))}o(a,"remainingPathWith");function s(l){let u=_k(a(l),e,r);return n.concat(u)}for(o(s,"getAlternativesForProd");r.length{lr(u.definition)===!1&&(n=s(u.definition))}),n;if(l instanceof kr)r.push(l.terminalType);else throw Error("non exhaustive match")}i++}return n.push({partialPath:r,suffixDef:pi(t,i)}),n}function Dk(t,e,r,n){let i="EXIT_NONE_TERMINAL",a=[i],s="EXIT_ALTERNATIVE",l=!1,u=e.length,h=u-n-1,f=[],d=[];for(d.push({idx:-1,def:t,ruleStack:[],occurrenceStack:[]});!lr(d);){let p=d.pop();if(p===s){l&&da(d).idx<=h&&d.pop();continue}let m=p.def,g=p.idx,y=p.ruleStack,v=p.occurrenceStack;if(lr(m))continue;let x=m[0];if(x===i){let b={idx:g,def:pi(m),ruleStack:Lu(y),occurrenceStack:Lu(v)};d.push(b)}else if(x instanceof kr)if(g=0;b--){let w=x.definition[b],C={idx:g,def:w.definition.concat(pi(m)),ruleStack:y,occurrenceStack:v};d.push(C),d.push(s)}else if(x instanceof Dn)d.push({idx:g,def:x.definition.concat(pi(m)),ruleStack:y,occurrenceStack:v});else if(x instanceof ns)d.push(TPe(x,g,y,v));else throw Error("non exhaustive match")}return f}function TPe(t,e,r,n){let i=an(r);i.push(t.name);let a=an(n);return a.push(1),{idx:e,def:t.definition,ruleStack:i,occurrenceStack:a}}var SN,Sk,Fg,Ck,Y2,Ak,X2,j2=M(()=>{"use strict";qt();fN();yk();as();SN=class extends Mu{static{o(this,"AbstractNextPossibleTokensWalker")}constructor(e,r){super(),this.topProd=e,this.path=r,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=an(this.path.ruleStack).reverse(),this.occurrenceStack=an(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,r=[]){this.found||super.walk(e,r)}walkProdRef(e,r,n){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){let i=r.concat(n);this.updateExpectedNext(),this.walk(e.referencedRule,i)}}updateExpectedNext(){lr(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},Sk=class extends SN{static{o(this,"NextAfterTokenWalker")}constructor(e,r){super(e,r),this.path=r,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,r,n){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){let i=r.concat(n),a=new Dn({definition:i});this.possibleTokTypes=ip(a),this.found=!0}}},Fg=class extends Mu{static{o(this,"AbstractNextTerminalAfterProductionWalker")}constructor(e,r){super(),this.topRule=e,this.occurrence=r,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}},Ck=class extends Fg{static{o(this,"NextTerminalAfterManyWalker")}walkMany(e,r,n){if(e.idx===this.occurrence){let i=ra(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof kr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkMany(e,r,n)}},Y2=class extends Fg{static{o(this,"NextTerminalAfterManySepWalker")}walkManySep(e,r,n){if(e.idx===this.occurrence){let i=ra(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof kr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkManySep(e,r,n)}},Ak=class extends Fg{static{o(this,"NextTerminalAfterAtLeastOneWalker")}walkAtLeastOne(e,r,n){if(e.idx===this.occurrence){let i=ra(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof kr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOne(e,r,n)}},X2=class extends Fg{static{o(this,"NextTerminalAfterAtLeastOneSepWalker")}walkAtLeastOneSep(e,r,n){if(e.idx===this.occurrence){let i=ra(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof kr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOneSep(e,r,n)}};o(_k,"possiblePathsFrom");o(Dk,"nextPossibleTokensAfter");o(TPe,"expandTopLevelRule")});function K2(t){if(t instanceof ln||t==="Option")return jn.OPTION;if(t instanceof Lr||t==="Repetition")return jn.REPETITION;if(t instanceof Ln||t==="RepetitionMandatory")return jn.REPETITION_MANDATORY;if(t instanceof Rn||t==="RepetitionMandatoryWithSeparator")return jn.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof wn||t==="RepetitionWithSeparator")return jn.REPETITION_WITH_SEPARATOR;if(t instanceof Tn||t==="Alternation")return jn.ALTERNATION;throw Error("non exhaustive match")}function Rk(t){let{occurrence:e,rule:r,prodType:n,maxLookahead:i}=t,a=K2(n);return a===jn.ALTERNATION?zg(e,r,i):Gg(e,r,a,i)}function rse(t,e,r,n,i,a){let s=zg(t,e,r),l=lse(s)?Og:Iu;return a(s,n,l,i)}function nse(t,e,r,n,i,a){let s=Gg(t,e,i,r),l=lse(s)?Og:Iu;return a(s[0],l,n)}function ise(t,e,r,n){let i=t.length,a=Ra(t,s=>Ra(s,l=>l.length===1));if(e)return function(s){let l=Je(s,u=>u.GATE);for(let u=0;uWr(u)),l=Yr(s,(u,h,f)=>(Ae(h,d=>{Pt(u,d.tokenTypeIdx)||(u[d.tokenTypeIdx]=f),Ae(d.categoryMatches,p=>{Pt(u,p)||(u[p]=f)})}),u),{});return function(){let u=this.LA(1);return l[u.tokenTypeIdx]}}else return function(){for(let s=0;sa.length===1),i=t.length;if(n&&!r){let a=Wr(t);if(a.length===1&&lr(a[0].categoryMatches)){let l=a[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===l}}else{let s=Yr(a,(l,u,h)=>(l[u.tokenTypeIdx]=!0,Ae(u.categoryMatches,f=>{l[f]=!0}),l),[]);return function(){let l=this.LA(1);return s[l.tokenTypeIdx]===!0}}}else return function(){e:for(let a=0;a_k([s],1)),n=tse(r.length),i=Je(r,s=>{let l={};return Ae(s,u=>{let h=CN(u.partialPath);Ae(h,f=>{l[f]=!0})}),l}),a=r;for(let s=1;s<=e;s++){let l=a;a=tse(l.length);for(let u=0;u{let x=CN(v.partialPath);Ae(x,b=>{i[u][b]=!0})})}}}}return n}function zg(t,e,r,n){let i=new Lk(t,jn.ALTERNATION,n);return e.accept(i),sse(i.result,r)}function Gg(t,e,r,n){let i=new Lk(t,r);e.accept(i);let a=i.result,l=new AN(e,t,r).startWalking(),u=new Dn({definition:a}),h=new Dn({definition:l});return sse([u,h],n)}function Nk(t,e){e:for(let r=0;r{let i=e[n];return r===i||i.categoryMatchesMap[r.tokenTypeIdx]})}function lse(t){return Ra(t,e=>Ra(e,r=>Ra(r,n=>lr(n.categoryMatches))))}var jn,AN,Lk,$g=M(()=>{"use strict";qt();j2();yk();sp();as();(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(jn||(jn={}));o(K2,"getProdType");o(Rk,"getLookaheadPaths");o(rse,"buildLookaheadFuncForOr");o(nse,"buildLookaheadFuncForOptionalProd");o(ise,"buildAlternativesLookAheadFunc");o(ase,"buildSingleAlternativeLookaheadFunction");AN=class extends Mu{static{o(this,"RestDefinitionFinderWalker")}constructor(e,r,n){super(),this.topProd=e,this.targetOccurrence=r,this.targetProdType=n}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(e,r,n,i){return e.idx===this.targetOccurrence&&this.targetProdType===r?(this.restDef=n.concat(i),!0):!1}walkOption(e,r,n){this.checkIsTarget(e,jn.OPTION,r,n)||super.walkOption(e,r,n)}walkAtLeastOne(e,r,n){this.checkIsTarget(e,jn.REPETITION_MANDATORY,r,n)||super.walkOption(e,r,n)}walkAtLeastOneSep(e,r,n){this.checkIsTarget(e,jn.REPETITION_MANDATORY_WITH_SEPARATOR,r,n)||super.walkOption(e,r,n)}walkMany(e,r,n){this.checkIsTarget(e,jn.REPETITION,r,n)||super.walkOption(e,r,n)}walkManySep(e,r,n){this.checkIsTarget(e,jn.REPETITION_WITH_SEPARATOR,r,n)||super.walkOption(e,r,n)}},Lk=class extends is{static{o(this,"InsideDefinitionFinderVisitor")}constructor(e,r,n){super(),this.targetOccurrence=e,this.targetProdType=r,this.targetRef=n,this.result=[]}checkIsTarget(e,r){e.idx===this.targetOccurrence&&this.targetProdType===r&&(this.targetRef===void 0||e===this.targetRef)&&(this.result=e.definition)}visitOption(e){this.checkIsTarget(e,jn.OPTION)}visitRepetition(e){this.checkIsTarget(e,jn.REPETITION)}visitRepetitionMandatory(e){this.checkIsTarget(e,jn.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(e){this.checkIsTarget(e,jn.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(e){this.checkIsTarget(e,jn.REPETITION_WITH_SEPARATOR)}visitAlternation(e){this.checkIsTarget(e,jn.ALTERNATION)}};o(tse,"initializeArrayOfArrays");o(CN,"pathToHashKeys");o(kPe,"isUniquePrefixHash");o(sse,"lookAheadSequenceFromAlternatives");o(zg,"getLookaheadPathsForOr");o(Gg,"getLookaheadPathsForOptionalProd");o(Nk,"containsPath");o(ose,"isStrictPrefixOfPath");o(lse,"areTokenCategoriesNotUsed")});function cse(t){let e=t.lookaheadStrategy.validate({rules:t.rules,tokenTypes:t.tokenTypes,grammarName:t.grammarName});return Je(e,r=>Object.assign({type:Fi.CUSTOM_LOOKAHEAD_VALIDATION},r))}function use(t,e,r,n){let i=pa(t,u=>EPe(u,r)),a=LPe(t,e,r),s=pa(t,u=>APe(u,r)),l=pa(t,u=>CPe(u,t,n,r));return i.concat(a,s,l)}function EPe(t,e){let r=new _N;t.accept(r);let n=r.allProductions,i=AL(n,SPe),a=Ns(i,l=>l.length>1);return Je(br(a),l=>{let u=ra(l),h=e.buildDuplicateFoundError(t,l),f=Is(u),d={message:h,type:Fi.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:f,occurrence:u.idx},p=hse(u);return p&&(d.parameter=p),d})}function SPe(t){return`${Is(t)}_#_${t.idx}_#_${hse(t)}`}function hse(t){return t instanceof kr?t.terminalType.name:t instanceof on?t.nonTerminalName:""}function CPe(t,e,r,n){let i=[];if(Yr(e,(s,l)=>l.name===t.name?s+1:s,0)>1){let s=n.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});i.push({message:s,type:Fi.DUPLICATE_RULE_NAME,ruleName:t.name})}return i}function fse(t,e,r){let n=[],i;return qn(e,t)||(i=`Invalid rule override, rule: ->${t}<- cannot be overridden in the grammar: ->${r}<-as it is not defined in any of the super grammars `,n.push({message:i,type:Fi.INVALID_RULE_OVERRIDE,ruleName:t})),n}function LN(t,e,r,n=[]){let i=[],a=Mk(e.definition);if(lr(a))return[];{let s=t.name;qn(a,t)&&i.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:n}),type:Fi.LEFT_RECURSION,ruleName:s});let u=Xh(a,n.concat([t])),h=pa(u,f=>{let d=an(n);return d.push(f),LN(t,f,r,d)});return i.concat(h)}}function Mk(t){let e=[];if(lr(t))return e;let r=ra(t);if(r instanceof on)e.push(r.referencedRule);else if(r instanceof Dn||r instanceof ln||r instanceof Ln||r instanceof Rn||r instanceof wn||r instanceof Lr)e=e.concat(Mk(r.definition));else if(r instanceof Tn)e=Wr(Je(r.definition,a=>Mk(a.definition)));else if(!(r instanceof kr))throw Error("non exhaustive match");let n=np(r),i=t.length>1;if(n&&i){let a=pi(t);return e.concat(Mk(a))}else return e}function dse(t,e){let r=new Q2;t.accept(r);let n=r.alternations;return pa(n,a=>{let s=Lu(a.definition);return pa(s,(l,u)=>{let h=Dk([l],[],Iu,1);return lr(h)?[{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:a,emptyChoiceIdx:u}),type:Fi.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:a.idx,alternative:u+1}]:[]})})}function pse(t,e,r){let n=new Q2;t.accept(n);let i=n.alternations;return i=jh(i,s=>s.ignoreAmbiguities===!0),pa(i,s=>{let l=s.idx,u=s.maxLookahead||e,h=zg(l,t,u,s),f=_Pe(h,s,t,r),d=DPe(h,s,t,r);return f.concat(d)})}function APe(t,e){let r=new Q2;t.accept(r);let n=r.alternations;return pa(n,a=>a.definition.length>255?[{message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:a}),type:Fi.TOO_MANY_ALTS,ruleName:t.name,occurrence:a.idx}]:[])}function mse(t,e,r){let n=[];return Ae(t,i=>{let a=new DN;i.accept(a);let s=a.allProductions;Ae(s,l=>{let u=K2(l),h=l.maxLookahead||e,f=l.idx,p=Gg(f,i,u,h)[0];if(lr(Wr(p))){let m=r.buildEmptyRepetitionError({topLevelRule:i,repetition:l});n.push({message:m,type:Fi.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),n}function _Pe(t,e,r,n){let i=[],a=Yr(t,(l,u,h)=>(e.definition[h].ignoreAmbiguities===!0||Ae(u,f=>{let d=[h];Ae(t,(p,m)=>{h!==m&&Nk(p,f)&&e.definition[m].ignoreAmbiguities!==!0&&d.push(m)}),d.length>1&&!Nk(i,f)&&(i.push(f),l.push({alts:d,path:f}))}),l),[]);return Je(a,l=>{let u=Je(l.alts,f=>f+1);return{message:n.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:u,prefixPath:l.path}),type:Fi.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:l.alts}})}function DPe(t,e,r,n){let i=Yr(t,(s,l,u)=>{let h=Je(l,f=>({idx:u,path:f}));return s.concat(h)},[]);return wc(pa(i,s=>{if(e.definition[s.idx].ignoreAmbiguities===!0)return[];let u=s.idx,h=s.path,f=qr(i,p=>e.definition[p.idx].ignoreAmbiguities!==!0&&p.idx{let m=[p.idx+1,u+1],g=e.idx===0?"":e.idx;return{message:n.buildAlternationPrefixAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:m,prefixPath:p.path}),type:Fi.AMBIGUOUS_PREFIX_ALTS,ruleName:r.name,occurrence:g,alternatives:m}})}))}function LPe(t,e,r){let n=[],i=Je(e,a=>a.name);return Ae(t,a=>{let s=a.name;if(qn(i,s)){let l=r.buildNamespaceConflictError(a);n.push({message:l,type:Fi.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:s})}}),n}var _N,Q2,DN,Z2=M(()=>{"use strict";qt();Os();as();$g();j2();sp();o(cse,"validateLookahead");o(use,"validateGrammar");o(EPe,"validateDuplicateProductions");o(SPe,"identifyProductionForDuplicates");o(hse,"getExtraProductionArgument");_N=class extends is{static{o(this,"OccurrenceValidationCollector")}constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}};o(CPe,"validateRuleDoesNotAlreadyExist");o(fse,"validateRuleIsOverridden");o(LN,"validateNoLeftRecursion");o(Mk,"getFirstNoneTerminal");Q2=class extends is{static{o(this,"OrCollector")}constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}};o(dse,"validateEmptyOrAlternative");o(pse,"validateAmbiguousAlternationAlternatives");DN=class extends is{static{o(this,"RepetitionCollector")}constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}};o(APe,"validateTooManyAlts");o(mse,"validateSomeNonEmptyLookaheadPath");o(_Pe,"checkAlternativesAmbiguities");o(DPe,"checkPrefixAlternativesAmbiguities");o(LPe,"checkTerminalAndNoneTerminalsNameSpace")});function gse(t){let e=Yh(t,{errMsgProvider:Zae}),r={};return Ae(t.rules,n=>{r[n.name]=n}),Jae(r,e.errMsgProvider)}function yse(t){return t=Yh(t,{errMsgProvider:Ml}),use(t.rules,t.tokenTypes,t.errMsgProvider,t.grammarName)}var vse=M(()=>{"use strict";qt();ese();Z2();Bg();o(gse,"resolveGrammar");o(yse,"validateGrammar")});function nf(t){return qn(kse,t.name)}var xse,bse,wse,Tse,kse,Vg,lp,J2,ex,tx,Ug=M(()=>{"use strict";qt();xse="MismatchedTokenException",bse="NoViableAltException",wse="EarlyExitException",Tse="NotAllInputParsedException",kse=[xse,bse,wse,Tse];Object.freeze(kse);o(nf,"isRecognitionException");Vg=class extends Error{static{o(this,"RecognitionException")}constructor(e,r){super(e),this.token=r,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},lp=class extends Vg{static{o(this,"MismatchedTokenException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=xse}},J2=class extends Vg{static{o(this,"NoViableAltException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=bse}},ex=class extends Vg{static{o(this,"NotAllInputParsedException")}constructor(e,r){super(e,r),this.name=Tse}},tx=class extends Vg{static{o(this,"EarlyExitException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=wse}}});function RPe(t,e,r,n,i,a,s){let l=this.getKeyForAutomaticLookahead(n,i),u=this.firstAfterRepMap[l];if(u===void 0){let p=this.getCurrRuleFullName(),m=this.getGAstProductions()[p];u=new a(m,i).startWalking(),this.firstAfterRepMap[l]=u}let h=u.token,f=u.occurrence,d=u.isEndOfRule;this.RULE_STACK.length===1&&d&&h===void 0&&(h=no,f=1),!(h===void 0||f===void 0)&&this.shouldInRepetitionRecoveryBeTried(h,f,s)&&this.tryInRepetitionRecovery(t,e,r,h)}var RN,MN,NN,Ik,IN=M(()=>{"use strict";op();qt();Ug();dN();Os();RN={},MN="InRuleRecoveryException",NN=class extends Error{static{o(this,"InRuleRecoveryException")}constructor(e){super(e),this.name=MN}},Ik=class{static{o(this,"Recoverable")}initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=Pt(e,"recoveryEnabled")?e.recoveryEnabled:ss.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=RPe)}getTokenToInsert(e){let r=Bu(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,r,n,i){let a=this.findReSyncTokenType(),s=this.exportLexerState(),l=[],u=!1,h=this.LA(1),f=this.LA(1),d=o(()=>{let p=this.LA(0),m=this.errorMessageProvider.buildMismatchTokenMessage({expected:i,actual:h,previous:p,ruleName:this.getCurrRuleFullName()}),g=new lp(m,h,this.LA(0));g.resyncedTokens=Lu(l),this.SAVE_ERROR(g)},"generateErrorMessage");for(;!u;)if(this.tokenMatcher(f,i)){d();return}else if(n.call(this)){d(),e.apply(this,r);return}else this.tokenMatcher(f,a)?u=!0:(f=this.SKIP_TOKEN(),this.addToResyncTokens(f,l));this.importLexerState(s)}shouldInRepetitionRecoveryBeTried(e,r,n){return!(n===!1||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))}getFollowsForInRuleRecovery(e,r){let n=this.getCurrentGrammarPath(e,r);return this.getNextPossibleTokenTypes(n)}tryInRuleRecovery(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){let n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new NN("sad sad panda")}canPerformInRuleRecovery(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,r){if(!this.canTokenTypeBeInsertedInRecovery(e)||lr(r))return!1;let n=this.LA(1);return ts(r,a=>this.tokenMatcher(n,a))!==void 0}canRecoverWithSingleTokenDeletion(e){return this.canTokenTypeBeDeletedInRecovery(e)?this.tokenMatcher(this.LA(2),e):!1}isInCurrentRuleReSyncSet(e){let r=this.getCurrFollowKey(),n=this.getFollowSetFromFollowKey(r);return qn(n,e)}findReSyncTokenType(){let e=this.flattenFollowSet(),r=this.LA(1),n=2;for(;;){let i=ts(e,a=>q2(r,a));if(i!==void 0)return i;r=this.LA(n),n++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return RN;let e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(n)}}buildFullFollowKeyStack(){let e=this.RULE_STACK,r=this.RULE_OCCURRENCE_STACK;return Je(e,(n,i)=>i===0?RN:{ruleName:this.shortRuleNameToFullName(n),idxInCallingRule:r[i],inRule:this.shortRuleNameToFullName(e[i-1])})}flattenFollowSet(){let e=Je(this.buildFullFollowKeyStack(),r=>this.getFollowSetFromFollowKey(r));return Wr(e)}getFollowSetFromFollowKey(e){if(e===RN)return[no];let r=e.ruleName+e.idxInCallingRule+vk+e.inRule;return this.resyncFollows[r]}addToResyncTokens(e,r){return this.tokenMatcher(e,no)||r.push(e),r}reSyncTo(e){let r=[],n=this.LA(1);for(;this.tokenMatcher(n,e)===!1;)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,r);return Lu(r)}attemptInRepetitionRecovery(e,r,n,i,a,s,l){}getCurrentGrammarPath(e,r){let n=this.getHumanReadableRuleStack(),i=an(this.RULE_OCCURRENCE_STACK);return{ruleStack:n,occurrenceStack:i,lastTok:e,lastTokOccurrence:r}}getHumanReadableRuleStack(){return Je(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}};o(RPe,"attemptInRepetitionRecovery")});function Ok(t,e,r){return r|e|t}var Pk=M(()=>{"use strict";o(Ok,"getKeyForAutomaticLookahead")});var zu,ON=M(()=>{"use strict";qt();Bg();Os();Z2();$g();zu=class{static{o(this,"LLkLookaheadStrategy")}constructor(e){var r;this.maxLookahead=(r=e?.maxLookahead)!==null&&r!==void 0?r:ss.maxLookahead}validate(e){let r=this.validateNoLeftRecursion(e.rules);if(lr(r)){let n=this.validateEmptyOrAlternatives(e.rules),i=this.validateAmbiguousAlternationAlternatives(e.rules,this.maxLookahead),a=this.validateSomeNonEmptyLookaheadPath(e.rules,this.maxLookahead);return[...r,...n,...i,...a]}return r}validateNoLeftRecursion(e){return pa(e,r=>LN(r,r,Ml))}validateEmptyOrAlternatives(e){return pa(e,r=>dse(r,Ml))}validateAmbiguousAlternationAlternatives(e,r){return pa(e,n=>pse(n,r,Ml))}validateSomeNonEmptyLookaheadPath(e,r){return mse(e,r,Ml)}buildLookaheadForAlternation(e){return rse(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,ise)}buildLookaheadForOptional(e){return nse(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,K2(e.prodType),ase)}}});function NPe(t){Bk.reset(),t.accept(Bk);let e=Bk.dslMethods;return Bk.reset(),e}var Fk,PN,Bk,Ese=M(()=>{"use strict";qt();Os();Pk();as();ON();Fk=class{static{o(this,"LooksAhead")}initLooksAhead(e){this.dynamicTokensEnabled=Pt(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:ss.dynamicTokensEnabled,this.maxLookahead=Pt(e,"maxLookahead")?e.maxLookahead:ss.maxLookahead,this.lookaheadStrategy=Pt(e,"lookaheadStrategy")?e.lookaheadStrategy:new zu({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){Ae(e,r=>{this.TRACE_INIT(`${r.name} Rule Lookahead`,()=>{let{alternation:n,repetition:i,option:a,repetitionMandatory:s,repetitionMandatoryWithSeparator:l,repetitionWithSeparator:u}=NPe(r);Ae(n,h=>{let f=h.idx===0?"":h.idx;this.TRACE_INIT(`${Is(h)}${f}`,()=>{let d=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:h.idx,rule:r,maxLookahead:h.maxLookahead||this.maxLookahead,hasPredicates:h.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),p=Ok(this.fullRuleNameToShort[r.name],256,h.idx);this.setLaFuncCache(p,d)})}),Ae(i,h=>{this.computeLookaheadFunc(r,h.idx,768,"Repetition",h.maxLookahead,Is(h))}),Ae(a,h=>{this.computeLookaheadFunc(r,h.idx,512,"Option",h.maxLookahead,Is(h))}),Ae(s,h=>{this.computeLookaheadFunc(r,h.idx,1024,"RepetitionMandatory",h.maxLookahead,Is(h))}),Ae(l,h=>{this.computeLookaheadFunc(r,h.idx,1536,"RepetitionMandatoryWithSeparator",h.maxLookahead,Is(h))}),Ae(u,h=>{this.computeLookaheadFunc(r,h.idx,1280,"RepetitionWithSeparator",h.maxLookahead,Is(h))})})})}computeLookaheadFunc(e,r,n,i,a,s){this.TRACE_INIT(`${s}${r===0?"":r}`,()=>{let l=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:r,rule:e,maxLookahead:a||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:i}),u=Ok(this.fullRuleNameToShort[e.name],n,r);this.setLaFuncCache(u,l)})}getKeyForAutomaticLookahead(e,r){let n=this.getLastExplicitRuleShortName();return Ok(n,e,r)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,r){this.lookAheadFuncsCache.set(e,r)}},PN=class extends is{static{o(this,"DslMethodsCollectorVisitor")}constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}},Bk=new PN;o(NPe,"collectMethods")});function zN(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{"use strict";o(zN,"setNodeLocationOnlyOffset");o(GN,"setNodeLocationFull");o(Sse,"addTerminalToCst");o(Cse,"addNoneTerminalToCst")});function $N(t,e){Object.defineProperty(t,MPe,{enumerable:!1,configurable:!0,writable:!1,value:e})}var MPe,_se=M(()=>{"use strict";MPe="name";o($N,"defineNameProp")});function IPe(t,e){let r=zr(t),n=r.length;for(let i=0;is.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>: ${a.join(` `).replace(/\n/g,` - `)}`)}},"validateVisitor")};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=e,r}function poe(t,e,r){let n=o(function(){},"derivedConstructor");UR(n,t+"BaseSemanticsWithDefaults");let i=Object.create(r.prototype);return Ce(e,a=>{i[a]=SFe}),n.prototype=i,n.prototype.constructor=n,n}function CFe(t,e){return AFe(t,e)}function AFe(t,e){let r=Yr(e,i=>Ei(t[i])===!1),n=Je(r,i=>({msg:`Missing visitor method: <${i}> on ${t.constructor.name} CST Visitor.`,type:HR.MISSING_METHOD,methodName:i}));return Tc(n)}var HR,moe=M(()=>{"use strict";Ht();foe();o(SFe,"defaultVisit");o(doe,"createBaseSemanticVisitorConstructor");o(poe,"createBaseVisitorConstructorWithDefaults");(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(HR||(HR={}));o(CFe,"validateVisitor");o(AFe,"validateMissingCstMethods")});var lk,goe=M(()=>{"use strict";hoe();Ht();moe();Is();lk=class{static{o(this,"TreeBuilder")}initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=It(e,"nodeLocationTracking")?e.nodeLocationTracking:is.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Jn,this.cstFinallyStateUpdate=Jn,this.cstPostTerminal=Jn,this.cstPostNonTerminal=Jn,this.cstPostRule=Jn;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=VR,this.setNodeLocationFromNode=VR,this.cstPostRule=Jn,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Jn,this.setNodeLocationFromNode=Jn,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=$R,this.setNodeLocationFromNode=$R,this.cstPostRule=Jn,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Jn,this.setNodeLocationFromNode=Jn,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Jn,this.setNodeLocationFromNode=Jn,this.cstPostRule=Jn,this.setInitialNodeLocation=Jn;else throw Error(`Invalid config option: "${e.nodeLocationTracking}"`)}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){let r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){let r={name:e,children:Object.create(null)};this.setInitialNodeLocation(r),this.CST_STACK.push(r)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){let r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?(n.endOffset=r.endOffset,n.endLine=r.endLine,n.endColumn=r.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)}cstPostRuleOnlyOffset(e){let r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?n.endOffset=r.endOffset:n.startOffset=NaN}cstPostTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];coe(n,r,e),this.setNodeLocationFromToken(n.location,r)}cstPostNonTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];uoe(n,r,e),this.setNodeLocationFromNode(n.location,e.location)}getBaseCstVisitorConstructor(){if(dr(this.baseCstVisitorConstructor)){let e=doe(this.className,zr(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(dr(this.baseCstVisitorWithDefaultsConstructor)){let e=poe(this.className,zr(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){let e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}}});var ck,yoe=M(()=>{"use strict";Is();ck=class{static{o(this,"LexerAdapter")}initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):lg}LA(e){let r=this.currIdx+e;return r<0||this.tokVectorLength<=r?lg:this.tokVector[r]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}}});var uk,voe=M(()=>{"use strict";Ht();og();Is();tg();d2();ns();uk=class{static{o(this,"RecognizerApi")}ACTION(e){return e.call(this)}consume(e,r,n){return this.consumeInternal(r,e,n)}subrule(e,r,n){return this.subruleInternal(r,e,n)}option(e,r){return this.optionInternal(r,e)}or(e,r){return this.orInternal(r,e)}many(e,r){return this.manyInternal(e,r)}atLeastOne(e,r){return this.atLeastOneInternal(e,r)}CONSUME(e,r){return this.consumeInternal(e,0,r)}CONSUME1(e,r){return this.consumeInternal(e,1,r)}CONSUME2(e,r){return this.consumeInternal(e,2,r)}CONSUME3(e,r){return this.consumeInternal(e,3,r)}CONSUME4(e,r){return this.consumeInternal(e,4,r)}CONSUME5(e,r){return this.consumeInternal(e,5,r)}CONSUME6(e,r){return this.consumeInternal(e,6,r)}CONSUME7(e,r){return this.consumeInternal(e,7,r)}CONSUME8(e,r){return this.consumeInternal(e,8,r)}CONSUME9(e,r){return this.consumeInternal(e,9,r)}SUBRULE(e,r){return this.subruleInternal(e,0,r)}SUBRULE1(e,r){return this.subruleInternal(e,1,r)}SUBRULE2(e,r){return this.subruleInternal(e,2,r)}SUBRULE3(e,r){return this.subruleInternal(e,3,r)}SUBRULE4(e,r){return this.subruleInternal(e,4,r)}SUBRULE5(e,r){return this.subruleInternal(e,5,r)}SUBRULE6(e,r){return this.subruleInternal(e,6,r)}SUBRULE7(e,r){return this.subruleInternal(e,7,r)}SUBRULE8(e,r){return this.subruleInternal(e,8,r)}SUBRULE9(e,r){return this.subruleInternal(e,9,r)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,r,n=cg){if(Hn(this.definedRulesNames,e)){let s={message:Bl.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:zi.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);let i=this.defineRule(e,r,n);return this[e]=i,i}OVERRIDE_RULE(e,r,n=cg){let i=Kse(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(i);let a=this.defineRule(e,r,n);return this[e]=a,a}BACKTRACK(e,r){return function(){this.isBackTrackingStack.push(1);let n=this.saveRecogState();try{return e.apply(this,r),!0}catch(i){if(rf(i))return!1;throw i}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return IT(br(this.gastProductionsCache))}}});var hk,xoe=M(()=>{"use strict";Ht();rk();og();ag();u2();Is();PR();i0();r0();hk=class{static{o(this,"RecognizerEngine")}initRecognizerEngine(e,r){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=eg,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},It(r,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. + `)}`)}},"validateVisitor")};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=e,r}function Lse(t,e,r){let n=o(function(){},"derivedConstructor");$N(n,t+"BaseSemanticsWithDefaults");let i=Object.create(r.prototype);return Ae(e,a=>{i[a]=IPe}),n.prototype=i,n.prototype.constructor=n,n}function OPe(t,e){return PPe(t,e)}function PPe(t,e){let r=qr(e,i=>Ei(t[i])===!1),n=Je(r,i=>({msg:`Missing visitor method: <${i}> on ${t.constructor.name} CST Visitor.`,type:VN.MISSING_METHOD,methodName:i}));return wc(n)}var VN,Rse=M(()=>{"use strict";qt();_se();o(IPe,"defaultVisit");o(Dse,"createBaseSemanticVisitorConstructor");o(Lse,"createBaseVisitorConstructorWithDefaults");(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(VN||(VN={}));o(OPe,"validateVisitor");o(PPe,"validateMissingCstMethods")});var Vk,Nse=M(()=>{"use strict";Ase();qt();Rse();Os();Vk=class{static{o(this,"TreeBuilder")}initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=Pt(e,"nodeLocationTracking")?e.nodeLocationTracking:ss.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=ni,this.cstFinallyStateUpdate=ni,this.cstPostTerminal=ni,this.cstPostNonTerminal=ni,this.cstPostRule=ni;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=GN,this.setNodeLocationFromNode=GN,this.cstPostRule=ni,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=ni,this.setNodeLocationFromNode=ni,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=zN,this.setNodeLocationFromNode=zN,this.cstPostRule=ni,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=ni,this.setNodeLocationFromNode=ni,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=ni,this.setNodeLocationFromNode=ni,this.cstPostRule=ni,this.setInitialNodeLocation=ni;else throw Error(`Invalid config option: "${e.nodeLocationTracking}"`)}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){let r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){let r={name:e,children:Object.create(null)};this.setInitialNodeLocation(r),this.CST_STACK.push(r)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){let r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?(n.endOffset=r.endOffset,n.endLine=r.endLine,n.endColumn=r.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)}cstPostRuleOnlyOffset(e){let r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?n.endOffset=r.endOffset:n.startOffset=NaN}cstPostTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];Sse(n,r,e),this.setNodeLocationFromToken(n.location,r)}cstPostNonTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];Cse(n,r,e),this.setNodeLocationFromNode(n.location,e.location)}getBaseCstVisitorConstructor(){if(fr(this.baseCstVisitorConstructor)){let e=Dse(this.className,zr(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(fr(this.baseCstVisitorWithDefaultsConstructor)){let e=Lse(this.className,zr(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){let e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}}});var Uk,Mse=M(()=>{"use strict";Os();Uk=class{static{o(this,"LexerAdapter")}initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):Hg}LA(e){let r=this.currIdx+e;return r<0||this.tokVectorLength<=r?Hg:this.tokVector[r]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}}});var Hk,Ise=M(()=>{"use strict";qt();Ug();Os();Bg();Z2();as();Hk=class{static{o(this,"RecognizerApi")}ACTION(e){return e.call(this)}consume(e,r,n){return this.consumeInternal(r,e,n)}subrule(e,r,n){return this.subruleInternal(r,e,n)}option(e,r){return this.optionInternal(r,e)}or(e,r){return this.orInternal(r,e)}many(e,r){return this.manyInternal(e,r)}atLeastOne(e,r){return this.atLeastOneInternal(e,r)}CONSUME(e,r){return this.consumeInternal(e,0,r)}CONSUME1(e,r){return this.consumeInternal(e,1,r)}CONSUME2(e,r){return this.consumeInternal(e,2,r)}CONSUME3(e,r){return this.consumeInternal(e,3,r)}CONSUME4(e,r){return this.consumeInternal(e,4,r)}CONSUME5(e,r){return this.consumeInternal(e,5,r)}CONSUME6(e,r){return this.consumeInternal(e,6,r)}CONSUME7(e,r){return this.consumeInternal(e,7,r)}CONSUME8(e,r){return this.consumeInternal(e,8,r)}CONSUME9(e,r){return this.consumeInternal(e,9,r)}SUBRULE(e,r){return this.subruleInternal(e,0,r)}SUBRULE1(e,r){return this.subruleInternal(e,1,r)}SUBRULE2(e,r){return this.subruleInternal(e,2,r)}SUBRULE3(e,r){return this.subruleInternal(e,3,r)}SUBRULE4(e,r){return this.subruleInternal(e,4,r)}SUBRULE5(e,r){return this.subruleInternal(e,5,r)}SUBRULE6(e,r){return this.subruleInternal(e,6,r)}SUBRULE7(e,r){return this.subruleInternal(e,7,r)}SUBRULE8(e,r){return this.subruleInternal(e,8,r)}SUBRULE9(e,r){return this.subruleInternal(e,9,r)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,r,n=Wg){if(qn(this.definedRulesNames,e)){let s={message:Ml.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:Fi.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);let i=this.defineRule(e,r,n);return this[e]=i,i}OVERRIDE_RULE(e,r,n=Wg){let i=fse(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(i);let a=this.defineRule(e,r,n);return this[e]=a,a}BACKTRACK(e,r){return function(){this.isBackTrackingStack.push(1);let n=this.saveRecogState();try{return e.apply(this,r),!0}catch(i){if(nf(i))return!1;throw i}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return mk(br(this.gastProductionsCache))}}});var Wk,Ose=M(()=>{"use strict";qt();Pk();Ug();$g();j2();Os();IN();op();sp();Wk=class{static{o(this,"RecognizerEngine")}initRecognizerEngine(e,r){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=Og,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},Pt(r,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 - For Further details.`);if(Mt(e)){if(cr(e))throw Error(`A Token Vocabulary cannot be empty. + For Further details.`);if(Ot(e)){if(lr(e))throw Error(`A Token Vocabulary cannot be empty. Note that the first argument for the parser constructor is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`)}if(Mt(e))this.tokensMap=qr(e,(a,s)=>(a[s.name]=s,a),{});else if(It(e,"modes")&&Ra(Wr(br(e.modes)),Ase)){let a=Wr(br(e.modes)),s=Om(a);this.tokensMap=qr(s,(l,u)=>(l[u.name]=u,l),{})}else if(yn(e))this.tokensMap=rn(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=oo;let n=It(e,"modes")?Wr(br(e.modes)):br(e),i=Ra(n,a=>cr(a.categoryMatches));this.tokenMatcher=i?eg:Ou,Pu(br(this.tokensMap))}defineRule(e,r,n){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);let i=It(n,"resyncEnabled")?n.resyncEnabled:cg.resyncEnabled,a=It(n,"recoveryValueFunc")?n.recoveryValueFunc:cg.recoveryValueFunc,s=this.ruleShortNameIdx<<12;this.ruleShortNameIdx++,this.shortRuleNameToFull[s]=e,this.fullRuleNameToShort[e]=s;let l;return this.outputCst===!0?l=o(function(...f){try{this.ruleInvocationStateUpdate(s,e,this.subruleIdx),r.apply(this,f);let d=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(d),d}catch(d){return this.invokeRuleCatch(d,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTry"):l=o(function(...f){try{return this.ruleInvocationStateUpdate(s,e,this.subruleIdx),r.apply(this,f)}catch(d){return this.invokeRuleCatch(d,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTryCst"),Object.assign(l,{ruleName:e,originalGrammarAction:r})}invokeRuleCatch(e,r,n){let i=this.RULE_STACK.length===1,a=r&&!this.isBackTracking()&&this.recoveryEnabled;if(rf(e)){let s=e;if(a){let l=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(l))if(s.resyncedTokens=this.reSyncTo(l),this.outputCst){let u=this.CST_STACK[this.CST_STACK.length-1];return u.recoveredNode=!0,u}else return n(e);else{if(this.outputCst){let u=this.CST_STACK[this.CST_STACK.length-1];u.recoveredNode=!0,s.partialCstResult=u}throw s}}else{if(i)return this.moveToTerminatedState(),n(e);throw s}}else throw e}optionInternal(e,r){let n=this.getKeyForAutomaticLookahead(512,r);return this.optionInternalLogic(e,r,n)}optionInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof e!="function"){a=e.DEF;let s=e.GATE;if(s!==void 0){let l=i;i=o(()=>s.call(this)&&l.call(this),"lookAheadFunc")}}else a=e;if(i.call(this)===!0)return a.call(this)}atLeastOneInternal(e,r){let n=this.getKeyForAutomaticLookahead(1024,e);return this.atLeastOneInternalLogic(e,r,n)}atLeastOneInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof r!="function"){a=r.DEF;let s=r.GATE;if(s!==void 0){let l=i;i=o(()=>s.call(this)&&l.call(this),"lookAheadFunc")}}else a=r;if(i.call(this)===!0){let s=this.doSingleRepetition(a);for(;i.call(this)===!0&&s===!0;)s=this.doSingleRepetition(a)}else throw this.raiseEarlyExitException(e,Yn.REPETITION_MANDATORY,r.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,r],i,1024,e,qT)}atLeastOneSepFirstInternal(e,r){let n=this.getKeyForAutomaticLookahead(1536,e);this.atLeastOneSepFirstInternalLogic(e,r,n)}atLeastOneSepFirstInternalLogic(e,r,n){let i=r.DEF,a=r.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let l=o(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,l,i,c2],l,1536,e,c2)}else throw this.raiseEarlyExitException(e,Yn.REPETITION_MANDATORY_WITH_SEPARATOR,r.ERR_MSG)}manyInternal(e,r){let n=this.getKeyForAutomaticLookahead(768,e);return this.manyInternalLogic(e,r,n)}manyInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof r!="function"){a=r.DEF;let l=r.GATE;if(l!==void 0){let u=i;i=o(()=>l.call(this)&&u.call(this),"lookaheadFunction")}}else a=r;let s=!0;for(;i.call(this)===!0&&s===!0;)s=this.doSingleRepetition(a);this.attemptInRepetitionRecovery(this.manyInternal,[e,r],i,768,e,YT,s)}manySepFirstInternal(e,r){let n=this.getKeyForAutomaticLookahead(1280,e);this.manySepFirstInternalLogic(e,r,n)}manySepFirstInternalLogic(e,r,n){let i=r.DEF,a=r.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let l=o(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,l,i,l2],l,1280,e,l2)}}repetitionSepSecondInternal(e,r,n,i,a){for(;n();)this.CONSUME(r),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,r,n,i,a],n,1536,e,a)}doSingleRepetition(e){let r=this.getLexerPosition();return e.call(this),this.getLexerPosition()>r}orInternal(e,r){let n=this.getKeyForAutomaticLookahead(256,r),i=Mt(e)?e:e.DEF,s=this.getLaFuncFromCache(n).call(this,i);if(s!==void 0)return i[s].ALT.call(this);this.raiseNoAltException(r,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){let e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new m2(r,e))}}subruleInternal(e,r,n){let i;try{let a=n!==void 0?n.ARGS:void 0;return this.subruleIdx=r,i=e.apply(this,a),this.cstPostNonTerminal(i,n!==void 0&&n.LABEL!==void 0?n.LABEL:e.ruleName),i}catch(a){throw this.subruleInternalError(a,n,e.ruleName)}}subruleInternalError(e,r,n){throw rf(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:n),delete e.partialCstResult),e}consumeInternal(e,r,n){let i;try{let a=this.LA(1);this.tokenMatcher(a,e)===!0?(this.consumeToken(),i=a):this.consumeInternalError(e,a,n)}catch(a){i=this.consumeInternalRecovery(e,r,a)}return this.cstPostTerminal(n!==void 0&&n.LABEL!==void 0?n.LABEL:e.name,i),i}consumeInternalError(e,r,n){let i,a=this.LA(0);throw n!==void 0&&n.ERR_MSG?i=n.ERR_MSG:i=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:a,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new a0(i,r,a))}consumeInternalRecovery(e,r,n){if(this.recoveryEnabled&&n.name==="MismatchedTokenException"&&!this.isBackTracking()){let i=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,i)}catch(a){throw a.name===OR?n:a}}else throw n}saveRecogState(){let e=this.errors,r=rn(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,r,n){this.RULE_OCCURRENCE_STACK.push(n),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r)}isBackTracking(){return this.isBackTrackingStack.length!==0}getCurrRuleFullName(){let e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),oo)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}}});var fk,boe=M(()=>{"use strict";og();Ht();ag();Is();fk=class{static{o(this,"ErrorHandler")}initErrorHandler(e){this._errors=[],this.errorMessageProvider=It(e,"errorMessageProvider")?e.errorMessageProvider:is.errorMessageProvider}SAVE_ERROR(e){if(rf(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:rn(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return rn(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,r,n){let i=this.getCurrRuleFullName(),a=this.getGAstProductions()[i],l=ig(e,a,r,this.maxLookahead)[0],u=[];for(let f=1;f<=this.maxLookahead;f++)u.push(this.LA(f));let h=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:l,actual:u,previous:this.LA(0),customUserDescription:n,ruleName:i});throw this.SAVE_ERROR(new g2(h,this.LA(1),this.LA(0)))}raiseNoAltException(e,r){let n=this.getCurrRuleFullName(),i=this.getGAstProductions()[n],a=ng(e,i,this.maxLookahead),s=[];for(let h=1;h<=this.maxLookahead;h++)s.push(this.LA(h));let l=this.LA(0),u=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:a,actual:s,previous:l,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new p2(u,this.LA(1),l))}}});var dk,woe=M(()=>{"use strict";u2();Ht();dk=class{static{o(this,"ContentAssist")}initContentAssist(){}computeContentAssist(e,r){let n=this.gastProductionsCache[e];if(dr(n))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return jT([n],r,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){let r=ra(e.ruleStack),i=this.getGAstProductions()[r];return new WT(i,e).startWalking()}}});function v2(t,e,r,n=!1){mk(r);let i=fa(this.recordingProdStack),a=Ei(e)?e:e.DEF,s=new t({definition:[],idx:r});return n&&(s.separator=e.SEP),It(e,"MAX_LOOKAHEAD")&&(s.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(s),a.call(this),i.definition.push(s),this.recordingProdStack.pop(),gk}function DFe(t,e){mk(e);let r=fa(this.recordingProdStack),n=Mt(t)===!1,i=n===!1?t:t.DEF,a=new xn({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});It(t,"MAX_LOOKAHEAD")&&(a.maxLookahead=t.MAX_LOOKAHEAD);let s=Rv(i,l=>Ei(l.GATE));return a.hasPredicates=s,r.definition.push(a),Ce(i,l=>{let u=new Cn({definition:[]});a.definition.push(u),It(l,"IGNORE_AMBIGUITIES")?u.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:It(l,"GATE")&&(u.ignoreAmbiguities=!0),this.recordingProdStack.push(u),l.ALT.call(this),this.recordingProdStack.pop()}),gk}function Eoe(t){return t===0?"":`${t}`}function mk(t){if(t<0||t>koe){let e=new Error(`Invalid DSL Method idx value: <${t}> - Idx value must be a none negative value smaller than ${koe+1}`);throw e.KNOWN_RECORDER_ERROR=!0,e}}var gk,Toe,koe,Soe,Coe,LFe,pk,Aoe=M(()=>{"use strict";Ht();ns();a2();r0();i0();Is();rk();gk={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(gk);Toe=!0,koe=Math.pow(2,8)-1,Soe=HT({name:"RECORDING_PHASE_TOKEN",pattern:oi.NA});Pu([Soe]);Coe=n0(Soe,`This IToken indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(Coe);LFe={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},pk=class{static{o(this,"GastRecorder")}initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){let r=e>0?e:"";this[`CONSUME${r}`]=function(n,i){return this.consumeInternalRecord(n,e,i)},this[`SUBRULE${r}`]=function(n,i){return this.subruleInternalRecord(n,e,i)},this[`OPTION${r}`]=function(n){return this.optionInternalRecord(n,e)},this[`OR${r}`]=function(n){return this.orInternalRecord(n,e)},this[`MANY${r}`]=function(n){this.manyInternalRecord(e,n)},this[`MANY_SEP${r}`]=function(n){this.manySepFirstInternalRecord(e,n)},this[`AT_LEAST_ONE${r}`]=function(n){this.atLeastOneInternalRecord(e,n)},this[`AT_LEAST_ONE_SEP${r}`]=function(n){this.atLeastOneSepFirstInternalRecord(e,n)}}this.consume=function(e,r,n){return this.consumeInternalRecord(r,e,n)},this.subrule=function(e,r,n){return this.subruleInternalRecord(r,e,n)},this.option=function(e,r){return this.optionInternalRecord(r,e)},this.or=function(e,r){return this.orInternalRecord(r,e)},this.many=function(e,r){this.manyInternalRecord(e,r)},this.atLeastOne=function(e,r){this.atLeastOneInternalRecord(e,r)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{let e=this;for(let r=0;r<10;r++){let n=r>0?r:"";delete e[`CONSUME${n}`],delete e[`SUBRULE${n}`],delete e[`OPTION${n}`],delete e[`OR${n}`],delete e[`MANY${n}`],delete e[`MANY_SEP${n}`],delete e[`AT_LEAST_ONE${n}`],delete e[`AT_LEAST_ONE_SEP${n}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,r){return()=>!0}LA_RECORD(e){return lg}topLevelRuleRecord(e,r){try{let n=new ts({definition:[],name:e});return n.name=e,this.recordingProdStack.push(n),r.call(this),this.recordingProdStack.pop(),n}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` + For Further details.`)}if(Ot(e))this.tokensMap=Yr(e,(a,s)=>(a[s.name]=s,a),{});else if(Pt(e,"modes")&&Ra(Wr(br(e.modes)),Uae)){let a=Wr(br(e.modes)),s=Nm(a);this.tokensMap=Yr(s,(l,u)=>(l[u.name]=u,l),{})}else if(bn(e))this.tokensMap=an(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=no;let n=Pt(e,"modes")?Wr(br(e.modes)):br(e),i=Ra(n,a=>lr(a.categoryMatches));this.tokenMatcher=i?Og:Iu,Ou(br(this.tokensMap))}defineRule(e,r,n){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);let i=Pt(n,"resyncEnabled")?n.resyncEnabled:Wg.resyncEnabled,a=Pt(n,"recoveryValueFunc")?n.recoveryValueFunc:Wg.recoveryValueFunc,s=this.ruleShortNameIdx<<12;this.ruleShortNameIdx++,this.shortRuleNameToFull[s]=e,this.fullRuleNameToShort[e]=s;let l;return this.outputCst===!0?l=o(function(...f){try{this.ruleInvocationStateUpdate(s,e,this.subruleIdx),r.apply(this,f);let d=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(d),d}catch(d){return this.invokeRuleCatch(d,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTry"):l=o(function(...f){try{return this.ruleInvocationStateUpdate(s,e,this.subruleIdx),r.apply(this,f)}catch(d){return this.invokeRuleCatch(d,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTryCst"),Object.assign(l,{ruleName:e,originalGrammarAction:r})}invokeRuleCatch(e,r,n){let i=this.RULE_STACK.length===1,a=r&&!this.isBackTracking()&&this.recoveryEnabled;if(nf(e)){let s=e;if(a){let l=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(l))if(s.resyncedTokens=this.reSyncTo(l),this.outputCst){let u=this.CST_STACK[this.CST_STACK.length-1];return u.recoveredNode=!0,u}else return n(e);else{if(this.outputCst){let u=this.CST_STACK[this.CST_STACK.length-1];u.recoveredNode=!0,s.partialCstResult=u}throw s}}else{if(i)return this.moveToTerminatedState(),n(e);throw s}}else throw e}optionInternal(e,r){let n=this.getKeyForAutomaticLookahead(512,r);return this.optionInternalLogic(e,r,n)}optionInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof e!="function"){a=e.DEF;let s=e.GATE;if(s!==void 0){let l=i;i=o(()=>s.call(this)&&l.call(this),"lookAheadFunc")}}else a=e;if(i.call(this)===!0)return a.call(this)}atLeastOneInternal(e,r){let n=this.getKeyForAutomaticLookahead(1024,e);return this.atLeastOneInternalLogic(e,r,n)}atLeastOneInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof r!="function"){a=r.DEF;let s=r.GATE;if(s!==void 0){let l=i;i=o(()=>s.call(this)&&l.call(this),"lookAheadFunc")}}else a=r;if(i.call(this)===!0){let s=this.doSingleRepetition(a);for(;i.call(this)===!0&&s===!0;)s=this.doSingleRepetition(a)}else throw this.raiseEarlyExitException(e,jn.REPETITION_MANDATORY,r.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,r],i,1024,e,Ak)}atLeastOneSepFirstInternal(e,r){let n=this.getKeyForAutomaticLookahead(1536,e);this.atLeastOneSepFirstInternalLogic(e,r,n)}atLeastOneSepFirstInternalLogic(e,r,n){let i=r.DEF,a=r.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let l=o(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,l,i,X2],l,1536,e,X2)}else throw this.raiseEarlyExitException(e,jn.REPETITION_MANDATORY_WITH_SEPARATOR,r.ERR_MSG)}manyInternal(e,r){let n=this.getKeyForAutomaticLookahead(768,e);return this.manyInternalLogic(e,r,n)}manyInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof r!="function"){a=r.DEF;let l=r.GATE;if(l!==void 0){let u=i;i=o(()=>l.call(this)&&u.call(this),"lookaheadFunction")}}else a=r;let s=!0;for(;i.call(this)===!0&&s===!0;)s=this.doSingleRepetition(a);this.attemptInRepetitionRecovery(this.manyInternal,[e,r],i,768,e,Ck,s)}manySepFirstInternal(e,r){let n=this.getKeyForAutomaticLookahead(1280,e);this.manySepFirstInternalLogic(e,r,n)}manySepFirstInternalLogic(e,r,n){let i=r.DEF,a=r.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let l=o(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,l,i,Y2],l,1280,e,Y2)}}repetitionSepSecondInternal(e,r,n,i,a){for(;n();)this.CONSUME(r),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,r,n,i,a],n,1536,e,a)}doSingleRepetition(e){let r=this.getLexerPosition();return e.call(this),this.getLexerPosition()>r}orInternal(e,r){let n=this.getKeyForAutomaticLookahead(256,r),i=Ot(e)?e:e.DEF,s=this.getLaFuncFromCache(n).call(this,i);if(s!==void 0)return i[s].ALT.call(this);this.raiseNoAltException(r,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){let e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new ex(r,e))}}subruleInternal(e,r,n){let i;try{let a=n!==void 0?n.ARGS:void 0;return this.subruleIdx=r,i=e.apply(this,a),this.cstPostNonTerminal(i,n!==void 0&&n.LABEL!==void 0?n.LABEL:e.ruleName),i}catch(a){throw this.subruleInternalError(a,n,e.ruleName)}}subruleInternalError(e,r,n){throw nf(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:n),delete e.partialCstResult),e}consumeInternal(e,r,n){let i;try{let a=this.LA(1);this.tokenMatcher(a,e)===!0?(this.consumeToken(),i=a):this.consumeInternalError(e,a,n)}catch(a){i=this.consumeInternalRecovery(e,r,a)}return this.cstPostTerminal(n!==void 0&&n.LABEL!==void 0?n.LABEL:e.name,i),i}consumeInternalError(e,r,n){let i,a=this.LA(0);throw n!==void 0&&n.ERR_MSG?i=n.ERR_MSG:i=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:a,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new lp(i,r,a))}consumeInternalRecovery(e,r,n){if(this.recoveryEnabled&&n.name==="MismatchedTokenException"&&!this.isBackTracking()){let i=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,i)}catch(a){throw a.name===MN?n:a}}else throw n}saveRecogState(){let e=this.errors,r=an(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,r,n){this.RULE_OCCURRENCE_STACK.push(n),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r)}isBackTracking(){return this.isBackTrackingStack.length!==0}getCurrRuleFullName(){let e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),no)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}}});var qk,Pse=M(()=>{"use strict";Ug();qt();$g();Os();qk=class{static{o(this,"ErrorHandler")}initErrorHandler(e){this._errors=[],this.errorMessageProvider=Pt(e,"errorMessageProvider")?e.errorMessageProvider:ss.errorMessageProvider}SAVE_ERROR(e){if(nf(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:an(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return an(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,r,n){let i=this.getCurrRuleFullName(),a=this.getGAstProductions()[i],l=Gg(e,a,r,this.maxLookahead)[0],u=[];for(let f=1;f<=this.maxLookahead;f++)u.push(this.LA(f));let h=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:l,actual:u,previous:this.LA(0),customUserDescription:n,ruleName:i});throw this.SAVE_ERROR(new tx(h,this.LA(1),this.LA(0)))}raiseNoAltException(e,r){let n=this.getCurrRuleFullName(),i=this.getGAstProductions()[n],a=zg(e,i,this.maxLookahead),s=[];for(let h=1;h<=this.maxLookahead;h++)s.push(this.LA(h));let l=this.LA(0),u=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:a,actual:s,previous:l,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new J2(u,this.LA(1),l))}}});var Yk,Bse=M(()=>{"use strict";j2();qt();Yk=class{static{o(this,"ContentAssist")}initContentAssist(){}computeContentAssist(e,r){let n=this.gastProductionsCache[e];if(fr(n))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return Dk([n],r,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){let r=ra(e.ruleStack),i=this.getGAstProductions()[r];return new Sk(i,e).startWalking()}}});function nx(t,e,r,n=!1){jk(r);let i=da(this.recordingProdStack),a=Ei(e)?e:e.DEF,s=new t({definition:[],idx:r});return n&&(s.separator=e.SEP),Pt(e,"MAX_LOOKAHEAD")&&(s.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(s),a.call(this),i.definition.push(s),this.recordingProdStack.pop(),Kk}function zPe(t,e){jk(e);let r=da(this.recordingProdStack),n=Ot(t)===!1,i=n===!1?t:t.DEF,a=new Tn({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});Pt(t,"MAX_LOOKAHEAD")&&(a.maxLookahead=t.MAX_LOOKAHEAD);let s=d2(i,l=>Ei(l.GATE));return a.hasPredicates=s,r.definition.push(a),Ae(i,l=>{let u=new Dn({definition:[]});a.definition.push(u),Pt(l,"IGNORE_AMBIGUITIES")?u.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:Pt(l,"GATE")&&(u.ignoreAmbiguities=!0),this.recordingProdStack.push(u),l.ALT.call(this),this.recordingProdStack.pop()}),Kk}function Gse(t){return t===0?"":`${t}`}function jk(t){if(t<0||t>zse){let e=new Error(`Invalid DSL Method idx value: <${t}> + Idx value must be a none negative value smaller than ${zse+1}`);throw e.KNOWN_RECORDER_ERROR=!0,e}}var Kk,Fse,zse,$se,Vse,FPe,Xk,Use=M(()=>{"use strict";qt();as();H2();sp();op();Os();Pk();Kk={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(Kk);Fse=!0,zse=Math.pow(2,8)-1,$se=rf({name:"RECORDING_PHASE_TOKEN",pattern:Xn.NA});Ou([$se]);Vse=Bu($se,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(Vse);FPe={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},Xk=class{static{o(this,"GastRecorder")}initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){let r=e>0?e:"";this[`CONSUME${r}`]=function(n,i){return this.consumeInternalRecord(n,e,i)},this[`SUBRULE${r}`]=function(n,i){return this.subruleInternalRecord(n,e,i)},this[`OPTION${r}`]=function(n){return this.optionInternalRecord(n,e)},this[`OR${r}`]=function(n){return this.orInternalRecord(n,e)},this[`MANY${r}`]=function(n){this.manyInternalRecord(e,n)},this[`MANY_SEP${r}`]=function(n){this.manySepFirstInternalRecord(e,n)},this[`AT_LEAST_ONE${r}`]=function(n){this.atLeastOneInternalRecord(e,n)},this[`AT_LEAST_ONE_SEP${r}`]=function(n){this.atLeastOneSepFirstInternalRecord(e,n)}}this.consume=function(e,r,n){return this.consumeInternalRecord(r,e,n)},this.subrule=function(e,r,n){return this.subruleInternalRecord(r,e,n)},this.option=function(e,r){return this.optionInternalRecord(r,e)},this.or=function(e,r){return this.orInternalRecord(r,e)},this.many=function(e,r){this.manyInternalRecord(e,r)},this.atLeastOne=function(e,r){this.atLeastOneInternalRecord(e,r)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{let e=this;for(let r=0;r<10;r++){let n=r>0?r:"";delete e[`CONSUME${n}`],delete e[`SUBRULE${n}`],delete e[`OPTION${n}`],delete e[`OR${n}`],delete e[`MANY${n}`],delete e[`MANY_SEP${n}`],delete e[`AT_LEAST_ONE${n}`],delete e[`AT_LEAST_ONE_SEP${n}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,r){return()=>!0}LA_RECORD(e){return Hg}topLevelRuleRecord(e,r){try{let n=new ns({definition:[],name:e});return n.name=e,this.recordingProdStack.push(n),r.call(this),this.recordingProdStack.pop(),n}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}}optionInternalRecord(e,r){return v2.call(this,an,e,r)}atLeastOneInternalRecord(e,r){v2.call(this,An,r,e)}atLeastOneSepFirstInternalRecord(e,r){v2.call(this,_n,r,e,Toe)}manyInternalRecord(e,r){v2.call(this,Lr,r,e)}manySepFirstInternalRecord(e,r){v2.call(this,vn,r,e,Toe)}orInternalRecord(e,r){return DFe.call(this,e,r)}subruleInternalRecord(e,r,n){if(mk(r),!e||It(e,"ruleName")===!1){let l=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}> - inside top level rule: <${this.recordingProdStack[0].name}>`);throw l.KNOWN_RECORDER_ERROR=!0,l}let i=fa(this.recordingProdStack),a=e.ruleName,s=new nn({idx:r,nonTerminalName:a,label:n?.LABEL,referencedRule:void 0});return i.definition.push(s),this.outputCst?LFe:gk}consumeInternalRecord(e,r,n){if(mk(r),!TR(e)){let s=new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}> - inside top level rule: <${this.recordingProdStack[0].name}>`);throw s.KNOWN_RECORDER_ERROR=!0,s}let i=fa(this.recordingProdStack),a=new kr({idx:r,terminalType:e,label:n?.LABEL});return i.definition.push(a),Coe}};o(v2,"recordProd");o(DFe,"recordOrProd");o(Eoe,"getIdxSuffix");o(mk,"assertMethodIdxIsValid")});var yk,_oe=M(()=>{"use strict";Ht();jm();Is();yk=class{static{o(this,"PerformanceTracer")}initPerformanceTracer(e){if(It(e,"traceInitPerf")){let r=e.traceInitPerf,n=typeof r=="number";this.traceInitMaxIdent=n?r:1/0,this.traceInitPerf=n?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=is.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;let n=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${e}>`);let{time:i,value:a}=r2(r),s=i>10?console.warn:console.log;return this.traceInitIndent time: ${i}ms`),this.traceInitIndent--,a}else return r()}}});function Loe(t,e){e.forEach(r=>{let n=r.prototype;Object.getOwnPropertyNames(n).forEach(i=>{if(i==="constructor")return;let a=Object.getOwnPropertyDescriptor(n,i);a&&(a.get||a.set)?Object.defineProperty(t.prototype,i,a):t.prototype[i]=r.prototype[i]})})}var Doe=M(()=>{"use strict";o(Loe,"applyMixins")});function vk(t=void 0){return function(){return t}}var lg,is,cg,zi,x2,b2,Is=M(()=>{"use strict";Ht();jm();sse();i0();tg();roe();PR();loe();goe();yoe();voe();xoe();boe();woe();Aoe();_oe();Doe();d2();lg=n0(oo,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(lg);is=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Fu,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),cg=Object.freeze({recoveryValueFunc:o(()=>{},"recoveryValueFunc"),resyncEnabled:!0});(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",t[t.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"})(zi||(zi={}));o(vk,"EMPTY_ALT");x2=class t{static{o(this,"Parser")}static performSelfAnalysis(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let e;this.selfAnalysisDone=!0;let r=this.className;this.TRACE_INIT("toFastProps",()=>{n2(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),Ce(this.definedRulesNames,i=>{let s=this[i].originalGrammarAction,l;this.TRACE_INIT(`${i} Rule`,()=>{l=this.topLevelRuleRecord(i,s)}),this.gastProductionsCache[i]=l})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=eoe({rules:br(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(cr(n)&&this.skipValidations===!1){let i=toe({rules:br(this.gastProductionsCache),tokenTypes:br(this.tokensMap),errMsgProvider:Bl,grammarName:r}),a=qse({lookaheadStrategy:this.lookaheadStrategy,rules:br(this.gastProductionsCache),tokenTypes:br(this.tokensMap),grammarName:r});this.definitionErrors=this.definitionErrors.concat(i,a)}}),cr(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{let i=ase(br(this.gastProductionsCache));this.resyncFollows=i}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var i,a;(a=(i=this.lookaheadStrategy).initialize)===null||a===void 0||a.call(i,{rules:br(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(br(this.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!cr(this.definitionErrors))throw e=Je(this.definitionErrors,i=>i.message),new Error(`Parser Definition Errors detected: + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}}optionInternalRecord(e,r){return nx.call(this,ln,e,r)}atLeastOneInternalRecord(e,r){nx.call(this,Ln,r,e)}atLeastOneSepFirstInternalRecord(e,r){nx.call(this,Rn,r,e,Fse)}manyInternalRecord(e,r){nx.call(this,Lr,r,e)}manySepFirstInternalRecord(e,r){nx.call(this,wn,r,e,Fse)}orInternalRecord(e,r){return zPe.call(this,e,r)}subruleInternalRecord(e,r,n){if(jk(r),!e||Pt(e,"ruleName")===!1){let l=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}> + inside top level rule: <${this.recordingProdStack[0].name}>`);throw l.KNOWN_RECORDER_ERROR=!0,l}let i=da(this.recordingProdStack),a=e.ruleName,s=new on({idx:r,nonTerminalName:a,label:n?.LABEL,referencedRule:void 0});return i.definition.push(s),this.outputCst?FPe:Kk}consumeInternalRecord(e,r,n){if(jk(r),!wN(e)){let s=new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}> + inside top level rule: <${this.recordingProdStack[0].name}>`);throw s.KNOWN_RECORDER_ERROR=!0,s}let i=da(this.recordingProdStack),a=new kr({idx:r,terminalType:e,label:n?.LABEL});return i.definition.push(a),Vse}};o(nx,"recordProd");o(zPe,"recordOrProd");o(Gse,"getIdxSuffix");o(jk,"assertMethodIdxIsValid")});var Qk,Hse=M(()=>{"use strict";qt();Lg();Os();Qk=class{static{o(this,"PerformanceTracer")}initPerformanceTracer(e){if(Pt(e,"traceInitPerf")){let r=e.traceInitPerf,n=typeof r=="number";this.traceInitMaxIdent=n?r:1/0,this.traceInitPerf=n?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=ss.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;let n=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${e}>`);let{time:i,value:a}=$2(r),s=i>10?console.warn:console.log;return this.traceInitIndent time: ${i}ms`),this.traceInitIndent--,a}else return r()}}});function Wse(t,e){e.forEach(r=>{let n=r.prototype;Object.getOwnPropertyNames(n).forEach(i=>{if(i==="constructor")return;let a=Object.getOwnPropertyDescriptor(n,i);a&&(a.get||a.set)?Object.defineProperty(t.prototype,i,a):t.prototype[i]=r.prototype[i]})})}var qse=M(()=>{"use strict";o(Wse,"applyMixins")});function Zk(t=void 0){return function(){return t}}var Hg,ss,Wg,Fi,ix,ax,Os=M(()=>{"use strict";qt();Lg();Tae();op();Bg();vse();IN();Ese();Nse();Mse();Ise();Ose();Pse();Bse();Use();Hse();qse();Z2();Hg=Bu(no,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(Hg);ss=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Fu,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),Wg=Object.freeze({recoveryValueFunc:o(()=>{},"recoveryValueFunc"),resyncEnabled:!0});(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",t[t.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"})(Fi||(Fi={}));o(Zk,"EMPTY_ALT");ix=class t{static{o(this,"Parser")}static performSelfAnalysis(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let e;this.selfAnalysisDone=!0;let r=this.className;this.TRACE_INIT("toFastProps",()=>{V2(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),Ae(this.definedRulesNames,i=>{let s=this[i].originalGrammarAction,l;this.TRACE_INIT(`${i} Rule`,()=>{l=this.topLevelRuleRecord(i,s)}),this.gastProductionsCache[i]=l})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=gse({rules:br(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(lr(n)&&this.skipValidations===!1){let i=yse({rules:br(this.gastProductionsCache),tokenTypes:br(this.tokensMap),errMsgProvider:Ml,grammarName:r}),a=cse({lookaheadStrategy:this.lookaheadStrategy,rules:br(this.gastProductionsCache),tokenTypes:br(this.tokensMap),grammarName:r});this.definitionErrors=this.definitionErrors.concat(i,a)}}),lr(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{let i=wae(br(this.gastProductionsCache));this.resyncFollows=i}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var i,a;(a=(i=this.lookaheadStrategy).initialize)===null||a===void 0||a.call(i,{rules:br(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(br(this.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!lr(this.definitionErrors))throw e=Je(this.definitionErrors,i=>i.message),new Error(`Parser Definition Errors detected: ${e.join(` ------------------------------- -`)}`)})}constructor(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;let n=this;if(n.initErrorHandler(r),n.initLexerAdapter(),n.initLooksAhead(r),n.initRecognizerEngine(e,r),n.initRecoverable(r),n.initTreeBuilder(r),n.initContentAssist(),n.initGastRecorder(r),n.initPerformanceTracer(r),It(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. +`)}`)})}constructor(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;let n=this;if(n.initErrorHandler(r),n.initLexerAdapter(),n.initLooksAhead(r),n.initRecognizerEngine(e,r),n.initRecoverable(r),n.initTreeBuilder(r),n.initContentAssist(),n.initGastRecorder(r),n.initPerformanceTracer(r),Pt(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. Please use the flag on the relevant DSL method instead. See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`);this.skipValidations=It(r,"skipValidations")?r.skipValidations:is.skipValidations}};x2.DEFER_DEFINITION_ERRORS_HANDLING=!1;Loe(x2,[ek,ik,lk,ck,hk,uk,fk,dk,pk,yk]);b2=class extends x2{static{o(this,"EmbeddedActionsParser")}constructor(e,r=is){let n=rn(r);n.outputCst=!1,super(e,n)}}});var Noe=M(()=>{"use strict";ns()});var Roe=M(()=>{"use strict"});var Moe=M(()=>{"use strict";Noe();Roe()});var Ioe=M(()=>{"use strict";uR()});var s0=M(()=>{"use strict";uR();Is();a2();i0();ag();BR();tg();og();ER();ns();ns();Moe();Ioe()});function o0(t,e,r){return`${t.name}_${e}_${r}`}function Foe(t){let e={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};BFe(e,t);let r=t.length;for(let n=0;nzoe(t,e,s));return dg(t,e,n,r,...i)}function UFe(t,e,r){let n=na(t,e,r,{type:nf});af(t,n);let i=dg(t,e,n,r,l0(t,e,r));return HFe(t,e,r,i)}function l0(t,e,r){let n=Yr(Je(r.definition,i=>zoe(t,e,i)),i=>i!==void 0);return n.length===1?n[0]:n.length===0?void 0:YFe(t,n)}function Goe(t,e,r,n,i){let a=n.left,s=n.right,l=na(t,e,r,{type:PFe});af(t,l);let u=na(t,e,r,{type:Boe});return a.loopback=l,u.loopback=l,t.decisionMap[o0(e,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",r.idx)]=l,Ai(s,l),i===void 0?(Ai(l,a),Ai(l,u)):(Ai(l,u),Ai(l,i.left),Ai(i.right,a)),{left:a,right:u}}function $oe(t,e,r,n,i){let a=n.left,s=n.right,l=na(t,e,r,{type:OFe});af(t,l);let u=na(t,e,r,{type:Boe}),h=na(t,e,r,{type:IFe});return l.loopback=h,u.loopback=h,Ai(l,a),Ai(l,u),Ai(s,h),i!==void 0?(Ai(h,u),Ai(h,i.left),Ai(i.right,a)):Ai(h,l),t.decisionMap[o0(e,i?"RepetitionWithSeparator":"Repetition",r.idx)]=l,{left:l,right:u}}function HFe(t,e,r,n){let i=n.left,a=n.right;return Ai(i,a),t.decisionMap[o0(e,"Option",r.idx)]=i,n}function af(t,e){return t.decisionStates.push(e),e.decision=t.decisionStates.length-1,e.decision}function dg(t,e,r,n,...i){let a=na(t,e,n,{type:MFe,start:r});r.end=a;for(let l of i)l!==void 0?(Ai(r,l.left),Ai(l.right,a)):Ai(r,a);let s={left:r,right:a};return t.decisionMap[o0(e,WFe(n),n.idx)]=r,s}function WFe(t){if(t instanceof xn)return"Alternation";if(t instanceof an)return"Option";if(t instanceof Lr)return"Repetition";if(t instanceof vn)return"RepetitionWithSeparator";if(t instanceof An)return"RepetitionMandatory";if(t instanceof _n)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function YFe(t,e){let r=e.length;for(let a=0;a{"use strict";Rm();FL();s0();o(o0,"buildATNKey");nf=1,RFe=2,Ooe=4,Poe=5,fg=7,MFe=8,IFe=9,OFe=10,PFe=11,Boe=12,w2=class{static{o(this,"AbstractTransition")}constructor(e){this.target=e}isEpsilon(){return!1}},ug=class extends w2{static{o(this,"AtomTransition")}constructor(e,r){super(e),this.tokenType=r}},T2=class extends w2{static{o(this,"EpsilonTransition")}constructor(e){super(e)}isEpsilon(){return!0}},hg=class extends w2{static{o(this,"RuleTransition")}constructor(e,r,n){super(e),this.rule=r,this.followState=n}isEpsilon(){return!0}};o(Foe,"createATN");o(BFe,"createRuleStartAndStopATNStates");o(zoe,"atom");o(FFe,"repetition");o(zFe,"repetitionSep");o(GFe,"repetitionMandatory");o($Fe,"repetitionMandatorySep");o(VFe,"alternation");o(UFe,"option");o(l0,"block");o(Goe,"plus");o($oe,"star");o(HFe,"optional");o(af,"defineDecisionState");o(dg,"makeAlts");o(WFe,"getProdType");o(YFe,"makeBlock");o(YR,"tokenRef");o(qFe,"ruleRef");o(XFe,"buildRuleHandle");o(Ai,"epsilon");o(na,"newState");o(qR,"addTransition");o(jFe,"removeState")});function XR(t,e=!0){return`${e?`a${t.alt}`:""}s${t.state.stateNumber}:${t.stack.map(r=>r.stateNumber.toString()).join("_")}`}var k2,pg,Uoe=M(()=>{"use strict";Rm();k2={},pg=class{static{o(this,"ATNConfigSet")}constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(e){let r=XR(e);r in this.map||(this.map[r]=this.configs.length,this.configs.push(e))}get elements(){return this.configs}get alts(){return Je(this.configs,e=>e.alt)}get key(){let e="";for(let r in this.map)e+=r+":";return e}};o(XR,"getATNConfigKey")});function KFe(t,e){let r={};return n=>{let i=n.toString(),a=r[i];return a!==void 0||(a={atnStartState:t,decision:e,states:{}},r[i]=a),a}}function Woe(t,e=!0){let r=new Set;for(let n of t){let i=new Set;for(let a of n){if(a===void 0){if(e)break;return!1}let s=[a.tokenTypeIdx].concat(a.categoryMatches);for(let l of s)if(r.has(l)){if(!i.has(l))return!1}else r.add(l),i.add(l)}}return!0}function QFe(t){let e=t.decisionStates.length,r=Array(e);for(let n=0;nBu(i)).join(", "),r=t.production.idx===0?"":t.production.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(", ")}> in <${rze(t.production)}${r}> inside <${t.topLevelRule.name}> Rule, + For further details.`);this.skipValidations=Pt(r,"skipValidations")?r.skipValidations:ss.skipValidations}};ix.DEFER_DEFINITION_ERRORS_HANDLING=!1;Wse(ix,[Ik,Fk,Vk,Uk,Wk,Hk,qk,Yk,Xk,Qk]);ax=class extends ix{static{o(this,"EmbeddedActionsParser")}constructor(e,r=ss){let n=an(r);n.outputCst=!1,super(e,n)}}});var Yse=M(()=>{"use strict";as()});var Xse=M(()=>{"use strict"});var jse=M(()=>{"use strict";Yse();Xse()});var Kse=M(()=>{"use strict";cN()});var af=M(()=>{"use strict";cN();Os();H2();op();$g();ON();Bg();Ug();TN();as();as();jse();Kse()});function cp(t,e,r){return`${t.name}_${e}_${r}`}function eoe(t){let e={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};qPe(e,t);let r=t.length;for(let n=0;ntoe(t,e,s));return jg(t,e,n,r,...i)}function ZPe(t,e,r){let n=na(t,e,r,{type:sf});of(t,n);let i=jg(t,e,n,r,up(t,e,r));return JPe(t,e,r,i)}function up(t,e,r){let n=qr(Je(r.definition,i=>toe(t,e,i)),i=>i!==void 0);return n.length===1?n[0]:n.length===0?void 0:tBe(t,n)}function roe(t,e,r,n,i){let a=n.left,s=n.right,l=na(t,e,r,{type:WPe});of(t,l);let u=na(t,e,r,{type:Jse});return a.loopback=l,u.loopback=l,t.decisionMap[cp(e,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",r.idx)]=l,Ci(s,l),i===void 0?(Ci(l,a),Ci(l,u)):(Ci(l,u),Ci(l,i.left),Ci(i.right,a)),{left:a,right:u}}function noe(t,e,r,n,i){let a=n.left,s=n.right,l=na(t,e,r,{type:HPe});of(t,l);let u=na(t,e,r,{type:Jse}),h=na(t,e,r,{type:UPe});return l.loopback=h,u.loopback=h,Ci(l,a),Ci(l,u),Ci(s,h),i!==void 0?(Ci(h,u),Ci(h,i.left),Ci(i.right,a)):Ci(h,l),t.decisionMap[cp(e,i?"RepetitionWithSeparator":"Repetition",r.idx)]=l,{left:l,right:u}}function JPe(t,e,r,n){let i=n.left,a=n.right;return Ci(i,a),t.decisionMap[cp(e,"Option",r.idx)]=i,n}function of(t,e){return t.decisionStates.push(e),e.decision=t.decisionStates.length-1,e.decision}function jg(t,e,r,n,...i){let a=na(t,e,n,{type:VPe,start:r});r.end=a;for(let l of i)l!==void 0?(Ci(r,l.left),Ci(l.right,a)):Ci(r,a);let s={left:r,right:a};return t.decisionMap[cp(e,eBe(n),n.idx)]=r,s}function eBe(t){if(t instanceof Tn)return"Alternation";if(t instanceof ln)return"Option";if(t instanceof Lr)return"Repetition";if(t instanceof wn)return"RepetitionWithSeparator";if(t instanceof Ln)return"RepetitionMandatory";if(t instanceof Rn)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function tBe(t,e){let r=e.length;for(let a=0;a{"use strict";Dm();TL();af();o(cp,"buildATNKey");sf=1,$Pe=2,Qse=4,Zse=5,Xg=7,VPe=8,UPe=9,HPe=10,WPe=11,Jse=12,sx=class{static{o(this,"AbstractTransition")}constructor(e){this.target=e}isEpsilon(){return!1}},qg=class extends sx{static{o(this,"AtomTransition")}constructor(e,r){super(e),this.tokenType=r}},ox=class extends sx{static{o(this,"EpsilonTransition")}constructor(e){super(e)}isEpsilon(){return!0}},Yg=class extends sx{static{o(this,"RuleTransition")}constructor(e,r,n){super(e),this.rule=r,this.followState=n}isEpsilon(){return!0}};o(eoe,"createATN");o(qPe,"createRuleStartAndStopATNStates");o(toe,"atom");o(YPe,"repetition");o(XPe,"repetitionSep");o(jPe,"repetitionMandatory");o(KPe,"repetitionMandatorySep");o(QPe,"alternation");o(ZPe,"option");o(up,"block");o(roe,"plus");o(noe,"star");o(JPe,"optional");o(of,"defineDecisionState");o(jg,"makeAlts");o(eBe,"getProdType");o(tBe,"makeBlock");o(HN,"tokenRef");o(rBe,"ruleRef");o(nBe,"buildRuleHandle");o(Ci,"epsilon");o(na,"newState");o(WN,"addTransition");o(iBe,"removeState")});function qN(t,e=!0){return`${e?`a${t.alt}`:""}s${t.state.stateNumber}:${t.stack.map(r=>r.stateNumber.toString()).join("_")}`}var lx,Kg,aoe=M(()=>{"use strict";Dm();lx={},Kg=class{static{o(this,"ATNConfigSet")}constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(e){let r=qN(e);r in this.map||(this.map[r]=this.configs.length,this.configs.push(e))}get elements(){return this.configs}get alts(){return Je(this.configs,e=>e.alt)}get key(){let e="";for(let r in this.map)e+=r+":";return e}};o(qN,"getATNConfigKey")});function aBe(t,e){let r={};return n=>{let i=n.toString(),a=r[i];return a!==void 0||(a={atnStartState:t,decision:e,states:{}},r[i]=a),a}}function ooe(t,e=!0){let r=new Set;for(let n of t){let i=new Set;for(let a of n){if(a===void 0){if(e)break;return!1}let s=[a.tokenTypeIdx].concat(a.categoryMatches);for(let l of s)if(r.has(l)){if(!i.has(l))return!1}else r.add(l),i.add(l)}}return!0}function sBe(t){let e=t.decisionStates.length,r=Array(e);for(let n=0;nPu(i)).join(", "),r=t.production.idx===0?"":t.production.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(", ")}> in <${hBe(t.production)}${r}> inside <${t.topLevelRule.name}> Rule, <${e}> may appears as a prefix path in all these alternatives. `;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,n}function rze(t){if(t instanceof nn)return"SUBRULE";if(t instanceof an)return"OPTION";if(t instanceof xn)return"OR";if(t instanceof An)return"AT_LEAST_ONE";if(t instanceof _n)return"AT_LEAST_ONE_SEP";if(t instanceof vn)return"MANY_SEP";if(t instanceof Lr)return"MANY";if(t instanceof kr)return"CONSUME";throw Error("non exhaustive match")}function nze(t,e,r){let n=da(e.configs.elements,a=>a.state.transitions),i=ene(n.filter(a=>a instanceof ug).map(a=>a.tokenType),a=>a.tokenTypeIdx);return{actualToken:r,possibleTokenTypes:i,tokenPath:t}}function ize(t,e){return t.edges[e.tokenTypeIdx]}function aze(t,e,r){let n=new pg,i=[];for(let s of t.elements){if(r.is(s.alt)===!1)continue;if(s.state.type===fg){i.push(s);continue}let l=s.state.transitions.length;for(let u=0;u0&&!uze(a))for(let s of i)a.add(s);return a}function sze(t,e){if(t instanceof ug&&o2(e,t.tokenType))return t.target}function oze(t,e){let r;for(let n of t.elements)if(e.is(n.alt)===!0){if(r===void 0)r=n.alt;else if(r!==n.alt)return}return r}function qoe(t){return{configs:t,edges:{},isAcceptState:!1,prediction:-1}}function Yoe(t,e,r,n){return n=Xoe(t,n),e.edges[r.tokenTypeIdx]=n,n}function Xoe(t,e){if(e===k2)return e;let r=e.configs.key,n=t.states[r];return n!==void 0?n:(e.configs.finalize(),t.states[r]=e,e)}function lze(t){let e=new pg,r=t.transitions.length;for(let n=0;n0){let i=[...t.stack],s={state:i.pop(),alt:t.alt,stack:i};bk(s,e)}else e.add(t);return}r.epsilonOnlyTransitions||e.add(t);let n=r.transitions.length;for(let i=0;i1)return!0;return!1}function mze(t){for(let e of Array.from(t.values()))if(Object.keys(e).length===1)return!0;return!1}var xk,Hoe,E2,joe=M(()=>{"use strict";s0();Voe();Uoe();YL();GL();tne();Rm();gw();Ww();Kw();KL();o(KFe,"createDFACache");xk=class{static{o(this,"PredicateSet")}constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,r){this.predicates[e]=r}toString(){let e="",r=this.predicates.length;for(let n=0;nconsole.log(n)}initialize(e){this.atn=Foe(e.rules),this.dfas=QFe(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){let{prodOccurrence:r,rule:n,hasPredicates:i,dynamicTokensEnabled:a}=e,s=this.dfas,l=this.logging,u=o0(n,"Alternation",r),f=this.atn.decisionMap[u].decision,d=Je(QT({maxLookahead:1,occurrence:r,prodType:"Alternation",rule:n}),p=>Je(p,m=>m[0]));if(Woe(d,!1)&&!a){let p=qr(d,(m,g,y)=>(Ce(g,v=>{v&&(m[v.tokenTypeIdx]=y,Ce(v.categoryMatches,x=>{m[x]=y}))}),m),{});return i?function(m){var g;let y=this.LA(1),v=p[y.tokenTypeIdx];if(m!==void 0&&v!==void 0){let x=(g=m[v])===null||g===void 0?void 0:g.GATE;if(x!==void 0&&x.call(this)===!1)return}return v}:function(){let m=this.LA(1);return p[m.tokenTypeIdx]}}else return i?function(p){let m=new xk,g=p===void 0?0:p.length;for(let v=0;vJe(p,m=>m[0]));if(Woe(d)&&d[0][0]&&!a){let p=d[0],m=Wr(p);if(m.length===1&&cr(m[0].categoryMatches)){let y=m[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===y}}else{let g=qr(m,(y,v)=>(v!==void 0&&(y[v.tokenTypeIdx]=!0,Ce(v.categoryMatches,x=>{y[x]=!0})),y),{});return function(){let y=this.LA(1);return g[y.tokenTypeIdx]===!0}}}return function(){let p=jR.call(this,s,f,Hoe,l);return typeof p=="object"?!1:p===0}}};o(Woe,"isLL1Sequence");o(QFe,"initATNSimulator");o(jR,"adaptivePredict");o(ZFe,"performLookahead");o(JFe,"computeLookaheadTarget");o(eze,"reportLookaheadAmbiguity");o(tze,"buildAmbiguityError");o(rze,"getProductionDslName");o(nze,"buildAdaptivePredictError");o(ize,"getExistingTargetState");o(aze,"computeReachSet");o(sze,"getReachableTarget");o(oze,"getUniqueAlt");o(qoe,"newDFAState");o(Yoe,"addDFAEdge");o(Xoe,"addDFAState");o(lze,"computeStartState");o(bk,"closure");o(cze,"getEpsilonTarget");o(uze,"hasConfigInRuleStopState");o(hze,"allConfigsInRuleStopStates");o(fze,"hasConflictTerminatingPrediction");o(dze,"getConflictingAltSets");o(pze,"hasConflictingAltSet");o(mze,"hasStateAssociatedWithOneAlt")});var Koe=M(()=>{"use strict";joe()});var Qoe,KR,Zoe,wk,Xr,Dr,Tk,Joe,QR,ele,tle,rle,nle,ZR,ile,ale,sle,kk,mg,gg,JR,yg,ole,eM,tM,rM,nM,iM,lle,cle,aM,ule,sM,S2,hle,fle,dle,ple,mle,gle,yle,vle,Ek,xle,ble,wle,Tle,kle,Ele,Sle,Cle,Ale,_le,Lle,Sk,Dle,Nle,Rle,Mle,Ile,Ole,Ple,Ble,Fle,zle,Gle,$le,Vle,oM,lM,Ule,Hle,Wle,Yle,qle,Xle,jle,Kle,Qle,cM,Oe,uM=M(()=>{"use strict";(function(t){function e(r){return typeof r=="string"}o(e,"is"),t.is=e})(Qoe||(Qoe={}));(function(t){function e(r){return typeof r=="string"}o(e,"is"),t.is=e})(KR||(KR={}));(function(t){t.MIN_VALUE=-2147483648,t.MAX_VALUE=2147483647;function e(r){return typeof r=="number"&&t.MIN_VALUE<=r&&r<=t.MAX_VALUE}o(e,"is"),t.is=e})(Zoe||(Zoe={}));(function(t){t.MIN_VALUE=0,t.MAX_VALUE=2147483647;function e(r){return typeof r=="number"&&t.MIN_VALUE<=r&&r<=t.MAX_VALUE}o(e,"is"),t.is=e})(wk||(wk={}));(function(t){function e(n,i){return n===Number.MAX_VALUE&&(n=wk.MAX_VALUE),i===Number.MAX_VALUE&&(i=wk.MAX_VALUE),{line:n,character:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.objectLiteral(i)&&Oe.uinteger(i.line)&&Oe.uinteger(i.character)}o(r,"is"),t.is=r})(Xr||(Xr={}));(function(t){function e(n,i,a,s){if(Oe.uinteger(n)&&Oe.uinteger(i)&&Oe.uinteger(a)&&Oe.uinteger(s))return{start:Xr.create(n,i),end:Xr.create(a,s)};if(Xr.is(n)&&Xr.is(i))return{start:n,end:i};throw new Error(`Range#create called with invalid arguments[${n}, ${i}, ${a}, ${s}]`)}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.objectLiteral(i)&&Xr.is(i.start)&&Xr.is(i.end)}o(r,"is"),t.is=r})(Dr||(Dr={}));(function(t){function e(n,i){return{uri:n,range:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.objectLiteral(i)&&Dr.is(i.range)&&(Oe.string(i.uri)||Oe.undefined(i.uri))}o(r,"is"),t.is=r})(Tk||(Tk={}));(function(t){function e(n,i,a,s){return{targetUri:n,targetRange:i,targetSelectionRange:a,originSelectionRange:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.objectLiteral(i)&&Dr.is(i.targetRange)&&Oe.string(i.targetUri)&&Dr.is(i.targetSelectionRange)&&(Dr.is(i.originSelectionRange)||Oe.undefined(i.originSelectionRange))}o(r,"is"),t.is=r})(Joe||(Joe={}));(function(t){function e(n,i,a,s){return{red:n,green:i,blue:a,alpha:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.objectLiteral(i)&&Oe.numberRange(i.red,0,1)&&Oe.numberRange(i.green,0,1)&&Oe.numberRange(i.blue,0,1)&&Oe.numberRange(i.alpha,0,1)}o(r,"is"),t.is=r})(QR||(QR={}));(function(t){function e(n,i){return{range:n,color:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.objectLiteral(i)&&Dr.is(i.range)&&QR.is(i.color)}o(r,"is"),t.is=r})(ele||(ele={}));(function(t){function e(n,i,a){return{label:n,textEdit:i,additionalTextEdits:a}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.objectLiteral(i)&&Oe.string(i.label)&&(Oe.undefined(i.textEdit)||gg.is(i))&&(Oe.undefined(i.additionalTextEdits)||Oe.typedArray(i.additionalTextEdits,gg.is))}o(r,"is"),t.is=r})(tle||(tle={}));(function(t){t.Comment="comment",t.Imports="imports",t.Region="region"})(rle||(rle={}));(function(t){function e(n,i,a,s,l,u){let h={startLine:n,endLine:i};return Oe.defined(a)&&(h.startCharacter=a),Oe.defined(s)&&(h.endCharacter=s),Oe.defined(l)&&(h.kind=l),Oe.defined(u)&&(h.collapsedText=u),h}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.objectLiteral(i)&&Oe.uinteger(i.startLine)&&Oe.uinteger(i.startLine)&&(Oe.undefined(i.startCharacter)||Oe.uinteger(i.startCharacter))&&(Oe.undefined(i.endCharacter)||Oe.uinteger(i.endCharacter))&&(Oe.undefined(i.kind)||Oe.string(i.kind))}o(r,"is"),t.is=r})(nle||(nle={}));(function(t){function e(n,i){return{location:n,message:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.defined(i)&&Tk.is(i.location)&&Oe.string(i.message)}o(r,"is"),t.is=r})(ZR||(ZR={}));(function(t){t.Error=1,t.Warning=2,t.Information=3,t.Hint=4})(ile||(ile={}));(function(t){t.Unnecessary=1,t.Deprecated=2})(ale||(ale={}));(function(t){function e(r){let n=r;return Oe.objectLiteral(n)&&Oe.string(n.href)}o(e,"is"),t.is=e})(sle||(sle={}));(function(t){function e(n,i,a,s,l,u){let h={range:n,message:i};return Oe.defined(a)&&(h.severity=a),Oe.defined(s)&&(h.code=s),Oe.defined(l)&&(h.source=l),Oe.defined(u)&&(h.relatedInformation=u),h}o(e,"create"),t.create=e;function r(n){var i;let a=n;return Oe.defined(a)&&Dr.is(a.range)&&Oe.string(a.message)&&(Oe.number(a.severity)||Oe.undefined(a.severity))&&(Oe.integer(a.code)||Oe.string(a.code)||Oe.undefined(a.code))&&(Oe.undefined(a.codeDescription)||Oe.string((i=a.codeDescription)===null||i===void 0?void 0:i.href))&&(Oe.string(a.source)||Oe.undefined(a.source))&&(Oe.undefined(a.relatedInformation)||Oe.typedArray(a.relatedInformation,ZR.is))}o(r,"is"),t.is=r})(kk||(kk={}));(function(t){function e(n,i,...a){let s={title:n,command:i};return Oe.defined(a)&&a.length>0&&(s.arguments=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.defined(i)&&Oe.string(i.title)&&Oe.string(i.command)}o(r,"is"),t.is=r})(mg||(mg={}));(function(t){function e(a,s){return{range:a,newText:s}}o(e,"replace"),t.replace=e;function r(a,s){return{range:{start:a,end:a},newText:s}}o(r,"insert"),t.insert=r;function n(a){return{range:a,newText:""}}o(n,"del"),t.del=n;function i(a){let s=a;return Oe.objectLiteral(s)&&Oe.string(s.newText)&&Dr.is(s.range)}o(i,"is"),t.is=i})(gg||(gg={}));(function(t){function e(n,i,a){let s={label:n};return i!==void 0&&(s.needsConfirmation=i),a!==void 0&&(s.description=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.objectLiteral(i)&&Oe.string(i.label)&&(Oe.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(Oe.string(i.description)||i.description===void 0)}o(r,"is"),t.is=r})(JR||(JR={}));(function(t){function e(r){let n=r;return Oe.string(n)}o(e,"is"),t.is=e})(yg||(yg={}));(function(t){function e(a,s,l){return{range:a,newText:s,annotationId:l}}o(e,"replace"),t.replace=e;function r(a,s,l){return{range:{start:a,end:a},newText:s,annotationId:l}}o(r,"insert"),t.insert=r;function n(a,s){return{range:a,newText:"",annotationId:s}}o(n,"del"),t.del=n;function i(a){let s=a;return gg.is(s)&&(JR.is(s.annotationId)||yg.is(s.annotationId))}o(i,"is"),t.is=i})(ole||(ole={}));(function(t){function e(n,i){return{textDocument:n,edits:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.defined(i)&&aM.is(i.textDocument)&&Array.isArray(i.edits)}o(r,"is"),t.is=r})(eM||(eM={}));(function(t){function e(n,i,a){let s={kind:"create",uri:n};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="create"&&Oe.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||Oe.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||Oe.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||yg.is(i.annotationId))}o(r,"is"),t.is=r})(tM||(tM={}));(function(t){function e(n,i,a,s){let l={kind:"rename",oldUri:n,newUri:i};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(l.options=a),s!==void 0&&(l.annotationId=s),l}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="rename"&&Oe.string(i.oldUri)&&Oe.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||Oe.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||Oe.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||yg.is(i.annotationId))}o(r,"is"),t.is=r})(rM||(rM={}));(function(t){function e(n,i,a){let s={kind:"delete",uri:n};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="delete"&&Oe.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||Oe.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||Oe.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||yg.is(i.annotationId))}o(r,"is"),t.is=r})(nM||(nM={}));(function(t){function e(r){let n=r;return n&&(n.changes!==void 0||n.documentChanges!==void 0)&&(n.documentChanges===void 0||n.documentChanges.every(i=>Oe.string(i.kind)?tM.is(i)||rM.is(i)||nM.is(i):eM.is(i)))}o(e,"is"),t.is=e})(iM||(iM={}));(function(t){function e(n){return{uri:n}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.defined(i)&&Oe.string(i.uri)}o(r,"is"),t.is=r})(lle||(lle={}));(function(t){function e(n,i){return{uri:n,version:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.defined(i)&&Oe.string(i.uri)&&Oe.integer(i.version)}o(r,"is"),t.is=r})(cle||(cle={}));(function(t){function e(n,i){return{uri:n,version:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.defined(i)&&Oe.string(i.uri)&&(i.version===null||Oe.integer(i.version))}o(r,"is"),t.is=r})(aM||(aM={}));(function(t){function e(n,i,a,s){return{uri:n,languageId:i,version:a,text:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.defined(i)&&Oe.string(i.uri)&&Oe.string(i.languageId)&&Oe.integer(i.version)&&Oe.string(i.text)}o(r,"is"),t.is=r})(ule||(ule={}));(function(t){t.PlainText="plaintext",t.Markdown="markdown";function e(r){let n=r;return n===t.PlainText||n===t.Markdown}o(e,"is"),t.is=e})(sM||(sM={}));(function(t){function e(r){let n=r;return Oe.objectLiteral(r)&&sM.is(n.kind)&&Oe.string(n.value)}o(e,"is"),t.is=e})(S2||(S2={}));(function(t){t.Text=1,t.Method=2,t.Function=3,t.Constructor=4,t.Field=5,t.Variable=6,t.Class=7,t.Interface=8,t.Module=9,t.Property=10,t.Unit=11,t.Value=12,t.Enum=13,t.Keyword=14,t.Snippet=15,t.Color=16,t.File=17,t.Reference=18,t.Folder=19,t.EnumMember=20,t.Constant=21,t.Struct=22,t.Event=23,t.Operator=24,t.TypeParameter=25})(hle||(hle={}));(function(t){t.PlainText=1,t.Snippet=2})(fle||(fle={}));(function(t){t.Deprecated=1})(dle||(dle={}));(function(t){function e(n,i,a){return{newText:n,insert:i,replace:a}}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Oe.string(i.newText)&&Dr.is(i.insert)&&Dr.is(i.replace)}o(r,"is"),t.is=r})(ple||(ple={}));(function(t){t.asIs=1,t.adjustIndentation=2})(mle||(mle={}));(function(t){function e(r){let n=r;return n&&(Oe.string(n.detail)||n.detail===void 0)&&(Oe.string(n.description)||n.description===void 0)}o(e,"is"),t.is=e})(gle||(gle={}));(function(t){function e(r){return{label:r}}o(e,"create"),t.create=e})(yle||(yle={}));(function(t){function e(r,n){return{items:r||[],isIncomplete:!!n}}o(e,"create"),t.create=e})(vle||(vle={}));(function(t){function e(n){return n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}o(e,"fromPlainText"),t.fromPlainText=e;function r(n){let i=n;return Oe.string(i)||Oe.objectLiteral(i)&&Oe.string(i.language)&&Oe.string(i.value)}o(r,"is"),t.is=r})(Ek||(Ek={}));(function(t){function e(r){let n=r;return!!n&&Oe.objectLiteral(n)&&(S2.is(n.contents)||Ek.is(n.contents)||Oe.typedArray(n.contents,Ek.is))&&(r.range===void 0||Dr.is(r.range))}o(e,"is"),t.is=e})(xle||(xle={}));(function(t){function e(r,n){return n?{label:r,documentation:n}:{label:r}}o(e,"create"),t.create=e})(ble||(ble={}));(function(t){function e(r,n,...i){let a={label:r};return Oe.defined(n)&&(a.documentation=n),Oe.defined(i)?a.parameters=i:a.parameters=[],a}o(e,"create"),t.create=e})(wle||(wle={}));(function(t){t.Text=1,t.Read=2,t.Write=3})(Tle||(Tle={}));(function(t){function e(r,n){let i={range:r};return Oe.number(n)&&(i.kind=n),i}o(e,"create"),t.create=e})(kle||(kle={}));(function(t){t.File=1,t.Module=2,t.Namespace=3,t.Package=4,t.Class=5,t.Method=6,t.Property=7,t.Field=8,t.Constructor=9,t.Enum=10,t.Interface=11,t.Function=12,t.Variable=13,t.Constant=14,t.String=15,t.Number=16,t.Boolean=17,t.Array=18,t.Object=19,t.Key=20,t.Null=21,t.EnumMember=22,t.Struct=23,t.Event=24,t.Operator=25,t.TypeParameter=26})(Ele||(Ele={}));(function(t){t.Deprecated=1})(Sle||(Sle={}));(function(t){function e(r,n,i,a,s){let l={name:r,kind:n,location:{uri:a,range:i}};return s&&(l.containerName=s),l}o(e,"create"),t.create=e})(Cle||(Cle={}));(function(t){function e(r,n,i,a){return a!==void 0?{name:r,kind:n,location:{uri:i,range:a}}:{name:r,kind:n,location:{uri:i}}}o(e,"create"),t.create=e})(Ale||(Ale={}));(function(t){function e(n,i,a,s,l,u){let h={name:n,detail:i,kind:a,range:s,selectionRange:l};return u!==void 0&&(h.children=u),h}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Oe.string(i.name)&&Oe.number(i.kind)&&Dr.is(i.range)&&Dr.is(i.selectionRange)&&(i.detail===void 0||Oe.string(i.detail))&&(i.deprecated===void 0||Oe.boolean(i.deprecated))&&(i.children===void 0||Array.isArray(i.children))&&(i.tags===void 0||Array.isArray(i.tags))}o(r,"is"),t.is=r})(_le||(_le={}));(function(t){t.Empty="",t.QuickFix="quickfix",t.Refactor="refactor",t.RefactorExtract="refactor.extract",t.RefactorInline="refactor.inline",t.RefactorRewrite="refactor.rewrite",t.Source="source",t.SourceOrganizeImports="source.organizeImports",t.SourceFixAll="source.fixAll"})(Lle||(Lle={}));(function(t){t.Invoked=1,t.Automatic=2})(Sk||(Sk={}));(function(t){function e(n,i,a){let s={diagnostics:n};return i!=null&&(s.only=i),a!=null&&(s.triggerKind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.defined(i)&&Oe.typedArray(i.diagnostics,kk.is)&&(i.only===void 0||Oe.typedArray(i.only,Oe.string))&&(i.triggerKind===void 0||i.triggerKind===Sk.Invoked||i.triggerKind===Sk.Automatic)}o(r,"is"),t.is=r})(Dle||(Dle={}));(function(t){function e(n,i,a){let s={title:n},l=!0;return typeof i=="string"?(l=!1,s.kind=i):mg.is(i)?s.command=i:s.edit=i,l&&a!==void 0&&(s.kind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Oe.string(i.title)&&(i.diagnostics===void 0||Oe.typedArray(i.diagnostics,kk.is))&&(i.kind===void 0||Oe.string(i.kind))&&(i.edit!==void 0||i.command!==void 0)&&(i.command===void 0||mg.is(i.command))&&(i.isPreferred===void 0||Oe.boolean(i.isPreferred))&&(i.edit===void 0||iM.is(i.edit))}o(r,"is"),t.is=r})(Nle||(Nle={}));(function(t){function e(n,i){let a={range:n};return Oe.defined(i)&&(a.data=i),a}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.defined(i)&&Dr.is(i.range)&&(Oe.undefined(i.command)||mg.is(i.command))}o(r,"is"),t.is=r})(Rle||(Rle={}));(function(t){function e(n,i){return{tabSize:n,insertSpaces:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.defined(i)&&Oe.uinteger(i.tabSize)&&Oe.boolean(i.insertSpaces)}o(r,"is"),t.is=r})(Mle||(Mle={}));(function(t){function e(n,i,a){return{range:n,target:i,data:a}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.defined(i)&&Dr.is(i.range)&&(Oe.undefined(i.target)||Oe.string(i.target))}o(r,"is"),t.is=r})(Ile||(Ile={}));(function(t){function e(n,i){return{range:n,parent:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.objectLiteral(i)&&Dr.is(i.range)&&(i.parent===void 0||t.is(i.parent))}o(r,"is"),t.is=r})(Ole||(Ole={}));(function(t){t.namespace="namespace",t.type="type",t.class="class",t.enum="enum",t.interface="interface",t.struct="struct",t.typeParameter="typeParameter",t.parameter="parameter",t.variable="variable",t.property="property",t.enumMember="enumMember",t.event="event",t.function="function",t.method="method",t.macro="macro",t.keyword="keyword",t.modifier="modifier",t.comment="comment",t.string="string",t.number="number",t.regexp="regexp",t.operator="operator",t.decorator="decorator"})(Ple||(Ple={}));(function(t){t.declaration="declaration",t.definition="definition",t.readonly="readonly",t.static="static",t.deprecated="deprecated",t.abstract="abstract",t.async="async",t.modification="modification",t.documentation="documentation",t.defaultLibrary="defaultLibrary"})(Ble||(Ble={}));(function(t){function e(r){let n=r;return Oe.objectLiteral(n)&&(n.resultId===void 0||typeof n.resultId=="string")&&Array.isArray(n.data)&&(n.data.length===0||typeof n.data[0]=="number")}o(e,"is"),t.is=e})(Fle||(Fle={}));(function(t){function e(n,i){return{range:n,text:i}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Dr.is(i.range)&&Oe.string(i.text)}o(r,"is"),t.is=r})(zle||(zle={}));(function(t){function e(n,i,a){return{range:n,variableName:i,caseSensitiveLookup:a}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Dr.is(i.range)&&Oe.boolean(i.caseSensitiveLookup)&&(Oe.string(i.variableName)||i.variableName===void 0)}o(r,"is"),t.is=r})(Gle||(Gle={}));(function(t){function e(n,i){return{range:n,expression:i}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Dr.is(i.range)&&(Oe.string(i.expression)||i.expression===void 0)}o(r,"is"),t.is=r})($le||($le={}));(function(t){function e(n,i){return{frameId:n,stoppedLocation:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.defined(i)&&Dr.is(n.stoppedLocation)}o(r,"is"),t.is=r})(Vle||(Vle={}));(function(t){t.Type=1,t.Parameter=2;function e(r){return r===1||r===2}o(e,"is"),t.is=e})(oM||(oM={}));(function(t){function e(n){return{value:n}}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.objectLiteral(i)&&(i.tooltip===void 0||Oe.string(i.tooltip)||S2.is(i.tooltip))&&(i.location===void 0||Tk.is(i.location))&&(i.command===void 0||mg.is(i.command))}o(r,"is"),t.is=r})(lM||(lM={}));(function(t){function e(n,i,a){let s={position:n,label:i};return a!==void 0&&(s.kind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Oe.objectLiteral(i)&&Xr.is(i.position)&&(Oe.string(i.label)||Oe.typedArray(i.label,lM.is))&&(i.kind===void 0||oM.is(i.kind))&&i.textEdits===void 0||Oe.typedArray(i.textEdits,gg.is)&&(i.tooltip===void 0||Oe.string(i.tooltip)||S2.is(i.tooltip))&&(i.paddingLeft===void 0||Oe.boolean(i.paddingLeft))&&(i.paddingRight===void 0||Oe.boolean(i.paddingRight))}o(r,"is"),t.is=r})(Ule||(Ule={}));(function(t){function e(r){return{kind:"snippet",value:r}}o(e,"createSnippet"),t.createSnippet=e})(Hle||(Hle={}));(function(t){function e(r,n,i,a){return{insertText:r,filterText:n,range:i,command:a}}o(e,"create"),t.create=e})(Wle||(Wle={}));(function(t){function e(r){return{items:r}}o(e,"create"),t.create=e})(Yle||(Yle={}));(function(t){t.Invoked=0,t.Automatic=1})(qle||(qle={}));(function(t){function e(r,n){return{range:r,text:n}}o(e,"create"),t.create=e})(Xle||(Xle={}));(function(t){function e(r,n){return{triggerKind:r,selectedCompletionInfo:n}}o(e,"create"),t.create=e})(jle||(jle={}));(function(t){function e(r){let n=r;return Oe.objectLiteral(n)&&KR.is(n.uri)&&Oe.string(n.name)}o(e,"is"),t.is=e})(Kle||(Kle={}));(function(t){function e(a,s,l,u){return new cM(a,s,l,u)}o(e,"create"),t.create=e;function r(a){let s=a;return!!(Oe.defined(s)&&Oe.string(s.uri)&&(Oe.undefined(s.languageId)||Oe.string(s.languageId))&&Oe.uinteger(s.lineCount)&&Oe.func(s.getText)&&Oe.func(s.positionAt)&&Oe.func(s.offsetAt))}o(r,"is"),t.is=r;function n(a,s){let l=a.getText(),u=i(s,(f,d)=>{let p=f.range.start.line-d.range.start.line;return p===0?f.range.start.character-d.range.start.character:p}),h=l.length;for(let f=u.length-1;f>=0;f--){let d=u[f],p=a.offsetAt(d.range.start),m=a.offsetAt(d.range.end);if(m<=h)l=l.substring(0,p)+d.newText+l.substring(m,l.length);else throw new Error("Overlapping edit");h=p}return l}o(n,"applyEdits"),t.applyEdits=n;function i(a,s){if(a.length<=1)return a;let l=a.length/2|0,u=a.slice(0,l),h=a.slice(l);i(u,s),i(h,s);let f=0,d=0,p=0;for(;fa.state.transitions),i=Fre(n.filter(a=>a instanceof qg).map(a=>a.tokenType),a=>a.tokenTypeIdx);return{actualToken:r,possibleTokenTypes:i,tokenPath:t}}function dBe(t,e){return t.edges[e.tokenTypeIdx]}function pBe(t,e,r){let n=new Kg,i=[];for(let s of t.elements){if(r.is(s.alt)===!1)continue;if(s.state.type===Xg){i.push(s);continue}let l=s.state.transitions.length;for(let u=0;u0&&!xBe(a))for(let s of i)a.add(s);return a}function mBe(t,e){if(t instanceof qg&&q2(e,t.tokenType))return t.target}function gBe(t,e){let r;for(let n of t.elements)if(e.is(n.alt)===!0){if(r===void 0)r=n.alt;else if(r!==n.alt)return}return r}function coe(t){return{configs:t,edges:{},isAcceptState:!1,prediction:-1}}function loe(t,e,r,n){return n=uoe(t,n),e.edges[r.tokenTypeIdx]=n,n}function uoe(t,e){if(e===lx)return e;let r=e.configs.key,n=t.states[r];return n!==void 0?n:(e.configs.finalize(),t.states[r]=e,e)}function yBe(t){let e=new Kg,r=t.transitions.length;for(let n=0;n0){let i=[...t.stack],s={state:i.pop(),alt:t.alt,stack:i};eE(s,e)}else e.add(t);return}r.epsilonOnlyTransitions||e.add(t);let n=r.transitions.length;for(let i=0;i1)return!0;return!1}function EBe(t){for(let e of Array.from(t.values()))if(Object.keys(e).length===1)return!0;return!1}var Jk,soe,cx,hoe=M(()=>{"use strict";af();ioe();aoe();LL();EL();zre();Dm();eT();DT();IT();IL();o(aBe,"createDFACache");Jk=class{static{o(this,"PredicateSet")}constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,r){this.predicates[e]=r}toString(){let e="",r=this.predicates.length;for(let n=0;nconsole.log(n)}initialize(e){this.atn=eoe(e.rules),this.dfas=sBe(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){let{prodOccurrence:r,rule:n,hasPredicates:i,dynamicTokensEnabled:a}=e,s=this.dfas,l=this.logging,u=cp(n,"Alternation",r),f=this.atn.decisionMap[u].decision,d=Je(Rk({maxLookahead:1,occurrence:r,prodType:"Alternation",rule:n}),p=>Je(p,m=>m[0]));if(ooe(d,!1)&&!a){let p=Yr(d,(m,g,y)=>(Ae(g,v=>{v&&(m[v.tokenTypeIdx]=y,Ae(v.categoryMatches,x=>{m[x]=y}))}),m),{});return i?function(m){var g;let y=this.LA(1),v=p[y.tokenTypeIdx];if(m!==void 0&&v!==void 0){let x=(g=m[v])===null||g===void 0?void 0:g.GATE;if(x!==void 0&&x.call(this)===!1)return}return v}:function(){let m=this.LA(1);return p[m.tokenTypeIdx]}}else return i?function(p){let m=new Jk,g=p===void 0?0:p.length;for(let v=0;vJe(p,m=>m[0]));if(ooe(d)&&d[0][0]&&!a){let p=d[0],m=Wr(p);if(m.length===1&&lr(m[0].categoryMatches)){let y=m[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===y}}else{let g=Yr(m,(y,v)=>(v!==void 0&&(y[v.tokenTypeIdx]=!0,Ae(v.categoryMatches,x=>{y[x]=!0})),y),{});return function(){let y=this.LA(1);return g[y.tokenTypeIdx]===!0}}}return function(){let p=YN.call(this,s,f,soe,l);return typeof p=="object"?!1:p===0}}};o(ooe,"isLL1Sequence");o(sBe,"initATNSimulator");o(YN,"adaptivePredict");o(oBe,"performLookahead");o(lBe,"computeLookaheadTarget");o(cBe,"reportLookaheadAmbiguity");o(uBe,"buildAmbiguityError");o(hBe,"getProductionDslName");o(fBe,"buildAdaptivePredictError");o(dBe,"getExistingTargetState");o(pBe,"computeReachSet");o(mBe,"getReachableTarget");o(gBe,"getUniqueAlt");o(coe,"newDFAState");o(loe,"addDFAEdge");o(uoe,"addDFAState");o(yBe,"computeStartState");o(eE,"closure");o(vBe,"getEpsilonTarget");o(xBe,"hasConfigInRuleStopState");o(bBe,"allConfigsInRuleStopStates");o(wBe,"hasConflictTerminatingPrediction");o(TBe,"getConflictingAltSets");o(kBe,"hasConflictingAltSet");o(EBe,"hasStateAssociatedWithOneAlt")});var foe=M(()=>{"use strict";hoe()});var doe,XN,poe,tE,Xr,Rr,rE,moe,jN,goe,yoe,voe,xoe,KN,boe,woe,Toe,nE,Qg,Zg,QN,Jg,koe,ZN,JN,eM,tM,rM,Eoe,Soe,nM,Coe,iM,ux,Aoe,_oe,Doe,Loe,Roe,Noe,Moe,Ioe,iE,Ooe,Poe,Boe,Foe,zoe,Goe,$oe,Voe,Uoe,Hoe,Woe,aE,qoe,Yoe,Xoe,joe,Koe,Qoe,Zoe,Joe,ele,tle,rle,nle,ile,aM,sM,ale,sle,ole,lle,cle,ule,hle,fle,dle,oM,Fe,lM=M(()=>{"use strict";(function(t){function e(r){return typeof r=="string"}o(e,"is"),t.is=e})(doe||(doe={}));(function(t){function e(r){return typeof r=="string"}o(e,"is"),t.is=e})(XN||(XN={}));(function(t){t.MIN_VALUE=-2147483648,t.MAX_VALUE=2147483647;function e(r){return typeof r=="number"&&t.MIN_VALUE<=r&&r<=t.MAX_VALUE}o(e,"is"),t.is=e})(poe||(poe={}));(function(t){t.MIN_VALUE=0,t.MAX_VALUE=2147483647;function e(r){return typeof r=="number"&&t.MIN_VALUE<=r&&r<=t.MAX_VALUE}o(e,"is"),t.is=e})(tE||(tE={}));(function(t){function e(n,i){return n===Number.MAX_VALUE&&(n=tE.MAX_VALUE),i===Number.MAX_VALUE&&(i=tE.MAX_VALUE),{line:n,character:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Fe.uinteger(i.line)&&Fe.uinteger(i.character)}o(r,"is"),t.is=r})(Xr||(Xr={}));(function(t){function e(n,i,a,s){if(Fe.uinteger(n)&&Fe.uinteger(i)&&Fe.uinteger(a)&&Fe.uinteger(s))return{start:Xr.create(n,i),end:Xr.create(a,s)};if(Xr.is(n)&&Xr.is(i))return{start:n,end:i};throw new Error(`Range#create called with invalid arguments[${n}, ${i}, ${a}, ${s}]`)}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Xr.is(i.start)&&Xr.is(i.end)}o(r,"is"),t.is=r})(Rr||(Rr={}));(function(t){function e(n,i){return{uri:n,range:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Rr.is(i.range)&&(Fe.string(i.uri)||Fe.undefined(i.uri))}o(r,"is"),t.is=r})(rE||(rE={}));(function(t){function e(n,i,a,s){return{targetUri:n,targetRange:i,targetSelectionRange:a,originSelectionRange:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Rr.is(i.targetRange)&&Fe.string(i.targetUri)&&Rr.is(i.targetSelectionRange)&&(Rr.is(i.originSelectionRange)||Fe.undefined(i.originSelectionRange))}o(r,"is"),t.is=r})(moe||(moe={}));(function(t){function e(n,i,a,s){return{red:n,green:i,blue:a,alpha:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Fe.numberRange(i.red,0,1)&&Fe.numberRange(i.green,0,1)&&Fe.numberRange(i.blue,0,1)&&Fe.numberRange(i.alpha,0,1)}o(r,"is"),t.is=r})(jN||(jN={}));(function(t){function e(n,i){return{range:n,color:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Rr.is(i.range)&&jN.is(i.color)}o(r,"is"),t.is=r})(goe||(goe={}));(function(t){function e(n,i,a){return{label:n,textEdit:i,additionalTextEdits:a}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Fe.string(i.label)&&(Fe.undefined(i.textEdit)||Zg.is(i))&&(Fe.undefined(i.additionalTextEdits)||Fe.typedArray(i.additionalTextEdits,Zg.is))}o(r,"is"),t.is=r})(yoe||(yoe={}));(function(t){t.Comment="comment",t.Imports="imports",t.Region="region"})(voe||(voe={}));(function(t){function e(n,i,a,s,l,u){let h={startLine:n,endLine:i};return Fe.defined(a)&&(h.startCharacter=a),Fe.defined(s)&&(h.endCharacter=s),Fe.defined(l)&&(h.kind=l),Fe.defined(u)&&(h.collapsedText=u),h}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Fe.uinteger(i.startLine)&&Fe.uinteger(i.startLine)&&(Fe.undefined(i.startCharacter)||Fe.uinteger(i.startCharacter))&&(Fe.undefined(i.endCharacter)||Fe.uinteger(i.endCharacter))&&(Fe.undefined(i.kind)||Fe.string(i.kind))}o(r,"is"),t.is=r})(xoe||(xoe={}));(function(t){function e(n,i){return{location:n,message:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&rE.is(i.location)&&Fe.string(i.message)}o(r,"is"),t.is=r})(KN||(KN={}));(function(t){t.Error=1,t.Warning=2,t.Information=3,t.Hint=4})(boe||(boe={}));(function(t){t.Unnecessary=1,t.Deprecated=2})(woe||(woe={}));(function(t){function e(r){let n=r;return Fe.objectLiteral(n)&&Fe.string(n.href)}o(e,"is"),t.is=e})(Toe||(Toe={}));(function(t){function e(n,i,a,s,l,u){let h={range:n,message:i};return Fe.defined(a)&&(h.severity=a),Fe.defined(s)&&(h.code=s),Fe.defined(l)&&(h.source=l),Fe.defined(u)&&(h.relatedInformation=u),h}o(e,"create"),t.create=e;function r(n){var i;let a=n;return Fe.defined(a)&&Rr.is(a.range)&&Fe.string(a.message)&&(Fe.number(a.severity)||Fe.undefined(a.severity))&&(Fe.integer(a.code)||Fe.string(a.code)||Fe.undefined(a.code))&&(Fe.undefined(a.codeDescription)||Fe.string((i=a.codeDescription)===null||i===void 0?void 0:i.href))&&(Fe.string(a.source)||Fe.undefined(a.source))&&(Fe.undefined(a.relatedInformation)||Fe.typedArray(a.relatedInformation,KN.is))}o(r,"is"),t.is=r})(nE||(nE={}));(function(t){function e(n,i,...a){let s={title:n,command:i};return Fe.defined(a)&&a.length>0&&(s.arguments=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.string(i.title)&&Fe.string(i.command)}o(r,"is"),t.is=r})(Qg||(Qg={}));(function(t){function e(a,s){return{range:a,newText:s}}o(e,"replace"),t.replace=e;function r(a,s){return{range:{start:a,end:a},newText:s}}o(r,"insert"),t.insert=r;function n(a){return{range:a,newText:""}}o(n,"del"),t.del=n;function i(a){let s=a;return Fe.objectLiteral(s)&&Fe.string(s.newText)&&Rr.is(s.range)}o(i,"is"),t.is=i})(Zg||(Zg={}));(function(t){function e(n,i,a){let s={label:n};return i!==void 0&&(s.needsConfirmation=i),a!==void 0&&(s.description=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Fe.string(i.label)&&(Fe.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(Fe.string(i.description)||i.description===void 0)}o(r,"is"),t.is=r})(QN||(QN={}));(function(t){function e(r){let n=r;return Fe.string(n)}o(e,"is"),t.is=e})(Jg||(Jg={}));(function(t){function e(a,s,l){return{range:a,newText:s,annotationId:l}}o(e,"replace"),t.replace=e;function r(a,s,l){return{range:{start:a,end:a},newText:s,annotationId:l}}o(r,"insert"),t.insert=r;function n(a,s){return{range:a,newText:"",annotationId:s}}o(n,"del"),t.del=n;function i(a){let s=a;return Zg.is(s)&&(QN.is(s.annotationId)||Jg.is(s.annotationId))}o(i,"is"),t.is=i})(koe||(koe={}));(function(t){function e(n,i){return{textDocument:n,edits:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&nM.is(i.textDocument)&&Array.isArray(i.edits)}o(r,"is"),t.is=r})(ZN||(ZN={}));(function(t){function e(n,i,a){let s={kind:"create",uri:n};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="create"&&Fe.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||Fe.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||Fe.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||Jg.is(i.annotationId))}o(r,"is"),t.is=r})(JN||(JN={}));(function(t){function e(n,i,a,s){let l={kind:"rename",oldUri:n,newUri:i};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(l.options=a),s!==void 0&&(l.annotationId=s),l}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="rename"&&Fe.string(i.oldUri)&&Fe.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||Fe.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||Fe.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||Jg.is(i.annotationId))}o(r,"is"),t.is=r})(eM||(eM={}));(function(t){function e(n,i,a){let s={kind:"delete",uri:n};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="delete"&&Fe.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||Fe.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||Fe.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||Jg.is(i.annotationId))}o(r,"is"),t.is=r})(tM||(tM={}));(function(t){function e(r){let n=r;return n&&(n.changes!==void 0||n.documentChanges!==void 0)&&(n.documentChanges===void 0||n.documentChanges.every(i=>Fe.string(i.kind)?JN.is(i)||eM.is(i)||tM.is(i):ZN.is(i)))}o(e,"is"),t.is=e})(rM||(rM={}));(function(t){function e(n){return{uri:n}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.string(i.uri)}o(r,"is"),t.is=r})(Eoe||(Eoe={}));(function(t){function e(n,i){return{uri:n,version:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.string(i.uri)&&Fe.integer(i.version)}o(r,"is"),t.is=r})(Soe||(Soe={}));(function(t){function e(n,i){return{uri:n,version:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.string(i.uri)&&(i.version===null||Fe.integer(i.version))}o(r,"is"),t.is=r})(nM||(nM={}));(function(t){function e(n,i,a,s){return{uri:n,languageId:i,version:a,text:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.string(i.uri)&&Fe.string(i.languageId)&&Fe.integer(i.version)&&Fe.string(i.text)}o(r,"is"),t.is=r})(Coe||(Coe={}));(function(t){t.PlainText="plaintext",t.Markdown="markdown";function e(r){let n=r;return n===t.PlainText||n===t.Markdown}o(e,"is"),t.is=e})(iM||(iM={}));(function(t){function e(r){let n=r;return Fe.objectLiteral(r)&&iM.is(n.kind)&&Fe.string(n.value)}o(e,"is"),t.is=e})(ux||(ux={}));(function(t){t.Text=1,t.Method=2,t.Function=3,t.Constructor=4,t.Field=5,t.Variable=6,t.Class=7,t.Interface=8,t.Module=9,t.Property=10,t.Unit=11,t.Value=12,t.Enum=13,t.Keyword=14,t.Snippet=15,t.Color=16,t.File=17,t.Reference=18,t.Folder=19,t.EnumMember=20,t.Constant=21,t.Struct=22,t.Event=23,t.Operator=24,t.TypeParameter=25})(Aoe||(Aoe={}));(function(t){t.PlainText=1,t.Snippet=2})(_oe||(_oe={}));(function(t){t.Deprecated=1})(Doe||(Doe={}));(function(t){function e(n,i,a){return{newText:n,insert:i,replace:a}}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Fe.string(i.newText)&&Rr.is(i.insert)&&Rr.is(i.replace)}o(r,"is"),t.is=r})(Loe||(Loe={}));(function(t){t.asIs=1,t.adjustIndentation=2})(Roe||(Roe={}));(function(t){function e(r){let n=r;return n&&(Fe.string(n.detail)||n.detail===void 0)&&(Fe.string(n.description)||n.description===void 0)}o(e,"is"),t.is=e})(Noe||(Noe={}));(function(t){function e(r){return{label:r}}o(e,"create"),t.create=e})(Moe||(Moe={}));(function(t){function e(r,n){return{items:r||[],isIncomplete:!!n}}o(e,"create"),t.create=e})(Ioe||(Ioe={}));(function(t){function e(n){return n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}o(e,"fromPlainText"),t.fromPlainText=e;function r(n){let i=n;return Fe.string(i)||Fe.objectLiteral(i)&&Fe.string(i.language)&&Fe.string(i.value)}o(r,"is"),t.is=r})(iE||(iE={}));(function(t){function e(r){let n=r;return!!n&&Fe.objectLiteral(n)&&(ux.is(n.contents)||iE.is(n.contents)||Fe.typedArray(n.contents,iE.is))&&(r.range===void 0||Rr.is(r.range))}o(e,"is"),t.is=e})(Ooe||(Ooe={}));(function(t){function e(r,n){return n?{label:r,documentation:n}:{label:r}}o(e,"create"),t.create=e})(Poe||(Poe={}));(function(t){function e(r,n,...i){let a={label:r};return Fe.defined(n)&&(a.documentation=n),Fe.defined(i)?a.parameters=i:a.parameters=[],a}o(e,"create"),t.create=e})(Boe||(Boe={}));(function(t){t.Text=1,t.Read=2,t.Write=3})(Foe||(Foe={}));(function(t){function e(r,n){let i={range:r};return Fe.number(n)&&(i.kind=n),i}o(e,"create"),t.create=e})(zoe||(zoe={}));(function(t){t.File=1,t.Module=2,t.Namespace=3,t.Package=4,t.Class=5,t.Method=6,t.Property=7,t.Field=8,t.Constructor=9,t.Enum=10,t.Interface=11,t.Function=12,t.Variable=13,t.Constant=14,t.String=15,t.Number=16,t.Boolean=17,t.Array=18,t.Object=19,t.Key=20,t.Null=21,t.EnumMember=22,t.Struct=23,t.Event=24,t.Operator=25,t.TypeParameter=26})(Goe||(Goe={}));(function(t){t.Deprecated=1})($oe||($oe={}));(function(t){function e(r,n,i,a,s){let l={name:r,kind:n,location:{uri:a,range:i}};return s&&(l.containerName=s),l}o(e,"create"),t.create=e})(Voe||(Voe={}));(function(t){function e(r,n,i,a){return a!==void 0?{name:r,kind:n,location:{uri:i,range:a}}:{name:r,kind:n,location:{uri:i}}}o(e,"create"),t.create=e})(Uoe||(Uoe={}));(function(t){function e(n,i,a,s,l,u){let h={name:n,detail:i,kind:a,range:s,selectionRange:l};return u!==void 0&&(h.children=u),h}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Fe.string(i.name)&&Fe.number(i.kind)&&Rr.is(i.range)&&Rr.is(i.selectionRange)&&(i.detail===void 0||Fe.string(i.detail))&&(i.deprecated===void 0||Fe.boolean(i.deprecated))&&(i.children===void 0||Array.isArray(i.children))&&(i.tags===void 0||Array.isArray(i.tags))}o(r,"is"),t.is=r})(Hoe||(Hoe={}));(function(t){t.Empty="",t.QuickFix="quickfix",t.Refactor="refactor",t.RefactorExtract="refactor.extract",t.RefactorInline="refactor.inline",t.RefactorRewrite="refactor.rewrite",t.Source="source",t.SourceOrganizeImports="source.organizeImports",t.SourceFixAll="source.fixAll"})(Woe||(Woe={}));(function(t){t.Invoked=1,t.Automatic=2})(aE||(aE={}));(function(t){function e(n,i,a){let s={diagnostics:n};return i!=null&&(s.only=i),a!=null&&(s.triggerKind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.typedArray(i.diagnostics,nE.is)&&(i.only===void 0||Fe.typedArray(i.only,Fe.string))&&(i.triggerKind===void 0||i.triggerKind===aE.Invoked||i.triggerKind===aE.Automatic)}o(r,"is"),t.is=r})(qoe||(qoe={}));(function(t){function e(n,i,a){let s={title:n},l=!0;return typeof i=="string"?(l=!1,s.kind=i):Qg.is(i)?s.command=i:s.edit=i,l&&a!==void 0&&(s.kind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Fe.string(i.title)&&(i.diagnostics===void 0||Fe.typedArray(i.diagnostics,nE.is))&&(i.kind===void 0||Fe.string(i.kind))&&(i.edit!==void 0||i.command!==void 0)&&(i.command===void 0||Qg.is(i.command))&&(i.isPreferred===void 0||Fe.boolean(i.isPreferred))&&(i.edit===void 0||rM.is(i.edit))}o(r,"is"),t.is=r})(Yoe||(Yoe={}));(function(t){function e(n,i){let a={range:n};return Fe.defined(i)&&(a.data=i),a}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Rr.is(i.range)&&(Fe.undefined(i.command)||Qg.is(i.command))}o(r,"is"),t.is=r})(Xoe||(Xoe={}));(function(t){function e(n,i){return{tabSize:n,insertSpaces:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Fe.uinteger(i.tabSize)&&Fe.boolean(i.insertSpaces)}o(r,"is"),t.is=r})(joe||(joe={}));(function(t){function e(n,i,a){return{range:n,target:i,data:a}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Rr.is(i.range)&&(Fe.undefined(i.target)||Fe.string(i.target))}o(r,"is"),t.is=r})(Koe||(Koe={}));(function(t){function e(n,i){return{range:n,parent:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Rr.is(i.range)&&(i.parent===void 0||t.is(i.parent))}o(r,"is"),t.is=r})(Qoe||(Qoe={}));(function(t){t.namespace="namespace",t.type="type",t.class="class",t.enum="enum",t.interface="interface",t.struct="struct",t.typeParameter="typeParameter",t.parameter="parameter",t.variable="variable",t.property="property",t.enumMember="enumMember",t.event="event",t.function="function",t.method="method",t.macro="macro",t.keyword="keyword",t.modifier="modifier",t.comment="comment",t.string="string",t.number="number",t.regexp="regexp",t.operator="operator",t.decorator="decorator"})(Zoe||(Zoe={}));(function(t){t.declaration="declaration",t.definition="definition",t.readonly="readonly",t.static="static",t.deprecated="deprecated",t.abstract="abstract",t.async="async",t.modification="modification",t.documentation="documentation",t.defaultLibrary="defaultLibrary"})(Joe||(Joe={}));(function(t){function e(r){let n=r;return Fe.objectLiteral(n)&&(n.resultId===void 0||typeof n.resultId=="string")&&Array.isArray(n.data)&&(n.data.length===0||typeof n.data[0]=="number")}o(e,"is"),t.is=e})(ele||(ele={}));(function(t){function e(n,i){return{range:n,text:i}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Rr.is(i.range)&&Fe.string(i.text)}o(r,"is"),t.is=r})(tle||(tle={}));(function(t){function e(n,i,a){return{range:n,variableName:i,caseSensitiveLookup:a}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Rr.is(i.range)&&Fe.boolean(i.caseSensitiveLookup)&&(Fe.string(i.variableName)||i.variableName===void 0)}o(r,"is"),t.is=r})(rle||(rle={}));(function(t){function e(n,i){return{range:n,expression:i}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Rr.is(i.range)&&(Fe.string(i.expression)||i.expression===void 0)}o(r,"is"),t.is=r})(nle||(nle={}));(function(t){function e(n,i){return{frameId:n,stoppedLocation:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.defined(i)&&Rr.is(n.stoppedLocation)}o(r,"is"),t.is=r})(ile||(ile={}));(function(t){t.Type=1,t.Parameter=2;function e(r){return r===1||r===2}o(e,"is"),t.is=e})(aM||(aM={}));(function(t){function e(n){return{value:n}}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&(i.tooltip===void 0||Fe.string(i.tooltip)||ux.is(i.tooltip))&&(i.location===void 0||rE.is(i.location))&&(i.command===void 0||Qg.is(i.command))}o(r,"is"),t.is=r})(sM||(sM={}));(function(t){function e(n,i,a){let s={position:n,label:i};return a!==void 0&&(s.kind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Fe.objectLiteral(i)&&Xr.is(i.position)&&(Fe.string(i.label)||Fe.typedArray(i.label,sM.is))&&(i.kind===void 0||aM.is(i.kind))&&i.textEdits===void 0||Fe.typedArray(i.textEdits,Zg.is)&&(i.tooltip===void 0||Fe.string(i.tooltip)||ux.is(i.tooltip))&&(i.paddingLeft===void 0||Fe.boolean(i.paddingLeft))&&(i.paddingRight===void 0||Fe.boolean(i.paddingRight))}o(r,"is"),t.is=r})(ale||(ale={}));(function(t){function e(r){return{kind:"snippet",value:r}}o(e,"createSnippet"),t.createSnippet=e})(sle||(sle={}));(function(t){function e(r,n,i,a){return{insertText:r,filterText:n,range:i,command:a}}o(e,"create"),t.create=e})(ole||(ole={}));(function(t){function e(r){return{items:r}}o(e,"create"),t.create=e})(lle||(lle={}));(function(t){t.Invoked=0,t.Automatic=1})(cle||(cle={}));(function(t){function e(r,n){return{range:r,text:n}}o(e,"create"),t.create=e})(ule||(ule={}));(function(t){function e(r,n){return{triggerKind:r,selectedCompletionInfo:n}}o(e,"create"),t.create=e})(hle||(hle={}));(function(t){function e(r){let n=r;return Fe.objectLiteral(n)&&XN.is(n.uri)&&Fe.string(n.name)}o(e,"is"),t.is=e})(fle||(fle={}));(function(t){function e(a,s,l,u){return new oM(a,s,l,u)}o(e,"create"),t.create=e;function r(a){let s=a;return!!(Fe.defined(s)&&Fe.string(s.uri)&&(Fe.undefined(s.languageId)||Fe.string(s.languageId))&&Fe.uinteger(s.lineCount)&&Fe.func(s.getText)&&Fe.func(s.positionAt)&&Fe.func(s.offsetAt))}o(r,"is"),t.is=r;function n(a,s){let l=a.getText(),u=i(s,(f,d)=>{let p=f.range.start.line-d.range.start.line;return p===0?f.range.start.character-d.range.start.character:p}),h=l.length;for(let f=u.length-1;f>=0;f--){let d=u[f],p=a.offsetAt(d.range.start),m=a.offsetAt(d.range.end);if(m<=h)l=l.substring(0,p)+d.newText+l.substring(m,l.length);else throw new Error("Overlapping edit");h=p}return l}o(n,"applyEdits"),t.applyEdits=n;function i(a,s){if(a.length<=1)return a;let l=a.length/2|0,u=a.slice(0,l),h=a.slice(l);i(u,s),i(h,s);let f=0,d=0,p=0;for(;f0&&e.push(r.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let r=this.getLineOffsets(),n=0,i=r.length;if(i===0)return Xr.create(0,e);for(;ne?i=s:n=s+1}let a=n-1;return Xr.create(a,e-r[a])}offsetAt(e){let r=this.getLineOffsets();if(e.line>=r.length)return this._content.length;if(e.line<0)return 0;let n=r[e.line],i=e.line+1"u"}o(n,"undefined"),t.undefined=n;function i(m){return m===!0||m===!1}o(i,"boolean"),t.boolean=i;function a(m){return e.call(m)==="[object String]"}o(a,"string"),t.string=a;function s(m){return e.call(m)==="[object Number]"}o(s,"number"),t.number=s;function l(m,g,y){return e.call(m)==="[object Number]"&&g<=m&&m<=y}o(l,"numberRange"),t.numberRange=l;function u(m){return e.call(m)==="[object Number]"&&-2147483648<=m&&m<=2147483647}o(u,"integer"),t.integer=u;function h(m){return e.call(m)==="[object Number]"&&0<=m&&m<=2147483647}o(h,"uinteger"),t.uinteger=h;function f(m){return e.call(m)==="[object Function]"}o(f,"func"),t.func=f;function d(m){return m!==null&&typeof m=="object"}o(d,"objectLiteral"),t.objectLiteral=d;function p(m,g){return Array.isArray(m)&&m.every(g)}o(p,"typedArray"),t.typedArray=p})(Oe||(Oe={}))});var C2,A2,c0,u0,hM,vg,Ck=M(()=>{"use strict";uM();Yo();Ml();C2=class{static{o(this,"CstNodeBuilder")}constructor(){this.nodeStack=[]}get current(){return this.nodeStack[this.nodeStack.length-1]}buildRootNode(e){return this.rootNode=new vg(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){let r=new u0;return r.grammarSource=e,r.root=this.rootNode,this.current.content.push(r),this.nodeStack.push(r),r}buildLeafNode(e,r){let n=new c0(e.startOffset,e.image.length,$m(e),e.tokenType,!1);return n.grammarSource=r,n.root=this.rootNode,this.current.content.push(n),n}removeNode(e){let r=e.container;if(r){let n=r.content.indexOf(e);n>=0&&r.content.splice(n,1)}}construct(e){let r=this.current;typeof e.$type=="string"&&(this.current.astNode=e),e.$cstNode=r;let n=this.nodeStack.pop();n?.content.length===0&&this.removeNode(n)}addHiddenTokens(e){for(let r of e){let n=new c0(r.startOffset,r.image.length,$m(r),r.tokenType,!0);n.root=this.rootNode,this.addHiddenToken(this.rootNode,n)}}addHiddenToken(e,r){let{offset:n,end:i}=r;for(let a=0;al&&i=0;e--){let r=this.content[e];if(!r.hidden)return r}return this.content[this.content.length-1]}},hM=class t extends Array{static{o(this,"CstNodeContainer")}constructor(e){super(),this.parent=e,Object.setPrototypeOf(this,t.prototype)}push(...e){return this.addParents(e),super.push(...e)}unshift(...e){return this.addParents(e),super.unshift(...e)}splice(e,r,...n){return this.addParents(n),super.splice(e,r,...n)}addParents(e){for(let r of e)r.container=this.parent}},vg=class extends u0{static{o(this,"RootCstNodeImpl")}get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}}});function fM(t){return t.$type===Ak}var Ak,Zle,Jle,_2,L2,_k,xg,D2,gze,dM,N2=M(()=>{"use strict";s0();Koe();Ac();Pl();es();Ck();Ak=Symbol("Datatype");o(fM,"isDataTypeNode");Zle="\u200B",Jle=o(t=>t.endsWith(Zle)?t:t+Zle,"withRuleSuffix"),_2=class{static{o(this,"AbstractLangiumParser")}constructor(e){this._unorderedGroups=new Map,this.lexer=e.parser.Lexer;let r=this.lexer.definition;this.wrapper=new dM(r,Object.assign(Object.assign({},e.parser.ParserConfig),{errorMessageProvider:e.parser.ParserErrorMessageProvider}))}alternatives(e,r){this.wrapper.wrapOr(e,r)}optional(e,r){this.wrapper.wrapOption(e,r)}many(e,r){this.wrapper.wrapMany(e,r)}atLeastOne(e,r){this.wrapper.wrapAtLeastOne(e,r)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},L2=class extends _2{static{o(this,"LangiumParser")}get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new C2,this.stack=[],this.assignmentMap=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,r){let n=e.fragment?void 0:e2(e)?Ak:Zd(e),i=this.wrapper.DEFINE_RULE(Jle(e.name),this.startImplementation(n,r).bind(this));return e.entry&&(this.mainRule=i),i}parse(e){this.nodeBuilder.buildRootNode(e);let r=this.lexer.tokenize(e);this.wrapper.input=r.tokens;let n=this.mainRule.call(this.wrapper,{});return this.nodeBuilder.addHiddenTokens(r.hidden),this.unorderedGroups.clear(),{value:n,lexerErrors:r.errors,parserErrors:this.wrapper.errors}}startImplementation(e,r){return n=>{if(!this.isRecording()){let a={$type:e};this.stack.push(a),e===Ak&&(a.value="")}let i;try{i=r(n)}catch{i=void 0}return!this.isRecording()&&i===void 0&&(i=this.construct()),i}}consume(e,r,n){let i=this.wrapper.wrapConsume(e,r);if(!this.isRecording()&&this.isValidToken(i)){let a=this.nodeBuilder.buildLeafNode(i,n),{assignment:s,isCrossRef:l}=this.getAssignment(n),u=this.current;if(s){let h=Xo(n)?i.image:this.converter.convert(i.image,a);this.assign(s.operator,s.feature,h,a,l)}else if(fM(u)){let h=i.image;Xo(n)||(h=this.converter.convert(h,a).toString()),u.value+=h}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&typeof e.endOffset=="number"&&!isNaN(e.endOffset)}subrule(e,r,n,i){let a;this.isRecording()||(a=this.nodeBuilder.buildCompositeNode(n));let s=this.wrapper.wrapSubrule(e,r,i);!this.isRecording()&&a&&a.length>0&&this.performSubruleAssignment(s,n,a)}performSubruleAssignment(e,r,n){let{assignment:i,isCrossRef:a}=this.getAssignment(r);if(i)this.assign(i.operator,i.feature,e,n,a);else if(!i){let s=this.current;if(fM(s))s.value+=e.toString();else if(typeof e=="object"&&e){let l=e.$type,u=this.assignWithoutOverride(e,s);l&&(u.$type=l);let h=u;this.stack.pop(),this.stack.push(h)}}}action(e,r){if(!this.isRecording()){let n=this.current;if(!n.$cstNode&&r.feature&&r.operator){n=this.construct(!1);let a=n.$cstNode.feature;this.nodeBuilder.buildCompositeNode(a)}let i={$type:e};this.stack.pop(),this.stack.push(i),r.feature&&r.operator&&this.assign(r.operator,r.feature,n,n.$cstNode,!1)}}construct(e=!0){if(this.isRecording())return;let r=this.current;return CT(r),this.nodeBuilder.construct(r),e&&this.stack.pop(),fM(r)?this.converter.convert(r.value,r.$cstNode):($N(this.astReflection,r),r)}getAssignment(e){if(!this.assignmentMap.has(e)){let r=qd(e,Il);this.assignmentMap.set(e,{assignment:r,isCrossRef:r?Yd(r.terminal):!1})}return this.assignmentMap.get(e)}assign(e,r,n,i,a){let s=this.current,l;switch(a&&typeof n=="string"?l=this.linker.buildReference(s,r,i,n):l=n,e){case"=":{s[r]=l;break}case"?=":{s[r]=!0;break}case"+=":Array.isArray(s[r])||(s[r]=[]),s[r].push(l)}}assignWithoutOverride(e,r){for(let[n,i]of Object.entries(r)){let a=e[n];a===void 0?e[n]=i:Array.isArray(a)&&Array.isArray(i)&&(i.push(...a),e[n]=i)}return e}get definitionErrors(){return this.wrapper.definitionErrors}},_k=class{static{o(this,"AbstractParserErrorMessageProvider")}buildMismatchTokenMessage(e){return Fu.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return Fu.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return Fu.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return Fu.buildEarlyExitMessage(e)}},xg=class extends _k{static{o(this,"LangiumParserErrorMessageProvider")}buildMismatchTokenMessage({expected:e,actual:r}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${r.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}},D2=class extends _2{static{o(this,"LangiumCompletionParser")}constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();let r=this.lexer.tokenize(e);return this.tokens=r.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,r){let n=this.wrapper.DEFINE_RULE(Jle(e.name),this.startImplementation(r).bind(this));return e.entry&&(this.mainRule=n),n}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return r=>{let n=this.keepStackSize();try{e(r)}finally{this.resetStackSize(n)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){let e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,r,n){this.wrapper.wrapConsume(e,r),this.isRecording()||(this.lastElementStack=[...this.elementStack,n],this.nextTokenIndex=this.currIdx+1)}subrule(e,r,n,i){this.before(n),this.wrapper.wrapSubrule(e,r,i),this.after(n)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){let r=this.elementStack.lastIndexOf(e);r>=0&&this.elementStack.splice(r)}}get currIdx(){return this.wrapper.currIdx}},gze={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new xg},dM=class extends b2{static{o(this,"ChevrotainWrapper")}constructor(e,r){let n=r&&"maxLookahead"in r;super(e,Object.assign(Object.assign(Object.assign({},gze),{lookaheadStrategy:n?new zu({maxLookahead:r.maxLookahead}):new E2}),r))}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,r){return this.RULE(e,r)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,r){return this.consume(e,r)}wrapSubrule(e,r,n){return this.subrule(e,r,{ARGS:[n]})}wrapOr(e,r){this.or(e,r)}wrapOption(e,r){this.option(e,r)}wrapMany(e,r){this.many(e,r)}wrapAtLeastOne(e,r){this.atLeastOne(e,r)}}});function Dk(t,e,r){return yze({parser:e,tokens:r,rules:new Map,ruleNames:new Map},t),e}function yze(t,e){let r=Zv(e,!1),n=tn(e.rules).filter(Ma).filter(i=>r.has(i));for(let i of n){let a=Object.assign(Object.assign({},t),{consume:1,optional:1,subrule:1,many:1,or:1});a.rules.set(i.name,t.parser.rule(i,h0(a,i.definition)))}}function h0(t,e,r=!1){let n;if(Xo(e))n=Eze(t,e);else if(Ru(e))n=vze(t,e);else if(Il(e))n=h0(t,e.terminal);else if(Yd(e))n=ece(t,e);else if(Ol(e))n=xze(t,e);else if(kT(e))n=wze(t,e);else if(ST(e))n=Tze(t,e);else if(tf(e))n=kze(t,e);else if(wN(e)){let i=t.consume++;n=o(()=>t.parser.consume(i,oo,e),"method")}else throw new Wd(e.$cstNode,`Unexpected element type: ${e.$type}`);return tce(t,r?void 0:Lk(e),n,e.cardinality)}function vze(t,e){let r=Zd(e);return()=>t.parser.action(r,e)}function xze(t,e){let r=e.rule.ref;if(Ma(r)){let n=t.subrule++,i=e.arguments.length>0?bze(r,e.arguments):()=>({});return a=>t.parser.subrule(n,rce(t,r),e,i(a))}else if(qo(r)){let n=t.consume++,i=pM(t,r.name);return()=>t.parser.consume(n,i,e)}else if(r)ef(r);else throw new Wd(e.$cstNode,`Undefined rule type: ${e.$type}`)}function bze(t,e){let r=e.map(n=>Gu(n.value));return n=>{let i={};for(let a=0;ae(n)||r(n)}else if(qD(t)){let e=Gu(t.left),r=Gu(t.right);return n=>e(n)&&r(n)}else if(eN(t)){let e=Gu(t.value);return r=>!e(r)}else if(iN(t)){let e=t.parameter.ref.name;return r=>r!==void 0&&r[e]===!0}else if(WD(t)){let e=!!t.true;return()=>e}ef(t)}function wze(t,e){if(e.elements.length===1)return h0(t,e.elements[0]);{let r=[];for(let i of e.elements){let a={ALT:h0(t,i,!0)},s=Lk(i);s&&(a.GATE=Gu(s)),r.push(a)}let n=t.or++;return i=>t.parser.alternatives(n,r.map(a=>{let s={ALT:o(()=>a.ALT(i),"ALT")},l=a.GATE;return l&&(s.GATE=()=>l(i)),s}))}}function Tze(t,e){if(e.elements.length===1)return h0(t,e.elements[0]);let r=[];for(let l of e.elements){let u={ALT:h0(t,l,!0)},h=Lk(l);h&&(u.GATE=Gu(h)),r.push(u)}let n=t.or++,i=o((l,u)=>{let h=u.getRuleStack().join("-");return`uGroup_${l}_${h}`},"idFunc"),a=o(l=>t.parser.alternatives(n,r.map((u,h)=>{let f={ALT:o(()=>!0,"ALT")},d=t.parser;f.ALT=()=>{if(u.ALT(l),!d.isRecording()){let m=i(n,d);d.unorderedGroups.get(m)||d.unorderedGroups.set(m,[]);let g=d.unorderedGroups.get(m);typeof g?.[h]>"u"&&(g[h]=!0)}};let p=u.GATE;return p?f.GATE=()=>p(l):f.GATE=()=>{let m=d.unorderedGroups.get(i(n,d));return!m?.[h]},f})),"alternatives"),s=tce(t,Lk(e),a,"*");return l=>{s(l),t.parser.isRecording()||t.parser.unorderedGroups.delete(i(n,t.parser))}}function kze(t,e){let r=e.elements.map(n=>h0(t,n));return n=>r.forEach(i=>i(n))}function Lk(t){if(tf(t))return t.guardCondition}function ece(t,e,r=e.terminal){if(r)if(Ol(r)&&Ma(r.rule.ref)){let n=t.subrule++;return i=>t.parser.subrule(n,rce(t,r.rule.ref),e,i)}else if(Ol(r)&&qo(r.rule.ref)){let n=t.consume++,i=pM(t,r.rule.ref.name);return()=>t.parser.consume(n,i,e)}else if(Xo(r)){let n=t.consume++,i=pM(t,r.value);return()=>t.parser.consume(n,i,e)}else throw new Error("Could not build cross reference parser");else{if(!e.type.ref)throw new Error("Could not resolve reference to type: "+e.type.$refText);let n=RT(e.type.ref),i=n?.terminal;if(!i)throw new Error("Could not find name assignment for type: "+Zd(e.type.ref));return ece(t,e,i)}}function Eze(t,e){let r=t.consume++,n=t.tokens[e.value];if(!n)throw new Error("Could not find token for keyword: "+e.value);return()=>t.parser.consume(r,n,e)}function tce(t,e,r,n){let i=e&&Gu(e);if(!n)if(i){let a=t.or++;return s=>t.parser.alternatives(a,[{ALT:o(()=>r(s),"ALT"),GATE:o(()=>i(s),"GATE")},{ALT:vk(),GATE:o(()=>!i(s),"GATE")}])}else return r;if(n==="*"){let a=t.many++;return s=>t.parser.many(a,{DEF:o(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else if(n==="+"){let a=t.many++;if(i){let s=t.or++;return l=>t.parser.alternatives(s,[{ALT:o(()=>t.parser.atLeastOne(a,{DEF:o(()=>r(l),"DEF")}),"ALT"),GATE:o(()=>i(l),"GATE")},{ALT:vk(),GATE:o(()=>!i(l),"GATE")}])}else return s=>t.parser.atLeastOne(a,{DEF:o(()=>r(s),"DEF")})}else if(n==="?"){let a=t.optional++;return s=>t.parser.optional(a,{DEF:o(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else ef(n)}function rce(t,e){let r=Sze(t,e),n=t.rules.get(r);if(!n)throw new Error(`Rule "${r}" not found."`);return n}function Sze(t,e){if(Ma(e))return e.name;if(t.ruleNames.has(e))return t.ruleNames.get(e);{let r=e,n=r.$container,i=e.$type;for(;!Ma(n);)(tf(n)||kT(n)||ST(n))&&(i=n.elements.indexOf(r).toString()+":"+i),r=n,n=n.$container;return i=n.name+":"+i,t.ruleNames.set(e,i),i}}function pM(t,e){let r=t.tokens[e];if(!r)throw new Error(`Token "${e}" not found."`);return r}var mM=M(()=>{"use strict";s0();Ac();gT();Rs();Pl();o(Dk,"createParser");o(yze,"buildRules");o(h0,"buildElement");o(vze,"buildAction");o(xze,"buildRuleCall");o(bze,"buildRuleCallPredicate");o(Gu,"buildPredicate");o(wze,"buildAlternatives");o(Tze,"buildUnorderedGroup");o(kze,"buildGroup");o(Lk,"getGuardCondition");o(ece,"buildCrossReference");o(Eze,"buildKeyword");o(tce,"wrap");o(rce,"getRule");o(Sze,"getRuleName");o(pM,"getToken")});function gM(t){let e=t.Grammar,r=t.parser.Lexer,n=new D2(t);return Dk(e,n,r.definition),n.finalize(),n}var yM=M(()=>{"use strict";N2();mM();o(gM,"createCompletionParser")});function vM(t){let e=nce(t);return e.finalize(),e}function nce(t){let e=t.Grammar,r=t.parser.Lexer,n=new L2(t);return Dk(e,n,r.definition)}var xM=M(()=>{"use strict";N2();mM();o(vM,"createLangiumParser");o(nce,"prepareLangiumParser")});var f0,bM=M(()=>{"use strict";s0();Ac();es();Pl();Wm();Rs();f0=class{static{o(this,"DefaultTokenBuilder")}buildTokens(e,r){let n=tn(Zv(e,!1)),i=this.buildTerminalTokens(n),a=this.buildKeywordTokens(n,i,r);return i.forEach(s=>{let l=s.PATTERN;typeof l=="object"&&l&&"test"in l&&DT(l)?a.unshift(s):a.push(s)}),a}buildTerminalTokens(e){return e.filter(qo).filter(r=>!r.fragment).map(r=>this.buildTerminalToken(r)).toArray()}buildTerminalToken(e){let r=Ym(e),n=this.requiresCustomPattern(r)?this.regexPatternFunction(r):r,i={name:e.name,PATTERN:n,LINE_BREAKS:!0};return e.hidden&&(i.GROUP=DT(r)?oi.SKIPPED:"hidden"),i}requiresCustomPattern(e){return e.flags.includes("u")?!0:!!(e.source.includes("?<=")||e.source.includes("?(r.lastIndex=i,r.exec(n))}buildKeywordTokens(e,r,n){return e.filter(Ma).flatMap(i=>_c(i).filter(Xo)).distinct(i=>i.value).toArray().sort((i,a)=>a.value.length-i.value.length).map(i=>this.buildKeywordToken(i,r,!!n?.caseInsensitive))}buildKeywordToken(e,r,n){return{name:e.value,PATTERN:this.buildKeywordPattern(e,n),LONGER_ALT:this.findLongerAlt(e,r)}}buildKeywordPattern(e,r){return r?new RegExp(XN(e.value)):e.value}findLongerAlt(e,r){return r.reduce((n,i)=>{let a=i?.PATTERN;return a?.source&&jN("^"+a.source+"$",e.value)&&n.push(i),n},[])}}});var d0,Nc,wM=M(()=>{"use strict";Ac();Pl();d0=class{static{o(this,"DefaultValueConverter")}convert(e,r){let n=r.grammarSource;if(Yd(n)&&(n=ZN(n)),Ol(n)){let i=n.rule.ref;if(!i)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(i,e,r)}return e}runConverter(e,r,n){var i;switch(e.name.toUpperCase()){case"INT":return Nc.convertInt(r);case"STRING":return Nc.convertString(r);case"ID":return Nc.convertID(r)}switch((i=sR(e))===null||i===void 0?void 0:i.toLowerCase()){case"number":return Nc.convertNumber(r);case"boolean":return Nc.convertBoolean(r);case"bigint":return Nc.convertBigint(r);case"date":return Nc.convertDate(r);default:return r}}};(function(t){function e(h){let f="";for(let d=1;d{"use strict";Object.defineProperty(EM,"__esModule",{value:!0});var TM;function kM(){if(TM===void 0)throw new Error("No runtime abstraction layer installed");return TM}o(kM,"RAL");(function(t){function e(r){if(r===void 0)throw new Error("No runtime abstraction layer provided");TM=r}o(e,"install"),t.install=e})(kM||(kM={}));EM.default=kM});var sce=Ni(Ia=>{"use strict";Object.defineProperty(Ia,"__esModule",{value:!0});Ia.stringArray=Ia.array=Ia.func=Ia.error=Ia.number=Ia.string=Ia.boolean=void 0;function Cze(t){return t===!0||t===!1}o(Cze,"boolean");Ia.boolean=Cze;function ice(t){return typeof t=="string"||t instanceof String}o(ice,"string");Ia.string=ice;function Aze(t){return typeof t=="number"||t instanceof Number}o(Aze,"number");Ia.number=Aze;function _ze(t){return t instanceof Error}o(_ze,"error");Ia.error=_ze;function Lze(t){return typeof t=="function"}o(Lze,"func");Ia.func=Lze;function ace(t){return Array.isArray(t)}o(ace,"array");Ia.array=ace;function Dze(t){return ace(t)&&t.every(e=>ice(e))}o(Dze,"stringArray");Ia.stringArray=Dze});var AM=Ni(bg=>{"use strict";Object.defineProperty(bg,"__esModule",{value:!0});bg.Emitter=bg.Event=void 0;var Nze=SM(),oce;(function(t){let e={dispose(){}};t.None=function(){return e}})(oce||(bg.Event=oce={}));var CM=class{static{o(this,"CallbackList")}add(e,r=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(r),Array.isArray(n)&&n.push({dispose:o(()=>this.remove(e,r),"dispose")})}remove(e,r=null){if(!this._callbacks)return;let n=!1;for(let i=0,a=this._callbacks.length;i{this._callbacks||(this._callbacks=new CM),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,r);let i={dispose:o(()=>{this._callbacks&&(this._callbacks.remove(e,r),i.dispose=t._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))},"dispose")};return Array.isArray(n)&&n.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};bg.Emitter=Nk;Nk._noop=function(){}});var lce=Ni(wg=>{"use strict";Object.defineProperty(wg,"__esModule",{value:!0});wg.CancellationTokenSource=wg.CancellationToken=void 0;var Rze=SM(),Mze=sce(),_M=AM(),Rk;(function(t){t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:_M.Event.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:_M.Event.None});function e(r){let n=r;return n&&(n===t.None||n===t.Cancelled||Mze.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}o(e,"is"),t.is=e})(Rk||(wg.CancellationToken=Rk={}));var Ize=Object.freeze(function(t,e){let r=(0,Rze.default)().timer.setTimeout(t.bind(e),0);return{dispose(){r.dispose()}}}),Mk=class{static{o(this,"MutableToken")}constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?Ize:(this._emitter||(this._emitter=new _M.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},LM=class{static{o(this,"CancellationTokenSource")}get token(){return this._token||(this._token=new Mk),this._token}cancel(){this._token?this._token.cancel():this._token=Rk.Cancelled}dispose(){this._token?this._token instanceof Mk&&this._token.dispose():this._token=Rk.None}};wg.CancellationTokenSource=LM});var Cr={};var Ko=M(()=>{"use strict";Er(Cr,ka(lce(),1))});function NM(){return new Promise(t=>{typeof setImmediate>"u"?setTimeout(t,0):setImmediate(t)})}function uce(){return DM=Date.now(),new Cr.CancellationTokenSource}function hce(t){cce=t}function sf(t){return t===Rc}async function Gi(t){if(t===Cr.CancellationToken.None)return;let e=Date.now();if(e-DM>=cce&&(DM=e,await NM()),t.isCancellationRequested)throw Rc}var DM,cce,Rc,as,Qo=M(()=>{"use strict";Ko();o(NM,"delayNextTick");DM=0,cce=10;o(uce,"startCancelableOperation");o(hce,"setInterruptionPeriod");Rc=Symbol("OperationCancelled");o(sf,"isOperationCancelled");o(Gi,"interruptAndCheck");as=class{static{o(this,"Deferred")}constructor(){this.promise=new Promise((e,r)=>{this.resolve=n=>(e(n),this),this.reject=n=>(r(n),this)})}}});function RM(t,e){if(t.length<=1)return t;let r=t.length/2|0,n=t.slice(0,r),i=t.slice(r);RM(n,e),RM(i,e);let a=0,s=0,l=0;for(;ar.line||e.line===r.line&&e.character>r.character?{start:r,end:e}:t}function Oze(t){let e=pce(t.range);return e!==t.range?{newText:t.newText,range:e}:t}var Ik,Tg,mce=M(()=>{"use strict";Ik=class t{static{o(this,"FullTextDocument")}constructor(e,r,n,i){this._uri=e,this._languageId=r,this._version=n,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let r=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(r,n)}return this._content}update(e,r){for(let n of e)if(t.isIncremental(n)){let i=pce(n.range),a=this.offsetAt(i.start),s=this.offsetAt(i.end);this._content=this._content.substring(0,a)+n.text+this._content.substring(s,this._content.length);let l=Math.max(i.start.line,0),u=Math.max(i.end.line,0),h=this._lineOffsets,f=fce(n.text,!1,a);if(u-l===f.length)for(let p=0,m=f.length;pe?i=s:n=s+1}let a=n-1;return e=this.ensureBeforeEOL(e,r[a]),{line:a,character:e-r[a]}}offsetAt(e){let r=this.getLineOffsets();if(e.line>=r.length)return this._content.length;if(e.line<0)return 0;let n=r[e.line];if(e.character<=0)return n;let i=e.line+1r&&dce(this._content.charCodeAt(e-1));)e--;return e}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){let r=e;return r!=null&&typeof r.text=="string"&&r.range!==void 0&&(r.rangeLength===void 0||typeof r.rangeLength=="number")}static isFull(e){let r=e;return r!=null&&typeof r.text=="string"&&r.range===void 0&&r.rangeLength===void 0}};(function(t){function e(i,a,s,l){return new Ik(i,a,s,l)}o(e,"create"),t.create=e;function r(i,a,s){if(i instanceof Ik)return i.update(a,s),i;throw new Error("TextDocument.update: document must be created by TextDocument.create")}o(r,"update"),t.update=r;function n(i,a){let s=i.getText(),l=RM(a.map(Oze),(f,d)=>{let p=f.range.start.line-d.range.start.line;return p===0?f.range.start.character-d.range.start.character:p}),u=0,h=[];for(let f of l){let d=i.offsetAt(f.range.start);if(du&&h.push(s.substring(u,d)),f.newText.length&&h.push(f.newText),u=i.offsetAt(f.range.end)}return h.push(s.substr(u)),h.join("")}o(n,"applyEdits"),t.applyEdits=n})(Tg||(Tg={}));o(RM,"mergeSort");o(fce,"computeLineOffsets");o(dce,"isEOL");o(pce,"getWellformedRange");o(Oze,"getWellformedEdit")});var gce,Os,kg,MM=M(()=>{"use strict";(()=>{"use strict";var t={470:i=>{function a(u){if(typeof u!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(u))}o(a,"e");function s(u,h){for(var f,d="",p=0,m=-1,g=0,y=0;y<=u.length;++y){if(y2){var v=d.lastIndexOf("/");if(v!==d.length-1){v===-1?(d="",p=0):p=(d=d.slice(0,v)).length-1-d.lastIndexOf("/"),m=y,g=0;continue}}else if(d.length===2||d.length===1){d="",p=0,m=y,g=0;continue}}h&&(d.length>0?d+="/..":d="..",p=2)}else d.length>0?d+="/"+u.slice(m+1,y):d=u.slice(m+1,y),p=y-m-1;m=y,g=0}else f===46&&g!==-1?++g:g=-1}return d}o(s,"r");var l={resolve:o(function(){for(var u,h="",f=!1,d=arguments.length-1;d>=-1&&!f;d--){var p;d>=0?p=arguments[d]:(u===void 0&&(u=process.cwd()),p=u),a(p),p.length!==0&&(h=p+"/"+h,f=p.charCodeAt(0)===47)}return h=s(h,!f),f?h.length>0?"/"+h:"/":h.length>0?h:"."},"resolve"),normalize:o(function(u){if(a(u),u.length===0)return".";var h=u.charCodeAt(0)===47,f=u.charCodeAt(u.length-1)===47;return(u=s(u,!h)).length!==0||h||(u="."),u.length>0&&f&&(u+="/"),h?"/"+u:u},"normalize"),isAbsolute:o(function(u){return a(u),u.length>0&&u.charCodeAt(0)===47},"isAbsolute"),join:o(function(){if(arguments.length===0)return".";for(var u,h=0;h0&&(u===void 0?u=f:u+="/"+f)}return u===void 0?".":l.normalize(u)},"join"),relative:o(function(u,h){if(a(u),a(h),u===h||(u=l.resolve(u))===(h=l.resolve(h)))return"";for(var f=1;fy){if(h.charCodeAt(m+x)===47)return h.slice(m+x+1);if(x===0)return h.slice(m+x)}else p>y&&(u.charCodeAt(f+x)===47?v=x:x===0&&(v=0));break}var b=u.charCodeAt(f+x);if(b!==h.charCodeAt(m+x))break;b===47&&(v=x)}var w="";for(x=f+v+1;x<=d;++x)x!==d&&u.charCodeAt(x)!==47||(w.length===0?w+="..":w+="/..");return w.length>0?w+h.slice(m+v):(m+=v,h.charCodeAt(m)===47&&++m,h.slice(m))},"relative"),_makeLong:o(function(u){return u},"_makeLong"),dirname:o(function(u){if(a(u),u.length===0)return".";for(var h=u.charCodeAt(0),f=h===47,d=-1,p=!0,m=u.length-1;m>=1;--m)if((h=u.charCodeAt(m))===47){if(!p){d=m;break}}else p=!1;return d===-1?f?"/":".":f&&d===1?"//":u.slice(0,d)},"dirname"),basename:o(function(u,h){if(h!==void 0&&typeof h!="string")throw new TypeError('"ext" argument must be a string');a(u);var f,d=0,p=-1,m=!0;if(h!==void 0&&h.length>0&&h.length<=u.length){if(h.length===u.length&&h===u)return"";var g=h.length-1,y=-1;for(f=u.length-1;f>=0;--f){var v=u.charCodeAt(f);if(v===47){if(!m){d=f+1;break}}else y===-1&&(m=!1,y=f+1),g>=0&&(v===h.charCodeAt(g)?--g==-1&&(p=f):(g=-1,p=y))}return d===p?p=y:p===-1&&(p=u.length),u.slice(d,p)}for(f=u.length-1;f>=0;--f)if(u.charCodeAt(f)===47){if(!m){d=f+1;break}}else p===-1&&(m=!1,p=f+1);return p===-1?"":u.slice(d,p)},"basename"),extname:o(function(u){a(u);for(var h=-1,f=0,d=-1,p=!0,m=0,g=u.length-1;g>=0;--g){var y=u.charCodeAt(g);if(y!==47)d===-1&&(p=!1,d=g+1),y===46?h===-1?h=g:m!==1&&(m=1):h!==-1&&(m=-1);else if(!p){f=g+1;break}}return h===-1||d===-1||m===0||m===1&&h===d-1&&h===f+1?"":u.slice(h,d)},"extname"),format:o(function(u){if(u===null||typeof u!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof u);return function(h,f){var d=f.dir||f.root,p=f.base||(f.name||"")+(f.ext||"");return d?d===f.root?d+p:d+"/"+p:p}(0,u)},"format"),parse:o(function(u){a(u);var h={root:"",dir:"",base:"",ext:"",name:""};if(u.length===0)return h;var f,d=u.charCodeAt(0),p=d===47;p?(h.root="/",f=1):f=0;for(var m=-1,g=0,y=-1,v=!0,x=u.length-1,b=0;x>=f;--x)if((d=u.charCodeAt(x))!==47)y===-1&&(v=!1,y=x+1),d===46?m===-1?m=x:b!==1&&(b=1):m!==-1&&(b=-1);else if(!v){g=x+1;break}return m===-1||y===-1||b===0||b===1&&m===y-1&&m===g+1?y!==-1&&(h.base=h.name=g===0&&p?u.slice(1,y):u.slice(g,y)):(g===0&&p?(h.name=u.slice(1,m),h.base=u.slice(1,y)):(h.name=u.slice(g,m),h.base=u.slice(g,y)),h.ext=u.slice(m,y)),g>0?h.dir=u.slice(0,g-1):p&&(h.dir="/"),h},"parse"),sep:"/",delimiter:":",win32:null,posix:null};l.posix=l,i.exports=l}},e={};function r(i){var a=e[i];if(a!==void 0)return a.exports;var s=e[i]={exports:{}};return t[i](s,s.exports,r),s.exports}o(r,"r"),r.d=(i,a)=>{for(var s in a)r.o(a,s)&&!r.o(i,s)&&Object.defineProperty(i,s,{enumerable:!0,get:a[s]})},r.o=(i,a)=>Object.prototype.hasOwnProperty.call(i,a),r.r=i=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var n={};(()=>{let i;r.r(n),r.d(n,{URI:o(()=>p,"URI"),Utils:o(()=>I,"Utils")}),typeof process=="object"?i=process.platform==="win32":typeof navigator=="object"&&(i=navigator.userAgent.indexOf("Windows")>=0);let a=/^\w[\w\d+.-]*$/,s=/^\//,l=/^\/\//;function u(D,k){if(!D.scheme&&k)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${D.authority}", path: "${D.path}", query: "${D.query}", fragment: "${D.fragment}"}`);if(D.scheme&&!a.test(D.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(D.path){if(D.authority){if(!s.test(D.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(l.test(D.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}o(u,"s");let h="",f="/",d=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class p{static{o(this,"f")}static isUri(k){return k instanceof p||!!k&&typeof k.authority=="string"&&typeof k.fragment=="string"&&typeof k.path=="string"&&typeof k.query=="string"&&typeof k.scheme=="string"&&typeof k.fsPath=="string"&&typeof k.with=="function"&&typeof k.toString=="function"}scheme;authority;path;query;fragment;constructor(k,R,S,O,N,P=!1){typeof k=="object"?(this.scheme=k.scheme||h,this.authority=k.authority||h,this.path=k.path||h,this.query=k.query||h,this.fragment=k.fragment||h):(this.scheme=function(F,B){return F||B?F:"file"}(k,P),this.authority=R||h,this.path=function(F,B){switch(F){case"https":case"http":case"file":B?B[0]!==f&&(B=f+B):B=f}return B}(this.scheme,S||h),this.query=O||h,this.fragment=N||h,u(this,P))}get fsPath(){return b(this,!1)}with(k){if(!k)return this;let{scheme:R,authority:S,path:O,query:N,fragment:P}=k;return R===void 0?R=this.scheme:R===null&&(R=h),S===void 0?S=this.authority:S===null&&(S=h),O===void 0?O=this.path:O===null&&(O=h),N===void 0?N=this.query:N===null&&(N=h),P===void 0?P=this.fragment:P===null&&(P=h),R===this.scheme&&S===this.authority&&O===this.path&&N===this.query&&P===this.fragment?this:new g(R,S,O,N,P)}static parse(k,R=!1){let S=d.exec(k);return S?new g(S[2]||h,E(S[4]||h),E(S[5]||h),E(S[7]||h),E(S[9]||h),R):new g(h,h,h,h,h)}static file(k){let R=h;if(i&&(k=k.replace(/\\/g,f)),k[0]===f&&k[1]===f){let S=k.indexOf(f,2);S===-1?(R=k.substring(2),k=f):(R=k.substring(2,S),k=k.substring(S)||f)}return new g("file",R,k,h,h)}static from(k){let R=new g(k.scheme,k.authority,k.path,k.query,k.fragment);return u(R,!0),R}toString(k=!1){return w(this,k)}toJSON(){return this}static revive(k){if(k){if(k instanceof p)return k;{let R=new g(k);return R._formatted=k.external,R._fsPath=k._sep===m?k.fsPath:null,R}}return k}}let m=i?1:void 0;class g extends p{static{o(this,"l")}_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=b(this,!1)),this._fsPath}toString(k=!1){return k?w(this,!0):(this._formatted||(this._formatted=w(this,!1)),this._formatted)}toJSON(){let k={$mid:1};return this._fsPath&&(k.fsPath=this._fsPath,k._sep=m),this._formatted&&(k.external=this._formatted),this.path&&(k.path=this.path),this.scheme&&(k.scheme=this.scheme),this.authority&&(k.authority=this.authority),this.query&&(k.query=this.query),this.fragment&&(k.fragment=this.fragment),k}}let y={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function v(D,k,R){let S,O=-1;for(let N=0;N=97&&P<=122||P>=65&&P<=90||P>=48&&P<=57||P===45||P===46||P===95||P===126||k&&P===47||R&&P===91||R&&P===93||R&&P===58)O!==-1&&(S+=encodeURIComponent(D.substring(O,N)),O=-1),S!==void 0&&(S+=D.charAt(N));else{S===void 0&&(S=D.substr(0,N));let F=y[P];F!==void 0?(O!==-1&&(S+=encodeURIComponent(D.substring(O,N)),O=-1),S+=F):O===-1&&(O=N)}}return O!==-1&&(S+=encodeURIComponent(D.substring(O))),S!==void 0?S:D}o(v,"d");function x(D){let k;for(let R=0;R1&&D.scheme==="file"?`//${D.authority}${D.path}`:D.path.charCodeAt(0)===47&&(D.path.charCodeAt(1)>=65&&D.path.charCodeAt(1)<=90||D.path.charCodeAt(1)>=97&&D.path.charCodeAt(1)<=122)&&D.path.charCodeAt(2)===58?k?D.path.substr(1):D.path[1].toLowerCase()+D.path.substr(2):D.path,i&&(R=R.replace(/\//g,"\\")),R}o(b,"m");function w(D,k){let R=k?x:v,S="",{scheme:O,authority:N,path:P,query:F,fragment:B}=D;if(O&&(S+=O,S+=":"),(N||O==="file")&&(S+=f,S+=f),N){let $=N.indexOf("@");if($!==-1){let z=N.substr(0,$);N=N.substr($+1),$=z.lastIndexOf(":"),$===-1?S+=R(z,!1,!1):(S+=R(z.substr(0,$),!1,!1),S+=":",S+=R(z.substr($+1),!1,!0)),S+="@"}N=N.toLowerCase(),$=N.lastIndexOf(":"),$===-1?S+=R(N,!1,!0):(S+=R(N.substr(0,$),!1,!0),S+=N.substr($))}if(P){if(P.length>=3&&P.charCodeAt(0)===47&&P.charCodeAt(2)===58){let $=P.charCodeAt(1);$>=65&&$<=90&&(P=`/${String.fromCharCode($+32)}:${P.substr(3)}`)}else if(P.length>=2&&P.charCodeAt(1)===58){let $=P.charCodeAt(0);$>=65&&$<=90&&(P=`${String.fromCharCode($+32)}:${P.substr(2)}`)}S+=R(P,!0,!1)}return F&&(S+="?",S+=R(F,!1,!1)),B&&(S+="#",S+=k?B:v(B,!1,!1)),S}o(w,"y");function _(D){try{return decodeURIComponent(D)}catch{return D.length>3?D.substr(0,3)+_(D.substr(3)):D}}o(_,"v");let T=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function E(D){return D.match(T)?D.replace(T,k=>_(k)):D}o(E,"C");var L=r(470);let C=L.posix||L,A="/";var I;(function(D){D.joinPath=function(k,...R){return k.with({path:C.join(k.path,...R)})},D.resolvePath=function(k,...R){let S=k.path,O=!1;S[0]!==A&&(S=A+S,O=!0);let N=C.resolve(S,...R);return O&&N[0]===A&&!k.authority&&(N=N.substring(1)),k.with({path:N})},D.dirname=function(k){if(k.path.length===0||k.path===A)return k;let R=C.dirname(k.path);return R.length===1&&R.charCodeAt(0)===46&&(R=""),k.with({path:R})},D.basename=function(k){return C.basename(k.path)},D.extname=function(k){return C.extname(k.path)}})(I||(I={}))})(),gce=n})();({URI:Os,Utils:kg}=gce)});var ss,Mc=M(()=>{"use strict";MM();(function(t){t.basename=kg.basename,t.dirname=kg.dirname,t.extname=kg.extname,t.joinPath=kg.joinPath,t.resolvePath=kg.resolvePath;function e(n,i){return n?.toString()===i?.toString()}o(e,"equals"),t.equals=e;function r(n,i){let a=typeof n=="string"?n:n.path,s=typeof i=="string"?i:i.path,l=a.split("/").filter(p=>p.length>0),u=s.split("/").filter(p=>p.length>0),h=0;for(;h{"use strict";mce();Eg();Ko();Rs();Mc();(function(t){t[t.Changed=0]="Changed",t[t.Parsed=1]="Parsed",t[t.IndexedContent=2]="IndexedContent",t[t.ComputedScopes=3]="ComputedScopes",t[t.Linked=4]="Linked",t[t.IndexedReferences=5]="IndexedReferences",t[t.Validated=6]="Validated"})(bn||(bn={}));R2=class{static{o(this,"DefaultLangiumDocumentFactory")}constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,r=Cr.CancellationToken.None){let n=await this.fileSystemProvider.readFile(e);return this.createAsync(e,n,r)}fromTextDocument(e,r,n){return r=r??Os.parse(e.uri),n?this.createAsync(r,e,n):this.create(r,e)}fromString(e,r,n){return n?this.createAsync(r,e,n):this.create(r,e)}fromModel(e,r){return this.create(r,{$model:e})}create(e,r){if(typeof r=="string"){let n=this.parse(e,r);return this.createLangiumDocument(n,e,void 0,r)}else if("$model"in r){let n={value:r.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(n,e)}else{let n=this.parse(e,r.getText());return this.createLangiumDocument(n,e,r)}}async createAsync(e,r,n){if(typeof r=="string"){let i=await this.parseAsync(e,r,n);return this.createLangiumDocument(i,e,void 0,r)}else{let i=await this.parseAsync(e,r.getText(),n);return this.createLangiumDocument(i,e,r)}}createLangiumDocument(e,r,n,i){let a;if(n)a={parseResult:e,uri:r,state:bn.Parsed,references:[],textDocument:n};else{let s=this.createTextDocumentGetter(r,i);a={parseResult:e,uri:r,state:bn.Parsed,references:[],get textDocument(){return s()}}}return e.value.$document=a,a}async update(e,r){var n,i;let a=(n=e.parseResult.value.$cstNode)===null||n===void 0?void 0:n.root.fullText,s=(i=this.textDocuments)===null||i===void 0?void 0:i.get(e.uri.toString()),l=s?s.getText():await this.fileSystemProvider.readFile(e.uri);if(s)Object.defineProperty(e,"textDocument",{value:s});else{let u=this.createTextDocumentGetter(e.uri,l);Object.defineProperty(e,"textDocument",{get:u})}return a!==l&&(e.parseResult=await this.parseAsync(e.uri,l,r),e.parseResult.value.$document=e),e.state=bn.Parsed,e}parse(e,r){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(r)}parseAsync(e,r,n){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(r,n)}createTextDocumentGetter(e,r){let n=this.serviceRegistry,i;return()=>i??(i=Tg.create(e.toString(),n.getServices(e).LanguageMetaData.languageId,0,r??""))}},M2=class{static{o(this,"DefaultLangiumDocuments")}constructor(e){this.documentMap=new Map,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory}get all(){return tn(this.documentMap.values())}addDocument(e){let r=e.uri.toString();if(this.documentMap.has(r))throw new Error(`A document with the URI '${r}' is already present.`);this.documentMap.set(r,e)}getDocument(e){let r=e.toString();return this.documentMap.get(r)}async getOrCreateDocument(e,r){let n=this.getDocument(e);return n||(n=await this.langiumDocumentFactory.fromUri(e,r),this.addDocument(n),n)}createDocument(e,r,n){if(n)return this.langiumDocumentFactory.fromString(r,e,n).then(i=>(this.addDocument(i),i));{let i=this.langiumDocumentFactory.fromString(r,e);return this.addDocument(i),i}}hasDocument(e){return this.documentMap.has(e.toString())}invalidateDocument(e){let r=e.toString(),n=this.documentMap.get(r);return n&&(n.state=bn.Changed,n.precomputedScopes=void 0,n.references=[],n.diagnostics=void 0),n}deleteDocument(e){let r=e.toString(),n=this.documentMap.get(r);return n&&(n.state=bn.Changed,this.documentMap.delete(r)),n}}});var I2,IM=M(()=>{"use strict";Ko();Yo();es();Qo();Eg();I2=class{static{o(this,"DefaultLinker")}constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator}async link(e,r=Cr.CancellationToken.None){for(let n of jo(e.parseResult.value))await Gi(r),Um(n).forEach(i=>this.doLink(i,e))}doLink(e,r){let n=e.reference;if(n._ref===void 0)try{let i=this.getCandidate(e);if(Vd(i))n._ref=i;else if(n._nodeDescription=i,this.langiumDocuments().hasDocument(i.documentUri)){let a=this.loadAstNode(i);n._ref=a??this.createLinkingError(e,i)}}catch(i){n._ref=Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${n.$refText}': ${i}`})}r.references.push(n)}unlink(e){for(let r of e.references)delete r._ref,delete r._nodeDescription;e.references=[]}getCandidate(e){let n=this.scopeProvider.getScope(e).getElement(e.reference.$refText);return n??this.createLinkingError(e)}buildReference(e,r,n,i){let a=this,s={$refNode:n,$refText:i,get ref(){var l;if(ei(this._ref))return this._ref;if(MD(this._nodeDescription)){let u=a.loadAstNode(this._nodeDescription);this._ref=u??a.createLinkingError({reference:s,container:e,property:r},this._nodeDescription)}else if(this._ref===void 0){let u=a.getLinkedNode({reference:s,container:e,property:r});if(u.error&&Fi(e).state{"use strict";Pl();o(yce,"isNamed");O2=class{static{o(this,"DefaultNameProvider")}getName(e){if(yce(e))return e.name}getNameNode(e){return Jv(e.$cstNode,"name")}}});var P2,PM=M(()=>{"use strict";Pl();Yo();es();Ml();Rs();Mc();P2=class{static{o(this,"DefaultReferences")}constructor(e){this.nameProvider=e.references.NameProvider,this.index=e.shared.workspace.IndexManager,this.nodeLocator=e.workspace.AstNodeLocator}findDeclaration(e){if(e){let r=iR(e),n=e.astNode;if(r&&n){let i=n[r.feature];if(ma(i))return i.ref;if(Array.isArray(i)){for(let a of i)if(ma(a)&&a.$refNode&&a.$refNode.offset<=e.offset&&a.$refNode.end>=e.end)return a.ref}}if(n){let i=this.nameProvider.getNameNode(n);if(i&&(i===e||OD(e,i)))return n}}}findDeclarationNode(e){let r=this.findDeclaration(e);if(r?.$cstNode){let n=this.nameProvider.getNameNode(r);return n??r.$cstNode}}findReferences(e,r){let n=[];if(r.includeDeclaration){let a=this.getReferenceToSelf(e);a&&n.push(a)}let i=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return r.documentUri&&(i=i.filter(a=>ss.equals(a.sourceUri,r.documentUri))),n.push(...i),tn(n)}getReferenceToSelf(e){let r=this.nameProvider.getNameNode(e);if(r){let n=Fi(e),i=this.nodeLocator.getAstNodePath(e);return{sourceUri:n.uri,sourcePath:i,targetUri:n.uri,targetPath:i,segment:Hd(r),local:!0}}}}});var Ic,p0,Sg=M(()=>{"use strict";Rs();Ic=class{static{o(this,"MultiMap")}constructor(e){if(this.map=new Map,e)for(let[r,n]of e)this.add(r,n)}get size(){return Gm.sum(tn(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,r){if(r===void 0)return this.map.delete(e);{let n=this.map.get(e);if(n){let i=n.indexOf(r);if(i>=0)return n.length===1?this.map.delete(e):n.splice(i,1),!0}return!1}}get(e){var r;return(r=this.map.get(e))!==null&&r!==void 0?r:[]}has(e,r){if(r===void 0)return this.map.has(e);{let n=this.map.get(e);return n?n.indexOf(r)>=0:!1}}add(e,r){return this.map.has(e)?this.map.get(e).push(r):this.map.set(e,[r]),this}addAll(e,r){return this.map.has(e)?this.map.get(e).push(...r):this.map.set(e,Array.from(r)),this}forEach(e){this.map.forEach((r,n)=>r.forEach(i=>e(i,n,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return tn(this.map.entries()).flatMap(([e,r])=>r.map(n=>[e,n]))}keys(){return tn(this.map.keys())}values(){return tn(this.map.values()).flat()}entriesGroupedByKey(){return tn(this.map.entries())}},p0=class{static{o(this,"BiMap")}get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(let[r,n]of e)this.set(r,n)}clear(){this.map.clear(),this.inverse.clear()}set(e,r){return this.map.set(e,r),this.inverse.set(r,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){let r=this.map.get(e);return r!==void 0?(this.map.delete(e),this.inverse.delete(r),!0):!1}}});var B2,BM=M(()=>{"use strict";Ko();es();Sg();Qo();B2=class{static{o(this,"DefaultScopeComputation")}constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async computeExports(e,r=Cr.CancellationToken.None){return this.computeExportsForNode(e.parseResult.value,e,void 0,r)}async computeExportsForNode(e,r,n=qv,i=Cr.CancellationToken.None){let a=[];this.exportNode(e,a,r);for(let s of n(e))await Gi(i),this.exportNode(s,a,r);return a}exportNode(e,r,n){let i=this.nameProvider.getName(e);i&&r.push(this.descriptions.createDescription(e,i,n))}async computeLocalScopes(e,r=Cr.CancellationToken.None){let n=e.parseResult.value,i=new Ic;for(let a of _c(n))await Gi(r),this.processNode(a,e,i);return i}processNode(e,r,n){let i=e.$container;if(i){let a=this.nameProvider.getName(e);a&&n.add(i,this.descriptions.createDescription(e,a,r))}}}});var Cg,F2,Pze,FM=M(()=>{"use strict";Rs();Cg=class{static{o(this,"StreamScope")}constructor(e,r,n){var i;this.elements=e,this.outerScope=r,this.caseInsensitive=(i=n?.caseInsensitive)!==null&&i!==void 0?i:!1}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){let r=this.caseInsensitive?this.elements.find(n=>n.name.toLowerCase()===e.toLowerCase()):this.elements.find(n=>n.name===e);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}},F2=class{static{o(this,"MapScope")}constructor(e,r,n){var i;this.elements=new Map,this.caseInsensitive=(i=n?.caseInsensitive)!==null&&i!==void 0?i:!1;for(let a of e){let s=this.caseInsensitive?a.name.toLowerCase():a.name;this.elements.set(s,a)}this.outerScope=r}getElement(e){let r=this.caseInsensitive?e.toLowerCase():e,n=this.elements.get(r);if(n)return n;if(this.outerScope)return this.outerScope.getElement(e)}getAllElements(){let e=tn(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},Pze={getElement(){},getAllElements(){return $v}}});var Ag,z2,m0,Ok,_g,Pk=M(()=>{"use strict";Ag=class{static{o(this,"DisposableCache")}constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}},z2=class extends Ag{static{o(this,"SimpleCache")}constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,r){this.throwIfDisposed(),this.cache.set(e,r)}get(e,r){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(r){let n=r();return this.cache.set(e,n),n}else return}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}},m0=class extends Ag{static{o(this,"ContextCache")}constructor(e){super(),this.cache=new Map,this.converter=e??(r=>r)}has(e,r){return this.throwIfDisposed(),this.cacheForContext(e).has(r)}set(e,r,n){this.throwIfDisposed(),this.cacheForContext(e).set(r,n)}get(e,r,n){this.throwIfDisposed();let i=this.cacheForContext(e);if(i.has(r))return i.get(r);if(n){let a=n();return i.set(r,a),a}else return}delete(e,r){return this.throwIfDisposed(),this.cacheForContext(e).delete(r)}clear(e){if(this.throwIfDisposed(),e){let r=this.converter(e);this.cache.delete(r)}else this.cache.clear()}cacheForContext(e){let r=this.converter(e),n=this.cache.get(r);return n||(n=new Map,this.cache.set(r,n)),n}},Ok=class extends m0{static{o(this,"DocumentCache")}constructor(e){super(r=>r.toString()),this.onDispose(e.workspace.DocumentBuilder.onUpdate((r,n)=>{let i=r.concat(n);for(let a of i)this.clear(a)}))}},_g=class extends z2{static{o(this,"WorkspaceCache")}constructor(e){super(),this.onDispose(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}}});var G2,zM=M(()=>{"use strict";FM();es();Rs();Pk();G2=class{static{o(this,"DefaultScopeProvider")}constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new _g(e.shared)}getScope(e){let r=[],n=this.reflection.getReferenceType(e),i=Fi(e.container).precomputedScopes;if(i){let s=e.container;do{let l=i.get(s);l.length>0&&r.push(tn(l).filter(u=>this.reflection.isSubtype(u.type,n))),s=s.$container}while(s)}let a=this.getGlobalScope(n,e);for(let s=r.length-1;s>=0;s--)a=this.createScope(r[s],a);return a}createScope(e,r,n){return new Cg(tn(e),r,n)}createScopeForNodes(e,r,n){let i=tn(e).map(a=>{let s=this.nameProvider.getName(a);if(s)return this.descriptions.createDescription(a,s)}).nonNullable();return new Cg(i,r,n)}getGlobalScope(e,r){return this.globalScopeCache.get(e,()=>new F2(this.indexManager.allElements(e)))}}});function GM(t){return typeof t.$comment=="string"}function vce(t){return typeof t=="object"&&!!t&&("$ref"in t||"$error"in t)}var $2,Bk=M(()=>{"use strict";MM();Yo();es();Pl();o(GM,"isAstNodeWithComment");o(vce,"isIntermediateReference");$2=class{static{o(this,"DefaultJsonSerializer")}constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,r={}){let n=r?.replacer,i=o((s,l)=>this.replacer(s,l,r),"defaultReplacer"),a=n?(s,l)=>n(s,l,i):i;try{return this.currentDocument=Fi(e),JSON.stringify(e,a,r?.space)}finally{this.currentDocument=void 0}}deserialize(e,r={}){let n=JSON.parse(e);return this.linkNode(n,n,r),n}replacer(e,r,{refText:n,sourceText:i,textRegions:a,comments:s,uriConverter:l}){var u,h,f,d;if(!this.ignoreProperties.has(e))if(ma(r)){let p=r.ref,m=n?r.$refText:void 0;if(p){let g=Fi(p),y="";this.currentDocument&&this.currentDocument!==g&&(l?y=l(g.uri,r):y=g.uri.toString());let v=this.astNodeLocator.getAstNodePath(p);return{$ref:`${y}#${v}`,$refText:m}}else return{$error:(h=(u=r.error)===null||u===void 0?void 0:u.message)!==null&&h!==void 0?h:"Could not resolve reference",$refText:m}}else if(ei(r)){let p;if(a&&(p=this.addAstNodeRegionWithAssignmentsTo(Object.assign({},r)),(!e||r.$document)&&p?.$textRegion&&(p.$textRegion.documentURI=(f=this.currentDocument)===null||f===void 0?void 0:f.uri.toString())),i&&!e&&(p??(p=Object.assign({},r)),p.$sourceText=(d=r.$cstNode)===null||d===void 0?void 0:d.text),s){p??(p=Object.assign({},r));let m=this.commentProvider.getComment(r);m&&(p.$comment=m.replace(/\r/g,""))}return p??r}else return r}addAstNodeRegionWithAssignmentsTo(e){let r=o(n=>({offset:n.offset,end:n.end,length:n.length,range:n.range}),"createDocumentSegment");if(e.$cstNode){let n=e.$textRegion=r(e.$cstNode),i=n.assignments={};return Object.keys(e).filter(a=>!a.startsWith("$")).forEach(a=>{let s=eR(e.$cstNode,a).map(r);s.length!==0&&(i[a]=s)}),e}}linkNode(e,r,n,i,a,s){for(let[u,h]of Object.entries(e))if(Array.isArray(h))for(let f=0;f{"use strict";Mc();V2=class{static{o(this,"DefaultServiceRegistry")}register(e){if(!this.singleton&&!this.map){this.singleton=e;return}if(!this.map&&(this.map={},this.singleton)){for(let r of this.singleton.LanguageMetaData.fileExtensions)this.map[r]=this.singleton;this.singleton=void 0}for(let r of e.LanguageMetaData.fileExtensions)this.map[r]!==void 0&&this.map[r]!==e&&console.warn(`The file extension ${r} is used by multiple languages. It is now assigned to '${e.LanguageMetaData.languageId}'.`),this.map[r]=e}getServices(e){if(this.singleton!==void 0)return this.singleton;if(this.map===void 0)throw new Error("The service registry is empty. Use `register` to register the services of a language.");let r=ss.extname(e),n=this.map[r];if(!n)throw new Error(`The service registry contains no services for the extension '${r}'.`);return n}get all(){return this.singleton!==void 0?[this.singleton]:this.map!==void 0?Object.values(this.map):[]}}});function Fk(t){return{code:t}}var Lg,U2,H2=M(()=>{"use strict";Sg();Qo();Rs();o(Fk,"diagnosticData");(function(t){t.all=["fast","slow","built-in"]})(Lg||(Lg={}));U2=class{static{o(this,"ValidationRegistry")}constructor(e){this.entries=new Ic,this.reflection=e.shared.AstReflection}register(e,r=this,n="fast"){if(n==="built-in")throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.");for(let[i,a]of Object.entries(e)){let s=a;if(Array.isArray(s))for(let l of s){let u={check:this.wrapValidationException(l,r),category:n};this.addEntry(i,u)}else if(typeof s=="function"){let l={check:this.wrapValidationException(s,r),category:n};this.addEntry(i,l)}}}wrapValidationException(e,r){return async(n,i,a)=>{try{await e.call(r,n,i,a)}catch(s){if(sf(s))throw s;console.error("An error occurred during validation:",s);let l=s instanceof Error?s.message:String(s);s instanceof Error&&s.stack&&console.error(s.stack),i("error","An error occurred during validation: "+l,{node:n})}}}addEntry(e,r){if(e==="AstNode"){this.entries.add("AstNode",r);return}for(let n of this.reflection.getAllSubTypes(e))this.entries.add(n,r)}getChecks(e,r){let n=tn(this.entries.get(e)).concat(this.entries.get("AstNode"));return r&&(n=n.filter(i=>r.includes(i.category))),n.map(i=>i.check)}}});function xce(t){if(t.range)return t.range;let e;return typeof t.property=="string"?e=Jv(t.node.$cstNode,t.property,t.index):typeof t.keyword=="string"&&(e=rR(t.node.$cstNode,t.keyword,t.index)),e??(e=t.node.$cstNode),e?e.range:{start:{line:0,character:0},end:{line:0,character:0}}}function zk(t){switch(t){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+t)}}var W2,$u,VM=M(()=>{"use strict";Ko();Pl();es();Ml();Qo();H2();W2=class{static{o(this,"DefaultDocumentValidator")}constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData}async validateDocument(e,r={},n=Cr.CancellationToken.None){let i=e.parseResult,a=[];if(await Gi(n),(!r.categories||r.categories.includes("built-in"))&&(this.processLexingErrors(i,a,r),r.stopAfterLexingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===$u.LexingError})||(this.processParsingErrors(i,a,r),r.stopAfterParsingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===$u.ParsingError}))||(this.processLinkingErrors(e,a,r),r.stopAfterLinkingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===$u.LinkingError}))))return a;try{a.push(...await this.validateAst(i.value,r,n))}catch(s){if(sf(s))throw s;console.error("An error occurred during validation:",s)}return await Gi(n),a}processLexingErrors(e,r,n){for(let i of e.lexerErrors){let a={severity:zk("error"),range:{start:{line:i.line-1,character:i.column-1},end:{line:i.line-1,character:i.column+i.length-1}},message:i.message,data:Fk($u.LexingError),source:this.getSource()};r.push(a)}}processParsingErrors(e,r,n){for(let i of e.parserErrors){let a;if(isNaN(i.token.startOffset)){if("previousToken"in i){let s=i.previousToken;if(isNaN(s.startOffset)){let l={line:0,character:0};a={start:l,end:l}}else{let l={line:s.endLine-1,character:s.endColumn};a={start:l,end:l}}}}else a=$m(i.token);if(a){let s={severity:zk("error"),range:a,message:i.message,data:Fk($u.ParsingError),source:this.getSource()};r.push(s)}}}processLinkingErrors(e,r,n){for(let i of e.references){let a=i.error;if(a){let s={node:a.container,property:a.property,index:a.index,data:{code:$u.LinkingError,containerType:a.container.$type,property:a.property,refText:a.reference.$refText}};r.push(this.toDiagnostic("error",a.message,s))}}}async validateAst(e,r,n=Cr.CancellationToken.None){let i=[],a=o((s,l,u)=>{i.push(this.toDiagnostic(s,l,u))},"acceptor");return await Promise.all(jo(e).map(async s=>{await Gi(n);let l=this.validationRegistry.getChecks(s.$type,r.categories);for(let u of l)await u(s,a,n)})),i}toDiagnostic(e,r,n){return{message:r,range:xce(n),severity:zk(e),code:n.code,codeDescription:n.codeDescription,tags:n.tags,relatedInformation:n.relatedInformation,data:n.data,source:this.getSource()}}getSource(){return this.metadata.languageId}};o(xce,"getDiagnosticRange");o(zk,"toDiagnosticSeverity");(function(t){t.LexingError="lexing-error",t.ParsingError="parsing-error",t.LinkingError="linking-error"})($u||($u={}))});var Y2,q2,UM=M(()=>{"use strict";Ko();Yo();es();Ml();Qo();Mc();Y2=class{static{o(this,"DefaultAstNodeDescriptionProvider")}constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,r,n=Fi(e)){r??(r=this.nameProvider.getName(e));let i=this.astNodeLocator.getAstNodePath(e);if(!r)throw new Error(`Node at path ${i} has no name.`);let a,s=o(()=>{var l;return a??(a=Hd((l=this.nameProvider.getNameNode(e))!==null&&l!==void 0?l:e.$cstNode))},"nameSegmentGetter");return{node:e,name:r,get nameSegment(){return s()},selectionSegment:Hd(e.$cstNode),type:e.$type,documentUri:n.uri,path:i}}},q2=class{static{o(this,"DefaultReferenceDescriptionProvider")}constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,r=Cr.CancellationToken.None){let n=[],i=e.parseResult.value;for(let a of jo(i))await Gi(r),Um(a).filter(s=>!Vd(s)).forEach(s=>{let l=this.createDescription(s);l&&n.push(l)});return n}createDescription(e){let r=e.reference.$nodeDescription,n=e.reference.$refNode;if(!r||!n)return;let i=Fi(e.container).uri;return{sourceUri:i,sourcePath:this.nodeLocator.getAstNodePath(e.container),targetUri:r.documentUri,targetPath:r.path,segment:Hd(n),local:ss.equals(r.documentUri,i)}}}});var X2,HM=M(()=>{"use strict";X2=class{static{o(this,"DefaultAstNodeLocator")}constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){let r=this.getAstNodePath(e.$container),n=this.getPathSegment(e);return r+this.segmentSeparator+n}return""}getPathSegment({$containerProperty:e,$containerIndex:r}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return r!==void 0?e+this.indexSeparator+r:e}getAstNode(e,r){return r.split(this.segmentSeparator).reduce((i,a)=>{if(!i||a.length===0)return i;let s=a.indexOf(this.indexSeparator);if(s>0){let l=a.substring(0,s),u=parseInt(a.substring(s+1)),h=i[l];return h?.[u]}return i[a]},e)}}});var j2,WM=M(()=>{"use strict";Qo();j2=class{static{o(this,"DefaultConfigurationProvider")}constructor(e){this._ready=new as,this.settings={},this.workspaceConfig=!1,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){var r,n;this.workspaceConfig=(n=(r=e.capabilities.workspace)===null||r===void 0?void 0:r.configuration)!==null&&n!==void 0?n:!1}async initialized(e){if(this.workspaceConfig){if(e.register){let r=this.serviceRegistry.all;e.register({section:r.map(n=>this.toSectionName(n.LanguageMetaData.languageId))})}if(e.fetchConfiguration){let r=this.serviceRegistry.all.map(i=>({section:this.toSectionName(i.LanguageMetaData.languageId)})),n=await e.fetchConfiguration(r);r.forEach((i,a)=>{this.updateSectionConfiguration(i.section,n[a])})}}this._ready.resolve()}updateConfiguration(e){e.settings&&Object.keys(e.settings).forEach(r=>{this.updateSectionConfiguration(r,e.settings[r])})}updateSectionConfiguration(e,r){this.settings[e]=r}async getConfiguration(e,r){await this.ready;let n=this.toSectionName(e);if(this.settings[n])return this.settings[n][r]}toSectionName(e){return`${e}`}}});var g0,YM=M(()=>{"use strict";(function(t){function e(r){return{dispose:o(async()=>await r(),"dispose")}}o(e,"create"),t.create=e})(g0||(g0={}))});var K2,qM=M(()=>{"use strict";Ko();YM();Sg();Qo();Rs();H2();Eg();K2=class{static{o(this,"DefaultDocumentBuilder")}constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new Ic,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=bn.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.indexManager=e.workspace.IndexManager,this.serviceRegistry=e.ServiceRegistry}async build(e,r={},n=Cr.CancellationToken.None){var i,a;for(let s of e){let l=s.uri.toString();if(s.state===bn.Validated){if(typeof r.validation=="boolean"&&r.validation)s.state=bn.IndexedReferences,s.diagnostics=void 0,this.buildState.delete(l);else if(typeof r.validation=="object"){let u=this.buildState.get(l),h=(i=u?.result)===null||i===void 0?void 0:i.validationChecks;if(h){let d=((a=r.validation.categories)!==null&&a!==void 0?a:Lg.all).filter(p=>!h.includes(p));d.length>0&&(this.buildState.set(l,{completed:!1,options:{validation:Object.assign(Object.assign({},r.validation),{categories:d})},result:u.result}),s.state=bn.IndexedReferences)}}}else this.buildState.delete(l)}this.currentState=bn.Changed,await this.emitUpdate(e.map(s=>s.uri),[]),await this.buildDocuments(e,r,n)}async update(e,r,n=Cr.CancellationToken.None){this.currentState=bn.Changed;for(let s of r)this.langiumDocuments.deleteDocument(s),this.buildState.delete(s.toString()),this.indexManager.remove(s);for(let s of e){if(!this.langiumDocuments.invalidateDocument(s)){let u=this.langiumDocumentFactory.fromModel({$type:"INVALID"},s);u.state=bn.Changed,this.langiumDocuments.addDocument(u)}this.buildState.delete(s.toString())}let i=tn(e).concat(r).map(s=>s.toString()).toSet();this.langiumDocuments.all.filter(s=>!i.has(s.uri.toString())&&this.shouldRelink(s,i)).forEach(s=>{this.serviceRegistry.getServices(s.uri).references.Linker.unlink(s),s.state=Math.min(s.state,bn.ComputedScopes),s.diagnostics=void 0}),await this.emitUpdate(e,r),await Gi(n);let a=this.langiumDocuments.all.filter(s=>{var l;return s.staten(e,r)))}shouldRelink(e,r){return e.references.some(n=>n.error!==void 0)?!0:this.indexManager.isAffected(e,r)}onUpdate(e){return this.updateListeners.push(e),g0.create(()=>{let r=this.updateListeners.indexOf(e);r>=0&&this.updateListeners.splice(r,1)})}async buildDocuments(e,r,n){this.prepareBuild(e,r),await this.runCancelable(e,bn.Parsed,n,a=>this.langiumDocumentFactory.update(a,n)),await this.runCancelable(e,bn.IndexedContent,n,a=>this.indexManager.updateContent(a,n)),await this.runCancelable(e,bn.ComputedScopes,n,async a=>{let s=this.serviceRegistry.getServices(a.uri).references.ScopeComputation;a.precomputedScopes=await s.computeLocalScopes(a,n)}),await this.runCancelable(e,bn.Linked,n,a=>this.serviceRegistry.getServices(a.uri).references.Linker.link(a,n)),await this.runCancelable(e,bn.IndexedReferences,n,a=>this.indexManager.updateReferences(a,n));let i=e.filter(a=>this.shouldValidate(a));await this.runCancelable(i,bn.Validated,n,a=>this.validate(a,n));for(let a of e){let s=this.buildState.get(a.uri.toString());s&&(s.completed=!0)}}prepareBuild(e,r){for(let n of e){let i=n.uri.toString(),a=this.buildState.get(i);(!a||a.completed)&&this.buildState.set(i,{completed:!1,options:r,result:a?.result})}}async runCancelable(e,r,n,i){let a=e.filter(s=>s.state{this.buildPhaseListeners.delete(e,r)})}waitUntil(e,r,n){let i;if(r&&"path"in r?i=r:n=r,n??(n=Cr.CancellationToken.None),i){let a=this.langiumDocuments.getDocument(i);if(a&&a.state>e)return Promise.resolve(i)}return this.currentState>=e?Promise.resolve(void 0):n.isCancellationRequested?Promise.reject(Rc):new Promise((a,s)=>{let l=this.onBuildPhase(e,()=>{if(l.dispose(),u.dispose(),i){let h=this.langiumDocuments.getDocument(i);a(h?.uri)}else a(void 0)}),u=n.onCancellationRequested(()=>{l.dispose(),u.dispose(),s(Rc)})})}async notifyBuildPhase(e,r,n){if(e.length===0)return;let i=this.buildPhaseListeners.get(r);for(let a of i)await Gi(n),await a(e,n)}shouldValidate(e){return!!this.getBuildOptions(e).validation}async validate(e,r){var n,i;let a=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,s=this.getBuildOptions(e).validation,l=typeof s=="object"?s:void 0,u=await a.validateDocument(e,l,r);e.diagnostics?e.diagnostics.push(...u):e.diagnostics=u;let h=this.buildState.get(e.uri.toString());if(h){(n=h.result)!==null&&n!==void 0||(h.result={});let f=(i=l?.categories)!==null&&i!==void 0?i:Lg.all;h.result.validationChecks?h.result.validationChecks.push(...f):h.result.validationChecks=[...f]}}getBuildOptions(e){var r,n;return(n=(r=this.buildState.get(e.uri.toString()))===null||r===void 0?void 0:r.options)!==null&&n!==void 0?n:{}}}});var Q2,XM=M(()=>{"use strict";es();Pk();Ko();Rs();Mc();Q2=class{static{o(this,"DefaultIndexManager")}constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new m0,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,r){let n=Fi(e).uri,i=[];return this.referenceIndex.forEach(a=>{a.forEach(s=>{ss.equals(s.targetUri,n)&&s.targetPath===r&&i.push(s)})}),tn(i)}allElements(e,r){let n=tn(this.symbolIndex.keys());return r&&(n=n.filter(i=>!r||r.has(i))),n.map(i=>this.getFileDescriptions(i,e)).flat()}getFileDescriptions(e,r){var n;return r?this.symbolByTypeIndex.get(e,r,()=>{var a;return((a=this.symbolIndex.get(e))!==null&&a!==void 0?a:[]).filter(l=>this.astReflection.isSubtype(l.type,r))}):(n=this.symbolIndex.get(e))!==null&&n!==void 0?n:[]}remove(e){let r=e.toString();this.symbolIndex.delete(r),this.symbolByTypeIndex.clear(r),this.referenceIndex.delete(r)}async updateContent(e,r=Cr.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.computeExports(e,r),a=e.uri.toString();this.symbolIndex.set(a,i),this.symbolByTypeIndex.clear(a)}async updateReferences(e,r=Cr.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e,r);this.referenceIndex.set(e.uri.toString(),i)}isAffected(e,r){let n=this.referenceIndex.get(e.uri.toString());return n?n.some(i=>!i.local&&r.has(i.targetUri.toString())):!1}}});var Z2,jM=M(()=>{"use strict";Ko();Qo();Mc();Z2=class{static{o(this,"DefaultWorkspaceManager")}constructor(e){this.initialBuildOptions={},this._ready=new as,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}initialize(e){var r;this.folders=(r=e.workspaceFolders)!==null&&r!==void 0?r:void 0}initialized(e){return this.mutex.write(r=>{var n;return this.initializeWorkspace((n=this.folders)!==null&&n!==void 0?n:[],r)})}async initializeWorkspace(e,r=Cr.CancellationToken.None){let n=await this.performStartup(e);await Gi(r),await this.documentBuilder.build(n,this.initialBuildOptions,r)}async performStartup(e){let r=this.serviceRegistry.all.flatMap(a=>a.LanguageMetaData.fileExtensions),n=[],i=o(a=>{n.push(a),this.langiumDocuments.hasDocument(a.uri)||this.langiumDocuments.addDocument(a)},"collector");return await this.loadAdditionalDocuments(e,i),await Promise.all(e.map(a=>[a,this.getRootFolder(a)]).map(async a=>this.traverseFolder(...a,r,i))),this._ready.resolve(),n}loadAdditionalDocuments(e,r){return Promise.resolve()}getRootFolder(e){return Os.parse(e.uri)}async traverseFolder(e,r,n,i){let a=await this.fileSystemProvider.readDirectory(r);await Promise.all(a.map(async s=>{if(this.includeEntry(e,s,n)){if(s.isDirectory)await this.traverseFolder(e,s.uri,n,i);else if(s.isFile){let l=await this.langiumDocuments.getOrCreateDocument(s.uri);i(l)}}}))}includeEntry(e,r,n){let i=ss.basename(r.uri);if(i.startsWith("."))return!1;if(r.isDirectory)return i!=="node_modules"&&i!=="out";if(r.isFile){let a=ss.extname(r.uri);return n.includes(a)}return!1}}});function bce(t){return Array.isArray(t)&&(t.length===0||"name"in t[0])}function QM(t){return t&&"modes"in t&&"defaultMode"in t}function KM(t){return!bce(t)&&!QM(t)}var J2,ZM=M(()=>{"use strict";s0();J2=class{static{o(this,"DefaultLexer")}constructor(e){let r=e.parser.TokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(r);let n=KM(r)?Object.values(r):r;this.chevrotainLexer=new oi(n,{positionTracking:"full"})}get definition(){return this.tokenTypes}tokenize(e){var r;let n=this.chevrotainLexer.tokenize(e);return{tokens:n.tokens,errors:n.errors,hidden:(r=n.groups.hidden)!==null&&r!==void 0?r:[]}}toTokenTypeDictionary(e){if(KM(e))return e;let r=QM(e)?Object.values(e.modes).flat():e,n={};return r.forEach(i=>n[i.name]=i),n}};o(bce,"isTokenTypeArray");o(QM,"isIMultiModeLexerDefinition");o(KM,"isTokenTypeDictionary")});function tI(t,e,r){let n,i;typeof t=="string"?(i=e,n=r):(i=t.range.start,n=e),i||(i=Xr.create(0,0));let a=kce(t),s=nI(n),l=Fze({lines:a,position:i,options:s});return Uze({index:0,tokens:l,position:i})}function rI(t,e){let r=nI(e),n=kce(t);if(n.length===0)return!1;let i=n[0],a=n[n.length-1],s=r.start,l=r.end;return!!s?.exec(i)&&!!l?.exec(a)}function kce(t){let e="";return typeof t=="string"?e=t:e=t.text,e.split(YN)}function Fze(t){var e,r,n;let i=[],a=t.position.line,s=t.position.character;for(let l=0;l=f.length){if(i.length>0){let m=Xr.create(a,s);i.push({type:"break",content:"",range:Dr.create(m,m)})}}else{wce.lastIndex=d;let m=wce.exec(f);if(m){let g=m[0],y=m[1],v=Xr.create(a,s+d),x=Xr.create(a,s+d+g.length);i.push({type:"tag",content:y,range:Dr.create(v,x)}),d+=g.length,d=eI(f,d)}if(d0&&i[i.length-1].type==="break"?i.slice(0,-1):i}function zze(t,e,r,n){let i=[];if(t.length===0){let a=Xr.create(r,n),s=Xr.create(r,n+e.length);i.push({type:"text",content:e,range:Dr.create(a,s)})}else{let a=0;for(let l of t){let u=l.index,h=e.substring(a,u);h.length>0&&i.push({type:"text",content:e.substring(a,u),range:Dr.create(Xr.create(r,a+n),Xr.create(r,u+n))});let f=h.length+1,d=l[1];if(i.push({type:"inline-tag",content:d,range:Dr.create(Xr.create(r,a+f+n),Xr.create(r,a+f+d.length+n))}),f+=d.length,l.length===4){f+=l[2].length;let p=l[3];i.push({type:"text",content:p,range:Dr.create(Xr.create(r,a+f+n),Xr.create(r,a+f+p.length+n))})}else i.push({type:"text",content:"",range:Dr.create(Xr.create(r,a+f+n),Xr.create(r,a+f+n))});a=u+l[0].length}let s=e.substring(a);s.length>0&&i.push({type:"text",content:s,range:Dr.create(Xr.create(r,a+n),Xr.create(r,a+n+s.length))})}return i}function eI(t,e){let r=t.substring(e).match(Gze);return r?e+r.index:t.length}function Vze(t){let e=t.match($ze);if(e&&typeof e.index=="number")return e.index}function Uze(t){var e,r,n,i;let a=Xr.create(t.position.line,t.position.character);if(t.tokens.length===0)return new Gk([],Dr.create(a,a));let s=[];for(;t.index0){let u=eI(e,a);s=e.substring(u),e=e.substring(0,a)}return(t==="linkcode"||t==="link"&&r.link==="code")&&(s=`\`${s}\``),(i=(n=r.renderLink)===null||n===void 0?void 0:n.call(r,e,s))!==null&&i!==void 0?i:Xze(e,s)}}function Xze(t,e){try{return Os.parse(t,!0),`[${e}](${t})`}catch{return t}}function Tce(t){return t.endsWith(` +`&&i++}n&&r.length>0&&e.push(r.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let r=this.getLineOffsets(),n=0,i=r.length;if(i===0)return Xr.create(0,e);for(;ne?i=s:n=s+1}let a=n-1;return Xr.create(a,e-r[a])}offsetAt(e){let r=this.getLineOffsets();if(e.line>=r.length)return this._content.length;if(e.line<0)return 0;let n=r[e.line],i=e.line+1"u"}o(n,"undefined"),t.undefined=n;function i(m){return m===!0||m===!1}o(i,"boolean"),t.boolean=i;function a(m){return e.call(m)==="[object String]"}o(a,"string"),t.string=a;function s(m){return e.call(m)==="[object Number]"}o(s,"number"),t.number=s;function l(m,g,y){return e.call(m)==="[object Number]"&&g<=m&&m<=y}o(l,"numberRange"),t.numberRange=l;function u(m){return e.call(m)==="[object Number]"&&-2147483648<=m&&m<=2147483647}o(u,"integer"),t.integer=u;function h(m){return e.call(m)==="[object Number]"&&0<=m&&m<=2147483647}o(h,"uinteger"),t.uinteger=h;function f(m){return e.call(m)==="[object Function]"}o(f,"func"),t.func=f;function d(m){return m!==null&&typeof m=="object"}o(d,"objectLiteral"),t.objectLiteral=d;function p(m,g){return Array.isArray(m)&&m.every(g)}o(p,"typedArray"),t.typedArray=p})(Fe||(Fe={}))});var hx,fx,hp,fp,cM,e1,sE=M(()=>{"use strict";lM();Dl();hx=class{static{o(this,"CstNodeBuilder")}constructor(){this.nodeStack=[]}get current(){var e;return(e=this.nodeStack[this.nodeStack.length-1])!==null&&e!==void 0?e:this.rootNode}buildRootNode(e){return this.rootNode=new e1(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){let r=new fp;return r.grammarSource=e,r.root=this.rootNode,this.current.content.push(r),this.nodeStack.push(r),r}buildLeafNode(e,r){let n=new hp(e.startOffset,e.image.length,Pm(e),e.tokenType,!r);return n.grammarSource=r,n.root=this.rootNode,this.current.content.push(n),n}removeNode(e){let r=e.container;if(r){let n=r.content.indexOf(e);n>=0&&r.content.splice(n,1)}}addHiddenNodes(e){let r=[];for(let a of e){let s=new hp(a.startOffset,a.image.length,Pm(a),a.tokenType,!0);s.root=this.rootNode,r.push(s)}let n=this.current,i=!1;if(n.content.length>0){n.content.push(...r);return}for(;n.container;){let a=n.container.content.indexOf(n);if(a>0){n.container.content.splice(a,0,...r),i=!0;break}n=n.container}i||this.rootNode.content.unshift(...r)}construct(e){let r=this.current;typeof e.$type=="string"&&(this.current.astNode=e),e.$cstNode=r;let n=this.nodeStack.pop();n?.content.length===0&&this.removeNode(n)}},fx=class{static{o(this,"AbstractCstNode")}get parent(){return this.container}get feature(){return this.grammarSource}get hidden(){return!1}get astNode(){var e,r;let n=typeof((e=this._astNode)===null||e===void 0?void 0:e.$type)=="string"?this._astNode:(r=this.container)===null||r===void 0?void 0:r.astNode;if(!n)throw new Error("This node has no associated AST element");return n}set astNode(e){this._astNode=e}get element(){return this.astNode}get text(){return this.root.fullText.substring(this.offset,this.end)}},hp=class extends fx{static{o(this,"LeafCstNodeImpl")}get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,r,n,i,a=!1){super(),this._hidden=a,this._offset=e,this._tokenType=i,this._length=r,this._range=n}},fp=class extends fx{static{o(this,"CompositeCstNodeImpl")}constructor(){super(...arguments),this.content=new cM(this)}get children(){return this.content}get offset(){var e,r;return(r=(e=this.firstNonHiddenNode)===null||e===void 0?void 0:e.offset)!==null&&r!==void 0?r:0}get length(){return this.end-this.offset}get end(){var e,r;return(r=(e=this.lastNonHiddenNode)===null||e===void 0?void 0:e.end)!==null&&r!==void 0?r:0}get range(){let e=this.firstNonHiddenNode,r=this.lastNonHiddenNode;if(e&&r){if(this._rangeCache===void 0){let{range:n}=e,{range:i}=r;this._rangeCache={start:n.start,end:i.end.line=0;e--){let r=this.content[e];if(!r.hidden)return r}return this.content[this.content.length-1]}},cM=class t extends Array{static{o(this,"CstNodeContainer")}constructor(e){super(),this.parent=e,Object.setPrototypeOf(this,t.prototype)}push(...e){return this.addParents(e),super.push(...e)}unshift(...e){return this.addParents(e),super.unshift(...e)}splice(e,r,...n){return this.addParents(n),super.splice(e,r,...n)}addParents(e){for(let r of e)r.container=this.parent}},e1=class extends fp{static{o(this,"RootCstNodeImpl")}get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}}});function uM(t){return t.$type===oE}var oE,ple,mle,dx,px,lE,t1,mx,SBe,hM,gx=M(()=>{"use strict";af();foe();Lc();Nl();rs();sE();oE=Symbol("Datatype");o(uM,"isDataTypeNode");ple="\u200B",mle=o(t=>t.endsWith(ple)?t:t+ple,"withRuleSuffix"),dx=class{static{o(this,"AbstractLangiumParser")}constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;let r=this.lexer.definition,n=e.LanguageMetaData.mode==="production";this.wrapper=new hM(r,Object.assign(Object.assign({},e.parser.ParserConfig),{skipValidations:n,errorMessageProvider:e.parser.ParserErrorMessageProvider}))}alternatives(e,r){this.wrapper.wrapOr(e,r)}optional(e,r){this.wrapper.wrapOption(e,r)}many(e,r){this.wrapper.wrapMany(e,r)}atLeastOne(e,r){this.wrapper.wrapAtLeastOne(e,r)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},px=class extends dx{static{o(this,"LangiumParser")}get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new hx,this.stack=[],this.assignmentMap=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,r){let n=this.computeRuleType(e),i=this.wrapper.DEFINE_RULE(mle(e.name),this.startImplementation(n,r).bind(this));return this.allRules.set(e.name,i),e.entry&&(this.mainRule=i),i}computeRuleType(e){if(!e.fragment){if(F2(e))return oE;{let r=Cg(e);return r??e.name}}}parse(e,r={}){this.nodeBuilder.buildRootNode(e);let n=this.lexerResult=this.lexer.tokenize(e);this.wrapper.input=n.tokens;let i=r.rule?this.allRules.get(r.rule):this.mainRule;if(!i)throw new Error(r.rule?`No rule found with name '${r.rule}'`:"No main rule available.");let a=i.call(this.wrapper,{});return this.nodeBuilder.addHiddenNodes(n.hidden),this.unorderedGroups.clear(),this.lexerResult=void 0,{value:a,lexerErrors:n.errors,lexerReport:n.report,parserErrors:this.wrapper.errors}}startImplementation(e,r){return n=>{let i=!this.isRecording()&&e!==void 0;if(i){let s={$type:e};this.stack.push(s),e===oE&&(s.value="")}let a;try{a=r(n)}catch{a=void 0}return a===void 0&&i&&(a=this.construct()),a}}extractHiddenTokens(e){let r=this.lexerResult.hidden;if(!r.length)return[];let n=e.startOffset;for(let i=0;in)return r.splice(0,i);return r.splice(0,r.length)}consume(e,r,n){let i=this.wrapper.wrapConsume(e,r);if(!this.isRecording()&&this.isValidToken(i)){let a=this.extractHiddenTokens(i);this.nodeBuilder.addHiddenNodes(a);let s=this.nodeBuilder.buildLeafNode(i,n),{assignment:l,isCrossRef:u}=this.getAssignment(n),h=this.current;if(l){let f=Go(n)?i.image:this.converter.convert(i.image,s);this.assign(l.operator,l.feature,f,s,u)}else if(uM(h)){let f=i.image;Go(n)||(f=this.converter.convert(f,s).toString()),h.value+=f}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&typeof e.endOffset=="number"&&!isNaN(e.endOffset)}subrule(e,r,n,i,a){let s;!this.isRecording()&&!n&&(s=this.nodeBuilder.buildCompositeNode(i));let l=this.wrapper.wrapSubrule(e,r,a);!this.isRecording()&&s&&s.length>0&&this.performSubruleAssignment(l,i,s)}performSubruleAssignment(e,r,n){let{assignment:i,isCrossRef:a}=this.getAssignment(r);if(i)this.assign(i.operator,i.feature,e,n,a);else if(!i){let s=this.current;if(uM(s))s.value+=e.toString();else if(typeof e=="object"&&e){let u=this.assignWithoutOverride(e,s);this.stack.pop(),this.stack.push(u)}}}action(e,r){if(!this.isRecording()){let n=this.current;if(r.feature&&r.operator){n=this.construct(),this.nodeBuilder.removeNode(n.$cstNode),this.nodeBuilder.buildCompositeNode(r).content.push(n.$cstNode);let a={$type:e};this.stack.push(a),this.assign(r.operator,r.feature,n,n.$cstNode,!1)}else n.$type=e}}construct(){if(this.isRecording())return;let e=this.current;return lk(e),this.nodeBuilder.construct(e),this.stack.pop(),uM(e)?this.converter.convert(e.value,e.$cstNode):($R(this.astReflection,e),e)}getAssignment(e){if(!this.assignmentMap.has(e)){let r=Zd(e,Ll);this.assignmentMap.set(e,{assignment:r,isCrossRef:r?Qd(r.terminal):!1})}return this.assignmentMap.get(e)}assign(e,r,n,i,a){let s=this.current,l;switch(a&&typeof n=="string"?l=this.linker.buildReference(s,r,i,n):l=n,e){case"=":{s[r]=l;break}case"?=":{s[r]=!0;break}case"+=":Array.isArray(s[r])||(s[r]=[]),s[r].push(l)}}assignWithoutOverride(e,r){for(let[i,a]of Object.entries(r)){let s=e[i];s===void 0?e[i]=a:Array.isArray(s)&&Array.isArray(a)&&(a.push(...s),e[i]=a)}let n=e.$cstNode;return n&&(n.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}},lE=class{static{o(this,"AbstractParserErrorMessageProvider")}buildMismatchTokenMessage(e){return Fu.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return Fu.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return Fu.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return Fu.buildEarlyExitMessage(e)}},t1=class extends lE{static{o(this,"LangiumParserErrorMessageProvider")}buildMismatchTokenMessage({expected:e,actual:r}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${r.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}},mx=class extends dx{static{o(this,"LangiumCompletionParser")}constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();let r=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=r.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,r){let n=this.wrapper.DEFINE_RULE(mle(e.name),this.startImplementation(r).bind(this));return this.allRules.set(e.name,n),e.entry&&(this.mainRule=n),n}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return r=>{let n=this.keepStackSize();try{e(r)}finally{this.resetStackSize(n)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){let e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,r,n){this.wrapper.wrapConsume(e,r),this.isRecording()||(this.lastElementStack=[...this.elementStack,n],this.nextTokenIndex=this.currIdx+1)}subrule(e,r,n,i,a){this.before(i),this.wrapper.wrapSubrule(e,r,a),this.after(i)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){let r=this.elementStack.lastIndexOf(e);r>=0&&this.elementStack.splice(r)}}get currIdx(){return this.wrapper.currIdx}},SBe={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new t1},hM=class extends ax{static{o(this,"ChevrotainWrapper")}constructor(e,r){let n=r&&"maxLookahead"in r;super(e,Object.assign(Object.assign(Object.assign({},SBe),{lookaheadStrategy:n?new zu({maxLookahead:r.maxLookahead}):new cx({logging:r.skipValidations?()=>{}:void 0})}),r))}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,r){return this.RULE(e,r)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,r){return this.consume(e,r)}wrapSubrule(e,r,n){return this.subrule(e,r,{ARGS:[n]})}wrapOr(e,r){this.or(e,r)}wrapOption(e,r){this.option(e,r)}wrapMany(e,r){this.many(e,r)}wrapAtLeastOne(e,r){this.atLeastOne(e,r)}}});function yx(t,e,r){return CBe({parser:e,tokens:r,ruleNames:new Map},t),e}function CBe(t,e){let r=P2(e,!1),n=en(e.rules).filter(Ma).filter(i=>r.has(i));for(let i of n){let a=Object.assign(Object.assign({},t),{consume:1,optional:1,subrule:1,many:1,or:1});t.parser.rule(i,dp(a,i.definition))}}function dp(t,e,r=!1){let n;if(Go(e))n=MBe(t,e);else if(Ru(e))n=ABe(t,e);else if(Ll(e))n=dp(t,e.terminal);else if(Qd(e))n=gle(t,e);else if(Rl(e))n=_Be(t,e);else if(ak(e))n=LBe(t,e);else if(ok(e))n=RBe(t,e);else if(tf(e))n=NBe(t,e);else if(NR(e)){let i=t.consume++;n=o(()=>t.parser.consume(i,no,e),"method")}else throw new jd(e.$cstNode,`Unexpected element type: ${e.$type}`);return yle(t,r?void 0:cE(e),n,e.cardinality)}function ABe(t,e){let r=z2(e);return()=>t.parser.action(r,e)}function _Be(t,e){let r=e.rule.ref;if(Ma(r)){let n=t.subrule++,i=r.fragment,a=e.arguments.length>0?DBe(r,e.arguments):()=>({});return s=>t.parser.subrule(n,vle(t,r),i,e,a(s))}else if(to(r)){let n=t.consume++,i=fM(t,r.name);return()=>t.parser.consume(n,i,e)}else if(r)Dc(r);else throw new jd(e.$cstNode,`Undefined rule: ${e.rule.$refText}`)}function DBe(t,e){let r=e.map(n=>Gu(n.value));return n=>{let i={};for(let a=0;ae(n)||r(n)}else if(ER(t)){let e=Gu(t.left),r=Gu(t.right);return n=>e(n)&&r(n)}else if(CR(t)){let e=Gu(t.value);return r=>!e(r)}else if(AR(t)){let e=t.parameter.ref.name;return r=>r!==void 0&&r[e]===!0}else if(kR(t)){let e=!!t.true;return()=>e}Dc(t)}function LBe(t,e){if(e.elements.length===1)return dp(t,e.elements[0]);{let r=[];for(let i of e.elements){let a={ALT:dp(t,i,!0)},s=cE(i);s&&(a.GATE=Gu(s)),r.push(a)}let n=t.or++;return i=>t.parser.alternatives(n,r.map(a=>{let s={ALT:o(()=>a.ALT(i),"ALT")},l=a.GATE;return l&&(s.GATE=()=>l(i)),s}))}}function RBe(t,e){if(e.elements.length===1)return dp(t,e.elements[0]);let r=[];for(let l of e.elements){let u={ALT:dp(t,l,!0)},h=cE(l);h&&(u.GATE=Gu(h)),r.push(u)}let n=t.or++,i=o((l,u)=>{let h=u.getRuleStack().join("-");return`uGroup_${l}_${h}`},"idFunc"),a=o(l=>t.parser.alternatives(n,r.map((u,h)=>{let f={ALT:o(()=>!0,"ALT")},d=t.parser;f.ALT=()=>{if(u.ALT(l),!d.isRecording()){let m=i(n,d);d.unorderedGroups.get(m)||d.unorderedGroups.set(m,[]);let g=d.unorderedGroups.get(m);typeof g?.[h]>"u"&&(g[h]=!0)}};let p=u.GATE;return p?f.GATE=()=>p(l):f.GATE=()=>{let m=d.unorderedGroups.get(i(n,d));return!m?.[h]},f})),"alternatives"),s=yle(t,cE(e),a,"*");return l=>{s(l),t.parser.isRecording()||t.parser.unorderedGroups.delete(i(n,t.parser))}}function NBe(t,e){let r=e.elements.map(n=>dp(t,n));return n=>r.forEach(i=>i(n))}function cE(t){if(tf(t))return t.guardCondition}function gle(t,e,r=e.terminal){if(r)if(Rl(r)&&Ma(r.rule.ref)){let n=r.rule.ref,i=t.subrule++;return a=>t.parser.subrule(i,vle(t,n),!1,e,a)}else if(Rl(r)&&to(r.rule.ref)){let n=t.consume++,i=fM(t,r.rule.ref.name);return()=>t.parser.consume(n,i,e)}else if(Go(r)){let n=t.consume++,i=fM(t,r.value);return()=>t.parser.consume(n,i,e)}else throw new Error("Could not build cross reference parser");else{if(!e.type.ref)throw new Error("Could not resolve reference to type: "+e.type.$refText);let n=dk(e.type.ref),i=n?.terminal;if(!i)throw new Error("Could not find name assignment for type: "+z2(e.type.ref));return gle(t,e,i)}}function MBe(t,e){let r=t.consume++,n=t.tokens[e.value];if(!n)throw new Error("Could not find token for keyword: "+e.value);return()=>t.parser.consume(r,n,e)}function yle(t,e,r,n){let i=e&&Gu(e);if(!n)if(i){let a=t.or++;return s=>t.parser.alternatives(a,[{ALT:o(()=>r(s),"ALT"),GATE:o(()=>i(s),"GATE")},{ALT:Zk(),GATE:o(()=>!i(s),"GATE")}])}else return r;if(n==="*"){let a=t.many++;return s=>t.parser.many(a,{DEF:o(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else if(n==="+"){let a=t.many++;if(i){let s=t.or++;return l=>t.parser.alternatives(s,[{ALT:o(()=>t.parser.atLeastOne(a,{DEF:o(()=>r(l),"DEF")}),"ALT"),GATE:o(()=>i(l),"GATE")},{ALT:Zk(),GATE:o(()=>!i(l),"GATE")}])}else return s=>t.parser.atLeastOne(a,{DEF:o(()=>r(s),"DEF")})}else if(n==="?"){let a=t.optional++;return s=>t.parser.optional(a,{DEF:o(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else Dc(n)}function vle(t,e){let r=IBe(t,e),n=t.parser.getRule(r);if(!n)throw new Error(`Rule "${r}" not found."`);return n}function IBe(t,e){if(Ma(e))return e.name;if(t.ruleNames.has(e))return t.ruleNames.get(e);{let r=e,n=r.$container,i=e.$type;for(;!Ma(n);)(tf(n)||ak(n)||ok(n))&&(i=n.elements.indexOf(r).toString()+":"+i),r=n,n=n.$container;return i=n.name+":"+i,t.ruleNames.set(e,i),i}}function fM(t,e){let r=t.tokens[e];if(!r)throw new Error(`Token "${e}" not found."`);return r}var uE=M(()=>{"use strict";af();Lc();ek();Ms();Nl();o(yx,"createParser");o(CBe,"buildRules");o(dp,"buildElement");o(ABe,"buildAction");o(_Be,"buildRuleCall");o(DBe,"buildRuleCallPredicate");o(Gu,"buildPredicate");o(LBe,"buildAlternatives");o(RBe,"buildUnorderedGroup");o(NBe,"buildGroup");o(cE,"getGuardCondition");o(gle,"buildCrossReference");o(MBe,"buildKeyword");o(yle,"wrap");o(vle,"getRule");o(IBe,"getRuleName");o(fM,"getToken")});function dM(t){let e=t.Grammar,r=t.parser.Lexer,n=new mx(t);return yx(e,n,r.definition),n.finalize(),n}var pM=M(()=>{"use strict";gx();uE();o(dM,"createCompletionParser")});function mM(t){let e=xle(t);return e.finalize(),e}function xle(t){let e=t.Grammar,r=t.parser.Lexer,n=new px(t);return yx(e,n,r.definition)}var gM=M(()=>{"use strict";gx();uE();o(mM,"createLangiumParser");o(xle,"prepareLangiumParser")});var $u,hE=M(()=>{"use strict";af();Lc();rs();Nl();Sg();Ms();$u=class{static{o(this,"DefaultTokenBuilder")}constructor(){this.diagnostics=[]}buildTokens(e,r){let n=en(P2(e,!1)),i=this.buildTerminalTokens(n),a=this.buildKeywordTokens(n,i,r);return i.forEach(s=>{let l=s.PATTERN;typeof l=="object"&&l&&"test"in l&&Eg(l)?a.unshift(s):a.push(s)}),a}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){let e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(to).filter(r=>!r.fragment).map(r=>this.buildTerminalToken(r)).toArray()}buildTerminalToken(e){let r=Ag(e),n=this.requiresCustomPattern(r)?this.regexPatternFunction(r):r,i={name:e.name,PATTERN:n};return typeof n=="function"&&(i.LINE_BREAKS=!0),e.hidden&&(i.GROUP=Eg(r)?Xn.SKIPPED:"hidden"),i}requiresCustomPattern(e){return e.flags.includes("u")||e.flags.includes("s")?!0:!!(e.source.includes("?<=")||e.source.includes("?(r.lastIndex=i,r.exec(n))}buildKeywordTokens(e,r,n){return e.filter(Ma).flatMap(i=>Rc(i).filter(Go)).distinct(i=>i.value).toArray().sort((i,a)=>a.value.length-i.value.length).map(i=>this.buildKeywordToken(i,r,!!n?.caseInsensitive))}buildKeywordToken(e,r,n){let i=this.buildKeywordPattern(e,n),a={name:e.value,PATTERN:i,LONGER_ALT:this.findLongerAlt(e,r)};return typeof i=="function"&&(a.LINE_BREAKS=!0),a}buildKeywordPattern(e,r){return r?new RegExp(XR(e.value)):e.value}findLongerAlt(e,r){return r.reduce((n,i)=>{let a=i?.PATTERN;return a?.source&&jR("^"+a.source+"$",e.value)&&n.push(i),n},[])}}});var pp,Ic,yM=M(()=>{"use strict";Lc();Nl();pp=class{static{o(this,"DefaultValueConverter")}convert(e,r){let n=r.grammarSource;if(Qd(n)&&(n=ZR(n)),Rl(n)){let i=n.rule.ref;if(!i)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(i,e,r)}return e}runConverter(e,r,n){var i;switch(e.name.toUpperCase()){case"INT":return Ic.convertInt(r);case"STRING":return Ic.convertString(r);case"ID":return Ic.convertID(r)}switch((i=aN(e))===null||i===void 0?void 0:i.toLowerCase()){case"number":return Ic.convertNumber(r);case"boolean":return Ic.convertBoolean(r);case"bigint":return Ic.convertBigint(r);case"date":return Ic.convertDate(r);default:return r}}};(function(t){function e(h){let f="";for(let d=1;d{"use strict";Object.defineProperty(bM,"__esModule",{value:!0});var vM;function xM(){if(vM===void 0)throw new Error("No runtime abstraction layer installed");return vM}o(xM,"RAL");(function(t){function e(r){if(r===void 0)throw new Error("No runtime abstraction layer provided");vM=r}o(e,"install"),t.install=e})(xM||(xM={}));bM.default=xM});var Tle=Ni(Oa=>{"use strict";Object.defineProperty(Oa,"__esModule",{value:!0});Oa.stringArray=Oa.array=Oa.func=Oa.error=Oa.number=Oa.string=Oa.boolean=void 0;function OBe(t){return t===!0||t===!1}o(OBe,"boolean");Oa.boolean=OBe;function ble(t){return typeof t=="string"||t instanceof String}o(ble,"string");Oa.string=ble;function PBe(t){return typeof t=="number"||t instanceof Number}o(PBe,"number");Oa.number=PBe;function BBe(t){return t instanceof Error}o(BBe,"error");Oa.error=BBe;function FBe(t){return typeof t=="function"}o(FBe,"func");Oa.func=FBe;function wle(t){return Array.isArray(t)}o(wle,"array");Oa.array=wle;function zBe(t){return wle(t)&&t.every(e=>ble(e))}o(zBe,"stringArray");Oa.stringArray=zBe});var kM=Ni(r1=>{"use strict";Object.defineProperty(r1,"__esModule",{value:!0});r1.Emitter=r1.Event=void 0;var GBe=wM(),kle;(function(t){let e={dispose(){}};t.None=function(){return e}})(kle||(r1.Event=kle={}));var TM=class{static{o(this,"CallbackList")}add(e,r=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(r),Array.isArray(n)&&n.push({dispose:o(()=>this.remove(e,r),"dispose")})}remove(e,r=null){if(!this._callbacks)return;let n=!1;for(let i=0,a=this._callbacks.length;i{this._callbacks||(this._callbacks=new TM),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,r);let i={dispose:o(()=>{this._callbacks&&(this._callbacks.remove(e,r),i.dispose=t._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))},"dispose")};return Array.isArray(n)&&n.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};r1.Emitter=fE;fE._noop=function(){}});var Ele=Ni(n1=>{"use strict";Object.defineProperty(n1,"__esModule",{value:!0});n1.CancellationTokenSource=n1.CancellationToken=void 0;var $Be=wM(),VBe=Tle(),EM=kM(),dE;(function(t){t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:EM.Event.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:EM.Event.None});function e(r){let n=r;return n&&(n===t.None||n===t.Cancelled||VBe.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}o(e,"is"),t.is=e})(dE||(n1.CancellationToken=dE={}));var UBe=Object.freeze(function(t,e){let r=(0,$Be.default)().timer.setTimeout(t.bind(e),0);return{dispose(){r.dispose()}}}),pE=class{static{o(this,"MutableToken")}constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?UBe:(this._emitter||(this._emitter=new EM.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},SM=class{static{o(this,"CancellationTokenSource")}get token(){return this._token||(this._token=new pE),this._token}cancel(){this._token?this._token.cancel():this._token=dE.Cancelled}dispose(){this._token?this._token instanceof pE&&this._token.dispose():this._token=dE.None}};n1.CancellationTokenSource=SM});var yr={};var Vo=M(()=>{"use strict";Sr(yr,Ta(Ele(),1))});function CM(){return new Promise(t=>{typeof setImmediate>"u"?setTimeout(t,0):setImmediate(t)})}function gE(){return mE=performance.now(),new yr.CancellationTokenSource}function Cle(t){Sle=t}function Pc(t){return t===Oc}async function gi(t){if(t===yr.CancellationToken.None)return;let e=performance.now();if(e-mE>=Sle&&(mE=e,await CM(),mE=performance.now()),t.isCancellationRequested)throw Oc}var mE,Sle,Oc,os,Uo=M(()=>{"use strict";Vo();o(CM,"delayNextTick");mE=0,Sle=10;o(gE,"startCancelableOperation");o(Cle,"setInterruptionPeriod");Oc=Symbol("OperationCancelled");o(Pc,"isOperationCancelled");o(gi,"interruptAndCheck");os=class{static{o(this,"Deferred")}constructor(){this.promise=new Promise((e,r)=>{this.resolve=n=>(e(n),this),this.reject=n=>(r(n),this)})}}});function AM(t,e){if(t.length<=1)return t;let r=t.length/2|0,n=t.slice(0,r),i=t.slice(r);AM(n,e),AM(i,e);let a=0,s=0,l=0;for(;ar.line||e.line===r.line&&e.character>r.character?{start:r,end:e}:t}function HBe(t){let e=Dle(t.range);return e!==t.range?{newText:t.newText,range:e}:t}var yE,i1,Lle=M(()=>{"use strict";yE=class t{static{o(this,"FullTextDocument")}constructor(e,r,n,i){this._uri=e,this._languageId=r,this._version=n,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let r=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(r,n)}return this._content}update(e,r){for(let n of e)if(t.isIncremental(n)){let i=Dle(n.range),a=this.offsetAt(i.start),s=this.offsetAt(i.end);this._content=this._content.substring(0,a)+n.text+this._content.substring(s,this._content.length);let l=Math.max(i.start.line,0),u=Math.max(i.end.line,0),h=this._lineOffsets,f=Ale(n.text,!1,a);if(u-l===f.length)for(let p=0,m=f.length;pe?i=s:n=s+1}let a=n-1;return e=this.ensureBeforeEOL(e,r[a]),{line:a,character:e-r[a]}}offsetAt(e){let r=this.getLineOffsets();if(e.line>=r.length)return this._content.length;if(e.line<0)return 0;let n=r[e.line];if(e.character<=0)return n;let i=e.line+1r&&_le(this._content.charCodeAt(e-1));)e--;return e}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){let r=e;return r!=null&&typeof r.text=="string"&&r.range!==void 0&&(r.rangeLength===void 0||typeof r.rangeLength=="number")}static isFull(e){let r=e;return r!=null&&typeof r.text=="string"&&r.range===void 0&&r.rangeLength===void 0}};(function(t){function e(i,a,s,l){return new yE(i,a,s,l)}o(e,"create"),t.create=e;function r(i,a,s){if(i instanceof yE)return i.update(a,s),i;throw new Error("TextDocument.update: document must be created by TextDocument.create")}o(r,"update"),t.update=r;function n(i,a){let s=i.getText(),l=AM(a.map(HBe),(f,d)=>{let p=f.range.start.line-d.range.start.line;return p===0?f.range.start.character-d.range.start.character:p}),u=0,h=[];for(let f of l){let d=i.offsetAt(f.range.start);if(du&&h.push(s.substring(u,d)),f.newText.length&&h.push(f.newText),u=i.offsetAt(f.range.end)}return h.push(s.substr(u)),h.join("")}o(n,"applyEdits"),t.applyEdits=n})(i1||(i1={}));o(AM,"mergeSort");o(Ale,"computeLineOffsets");o(_le,"isEOL");o(Dle,"getWellformedRange");o(HBe,"getWellformedEdit")});var Rle,ls,a1,_M=M(()=>{"use strict";(()=>{"use strict";var t={470:i=>{function a(u){if(typeof u!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(u))}o(a,"e");function s(u,h){for(var f,d="",p=0,m=-1,g=0,y=0;y<=u.length;++y){if(y2){var v=d.lastIndexOf("/");if(v!==d.length-1){v===-1?(d="",p=0):p=(d=d.slice(0,v)).length-1-d.lastIndexOf("/"),m=y,g=0;continue}}else if(d.length===2||d.length===1){d="",p=0,m=y,g=0;continue}}h&&(d.length>0?d+="/..":d="..",p=2)}else d.length>0?d+="/"+u.slice(m+1,y):d=u.slice(m+1,y),p=y-m-1;m=y,g=0}else f===46&&g!==-1?++g:g=-1}return d}o(s,"r");var l={resolve:o(function(){for(var u,h="",f=!1,d=arguments.length-1;d>=-1&&!f;d--){var p;d>=0?p=arguments[d]:(u===void 0&&(u=process.cwd()),p=u),a(p),p.length!==0&&(h=p+"/"+h,f=p.charCodeAt(0)===47)}return h=s(h,!f),f?h.length>0?"/"+h:"/":h.length>0?h:"."},"resolve"),normalize:o(function(u){if(a(u),u.length===0)return".";var h=u.charCodeAt(0)===47,f=u.charCodeAt(u.length-1)===47;return(u=s(u,!h)).length!==0||h||(u="."),u.length>0&&f&&(u+="/"),h?"/"+u:u},"normalize"),isAbsolute:o(function(u){return a(u),u.length>0&&u.charCodeAt(0)===47},"isAbsolute"),join:o(function(){if(arguments.length===0)return".";for(var u,h=0;h0&&(u===void 0?u=f:u+="/"+f)}return u===void 0?".":l.normalize(u)},"join"),relative:o(function(u,h){if(a(u),a(h),u===h||(u=l.resolve(u))===(h=l.resolve(h)))return"";for(var f=1;fy){if(h.charCodeAt(m+x)===47)return h.slice(m+x+1);if(x===0)return h.slice(m+x)}else p>y&&(u.charCodeAt(f+x)===47?v=x:x===0&&(v=0));break}var b=u.charCodeAt(f+x);if(b!==h.charCodeAt(m+x))break;b===47&&(v=x)}var w="";for(x=f+v+1;x<=d;++x)x!==d&&u.charCodeAt(x)!==47||(w.length===0?w+="..":w+="/..");return w.length>0?w+h.slice(m+v):(m+=v,h.charCodeAt(m)===47&&++m,h.slice(m))},"relative"),_makeLong:o(function(u){return u},"_makeLong"),dirname:o(function(u){if(a(u),u.length===0)return".";for(var h=u.charCodeAt(0),f=h===47,d=-1,p=!0,m=u.length-1;m>=1;--m)if((h=u.charCodeAt(m))===47){if(!p){d=m;break}}else p=!1;return d===-1?f?"/":".":f&&d===1?"//":u.slice(0,d)},"dirname"),basename:o(function(u,h){if(h!==void 0&&typeof h!="string")throw new TypeError('"ext" argument must be a string');a(u);var f,d=0,p=-1,m=!0;if(h!==void 0&&h.length>0&&h.length<=u.length){if(h.length===u.length&&h===u)return"";var g=h.length-1,y=-1;for(f=u.length-1;f>=0;--f){var v=u.charCodeAt(f);if(v===47){if(!m){d=f+1;break}}else y===-1&&(m=!1,y=f+1),g>=0&&(v===h.charCodeAt(g)?--g==-1&&(p=f):(g=-1,p=y))}return d===p?p=y:p===-1&&(p=u.length),u.slice(d,p)}for(f=u.length-1;f>=0;--f)if(u.charCodeAt(f)===47){if(!m){d=f+1;break}}else p===-1&&(m=!1,p=f+1);return p===-1?"":u.slice(d,p)},"basename"),extname:o(function(u){a(u);for(var h=-1,f=0,d=-1,p=!0,m=0,g=u.length-1;g>=0;--g){var y=u.charCodeAt(g);if(y!==47)d===-1&&(p=!1,d=g+1),y===46?h===-1?h=g:m!==1&&(m=1):h!==-1&&(m=-1);else if(!p){f=g+1;break}}return h===-1||d===-1||m===0||m===1&&h===d-1&&h===f+1?"":u.slice(h,d)},"extname"),format:o(function(u){if(u===null||typeof u!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof u);return function(h,f){var d=f.dir||f.root,p=f.base||(f.name||"")+(f.ext||"");return d?d===f.root?d+p:d+"/"+p:p}(0,u)},"format"),parse:o(function(u){a(u);var h={root:"",dir:"",base:"",ext:"",name:""};if(u.length===0)return h;var f,d=u.charCodeAt(0),p=d===47;p?(h.root="/",f=1):f=0;for(var m=-1,g=0,y=-1,v=!0,x=u.length-1,b=0;x>=f;--x)if((d=u.charCodeAt(x))!==47)y===-1&&(v=!1,y=x+1),d===46?m===-1?m=x:b!==1&&(b=1):m!==-1&&(b=-1);else if(!v){g=x+1;break}return m===-1||y===-1||b===0||b===1&&m===y-1&&m===g+1?y!==-1&&(h.base=h.name=g===0&&p?u.slice(1,y):u.slice(g,y)):(g===0&&p?(h.name=u.slice(1,m),h.base=u.slice(1,y)):(h.name=u.slice(g,m),h.base=u.slice(g,y)),h.ext=u.slice(m,y)),g>0?h.dir=u.slice(0,g-1):p&&(h.dir="/"),h},"parse"),sep:"/",delimiter:":",win32:null,posix:null};l.posix=l,i.exports=l}},e={};function r(i){var a=e[i];if(a!==void 0)return a.exports;var s=e[i]={exports:{}};return t[i](s,s.exports,r),s.exports}o(r,"r"),r.d=(i,a)=>{for(var s in a)r.o(a,s)&&!r.o(i,s)&&Object.defineProperty(i,s,{enumerable:!0,get:a[s]})},r.o=(i,a)=>Object.prototype.hasOwnProperty.call(i,a),r.r=i=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var n={};(()=>{let i;r.r(n),r.d(n,{URI:o(()=>p,"URI"),Utils:o(()=>I,"Utils")}),typeof process=="object"?i=process.platform==="win32":typeof navigator=="object"&&(i=navigator.userAgent.indexOf("Windows")>=0);let a=/^\w[\w\d+.-]*$/,s=/^\//,l=/^\/\//;function u(D,k){if(!D.scheme&&k)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${D.authority}", path: "${D.path}", query: "${D.query}", fragment: "${D.fragment}"}`);if(D.scheme&&!a.test(D.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(D.path){if(D.authority){if(!s.test(D.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(l.test(D.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}o(u,"s");let h="",f="/",d=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class p{static{o(this,"f")}static isUri(k){return k instanceof p||!!k&&typeof k.authority=="string"&&typeof k.fragment=="string"&&typeof k.path=="string"&&typeof k.query=="string"&&typeof k.scheme=="string"&&typeof k.fsPath=="string"&&typeof k.with=="function"&&typeof k.toString=="function"}scheme;authority;path;query;fragment;constructor(k,L,R,O,N,B=!1){typeof k=="object"?(this.scheme=k.scheme||h,this.authority=k.authority||h,this.path=k.path||h,this.query=k.query||h,this.fragment=k.fragment||h):(this.scheme=function(F,P){return F||P?F:"file"}(k,B),this.authority=L||h,this.path=function(F,P){switch(F){case"https":case"http":case"file":P?P[0]!==f&&(P=f+P):P=f}return P}(this.scheme,R||h),this.query=O||h,this.fragment=N||h,u(this,B))}get fsPath(){return b(this,!1)}with(k){if(!k)return this;let{scheme:L,authority:R,path:O,query:N,fragment:B}=k;return L===void 0?L=this.scheme:L===null&&(L=h),R===void 0?R=this.authority:R===null&&(R=h),O===void 0?O=this.path:O===null&&(O=h),N===void 0?N=this.query:N===null&&(N=h),B===void 0?B=this.fragment:B===null&&(B=h),L===this.scheme&&R===this.authority&&O===this.path&&N===this.query&&B===this.fragment?this:new g(L,R,O,N,B)}static parse(k,L=!1){let R=d.exec(k);return R?new g(R[2]||h,E(R[4]||h),E(R[5]||h),E(R[7]||h),E(R[9]||h),L):new g(h,h,h,h,h)}static file(k){let L=h;if(i&&(k=k.replace(/\\/g,f)),k[0]===f&&k[1]===f){let R=k.indexOf(f,2);R===-1?(L=k.substring(2),k=f):(L=k.substring(2,R),k=k.substring(R)||f)}return new g("file",L,k,h,h)}static from(k){let L=new g(k.scheme,k.authority,k.path,k.query,k.fragment);return u(L,!0),L}toString(k=!1){return w(this,k)}toJSON(){return this}static revive(k){if(k){if(k instanceof p)return k;{let L=new g(k);return L._formatted=k.external,L._fsPath=k._sep===m?k.fsPath:null,L}}return k}}let m=i?1:void 0;class g extends p{static{o(this,"l")}_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=b(this,!1)),this._fsPath}toString(k=!1){return k?w(this,!0):(this._formatted||(this._formatted=w(this,!1)),this._formatted)}toJSON(){let k={$mid:1};return this._fsPath&&(k.fsPath=this._fsPath,k._sep=m),this._formatted&&(k.external=this._formatted),this.path&&(k.path=this.path),this.scheme&&(k.scheme=this.scheme),this.authority&&(k.authority=this.authority),this.query&&(k.query=this.query),this.fragment&&(k.fragment=this.fragment),k}}let y={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function v(D,k,L){let R,O=-1;for(let N=0;N=97&&B<=122||B>=65&&B<=90||B>=48&&B<=57||B===45||B===46||B===95||B===126||k&&B===47||L&&B===91||L&&B===93||L&&B===58)O!==-1&&(R+=encodeURIComponent(D.substring(O,N)),O=-1),R!==void 0&&(R+=D.charAt(N));else{R===void 0&&(R=D.substr(0,N));let F=y[B];F!==void 0?(O!==-1&&(R+=encodeURIComponent(D.substring(O,N)),O=-1),R+=F):O===-1&&(O=N)}}return O!==-1&&(R+=encodeURIComponent(D.substring(O))),R!==void 0?R:D}o(v,"d");function x(D){let k;for(let L=0;L1&&D.scheme==="file"?`//${D.authority}${D.path}`:D.path.charCodeAt(0)===47&&(D.path.charCodeAt(1)>=65&&D.path.charCodeAt(1)<=90||D.path.charCodeAt(1)>=97&&D.path.charCodeAt(1)<=122)&&D.path.charCodeAt(2)===58?k?D.path.substr(1):D.path[1].toLowerCase()+D.path.substr(2):D.path,i&&(L=L.replace(/\//g,"\\")),L}o(b,"m");function w(D,k){let L=k?x:v,R="",{scheme:O,authority:N,path:B,query:F,fragment:P}=D;if(O&&(R+=O,R+=":"),(N||O==="file")&&(R+=f,R+=f),N){let G=N.indexOf("@");if(G!==-1){let z=N.substr(0,G);N=N.substr(G+1),G=z.lastIndexOf(":"),G===-1?R+=L(z,!1,!1):(R+=L(z.substr(0,G),!1,!1),R+=":",R+=L(z.substr(G+1),!1,!0)),R+="@"}N=N.toLowerCase(),G=N.lastIndexOf(":"),G===-1?R+=L(N,!1,!0):(R+=L(N.substr(0,G),!1,!0),R+=N.substr(G))}if(B){if(B.length>=3&&B.charCodeAt(0)===47&&B.charCodeAt(2)===58){let G=B.charCodeAt(1);G>=65&&G<=90&&(B=`/${String.fromCharCode(G+32)}:${B.substr(3)}`)}else if(B.length>=2&&B.charCodeAt(1)===58){let G=B.charCodeAt(0);G>=65&&G<=90&&(B=`${String.fromCharCode(G+32)}:${B.substr(2)}`)}R+=L(B,!0,!1)}return F&&(R+="?",R+=L(F,!1,!1)),P&&(R+="#",R+=k?P:v(P,!1,!1)),R}o(w,"y");function C(D){try{return decodeURIComponent(D)}catch{return D.length>3?D.substr(0,3)+C(D.substr(3)):D}}o(C,"v");let T=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function E(D){return D.match(T)?D.replace(T,k=>C(k)):D}o(E,"C");var A=r(470);let S=A.posix||A,_="/";var I;(function(D){D.joinPath=function(k,...L){return k.with({path:S.join(k.path,...L)})},D.resolvePath=function(k,...L){let R=k.path,O=!1;R[0]!==_&&(R=_+R,O=!0);let N=S.resolve(R,...L);return O&&N[0]===_&&!k.authority&&(N=N.substring(1)),k.with({path:N})},D.dirname=function(k){if(k.path.length===0||k.path===_)return k;let L=S.dirname(k.path);return L.length===1&&L.charCodeAt(0)===46&&(L=""),k.with({path:L})},D.basename=function(k){return S.basename(k.path)},D.extname=function(k){return S.extname(k.path)}})(I||(I={}))})(),Rle=n})();({URI:ls,Utils:a1}=Rle)});var cs,Bc=M(()=>{"use strict";_M();(function(t){t.basename=a1.basename,t.dirname=a1.dirname,t.extname=a1.extname,t.joinPath=a1.joinPath,t.resolvePath=a1.resolvePath;function e(i,a){return i?.toString()===a?.toString()}o(e,"equals"),t.equals=e;function r(i,a){let s=typeof i=="string"?i:i.path,l=typeof a=="string"?a:a.path,u=s.split("/").filter(m=>m.length>0),h=l.split("/").filter(m=>m.length>0),f=0;for(;f{"use strict";Lle();s1();Vo();Ms();Bc();(function(t){t[t.Changed=0]="Changed",t[t.Parsed=1]="Parsed",t[t.IndexedContent=2]="IndexedContent",t[t.ComputedScopes=3]="ComputedScopes",t[t.Linked=4]="Linked",t[t.IndexedReferences=5]="IndexedReferences",t[t.Validated=6]="Validated"})(kn||(kn={}));vx=class{static{o(this,"DefaultLangiumDocumentFactory")}constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,r=yr.CancellationToken.None){let n=await this.fileSystemProvider.readFile(e);return this.createAsync(e,n,r)}fromTextDocument(e,r,n){return r=r??ls.parse(e.uri),yr.CancellationToken.is(n)?this.createAsync(r,e,n):this.create(r,e,n)}fromString(e,r,n){return yr.CancellationToken.is(n)?this.createAsync(r,e,n):this.create(r,e,n)}fromModel(e,r){return this.create(r,{$model:e})}create(e,r,n){if(typeof r=="string"){let i=this.parse(e,r,n);return this.createLangiumDocument(i,e,void 0,r)}else if("$model"in r){let i={value:r.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(i,e)}else{let i=this.parse(e,r.getText(),n);return this.createLangiumDocument(i,e,r)}}async createAsync(e,r,n){if(typeof r=="string"){let i=await this.parseAsync(e,r,n);return this.createLangiumDocument(i,e,void 0,r)}else{let i=await this.parseAsync(e,r.getText(),n);return this.createLangiumDocument(i,e,r)}}createLangiumDocument(e,r,n,i){let a;if(n)a={parseResult:e,uri:r,state:kn.Parsed,references:[],textDocument:n};else{let s=this.createTextDocumentGetter(r,i);a={parseResult:e,uri:r,state:kn.Parsed,references:[],get textDocument(){return s()}}}return e.value.$document=a,a}async update(e,r){var n,i;let a=(n=e.parseResult.value.$cstNode)===null||n===void 0?void 0:n.root.fullText,s=(i=this.textDocuments)===null||i===void 0?void 0:i.get(e.uri.toString()),l=s?s.getText():await this.fileSystemProvider.readFile(e.uri);if(s)Object.defineProperty(e,"textDocument",{value:s});else{let u=this.createTextDocumentGetter(e.uri,l);Object.defineProperty(e,"textDocument",{get:u})}return a!==l&&(e.parseResult=await this.parseAsync(e.uri,l,r),e.parseResult.value.$document=e),e.state=kn.Parsed,e}parse(e,r,n){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(r,n)}parseAsync(e,r,n){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(r,n)}createTextDocumentGetter(e,r){let n=this.serviceRegistry,i;return()=>i??(i=i1.create(e.toString(),n.getServices(e).LanguageMetaData.languageId,0,r??""))}},xx=class{static{o(this,"DefaultLangiumDocuments")}constructor(e){this.documentMap=new Map,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.serviceRegistry=e.ServiceRegistry}get all(){return en(this.documentMap.values())}addDocument(e){let r=e.uri.toString();if(this.documentMap.has(r))throw new Error(`A document with the URI '${r}' is already present.`);this.documentMap.set(r,e)}getDocument(e){let r=e.toString();return this.documentMap.get(r)}async getOrCreateDocument(e,r){let n=this.getDocument(e);return n||(n=await this.langiumDocumentFactory.fromUri(e,r),this.addDocument(n),n)}createDocument(e,r,n){if(n)return this.langiumDocumentFactory.fromString(r,e,n).then(i=>(this.addDocument(i),i));{let i=this.langiumDocumentFactory.fromString(r,e);return this.addDocument(i),i}}hasDocument(e){return this.documentMap.has(e.toString())}invalidateDocument(e){let r=e.toString(),n=this.documentMap.get(r);return n&&(this.serviceRegistry.getServices(e).references.Linker.unlink(n),n.state=kn.Changed,n.precomputedScopes=void 0,n.diagnostics=void 0),n}deleteDocument(e){let r=e.toString(),n=this.documentMap.get(r);return n&&(n.state=kn.Changed,this.documentMap.delete(r)),n}}});var DM,bx,LM=M(()=>{"use strict";Vo();_l();rs();Uo();s1();DM=Symbol("ref_resolving"),bx=class{static{o(this,"DefaultLinker")}constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator}async link(e,r=yr.CancellationToken.None){for(let n of $o(e.parseResult.value))await gi(r),Tg(n).forEach(i=>this.doLink(i,e))}doLink(e,r){var n;let i=e.reference;if(i._ref===void 0){i._ref=DM;try{let a=this.getCandidate(e);if(qd(a))i._ref=a;else if(i._nodeDescription=a,this.langiumDocuments().hasDocument(a.documentUri)){let s=this.loadAstNode(a);i._ref=s??this.createLinkingError(e,a)}else i._ref=void 0}catch(a){console.error(`An error occurred while resolving reference to '${i.$refText}':`,a);let s=(n=a.message)!==null&&n!==void 0?n:String(a);i._ref=Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${i.$refText}': ${s}`})}r.references.push(i)}}unlink(e){for(let r of e.references)delete r._ref,delete r._nodeDescription;e.references=[]}getCandidate(e){let n=this.scopeProvider.getScope(e).getElement(e.reference.$refText);return n??this.createLinkingError(e)}buildReference(e,r,n,i){let a=this,s={$refNode:n,$refText:i,get ref(){var l;if(ii(this._ref))return this._ref;if(gR(this._nodeDescription)){let u=a.loadAstNode(this._nodeDescription);this._ref=u??a.createLinkingError({reference:s,container:e,property:r},this._nodeDescription)}else if(this._ref===void 0){this._ref=DM;let u=L2(e).$document,h=a.getLinkedNode({reference:s,container:e,property:r});if(h.error&&u&&u.state{"use strict";Nl();o(Nle,"isNamed");wx=class{static{o(this,"DefaultNameProvider")}getName(e){if(Nle(e))return e.name}getNameNode(e){return B2(e.$cstNode,"name")}}});var Tx,NM=M(()=>{"use strict";Nl();_l();rs();Dl();Ms();Bc();Tx=class{static{o(this,"DefaultReferences")}constructor(e){this.nameProvider=e.references.NameProvider,this.index=e.shared.workspace.IndexManager,this.nodeLocator=e.workspace.AstNodeLocator}findDeclaration(e){if(e){let r=iN(e),n=e.astNode;if(r&&n){let i=n[r.feature];if(ma(i))return i.ref;if(Array.isArray(i)){for(let a of i)if(ma(a)&&a.$refNode&&a.$refNode.offset<=e.offset&&a.$refNode.end>=e.end)return a.ref}}if(n){let i=this.nameProvider.getNameNode(n);if(i&&(i===e||vR(e,i)))return n}}}findDeclarationNode(e){let r=this.findDeclaration(e);if(r?.$cstNode){let n=this.nameProvider.getNameNode(r);return n??r.$cstNode}}findReferences(e,r){let n=[];if(r.includeDeclaration){let a=this.getReferenceToSelf(e);a&&n.push(a)}let i=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return r.documentUri&&(i=i.filter(a=>cs.equals(a.sourceUri,r.documentUri))),n.push(...i),en(n)}getReferenceToSelf(e){let r=this.nameProvider.getNameNode(e);if(r){let n=Ia(e),i=this.nodeLocator.getAstNodePath(e);return{sourceUri:n.uri,sourcePath:i,targetUri:n.uri,targetPath:i,segment:Xd(r),local:!0}}}}});var Il,mp,o1=M(()=>{"use strict";Ms();Il=class{static{o(this,"MultiMap")}constructor(e){if(this.map=new Map,e)for(let[r,n]of e)this.add(r,n)}get size(){return Om.sum(en(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,r){if(r===void 0)return this.map.delete(e);{let n=this.map.get(e);if(n){let i=n.indexOf(r);if(i>=0)return n.length===1?this.map.delete(e):n.splice(i,1),!0}return!1}}get(e){var r;return(r=this.map.get(e))!==null&&r!==void 0?r:[]}has(e,r){if(r===void 0)return this.map.has(e);{let n=this.map.get(e);return n?n.indexOf(r)>=0:!1}}add(e,r){return this.map.has(e)?this.map.get(e).push(r):this.map.set(e,[r]),this}addAll(e,r){return this.map.has(e)?this.map.get(e).push(...r):this.map.set(e,Array.from(r)),this}forEach(e){this.map.forEach((r,n)=>r.forEach(i=>e(i,n,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return en(this.map.entries()).flatMap(([e,r])=>r.map(n=>[e,n]))}keys(){return en(this.map.keys())}values(){return en(this.map.values()).flat()}entriesGroupedByKey(){return en(this.map.entries())}},mp=class{static{o(this,"BiMap")}get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(let[r,n]of e)this.set(r,n)}clear(){this.map.clear(),this.inverse.clear()}set(e,r){return this.map.set(e,r),this.inverse.set(r,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){let r=this.map.get(e);return r!==void 0?(this.map.delete(e),this.inverse.delete(r),!0):!1}}});var kx,MM=M(()=>{"use strict";Vo();rs();o1();Uo();kx=class{static{o(this,"DefaultScopeComputation")}constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async computeExports(e,r=yr.CancellationToken.None){return this.computeExportsForNode(e.parseResult.value,e,void 0,r)}async computeExportsForNode(e,r,n=R2,i=yr.CancellationToken.None){let a=[];this.exportNode(e,a,r);for(let s of n(e))await gi(i),this.exportNode(s,a,r);return a}exportNode(e,r,n){let i=this.nameProvider.getName(e);i&&r.push(this.descriptions.createDescription(e,i,n))}async computeLocalScopes(e,r=yr.CancellationToken.None){let n=e.parseResult.value,i=new Il;for(let a of Rc(n))await gi(r),this.processNode(a,e,i);return i}processNode(e,r,n){let i=e.$container;if(i){let a=this.nameProvider.getName(e);a&&n.add(i,this.descriptions.createDescription(e,a,r))}}}});var l1,Ex,WBe,IM=M(()=>{"use strict";Ms();l1=class{static{o(this,"StreamScope")}constructor(e,r,n){var i;this.elements=e,this.outerScope=r,this.caseInsensitive=(i=n?.caseInsensitive)!==null&&i!==void 0?i:!1}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){let r=this.caseInsensitive?this.elements.find(n=>n.name.toLowerCase()===e.toLowerCase()):this.elements.find(n=>n.name===e);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}},Ex=class{static{o(this,"MapScope")}constructor(e,r,n){var i;this.elements=new Map,this.caseInsensitive=(i=n?.caseInsensitive)!==null&&i!==void 0?i:!1;for(let a of e){let s=this.caseInsensitive?a.name.toLowerCase():a.name;this.elements.set(s,a)}this.outerScope=r}getElement(e){let r=this.caseInsensitive?e.toLowerCase():e,n=this.elements.get(r);if(n)return n;if(this.outerScope)return this.outerScope.getElement(e)}getAllElements(){let e=en(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},WBe={getElement(){},getAllElements(){return b2}}});var c1,Sx,gp,vE,u1,xE=M(()=>{"use strict";c1=class{static{o(this,"DisposableCache")}constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}},Sx=class extends c1{static{o(this,"SimpleCache")}constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,r){this.throwIfDisposed(),this.cache.set(e,r)}get(e,r){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(r){let n=r();return this.cache.set(e,n),n}else return}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}},gp=class extends c1{static{o(this,"ContextCache")}constructor(e){super(),this.cache=new Map,this.converter=e??(r=>r)}has(e,r){return this.throwIfDisposed(),this.cacheForContext(e).has(r)}set(e,r,n){this.throwIfDisposed(),this.cacheForContext(e).set(r,n)}get(e,r,n){this.throwIfDisposed();let i=this.cacheForContext(e);if(i.has(r))return i.get(r);if(n){let a=n();return i.set(r,a),a}else return}delete(e,r){return this.throwIfDisposed(),this.cacheForContext(e).delete(r)}clear(e){if(this.throwIfDisposed(),e){let r=this.converter(e);this.cache.delete(r)}else this.cache.clear()}cacheForContext(e){let r=this.converter(e),n=this.cache.get(r);return n||(n=new Map,this.cache.set(r,n)),n}},vE=class extends gp{static{o(this,"DocumentCache")}constructor(e,r){super(n=>n.toString()),r?(this.toDispose.push(e.workspace.DocumentBuilder.onDocumentPhase(r,n=>{this.clear(n.uri.toString())})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{for(let a of i)this.clear(a)}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{let a=n.concat(i);for(let s of a)this.clear(s)}))}},u1=class extends Sx{static{o(this,"WorkspaceCache")}constructor(e,r){super(),r?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(r,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{i.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}}});var Cx,OM=M(()=>{"use strict";IM();rs();Ms();xE();Cx=class{static{o(this,"DefaultScopeProvider")}constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new u1(e.shared)}getScope(e){let r=[],n=this.reflection.getReferenceType(e),i=Ia(e.container).precomputedScopes;if(i){let s=e.container;do{let l=i.get(s);l.length>0&&r.push(en(l).filter(u=>this.reflection.isSubtype(u.type,n))),s=s.$container}while(s)}let a=this.getGlobalScope(n,e);for(let s=r.length-1;s>=0;s--)a=this.createScope(r[s],a);return a}createScope(e,r,n){return new l1(en(e),r,n)}createScopeForNodes(e,r,n){let i=en(e).map(a=>{let s=this.nameProvider.getName(a);if(s)return this.descriptions.createDescription(a,s)}).nonNullable();return new l1(i,r,n)}getGlobalScope(e,r){return this.globalScopeCache.get(e,()=>new Ex(this.indexManager.allElements(e)))}}});function PM(t){return typeof t.$comment=="string"}function Mle(t){return typeof t=="object"&&!!t&&("$ref"in t||"$error"in t)}var Ax,bE=M(()=>{"use strict";_M();_l();rs();Nl();o(PM,"isAstNodeWithComment");o(Mle,"isIntermediateReference");Ax=class{static{o(this,"DefaultJsonSerializer")}constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,r){let n=r??{},i=r?.replacer,a=o((l,u)=>this.replacer(l,u,n),"defaultReplacer"),s=i?(l,u)=>i(l,u,a):a;try{return this.currentDocument=Ia(e),JSON.stringify(e,s,r?.space)}finally{this.currentDocument=void 0}}deserialize(e,r){let n=r??{},i=JSON.parse(e);return this.linkNode(i,i,n),i}replacer(e,r,{refText:n,sourceText:i,textRegions:a,comments:s,uriConverter:l}){var u,h,f,d;if(!this.ignoreProperties.has(e))if(ma(r)){let p=r.ref,m=n?r.$refText:void 0;if(p){let g=Ia(p),y="";this.currentDocument&&this.currentDocument!==g&&(l?y=l(g.uri,r):y=g.uri.toString());let v=this.astNodeLocator.getAstNodePath(p);return{$ref:`${y}#${v}`,$refText:m}}else return{$error:(h=(u=r.error)===null||u===void 0?void 0:u.message)!==null&&h!==void 0?h:"Could not resolve reference",$refText:m}}else if(ii(r)){let p;if(a&&(p=this.addAstNodeRegionWithAssignmentsTo(Object.assign({},r)),(!e||r.$document)&&p?.$textRegion&&(p.$textRegion.documentURI=(f=this.currentDocument)===null||f===void 0?void 0:f.uri.toString())),i&&!e&&(p??(p=Object.assign({},r)),p.$sourceText=(d=r.$cstNode)===null||d===void 0?void 0:d.text),s){p??(p=Object.assign({},r));let m=this.commentProvider.getComment(r);m&&(p.$comment=m.replace(/\r/g,""))}return p??r}else return r}addAstNodeRegionWithAssignmentsTo(e){let r=o(n=>({offset:n.offset,end:n.end,length:n.length,range:n.range}),"createDocumentSegment");if(e.$cstNode){let n=e.$textRegion=r(e.$cstNode),i=n.assignments={};return Object.keys(e).filter(a=>!a.startsWith("$")).forEach(a=>{let s=eN(e.$cstNode,a).map(r);s.length!==0&&(i[a]=s)}),e}}linkNode(e,r,n,i,a,s){for(let[u,h]of Object.entries(e))if(Array.isArray(h))for(let f=0;f{"use strict";Bc();_x=class{static{o(this,"DefaultServiceRegistry")}get map(){return this.fileExtensionMap}constructor(e){this.languageIdMap=new Map,this.fileExtensionMap=new Map,this.textDocuments=e?.workspace.TextDocuments}register(e){let r=e.LanguageMetaData;for(let n of r.fileExtensions)this.fileExtensionMap.has(n)&&console.warn(`The file extension ${n} is used by multiple languages. It is now assigned to '${r.languageId}'.`),this.fileExtensionMap.set(n,e);this.languageIdMap.set(r.languageId,e),this.languageIdMap.size===1?this.singleton=e:this.singleton=void 0}getServices(e){var r,n;if(this.singleton!==void 0)return this.singleton;if(this.languageIdMap.size===0)throw new Error("The service registry is empty. Use `register` to register the services of a language.");let i=(n=(r=this.textDocuments)===null||r===void 0?void 0:r.get(e))===null||n===void 0?void 0:n.languageId;if(i!==void 0){let l=this.languageIdMap.get(i);if(l)return l}let a=cs.extname(e),s=this.fileExtensionMap.get(a);if(!s)throw i?new Error(`The service registry contains no services for the extension '${a}' for language '${i}'.`):new Error(`The service registry contains no services for the extension '${a}'.`);return s}hasServices(e){try{return this.getServices(e),!0}catch{return!1}}get all(){return Array.from(this.languageIdMap.values())}}});function yp(t){return{code:t}}var h1,Dx,Lx=M(()=>{"use strict";Ol();o1();Uo();Ms();o(yp,"diagnosticData");(function(t){t.all=["fast","slow","built-in"]})(h1||(h1={}));Dx=class{static{o(this,"ValidationRegistry")}constructor(e){this.entries=new Il,this.entriesBefore=[],this.entriesAfter=[],this.reflection=e.shared.AstReflection}register(e,r=this,n="fast"){if(n==="built-in")throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.");for(let[i,a]of Object.entries(e)){let s=a;if(Array.isArray(s))for(let l of s){let u={check:this.wrapValidationException(l,r),category:n};this.addEntry(i,u)}else if(typeof s=="function"){let l={check:this.wrapValidationException(s,r),category:n};this.addEntry(i,l)}else Dc(s)}}wrapValidationException(e,r){return async(n,i,a)=>{await this.handleException(()=>e.call(r,n,i,a),"An error occurred during validation",i,n)}}async handleException(e,r,n,i){try{await e()}catch(a){if(Pc(a))throw a;console.error(`${r}:`,a),a instanceof Error&&a.stack&&console.error(a.stack);let s=a instanceof Error?a.message:String(a);n("error",`${r}: ${s}`,{node:i})}}addEntry(e,r){if(e==="AstNode"){this.entries.add("AstNode",r);return}for(let n of this.reflection.getAllSubTypes(e))this.entries.add(n,r)}getChecks(e,r){let n=en(this.entries.get(e)).concat(this.entries.get("AstNode"));return r&&(n=n.filter(i=>r.includes(i.category))),n.map(i=>i.check)}registerBeforeDocument(e,r=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",r))}registerAfterDocument(e,r=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",r))}wrapPreparationException(e,r,n){return async(i,a,s,l)=>{await this.handleException(()=>e.call(n,i,a,s,l),r,a,i)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}}});function Ile(t){if(t.range)return t.range;let e;return typeof t.property=="string"?e=B2(t.node.$cstNode,t.property,t.index):typeof t.keyword=="string"&&(e=rN(t.node.$cstNode,t.keyword,t.index)),e??(e=t.node.$cstNode),e?e.range:{start:{line:0,character:0},end:{line:0,character:0}}}function wE(t){switch(t){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+t)}}function Ole(t){switch(t){case"error":return yp(Ho.LexingError);case"warning":return yp(Ho.LexingWarning);case"info":return yp(Ho.LexingInfo);case"hint":return yp(Ho.LexingHint);default:throw new Error("Invalid diagnostic severity: "+t)}}var Rx,Ho,FM=M(()=>{"use strict";Vo();Nl();rs();Dl();Uo();Lx();Rx=class{static{o(this,"DefaultDocumentValidator")}constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData}async validateDocument(e,r={},n=yr.CancellationToken.None){let i=e.parseResult,a=[];if(await gi(n),(!r.categories||r.categories.includes("built-in"))&&(this.processLexingErrors(i,a,r),r.stopAfterLexingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===Ho.LexingError})||(this.processParsingErrors(i,a,r),r.stopAfterParsingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===Ho.ParsingError}))||(this.processLinkingErrors(e,a,r),r.stopAfterLinkingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===Ho.LinkingError}))))return a;try{a.push(...await this.validateAst(i.value,r,n))}catch(s){if(Pc(s))throw s;console.error("An error occurred during validation:",s)}return await gi(n),a}processLexingErrors(e,r,n){var i,a,s;let l=[...e.lexerErrors,...(a=(i=e.lexerReport)===null||i===void 0?void 0:i.diagnostics)!==null&&a!==void 0?a:[]];for(let u of l){let h=(s=u.severity)!==null&&s!==void 0?s:"error",f={severity:wE(h),range:{start:{line:u.line-1,character:u.column-1},end:{line:u.line-1,character:u.column+u.length-1}},message:u.message,data:Ole(h),source:this.getSource()};r.push(f)}}processParsingErrors(e,r,n){for(let i of e.parserErrors){let a;if(isNaN(i.token.startOffset)){if("previousToken"in i){let s=i.previousToken;if(isNaN(s.startOffset)){let l={line:0,character:0};a={start:l,end:l}}else{let l={line:s.endLine-1,character:s.endColumn};a={start:l,end:l}}}}else a=Pm(i.token);if(a){let s={severity:wE("error"),range:a,message:i.message,data:yp(Ho.ParsingError),source:this.getSource()};r.push(s)}}}processLinkingErrors(e,r,n){for(let i of e.references){let a=i.error;if(a){let s={node:a.container,property:a.property,index:a.index,data:{code:Ho.LinkingError,containerType:a.container.$type,property:a.property,refText:a.reference.$refText}};r.push(this.toDiagnostic("error",a.message,s))}}}async validateAst(e,r,n=yr.CancellationToken.None){let i=[],a=o((s,l,u)=>{i.push(this.toDiagnostic(s,l,u))},"acceptor");return await this.validateAstBefore(e,r,a,n),await this.validateAstNodes(e,r,a,n),await this.validateAstAfter(e,r,a,n),i}async validateAstBefore(e,r,n,i=yr.CancellationToken.None){var a;let s=this.validationRegistry.checksBefore;for(let l of s)await gi(i),await l(e,n,(a=r.categories)!==null&&a!==void 0?a:[],i)}async validateAstNodes(e,r,n,i=yr.CancellationToken.None){await Promise.all($o(e).map(async a=>{await gi(i);let s=this.validationRegistry.getChecks(a.$type,r.categories);for(let l of s)await l(a,n,i)}))}async validateAstAfter(e,r,n,i=yr.CancellationToken.None){var a;let s=this.validationRegistry.checksAfter;for(let l of s)await gi(i),await l(e,n,(a=r.categories)!==null&&a!==void 0?a:[],i)}toDiagnostic(e,r,n){return{message:r,range:Ile(n),severity:wE(e),code:n.code,codeDescription:n.codeDescription,tags:n.tags,relatedInformation:n.relatedInformation,data:n.data,source:this.getSource()}}getSource(){return this.metadata.languageId}};o(Ile,"getDiagnosticRange");o(wE,"toDiagnosticSeverity");o(Ole,"toDiagnosticData");(function(t){t.LexingError="lexing-error",t.LexingWarning="lexing-warning",t.LexingInfo="lexing-info",t.LexingHint="lexing-hint",t.ParsingError="parsing-error",t.LinkingError="linking-error"})(Ho||(Ho={}))});var Nx,Mx,zM=M(()=>{"use strict";Vo();_l();rs();Dl();Uo();Bc();Nx=class{static{o(this,"DefaultAstNodeDescriptionProvider")}constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,r,n){let i=n??Ia(e);r??(r=this.nameProvider.getName(e));let a=this.astNodeLocator.getAstNodePath(e);if(!r)throw new Error(`Node at path ${a} has no name.`);let s,l=o(()=>{var u;return s??(s=Xd((u=this.nameProvider.getNameNode(e))!==null&&u!==void 0?u:e.$cstNode))},"nameSegmentGetter");return{node:e,name:r,get nameSegment(){return l()},selectionSegment:Xd(e.$cstNode),type:e.$type,documentUri:i.uri,path:a}}},Mx=class{static{o(this,"DefaultReferenceDescriptionProvider")}constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,r=yr.CancellationToken.None){let n=[],i=e.parseResult.value;for(let a of $o(i))await gi(r),Tg(a).filter(s=>!qd(s)).forEach(s=>{let l=this.createDescription(s);l&&n.push(l)});return n}createDescription(e){let r=e.reference.$nodeDescription,n=e.reference.$refNode;if(!r||!n)return;let i=Ia(e.container).uri;return{sourceUri:i,sourcePath:this.nodeLocator.getAstNodePath(e.container),targetUri:r.documentUri,targetPath:r.path,segment:Xd(n),local:cs.equals(r.documentUri,i)}}}});var Ix,GM=M(()=>{"use strict";Ix=class{static{o(this,"DefaultAstNodeLocator")}constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){let r=this.getAstNodePath(e.$container),n=this.getPathSegment(e);return r+this.segmentSeparator+n}return""}getPathSegment({$containerProperty:e,$containerIndex:r}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return r!==void 0?e+this.indexSeparator+r:e}getAstNode(e,r){return r.split(this.segmentSeparator).reduce((i,a)=>{if(!i||a.length===0)return i;let s=a.indexOf(this.indexSeparator);if(s>0){let l=a.substring(0,s),u=parseInt(a.substring(s+1)),h=i[l];return h?.[u]}return i[a]},e)}}});var Kn={};var TE=M(()=>{"use strict";Sr(Kn,Ta(kM(),1))});var Ox,$M=M(()=>{"use strict";TE();Uo();Ox=class{static{o(this,"DefaultConfigurationProvider")}constructor(e){this._ready=new os,this.settings={},this.workspaceConfig=!1,this.onConfigurationSectionUpdateEmitter=new Kn.Emitter,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){var r,n;this.workspaceConfig=(n=(r=e.capabilities.workspace)===null||r===void 0?void 0:r.configuration)!==null&&n!==void 0?n:!1}async initialized(e){if(this.workspaceConfig){if(e.register){let r=this.serviceRegistry.all;e.register({section:r.map(n=>this.toSectionName(n.LanguageMetaData.languageId))})}if(e.fetchConfiguration){let r=this.serviceRegistry.all.map(i=>({section:this.toSectionName(i.LanguageMetaData.languageId)})),n=await e.fetchConfiguration(r);r.forEach((i,a)=>{this.updateSectionConfiguration(i.section,n[a])})}}this._ready.resolve()}updateConfiguration(e){e.settings&&Object.keys(e.settings).forEach(r=>{let n=e.settings[r];this.updateSectionConfiguration(r,n),this.onConfigurationSectionUpdateEmitter.fire({section:r,configuration:n})})}updateSectionConfiguration(e,r){this.settings[e]=r}async getConfiguration(e,r){await this.ready;let n=this.toSectionName(e);if(this.settings[n])return this.settings[n][r]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}}});var lf,VM=M(()=>{"use strict";(function(t){function e(r){return{dispose:o(async()=>await r(),"dispose")}}o(e,"create"),t.create=e})(lf||(lf={}))});var Px,UM=M(()=>{"use strict";Vo();VM();o1();Uo();Ms();Lx();s1();Px=class{static{o(this,"DefaultDocumentBuilder")}constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new Il,this.documentPhaseListeners=new Il,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=kn.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.serviceRegistry=e.ServiceRegistry}async build(e,r={},n=yr.CancellationToken.None){var i,a;for(let s of e){let l=s.uri.toString();if(s.state===kn.Validated){if(typeof r.validation=="boolean"&&r.validation)s.state=kn.IndexedReferences,s.diagnostics=void 0,this.buildState.delete(l);else if(typeof r.validation=="object"){let u=this.buildState.get(l),h=(i=u?.result)===null||i===void 0?void 0:i.validationChecks;if(h){let d=((a=r.validation.categories)!==null&&a!==void 0?a:h1.all).filter(p=>!h.includes(p));d.length>0&&(this.buildState.set(l,{completed:!1,options:{validation:Object.assign(Object.assign({},r.validation),{categories:d})},result:u.result}),s.state=kn.IndexedReferences)}}}else this.buildState.delete(l)}this.currentState=kn.Changed,await this.emitUpdate(e.map(s=>s.uri),[]),await this.buildDocuments(e,r,n)}async update(e,r,n=yr.CancellationToken.None){this.currentState=kn.Changed;for(let s of r)this.langiumDocuments.deleteDocument(s),this.buildState.delete(s.toString()),this.indexManager.remove(s);for(let s of e){if(!this.langiumDocuments.invalidateDocument(s)){let u=this.langiumDocumentFactory.fromModel({$type:"INVALID"},s);u.state=kn.Changed,this.langiumDocuments.addDocument(u)}this.buildState.delete(s.toString())}let i=en(e).concat(r).map(s=>s.toString()).toSet();this.langiumDocuments.all.filter(s=>!i.has(s.uri.toString())&&this.shouldRelink(s,i)).forEach(s=>{this.serviceRegistry.getServices(s.uri).references.Linker.unlink(s),s.state=Math.min(s.state,kn.ComputedScopes),s.diagnostics=void 0}),await this.emitUpdate(e,r),await gi(n);let a=this.sortDocuments(this.langiumDocuments.all.filter(s=>{var l;return s.staten(e,r)))}sortDocuments(e){let r=0,n=e.length-1;for(;r=0&&!this.hasTextDocument(e[n]);)n--;rn.error!==void 0)?!0:this.indexManager.isAffected(e,r)}onUpdate(e){return this.updateListeners.push(e),lf.create(()=>{let r=this.updateListeners.indexOf(e);r>=0&&this.updateListeners.splice(r,1)})}async buildDocuments(e,r,n){this.prepareBuild(e,r),await this.runCancelable(e,kn.Parsed,n,a=>this.langiumDocumentFactory.update(a,n)),await this.runCancelable(e,kn.IndexedContent,n,a=>this.indexManager.updateContent(a,n)),await this.runCancelable(e,kn.ComputedScopes,n,async a=>{let s=this.serviceRegistry.getServices(a.uri).references.ScopeComputation;a.precomputedScopes=await s.computeLocalScopes(a,n)}),await this.runCancelable(e,kn.Linked,n,a=>this.serviceRegistry.getServices(a.uri).references.Linker.link(a,n)),await this.runCancelable(e,kn.IndexedReferences,n,a=>this.indexManager.updateReferences(a,n));let i=e.filter(a=>this.shouldValidate(a));await this.runCancelable(i,kn.Validated,n,a=>this.validate(a,n));for(let a of e){let s=this.buildState.get(a.uri.toString());s&&(s.completed=!0)}}prepareBuild(e,r){for(let n of e){let i=n.uri.toString(),a=this.buildState.get(i);(!a||a.completed)&&this.buildState.set(i,{completed:!1,options:r,result:a?.result})}}async runCancelable(e,r,n,i){let a=e.filter(l=>l.statel.state===r);await this.notifyBuildPhase(s,r,n),this.currentState=r}onBuildPhase(e,r){return this.buildPhaseListeners.add(e,r),lf.create(()=>{this.buildPhaseListeners.delete(e,r)})}onDocumentPhase(e,r){return this.documentPhaseListeners.add(e,r),lf.create(()=>{this.documentPhaseListeners.delete(e,r)})}waitUntil(e,r,n){let i;if(r&&"path"in r?i=r:n=r,n??(n=yr.CancellationToken.None),i){let a=this.langiumDocuments.getDocument(i);if(a&&a.state>e)return Promise.resolve(i)}return this.currentState>=e?Promise.resolve(void 0):n.isCancellationRequested?Promise.reject(Oc):new Promise((a,s)=>{let l=this.onBuildPhase(e,()=>{if(l.dispose(),u.dispose(),i){let h=this.langiumDocuments.getDocument(i);a(h?.uri)}else a(void 0)}),u=n.onCancellationRequested(()=>{l.dispose(),u.dispose(),s(Oc)})})}async notifyDocumentPhase(e,r,n){let a=this.documentPhaseListeners.get(r).slice();for(let s of a)try{await s(e,n)}catch(l){if(!Pc(l))throw l}}async notifyBuildPhase(e,r,n){if(e.length===0)return;let a=this.buildPhaseListeners.get(r).slice();for(let s of a)await gi(n),await s(e,n)}shouldValidate(e){return!!this.getBuildOptions(e).validation}async validate(e,r){var n,i;let a=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,s=this.getBuildOptions(e).validation,l=typeof s=="object"?s:void 0,u=await a.validateDocument(e,l,r);e.diagnostics?e.diagnostics.push(...u):e.diagnostics=u;let h=this.buildState.get(e.uri.toString());if(h){(n=h.result)!==null&&n!==void 0||(h.result={});let f=(i=l?.categories)!==null&&i!==void 0?i:h1.all;h.result.validationChecks?h.result.validationChecks.push(...f):h.result.validationChecks=[...f]}}getBuildOptions(e){var r,n;return(n=(r=this.buildState.get(e.uri.toString()))===null||r===void 0?void 0:r.options)!==null&&n!==void 0?n:{}}}});var Bx,HM=M(()=>{"use strict";rs();xE();Vo();Ms();Bc();Bx=class{static{o(this,"DefaultIndexManager")}constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new gp,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,r){let n=Ia(e).uri,i=[];return this.referenceIndex.forEach(a=>{a.forEach(s=>{cs.equals(s.targetUri,n)&&s.targetPath===r&&i.push(s)})}),en(i)}allElements(e,r){let n=en(this.symbolIndex.keys());return r&&(n=n.filter(i=>!r||r.has(i))),n.map(i=>this.getFileDescriptions(i,e)).flat()}getFileDescriptions(e,r){var n;return r?this.symbolByTypeIndex.get(e,r,()=>{var a;return((a=this.symbolIndex.get(e))!==null&&a!==void 0?a:[]).filter(l=>this.astReflection.isSubtype(l.type,r))}):(n=this.symbolIndex.get(e))!==null&&n!==void 0?n:[]}remove(e){let r=e.toString();this.symbolIndex.delete(r),this.symbolByTypeIndex.clear(r),this.referenceIndex.delete(r)}async updateContent(e,r=yr.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.computeExports(e,r),a=e.uri.toString();this.symbolIndex.set(a,i),this.symbolByTypeIndex.clear(a)}async updateReferences(e,r=yr.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e,r);this.referenceIndex.set(e.uri.toString(),i)}isAffected(e,r){let n=this.referenceIndex.get(e.uri.toString());return n?n.some(i=>!i.local&&r.has(i.targetUri.toString())):!1}}});var Fx,WM=M(()=>{"use strict";Vo();Uo();Bc();Fx=class{static{o(this,"DefaultWorkspaceManager")}constructor(e){this.initialBuildOptions={},this._ready=new os,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){var r;this.folders=(r=e.workspaceFolders)!==null&&r!==void 0?r:void 0}initialized(e){return this.mutex.write(r=>{var n;return this.initializeWorkspace((n=this.folders)!==null&&n!==void 0?n:[],r)})}async initializeWorkspace(e,r=yr.CancellationToken.None){let n=await this.performStartup(e);await gi(r),await this.documentBuilder.build(n,this.initialBuildOptions,r)}async performStartup(e){let r=this.serviceRegistry.all.flatMap(a=>a.LanguageMetaData.fileExtensions),n=[],i=o(a=>{n.push(a),this.langiumDocuments.hasDocument(a.uri)||this.langiumDocuments.addDocument(a)},"collector");return await this.loadAdditionalDocuments(e,i),await Promise.all(e.map(a=>[a,this.getRootFolder(a)]).map(async a=>this.traverseFolder(...a,r,i))),this._ready.resolve(),n}loadAdditionalDocuments(e,r){return Promise.resolve()}getRootFolder(e){return ls.parse(e.uri)}async traverseFolder(e,r,n,i){let a=await this.fileSystemProvider.readDirectory(r);await Promise.all(a.map(async s=>{if(this.includeEntry(e,s,n)){if(s.isDirectory)await this.traverseFolder(e,s.uri,n,i);else if(s.isFile){let l=await this.langiumDocuments.getOrCreateDocument(s.uri);i(l)}}}))}includeEntry(e,r,n){let i=cs.basename(r.uri);if(i.startsWith("."))return!1;if(r.isDirectory)return i!=="node_modules"&&i!=="out";if(r.isFile){let a=cs.extname(r.uri);return n.includes(a)}return!1}}});function EE(t){return Array.isArray(t)&&(t.length===0||"name"in t[0])}function YM(t){return t&&"modes"in t&&"defaultMode"in t}function qM(t){return!EE(t)&&!YM(t)}var zx,kE,vp,SE=M(()=>{"use strict";af();zx=class{static{o(this,"DefaultLexerErrorMessageProvider")}buildUnexpectedCharactersMessage(e,r,n,i,a){return Pg.buildUnexpectedCharactersMessage(e,r,n,i,a)}buildUnableToPopLexerModeMessage(e){return Pg.buildUnableToPopLexerModeMessage(e)}},kE={mode:"full"},vp=class{static{o(this,"DefaultLexer")}constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;let r=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(r);let n=qM(r)?Object.values(r):r,i=e.LanguageMetaData.mode==="production";this.chevrotainLexer=new Xn(n,{positionTracking:"full",skipValidations:i,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,r=kE){var n,i,a;let s=this.chevrotainLexer.tokenize(e);return{tokens:s.tokens,errors:s.errors,hidden:(n=s.groups.hidden)!==null&&n!==void 0?n:[],report:(a=(i=this.tokenBuilder).flushLexingReport)===null||a===void 0?void 0:a.call(i,e)}}toTokenTypeDictionary(e){if(qM(e))return e;let r=YM(e)?Object.values(e.modes).flat():e,n={};return r.forEach(i=>n[i.name]=i),n}};o(EE,"isTokenTypeArray");o(YM,"isIMultiModeLexerDefinition");o(qM,"isTokenTypeDictionary")});function KM(t,e,r){let n,i;typeof t=="string"?(i=e,n=r):(i=t.range.start,n=e),i||(i=Xr.create(0,0));let a=Fle(t),s=ZM(n),l=YBe({lines:a,position:i,options:s});return ZBe({index:0,tokens:l,position:i})}function QM(t,e){let r=ZM(e),n=Fle(t);if(n.length===0)return!1;let i=n[0],a=n[n.length-1],s=r.start,l=r.end;return!!s?.exec(i)&&!!l?.exec(a)}function Fle(t){let e="";return typeof t=="string"?e=t:e=t.text,e.split(qR)}function YBe(t){var e,r,n;let i=[],a=t.position.line,s=t.position.character;for(let l=0;l=f.length){if(i.length>0){let m=Xr.create(a,s);i.push({type:"break",content:"",range:Rr.create(m,m)})}}else{Ple.lastIndex=d;let m=Ple.exec(f);if(m){let g=m[0],y=m[1],v=Xr.create(a,s+d),x=Xr.create(a,s+d+g.length);i.push({type:"tag",content:y,range:Rr.create(v,x)}),d+=g.length,d=jM(f,d)}if(d0&&i[i.length-1].type==="break"?i.slice(0,-1):i}function XBe(t,e,r,n){let i=[];if(t.length===0){let a=Xr.create(r,n),s=Xr.create(r,n+e.length);i.push({type:"text",content:e,range:Rr.create(a,s)})}else{let a=0;for(let l of t){let u=l.index,h=e.substring(a,u);h.length>0&&i.push({type:"text",content:e.substring(a,u),range:Rr.create(Xr.create(r,a+n),Xr.create(r,u+n))});let f=h.length+1,d=l[1];if(i.push({type:"inline-tag",content:d,range:Rr.create(Xr.create(r,a+f+n),Xr.create(r,a+f+d.length+n))}),f+=d.length,l.length===4){f+=l[2].length;let p=l[3];i.push({type:"text",content:p,range:Rr.create(Xr.create(r,a+f+n),Xr.create(r,a+f+p.length+n))})}else i.push({type:"text",content:"",range:Rr.create(Xr.create(r,a+f+n),Xr.create(r,a+f+n))});a=u+l[0].length}let s=e.substring(a);s.length>0&&i.push({type:"text",content:s,range:Rr.create(Xr.create(r,a+n),Xr.create(r,a+n+s.length))})}return i}function jM(t,e){let r=t.substring(e).match(jBe);return r?e+r.index:t.length}function QBe(t){let e=t.match(KBe);if(e&&typeof e.index=="number")return e.index}function ZBe(t){var e,r,n,i;let a=Xr.create(t.position.line,t.position.character);if(t.tokens.length===0)return new CE([],Rr.create(a,a));let s=[];for(;t.index0){let u=jM(e,a);s=e.substring(u),e=e.substring(0,a)}return(t==="linkcode"||t==="link"&&r.link==="code")&&(s=`\`${s}\``),(i=(n=r.renderLink)===null||n===void 0?void 0:n.call(r,e,s))!==null&&i!==void 0?i:nFe(e,s)}}function nFe(t,e){try{return ls.parse(t,!0),`[${e}](${t})`}catch{return t}}function Ble(t){return t.endsWith(` `)?` `:` -`}var wce,Bze,Gze,$ze,Gk,ex,tx,$k,iI=M(()=>{"use strict";uM();Wm();Mc();o(tI,"parseJSDoc");o(rI,"isJSDoc");o(kce,"getLines");wce=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,Bze=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;o(Fze,"tokenize");o(zze,"buildInlineTokens");Gze=/\S/,$ze=/\s*$/;o(eI,"skipWhitespace");o(Vze,"lastCharacter");o(Uze,"parseJSDocComment");o(Hze,"parseJSDocElement");o(Wze,"appendEmptyLine");o(Ece,"parseJSDocText");o(Yze,"parseJSDocInline");o(Sce,"parseJSDocTag");o(Cce,"parseJSDocLine");o(nI,"normalizeOptions");o(JM,"normalizeOption");Gk=class{static{o(this,"JSDocCommentImpl")}constructor(e,r){this.elements=e,this.range=r}getTag(e){return this.getAllTags().find(r=>r.name===e)}getTags(e){return this.getAllTags().filter(r=>r.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(let r of this.elements)if(e.length===0)e=r.toString();else{let n=r.toString();e+=Tce(e)+n}return e.trim()}toMarkdown(e){let r="";for(let n of this.elements)if(r.length===0)r=n.toMarkdown(e);else{let i=n.toMarkdown(e);r+=Tce(r)+i}return r.trim()}},ex=class{static{o(this,"JSDocTagImpl")}constructor(e,r,n,i){this.name=e,this.content=r,this.inline=n,this.range=i}toString(){let e=`@${this.name}`,r=this.content.toString();return this.content.inlines.length===1?e=`${e} ${r}`:this.content.inlines.length>1&&(e=`${e} -${r}`),this.inline?`{${e}}`:e}toMarkdown(e){var r,n;return(n=(r=e?.renderTag)===null||r===void 0?void 0:r.call(e,this))!==null&&n!==void 0?n:this.toMarkdownDefault(e)}toMarkdownDefault(e){let r=this.content.toMarkdown(e);if(this.inline){let a=qze(this.name,r,e??{});if(typeof a=="string")return a}let n="";e?.tag==="italic"||e?.tag===void 0?n="*":e?.tag==="bold"?n="**":e?.tag==="bold-italic"&&(n="***");let i=`${n}@${this.name}${n}`;return this.content.inlines.length===1?i=`${i} \u2014 ${r}`:this.content.inlines.length>1&&(i=`${i} -${r}`),this.inline?`{${i}}`:i}};o(qze,"renderInlineTag");o(Xze,"renderLinkDefault");tx=class{static{o(this,"JSDocTextImpl")}constructor(e,r){this.inlines=e,this.range=r}toString(){let e="";for(let r=0;rn.range.start.line&&(e+=` +`}var Ple,qBe,jBe,KBe,CE,Gx,$x,AE,JM=M(()=>{"use strict";lM();Sg();Bc();o(KM,"parseJSDoc");o(QM,"isJSDoc");o(Fle,"getLines");Ple=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,qBe=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;o(YBe,"tokenize");o(XBe,"buildInlineTokens");jBe=/\S/,KBe=/\s*$/;o(jM,"skipWhitespace");o(QBe,"lastCharacter");o(ZBe,"parseJSDocComment");o(JBe,"parseJSDocElement");o(eFe,"appendEmptyLine");o(zle,"parseJSDocText");o(tFe,"parseJSDocInline");o(Gle,"parseJSDocTag");o($le,"parseJSDocLine");o(ZM,"normalizeOptions");o(XM,"normalizeOption");CE=class{static{o(this,"JSDocCommentImpl")}constructor(e,r){this.elements=e,this.range=r}getTag(e){return this.getAllTags().find(r=>r.name===e)}getTags(e){return this.getAllTags().filter(r=>r.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(let r of this.elements)if(e.length===0)e=r.toString();else{let n=r.toString();e+=Ble(e)+n}return e.trim()}toMarkdown(e){let r="";for(let n of this.elements)if(r.length===0)r=n.toMarkdown(e);else{let i=n.toMarkdown(e);r+=Ble(r)+i}return r.trim()}},Gx=class{static{o(this,"JSDocTagImpl")}constructor(e,r,n,i){this.name=e,this.content=r,this.inline=n,this.range=i}toString(){let e=`@${this.name}`,r=this.content.toString();return this.content.inlines.length===1?e=`${e} ${r}`:this.content.inlines.length>1&&(e=`${e} +${r}`),this.inline?`{${e}}`:e}toMarkdown(e){var r,n;return(n=(r=e?.renderTag)===null||r===void 0?void 0:r.call(e,this))!==null&&n!==void 0?n:this.toMarkdownDefault(e)}toMarkdownDefault(e){let r=this.content.toMarkdown(e);if(this.inline){let a=rFe(this.name,r,e??{});if(typeof a=="string")return a}let n="";e?.tag==="italic"||e?.tag===void 0?n="*":e?.tag==="bold"?n="**":e?.tag==="bold-italic"&&(n="***");let i=`${n}@${this.name}${n}`;return this.content.inlines.length===1?i=`${i} \u2014 ${r}`:this.content.inlines.length>1&&(i=`${i} +${r}`),this.inline?`{${i}}`:i}};o(rFe,"renderInlineTag");o(nFe,"renderLinkDefault");$x=class{static{o(this,"JSDocTextImpl")}constructor(e,r){this.inlines=e,this.range=r}toString(){let e="";for(let r=0;rn.range.start.line&&(e+=` `)}return e}toMarkdown(e){let r="";for(let n=0;ni.range.start.line&&(r+=` -`)}return r}},$k=class{static{o(this,"JSDocLineImpl")}constructor(e,r){this.text=e,this.range=r}toString(){return this.text}toMarkdown(){return this.text}};o(Tce,"fillNewlines")});var rx,aI=M(()=>{"use strict";es();iI();rx=class{static{o(this,"JSDocDocumentationProvider")}constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){let r=this.commentProvider.getComment(e);if(r&&rI(r))return tI(r).toMarkdown({renderLink:o((i,a)=>this.documentationLinkRenderer(e,i,a),"renderLink"),renderTag:o(i=>this.documentationTagRenderer(e,i),"renderTag")})}documentationLinkRenderer(e,r,n){var i;let a=(i=this.findNameInPrecomputedScopes(e,r))!==null&&i!==void 0?i:this.findNameInGlobalScope(e,r);if(a&&a.nameSegment){let s=a.nameSegment.range.start.line+1,l=a.nameSegment.range.start.character+1,u=a.documentUri.with({fragment:`L${s},${l}`});return`[${n}](${u.toString()})`}else return}documentationTagRenderer(e,r){}findNameInPrecomputedScopes(e,r){let i=Fi(e).precomputedScopes;if(!i)return;let a=e;do{let l=i.get(a).find(u=>u.name===r);if(l)return l;a=a.$container}while(a)}findNameInGlobalScope(e,r){return this.indexManager.allElements().find(i=>i.name===r)}}});var nx,sI=M(()=>{"use strict";Bk();Ml();nx=class{static{o(this,"DefaultCommentProvider")}constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){var r;return GM(e)?e.$comment:(r=BD(e.$cstNode,this.grammarConfig().multilineCommentRules))===null||r===void 0?void 0:r.text}}});var li={};var oI=M(()=>{"use strict";Er(li,ka(AM(),1))});var ix,lI,cI,uI=M(()=>{"use strict";Qo();oI();ix=class{static{o(this,"DefaultAsyncParser")}constructor(e){this.syncParser=e.parser.LangiumParser}parse(e){return Promise.resolve(this.syncParser.parse(e))}},lI=class{static{o(this,"AbstractThreadedAsyncParser")}constructor(e){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=e.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length{if(this.queue.length>0){let r=this.queue.shift();r&&(e.lock(),r.resolve(e))}}),this.workerPool.push(e)}}async parse(e,r){let n=await this.acquireParserWorker(r),i=new as,a,s=r.onCancellationRequested(()=>{a=setTimeout(()=>{this.terminateWorker(n)},this.terminationDelay)});return n.parse(e).then(l=>{let u=this.hydrator.hydrate(l);i.resolve(u)}).catch(l=>{i.reject(l)}).finally(()=>{s.dispose(),clearTimeout(a)}),i.promise}terminateWorker(e){e.terminate();let r=this.workerPool.indexOf(e);r>=0&&this.workerPool.splice(r,1)}async acquireParserWorker(e){this.initializeWorkers();for(let n of this.workerPool)if(n.ready)return n.lock(),n;let r=new as;return e.onCancellationRequested(()=>{let n=this.queue.indexOf(r);n>=0&&this.queue.splice(n,1),r.reject(Rc)}),this.queue.push(r),r.promise}},cI=class{static{o(this,"ParserWorker")}get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,r,n,i){this.onReadyEmitter=new li.Emitter,this.deferred=new as,this._ready=!0,this._parsing=!1,this.sendMessage=e,this._terminate=i,r(a=>{let s=a;this.deferred.resolve(s),this.unlock()}),n(a=>{this.deferred.reject(a),this.unlock()})}terminate(){this.deferred.reject(Rc),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(e){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new as,this.sendMessage(e),this.deferred.promise}}});var ax,hI=M(()=>{"use strict";Ko();Qo();ax=class{static{o(this,"DefaultWorkspaceLock")}constructor(){this.previousTokenSource=new Cr.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();let r=new Cr.CancellationTokenSource;return this.previousTokenSource=r,this.enqueue(this.writeQueue,e,r.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,r,n){let i=new as,a={action:r,deferred:i,cancellationToken:n??Cr.CancellationToken.None};return e.push(a),this.performNextOperation(),i.promise}async performNextOperation(){if(!this.done)return;let e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else if(this.readQueue.length>0)e.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(e.map(async({action:r,deferred:n,cancellationToken:i})=>{try{let a=await Promise.resolve().then(()=>r(i));n.resolve(a)}catch(a){sf(a)?n.resolve(void 0):n.reject(a)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}}});var sx,fI=M(()=>{"use strict";Ck();Ac();Yo();es();Sg();Ml();sx=class{static{o(this,"DefaultHydrator")}constructor(e){this.grammarElementIdMap=new p0,this.tokenTypeIdMap=new p0,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors.map(r=>Object.assign({},r)),parserErrors:e.parserErrors.map(r=>Object.assign({},r)),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}createDehyrationContext(e){let r=new Map,n=new Map;for(let i of jo(e))r.set(i,{});if(e.$cstNode)for(let i of Ud(e.$cstNode))n.set(i,{});return{astNodes:r,cstNodes:n}}dehydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode!==void 0&&(n.$cstNode=this.dehydrateCstNode(e.$cstNode,r));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(a)){let s=[];n[i]=s;for(let l of a)ei(l)?s.push(this.dehydrateAstNode(l,r)):ma(l)?s.push(this.dehydrateReference(l,r)):s.push(l)}else ei(a)?n[i]=this.dehydrateAstNode(a,r):ma(a)?n[i]=this.dehydrateReference(a,r):a!==void 0&&(n[i]=a);return n}dehydrateReference(e,r){let n={};return n.$refText=e.$refText,e.$refNode&&(n.$refNode=r.cstNodes.get(e.$refNode)),n}dehydrateCstNode(e,r){let n=r.cstNodes.get(e);return Gv(e)?n.fullText=e.fullText:n.grammarSource=this.getGrammarElementId(e.grammarSource),n.hidden=e.hidden,n.astNode=r.astNodes.get(e.astNode),io(e)?n.content=e.content.map(i=>this.dehydrateCstNode(i,r)):Jh(e)&&(n.tokenType=e.tokenType.name,n.offset=e.offset,n.length=e.length,n.startLine=e.range.start.line,n.startColumn=e.range.start.character,n.endLine=e.range.end.line,n.endColumn=e.range.end.character),n}hydrate(e){let r=e.value,n=this.createHydrationContext(r);return"$cstNode"in r&&this.hydrateCstNode(r.$cstNode,n),{lexerErrors:e.lexerErrors,parserErrors:e.parserErrors,value:this.hydrateAstNode(r,n)}}createHydrationContext(e){let r=new Map,n=new Map;for(let a of jo(e))r.set(a,{});let i;if(e.$cstNode)for(let a of Ud(e.$cstNode)){let s;"fullText"in a?(s=new vg(a.fullText),i=s):"content"in a?s=new u0:"tokenType"in a&&(s=this.hydrateCstLeafNode(a)),s&&(n.set(a,s),s.root=i)}return{astNodes:r,cstNodes:n}}hydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode&&(n.$cstNode=r.cstNodes.get(e.$cstNode));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(a)){let s=[];n[i]=s;for(let l of a)ei(l)?s.push(this.setParent(this.hydrateAstNode(l,r),n)):ma(l)?s.push(this.hydrateReference(l,n,i,r)):s.push(l)}else ei(a)?n[i]=this.setParent(this.hydrateAstNode(a,r),n):ma(a)?n[i]=this.hydrateReference(a,n,i,r):a!==void 0&&(n[i]=a);return n}setParent(e,r){return e.$container=r,e}hydrateReference(e,r,n,i){return this.linker.buildReference(r,n,i.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,r,n=0){let i=r.cstNodes.get(e);if(typeof e.grammarSource=="number"&&(i.grammarSource=this.getGrammarElement(e.grammarSource)),i.astNode=r.astNodes.get(e.astNode),io(i))for(let a of e.content){let s=this.hydrateCstNode(a,r,n++);i.content.push(s)}return i}hydrateCstLeafNode(e){let r=this.getTokenType(e.tokenType),n=e.offset,i=e.length,a=e.startLine,s=e.startColumn,l=e.endLine,u=e.endColumn,h=e.hidden;return new c0(n,i,{start:{line:a,character:s},end:{line:l,character:u}},r,h)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap();let r=this.grammarElementIdMap.getKey(e);if(r)return r;throw new Error("Invalid grammar element id: "+e)}createGrammarElementIdMap(){let e=0;for(let r of jo(this.grammar))Hv(r)&&this.grammarElementIdMap.set(r,e++)}}});function lo(t){return{documentation:{CommentProvider:o(e=>new nx(e),"CommentProvider"),DocumentationProvider:o(e=>new rx(e),"DocumentationProvider")},parser:{AsyncParser:o(e=>new ix(e),"AsyncParser"),GrammarConfig:o(e=>lR(e),"GrammarConfig"),LangiumParser:o(e=>vM(e),"LangiumParser"),CompletionParser:o(e=>gM(e),"CompletionParser"),ValueConverter:o(()=>new d0,"ValueConverter"),TokenBuilder:o(()=>new f0,"TokenBuilder"),Lexer:o(e=>new J2(e),"Lexer"),ParserErrorMessageProvider:o(()=>new xg,"ParserErrorMessageProvider")},workspace:{AstNodeLocator:o(()=>new X2,"AstNodeLocator"),AstNodeDescriptionProvider:o(e=>new Y2(e),"AstNodeDescriptionProvider"),ReferenceDescriptionProvider:o(e=>new q2(e),"ReferenceDescriptionProvider")},references:{Linker:o(e=>new I2(e),"Linker"),NameProvider:o(()=>new O2,"NameProvider"),ScopeProvider:o(e=>new G2(e),"ScopeProvider"),ScopeComputation:o(e=>new B2(e),"ScopeComputation"),References:o(e=>new P2(e),"References")},serializer:{Hydrator:o(e=>new sx(e),"Hydrator"),JsonSerializer:o(e=>new $2(e),"JsonSerializer")},validation:{DocumentValidator:o(e=>new W2(e),"DocumentValidator"),ValidationRegistry:o(e=>new U2(e),"ValidationRegistry")},shared:o(()=>t.shared,"shared")}}function co(t){return{ServiceRegistry:o(()=>new V2,"ServiceRegistry"),workspace:{LangiumDocuments:o(e=>new M2(e),"LangiumDocuments"),LangiumDocumentFactory:o(e=>new R2(e),"LangiumDocumentFactory"),DocumentBuilder:o(e=>new K2(e),"DocumentBuilder"),IndexManager:o(e=>new Q2(e),"IndexManager"),WorkspaceManager:o(e=>new Z2(e),"WorkspaceManager"),FileSystemProvider:o(e=>t.fileSystemProvider(e),"FileSystemProvider"),WorkspaceLock:o(()=>new ax,"WorkspaceLock"),ConfigurationProvider:o(e=>new j2(e),"ConfigurationProvider")}}}var dI=M(()=>{"use strict";cR();yM();xM();bM();wM();IM();OM();PM();BM();zM();Bk();$M();VM();H2();UM();HM();WM();qM();Eg();XM();jM();ZM();aI();sI();N2();uI();hI();fI();o(lo,"createDefaultCoreModule");o(co,"createDefaultSharedCoreModule")});function $i(t,e,r,n,i,a,s,l,u){let h=[t,e,r,n,i,a,s,l,u].reduce(Vk,{});return Dce(h)}function Lce(t){if(t&&t[mI])for(let e of Object.values(t))Lce(e);return t}function Dce(t,e){let r=new Proxy({},{deleteProperty:o(()=>!1,"deleteProperty"),get:o((n,i)=>_ce(n,i,t,e||r),"get"),getOwnPropertyDescriptor:o((n,i)=>(_ce(n,i,t,e||r),Object.getOwnPropertyDescriptor(n,i)),"getOwnPropertyDescriptor"),has:o((n,i)=>i in t,"has"),ownKeys:o(()=>[...Reflect.ownKeys(t),mI],"ownKeys")});return r[mI]=!0,r}function _ce(t,e,r,n){if(e in t){if(t[e]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable.",{cause:t[e]});if(t[e]===Ace)throw new Error('Cycle detected. Please make "'+String(e)+'" lazy. See https://langium.org/docs/configuration-services/#resolving-cyclic-dependencies');return t[e]}else if(e in r){let i=r[e];t[e]=Ace;try{t[e]=typeof i=="function"?i(n):Dce(i,n)}catch(a){throw t[e]=a instanceof Error?a:void 0,a}return t[e]}else return}function Vk(t,e){if(e){for(let[r,n]of Object.entries(e))if(n!==void 0){let i=t[r];i!==null&&n!==null&&typeof i=="object"&&typeof n=="object"?t[r]=Vk(i,n):t[r]=n}}return t}var pI,mI,Ace,gI=M(()=>{"use strict";(function(t){t.merge=(e,r)=>Vk(Vk({},e),r)})(pI||(pI={}));o($i,"inject");mI=Symbol("isProxy");o(Lce,"eagerLoad");o(Dce,"_inject");Ace=Symbol();o(_ce,"_resolve");o(Vk,"_merge")});var Nce=M(()=>{"use strict"});var Rce=M(()=>{"use strict";sI();aI();iI()});var Mce=M(()=>{"use strict"});var Ice=M(()=>{"use strict";cR();Mce()});var Oce=M(()=>{"use strict"});var Pce=M(()=>{"use strict";uI();yM();Ck();xM();N2();ZM();Oce();bM();wM()});var Bce=M(()=>{"use strict";IM();OM();PM();FM();BM();zM()});var Fce=M(()=>{"use strict";fI();Bk()});var Uk,uo,yI=M(()=>{"use strict";Uk=class{static{o(this,"EmptyFileSystemProvider")}readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}},uo={fileSystemProvider:o(()=>new Uk,"fileSystemProvider")}});function Qze(){let t=$i(co(uo),Kze),e=$i(lo({shared:t}),jze);return t.ServiceRegistry.register(e),e}function of(t){var e;let r=Qze(),n=r.serializer.JsonSerializer.deserialize(t);return r.shared.workspace.LangiumDocumentFactory.fromModel(n,Os.parse(`memory://${(e=n.name)!==null&&e!==void 0?e:"grammar"}.langium`)),n}var jze,Kze,zce=M(()=>{"use strict";dI();gI();Ac();yI();Mc();jze={Grammar:o(()=>{},"Grammar"),LanguageMetaData:o(()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"}),"LanguageMetaData")},Kze={AstReflection:o(()=>new Vm,"AstReflection")};o(Qze,"createMinimalGrammarServices");o(of,"loadGrammarFromJson")});var Gr={};vr(Gr,{AstUtils:()=>AT,BiMap:()=>p0,Cancellation:()=>Cr,ContextCache:()=>m0,CstUtils:()=>mT,DONE_RESULT:()=>Ja,Deferred:()=>as,Disposable:()=>g0,DisposableCache:()=>Ag,DocumentCache:()=>Ok,EMPTY_STREAM:()=>$v,ErrorWithLocation:()=>Wd,GrammarUtils:()=>MT,MultiMap:()=>Ic,OperationCancelled:()=>Rc,Reduction:()=>Gm,RegExpUtils:()=>NT,SimpleCache:()=>z2,StreamImpl:()=>ao,TreeStreamImpl:()=>Cc,URI:()=>Os,UriUtils:()=>ss,WorkspaceCache:()=>_g,assertUnreachable:()=>ef,delayNextTick:()=>NM,interruptAndCheck:()=>Gi,isOperationCancelled:()=>sf,loadGrammarFromJson:()=>of,setInterruptionPeriod:()=>hce,startCancelableOperation:()=>uce,stream:()=>tn});var Gce=M(()=>{"use strict";Pk();oI();Er(Gr,li);Sg();YM();gT();zce();Qo();Rs();Mc();es();Ko();Ml();Pl();Wm()});var $ce=M(()=>{"use strict";VM();H2()});var Vce=M(()=>{"use strict";UM();HM();WM();qM();Eg();yI();XM();hI();jM()});var ga={};vr(ga,{AbstractAstReflection:()=>$d,AbstractCstNode:()=>A2,AbstractLangiumParser:()=>_2,AbstractParserErrorMessageProvider:()=>_k,AbstractThreadedAsyncParser:()=>lI,AstUtils:()=>AT,BiMap:()=>p0,Cancellation:()=>Cr,CompositeCstNodeImpl:()=>u0,ContextCache:()=>m0,CstNodeBuilder:()=>C2,CstUtils:()=>mT,DONE_RESULT:()=>Ja,DatatypeSymbol:()=>Ak,DefaultAstNodeDescriptionProvider:()=>Y2,DefaultAstNodeLocator:()=>X2,DefaultAsyncParser:()=>ix,DefaultCommentProvider:()=>nx,DefaultConfigurationProvider:()=>j2,DefaultDocumentBuilder:()=>K2,DefaultDocumentValidator:()=>W2,DefaultHydrator:()=>sx,DefaultIndexManager:()=>Q2,DefaultJsonSerializer:()=>$2,DefaultLangiumDocumentFactory:()=>R2,DefaultLangiumDocuments:()=>M2,DefaultLexer:()=>J2,DefaultLinker:()=>I2,DefaultNameProvider:()=>O2,DefaultReferenceDescriptionProvider:()=>q2,DefaultReferences:()=>P2,DefaultScopeComputation:()=>B2,DefaultScopeProvider:()=>G2,DefaultServiceRegistry:()=>V2,DefaultTokenBuilder:()=>f0,DefaultValueConverter:()=>d0,DefaultWorkspaceLock:()=>ax,DefaultWorkspaceManager:()=>Z2,Deferred:()=>as,Disposable:()=>g0,DisposableCache:()=>Ag,DocumentCache:()=>Ok,DocumentState:()=>bn,DocumentValidator:()=>$u,EMPTY_SCOPE:()=>Pze,EMPTY_STREAM:()=>$v,EmptyFileSystem:()=>uo,EmptyFileSystemProvider:()=>Uk,ErrorWithLocation:()=>Wd,GrammarAST:()=>Yv,GrammarUtils:()=>MT,JSDocDocumentationProvider:()=>rx,LangiumCompletionParser:()=>D2,LangiumParser:()=>L2,LangiumParserErrorMessageProvider:()=>xg,LeafCstNodeImpl:()=>c0,MapScope:()=>F2,Module:()=>pI,MultiMap:()=>Ic,OperationCancelled:()=>Rc,ParserWorker:()=>cI,Reduction:()=>Gm,RegExpUtils:()=>NT,RootCstNodeImpl:()=>vg,SimpleCache:()=>z2,StreamImpl:()=>ao,StreamScope:()=>Cg,TextDocument:()=>Tg,TreeStreamImpl:()=>Cc,URI:()=>Os,UriUtils:()=>ss,ValidationCategory:()=>Lg,ValidationRegistry:()=>U2,ValueConverter:()=>Nc,WorkspaceCache:()=>_g,assertUnreachable:()=>ef,createCompletionParser:()=>gM,createDefaultCoreModule:()=>lo,createDefaultSharedCoreModule:()=>co,createGrammarConfig:()=>lR,createLangiumParser:()=>vM,delayNextTick:()=>NM,diagnosticData:()=>Fk,eagerLoad:()=>Lce,getDiagnosticRange:()=>xce,inject:()=>$i,interruptAndCheck:()=>Gi,isAstNode:()=>ei,isAstNodeDescription:()=>MD,isAstNodeWithComment:()=>GM,isCompositeCstNode:()=>io,isIMultiModeLexerDefinition:()=>QM,isJSDoc:()=>rI,isLeafCstNode:()=>Jh,isLinkingError:()=>Vd,isNamed:()=>yce,isOperationCancelled:()=>sf,isReference:()=>ma,isRootCstNode:()=>Gv,isTokenTypeArray:()=>bce,isTokenTypeDictionary:()=>KM,loadGrammarFromJson:()=>of,parseJSDoc:()=>tI,prepareLangiumParser:()=>nce,setInterruptionPeriod:()=>hce,startCancelableOperation:()=>uce,stream:()=>tn,toDiagnosticSeverity:()=>zk});var Oc=M(()=>{"use strict";dI();gI();$M();Nce();Yo();Rce();Ice();Pce();Bce();Fce();Gce();Er(ga,Gr);$ce();Vce();Ac()});function Kce(t){return Fl.isInstance(t,jce)}function Qce(t){return Fl.isInstance(t,vI)}function Zce(t){return Fl.isInstance(t,xI)}function Jce(t){return Fl.isInstance(t,tGe)}function eue(t){return Fl.isInstance(t,bI)}function rue(t){return Fl.isInstance(t,tue)}function nue(t){return Fl.isInstance(t,wI)}function aue(t){return Fl.isInstance(t,iue)}function oue(t){return Fl.isInstance(t,sue)}function cue(t){return Fl.isInstance(t,lue)}function hue(t){return Fl.isInstance(t,uue)}var Zze,Ot,Xce,jce,vI,Jze,eGe,xI,tGe,bI,tue,wI,iue,sue,lue,uue,rGe,fue,Fl,Uce,nGe,Hce,iGe,Wce,aGe,Yce,sGe,qce,oGe,lGe,cGe,uGe,hGe,fGe,zl,TI,kI,EI,SI,CI,dGe,pGe,mGe,gGe,Dg,y0,Zo,yGe,Jo=M(()=>{"use strict";Oc();Oc();Oc();Oc();Zze=Object.defineProperty,Ot=o((t,e)=>Zze(t,"name",{value:e,configurable:!0}),"__name"),Xce="Statement",jce="Architecture";o(Kce,"isArchitecture");Ot(Kce,"isArchitecture");vI="Branch";o(Qce,"isBranch");Ot(Qce,"isBranch");Jze="Checkout",eGe="CherryPicking",xI="Commit";o(Zce,"isCommit");Ot(Zce,"isCommit");tGe="Common";o(Jce,"isCommon");Ot(Jce,"isCommon");bI="GitGraph";o(eue,"isGitGraph");Ot(eue,"isGitGraph");tue="Info";o(rue,"isInfo");Ot(rue,"isInfo");wI="Merge";o(nue,"isMerge");Ot(nue,"isMerge");iue="Packet";o(aue,"isPacket");Ot(aue,"isPacket");sue="PacketBlock";o(oue,"isPacketBlock");Ot(oue,"isPacketBlock");lue="Pie";o(cue,"isPie");Ot(cue,"isPie");uue="PieSection";o(hue,"isPieSection");Ot(hue,"isPieSection");rGe="Direction",fue=class extends $d{static{o(this,"MermaidAstReflection")}static{Ot(this,"MermaidAstReflection")}getAllTypes(){return["Architecture","Branch","Checkout","CherryPicking","Commit","Common","Direction","Edge","GitGraph","Group","Info","Junction","Merge","Packet","PacketBlock","Pie","PieSection","Service","Statement"]}computeIsSubtype(t,e){switch(t){case vI:case Jze:case eGe:case xI:case wI:return this.isSubtype(Xce,e);case rGe:return this.isSubtype(bI,e);default:return!1}}getReferenceType(t){let e=`${t.container.$type}:${t.property}`;switch(e){default:throw new Error(`${e} is not a valid reference id.`)}}getTypeMetaData(t){switch(t){case"Architecture":return{name:"Architecture",properties:[{name:"accDescr"},{name:"accTitle"},{name:"edges",defaultValue:[]},{name:"groups",defaultValue:[]},{name:"junctions",defaultValue:[]},{name:"services",defaultValue:[]},{name:"title"}]};case"Branch":return{name:"Branch",properties:[{name:"name"},{name:"order"}]};case"Checkout":return{name:"Checkout",properties:[{name:"branch"}]};case"CherryPicking":return{name:"CherryPicking",properties:[{name:"id"},{name:"parent"},{name:"tags",defaultValue:[]}]};case"Commit":return{name:"Commit",properties:[{name:"id"},{name:"message"},{name:"tags",defaultValue:[]},{name:"type"}]};case"Common":return{name:"Common",properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case"Edge":return{name:"Edge",properties:[{name:"lhsDir"},{name:"lhsGroup",defaultValue:!1},{name:"lhsId"},{name:"lhsInto",defaultValue:!1},{name:"rhsDir"},{name:"rhsGroup",defaultValue:!1},{name:"rhsId"},{name:"rhsInto",defaultValue:!1},{name:"title"}]};case"GitGraph":return{name:"GitGraph",properties:[{name:"accDescr"},{name:"accTitle"},{name:"statements",defaultValue:[]},{name:"title"}]};case"Group":return{name:"Group",properties:[{name:"icon"},{name:"id"},{name:"in"},{name:"title"}]};case"Info":return{name:"Info",properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case"Junction":return{name:"Junction",properties:[{name:"id"},{name:"in"}]};case"Merge":return{name:"Merge",properties:[{name:"branch"},{name:"id"},{name:"tags",defaultValue:[]},{name:"type"}]};case"Packet":return{name:"Packet",properties:[{name:"accDescr"},{name:"accTitle"},{name:"blocks",defaultValue:[]},{name:"title"}]};case"PacketBlock":return{name:"PacketBlock",properties:[{name:"end"},{name:"label"},{name:"start"}]};case"Pie":return{name:"Pie",properties:[{name:"accDescr"},{name:"accTitle"},{name:"sections",defaultValue:[]},{name:"showData",defaultValue:!1},{name:"title"}]};case"PieSection":return{name:"PieSection",properties:[{name:"label"},{name:"value"}]};case"Service":return{name:"Service",properties:[{name:"icon"},{name:"iconText"},{name:"id"},{name:"in"},{name:"title"}]};case"Direction":return{name:"Direction",properties:[{name:"accDescr"},{name:"accTitle"},{name:"dir"},{name:"statements",defaultValue:[]},{name:"title"}]};default:return{name:t,properties:[]}}}},Fl=new fue,nGe=Ot(()=>Uce??(Uce=of('{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","name":"Info","entry":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"TitleAndAccessibilities","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EOL","fragment":true,"dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"InfoGrammar"),iGe=Ot(()=>Hce??(Hce=of(`{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","name":"Packet","entry":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"packet-beta"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"+"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"?"},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"TitleAndAccessibilities","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EOL","fragment":true,"dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}`)),"PacketGrammar"),aGe=Ot(()=>Wce??(Wce=of('{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","name":"Pie","entry":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"+"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"PIE_SECTION_LABEL","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]+\\"/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"PIE_SECTION_VALUE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/(0|[1-9][0-9]*)(\\\\.[0-9]+)?/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"TitleAndAccessibilities","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EOL","fragment":true,"dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"PieGrammar"),sGe=Ot(()=>Yce??(Yce=of('{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","name":"Architecture","entry":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","fragment":true,"definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LeftPort","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RightPort","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Arrow","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_ID","definition":{"$type":"RegexToken","regex":"/[\\\\w]+/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TEXT_ICON","definition":{"$type":"RegexToken","regex":"/\\\\(\\"[^\\"]+\\"\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[[\\\\w ]+\\\\]/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"TitleAndAccessibilities","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EOL","fragment":true,"dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"ArchitectureGrammar"),oGe=Ot(()=>qce??(qce=of(`{"$type":"Grammar","isDeclared":true,"name":"GitGraph","interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"rules":[{"$type":"ParserRule","name":"TitleAndAccessibilities","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EOL","fragment":true,"dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"ParserRule","name":"GitGraph","entry":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+(?=\\\\s)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[]}`)),"GitGraphGrammar"),lGe={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1},cGe={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1},uGe={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1},hGe={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1},fGe={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1},zl={AstReflection:Ot(()=>new fue,"AstReflection")},TI={Grammar:Ot(()=>nGe(),"Grammar"),LanguageMetaData:Ot(()=>lGe,"LanguageMetaData"),parser:{}},kI={Grammar:Ot(()=>iGe(),"Grammar"),LanguageMetaData:Ot(()=>cGe,"LanguageMetaData"),parser:{}},EI={Grammar:Ot(()=>aGe(),"Grammar"),LanguageMetaData:Ot(()=>uGe,"LanguageMetaData"),parser:{}},SI={Grammar:Ot(()=>sGe(),"Grammar"),LanguageMetaData:Ot(()=>hGe,"LanguageMetaData"),parser:{}},CI={Grammar:Ot(()=>oGe(),"Grammar"),LanguageMetaData:Ot(()=>fGe,"LanguageMetaData"),parser:{}},dGe=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,pGe=/accTitle[\t ]*:([^\n\r]*)/,mGe=/title([\t ][^\n\r]*|)/,gGe={ACC_DESCR:dGe,ACC_TITLE:pGe,TITLE:mGe},Dg=class extends d0{static{o(this,"AbstractMermaidValueConverter")}static{Ot(this,"AbstractMermaidValueConverter")}runConverter(t,e,r){let n=this.runCommonConverter(t,e,r);return n===void 0&&(n=this.runCustomConverter(t,e,r)),n===void 0?super.runConverter(t,e,r):n}runCommonConverter(t,e,r){let n=gGe[t.name];if(n===void 0)return;let i=n.exec(e);if(i!==null){if(i[1]!==void 0)return i[1].trim().replace(/[\t ]{2,}/gm," ");if(i[2]!==void 0)return i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,` -`)}}},y0=class extends Dg{static{o(this,"CommonValueConverter")}static{Ot(this,"CommonValueConverter")}runCustomConverter(t,e,r){}},Zo=class extends f0{static{o(this,"AbstractMermaidTokenBuilder")}static{Ot(this,"AbstractMermaidTokenBuilder")}constructor(t){super(),this.keywords=new Set(t)}buildKeywordTokens(t,e,r){let n=super.buildKeywordTokens(t,e,r);return n.forEach(i=>{this.keywords.has(i.name)&&i.PATTERN!==void 0&&(i.PATTERN=new RegExp(i.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),n}},yGe=class extends Zo{static{o(this,"CommonTokenBuilder")}static{Ot(this,"CommonTokenBuilder")}}});function Wk(t=uo){let e=$i(co(t),zl),r=$i(lo({shared:e}),CI,Hk);return e.ServiceRegistry.register(r),{shared:e,GitGraph:r}}var vGe,Hk,AI=M(()=>{"use strict";Jo();Oc();vGe=class extends Zo{static{o(this,"GitGraphTokenBuilder")}static{Ot(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},Hk={parser:{TokenBuilder:Ot(()=>new vGe,"TokenBuilder"),ValueConverter:Ot(()=>new y0,"ValueConverter")}};o(Wk,"createGitGraphServices");Ot(Wk,"createGitGraphServices")});function qk(t=uo){let e=$i(co(t),zl),r=$i(lo({shared:e}),TI,Yk);return e.ServiceRegistry.register(r),{shared:e,Info:r}}var xGe,Yk,_I=M(()=>{"use strict";Jo();Oc();xGe=class extends Zo{static{o(this,"InfoTokenBuilder")}static{Ot(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},Yk={parser:{TokenBuilder:Ot(()=>new xGe,"TokenBuilder"),ValueConverter:Ot(()=>new y0,"ValueConverter")}};o(qk,"createInfoServices");Ot(qk,"createInfoServices")});function jk(t=uo){let e=$i(co(t),zl),r=$i(lo({shared:e}),kI,Xk);return e.ServiceRegistry.register(r),{shared:e,Packet:r}}var bGe,Xk,LI=M(()=>{"use strict";Jo();Oc();bGe=class extends Zo{static{o(this,"PacketTokenBuilder")}static{Ot(this,"PacketTokenBuilder")}constructor(){super(["packet-beta"])}},Xk={parser:{TokenBuilder:Ot(()=>new bGe,"TokenBuilder"),ValueConverter:Ot(()=>new y0,"ValueConverter")}};o(jk,"createPacketServices");Ot(jk,"createPacketServices")});function Qk(t=uo){let e=$i(co(t),zl),r=$i(lo({shared:e}),EI,Kk);return e.ServiceRegistry.register(r),{shared:e,Pie:r}}var wGe,TGe,Kk,DI=M(()=>{"use strict";Jo();Oc();wGe=class extends Zo{static{o(this,"PieTokenBuilder")}static{Ot(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},TGe=class extends Dg{static{o(this,"PieValueConverter")}static{Ot(this,"PieValueConverter")}runCustomConverter(t,e,r){if(t.name==="PIE_SECTION_LABEL")return e.replace(/"/g,"").trim()}},Kk={parser:{TokenBuilder:Ot(()=>new wGe,"TokenBuilder"),ValueConverter:Ot(()=>new TGe,"ValueConverter")}};o(Qk,"createPieServices");Ot(Qk,"createPieServices")});function Jk(t=uo){let e=$i(co(t),zl),r=$i(lo({shared:e}),SI,Zk);return e.ServiceRegistry.register(r),{shared:e,Architecture:r}}var kGe,EGe,Zk,NI=M(()=>{"use strict";Jo();Oc();kGe=class extends Zo{static{o(this,"ArchitectureTokenBuilder")}static{Ot(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},EGe=class extends Dg{static{o(this,"ArchitectureValueConverter")}static{Ot(this,"ArchitectureValueConverter")}runCustomConverter(t,e,r){if(t.name==="ARCH_ICON")return e.replace(/[()]/g,"").trim();if(t.name==="ARCH_TEXT_ICON")return e.replace(/["()]/g,"");if(t.name==="ARCH_TITLE")return e.replace(/[[\]]/g,"").trim()}},Zk={parser:{TokenBuilder:Ot(()=>new kGe,"TokenBuilder"),ValueConverter:Ot(()=>new EGe,"ValueConverter")}};o(Jk,"createArchitectureServices");Ot(Jk,"createArchitectureServices")});var due={};vr(due,{InfoModule:()=>Yk,createInfoServices:()=>qk});var pue=M(()=>{"use strict";_I();Jo()});var mue={};vr(mue,{PacketModule:()=>Xk,createPacketServices:()=>jk});var gue=M(()=>{"use strict";LI();Jo()});var yue={};vr(yue,{PieModule:()=>Kk,createPieServices:()=>Qk});var vue=M(()=>{"use strict";DI();Jo()});var xue={};vr(xue,{ArchitectureModule:()=>Zk,createArchitectureServices:()=>Jk});var bue=M(()=>{"use strict";NI();Jo()});var wue={};vr(wue,{GitGraphModule:()=>Hk,createGitGraphServices:()=>Wk});var Tue=M(()=>{"use strict";AI();Jo()});async function Gl(t,e){let r=SGe[t];if(!r)throw new Error(`Unknown diagram type: ${t}`);v0[t]||await r();let i=v0[t].parse(e);if(i.lexerErrors.length>0||i.parserErrors.length>0)throw new CGe(i);return i.value}var v0,SGe,CGe,Ng=M(()=>{"use strict";AI();_I();LI();DI();NI();Jo();v0={},SGe={info:Ot(async()=>{let{createInfoServices:t}=await Promise.resolve().then(()=>(pue(),due)),e=t().Info.parser.LangiumParser;v0.info=e},"info"),packet:Ot(async()=>{let{createPacketServices:t}=await Promise.resolve().then(()=>(gue(),mue)),e=t().Packet.parser.LangiumParser;v0.packet=e},"packet"),pie:Ot(async()=>{let{createPieServices:t}=await Promise.resolve().then(()=>(vue(),yue)),e=t().Pie.parser.LangiumParser;v0.pie=e},"pie"),architecture:Ot(async()=>{let{createArchitectureServices:t}=await Promise.resolve().then(()=>(bue(),xue)),e=t().Architecture.parser.LangiumParser;v0.architecture=e},"architecture"),gitGraph:Ot(async()=>{let{createGitGraphServices:t}=await Promise.resolve().then(()=>(Tue(),wue)),e=t().GitGraph.parser.LangiumParser;v0.gitGraph=e},"gitGraph")};o(Gl,"parse");Ot(Gl,"parse");CGe=class extends Error{static{o(this,"MermaidParseError")}constructor(t){let e=t.lexerErrors.map(n=>n.message).join(` +`)}return r}},AE=class{static{o(this,"JSDocLineImpl")}constructor(e,r){this.text=e,this.range=r}toString(){return this.text}toMarkdown(){return this.text}};o(Ble,"fillNewlines")});var Vx,eI=M(()=>{"use strict";rs();JM();Vx=class{static{o(this,"JSDocDocumentationProvider")}constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){let r=this.commentProvider.getComment(e);if(r&&QM(r))return KM(r).toMarkdown({renderLink:o((i,a)=>this.documentationLinkRenderer(e,i,a),"renderLink"),renderTag:o(i=>this.documentationTagRenderer(e,i),"renderTag")})}documentationLinkRenderer(e,r,n){var i;let a=(i=this.findNameInPrecomputedScopes(e,r))!==null&&i!==void 0?i:this.findNameInGlobalScope(e,r);if(a&&a.nameSegment){let s=a.nameSegment.range.start.line+1,l=a.nameSegment.range.start.character+1,u=a.documentUri.with({fragment:`L${s},${l}`});return`[${n}](${u.toString()})`}else return}documentationTagRenderer(e,r){}findNameInPrecomputedScopes(e,r){let i=Ia(e).precomputedScopes;if(!i)return;let a=e;do{let l=i.get(a).find(u=>u.name===r);if(l)return l;a=a.$container}while(a)}findNameInGlobalScope(e,r){return this.indexManager.allElements().find(i=>i.name===r)}}});var Ux,tI=M(()=>{"use strict";bE();Dl();Ux=class{static{o(this,"DefaultCommentProvider")}constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){var r;return PM(e)?e.$comment:(r=bR(e.$cstNode,this.grammarConfig().multilineCommentRules))===null||r===void 0?void 0:r.text}}});var Hx,rI,nI,iI=M(()=>{"use strict";Uo();TE();Hx=class{static{o(this,"DefaultAsyncParser")}constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,r){return Promise.resolve(this.syncParser.parse(e))}},rI=class{static{o(this,"AbstractThreadedAsyncParser")}constructor(e){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=e.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length{if(this.queue.length>0){let r=this.queue.shift();r&&(e.lock(),r.resolve(e))}}),this.workerPool.push(e)}}async parse(e,r){let n=await this.acquireParserWorker(r),i=new os,a,s=r.onCancellationRequested(()=>{a=setTimeout(()=>{this.terminateWorker(n)},this.terminationDelay)});return n.parse(e).then(l=>{let u=this.hydrator.hydrate(l);i.resolve(u)}).catch(l=>{i.reject(l)}).finally(()=>{s.dispose(),clearTimeout(a)}),i.promise}terminateWorker(e){e.terminate();let r=this.workerPool.indexOf(e);r>=0&&this.workerPool.splice(r,1)}async acquireParserWorker(e){this.initializeWorkers();for(let n of this.workerPool)if(n.ready)return n.lock(),n;let r=new os;return e.onCancellationRequested(()=>{let n=this.queue.indexOf(r);n>=0&&this.queue.splice(n,1),r.reject(Oc)}),this.queue.push(r),r.promise}},nI=class{static{o(this,"ParserWorker")}get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,r,n,i){this.onReadyEmitter=new Kn.Emitter,this.deferred=new os,this._ready=!0,this._parsing=!1,this.sendMessage=e,this._terminate=i,r(a=>{let s=a;this.deferred.resolve(s),this.unlock()}),n(a=>{this.deferred.reject(a),this.unlock()})}terminate(){this.deferred.reject(Oc),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(e){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new os,this.sendMessage(e),this.deferred.promise}}});var Wx,aI=M(()=>{"use strict";Vo();Uo();Wx=class{static{o(this,"DefaultWorkspaceLock")}constructor(){this.previousTokenSource=new yr.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();let r=gE();return this.previousTokenSource=r,this.enqueue(this.writeQueue,e,r.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,r,n=yr.CancellationToken.None){let i=new os,a={action:r,deferred:i,cancellationToken:n};return e.push(a),this.performNextOperation(),i.promise}async performNextOperation(){if(!this.done)return;let e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else if(this.readQueue.length>0)e.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(e.map(async({action:r,deferred:n,cancellationToken:i})=>{try{let a=await Promise.resolve().then(()=>r(i));n.resolve(a)}catch(a){Pc(a)?n.resolve(void 0):n.reject(a)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}}});var qx,sI=M(()=>{"use strict";sE();Lc();_l();rs();o1();Dl();qx=class{static{o(this,"DefaultHydrator")}constructor(e){this.grammarElementIdMap=new mp,this.tokenTypeIdMap=new mp,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(r=>Object.assign(Object.assign({},r),{message:r.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){let r=new Map,n=new Map;for(let i of $o(e))r.set(i,{});if(e.$cstNode)for(let i of Yd(e.$cstNode))n.set(i,{});return{astNodes:r,cstNodes:n}}dehydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode!==void 0&&(n.$cstNode=this.dehydrateCstNode(e.$cstNode,r));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(a)){let s=[];n[i]=s;for(let l of a)ii(l)?s.push(this.dehydrateAstNode(l,r)):ma(l)?s.push(this.dehydrateReference(l,r)):s.push(l)}else ii(a)?n[i]=this.dehydrateAstNode(a,r):ma(a)?n[i]=this.dehydrateReference(a,r):a!==void 0&&(n[i]=a);return n}dehydrateReference(e,r){let n={};return n.$refText=e.$refText,e.$refNode&&(n.$refNode=r.cstNodes.get(e.$refNode)),n}dehydrateCstNode(e,r){let n=r.cstNodes.get(e);return x2(e)?n.fullText=e.fullText:n.grammarSource=this.getGrammarElementId(e.grammarSource),n.hidden=e.hidden,n.astNode=r.astNodes.get(e.astNode),Al(e)?n.content=e.content.map(i=>this.dehydrateCstNode(i,r)):ef(e)&&(n.tokenType=e.tokenType.name,n.offset=e.offset,n.length=e.length,n.startLine=e.range.start.line,n.startColumn=e.range.start.character,n.endLine=e.range.end.line,n.endColumn=e.range.end.character),n}hydrate(e){let r=e.value,n=this.createHydrationContext(r);return"$cstNode"in r&&this.hydrateCstNode(r.$cstNode,n),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(r,n)}}createHydrationContext(e){let r=new Map,n=new Map;for(let a of $o(e))r.set(a,{});let i;if(e.$cstNode)for(let a of Yd(e.$cstNode)){let s;"fullText"in a?(s=new e1(a.fullText),i=s):"content"in a?s=new fp:"tokenType"in a&&(s=this.hydrateCstLeafNode(a)),s&&(n.set(a,s),s.root=i)}return{astNodes:r,cstNodes:n}}hydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode&&(n.$cstNode=r.cstNodes.get(e.$cstNode));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(a)){let s=[];n[i]=s;for(let l of a)ii(l)?s.push(this.setParent(this.hydrateAstNode(l,r),n)):ma(l)?s.push(this.hydrateReference(l,n,i,r)):s.push(l)}else ii(a)?n[i]=this.setParent(this.hydrateAstNode(a,r),n):ma(a)?n[i]=this.hydrateReference(a,n,i,r):a!==void 0&&(n[i]=a);return n}setParent(e,r){return e.$container=r,e}hydrateReference(e,r,n,i){return this.linker.buildReference(r,n,i.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,r,n=0){let i=r.cstNodes.get(e);if(typeof e.grammarSource=="number"&&(i.grammarSource=this.getGrammarElement(e.grammarSource)),i.astNode=r.astNodes.get(e.astNode),Al(i))for(let a of e.content){let s=this.hydrateCstNode(a,r,n++);i.content.push(s)}return i}hydrateCstLeafNode(e){let r=this.getTokenType(e.tokenType),n=e.offset,i=e.length,a=e.startLine,s=e.startColumn,l=e.endLine,u=e.endColumn,h=e.hidden;return new hp(n,i,{start:{line:a,character:s},end:{line:l,character:u}},r,h)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(let r of $o(this.grammar))A2(r)&&this.grammarElementIdMap.set(r,e++)}}});function io(t){return{documentation:{CommentProvider:o(e=>new Ux(e),"CommentProvider"),DocumentationProvider:o(e=>new Vx(e),"DocumentationProvider")},parser:{AsyncParser:o(e=>new Hx(e),"AsyncParser"),GrammarConfig:o(e=>oN(e),"GrammarConfig"),LangiumParser:o(e=>mM(e),"LangiumParser"),CompletionParser:o(e=>dM(e),"CompletionParser"),ValueConverter:o(()=>new pp,"ValueConverter"),TokenBuilder:o(()=>new $u,"TokenBuilder"),Lexer:o(e=>new vp(e),"Lexer"),ParserErrorMessageProvider:o(()=>new t1,"ParserErrorMessageProvider"),LexerErrorMessageProvider:o(()=>new zx,"LexerErrorMessageProvider")},workspace:{AstNodeLocator:o(()=>new Ix,"AstNodeLocator"),AstNodeDescriptionProvider:o(e=>new Nx(e),"AstNodeDescriptionProvider"),ReferenceDescriptionProvider:o(e=>new Mx(e),"ReferenceDescriptionProvider")},references:{Linker:o(e=>new bx(e),"Linker"),NameProvider:o(()=>new wx,"NameProvider"),ScopeProvider:o(e=>new Cx(e),"ScopeProvider"),ScopeComputation:o(e=>new kx(e),"ScopeComputation"),References:o(e=>new Tx(e),"References")},serializer:{Hydrator:o(e=>new qx(e),"Hydrator"),JsonSerializer:o(e=>new Ax(e),"JsonSerializer")},validation:{DocumentValidator:o(e=>new Rx(e),"DocumentValidator"),ValidationRegistry:o(e=>new Dx(e),"ValidationRegistry")},shared:o(()=>t.shared,"shared")}}function ao(t){return{ServiceRegistry:o(e=>new _x(e),"ServiceRegistry"),workspace:{LangiumDocuments:o(e=>new xx(e),"LangiumDocuments"),LangiumDocumentFactory:o(e=>new vx(e),"LangiumDocumentFactory"),DocumentBuilder:o(e=>new Px(e),"DocumentBuilder"),IndexManager:o(e=>new Bx(e),"IndexManager"),WorkspaceManager:o(e=>new Fx(e),"WorkspaceManager"),FileSystemProvider:o(e=>t.fileSystemProvider(e),"FileSystemProvider"),WorkspaceLock:o(()=>new Wx,"WorkspaceLock"),ConfigurationProvider:o(e=>new Ox(e),"ConfigurationProvider")}}}var oI=M(()=>{"use strict";lN();pM();gM();hE();yM();LM();RM();NM();MM();OM();bE();BM();FM();Lx();zM();GM();$M();UM();s1();HM();WM();SE();eI();tI();gx();iI();aI();sI();o(io,"createDefaultCoreModule");o(ao,"createDefaultSharedCoreModule")});function zi(t,e,r,n,i,a,s,l,u){let h=[t,e,r,n,i,a,s,l,u].reduce(_E,{});return qle(h)}function Wle(t){if(t&&t[Hle])for(let e of Object.values(t))Wle(e);return t}function qle(t,e){let r=new Proxy({},{deleteProperty:o(()=>!1,"deleteProperty"),set:o(()=>{throw new Error("Cannot set property on injected service container")},"set"),get:o((n,i)=>i===Hle?!0:Ule(n,i,t,e||r),"get"),getOwnPropertyDescriptor:o((n,i)=>(Ule(n,i,t,e||r),Object.getOwnPropertyDescriptor(n,i)),"getOwnPropertyDescriptor"),has:o((n,i)=>i in t,"has"),ownKeys:o(()=>[...Object.getOwnPropertyNames(t)],"ownKeys")});return r}function Ule(t,e,r,n){if(e in t){if(t[e]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable.",{cause:t[e]});if(t[e]===Vle)throw new Error('Cycle detected. Please make "'+String(e)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return t[e]}else if(e in r){let i=r[e];t[e]=Vle;try{t[e]=typeof i=="function"?i(n):qle(i,n)}catch(a){throw t[e]=a instanceof Error?a:void 0,a}return t[e]}else return}function _E(t,e){if(e){for(let[r,n]of Object.entries(e))if(n!==void 0){let i=t[r];i!==null&&n!==null&&typeof i=="object"&&typeof n=="object"?t[r]=_E(i,n):t[r]=n}}return t}var lI,Hle,Vle,cI=M(()=>{"use strict";(function(t){t.merge=(e,r)=>_E(_E({},e),r)})(lI||(lI={}));o(zi,"inject");Hle=Symbol("isProxy");o(Wle,"eagerLoad");o(qle,"_inject");Vle=Symbol();o(Ule,"_resolve");o(_E,"_merge")});var Yle=M(()=>{"use strict"});var Xle=M(()=>{"use strict";tI();eI();JM()});var jle=M(()=>{"use strict"});var Kle=M(()=>{"use strict";lN();jle()});var uI,xp,DE,hI,Qle=M(()=>{"use strict";af();hE();SE();uI={indentTokenName:"INDENT",dedentTokenName:"DEDENT",whitespaceTokenName:"WS",ignoreIndentationDelimiters:[]};(function(t){t.REGULAR="indentation-sensitive",t.IGNORE_INDENTATION="ignore-indentation"})(xp||(xp={}));DE=class extends $u{static{o(this,"IndentationAwareTokenBuilder")}constructor(e=uI){super(),this.indentationStack=[0],this.whitespaceRegExp=/[ \t]+/y,this.options=Object.assign(Object.assign({},uI),e),this.indentTokenType=rf({name:this.options.indentTokenName,pattern:this.indentMatcher.bind(this),line_breaks:!1}),this.dedentTokenType=rf({name:this.options.dedentTokenName,pattern:this.dedentMatcher.bind(this),line_breaks:!1})}buildTokens(e,r){let n=super.buildTokens(e,r);if(!EE(n))throw new Error("Invalid tokens built by default builder");let{indentTokenName:i,dedentTokenName:a,whitespaceTokenName:s,ignoreIndentationDelimiters:l}=this.options,u,h,f,d=[];for(let p of n){for(let[m,g]of l)p.name===m?p.PUSH_MODE=xp.IGNORE_INDENTATION:p.name===g&&(p.POP_MODE=!0);p.name===a?u=p:p.name===i?h=p:p.name===s?f=p:d.push(p)}if(!u||!h||!f)throw new Error("Some indentation/whitespace tokens not found!");return l.length>0?{modes:{[xp.REGULAR]:[u,h,...d,f],[xp.IGNORE_INDENTATION]:[...d,f]},defaultMode:xp.REGULAR}:[u,h,f,...d]}flushLexingReport(e){let r=super.flushLexingReport(e);return Object.assign(Object.assign({},r),{remainingDedents:this.flushRemainingDedents(e)})}isStartOfLine(e,r){return r===0||`\r +`.includes(e[r-1])}matchWhitespace(e,r,n,i){var a;this.whitespaceRegExp.lastIndex=r;let s=this.whitespaceRegExp.exec(e);return{currIndentLevel:(a=s?.[0].length)!==null&&a!==void 0?a:0,prevIndentLevel:this.indentationStack.at(-1),match:s}}createIndentationTokenInstance(e,r,n,i){let a=this.getLineNumber(r,i);return Bu(e,n,i,i+n.length,a,a,1,n.length)}getLineNumber(e,r){return e.substring(0,r).split(/\r\n|\r|\n/).length}indentMatcher(e,r,n,i){if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:a,prevIndentLevel:s,match:l}=this.matchWhitespace(e,r,n,i);return a<=s?null:(this.indentationStack.push(a),l)}dedentMatcher(e,r,n,i){var a,s,l,u;if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:h,prevIndentLevel:f,match:d}=this.matchWhitespace(e,r,n,i);if(h>=f)return null;let p=this.indentationStack.lastIndexOf(h);if(p===-1)return this.diagnostics.push({severity:"error",message:`Invalid dedent level ${h} at offset: ${r}. Current indentation stack: ${this.indentationStack}`,offset:r,length:(s=(a=d?.[0])===null||a===void 0?void 0:a.length)!==null&&s!==void 0?s:0,line:this.getLineNumber(e,r),column:1}),null;let m=this.indentationStack.length-p-1,g=(u=(l=e.substring(0,r).match(/[\r\n]+$/))===null||l===void 0?void 0:l[0].length)!==null&&u!==void 0?u:1;for(let y=0;y1;)r.push(this.createIndentationTokenInstance(this.dedentTokenType,e,"",e.length)),this.indentationStack.pop();return this.indentationStack=[0],r}},hI=class extends vp{static{o(this,"IndentationAwareLexer")}constructor(e){if(super(e),e.parser.TokenBuilder instanceof DE)this.indentationTokenBuilder=e.parser.TokenBuilder;else throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder")}tokenize(e,r=kE){let n=super.tokenize(e),i=n.report;r?.mode==="full"&&n.tokens.push(...i.remainingDedents),i.remainingDedents=[];let{indentTokenType:a,dedentTokenType:s}=this.indentationTokenBuilder,l=a.tokenTypeIdx,u=s.tokenTypeIdx,h=[],f=n.tokens.length-1;for(let d=0;d=0&&h.push(n.tokens[f]),n.tokens=h,n}}});var Zle=M(()=>{"use strict"});var Jle=M(()=>{"use strict";iI();pM();sE();Qle();gM();gx();SE();uE();Zle();hE();yM()});var ece=M(()=>{"use strict";LM();RM();NM();IM();MM();OM()});var tce=M(()=>{"use strict";sI();bE()});var LE,so,fI=M(()=>{"use strict";LE=class{static{o(this,"EmptyFileSystemProvider")}readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}},so={fileSystemProvider:o(()=>new LE,"fileSystemProvider")}});function sFe(){let t=zi(ao(so),aFe),e=zi(io({shared:t}),iFe);return t.ServiceRegistry.register(e),e}function cf(t){var e;let r=sFe(),n=r.serializer.JsonSerializer.deserialize(t);return r.shared.workspace.LangiumDocumentFactory.fromModel(n,ls.parse(`memory://${(e=n.name)!==null&&e!==void 0?e:"grammar"}.langium`)),n}var iFe,aFe,rce=M(()=>{"use strict";oI();cI();Lc();fI();Bc();iFe={Grammar:o(()=>{},"Grammar"),LanguageMetaData:o(()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"}),"LanguageMetaData")},aFe={AstReflection:o(()=>new wg,"AstReflection")};o(sFe,"createMinimalGrammarServices");o(cf,"loadGrammarFromJson")});var Gr={};pr(Gr,{AstUtils:()=>ck,BiMap:()=>mp,Cancellation:()=>yr,ContextCache:()=>gp,CstUtils:()=>JT,DONE_RESULT:()=>Na,Deferred:()=>os,Disposable:()=>lf,DisposableCache:()=>c1,DocumentCache:()=>vE,EMPTY_STREAM:()=>b2,ErrorWithLocation:()=>jd,GrammarUtils:()=>pk,MultiMap:()=>Il,OperationCancelled:()=>Oc,Reduction:()=>Om,RegExpUtils:()=>fk,SimpleCache:()=>Sx,StreamImpl:()=>eo,TreeStreamImpl:()=>Ac,URI:()=>ls,UriUtils:()=>cs,WorkspaceCache:()=>u1,assertUnreachable:()=>Dc,delayNextTick:()=>CM,interruptAndCheck:()=>gi,isOperationCancelled:()=>Pc,loadGrammarFromJson:()=>cf,setInterruptionPeriod:()=>Cle,startCancelableOperation:()=>gE,stream:()=>en});var nce=M(()=>{"use strict";xE();TE();Sr(Gr,Kn);o1();VM();ek();rce();Uo();Ms();Bc();rs();Vo();Dl();Nl();Sg()});var ice=M(()=>{"use strict";FM();Lx()});var ace=M(()=>{"use strict";zM();GM();$M();UM();s1();fI();HM();aI();WM()});var ga={};pr(ga,{AbstractAstReflection:()=>Wd,AbstractCstNode:()=>fx,AbstractLangiumParser:()=>dx,AbstractParserErrorMessageProvider:()=>lE,AbstractThreadedAsyncParser:()=>rI,AstUtils:()=>ck,BiMap:()=>mp,Cancellation:()=>yr,CompositeCstNodeImpl:()=>fp,ContextCache:()=>gp,CstNodeBuilder:()=>hx,CstUtils:()=>JT,DEFAULT_TOKENIZE_OPTIONS:()=>kE,DONE_RESULT:()=>Na,DatatypeSymbol:()=>oE,DefaultAstNodeDescriptionProvider:()=>Nx,DefaultAstNodeLocator:()=>Ix,DefaultAsyncParser:()=>Hx,DefaultCommentProvider:()=>Ux,DefaultConfigurationProvider:()=>Ox,DefaultDocumentBuilder:()=>Px,DefaultDocumentValidator:()=>Rx,DefaultHydrator:()=>qx,DefaultIndexManager:()=>Bx,DefaultJsonSerializer:()=>Ax,DefaultLangiumDocumentFactory:()=>vx,DefaultLangiumDocuments:()=>xx,DefaultLexer:()=>vp,DefaultLexerErrorMessageProvider:()=>zx,DefaultLinker:()=>bx,DefaultNameProvider:()=>wx,DefaultReferenceDescriptionProvider:()=>Mx,DefaultReferences:()=>Tx,DefaultScopeComputation:()=>kx,DefaultScopeProvider:()=>Cx,DefaultServiceRegistry:()=>_x,DefaultTokenBuilder:()=>$u,DefaultValueConverter:()=>pp,DefaultWorkspaceLock:()=>Wx,DefaultWorkspaceManager:()=>Fx,Deferred:()=>os,Disposable:()=>lf,DisposableCache:()=>c1,DocumentCache:()=>vE,DocumentState:()=>kn,DocumentValidator:()=>Ho,EMPTY_SCOPE:()=>WBe,EMPTY_STREAM:()=>b2,EmptyFileSystem:()=>so,EmptyFileSystemProvider:()=>LE,ErrorWithLocation:()=>jd,GrammarAST:()=>D2,GrammarUtils:()=>pk,IndentationAwareLexer:()=>hI,IndentationAwareTokenBuilder:()=>DE,JSDocDocumentationProvider:()=>Vx,LangiumCompletionParser:()=>mx,LangiumParser:()=>px,LangiumParserErrorMessageProvider:()=>t1,LeafCstNodeImpl:()=>hp,LexingMode:()=>xp,MapScope:()=>Ex,Module:()=>lI,MultiMap:()=>Il,OperationCancelled:()=>Oc,ParserWorker:()=>nI,Reduction:()=>Om,RegExpUtils:()=>fk,RootCstNodeImpl:()=>e1,SimpleCache:()=>Sx,StreamImpl:()=>eo,StreamScope:()=>l1,TextDocument:()=>i1,TreeStreamImpl:()=>Ac,URI:()=>ls,UriUtils:()=>cs,ValidationCategory:()=>h1,ValidationRegistry:()=>Dx,ValueConverter:()=>Ic,WorkspaceCache:()=>u1,assertUnreachable:()=>Dc,createCompletionParser:()=>dM,createDefaultCoreModule:()=>io,createDefaultSharedCoreModule:()=>ao,createGrammarConfig:()=>oN,createLangiumParser:()=>mM,createParser:()=>yx,delayNextTick:()=>CM,diagnosticData:()=>yp,eagerLoad:()=>Wle,getDiagnosticRange:()=>Ile,indentationBuilderDefaultOptions:()=>uI,inject:()=>zi,interruptAndCheck:()=>gi,isAstNode:()=>ii,isAstNodeDescription:()=>gR,isAstNodeWithComment:()=>PM,isCompositeCstNode:()=>Al,isIMultiModeLexerDefinition:()=>YM,isJSDoc:()=>QM,isLeafCstNode:()=>ef,isLinkingError:()=>qd,isNamed:()=>Nle,isOperationCancelled:()=>Pc,isReference:()=>ma,isRootCstNode:()=>x2,isTokenTypeArray:()=>EE,isTokenTypeDictionary:()=>qM,loadGrammarFromJson:()=>cf,parseJSDoc:()=>KM,prepareLangiumParser:()=>xle,setInterruptionPeriod:()=>Cle,startCancelableOperation:()=>gE,stream:()=>en,toDiagnosticData:()=>Ole,toDiagnosticSeverity:()=>wE});var Ol=M(()=>{"use strict";oI();cI();BM();Yle();_l();Xle();Kle();Jle();ece();tce();nce();Sr(ga,Gr);ice();ace();Lc()});function hce(t){return Pl.isInstance(t,Yx)}function fce(t){return Pl.isInstance(t,f1)}function dce(t){return Pl.isInstance(t,d1)}function pce(t){return Pl.isInstance(t,IE)}function mce(t){return Pl.isInstance(t,p1)}function gce(t){return Pl.isInstance(t,Xx)}function yce(t){return Pl.isInstance(t,m1)}function vce(t){return Pl.isInstance(t,jx)}function xce(t){return Pl.isInstance(t,Kx)}function bce(t){return Pl.isInstance(t,Qx)}function wce(t){return Pl.isInstance(t,Zx)}var oFe,Bt,yI,Yx,f1,RE,NE,d1,IE,dI,p1,pI,Xx,mI,m1,jx,Kx,Qx,Zx,gI,ME,Tce,Pl,sce,lFe,oce,cFe,lce,uFe,cce,hFe,uce,fFe,dFe,pFe,mFe,gFe,yFe,Bl,vI,xI,bI,wI,TI,vFe,xFe,bFe,wFe,g1,bp,Wo,TFe,qo=M(()=>{"use strict";Ol();Ol();Ol();Ol();oFe=Object.defineProperty,Bt=o((t,e)=>oFe(t,"name",{value:e,configurable:!0}),"__name"),yI="Statement",Yx="Architecture";o(hce,"isArchitecture");Bt(hce,"isArchitecture");f1="Branch";o(fce,"isBranch");Bt(fce,"isBranch");RE="Checkout",NE="CherryPicking",d1="Commit";o(dce,"isCommit");Bt(dce,"isCommit");IE="Common";o(pce,"isCommon");Bt(pce,"isCommon");dI="Edge",p1="GitGraph";o(mce,"isGitGraph");Bt(mce,"isGitGraph");pI="Group",Xx="Info";o(gce,"isInfo");Bt(gce,"isInfo");mI="Junction",m1="Merge";o(yce,"isMerge");Bt(yce,"isMerge");jx="Packet";o(vce,"isPacket");Bt(vce,"isPacket");Kx="PacketBlock";o(xce,"isPacketBlock");Bt(xce,"isPacketBlock");Qx="Pie";o(bce,"isPie");Bt(bce,"isPie");Zx="PieSection";o(wce,"isPieSection");Bt(wce,"isPieSection");gI="Service",ME="Direction",Tce=class extends Wd{static{o(this,"MermaidAstReflection")}static{Bt(this,"MermaidAstReflection")}getAllTypes(){return[Yx,f1,RE,NE,d1,IE,ME,dI,p1,pI,Xx,mI,m1,jx,Kx,Qx,Zx,gI,yI]}computeIsSubtype(t,e){switch(t){case f1:case RE:case NE:case d1:case m1:return this.isSubtype(yI,e);case ME:return this.isSubtype(p1,e);default:return!1}}getReferenceType(t){let e=`${t.container.$type}:${t.property}`;throw new Error(`${e} is not a valid reference id.`)}getTypeMetaData(t){switch(t){case Yx:return{name:Yx,properties:[{name:"accDescr"},{name:"accTitle"},{name:"edges",defaultValue:[]},{name:"groups",defaultValue:[]},{name:"junctions",defaultValue:[]},{name:"services",defaultValue:[]},{name:"title"}]};case f1:return{name:f1,properties:[{name:"name"},{name:"order"}]};case RE:return{name:RE,properties:[{name:"branch"}]};case NE:return{name:NE,properties:[{name:"id"},{name:"parent"},{name:"tags",defaultValue:[]}]};case d1:return{name:d1,properties:[{name:"id"},{name:"message"},{name:"tags",defaultValue:[]},{name:"type"}]};case IE:return{name:IE,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case dI:return{name:dI,properties:[{name:"lhsDir"},{name:"lhsGroup",defaultValue:!1},{name:"lhsId"},{name:"lhsInto",defaultValue:!1},{name:"rhsDir"},{name:"rhsGroup",defaultValue:!1},{name:"rhsId"},{name:"rhsInto",defaultValue:!1},{name:"title"}]};case p1:return{name:p1,properties:[{name:"accDescr"},{name:"accTitle"},{name:"statements",defaultValue:[]},{name:"title"}]};case pI:return{name:pI,properties:[{name:"icon"},{name:"id"},{name:"in"},{name:"title"}]};case Xx:return{name:Xx,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case mI:return{name:mI,properties:[{name:"id"},{name:"in"}]};case m1:return{name:m1,properties:[{name:"branch"},{name:"id"},{name:"tags",defaultValue:[]},{name:"type"}]};case jx:return{name:jx,properties:[{name:"accDescr"},{name:"accTitle"},{name:"blocks",defaultValue:[]},{name:"title"}]};case Kx:return{name:Kx,properties:[{name:"end"},{name:"label"},{name:"start"}]};case Qx:return{name:Qx,properties:[{name:"accDescr"},{name:"accTitle"},{name:"sections",defaultValue:[]},{name:"showData",defaultValue:!1},{name:"title"}]};case Zx:return{name:Zx,properties:[{name:"label"},{name:"value"}]};case gI:return{name:gI,properties:[{name:"icon"},{name:"iconText"},{name:"id"},{name:"in"},{name:"title"}]};case ME:return{name:ME,properties:[{name:"accDescr"},{name:"accTitle"},{name:"dir"},{name:"statements",defaultValue:[]},{name:"title"}]};default:return{name:t,properties:[]}}}},Pl=new Tce,lFe=Bt(()=>sce??(sce=cf('{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"InfoGrammar"),cFe=Bt(()=>oce??(oce=cf(`{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"packet-beta"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"+"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"?"},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}`)),"PacketGrammar"),uFe=Bt(()=>lce??(lce=cf('{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"+"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"PIE_SECTION_LABEL","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]+\\"/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"PIE_SECTION_VALUE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/(0|[1-9][0-9]*)(\\\\.[0-9]+)?/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"PieGrammar"),hFe=Bt(()=>cce??(cce=cf('{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_ID","definition":{"$type":"RegexToken","regex":"/[\\\\w]+/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TEXT_ICON","definition":{"$type":"RegexToken","regex":"/\\\\(\\"[^\\"]+\\"\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[[\\\\w ]+\\\\]/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"ArchitectureGrammar"),fFe=Bt(()=>uce??(uce=cf(`{"$type":"Grammar","isDeclared":true,"name":"GitGraph","interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+(?=\\\\s)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[]}`)),"GitGraphGrammar"),dFe={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},pFe={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},mFe={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},gFe={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},yFe={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Bl={AstReflection:Bt(()=>new Tce,"AstReflection")},vI={Grammar:Bt(()=>lFe(),"Grammar"),LanguageMetaData:Bt(()=>dFe,"LanguageMetaData"),parser:{}},xI={Grammar:Bt(()=>cFe(),"Grammar"),LanguageMetaData:Bt(()=>pFe,"LanguageMetaData"),parser:{}},bI={Grammar:Bt(()=>uFe(),"Grammar"),LanguageMetaData:Bt(()=>mFe,"LanguageMetaData"),parser:{}},wI={Grammar:Bt(()=>hFe(),"Grammar"),LanguageMetaData:Bt(()=>gFe,"LanguageMetaData"),parser:{}},TI={Grammar:Bt(()=>fFe(),"Grammar"),LanguageMetaData:Bt(()=>yFe,"LanguageMetaData"),parser:{}},vFe=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,xFe=/accTitle[\t ]*:([^\n\r]*)/,bFe=/title([\t ][^\n\r]*|)/,wFe={ACC_DESCR:vFe,ACC_TITLE:xFe,TITLE:bFe},g1=class extends pp{static{o(this,"AbstractMermaidValueConverter")}static{Bt(this,"AbstractMermaidValueConverter")}runConverter(t,e,r){let n=this.runCommonConverter(t,e,r);return n===void 0&&(n=this.runCustomConverter(t,e,r)),n===void 0?super.runConverter(t,e,r):n}runCommonConverter(t,e,r){let n=wFe[t.name];if(n===void 0)return;let i=n.exec(e);if(i!==null){if(i[1]!==void 0)return i[1].trim().replace(/[\t ]{2,}/gm," ");if(i[2]!==void 0)return i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,` +`)}}},bp=class extends g1{static{o(this,"CommonValueConverter")}static{Bt(this,"CommonValueConverter")}runCustomConverter(t,e,r){}},Wo=class extends $u{static{o(this,"AbstractMermaidTokenBuilder")}static{Bt(this,"AbstractMermaidTokenBuilder")}constructor(t){super(),this.keywords=new Set(t)}buildKeywordTokens(t,e,r){let n=super.buildKeywordTokens(t,e,r);return n.forEach(i=>{this.keywords.has(i.name)&&i.PATTERN!==void 0&&(i.PATTERN=new RegExp(i.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),n}},TFe=class extends Wo{static{o(this,"CommonTokenBuilder")}static{Bt(this,"CommonTokenBuilder")}}});function PE(t=so){let e=zi(ao(t),Bl),r=zi(io({shared:e}),TI,OE);return e.ServiceRegistry.register(r),{shared:e,GitGraph:r}}var kFe,OE,kI=M(()=>{"use strict";qo();Ol();kFe=class extends Wo{static{o(this,"GitGraphTokenBuilder")}static{Bt(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},OE={parser:{TokenBuilder:Bt(()=>new kFe,"TokenBuilder"),ValueConverter:Bt(()=>new bp,"ValueConverter")}};o(PE,"createGitGraphServices");Bt(PE,"createGitGraphServices")});function FE(t=so){let e=zi(ao(t),Bl),r=zi(io({shared:e}),vI,BE);return e.ServiceRegistry.register(r),{shared:e,Info:r}}var EFe,BE,EI=M(()=>{"use strict";qo();Ol();EFe=class extends Wo{static{o(this,"InfoTokenBuilder")}static{Bt(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},BE={parser:{TokenBuilder:Bt(()=>new EFe,"TokenBuilder"),ValueConverter:Bt(()=>new bp,"ValueConverter")}};o(FE,"createInfoServices");Bt(FE,"createInfoServices")});function GE(t=so){let e=zi(ao(t),Bl),r=zi(io({shared:e}),xI,zE);return e.ServiceRegistry.register(r),{shared:e,Packet:r}}var SFe,zE,SI=M(()=>{"use strict";qo();Ol();SFe=class extends Wo{static{o(this,"PacketTokenBuilder")}static{Bt(this,"PacketTokenBuilder")}constructor(){super(["packet-beta"])}},zE={parser:{TokenBuilder:Bt(()=>new SFe,"TokenBuilder"),ValueConverter:Bt(()=>new bp,"ValueConverter")}};o(GE,"createPacketServices");Bt(GE,"createPacketServices")});function VE(t=so){let e=zi(ao(t),Bl),r=zi(io({shared:e}),bI,$E);return e.ServiceRegistry.register(r),{shared:e,Pie:r}}var CFe,AFe,$E,CI=M(()=>{"use strict";qo();Ol();CFe=class extends Wo{static{o(this,"PieTokenBuilder")}static{Bt(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},AFe=class extends g1{static{o(this,"PieValueConverter")}static{Bt(this,"PieValueConverter")}runCustomConverter(t,e,r){if(t.name==="PIE_SECTION_LABEL")return e.replace(/"/g,"").trim()}},$E={parser:{TokenBuilder:Bt(()=>new CFe,"TokenBuilder"),ValueConverter:Bt(()=>new AFe,"ValueConverter")}};o(VE,"createPieServices");Bt(VE,"createPieServices")});function HE(t=so){let e=zi(ao(t),Bl),r=zi(io({shared:e}),wI,UE);return e.ServiceRegistry.register(r),{shared:e,Architecture:r}}var _Fe,DFe,UE,AI=M(()=>{"use strict";qo();Ol();_Fe=class extends Wo{static{o(this,"ArchitectureTokenBuilder")}static{Bt(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},DFe=class extends g1{static{o(this,"ArchitectureValueConverter")}static{Bt(this,"ArchitectureValueConverter")}runCustomConverter(t,e,r){if(t.name==="ARCH_ICON")return e.replace(/[()]/g,"").trim();if(t.name==="ARCH_TEXT_ICON")return e.replace(/["()]/g,"");if(t.name==="ARCH_TITLE")return e.replace(/[[\]]/g,"").trim()}},UE={parser:{TokenBuilder:Bt(()=>new _Fe,"TokenBuilder"),ValueConverter:Bt(()=>new DFe,"ValueConverter")}};o(HE,"createArchitectureServices");Bt(HE,"createArchitectureServices")});var kce={};pr(kce,{InfoModule:()=>BE,createInfoServices:()=>FE});var Ece=M(()=>{"use strict";EI();qo()});var Sce={};pr(Sce,{PacketModule:()=>zE,createPacketServices:()=>GE});var Cce=M(()=>{"use strict";SI();qo()});var Ace={};pr(Ace,{PieModule:()=>$E,createPieServices:()=>VE});var _ce=M(()=>{"use strict";CI();qo()});var Dce={};pr(Dce,{ArchitectureModule:()=>UE,createArchitectureServices:()=>HE});var Lce=M(()=>{"use strict";AI();qo()});var Rce={};pr(Rce,{GitGraphModule:()=>OE,createGitGraphServices:()=>PE});var Nce=M(()=>{"use strict";kI();qo()});async function Fl(t,e){let r=LFe[t];if(!r)throw new Error(`Unknown diagram type: ${t}`);wp[t]||await r();let i=wp[t].parse(e);if(i.lexerErrors.length>0||i.parserErrors.length>0)throw new RFe(i);return i.value}var wp,LFe,RFe,y1=M(()=>{"use strict";kI();EI();SI();CI();AI();qo();wp={},LFe={info:Bt(async()=>{let{createInfoServices:t}=await Promise.resolve().then(()=>(Ece(),kce)),e=t().Info.parser.LangiumParser;wp.info=e},"info"),packet:Bt(async()=>{let{createPacketServices:t}=await Promise.resolve().then(()=>(Cce(),Sce)),e=t().Packet.parser.LangiumParser;wp.packet=e},"packet"),pie:Bt(async()=>{let{createPieServices:t}=await Promise.resolve().then(()=>(_ce(),Ace)),e=t().Pie.parser.LangiumParser;wp.pie=e},"pie"),architecture:Bt(async()=>{let{createArchitectureServices:t}=await Promise.resolve().then(()=>(Lce(),Dce)),e=t().Architecture.parser.LangiumParser;wp.architecture=e},"architecture"),gitGraph:Bt(async()=>{let{createGitGraphServices:t}=await Promise.resolve().then(()=>(Nce(),Rce)),e=t().GitGraph.parser.LangiumParser;wp.gitGraph=e},"gitGraph")};o(Fl,"parse");Bt(Fl,"parse");RFe=class extends Error{static{o(this,"MermaidParseError")}constructor(t){let e=t.lexerErrors.map(n=>n.message).join(` `),r=t.parserErrors.map(n=>n.message).join(` -`);super(`Parsing failed: ${e} ${r}`),this.result=t}static{Ot(this,"MermaidParseError")}}});function lf(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}var ox=M(()=>{"use strict";o(lf,"populateCommonDb")});var jr,eE=M(()=>{"use strict";jr={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4}});var cf,tE=M(()=>{"use strict";cf=class{constructor(e){this.init=e;this.records=this.init()}static{o(this,"ImperativeState")}reset(){this.records=this.init()}}});function RI(){return t9({length:7})}function _Ge(t,e){let r=Object.create(null);return t.reduce((n,i)=>{let a=e(i);return r[a]||(r[a]=!0,n.push(i)),n},[])}function kue(t,e,r){let n=t.indexOf(e);n===-1?t.push(r):t.splice(n,1,r)}function Sue(t){let e=t.reduce((i,a)=>i.seq>a.seq?i:a,t[0]),r="";t.forEach(function(i){i===e?r+=" *":r+=" |"});let n=[r,e.id,e.seq];for(let i in wt.records.branches)wt.records.branches.get(i)===e.id&&n.push(i);if(Y.debug(n.join(" ")),e.parents&&e.parents.length==2&&e.parents[0]&&e.parents[1]){let i=wt.records.commits.get(e.parents[0]);kue(t,e,i),e.parents[1]&&t.push(wt.records.commits.get(e.parents[1]))}else{if(e.parents.length==0)return;if(e.parents[0]){let i=wt.records.commits.get(e.parents[0]);kue(t,e,i)}}t=_Ge(t,i=>i.id),Sue(t)}var AGe,x0,wt,LGe,DGe,NGe,RGe,MGe,IGe,OGe,Eue,PGe,BGe,FGe,zGe,GGe,Cue,$Ge,VGe,UGe,rE,MI=M(()=>{"use strict";ht();hr();Ua();fr();ki();eE();tE();hs();AGe=ur.gitGraph,x0=o(()=>ws({...AGe,...Sr().gitGraph}),"getConfig"),wt=new cf(()=>{let t=x0(),e=t.mainBranchName,r=t.mainBranchOrder;return{mainBranchName:e,commits:new Map,head:null,branchConfig:new Map([[e,{name:e,order:r}]]),branches:new Map([[e,null]]),currBranch:e,direction:"LR",seq:0,options:{}}});o(RI,"getID");o(_Ge,"uniqBy");LGe=o(function(t){wt.records.direction=t},"setDirection"),DGe=o(function(t){Y.debug("options str",t),t=t?.trim(),t=t||"{}";try{wt.records.options=JSON.parse(t)}catch(e){Y.error("error while parsing gitGraph options",e.message)}},"setOptions"),NGe=o(function(){return wt.records.options},"getOptions"),RGe=o(function(t){let e=t.msg,r=t.id,n=t.type,i=t.tags;Y.info("commit",e,r,n,i),Y.debug("Entering commit:",e,r,n,i);let a=x0();r=je.sanitizeText(r,a),e=je.sanitizeText(e,a),i=i?.map(l=>je.sanitizeText(l,a));let s={id:r||wt.records.seq+"-"+RI(),message:e,seq:wt.records.seq++,type:n??jr.NORMAL,tags:i??[],parents:wt.records.head==null?[]:[wt.records.head.id],branch:wt.records.currBranch};wt.records.head=s,Y.info("main branch",a.mainBranchName),wt.records.commits.set(s.id,s),wt.records.branches.set(wt.records.currBranch,s.id),Y.debug("in pushCommit "+s.id)},"commit"),MGe=o(function(t){let e=t.name,r=t.order;if(e=je.sanitizeText(e,x0()),wt.records.branches.has(e))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${e}")`);wt.records.branches.set(e,wt.records.head!=null?wt.records.head.id:null),wt.records.branchConfig.set(e,{name:e,order:r}),Eue(e),Y.debug("in createBranch")},"branch"),IGe=o(t=>{let e=t.branch,r=t.id,n=t.type,i=t.tags,a=x0();e=je.sanitizeText(e,a),r&&(r=je.sanitizeText(r,a));let s=wt.records.branches.get(wt.records.currBranch),l=wt.records.branches.get(e),u=s?wt.records.commits.get(s):void 0,h=l?wt.records.commits.get(l):void 0;if(u&&h&&u.branch===e)throw new Error(`Cannot merge branch '${e}' into itself.`);if(wt.records.currBranch===e){let p=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},p}if(u===void 0||!u){let p=new Error(`Incorrect usage of "merge". Current branch (${wt.records.currBranch})has no commits`);throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["commit"]},p}if(!wt.records.branches.has(e)){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") does not exist");throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:[`branch ${e}`]},p}if(h===void 0||!h){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") has no commits");throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:['"commit"']},p}if(u===h){let p=new Error('Incorrect usage of "merge". Both branches have same head');throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},p}if(r&&wt.records.commits.has(r)){let p=new Error('Incorrect usage of "merge". Commit with id:'+r+" already exists, use different custom Id");throw p.hash={text:`merge ${e} ${r} ${n} ${i?.join(" ")}`,token:`merge ${e} ${r} ${n} ${i?.join(" ")}`,expected:[`merge ${e} ${r}_UNIQUE ${n} ${i?.join(" ")}`]},p}let f=l||"",d={id:r||`${wt.records.seq}-${RI()}`,message:`merged branch ${e} into ${wt.records.currBranch}`,seq:wt.records.seq++,parents:wt.records.head==null?[]:[wt.records.head.id,f],branch:wt.records.currBranch,type:jr.MERGE,customType:n,customId:!!r,tags:i??[]};wt.records.head=d,wt.records.commits.set(d.id,d),wt.records.branches.set(wt.records.currBranch,d.id),Y.debug(wt.records.branches),Y.debug("in mergeBranch")},"merge"),OGe=o(function(t){let e=t.id,r=t.targetId,n=t.tags,i=t.parent;Y.debug("Entering cherryPick:",e,r,n);let a=x0();if(e=je.sanitizeText(e,a),r=je.sanitizeText(r,a),n=n?.map(u=>je.sanitizeText(u,a)),i=je.sanitizeText(i,a),!e||!wt.records.commits.has(e)){let u=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw u.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},u}let s=wt.records.commits.get(e);if(s===void 0||!s)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(i&&!(Array.isArray(s.parents)&&s.parents.includes(i)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");let l=s.branch;if(s.type===jr.MERGE&&!i)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!r||!wt.records.commits.has(r)){if(l===wt.records.currBranch){let d=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let u=wt.records.branches.get(wt.records.currBranch);if(u===void 0||!u){let d=new Error(`Incorrect usage of "cherry-pick". Current branch (${wt.records.currBranch})has no commits`);throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let h=wt.records.commits.get(u);if(h===void 0||!h){let d=new Error(`Incorrect usage of "cherry-pick". Current branch (${wt.records.currBranch})has no commits`);throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let f={id:wt.records.seq+"-"+RI(),message:`cherry-picked ${s?.message} into ${wt.records.currBranch}`,seq:wt.records.seq++,parents:wt.records.head==null?[]:[wt.records.head.id,s.id],branch:wt.records.currBranch,type:jr.CHERRY_PICK,tags:n?n.filter(Boolean):[`cherry-pick:${s.id}${s.type===jr.MERGE?`|parent:${i}`:""}`]};wt.records.head=f,wt.records.commits.set(f.id,f),wt.records.branches.set(wt.records.currBranch,f.id),Y.debug(wt.records.branches),Y.debug("in cherryPick")}},"cherryPick"),Eue=o(function(t){if(t=je.sanitizeText(t,x0()),wt.records.branches.has(t)){wt.records.currBranch=t;let e=wt.records.branches.get(wt.records.currBranch);e===void 0||!e?wt.records.head=null:wt.records.head=wt.records.commits.get(e)??null}else{let e=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${t}")`);throw e.hash={text:`checkout ${t}`,token:`checkout ${t}`,expected:[`branch ${t}`]},e}},"checkout");o(kue,"upsert");o(Sue,"prettyPrintCommitHistory");PGe=o(function(){Y.debug(wt.records.commits);let t=Cue()[0];Sue([t])},"prettyPrint"),BGe=o(function(){wt.reset(),_r()},"clear"),FGe=o(function(){return[...wt.records.branchConfig.values()].map((e,r)=>e.order!==null&&e.order!==void 0?e:{...e,order:parseFloat(`0.${r}`)}).sort((e,r)=>(e.order??0)-(r.order??0)).map(({name:e})=>({name:e}))},"getBranchesAsObjArray"),zGe=o(function(){return wt.records.branches},"getBranches"),GGe=o(function(){return wt.records.commits},"getCommits"),Cue=o(function(){let t=[...wt.records.commits.values()];return t.forEach(function(e){Y.debug(e.id)}),t.sort((e,r)=>e.seq-r.seq),t},"getCommitsArray"),$Ge=o(function(){return wt.records.currBranch},"getCurrentBranch"),VGe=o(function(){return wt.records.direction},"getDirection"),UGe=o(function(){return wt.records.head},"getHead"),rE={commitType:jr,getConfig:x0,setDirection:LGe,setOptions:DGe,getOptions:NGe,commit:RGe,branch:MGe,merge:IGe,cherryPick:OGe,checkout:Eue,prettyPrint:PGe,clear:BGe,getBranchesAsObjArray:FGe,getBranches:zGe,getCommits:GGe,getCommitsArray:Cue,getCurrentBranch:$Ge,getDirection:VGe,getHead:UGe,setAccTitle:Rr,getAccTitle:Pr,getAccDescription:Fr,setAccDescription:Br,setDiagramTitle:ln,getDiagramTitle:Jr}});var HGe,WGe,YGe,qGe,XGe,jGe,KGe,Aue,_ue=M(()=>{"use strict";Ng();ht();ox();MI();eE();HGe=o((t,e)=>{lf(t,e),t.dir&&e.setDirection(t.dir);for(let r of t.statements)WGe(r,e)},"populate"),WGe=o((t,e)=>{let n={Commit:o(i=>e.commit(YGe(i)),"Commit"),Branch:o(i=>e.branch(qGe(i)),"Branch"),Merge:o(i=>e.merge(XGe(i)),"Merge"),Checkout:o(i=>e.checkout(jGe(i)),"Checkout"),CherryPicking:o(i=>e.cherryPick(KGe(i)),"CherryPicking")}[t.$type];n?n(t):Y.error(`Unknown statement type: ${t.$type}`)},"parseStatement"),YGe=o(t=>({id:t.id,msg:t.message??"",type:t.type!==void 0?jr[t.type]:jr.NORMAL,tags:t.tags??void 0}),"parseCommit"),qGe=o(t=>({name:t.name,order:t.order??0}),"parseBranch"),XGe=o(t=>({branch:t.branch,id:t.id??"",type:t.type!==void 0?jr[t.type]:void 0,tags:t.tags??void 0}),"parseMerge"),jGe=o(t=>t.branch,"parseCheckout"),KGe=o(t=>({id:t.id,targetId:"",tags:t.tags?.length===0?void 0:t.tags,parent:t.parent}),"parseCherryPicking"),Aue={parse:o(async t=>{let e=await Gl("gitGraph",t);Y.debug(e),HGe(e,rE)},"parse")}});var QGe,el,hf,ff,Pc,Vu,b0,Ps,Bs,nE,lx,iE,uf,Nr,ZGe,Due,Nue,JGe,e$e,t$e,r$e,n$e,i$e,a$e,s$e,o$e,l$e,c$e,u$e,Lue,h$e,cx,f$e,d$e,p$e,m$e,g$e,Rue,Mue=M(()=>{"use strict";mr();Vt();ht();hr();eE();QGe=de(),el=QGe?.gitGraph,hf=10,ff=40,Pc=4,Vu=2,b0=8,Ps=new Map,Bs=new Map,nE=30,lx=new Map,iE=[],uf=0,Nr="LR",ZGe=o(()=>{Ps.clear(),Bs.clear(),lx.clear(),uf=0,iE=[],Nr="LR"},"clear"),Due=o(t=>{let e=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof t=="string"?t.split(/\\n|\n|/gi):t).forEach(n=>{let i=document.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),i.setAttribute("dy","1em"),i.setAttribute("x","0"),i.setAttribute("class","row"),i.textContent=n.trim(),e.appendChild(i)}),e},"drawText"),Nue=o(t=>{let e,r,n;return Nr==="BT"?(r=o((i,a)=>i<=a,"comparisonFunc"),n=1/0):(r=o((i,a)=>i>=a,"comparisonFunc"),n=0),t.forEach(i=>{let a=Nr==="TB"||Nr=="BT"?Bs.get(i)?.y:Bs.get(i)?.x;a!==void 0&&r(a,n)&&(e=i,n=a)}),e},"findClosestParent"),JGe=o(t=>{let e="",r=1/0;return t.forEach(n=>{let i=Bs.get(n).y;i<=r&&(e=n,r=i)}),e||void 0},"findClosestParentBT"),e$e=o((t,e,r)=>{let n=r,i=r,a=[];t.forEach(s=>{let l=e.get(s);if(!l)throw new Error(`Commit not found for key ${s}`);l.parents.length?(n=r$e(l),i=Math.max(n,i)):a.push(l),n$e(l,n)}),n=i,a.forEach(s=>{i$e(s,n,r)}),t.forEach(s=>{let l=e.get(s);if(l?.parents.length){let u=JGe(l.parents);n=Bs.get(u).y-ff,n<=i&&(i=n);let h=Ps.get(l.branch).pos,f=n-hf;Bs.set(l.id,{x:h,y:f})}})},"setParallelBTPos"),t$e=o(t=>{let e=Nue(t.parents.filter(n=>n!==null));if(!e)throw new Error(`Closest parent not found for commit ${t.id}`);let r=Bs.get(e)?.y;if(r===void 0)throw new Error(`Closest parent position not found for commit ${t.id}`);return r},"findClosestParentPos"),r$e=o(t=>t$e(t)+ff,"calculateCommitPosition"),n$e=o((t,e)=>{let r=Ps.get(t.branch);if(!r)throw new Error(`Branch not found for commit ${t.id}`);let n=r.pos,i=e+hf;return Bs.set(t.id,{x:n,y:i}),{x:n,y:i}},"setCommitPosition"),i$e=o((t,e,r)=>{let n=Ps.get(t.branch);if(!n)throw new Error(`Branch not found for commit ${t.id}`);let i=e+r,a=n.pos;Bs.set(t.id,{x:a,y:i})},"setRootPosition"),a$e=o((t,e,r,n,i,a)=>{if(a===jr.HIGHLIGHT)t.append("rect").attr("x",r.x-10).attr("y",r.y-10).attr("width",20).attr("height",20).attr("class",`commit ${e.id} commit-highlight${i%b0} ${n}-outer`),t.append("rect").attr("x",r.x-6).attr("y",r.y-6).attr("width",12).attr("height",12).attr("class",`commit ${e.id} commit${i%b0} ${n}-inner`);else if(a===jr.CHERRY_PICK)t.append("circle").attr("cx",r.x).attr("cy",r.y).attr("r",10).attr("class",`commit ${e.id} ${n}`),t.append("circle").attr("cx",r.x-3).attr("cy",r.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} ${n}`),t.append("circle").attr("cx",r.x+3).attr("cy",r.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} ${n}`),t.append("line").attr("x1",r.x+3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} ${n}`),t.append("line").attr("x1",r.x-3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} ${n}`);else{let s=t.append("circle");if(s.attr("cx",r.x),s.attr("cy",r.y),s.attr("r",e.type===jr.MERGE?9:10),s.attr("class",`commit ${e.id} commit${i%b0}`),a===jr.MERGE){let l=t.append("circle");l.attr("cx",r.x),l.attr("cy",r.y),l.attr("r",6),l.attr("class",`commit ${n} ${e.id} commit${i%b0}`)}a===jr.REVERSE&&t.append("path").attr("d",`M ${r.x-5},${r.y-5}L${r.x+5},${r.y+5}M${r.x-5},${r.y+5}L${r.x+5},${r.y-5}`).attr("class",`commit ${n} ${e.id} commit${i%b0}`)}},"drawCommitBullet"),s$e=o((t,e,r,n)=>{if(e.type!==jr.CHERRY_PICK&&(e.customId&&e.type===jr.MERGE||e.type!==jr.MERGE)&&el?.showCommitLabel){let i=t.append("g"),a=i.insert("rect").attr("class","commit-label-bkg"),s=i.append("text").attr("x",n).attr("y",r.y+25).attr("class","commit-label").text(e.id),l=s.node()?.getBBox();if(l&&(a.attr("x",r.posWithOffset-l.width/2-Vu).attr("y",r.y+13.5).attr("width",l.width+2*Vu).attr("height",l.height+2*Vu),Nr==="TB"||Nr==="BT"?(a.attr("x",r.x-(l.width+4*Pc+5)).attr("y",r.y-12),s.attr("x",r.x-(l.width+4*Pc)).attr("y",r.y+l.height-12)):s.attr("x",r.posWithOffset-l.width/2),el.rotateCommitLabel))if(Nr==="TB"||Nr==="BT")s.attr("transform","rotate(-45, "+r.x+", "+r.y+")"),a.attr("transform","rotate(-45, "+r.x+", "+r.y+")");else{let u=-7.5-(l.width+10)/25*9.5,h=10+l.width/25*8.5;i.attr("transform","translate("+u+", "+h+") rotate(-45, "+n+", "+r.y+")")}}},"drawCommitLabel"),o$e=o((t,e,r,n)=>{if(e.tags.length>0){let i=0,a=0,s=0,l=[];for(let u of e.tags.reverse()){let h=t.insert("polygon"),f=t.append("circle"),d=t.append("text").attr("y",r.y-16-i).attr("class","tag-label").text(u),p=d.node()?.getBBox();if(!p)throw new Error("Tag bbox not found");a=Math.max(a,p.width),s=Math.max(s,p.height),d.attr("x",r.posWithOffset-p.width/2),l.push({tag:d,hole:f,rect:h,yOffset:i}),i+=20}for(let{tag:u,hole:h,rect:f,yOffset:d}of l){let p=s/2,m=r.y-19.2-d;if(f.attr("class","tag-label-bkg").attr("points",` - ${n-a/2-Pc/2},${m+Vu} - ${n-a/2-Pc/2},${m-Vu} - ${r.posWithOffset-a/2-Pc},${m-p-Vu} - ${r.posWithOffset+a/2+Pc},${m-p-Vu} - ${r.posWithOffset+a/2+Pc},${m+p+Vu} - ${r.posWithOffset-a/2-Pc},${m+p+Vu}`),h.attr("cy",m).attr("cx",n-a/2+Pc/2).attr("r",1.5).attr("class","tag-hole"),Nr==="TB"||Nr==="BT"){let g=n+d;f.attr("class","tag-label-bkg").attr("points",` +`);super(`Parsing failed: ${e} ${r}`),this.result=t}static{Bt(this,"MermaidParseError")}}});function uf(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}var Jx=M(()=>{"use strict";o(uf,"populateCommonDb")});var jr,WE=M(()=>{"use strict";jr={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4}});var hf,qE=M(()=>{"use strict";hf=class{constructor(e){this.init=e;this.records=this.init()}static{o(this,"ImperativeState")}reset(){this.records=this.init()}}});function _I(){return V9({length:7})}function MFe(t,e){let r=Object.create(null);return t.reduce((n,i)=>{let a=e(i);return r[a]||(r[a]=!0,n.push(i)),n},[])}function Mce(t,e,r){let n=t.indexOf(e);n===-1?t.push(r):t.splice(n,1,r)}function Oce(t){let e=t.reduce((i,a)=>i.seq>a.seq?i:a,t[0]),r="";t.forEach(function(i){i===e?r+=" *":r+=" |"});let n=[r,e.id,e.seq];for(let i in _t.records.branches)_t.records.branches.get(i)===e.id&&n.push(i);if(Y.debug(n.join(" ")),e.parents&&e.parents.length==2&&e.parents[0]&&e.parents[1]){let i=_t.records.commits.get(e.parents[0]);Mce(t,e,i),e.parents[1]&&t.push(_t.records.commits.get(e.parents[1]))}else{if(e.parents.length==0)return;if(e.parents[0]){let i=_t.records.commits.get(e.parents[0]);Mce(t,e,i)}}t=MFe(t,i=>i.id),Oce(t)}var NFe,Tp,_t,IFe,OFe,PFe,BFe,FFe,zFe,GFe,Ice,$Fe,VFe,UFe,HFe,WFe,Pce,qFe,YFe,XFe,YE,DI=M(()=>{"use strict";vt();sr();ka();gr();ki();WE();qE();ps();NFe=cr.gitGraph,Tp=o(()=>Es({...NFe,...mr().gitGraph}),"getConfig"),_t=new hf(()=>{let t=Tp(),e=t.mainBranchName,r=t.mainBranchOrder;return{mainBranchName:e,commits:new Map,head:null,branchConfig:new Map([[e,{name:e,order:r}]]),branches:new Map([[e,null]]),currBranch:e,direction:"LR",seq:0,options:{}}});o(_I,"getID");o(MFe,"uniqBy");IFe=o(function(t){_t.records.direction=t},"setDirection"),OFe=o(function(t){Y.debug("options str",t),t=t?.trim(),t=t||"{}";try{_t.records.options=JSON.parse(t)}catch(e){Y.error("error while parsing gitGraph options",e.message)}},"setOptions"),PFe=o(function(){return _t.records.options},"getOptions"),BFe=o(function(t){let e=t.msg,r=t.id,n=t.type,i=t.tags;Y.info("commit",e,r,n,i),Y.debug("Entering commit:",e,r,n,i);let a=Tp();r=Ze.sanitizeText(r,a),e=Ze.sanitizeText(e,a),i=i?.map(l=>Ze.sanitizeText(l,a));let s={id:r||_t.records.seq+"-"+_I(),message:e,seq:_t.records.seq++,type:n??jr.NORMAL,tags:i??[],parents:_t.records.head==null?[]:[_t.records.head.id],branch:_t.records.currBranch};_t.records.head=s,Y.info("main branch",a.mainBranchName),_t.records.commits.set(s.id,s),_t.records.branches.set(_t.records.currBranch,s.id),Y.debug("in pushCommit "+s.id)},"commit"),FFe=o(function(t){let e=t.name,r=t.order;if(e=Ze.sanitizeText(e,Tp()),_t.records.branches.has(e))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${e}")`);_t.records.branches.set(e,_t.records.head!=null?_t.records.head.id:null),_t.records.branchConfig.set(e,{name:e,order:r}),Ice(e),Y.debug("in createBranch")},"branch"),zFe=o(t=>{let e=t.branch,r=t.id,n=t.type,i=t.tags,a=Tp();e=Ze.sanitizeText(e,a),r&&(r=Ze.sanitizeText(r,a));let s=_t.records.branches.get(_t.records.currBranch),l=_t.records.branches.get(e),u=s?_t.records.commits.get(s):void 0,h=l?_t.records.commits.get(l):void 0;if(u&&h&&u.branch===e)throw new Error(`Cannot merge branch '${e}' into itself.`);if(_t.records.currBranch===e){let p=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},p}if(u===void 0||!u){let p=new Error(`Incorrect usage of "merge". Current branch (${_t.records.currBranch})has no commits`);throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["commit"]},p}if(!_t.records.branches.has(e)){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") does not exist");throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:[`branch ${e}`]},p}if(h===void 0||!h){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") has no commits");throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:['"commit"']},p}if(u===h){let p=new Error('Incorrect usage of "merge". Both branches have same head');throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},p}if(r&&_t.records.commits.has(r)){let p=new Error('Incorrect usage of "merge". Commit with id:'+r+" already exists, use different custom Id");throw p.hash={text:`merge ${e} ${r} ${n} ${i?.join(" ")}`,token:`merge ${e} ${r} ${n} ${i?.join(" ")}`,expected:[`merge ${e} ${r}_UNIQUE ${n} ${i?.join(" ")}`]},p}let f=l||"",d={id:r||`${_t.records.seq}-${_I()}`,message:`merged branch ${e} into ${_t.records.currBranch}`,seq:_t.records.seq++,parents:_t.records.head==null?[]:[_t.records.head.id,f],branch:_t.records.currBranch,type:jr.MERGE,customType:n,customId:!!r,tags:i??[]};_t.records.head=d,_t.records.commits.set(d.id,d),_t.records.branches.set(_t.records.currBranch,d.id),Y.debug(_t.records.branches),Y.debug("in mergeBranch")},"merge"),GFe=o(function(t){let e=t.id,r=t.targetId,n=t.tags,i=t.parent;Y.debug("Entering cherryPick:",e,r,n);let a=Tp();if(e=Ze.sanitizeText(e,a),r=Ze.sanitizeText(r,a),n=n?.map(u=>Ze.sanitizeText(u,a)),i=Ze.sanitizeText(i,a),!e||!_t.records.commits.has(e)){let u=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw u.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},u}let s=_t.records.commits.get(e);if(s===void 0||!s)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(i&&!(Array.isArray(s.parents)&&s.parents.includes(i)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");let l=s.branch;if(s.type===jr.MERGE&&!i)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!r||!_t.records.commits.has(r)){if(l===_t.records.currBranch){let d=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let u=_t.records.branches.get(_t.records.currBranch);if(u===void 0||!u){let d=new Error(`Incorrect usage of "cherry-pick". Current branch (${_t.records.currBranch})has no commits`);throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let h=_t.records.commits.get(u);if(h===void 0||!h){let d=new Error(`Incorrect usage of "cherry-pick". Current branch (${_t.records.currBranch})has no commits`);throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let f={id:_t.records.seq+"-"+_I(),message:`cherry-picked ${s?.message} into ${_t.records.currBranch}`,seq:_t.records.seq++,parents:_t.records.head==null?[]:[_t.records.head.id,s.id],branch:_t.records.currBranch,type:jr.CHERRY_PICK,tags:n?n.filter(Boolean):[`cherry-pick:${s.id}${s.type===jr.MERGE?`|parent:${i}`:""}`]};_t.records.head=f,_t.records.commits.set(f.id,f),_t.records.branches.set(_t.records.currBranch,f.id),Y.debug(_t.records.branches),Y.debug("in cherryPick")}},"cherryPick"),Ice=o(function(t){if(t=Ze.sanitizeText(t,Tp()),_t.records.branches.has(t)){_t.records.currBranch=t;let e=_t.records.branches.get(_t.records.currBranch);e===void 0||!e?_t.records.head=null:_t.records.head=_t.records.commits.get(e)??null}else{let e=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${t}")`);throw e.hash={text:`checkout ${t}`,token:`checkout ${t}`,expected:[`branch ${t}`]},e}},"checkout");o(Mce,"upsert");o(Oce,"prettyPrintCommitHistory");$Fe=o(function(){Y.debug(_t.records.commits);let t=Pce()[0];Oce([t])},"prettyPrint"),VFe=o(function(){_t.reset(),Dr()},"clear"),UFe=o(function(){return[..._t.records.branchConfig.values()].map((e,r)=>e.order!==null&&e.order!==void 0?e:{...e,order:parseFloat(`0.${r}`)}).sort((e,r)=>(e.order??0)-(r.order??0)).map(({name:e})=>({name:e}))},"getBranchesAsObjArray"),HFe=o(function(){return _t.records.branches},"getBranches"),WFe=o(function(){return _t.records.commits},"getCommits"),Pce=o(function(){let t=[..._t.records.commits.values()];return t.forEach(function(e){Y.debug(e.id)}),t.sort((e,r)=>e.seq-r.seq),t},"getCommitsArray"),qFe=o(function(){return _t.records.currBranch},"getCurrentBranch"),YFe=o(function(){return _t.records.direction},"getDirection"),XFe=o(function(){return _t.records.head},"getHead"),YE={commitType:jr,getConfig:Tp,setDirection:IFe,setOptions:OFe,getOptions:PFe,commit:BFe,branch:FFe,merge:zFe,cherryPick:GFe,checkout:Ice,prettyPrint:$Fe,clear:VFe,getBranchesAsObjArray:UFe,getBranches:HFe,getCommits:WFe,getCommitsArray:Pce,getCurrentBranch:qFe,getDirection:YFe,getHead:XFe,setAccTitle:Mr,getAccTitle:Or,getAccDescription:Br,setAccDescription:Pr,setDiagramTitle:Zr,getDiagramTitle:Fr}});var jFe,KFe,QFe,ZFe,JFe,eze,tze,Bce,Fce=M(()=>{"use strict";y1();vt();Jx();DI();WE();jFe=o((t,e)=>{uf(t,e),t.dir&&e.setDirection(t.dir);for(let r of t.statements)KFe(r,e)},"populate"),KFe=o((t,e)=>{let n={Commit:o(i=>e.commit(QFe(i)),"Commit"),Branch:o(i=>e.branch(ZFe(i)),"Branch"),Merge:o(i=>e.merge(JFe(i)),"Merge"),Checkout:o(i=>e.checkout(eze(i)),"Checkout"),CherryPicking:o(i=>e.cherryPick(tze(i)),"CherryPicking")}[t.$type];n?n(t):Y.error(`Unknown statement type: ${t.$type}`)},"parseStatement"),QFe=o(t=>({id:t.id,msg:t.message??"",type:t.type!==void 0?jr[t.type]:jr.NORMAL,tags:t.tags??void 0}),"parseCommit"),ZFe=o(t=>({name:t.name,order:t.order??0}),"parseBranch"),JFe=o(t=>({branch:t.branch,id:t.id??"",type:t.type!==void 0?jr[t.type]:void 0,tags:t.tags??void 0}),"parseMerge"),eze=o(t=>t.branch,"parseCheckout"),tze=o(t=>({id:t.id,targetId:"",tags:t.tags?.length===0?void 0:t.tags,parent:t.parent}),"parseCherryPicking"),Bce={parse:o(async t=>{let e=await Fl("gitGraph",t);Y.debug(e),jFe(e,YE)},"parse")}});var rze,Yo,df,pf,Fc,Vu,kp,Ps,Bs,XE,eb,jE,ff,Nr,nze,Gce,$ce,ize,aze,sze,oze,lze,cze,uze,hze,fze,dze,pze,mze,zce,gze,tb,yze,vze,xze,bze,wze,Vce,Uce=M(()=>{"use strict";hr();Gt();vt();sr();WE();rze=me(),Yo=rze?.gitGraph,df=10,pf=40,Fc=4,Vu=2,kp=8,Ps=new Map,Bs=new Map,XE=30,eb=new Map,jE=[],ff=0,Nr="LR",nze=o(()=>{Ps.clear(),Bs.clear(),eb.clear(),ff=0,jE=[],Nr="LR"},"clear"),Gce=o(t=>{let e=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof t=="string"?t.split(/\\n|\n|/gi):t).forEach(n=>{let i=document.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),i.setAttribute("dy","1em"),i.setAttribute("x","0"),i.setAttribute("class","row"),i.textContent=n.trim(),e.appendChild(i)}),e},"drawText"),$ce=o(t=>{let e,r,n;return Nr==="BT"?(r=o((i,a)=>i<=a,"comparisonFunc"),n=1/0):(r=o((i,a)=>i>=a,"comparisonFunc"),n=0),t.forEach(i=>{let a=Nr==="TB"||Nr=="BT"?Bs.get(i)?.y:Bs.get(i)?.x;a!==void 0&&r(a,n)&&(e=i,n=a)}),e},"findClosestParent"),ize=o(t=>{let e="",r=1/0;return t.forEach(n=>{let i=Bs.get(n).y;i<=r&&(e=n,r=i)}),e||void 0},"findClosestParentBT"),aze=o((t,e,r)=>{let n=r,i=r,a=[];t.forEach(s=>{let l=e.get(s);if(!l)throw new Error(`Commit not found for key ${s}`);l.parents.length?(n=oze(l),i=Math.max(n,i)):a.push(l),lze(l,n)}),n=i,a.forEach(s=>{cze(s,n,r)}),t.forEach(s=>{let l=e.get(s);if(l?.parents.length){let u=ize(l.parents);n=Bs.get(u).y-pf,n<=i&&(i=n);let h=Ps.get(l.branch).pos,f=n-df;Bs.set(l.id,{x:h,y:f})}})},"setParallelBTPos"),sze=o(t=>{let e=$ce(t.parents.filter(n=>n!==null));if(!e)throw new Error(`Closest parent not found for commit ${t.id}`);let r=Bs.get(e)?.y;if(r===void 0)throw new Error(`Closest parent position not found for commit ${t.id}`);return r},"findClosestParentPos"),oze=o(t=>sze(t)+pf,"calculateCommitPosition"),lze=o((t,e)=>{let r=Ps.get(t.branch);if(!r)throw new Error(`Branch not found for commit ${t.id}`);let n=r.pos,i=e+df;return Bs.set(t.id,{x:n,y:i}),{x:n,y:i}},"setCommitPosition"),cze=o((t,e,r)=>{let n=Ps.get(t.branch);if(!n)throw new Error(`Branch not found for commit ${t.id}`);let i=e+r,a=n.pos;Bs.set(t.id,{x:a,y:i})},"setRootPosition"),uze=o((t,e,r,n,i,a)=>{if(a===jr.HIGHLIGHT)t.append("rect").attr("x",r.x-10).attr("y",r.y-10).attr("width",20).attr("height",20).attr("class",`commit ${e.id} commit-highlight${i%kp} ${n}-outer`),t.append("rect").attr("x",r.x-6).attr("y",r.y-6).attr("width",12).attr("height",12).attr("class",`commit ${e.id} commit${i%kp} ${n}-inner`);else if(a===jr.CHERRY_PICK)t.append("circle").attr("cx",r.x).attr("cy",r.y).attr("r",10).attr("class",`commit ${e.id} ${n}`),t.append("circle").attr("cx",r.x-3).attr("cy",r.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} ${n}`),t.append("circle").attr("cx",r.x+3).attr("cy",r.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} ${n}`),t.append("line").attr("x1",r.x+3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} ${n}`),t.append("line").attr("x1",r.x-3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} ${n}`);else{let s=t.append("circle");if(s.attr("cx",r.x),s.attr("cy",r.y),s.attr("r",e.type===jr.MERGE?9:10),s.attr("class",`commit ${e.id} commit${i%kp}`),a===jr.MERGE){let l=t.append("circle");l.attr("cx",r.x),l.attr("cy",r.y),l.attr("r",6),l.attr("class",`commit ${n} ${e.id} commit${i%kp}`)}a===jr.REVERSE&&t.append("path").attr("d",`M ${r.x-5},${r.y-5}L${r.x+5},${r.y+5}M${r.x-5},${r.y+5}L${r.x+5},${r.y-5}`).attr("class",`commit ${n} ${e.id} commit${i%kp}`)}},"drawCommitBullet"),hze=o((t,e,r,n)=>{if(e.type!==jr.CHERRY_PICK&&(e.customId&&e.type===jr.MERGE||e.type!==jr.MERGE)&&Yo?.showCommitLabel){let i=t.append("g"),a=i.insert("rect").attr("class","commit-label-bkg"),s=i.append("text").attr("x",n).attr("y",r.y+25).attr("class","commit-label").text(e.id),l=s.node()?.getBBox();if(l&&(a.attr("x",r.posWithOffset-l.width/2-Vu).attr("y",r.y+13.5).attr("width",l.width+2*Vu).attr("height",l.height+2*Vu),Nr==="TB"||Nr==="BT"?(a.attr("x",r.x-(l.width+4*Fc+5)).attr("y",r.y-12),s.attr("x",r.x-(l.width+4*Fc)).attr("y",r.y+l.height-12)):s.attr("x",r.posWithOffset-l.width/2),Yo.rotateCommitLabel))if(Nr==="TB"||Nr==="BT")s.attr("transform","rotate(-45, "+r.x+", "+r.y+")"),a.attr("transform","rotate(-45, "+r.x+", "+r.y+")");else{let u=-7.5-(l.width+10)/25*9.5,h=10+l.width/25*8.5;i.attr("transform","translate("+u+", "+h+") rotate(-45, "+n+", "+r.y+")")}}},"drawCommitLabel"),fze=o((t,e,r,n)=>{if(e.tags.length>0){let i=0,a=0,s=0,l=[];for(let u of e.tags.reverse()){let h=t.insert("polygon"),f=t.append("circle"),d=t.append("text").attr("y",r.y-16-i).attr("class","tag-label").text(u),p=d.node()?.getBBox();if(!p)throw new Error("Tag bbox not found");a=Math.max(a,p.width),s=Math.max(s,p.height),d.attr("x",r.posWithOffset-p.width/2),l.push({tag:d,hole:f,rect:h,yOffset:i}),i+=20}for(let{tag:u,hole:h,rect:f,yOffset:d}of l){let p=s/2,m=r.y-19.2-d;if(f.attr("class","tag-label-bkg").attr("points",` + ${n-a/2-Fc/2},${m+Vu} + ${n-a/2-Fc/2},${m-Vu} + ${r.posWithOffset-a/2-Fc},${m-p-Vu} + ${r.posWithOffset+a/2+Fc},${m-p-Vu} + ${r.posWithOffset+a/2+Fc},${m+p+Vu} + ${r.posWithOffset-a/2-Fc},${m+p+Vu}`),h.attr("cy",m).attr("cx",n-a/2+Fc/2).attr("r",1.5).attr("class","tag-hole"),Nr==="TB"||Nr==="BT"){let g=n+d;f.attr("class","tag-label-bkg").attr("points",` ${r.x},${g+2} ${r.x},${g-2} - ${r.x+hf},${g-p-2} - ${r.x+hf+a+4},${g-p-2} - ${r.x+hf+a+4},${g+p+2} - ${r.x+hf},${g+p+2}`).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),h.attr("cx",r.x+Pc/2).attr("cy",g).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),u.attr("x",r.x+5).attr("y",g+3).attr("transform","translate(14,14) rotate(45, "+r.x+","+n+")")}}}},"drawCommitTags"),l$e=o(t=>{switch(t.customType??t.type){case jr.NORMAL:return"commit-normal";case jr.REVERSE:return"commit-reverse";case jr.HIGHLIGHT:return"commit-highlight";case jr.MERGE:return"commit-merge";case jr.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),c$e=o((t,e,r,n)=>{let i={x:0,y:0};if(t.parents.length>0){let a=Nue(t.parents);if(a){let s=n.get(a)??i;return e==="TB"?s.y+ff:e==="BT"?(n.get(t.id)??i).y-ff:s.x+ff}}else return e==="TB"?nE:e==="BT"?(n.get(t.id)??i).y-ff:0;return 0},"calculatePosition"),u$e=o((t,e,r)=>{let n=Nr==="BT"&&r?e:e+hf,i=Nr==="TB"||Nr==="BT"?n:Ps.get(t.branch)?.pos,a=Nr==="TB"||Nr==="BT"?Ps.get(t.branch)?.pos:n;if(a===void 0||i===void 0)throw new Error(`Position were undefined for commit ${t.id}`);return{x:a,y:i,posWithOffset:n}},"getCommitPosition"),Lue=o((t,e,r)=>{if(!el)throw new Error("GitGraph config not found");let n=t.append("g").attr("class","commit-bullets"),i=t.append("g").attr("class","commit-labels"),a=Nr==="TB"||Nr==="BT"?nE:0,s=[...e.keys()],l=el?.parallelCommits??!1,u=o((f,d)=>{let p=e.get(f)?.seq,m=e.get(d)?.seq;return p!==void 0&&m!==void 0?p-m:0},"sortKeys"),h=s.sort(u);Nr==="BT"&&(l&&e$e(h,e,a),h=h.reverse()),h.forEach(f=>{let d=e.get(f);if(!d)throw new Error(`Commit not found for key ${f}`);l&&(a=c$e(d,Nr,a,Bs));let p=u$e(d,a,l);if(r){let m=l$e(d),g=d.customType??d.type,y=Ps.get(d.branch)?.index??0;a$e(n,d,p,m,y,g),s$e(i,d,p,a),o$e(i,d,p,a)}Nr==="TB"||Nr==="BT"?Bs.set(d.id,{x:p.x,y:p.posWithOffset}):Bs.set(d.id,{x:p.posWithOffset,y:p.y}),a=Nr==="BT"&&l?a+ff:a+ff+hf,a>uf&&(uf=a)})},"drawCommits"),h$e=o((t,e,r,n,i)=>{let s=(Nr==="TB"||Nr==="BT"?r.xh.branch===s,"isOnBranchToGetCurve"),u=o(h=>h.seq>t.seq&&h.sequ(h)&&l(h))},"shouldRerouteArrow"),cx=o((t,e,r=0)=>{let n=t+Math.abs(t-e)/2;if(r>5)return n;if(iE.every(s=>Math.abs(s-n)>=10))return iE.push(n),n;let a=Math.abs(t-e);return cx(t,e-a/5,r+1)},"findLane"),f$e=o((t,e,r,n)=>{let i=Bs.get(e.id),a=Bs.get(r.id);if(i===void 0||a===void 0)throw new Error(`Commit positions not found for commits ${e.id} and ${r.id}`);let s=h$e(e,r,i,a,n),l="",u="",h=0,f=0,d=Ps.get(r.branch)?.index;r.type===jr.MERGE&&e.id!==r.parents[0]&&(d=Ps.get(e.branch)?.index);let p;if(s){l="A 10 10, 0, 0, 0,",u="A 10 10, 0, 0, 1,",h=10,f=10;let m=i.ya.x&&(l="A 20 20, 0, 0, 0,",u="A 20 20, 0, 0, 1,",h=20,f=20,r.type===jr.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${i.x} ${a.y-h} ${u} ${i.x-f} ${a.y} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${a.x+h} ${i.y} ${l} ${a.x} ${i.y+f} L ${a.x} ${a.y}`),i.x===a.x&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`)):Nr==="BT"?(i.xa.x&&(l="A 20 20, 0, 0, 0,",u="A 20 20, 0, 0, 1,",h=20,f=20,r.type===jr.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${i.x} ${a.y+h} ${l} ${i.x-f} ${a.y} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${a.x-h} ${i.y} ${l} ${a.x} ${i.y-f} L ${a.x} ${a.y}`),i.x===a.x&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`)):(i.ya.y&&(r.type===jr.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${a.x-h} ${i.y} ${l} ${a.x} ${i.y-f} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${i.x} ${a.y+h} ${u} ${i.x+f} ${a.y} L ${a.x} ${a.y}`),i.y===a.y&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`));if(p===void 0)throw new Error("Line definition not found");t.append("path").attr("d",p).attr("class","arrow arrow"+d%b0)},"drawArrow"),d$e=o((t,e)=>{let r=t.append("g").attr("class","commit-arrows");[...e.keys()].forEach(n=>{let i=e.get(n);i.parents&&i.parents.length>0&&i.parents.forEach(a=>{f$e(r,e.get(a),i,e)})})},"drawArrows"),p$e=o((t,e)=>{let r=t.append("g");e.forEach((n,i)=>{let a=i%b0,s=Ps.get(n.name)?.pos;if(s===void 0)throw new Error(`Position not found for branch ${n.name}`);let l=r.append("line");l.attr("x1",0),l.attr("y1",s),l.attr("x2",uf),l.attr("y2",s),l.attr("class","branch branch"+a),Nr==="TB"?(l.attr("y1",nE),l.attr("x1",s),l.attr("y2",uf),l.attr("x2",s)):Nr==="BT"&&(l.attr("y1",uf),l.attr("x1",s),l.attr("y2",nE),l.attr("x2",s)),iE.push(s);let u=n.name,h=Due(u),f=r.insert("rect"),p=r.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+a);p.node().appendChild(h);let m=h.getBBox();f.attr("class","branchLabelBkg label"+a).attr("rx",4).attr("ry",4).attr("x",-m.width-4-(el?.rotateCommitLabel===!0?30:0)).attr("y",-m.height/2+8).attr("width",m.width+18).attr("height",m.height+4),p.attr("transform","translate("+(-m.width-14-(el?.rotateCommitLabel===!0?30:0))+", "+(s-m.height/2-1)+")"),Nr==="TB"?(f.attr("x",s-m.width/2-10).attr("y",0),p.attr("transform","translate("+(s-m.width/2-5)+", 0)")):Nr==="BT"?(f.attr("x",s-m.width/2-10).attr("y",uf),p.attr("transform","translate("+(s-m.width/2-5)+", "+uf+")")):f.attr("transform","translate(-19, "+(s-m.height/2)+")")})},"drawBranches"),m$e=o(function(t,e,r,n,i){return Ps.set(t,{pos:e,index:r}),e+=50+(i?40:0)+(Nr==="TB"||Nr==="BT"?n.width/2:0),e},"setBranchPosition"),g$e=o(function(t,e,r,n){if(ZGe(),Y.debug("in gitgraph renderer",t+` -`,"id:",e,r),!el)throw new Error("GitGraph config not found");let i=el.rotateCommitLabel??!1,a=n.db;lx=a.getCommits();let s=a.getBranchesAsObjArray();Nr=a.getDirection();let l=ze(`[id="${e}"]`),u=0;s.forEach((h,f)=>{let d=Due(h.name),p=l.append("g"),m=p.insert("g").attr("class","branchLabel"),g=m.insert("g").attr("class","label branch-label");g.node()?.appendChild(d);let y=d.getBBox();u=m$e(h.name,u,f,y,i),g.remove(),m.remove(),p.remove()}),Lue(l,lx,!1),el.showBranches&&p$e(l,s),d$e(l,lx),Lue(l,lx,!0),Ut.insertTitle(l,"gitTitleText",el.titleTopMargin??0,a.getDiagramTitle()),a7(void 0,l,el.diagramPadding,el.useMaxWidth)},"draw"),Rue={draw:g$e}});var y$e,Iue,Oue=M(()=>{"use strict";y$e=o(t=>` + ${r.x+df},${g-p-2} + ${r.x+df+a+4},${g-p-2} + ${r.x+df+a+4},${g+p+2} + ${r.x+df},${g+p+2}`).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),h.attr("cx",r.x+Fc/2).attr("cy",g).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),u.attr("x",r.x+5).attr("y",g+3).attr("transform","translate(14,14) rotate(45, "+r.x+","+n+")")}}}},"drawCommitTags"),dze=o(t=>{switch(t.customType??t.type){case jr.NORMAL:return"commit-normal";case jr.REVERSE:return"commit-reverse";case jr.HIGHLIGHT:return"commit-highlight";case jr.MERGE:return"commit-merge";case jr.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),pze=o((t,e,r,n)=>{let i={x:0,y:0};if(t.parents.length>0){let a=$ce(t.parents);if(a){let s=n.get(a)??i;return e==="TB"?s.y+pf:e==="BT"?(n.get(t.id)??i).y-pf:s.x+pf}}else return e==="TB"?XE:e==="BT"?(n.get(t.id)??i).y-pf:0;return 0},"calculatePosition"),mze=o((t,e,r)=>{let n=Nr==="BT"&&r?e:e+df,i=Nr==="TB"||Nr==="BT"?n:Ps.get(t.branch)?.pos,a=Nr==="TB"||Nr==="BT"?Ps.get(t.branch)?.pos:n;if(a===void 0||i===void 0)throw new Error(`Position were undefined for commit ${t.id}`);return{x:a,y:i,posWithOffset:n}},"getCommitPosition"),zce=o((t,e,r)=>{if(!Yo)throw new Error("GitGraph config not found");let n=t.append("g").attr("class","commit-bullets"),i=t.append("g").attr("class","commit-labels"),a=Nr==="TB"||Nr==="BT"?XE:0,s=[...e.keys()],l=Yo?.parallelCommits??!1,u=o((f,d)=>{let p=e.get(f)?.seq,m=e.get(d)?.seq;return p!==void 0&&m!==void 0?p-m:0},"sortKeys"),h=s.sort(u);Nr==="BT"&&(l&&aze(h,e,a),h=h.reverse()),h.forEach(f=>{let d=e.get(f);if(!d)throw new Error(`Commit not found for key ${f}`);l&&(a=pze(d,Nr,a,Bs));let p=mze(d,a,l);if(r){let m=dze(d),g=d.customType??d.type,y=Ps.get(d.branch)?.index??0;uze(n,d,p,m,y,g),hze(i,d,p,a),fze(i,d,p,a)}Nr==="TB"||Nr==="BT"?Bs.set(d.id,{x:p.x,y:p.posWithOffset}):Bs.set(d.id,{x:p.posWithOffset,y:p.y}),a=Nr==="BT"&&l?a+pf:a+pf+df,a>ff&&(ff=a)})},"drawCommits"),gze=o((t,e,r,n,i)=>{let s=(Nr==="TB"||Nr==="BT"?r.xh.branch===s,"isOnBranchToGetCurve"),u=o(h=>h.seq>t.seq&&h.sequ(h)&&l(h))},"shouldRerouteArrow"),tb=o((t,e,r=0)=>{let n=t+Math.abs(t-e)/2;if(r>5)return n;if(jE.every(s=>Math.abs(s-n)>=10))return jE.push(n),n;let a=Math.abs(t-e);return tb(t,e-a/5,r+1)},"findLane"),yze=o((t,e,r,n)=>{let i=Bs.get(e.id),a=Bs.get(r.id);if(i===void 0||a===void 0)throw new Error(`Commit positions not found for commits ${e.id} and ${r.id}`);let s=gze(e,r,i,a,n),l="",u="",h=0,f=0,d=Ps.get(r.branch)?.index;r.type===jr.MERGE&&e.id!==r.parents[0]&&(d=Ps.get(e.branch)?.index);let p;if(s){l="A 10 10, 0, 0, 0,",u="A 10 10, 0, 0, 1,",h=10,f=10;let m=i.ya.x&&(l="A 20 20, 0, 0, 0,",u="A 20 20, 0, 0, 1,",h=20,f=20,r.type===jr.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${i.x} ${a.y-h} ${u} ${i.x-f} ${a.y} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${a.x+h} ${i.y} ${l} ${a.x} ${i.y+f} L ${a.x} ${a.y}`),i.x===a.x&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`)):Nr==="BT"?(i.xa.x&&(l="A 20 20, 0, 0, 0,",u="A 20 20, 0, 0, 1,",h=20,f=20,r.type===jr.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${i.x} ${a.y+h} ${l} ${i.x-f} ${a.y} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${a.x-h} ${i.y} ${l} ${a.x} ${i.y-f} L ${a.x} ${a.y}`),i.x===a.x&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`)):(i.ya.y&&(r.type===jr.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${a.x-h} ${i.y} ${l} ${a.x} ${i.y-f} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${i.x} ${a.y+h} ${u} ${i.x+f} ${a.y} L ${a.x} ${a.y}`),i.y===a.y&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`));if(p===void 0)throw new Error("Line definition not found");t.append("path").attr("d",p).attr("class","arrow arrow"+d%kp)},"drawArrow"),vze=o((t,e)=>{let r=t.append("g").attr("class","commit-arrows");[...e.keys()].forEach(n=>{let i=e.get(n);i.parents&&i.parents.length>0&&i.parents.forEach(a=>{yze(r,e.get(a),i,e)})})},"drawArrows"),xze=o((t,e)=>{let r=t.append("g");e.forEach((n,i)=>{let a=i%kp,s=Ps.get(n.name)?.pos;if(s===void 0)throw new Error(`Position not found for branch ${n.name}`);let l=r.append("line");l.attr("x1",0),l.attr("y1",s),l.attr("x2",ff),l.attr("y2",s),l.attr("class","branch branch"+a),Nr==="TB"?(l.attr("y1",XE),l.attr("x1",s),l.attr("y2",ff),l.attr("x2",s)):Nr==="BT"&&(l.attr("y1",ff),l.attr("x1",s),l.attr("y2",XE),l.attr("x2",s)),jE.push(s);let u=n.name,h=Gce(u),f=r.insert("rect"),p=r.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+a);p.node().appendChild(h);let m=h.getBBox();f.attr("class","branchLabelBkg label"+a).attr("rx",4).attr("ry",4).attr("x",-m.width-4-(Yo?.rotateCommitLabel===!0?30:0)).attr("y",-m.height/2+8).attr("width",m.width+18).attr("height",m.height+4),p.attr("transform","translate("+(-m.width-14-(Yo?.rotateCommitLabel===!0?30:0))+", "+(s-m.height/2-1)+")"),Nr==="TB"?(f.attr("x",s-m.width/2-10).attr("y",0),p.attr("transform","translate("+(s-m.width/2-5)+", 0)")):Nr==="BT"?(f.attr("x",s-m.width/2-10).attr("y",ff),p.attr("transform","translate("+(s-m.width/2-5)+", "+ff+")")):f.attr("transform","translate(-19, "+(s-m.height/2)+")")})},"drawBranches"),bze=o(function(t,e,r,n,i){return Ps.set(t,{pos:e,index:r}),e+=50+(i?40:0)+(Nr==="TB"||Nr==="BT"?n.width/2:0),e},"setBranchPosition"),wze=o(function(t,e,r,n){if(nze(),Y.debug("in gitgraph renderer",t+` +`,"id:",e,r),!Yo)throw new Error("GitGraph config not found");let i=Yo.rotateCommitLabel??!1,a=n.db;eb=a.getCommits();let s=a.getBranchesAsObjArray();Nr=a.getDirection();let l=$e(`[id="${e}"]`),u=0;s.forEach((h,f)=>{let d=Gce(h.name),p=l.append("g"),m=p.insert("g").attr("class","branchLabel"),g=m.insert("g").attr("class","label branch-label");g.node()?.appendChild(d);let y=d.getBBox();u=bze(h.name,u,f,y,i),g.remove(),m.remove(),p.remove()}),zce(l,eb,!1),Yo.showBranches&&xze(l,s),vze(l,eb),zce(l,eb,!0),$t.insertTitle(l,"gitTitleText",Yo.titleTopMargin??0,a.getDiagramTitle()),Y7(void 0,l,Yo.diagramPadding,Yo.useMaxWidth)},"draw"),Vce={draw:wze}});var Tze,Hce,Wce=M(()=>{"use strict";Tze=o(t=>` .commit-id, .commit-msg, .branch-label { @@ -841,14 +877,14 @@ ${r}`),this.inline?`{${i}}`:i}};o(qze,"renderInlineTag");o(Xze,"renderLinkDefaul font-size: 18px; fill: ${t.textColor}; } -`,"getStyles"),Iue=y$e});var Pue={};vr(Pue,{diagram:()=>v$e});var v$e,Bue=M(()=>{"use strict";_ue();MI();Mue();Oue();v$e={parser:Aue,db:rE,renderer:Rue,styles:Iue}});var II,Gue,$ue=M(()=>{"use strict";II=function(){var t=o(function(R,S,O,N){for(O=O||{},N=R.length;N--;O[R[N]]=S);return O},"o"),e=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],r=[1,26],n=[1,27],i=[1,28],a=[1,29],s=[1,30],l=[1,31],u=[1,32],h=[1,33],f=[1,34],d=[1,9],p=[1,10],m=[1,11],g=[1,12],y=[1,13],v=[1,14],x=[1,15],b=[1,16],w=[1,19],_=[1,20],T=[1,21],E=[1,22],L=[1,23],C=[1,25],A=[1,35],I={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:o(function(S,O,N,P,F,B,$){var z=B.length-1;switch(F){case 1:return B[z-1];case 2:this.$=[];break;case 3:B[z-1].push(B[z]),this.$=B[z-1];break;case 4:case 5:this.$=B[z];break;case 6:case 7:this.$=[];break;case 8:P.setWeekday("monday");break;case 9:P.setWeekday("tuesday");break;case 10:P.setWeekday("wednesday");break;case 11:P.setWeekday("thursday");break;case 12:P.setWeekday("friday");break;case 13:P.setWeekday("saturday");break;case 14:P.setWeekday("sunday");break;case 15:P.setWeekend("friday");break;case 16:P.setWeekend("saturday");break;case 17:P.setDateFormat(B[z].substr(11)),this.$=B[z].substr(11);break;case 18:P.enableInclusiveEndDates(),this.$=B[z].substr(18);break;case 19:P.TopAxis(),this.$=B[z].substr(8);break;case 20:P.setAxisFormat(B[z].substr(11)),this.$=B[z].substr(11);break;case 21:P.setTickInterval(B[z].substr(13)),this.$=B[z].substr(13);break;case 22:P.setExcludes(B[z].substr(9)),this.$=B[z].substr(9);break;case 23:P.setIncludes(B[z].substr(9)),this.$=B[z].substr(9);break;case 24:P.setTodayMarker(B[z].substr(12)),this.$=B[z].substr(12);break;case 27:P.setDiagramTitle(B[z].substr(6)),this.$=B[z].substr(6);break;case 28:this.$=B[z].trim(),P.setAccTitle(this.$);break;case 29:case 30:this.$=B[z].trim(),P.setAccDescription(this.$);break;case 31:P.addSection(B[z].substr(8)),this.$=B[z].substr(8);break;case 33:P.addTask(B[z-1],B[z]),this.$="task";break;case 34:this.$=B[z-1],P.setClickEvent(B[z-1],B[z],null);break;case 35:this.$=B[z-2],P.setClickEvent(B[z-2],B[z-1],B[z]);break;case 36:this.$=B[z-2],P.setClickEvent(B[z-2],B[z-1],null),P.setLink(B[z-2],B[z]);break;case 37:this.$=B[z-3],P.setClickEvent(B[z-3],B[z-2],B[z-1]),P.setLink(B[z-3],B[z]);break;case 38:this.$=B[z-2],P.setClickEvent(B[z-2],B[z],null),P.setLink(B[z-2],B[z-1]);break;case 39:this.$=B[z-3],P.setClickEvent(B[z-3],B[z-1],B[z]),P.setLink(B[z-3],B[z-2]);break;case 40:this.$=B[z-1],P.setLink(B[z-1],B[z]);break;case 41:case 47:this.$=B[z-1]+" "+B[z];break;case 42:case 43:case 45:this.$=B[z-2]+" "+B[z-1]+" "+B[z];break;case 44:case 46:this.$=B[z-3]+" "+B[z-2]+" "+B[z-1]+" "+B[z];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:f,22:d,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:w,31:_,33:T,35:E,36:L,37:24,38:C,40:A},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:36,11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:f,22:d,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:w,31:_,33:T,35:E,36:L,37:24,38:C,40:A},t(e,[2,5]),t(e,[2,6]),t(e,[2,17]),t(e,[2,18]),t(e,[2,19]),t(e,[2,20]),t(e,[2,21]),t(e,[2,22]),t(e,[2,23]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),t(e,[2,27]),{32:[1,37]},{34:[1,38]},t(e,[2,30]),t(e,[2,31]),t(e,[2,32]),{39:[1,39]},t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),{41:[1,40],43:[1,41]},t(e,[2,4]),t(e,[2,28]),t(e,[2,29]),t(e,[2,33]),t(e,[2,34],{42:[1,42],43:[1,43]}),t(e,[2,40],{41:[1,44]}),t(e,[2,35],{43:[1,45]}),t(e,[2,36]),t(e,[2,38],{42:[1,46]}),t(e,[2,37]),t(e,[2,39])],defaultActions:{},parseError:o(function(S,O){if(O.recoverable)this.trace(S);else{var N=new Error(S);throw N.hash=O,N}},"parseError"),parse:o(function(S){var O=this,N=[0],P=[],F=[null],B=[],$=this.table,z="",W=0,j=0,K=0,ie=2,Q=1,ee=B.slice.call(arguments,1),J=Object.create(this.lexer),H={yy:{}};for(var q in this.yy)Object.prototype.hasOwnProperty.call(this.yy,q)&&(H.yy[q]=this.yy[q]);J.setInput(S,H.yy),H.yy.lexer=J,H.yy.parser=this,typeof J.yylloc>"u"&&(J.yylloc={});var Z=J.yylloc;B.push(Z);var ae=J.options&&J.options.ranges;typeof H.yy.parseError=="function"?this.parseError=H.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ue(he){N.length=N.length-2*he,F.length=F.length-he,B.length=B.length-he}o(ue,"popStack");function ce(){var he;return he=P.pop()||J.lex()||Q,typeof he!="number"&&(he instanceof Array&&(P=he,he=P.pop()),he=O.symbols_[he]||he),he}o(ce,"lex");for(var te,De,oe,ke,Fe,Be,Ve={},Ge,He,xe,X;;){if(oe=N[N.length-1],this.defaultActions[oe]?ke=this.defaultActions[oe]:((te===null||typeof te>"u")&&(te=ce()),ke=$[oe]&&$[oe][te]),typeof ke>"u"||!ke.length||!ke[0]){var fe="";X=[];for(Ge in $[oe])this.terminals_[Ge]&&Ge>ie&&X.push("'"+this.terminals_[Ge]+"'");J.showPosition?fe="Parse error on line "+(W+1)+`: -`+J.showPosition()+` -Expecting `+X.join(", ")+", got '"+(this.terminals_[te]||te)+"'":fe="Parse error on line "+(W+1)+": Unexpected "+(te==Q?"end of input":"'"+(this.terminals_[te]||te)+"'"),this.parseError(fe,{text:J.match,token:this.terminals_[te]||te,line:J.yylineno,loc:Z,expected:X})}if(ke[0]instanceof Array&&ke.length>1)throw new Error("Parse Error: multiple actions possible at state: "+oe+", token: "+te);switch(ke[0]){case 1:N.push(te),F.push(J.yytext),B.push(J.yylloc),N.push(ke[1]),te=null,De?(te=De,De=null):(j=J.yyleng,z=J.yytext,W=J.yylineno,Z=J.yylloc,K>0&&K--);break;case 2:if(He=this.productions_[ke[1]][1],Ve.$=F[F.length-He],Ve._$={first_line:B[B.length-(He||1)].first_line,last_line:B[B.length-1].last_line,first_column:B[B.length-(He||1)].first_column,last_column:B[B.length-1].last_column},ae&&(Ve._$.range=[B[B.length-(He||1)].range[0],B[B.length-1].range[1]]),Be=this.performAction.apply(Ve,[z,j,W,H.yy,ke[1],F,B].concat(ee)),typeof Be<"u")return Be;He&&(N=N.slice(0,-1*He*2),F=F.slice(0,-1*He),B=B.slice(0,-1*He)),N.push(this.productions_[ke[1]][0]),F.push(Ve.$),B.push(Ve._$),xe=$[N[N.length-2]][N[N.length-1]],N.push(xe);break;case 3:return!0}}return!0},"parse")},D=function(){var R={EOF:1,parseError:o(function(O,N){if(this.yy.parser)this.yy.parser.parseError(O,N);else throw new Error(O)},"parseError"),setInput:o(function(S,O){return this.yy=O||this.yy||{},this._input=S,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var S=this._input[0];this.yytext+=S,this.yyleng++,this.offset++,this.match+=S,this.matched+=S;var O=S.match(/(?:\r\n?|\n).*/g);return O?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),S},"input"),unput:o(function(S){var O=S.length,N=S.split(/(?:\r\n?|\n)/g);this._input=S+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-O),this.offset-=O;var P=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),N.length-1&&(this.yylineno-=N.length-1);var F=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:N?(N.length===P.length?this.yylloc.first_column:0)+P[P.length-N.length].length-N[0].length:this.yylloc.first_column-O},this.options.ranges&&(this.yylloc.range=[F[0],F[0]+this.yyleng-O]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(S){this.unput(this.match.slice(S))},"less"),pastInput:o(function(){var S=this.matched.substr(0,this.matched.length-this.match.length);return(S.length>20?"...":"")+S.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var S=this.match;return S.length<20&&(S+=this._input.substr(0,20-S.length)),(S.substr(0,20)+(S.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var S=this.pastInput(),O=new Array(S.length+1).join("-");return S+this.upcomingInput()+` -`+O+"^"},"showPosition"),test_match:o(function(S,O){var N,P,F;if(this.options.backtrack_lexer&&(F={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(F.yylloc.range=this.yylloc.range.slice(0))),P=S[0].match(/(?:\r\n?|\n).*/g),P&&(this.yylineno+=P.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:P?P[P.length-1].length-P[P.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+S[0].length},this.yytext+=S[0],this.match+=S[0],this.matches=S,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(S[0].length),this.matched+=S[0],N=this.performAction.call(this,this.yy,this,O,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),N)return N;if(this._backtrack){for(var B in F)this[B]=F[B];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var S,O,N,P;this._more||(this.yytext="",this.match="");for(var F=this._currentRules(),B=0;BO[0].length)){if(O=N,P=B,this.options.backtrack_lexer){if(S=this.test_match(N,F[B]),S!==!1)return S;if(this._backtrack){O=!1;continue}else return!1}else if(!this.options.flex)break}return O?(S=this.test_match(O,F[P]),S!==!1?S:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var O=this.next();return O||this.lex()},"lex"),begin:o(function(O){this.conditionStack.push(O)},"begin"),popState:o(function(){var O=this.conditionStack.length-1;return O>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(O){return O=this.conditionStack.length-1-Math.abs(O||0),O>=0?this.conditionStack[O]:"INITIAL"},"topState"),pushState:o(function(O){this.begin(O)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(O,N,P,F){var B=F;switch(P){case 0:return this.begin("open_directive"),"open_directive";break;case 1:return this.begin("acc_title"),31;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),33;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:this.begin("href");break;case 15:this.popState();break;case 16:return 43;case 17:this.begin("callbackname");break;case 18:this.popState();break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 21:this.popState();break;case 22:return 42;case 23:this.begin("click");break;case 24:this.popState();break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}};return R}();I.lexer=D;function k(){this.yy={}}return o(k,"Parser"),k.prototype=I,I.Parser=k,new k}();II.parser=II;Gue=II});var Vue=Ni((OI,PI)=>{"use strict";(function(t,e){typeof OI=="object"&&typeof PI<"u"?PI.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_isoWeek=e()})(OI,function(){"use strict";var t="day";return function(e,r,n){var i=o(function(l){return l.add(4-l.isoWeekday(),t)},"a"),a=r.prototype;a.isoWeekYear=function(){return i(this).year()},a.isoWeek=function(l){if(!this.$utils().u(l))return this.add(7*(l-this.isoWeek()),t);var u,h,f,d,p=i(this),m=(u=this.isoWeekYear(),h=this.$u,f=(h?n.utc:n)().year(u).startOf("year"),d=4-f.isoWeekday(),f.isoWeekday()>4&&(d+=7),f.add(d,t));return p.diff(m,"week")+1},a.isoWeekday=function(l){return this.$utils().u(l)?this.day()||7:this.day(this.day()%7?l:l-7)};var s=a.startOf;a.startOf=function(l,u){var h=this.$utils(),f=!!h.u(u)||u;return h.p(l)==="isoweek"?f?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):s.bind(this)(l,u)}}})});var Uue=Ni((BI,FI)=>{"use strict";(function(t,e){typeof BI=="object"&&typeof FI<"u"?FI.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_customParseFormat=e()})(BI,function(){"use strict";var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,r=/\d/,n=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,s={},l=o(function(g){return(g=+g)+(g>68?1900:2e3)},"a"),u=o(function(g){return function(y){this[g]=+y}},"f"),h=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=function(y){if(!y||y==="Z")return 0;var v=y.match(/([+-]|\d\d)/g),x=60*v[1]+(+v[2]||0);return x===0?0:v[0]==="+"?-x:x}(g)}],f=o(function(g){var y=s[g];return y&&(y.indexOf?y:y.s.concat(y.f))},"u"),d=o(function(g,y){var v,x=s.meridiem;if(x){for(var b=1;b<=24;b+=1)if(g.indexOf(x(b,0,y))>-1){v=b>12;break}}else v=g===(y?"pm":"PM");return v},"d"),p={A:[a,function(g){this.afternoon=d(g,!1)}],a:[a,function(g){this.afternoon=d(g,!0)}],Q:[r,function(g){this.month=3*(g-1)+1}],S:[r,function(g){this.milliseconds=100*+g}],SS:[n,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[i,u("seconds")],ss:[i,u("seconds")],m:[i,u("minutes")],mm:[i,u("minutes")],H:[i,u("hours")],h:[i,u("hours")],HH:[i,u("hours")],hh:[i,u("hours")],D:[i,u("day")],DD:[n,u("day")],Do:[a,function(g){var y=s.ordinal,v=g.match(/\d+/);if(this.day=v[0],y)for(var x=1;x<=31;x+=1)y(x).replace(/\[|\]/g,"")===g&&(this.day=x)}],w:[i,u("week")],ww:[n,u("week")],M:[i,u("month")],MM:[n,u("month")],MMM:[a,function(g){var y=f("months"),v=(f("monthsShort")||y.map(function(x){return x.slice(0,3)})).indexOf(g)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(g){var y=f("months").indexOf(g)+1;if(y<1)throw new Error;this.month=y%12||y}],Y:[/[+-]?\d+/,u("year")],YY:[n,function(g){this.year=l(g)}],YYYY:[/\d{4}/,u("year")],Z:h,ZZ:h};function m(g){var y,v;y=g,v=s&&s.formats;for(var x=(g=y.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(C,A,I){var D=I&&I.toUpperCase();return A||v[I]||t[I]||v[D].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(k,R,S){return R||S.slice(1)})})).match(e),b=x.length,w=0;w-1)return new Date((N==="X"?1e3:1)*O);var B=m(N)(O),$=B.year,z=B.month,W=B.day,j=B.hours,K=B.minutes,ie=B.seconds,Q=B.milliseconds,ee=B.zone,J=B.week,H=new Date,q=W||($||z?1:H.getDate()),Z=$||H.getFullYear(),ae=0;$&&!z||(ae=z>0?z-1:H.getMonth());var ue,ce=j||0,te=K||0,De=ie||0,oe=Q||0;return ee?new Date(Date.UTC(Z,ae,q,ce,te,De,oe+60*ee.offset*1e3)):P?new Date(Date.UTC(Z,ae,q,ce,te,De,oe)):(ue=new Date(Z,ae,q,ce,te,De,oe),J&&(ue=F(ue).week(J).toDate()),ue)}catch{return new Date("")}}(_,L,T,v),this.init(),D&&D!==!0&&(this.$L=this.locale(D).$L),I&&_!=this.format(L)&&(this.$d=new Date("")),s={}}else if(L instanceof Array)for(var k=L.length,R=1;R<=k;R+=1){E[1]=L[R-1];var S=v.apply(this,E);if(S.isValid()){this.$d=S.$d,this.$L=S.$L,this.init();break}R===k&&(this.$d=new Date(""))}else b.call(this,w)}}})});var Hue=Ni((zI,GI)=>{"use strict";(function(t,e){typeof zI=="object"&&typeof GI<"u"?GI.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_advancedFormat=e()})(zI,function(){"use strict";return function(t,e){var r=e.prototype,n=r.format;r.format=function(i){var a=this,s=this.$locale();if(!this.isValid())return n.bind(this)(i);var l=this.$utils(),u=(i||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(h){switch(h){case"Q":return Math.ceil((a.$M+1)/3);case"Do":return s.ordinal(a.$D);case"gggg":return a.weekYear();case"GGGG":return a.isoWeekYear();case"wo":return s.ordinal(a.week(),"W");case"w":case"ww":return l.s(a.week(),h==="w"?1:2,"0");case"W":case"WW":return l.s(a.isoWeek(),h==="W"?1:2,"0");case"k":case"kk":return l.s(String(a.$H===0?24:a.$H),h==="k"?1:2,"0");case"X":return Math.floor(a.$d.getTime()/1e3);case"x":return a.$d.getTime();case"z":return"["+a.offsetName()+"]";case"zzz":return"["+a.offsetName("long")+"]";default:return h}});return n.bind(this)(u)}}})});function she(t,e,r){let n=!0;for(;n;)n=!1,r.forEach(function(i){let a="^\\s*"+i+"\\s*$",s=new RegExp(a);t[0].match(s)&&(e[i]=!0,t.shift(1),n=!0)})}var que,ho,Xue,jue,Kue,Wue,Bc,HI,WI,YI,ux,hx,qI,XI,oE,Mg,jI,Que,KI,fx,QI,ZI,lE,$I,T$e,k$e,E$e,S$e,C$e,A$e,_$e,L$e,D$e,N$e,R$e,M$e,I$e,O$e,P$e,B$e,F$e,z$e,G$e,$$e,V$e,U$e,H$e,Zue,W$e,Y$e,q$e,Jue,X$e,VI,ehe,the,aE,Rg,j$e,K$e,UI,sE,Vi,rhe,Q$e,w0,Z$e,Yue,J$e,nhe,eVe,ihe,tVe,rVe,ahe,ohe=M(()=>{"use strict";que=ka(Fp(),1),ho=ka(Ab(),1),Xue=ka(Vue(),1),jue=ka(Uue(),1),Kue=ka(Hue(),1);ht();Vt();hr();ki();ho.default.extend(Xue.default);ho.default.extend(jue.default);ho.default.extend(Kue.default);Wue={friday:5,saturday:6},Bc="",HI="",YI="",ux=[],hx=[],qI=new Map,XI=[],oE=[],Mg="",jI="",Que=["active","done","crit","milestone"],KI=[],fx=!1,QI=!1,ZI="sunday",lE="saturday",$I=0,T$e=o(function(){XI=[],oE=[],Mg="",KI=[],aE=0,UI=void 0,sE=void 0,Vi=[],Bc="",HI="",jI="",WI=void 0,YI="",ux=[],hx=[],fx=!1,QI=!1,$I=0,qI=new Map,_r(),ZI="sunday",lE="saturday"},"clear"),k$e=o(function(t){HI=t},"setAxisFormat"),E$e=o(function(){return HI},"getAxisFormat"),S$e=o(function(t){WI=t},"setTickInterval"),C$e=o(function(){return WI},"getTickInterval"),A$e=o(function(t){YI=t},"setTodayMarker"),_$e=o(function(){return YI},"getTodayMarker"),L$e=o(function(t){Bc=t},"setDateFormat"),D$e=o(function(){fx=!0},"enableInclusiveEndDates"),N$e=o(function(){return fx},"endDatesAreInclusive"),R$e=o(function(){QI=!0},"enableTopAxis"),M$e=o(function(){return QI},"topAxisEnabled"),I$e=o(function(t){jI=t},"setDisplayMode"),O$e=o(function(){return jI},"getDisplayMode"),P$e=o(function(){return Bc},"getDateFormat"),B$e=o(function(t){ux=t.toLowerCase().split(/[\s,]+/)},"setIncludes"),F$e=o(function(){return ux},"getIncludes"),z$e=o(function(t){hx=t.toLowerCase().split(/[\s,]+/)},"setExcludes"),G$e=o(function(){return hx},"getExcludes"),$$e=o(function(){return qI},"getLinks"),V$e=o(function(t){Mg=t,XI.push(t)},"addSection"),U$e=o(function(){return XI},"getSections"),H$e=o(function(){let t=Yue(),e=10,r=0;for(;!t&&r[\d\w- ]+)/.exec(r);if(i!==null){let s=null;for(let u of i.groups.ids.split(" ")){let h=w0(u);h!==void 0&&(!s||h.endTime>s.endTime)&&(s=h)}if(s)return s.endTime;let l=new Date;return l.setHours(0,0,0,0),l}let a=(0,ho.default)(r,e.trim(),!0);if(a.isValid())return a.toDate();{Y.debug("Invalid date:"+r),Y.debug("With date format:"+e.trim());let s=new Date(r);if(s===void 0||isNaN(s.getTime())||s.getFullYear()<-1e4||s.getFullYear()>1e4)throw new Error("Invalid date:"+r);return s}},"getStartDate"),ehe=o(function(t){let e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return e!==null?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},"parseDuration"),the=o(function(t,e,r,n=!1){r=r.trim();let a=/^until\s+(?[\d\w- ]+)/.exec(r);if(a!==null){let f=null;for(let p of a.groups.ids.split(" ")){let m=w0(p);m!==void 0&&(!f||m.startTime{window.open(r,"_self")}),qI.set(n,r))}),nhe(t,"clickable")},"setLink"),nhe=o(function(t,e){t.split(",").forEach(function(r){let n=w0(r);n!==void 0&&n.classes.push(e)})},"setClass"),eVe=o(function(t,e,r){if(de().securityLevel!=="loose"||e===void 0)return;let n=[];if(typeof r=="string"){n=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let a=0;a{Ut.runFunc(e,...n)})},"setClickFun"),ihe=o(function(t,e){KI.push(function(){let r=document.querySelector(`[id="${t}"]`);r!==null&&r.addEventListener("click",function(){e()})},function(){let r=document.querySelector(`[id="${t}-text"]`);r!==null&&r.addEventListener("click",function(){e()})})},"pushFun"),tVe=o(function(t,e,r){t.split(",").forEach(function(n){eVe(n,e,r)}),nhe(t,"clickable")},"setClickEvent"),rVe=o(function(t){KI.forEach(function(e){e(t)})},"bindFunctions"),ahe={getConfig:o(()=>de().gantt,"getConfig"),clear:T$e,setDateFormat:L$e,getDateFormat:P$e,enableInclusiveEndDates:D$e,endDatesAreInclusive:N$e,enableTopAxis:R$e,topAxisEnabled:M$e,setAxisFormat:k$e,getAxisFormat:E$e,setTickInterval:S$e,getTickInterval:C$e,setTodayMarker:A$e,getTodayMarker:_$e,setAccTitle:Rr,getAccTitle:Pr,setDiagramTitle:ln,getDiagramTitle:Jr,setDisplayMode:I$e,getDisplayMode:O$e,setAccDescription:Br,getAccDescription:Fr,addSection:V$e,getSections:U$e,getTasks:H$e,addTask:Q$e,findTaskById:w0,addTaskOrg:Z$e,setIncludes:B$e,getIncludes:F$e,setExcludes:z$e,getExcludes:G$e,setClickEvent:tVe,setLink:J$e,getLinks:$$e,bindFunctions:rVe,parseDuration:ehe,isInvalidDate:Zue,setWeekday:W$e,getWeekday:Y$e,setWeekend:q$e};o(she,"getTaskTags")});var cE,nVe,lhe,iVe,Uu,aVe,che,uhe=M(()=>{"use strict";cE=ka(Ab(),1);ht();mr();fr();Vt();ni();nVe=o(function(){Y.debug("Something is calling, setConf, remove the call")},"setConf"),lhe={monday:Th,tuesday:b3,wednesday:w3,thursday:cc,friday:T3,saturday:k3,sunday:wl},iVe=o((t,e)=>{let r=[...t].map(()=>-1/0),n=[...t].sort((a,s)=>a.startTime-s.startTime||a.order-s.order),i=0;for(let a of n)for(let s=0;s=r[s]){r[s]=a.endTime,a.order=s+e,s>i&&(i=s);break}return i},"getMaxIntersections"),aVe=o(function(t,e,r,n){let i=de().gantt,a=de().securityLevel,s;a==="sandbox"&&(s=ze("#i"+e));let l=a==="sandbox"?ze(s.nodes()[0].contentDocument.body):ze("body"),u=a==="sandbox"?s.nodes()[0].contentDocument:document,h=u.getElementById(e);Uu=h.parentElement.offsetWidth,Uu===void 0&&(Uu=1200),i.useWidth!==void 0&&(Uu=i.useWidth);let f=n.db.getTasks(),d=[];for(let C of f)d.push(C.type);d=L(d);let p={},m=2*i.topPadding;if(n.db.getDisplayMode()==="compact"||i.displayMode==="compact"){let C={};for(let I of f)C[I.section]===void 0?C[I.section]=[I]:C[I.section].push(I);let A=0;for(let I of Object.keys(C)){let D=iVe(C[I],A)+1;A+=D,m+=D*(i.barHeight+i.barGap),p[I]=D}}else{m+=f.length*(i.barHeight+i.barGap);for(let C of d)p[C]=f.filter(A=>A.type===C).length}h.setAttribute("viewBox","0 0 "+Uu+" "+m);let g=l.select(`[id="${e}"]`),y=C3().domain([N4(f,function(C){return C.startTime}),D4(f,function(C){return C.endTime})]).rangeRound([0,Uu-i.leftPadding-i.rightPadding]);function v(C,A){let I=C.startTime,D=A.startTime,k=0;return I>D?k=1:I$.order))].map($=>C.find(z=>z.order===$));g.append("g").selectAll("rect").data(N).enter().append("rect").attr("x",0).attr("y",function($,z){return z=$.order,z*A+I-2}).attr("width",function(){return S-i.rightPadding/2}).attr("height",A).attr("class",function($){for(let[z,W]of d.entries())if($.type===W)return"section section"+z%i.numberSectionStyles;return"section section0"});let P=g.append("g").selectAll("rect").data(C).enter(),F=n.db.getLinks();if(P.append("rect").attr("id",function($){return $.id}).attr("rx",3).attr("ry",3).attr("x",function($){return $.milestone?y($.startTime)+D+.5*(y($.endTime)-y($.startTime))-.5*k:y($.startTime)+D}).attr("y",function($,z){return z=$.order,z*A+I}).attr("width",function($){return $.milestone?k:y($.renderEndTime||$.endTime)-y($.startTime)}).attr("height",k).attr("transform-origin",function($,z){return z=$.order,(y($.startTime)+D+.5*(y($.endTime)-y($.startTime))).toString()+"px "+(z*A+I+.5*k).toString()+"px"}).attr("class",function($){let z="task",W="";$.classes.length>0&&(W=$.classes.join(" "));let j=0;for(let[ie,Q]of d.entries())$.type===Q&&(j=ie%i.numberSectionStyles);let K="";return $.active?$.crit?K+=" activeCrit":K=" active":$.done?$.crit?K=" doneCrit":K=" done":$.crit&&(K+=" crit"),K.length===0&&(K=" task"),$.milestone&&(K=" milestone "+K),K+=j,K+=" "+W,z+K}),P.append("text").attr("id",function($){return $.id+"-text"}).text(function($){return $.task}).attr("font-size",i.fontSize).attr("x",function($){let z=y($.startTime),W=y($.renderEndTime||$.endTime);$.milestone&&(z+=.5*(y($.endTime)-y($.startTime))-.5*k),$.milestone&&(W=z+k);let j=this.getBBox().width;return j>W-z?W+j+1.5*i.leftPadding>S?z+D-5:W+D+5:(W-z)/2+z+D}).attr("y",function($,z){return z=$.order,z*A+i.barHeight/2+(i.fontSize/2-2)+I}).attr("text-height",k).attr("class",function($){let z=y($.startTime),W=y($.endTime);$.milestone&&(W=z+k);let j=this.getBBox().width,K="";$.classes.length>0&&(K=$.classes.join(" "));let ie=0;for(let[ee,J]of d.entries())$.type===J&&(ie=ee%i.numberSectionStyles);let Q="";return $.active&&($.crit?Q="activeCritText"+ie:Q="activeText"+ie),$.done?$.crit?Q=Q+" doneCritText"+ie:Q=Q+" doneText"+ie:$.crit&&(Q=Q+" critText"+ie),$.milestone&&(Q+=" milestoneText"),j>W-z?W+j+1.5*i.leftPadding>S?K+" taskTextOutsideLeft taskTextOutside"+ie+" "+Q:K+" taskTextOutsideRight taskTextOutside"+ie+" "+Q+" width-"+j:K+" taskText taskText"+ie+" "+Q+" width-"+j}),de().securityLevel==="sandbox"){let $;$=ze("#i"+e);let z=$.nodes()[0].contentDocument;P.filter(function(W){return F.has(W.id)}).each(function(W){var j=z.querySelector("#"+W.id),K=z.querySelector("#"+W.id+"-text");let ie=j.parentNode;var Q=z.createElement("a");Q.setAttribute("xlink:href",F.get(W.id)),Q.setAttribute("target","_top"),ie.appendChild(Q),Q.appendChild(j),Q.appendChild(K)})}}o(b,"drawRects");function w(C,A,I,D,k,R,S,O){if(S.length===0&&O.length===0)return;let N,P;for(let{startTime:j,endTime:K}of R)(N===void 0||jP)&&(P=K);if(!N||!P)return;if((0,cE.default)(P).diff((0,cE.default)(N),"year")>5){Y.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}let F=n.db.getDateFormat(),B=[],$=null,z=(0,cE.default)(N);for(;z.valueOf()<=P;)n.db.isInvalidDate(z,F,S,O)?$?$.end=z:$={start:z,end:z}:$&&(B.push($),$=null),z=z.add(1,"d");g.append("g").selectAll("rect").data(B).enter().append("rect").attr("id",function(j){return"exclude-"+j.start.format("YYYY-MM-DD")}).attr("x",function(j){return y(j.start)+I}).attr("y",i.gridLineStartPadding).attr("width",function(j){let K=j.end.add(1,"day");return y(K)-y(j.start)}).attr("height",k-A-i.gridLineStartPadding).attr("transform-origin",function(j,K){return(y(j.start)+I+.5*(y(j.end)-y(j.start))).toString()+"px "+(K*C+.5*k).toString()+"px"}).attr("class","exclude-range")}o(w,"drawExcludeDays");function _(C,A,I,D){let k=v7(y).tickSize(-D+A+i.gridLineStartPadding).tickFormat(dd(n.db.getAxisFormat()||i.axisFormat||"%Y-%m-%d")),S=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(n.db.getTickInterval()||i.tickInterval);if(S!==null){let O=S[1],N=S[2],P=n.db.getWeekday()||i.weekday;switch(N){case"millisecond":k.ticks(oc.every(O));break;case"second":k.ticks(Xs.every(O));break;case"minute":k.ticks(mu.every(O));break;case"hour":k.ticks(gu.every(O));break;case"day":k.ticks(Lo.every(O));break;case"week":k.ticks(lhe[P].every(O));break;case"month":k.ticks(yu.every(O));break}}if(g.append("g").attr("class","grid").attr("transform","translate("+C+", "+(D-50)+")").call(k).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),n.db.topAxisEnabled()||i.topAxis){let O=y7(y).tickSize(-D+A+i.gridLineStartPadding).tickFormat(dd(n.db.getAxisFormat()||i.axisFormat||"%Y-%m-%d"));if(S!==null){let N=S[1],P=S[2],F=n.db.getWeekday()||i.weekday;switch(P){case"millisecond":O.ticks(oc.every(N));break;case"second":O.ticks(Xs.every(N));break;case"minute":O.ticks(mu.every(N));break;case"hour":O.ticks(gu.every(N));break;case"day":O.ticks(Lo.every(N));break;case"week":O.ticks(lhe[F].every(N));break;case"month":O.ticks(yu.every(N));break}}g.append("g").attr("class","grid").attr("transform","translate("+C+", "+A+")").call(O).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}o(_,"makeGrid");function T(C,A){let I=0,D=Object.keys(p).map(k=>[k,p[k]]);g.append("g").selectAll("text").data(D).enter().append(function(k){let R=k[0].split(je.lineBreakRegex),S=-(R.length-1)/2,O=u.createElementNS("http://www.w3.org/2000/svg","text");O.setAttribute("dy",S+"em");for(let[N,P]of R.entries()){let F=u.createElementNS("http://www.w3.org/2000/svg","tspan");F.setAttribute("alignment-baseline","central"),F.setAttribute("x","10"),N>0&&F.setAttribute("dy","1em"),F.textContent=P,O.appendChild(F)}return O}).attr("x",10).attr("y",function(k,R){if(R>0)for(let S=0;S{"use strict";sVe=o(t=>` +`,"getStyles"),Hce=Tze});var qce={};pr(qce,{diagram:()=>kze});var kze,Yce=M(()=>{"use strict";Fce();DI();Uce();Wce();kze={parser:Bce,db:YE,renderer:Vce,styles:Hce}});var LI,Kce,Qce=M(()=>{"use strict";LI=function(){var t=o(function(L,R,O,N){for(O=O||{},N=L.length;N--;O[L[N]]=R);return O},"o"),e=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],r=[1,26],n=[1,27],i=[1,28],a=[1,29],s=[1,30],l=[1,31],u=[1,32],h=[1,33],f=[1,34],d=[1,9],p=[1,10],m=[1,11],g=[1,12],y=[1,13],v=[1,14],x=[1,15],b=[1,16],w=[1,19],C=[1,20],T=[1,21],E=[1,22],A=[1,23],S=[1,25],_=[1,35],I={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:o(function(R,O,N,B,F,P,G){var z=P.length-1;switch(F){case 1:return P[z-1];case 2:this.$=[];break;case 3:P[z-1].push(P[z]),this.$=P[z-1];break;case 4:case 5:this.$=P[z];break;case 6:case 7:this.$=[];break;case 8:B.setWeekday("monday");break;case 9:B.setWeekday("tuesday");break;case 10:B.setWeekday("wednesday");break;case 11:B.setWeekday("thursday");break;case 12:B.setWeekday("friday");break;case 13:B.setWeekday("saturday");break;case 14:B.setWeekday("sunday");break;case 15:B.setWeekend("friday");break;case 16:B.setWeekend("saturday");break;case 17:B.setDateFormat(P[z].substr(11)),this.$=P[z].substr(11);break;case 18:B.enableInclusiveEndDates(),this.$=P[z].substr(18);break;case 19:B.TopAxis(),this.$=P[z].substr(8);break;case 20:B.setAxisFormat(P[z].substr(11)),this.$=P[z].substr(11);break;case 21:B.setTickInterval(P[z].substr(13)),this.$=P[z].substr(13);break;case 22:B.setExcludes(P[z].substr(9)),this.$=P[z].substr(9);break;case 23:B.setIncludes(P[z].substr(9)),this.$=P[z].substr(9);break;case 24:B.setTodayMarker(P[z].substr(12)),this.$=P[z].substr(12);break;case 27:B.setDiagramTitle(P[z].substr(6)),this.$=P[z].substr(6);break;case 28:this.$=P[z].trim(),B.setAccTitle(this.$);break;case 29:case 30:this.$=P[z].trim(),B.setAccDescription(this.$);break;case 31:B.addSection(P[z].substr(8)),this.$=P[z].substr(8);break;case 33:B.addTask(P[z-1],P[z]),this.$="task";break;case 34:this.$=P[z-1],B.setClickEvent(P[z-1],P[z],null);break;case 35:this.$=P[z-2],B.setClickEvent(P[z-2],P[z-1],P[z]);break;case 36:this.$=P[z-2],B.setClickEvent(P[z-2],P[z-1],null),B.setLink(P[z-2],P[z]);break;case 37:this.$=P[z-3],B.setClickEvent(P[z-3],P[z-2],P[z-1]),B.setLink(P[z-3],P[z]);break;case 38:this.$=P[z-2],B.setClickEvent(P[z-2],P[z],null),B.setLink(P[z-2],P[z-1]);break;case 39:this.$=P[z-3],B.setClickEvent(P[z-3],P[z-1],P[z]),B.setLink(P[z-3],P[z-2]);break;case 40:this.$=P[z-1],B.setLink(P[z-1],P[z]);break;case 41:case 47:this.$=P[z-1]+" "+P[z];break;case 42:case 43:case 45:this.$=P[z-2]+" "+P[z-1]+" "+P[z];break;case 44:case 46:this.$=P[z-3]+" "+P[z-2]+" "+P[z-1]+" "+P[z];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:f,22:d,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:w,31:C,33:T,35:E,36:A,37:24,38:S,40:_},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:36,11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:f,22:d,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:w,31:C,33:T,35:E,36:A,37:24,38:S,40:_},t(e,[2,5]),t(e,[2,6]),t(e,[2,17]),t(e,[2,18]),t(e,[2,19]),t(e,[2,20]),t(e,[2,21]),t(e,[2,22]),t(e,[2,23]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),t(e,[2,27]),{32:[1,37]},{34:[1,38]},t(e,[2,30]),t(e,[2,31]),t(e,[2,32]),{39:[1,39]},t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),{41:[1,40],43:[1,41]},t(e,[2,4]),t(e,[2,28]),t(e,[2,29]),t(e,[2,33]),t(e,[2,34],{42:[1,42],43:[1,43]}),t(e,[2,40],{41:[1,44]}),t(e,[2,35],{43:[1,45]}),t(e,[2,36]),t(e,[2,38],{42:[1,46]}),t(e,[2,37]),t(e,[2,39])],defaultActions:{},parseError:o(function(R,O){if(O.recoverable)this.trace(R);else{var N=new Error(R);throw N.hash=O,N}},"parseError"),parse:o(function(R){var O=this,N=[0],B=[],F=[null],P=[],G=this.table,z="",H=0,Q=0,j=0,ie=2,ne=1,le=P.slice.call(arguments,1),he=Object.create(this.lexer),K={yy:{}};for(var X in this.yy)Object.prototype.hasOwnProperty.call(this.yy,X)&&(K.yy[X]=this.yy[X]);he.setInput(R,K.yy),K.yy.lexer=he,K.yy.parser=this,typeof he.yylloc>"u"&&(he.yylloc={});var te=he.yylloc;P.push(te);var J=he.options&&he.options.ranges;typeof K.yy.parseError=="function"?this.parseError=K.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function se(W){N.length=N.length-2*W,F.length=F.length-W,P.length=P.length-W}o(se,"popStack");function ue(){var W;return W=B.pop()||he.lex()||ne,typeof W!="number"&&(W instanceof Array&&(B=W,W=B.pop()),W=O.symbols_[W]||W),W}o(ue,"lex");for(var Z,Se,ce,ae,Oe,ge,Ge={},He,ze,Re,Ie;;){if(ce=N[N.length-1],this.defaultActions[ce]?ae=this.defaultActions[ce]:((Z===null||typeof Z>"u")&&(Z=ue()),ae=G[ce]&&G[ce][Z]),typeof ae>"u"||!ae.length||!ae[0]){var be="";Ie=[];for(He in G[ce])this.terminals_[He]&&He>ie&&Ie.push("'"+this.terminals_[He]+"'");he.showPosition?be="Parse error on line "+(H+1)+`: +`+he.showPosition()+` +Expecting `+Ie.join(", ")+", got '"+(this.terminals_[Z]||Z)+"'":be="Parse error on line "+(H+1)+": Unexpected "+(Z==ne?"end of input":"'"+(this.terminals_[Z]||Z)+"'"),this.parseError(be,{text:he.match,token:this.terminals_[Z]||Z,line:he.yylineno,loc:te,expected:Ie})}if(ae[0]instanceof Array&&ae.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ce+", token: "+Z);switch(ae[0]){case 1:N.push(Z),F.push(he.yytext),P.push(he.yylloc),N.push(ae[1]),Z=null,Se?(Z=Se,Se=null):(Q=he.yyleng,z=he.yytext,H=he.yylineno,te=he.yylloc,j>0&&j--);break;case 2:if(ze=this.productions_[ae[1]][1],Ge.$=F[F.length-ze],Ge._$={first_line:P[P.length-(ze||1)].first_line,last_line:P[P.length-1].last_line,first_column:P[P.length-(ze||1)].first_column,last_column:P[P.length-1].last_column},J&&(Ge._$.range=[P[P.length-(ze||1)].range[0],P[P.length-1].range[1]]),ge=this.performAction.apply(Ge,[z,Q,H,K.yy,ae[1],F,P].concat(le)),typeof ge<"u")return ge;ze&&(N=N.slice(0,-1*ze*2),F=F.slice(0,-1*ze),P=P.slice(0,-1*ze)),N.push(this.productions_[ae[1]][0]),F.push(Ge.$),P.push(Ge._$),Re=G[N[N.length-2]][N[N.length-1]],N.push(Re);break;case 3:return!0}}return!0},"parse")},D=function(){var L={EOF:1,parseError:o(function(O,N){if(this.yy.parser)this.yy.parser.parseError(O,N);else throw new Error(O)},"parseError"),setInput:o(function(R,O){return this.yy=O||this.yy||{},this._input=R,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var R=this._input[0];this.yytext+=R,this.yyleng++,this.offset++,this.match+=R,this.matched+=R;var O=R.match(/(?:\r\n?|\n).*/g);return O?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),R},"input"),unput:o(function(R){var O=R.length,N=R.split(/(?:\r\n?|\n)/g);this._input=R+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-O),this.offset-=O;var B=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),N.length-1&&(this.yylineno-=N.length-1);var F=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:N?(N.length===B.length?this.yylloc.first_column:0)+B[B.length-N.length].length-N[0].length:this.yylloc.first_column-O},this.options.ranges&&(this.yylloc.range=[F[0],F[0]+this.yyleng-O]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(R){this.unput(this.match.slice(R))},"less"),pastInput:o(function(){var R=this.matched.substr(0,this.matched.length-this.match.length);return(R.length>20?"...":"")+R.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var R=this.match;return R.length<20&&(R+=this._input.substr(0,20-R.length)),(R.substr(0,20)+(R.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var R=this.pastInput(),O=new Array(R.length+1).join("-");return R+this.upcomingInput()+` +`+O+"^"},"showPosition"),test_match:o(function(R,O){var N,B,F;if(this.options.backtrack_lexer&&(F={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(F.yylloc.range=this.yylloc.range.slice(0))),B=R[0].match(/(?:\r\n?|\n).*/g),B&&(this.yylineno+=B.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:B?B[B.length-1].length-B[B.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+R[0].length},this.yytext+=R[0],this.match+=R[0],this.matches=R,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(R[0].length),this.matched+=R[0],N=this.performAction.call(this,this.yy,this,O,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),N)return N;if(this._backtrack){for(var P in F)this[P]=F[P];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var R,O,N,B;this._more||(this.yytext="",this.match="");for(var F=this._currentRules(),P=0;PO[0].length)){if(O=N,B=P,this.options.backtrack_lexer){if(R=this.test_match(N,F[P]),R!==!1)return R;if(this._backtrack){O=!1;continue}else return!1}else if(!this.options.flex)break}return O?(R=this.test_match(O,F[B]),R!==!1?R:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var O=this.next();return O||this.lex()},"lex"),begin:o(function(O){this.conditionStack.push(O)},"begin"),popState:o(function(){var O=this.conditionStack.length-1;return O>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(O){return O=this.conditionStack.length-1-Math.abs(O||0),O>=0?this.conditionStack[O]:"INITIAL"},"topState"),pushState:o(function(O){this.begin(O)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(O,N,B,F){var P=F;switch(B){case 0:return this.begin("open_directive"),"open_directive";break;case 1:return this.begin("acc_title"),31;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),33;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:this.begin("href");break;case 15:this.popState();break;case 16:return 43;case 17:this.begin("callbackname");break;case 18:this.popState();break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 21:this.popState();break;case 22:return 42;case 23:this.begin("click");break;case 24:this.popState();break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}};return L}();I.lexer=D;function k(){this.yy={}}return o(k,"Parser"),k.prototype=I,I.Parser=k,new k}();LI.parser=LI;Kce=LI});var Zce=Ni((RI,NI)=>{"use strict";(function(t,e){typeof RI=="object"&&typeof NI<"u"?NI.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_isoWeek=e()})(RI,function(){"use strict";var t="day";return function(e,r,n){var i=o(function(l){return l.add(4-l.isoWeekday(),t)},"a"),a=r.prototype;a.isoWeekYear=function(){return i(this).year()},a.isoWeek=function(l){if(!this.$utils().u(l))return this.add(7*(l-this.isoWeek()),t);var u,h,f,d,p=i(this),m=(u=this.isoWeekYear(),h=this.$u,f=(h?n.utc:n)().year(u).startOf("year"),d=4-f.isoWeekday(),f.isoWeekday()>4&&(d+=7),f.add(d,t));return p.diff(m,"week")+1},a.isoWeekday=function(l){return this.$utils().u(l)?this.day()||7:this.day(this.day()%7?l:l-7)};var s=a.startOf;a.startOf=function(l,u){var h=this.$utils(),f=!!h.u(u)||u;return h.p(l)==="isoweek"?f?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):s.bind(this)(l,u)}}})});var Jce=Ni((MI,II)=>{"use strict";(function(t,e){typeof MI=="object"&&typeof II<"u"?II.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_customParseFormat=e()})(MI,function(){"use strict";var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,r=/\d/,n=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,s={},l=o(function(g){return(g=+g)+(g>68?1900:2e3)},"a"),u=o(function(g){return function(y){this[g]=+y}},"f"),h=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=function(y){if(!y||y==="Z")return 0;var v=y.match(/([+-]|\d\d)/g),x=60*v[1]+(+v[2]||0);return x===0?0:v[0]==="+"?-x:x}(g)}],f=o(function(g){var y=s[g];return y&&(y.indexOf?y:y.s.concat(y.f))},"u"),d=o(function(g,y){var v,x=s.meridiem;if(x){for(var b=1;b<=24;b+=1)if(g.indexOf(x(b,0,y))>-1){v=b>12;break}}else v=g===(y?"pm":"PM");return v},"d"),p={A:[a,function(g){this.afternoon=d(g,!1)}],a:[a,function(g){this.afternoon=d(g,!0)}],Q:[r,function(g){this.month=3*(g-1)+1}],S:[r,function(g){this.milliseconds=100*+g}],SS:[n,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[i,u("seconds")],ss:[i,u("seconds")],m:[i,u("minutes")],mm:[i,u("minutes")],H:[i,u("hours")],h:[i,u("hours")],HH:[i,u("hours")],hh:[i,u("hours")],D:[i,u("day")],DD:[n,u("day")],Do:[a,function(g){var y=s.ordinal,v=g.match(/\d+/);if(this.day=v[0],y)for(var x=1;x<=31;x+=1)y(x).replace(/\[|\]/g,"")===g&&(this.day=x)}],w:[i,u("week")],ww:[n,u("week")],M:[i,u("month")],MM:[n,u("month")],MMM:[a,function(g){var y=f("months"),v=(f("monthsShort")||y.map(function(x){return x.slice(0,3)})).indexOf(g)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(g){var y=f("months").indexOf(g)+1;if(y<1)throw new Error;this.month=y%12||y}],Y:[/[+-]?\d+/,u("year")],YY:[n,function(g){this.year=l(g)}],YYYY:[/\d{4}/,u("year")],Z:h,ZZ:h};function m(g){var y,v;y=g,v=s&&s.formats;for(var x=(g=y.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(S,_,I){var D=I&&I.toUpperCase();return _||v[I]||t[I]||v[D].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(k,L,R){return L||R.slice(1)})})).match(e),b=x.length,w=0;w-1)return new Date((N==="X"?1e3:1)*O);var P=m(N)(O),G=P.year,z=P.month,H=P.day,Q=P.hours,j=P.minutes,ie=P.seconds,ne=P.milliseconds,le=P.zone,he=P.week,K=new Date,X=H||(G||z?1:K.getDate()),te=G||K.getFullYear(),J=0;G&&!z||(J=z>0?z-1:K.getMonth());var se,ue=Q||0,Z=j||0,Se=ie||0,ce=ne||0;return le?new Date(Date.UTC(te,J,X,ue,Z,Se,ce+60*le.offset*1e3)):B?new Date(Date.UTC(te,J,X,ue,Z,Se,ce)):(se=new Date(te,J,X,ue,Z,Se,ce),he&&(se=F(se).week(he).toDate()),se)}catch{return new Date("")}}(C,A,T,v),this.init(),D&&D!==!0&&(this.$L=this.locale(D).$L),I&&C!=this.format(A)&&(this.$d=new Date("")),s={}}else if(A instanceof Array)for(var k=A.length,L=1;L<=k;L+=1){E[1]=A[L-1];var R=v.apply(this,E);if(R.isValid()){this.$d=R.$d,this.$L=R.$L,this.init();break}L===k&&(this.$d=new Date(""))}else b.call(this,w)}}})});var eue=Ni((OI,PI)=>{"use strict";(function(t,e){typeof OI=="object"&&typeof PI<"u"?PI.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_advancedFormat=e()})(OI,function(){"use strict";return function(t,e){var r=e.prototype,n=r.format;r.format=function(i){var a=this,s=this.$locale();if(!this.isValid())return n.bind(this)(i);var l=this.$utils(),u=(i||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(h){switch(h){case"Q":return Math.ceil((a.$M+1)/3);case"Do":return s.ordinal(a.$D);case"gggg":return a.weekYear();case"GGGG":return a.isoWeekYear();case"wo":return s.ordinal(a.week(),"W");case"w":case"ww":return l.s(a.week(),h==="w"?1:2,"0");case"W":case"WW":return l.s(a.isoWeek(),h==="W"?1:2,"0");case"k":case"kk":return l.s(String(a.$H===0?24:a.$H),h==="k"?1:2,"0");case"X":return Math.floor(a.$d.getTime()/1e3);case"x":return a.$d.getTime();case"z":return"["+a.offsetName()+"]";case"zzz":return"["+a.offsetName("long")+"]";default:return h}});return n.bind(this)(u)}}})});function gue(t,e,r){let n=!0;for(;n;)n=!1,r.forEach(function(i){let a="^\\s*"+i+"\\s*$",s=new RegExp(a);t[0].match(s)&&(e[i]=!0,t.shift(1),n=!0)})}var nue,oo,iue,aue,sue,tue,zc,GI,$I,VI,rb,nb,UI,HI,ZE,x1,WI,oue,qI,ib,YI,XI,JE,BI,Aze,_ze,Dze,Lze,Rze,Nze,Mze,Ize,Oze,Pze,Bze,Fze,zze,Gze,$ze,Vze,Uze,Hze,Wze,qze,Yze,Xze,jze,lue,Kze,Qze,Zze,cue,Jze,FI,uue,hue,KE,v1,eGe,tGe,zI,QE,Gi,fue,rGe,Ep,nGe,rue,iGe,due,aGe,pue,sGe,oGe,mue,yue=M(()=>{"use strict";nue=Ta(O0(),1),oo=Ta(v4(),1),iue=Ta(Zce(),1),aue=Ta(Jce(),1),sue=Ta(eue(),1);vt();Gt();sr();ki();oo.default.extend(iue.default);oo.default.extend(aue.default);oo.default.extend(sue.default);tue={friday:5,saturday:6},zc="",GI="",VI="",rb=[],nb=[],UI=new Map,HI=[],ZE=[],x1="",WI="",oue=["active","done","crit","milestone"],qI=[],ib=!1,YI=!1,XI="sunday",JE="saturday",BI=0,Aze=o(function(){HI=[],ZE=[],x1="",qI=[],KE=0,zI=void 0,QE=void 0,Gi=[],zc="",GI="",WI="",$I=void 0,VI="",rb=[],nb=[],ib=!1,YI=!1,BI=0,UI=new Map,Dr(),XI="sunday",JE="saturday"},"clear"),_ze=o(function(t){GI=t},"setAxisFormat"),Dze=o(function(){return GI},"getAxisFormat"),Lze=o(function(t){$I=t},"setTickInterval"),Rze=o(function(){return $I},"getTickInterval"),Nze=o(function(t){VI=t},"setTodayMarker"),Mze=o(function(){return VI},"getTodayMarker"),Ize=o(function(t){zc=t},"setDateFormat"),Oze=o(function(){ib=!0},"enableInclusiveEndDates"),Pze=o(function(){return ib},"endDatesAreInclusive"),Bze=o(function(){YI=!0},"enableTopAxis"),Fze=o(function(){return YI},"topAxisEnabled"),zze=o(function(t){WI=t},"setDisplayMode"),Gze=o(function(){return WI},"getDisplayMode"),$ze=o(function(){return zc},"getDateFormat"),Vze=o(function(t){rb=t.toLowerCase().split(/[\s,]+/)},"setIncludes"),Uze=o(function(){return rb},"getIncludes"),Hze=o(function(t){nb=t.toLowerCase().split(/[\s,]+/)},"setExcludes"),Wze=o(function(){return nb},"getExcludes"),qze=o(function(){return UI},"getLinks"),Yze=o(function(t){x1=t,HI.push(t)},"addSection"),Xze=o(function(){return HI},"getSections"),jze=o(function(){let t=rue(),e=10,r=0;for(;!t&&r[\d\w- ]+)/.exec(r);if(i!==null){let s=null;for(let u of i.groups.ids.split(" ")){let h=Ep(u);h!==void 0&&(!s||h.endTime>s.endTime)&&(s=h)}if(s)return s.endTime;let l=new Date;return l.setHours(0,0,0,0),l}let a=(0,oo.default)(r,e.trim(),!0);if(a.isValid())return a.toDate();{Y.debug("Invalid date:"+r),Y.debug("With date format:"+e.trim());let s=new Date(r);if(s===void 0||isNaN(s.getTime())||s.getFullYear()<-1e4||s.getFullYear()>1e4)throw new Error("Invalid date:"+r);return s}},"getStartDate"),uue=o(function(t){let e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return e!==null?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},"parseDuration"),hue=o(function(t,e,r,n=!1){r=r.trim();let a=/^until\s+(?[\d\w- ]+)/.exec(r);if(a!==null){let f=null;for(let p of a.groups.ids.split(" ")){let m=Ep(p);m!==void 0&&(!f||m.startTime{window.open(r,"_self")}),UI.set(n,r))}),due(t,"clickable")},"setLink"),due=o(function(t,e){t.split(",").forEach(function(r){let n=Ep(r);n!==void 0&&n.classes.push(e)})},"setClass"),aGe=o(function(t,e,r){if(me().securityLevel!=="loose"||e===void 0)return;let n=[];if(typeof r=="string"){n=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let a=0;a{$t.runFunc(e,...n)})},"setClickFun"),pue=o(function(t,e){qI.push(function(){let r=document.querySelector(`[id="${t}"]`);r!==null&&r.addEventListener("click",function(){e()})},function(){let r=document.querySelector(`[id="${t}-text"]`);r!==null&&r.addEventListener("click",function(){e()})})},"pushFun"),sGe=o(function(t,e,r){t.split(",").forEach(function(n){aGe(n,e,r)}),due(t,"clickable")},"setClickEvent"),oGe=o(function(t){qI.forEach(function(e){e(t)})},"bindFunctions"),mue={getConfig:o(()=>me().gantt,"getConfig"),clear:Aze,setDateFormat:Ize,getDateFormat:$ze,enableInclusiveEndDates:Oze,endDatesAreInclusive:Pze,enableTopAxis:Bze,topAxisEnabled:Fze,setAxisFormat:_ze,getAxisFormat:Dze,setTickInterval:Lze,getTickInterval:Rze,setTodayMarker:Nze,getTodayMarker:Mze,setAccTitle:Mr,getAccTitle:Or,setDiagramTitle:Zr,getDiagramTitle:Fr,setDisplayMode:zze,getDisplayMode:Gze,setAccDescription:Pr,getAccDescription:Br,addSection:Yze,getSections:Xze,getTasks:jze,addTask:rGe,findTaskById:Ep,addTaskOrg:nGe,setIncludes:Vze,getIncludes:Uze,setExcludes:Hze,getExcludes:Wze,setClickEvent:sGe,setLink:iGe,getLinks:qze,bindFunctions:oGe,parseDuration:uue,isInvalidDate:lue,setWeekday:Kze,getWeekday:Qze,setWeekend:Zze};o(gue,"getTaskTags")});var e6,lGe,vue,cGe,Uu,uGe,xue,bue=M(()=>{"use strict";e6=Ta(v4(),1);vt();hr();gr();Gt();Ti();lGe=o(function(){Y.debug("Something is calling, setConf, remove the call")},"setConf"),vue={monday:Th,tuesday:u5,wednesday:h5,thursday:sc,friday:f5,saturday:d5,sunday:pl},cGe=o((t,e)=>{let r=[...t].map(()=>-1/0),n=[...t].sort((a,s)=>a.startTime-s.startTime||a.order-s.order),i=0;for(let a of n)for(let s=0;s=r[s]){r[s]=a.endTime,a.order=s+e,s>i&&(i=s);break}return i},"getMaxIntersections"),uGe=o(function(t,e,r,n){let i=me().gantt,a=me().securityLevel,s;a==="sandbox"&&(s=$e("#i"+e));let l=a==="sandbox"?$e(s.nodes()[0].contentDocument.body):$e("body"),u=a==="sandbox"?s.nodes()[0].contentDocument:document,h=u.getElementById(e);Uu=h.parentElement.offsetWidth,Uu===void 0&&(Uu=1200),i.useWidth!==void 0&&(Uu=i.useWidth);let f=n.db.getTasks(),d=[];for(let S of f)d.push(S.type);d=A(d);let p={},m=2*i.topPadding;if(n.db.getDisplayMode()==="compact"||i.displayMode==="compact"){let S={};for(let I of f)S[I.section]===void 0?S[I.section]=[I]:S[I.section].push(I);let _=0;for(let I of Object.keys(S)){let D=cGe(S[I],_)+1;_+=D,m+=D*(i.barHeight+i.barGap),p[I]=D}}else{m+=f.length*(i.barHeight+i.barGap);for(let S of d)p[S]=f.filter(_=>_.type===S).length}h.setAttribute("viewBox","0 0 "+Uu+" "+m);let g=l.select(`[id="${e}"]`),y=g5().domain([w3(f,function(S){return S.startTime}),b3(f,function(S){return S.endTime})]).rangeRound([0,Uu-i.leftPadding-i.rightPadding]);function v(S,_){let I=S.startTime,D=_.startTime,k=0;return I>D?k=1:IG.order))].map(G=>S.find(z=>z.order===G));g.append("g").selectAll("rect").data(N).enter().append("rect").attr("x",0).attr("y",function(G,z){return z=G.order,z*_+I-2}).attr("width",function(){return R-i.rightPadding/2}).attr("height",_).attr("class",function(G){for(let[z,H]of d.entries())if(G.type===H)return"section section"+z%i.numberSectionStyles;return"section section0"});let B=g.append("g").selectAll("rect").data(S).enter(),F=n.db.getLinks();if(B.append("rect").attr("id",function(G){return G.id}).attr("rx",3).attr("ry",3).attr("x",function(G){return G.milestone?y(G.startTime)+D+.5*(y(G.endTime)-y(G.startTime))-.5*k:y(G.startTime)+D}).attr("y",function(G,z){return z=G.order,z*_+I}).attr("width",function(G){return G.milestone?k:y(G.renderEndTime||G.endTime)-y(G.startTime)}).attr("height",k).attr("transform-origin",function(G,z){return z=G.order,(y(G.startTime)+D+.5*(y(G.endTime)-y(G.startTime))).toString()+"px "+(z*_+I+.5*k).toString()+"px"}).attr("class",function(G){let z="task",H="";G.classes.length>0&&(H=G.classes.join(" "));let Q=0;for(let[ie,ne]of d.entries())G.type===ne&&(Q=ie%i.numberSectionStyles);let j="";return G.active?G.crit?j+=" activeCrit":j=" active":G.done?G.crit?j=" doneCrit":j=" done":G.crit&&(j+=" crit"),j.length===0&&(j=" task"),G.milestone&&(j=" milestone "+j),j+=Q,j+=" "+H,z+j}),B.append("text").attr("id",function(G){return G.id+"-text"}).text(function(G){return G.task}).attr("font-size",i.fontSize).attr("x",function(G){let z=y(G.startTime),H=y(G.renderEndTime||G.endTime);G.milestone&&(z+=.5*(y(G.endTime)-y(G.startTime))-.5*k),G.milestone&&(H=z+k);let Q=this.getBBox().width;return Q>H-z?H+Q+1.5*i.leftPadding>R?z+D-5:H+D+5:(H-z)/2+z+D}).attr("y",function(G,z){return z=G.order,z*_+i.barHeight/2+(i.fontSize/2-2)+I}).attr("text-height",k).attr("class",function(G){let z=y(G.startTime),H=y(G.endTime);G.milestone&&(H=z+k);let Q=this.getBBox().width,j="";G.classes.length>0&&(j=G.classes.join(" "));let ie=0;for(let[le,he]of d.entries())G.type===he&&(ie=le%i.numberSectionStyles);let ne="";return G.active&&(G.crit?ne="activeCritText"+ie:ne="activeText"+ie),G.done?G.crit?ne=ne+" doneCritText"+ie:ne=ne+" doneText"+ie:G.crit&&(ne=ne+" critText"+ie),G.milestone&&(ne+=" milestoneText"),Q>H-z?H+Q+1.5*i.leftPadding>R?j+" taskTextOutsideLeft taskTextOutside"+ie+" "+ne:j+" taskTextOutsideRight taskTextOutside"+ie+" "+ne+" width-"+Q:j+" taskText taskText"+ie+" "+ne+" width-"+Q}),me().securityLevel==="sandbox"){let G;G=$e("#i"+e);let z=G.nodes()[0].contentDocument;B.filter(function(H){return F.has(H.id)}).each(function(H){var Q=z.querySelector("#"+H.id),j=z.querySelector("#"+H.id+"-text");let ie=Q.parentNode;var ne=z.createElement("a");ne.setAttribute("xlink:href",F.get(H.id)),ne.setAttribute("target","_top"),ie.appendChild(ne),ne.appendChild(Q),ne.appendChild(j)})}}o(b,"drawRects");function w(S,_,I,D,k,L,R,O){if(R.length===0&&O.length===0)return;let N,B;for(let{startTime:Q,endTime:j}of L)(N===void 0||QB)&&(B=j);if(!N||!B)return;if((0,e6.default)(B).diff((0,e6.default)(N),"year")>5){Y.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}let F=n.db.getDateFormat(),P=[],G=null,z=(0,e6.default)(N);for(;z.valueOf()<=B;)n.db.isInvalidDate(z,F,R,O)?G?G.end=z:G={start:z,end:z}:G&&(P.push(G),G=null),z=z.add(1,"d");g.append("g").selectAll("rect").data(P).enter().append("rect").attr("id",function(Q){return"exclude-"+Q.start.format("YYYY-MM-DD")}).attr("x",function(Q){return y(Q.start)+I}).attr("y",i.gridLineStartPadding).attr("width",function(Q){let j=Q.end.add(1,"day");return y(j)-y(Q.start)}).attr("height",k-_-i.gridLineStartPadding).attr("transform-origin",function(Q,j){return(y(Q.start)+I+.5*(y(Q.end)-y(Q.start))).toString()+"px "+(j*S+.5*k).toString()+"px"}).attr("class","exclude-range")}o(w,"drawExcludeDays");function C(S,_,I,D){let k=sA(y).tickSize(-D+_+i.gridLineStartPadding).tickFormat(vd(n.db.getAxisFormat()||i.axisFormat||"%Y-%m-%d")),R=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(n.db.getTickInterval()||i.tickInterval);if(R!==null){let O=R[1],N=R[2],B=n.db.getWeekday()||i.weekday;switch(N){case"millisecond":k.ticks(ic.every(O));break;case"second":k.ticks(Ws.every(O));break;case"minute":k.ticks(gu.every(O));break;case"hour":k.ticks(yu.every(O));break;case"day":k.ticks(Eo.every(O));break;case"week":k.ticks(vue[B].every(O));break;case"month":k.ticks(vu.every(O));break}}if(g.append("g").attr("class","grid").attr("transform","translate("+S+", "+(D-50)+")").call(k).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),n.db.topAxisEnabled()||i.topAxis){let O=aA(y).tickSize(-D+_+i.gridLineStartPadding).tickFormat(vd(n.db.getAxisFormat()||i.axisFormat||"%Y-%m-%d"));if(R!==null){let N=R[1],B=R[2],F=n.db.getWeekday()||i.weekday;switch(B){case"millisecond":O.ticks(ic.every(N));break;case"second":O.ticks(Ws.every(N));break;case"minute":O.ticks(gu.every(N));break;case"hour":O.ticks(yu.every(N));break;case"day":O.ticks(Eo.every(N));break;case"week":O.ticks(vue[F].every(N));break;case"month":O.ticks(vu.every(N));break}}g.append("g").attr("class","grid").attr("transform","translate("+S+", "+_+")").call(O).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}o(C,"makeGrid");function T(S,_){let I=0,D=Object.keys(p).map(k=>[k,p[k]]);g.append("g").selectAll("text").data(D).enter().append(function(k){let L=k[0].split(Ze.lineBreakRegex),R=-(L.length-1)/2,O=u.createElementNS("http://www.w3.org/2000/svg","text");O.setAttribute("dy",R+"em");for(let[N,B]of L.entries()){let F=u.createElementNS("http://www.w3.org/2000/svg","tspan");F.setAttribute("alignment-baseline","central"),F.setAttribute("x","10"),N>0&&F.setAttribute("dy","1em"),F.textContent=B,O.appendChild(F)}return O}).attr("x",10).attr("y",function(k,L){if(L>0)for(let R=0;R{"use strict";hGe=o(t=>` .mermaid-main-font { - font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + font-family: ${t.fontFamily}; } .exclude-range { @@ -892,7 +928,7 @@ Expecting `+X.join(", ")+", got '"+(this.terminals_[te]||te)+"'":fe="Parse error .sectionTitle { text-anchor: start; - font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + font-family: ${t.fontFamily}; } @@ -933,13 +969,13 @@ Expecting `+X.join(", ")+", got '"+(this.terminals_[te]||te)+"'":fe="Parse error .taskText { text-anchor: middle; - font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + font-family: ${t.fontFamily}; } .taskTextOutsideRight { fill: ${t.taskTextDarkColor}; text-anchor: start; - font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + font-family: ${t.fontFamily}; } .taskTextOutsideLeft { @@ -1095,10 +1131,10 @@ Expecting `+X.join(", ")+", got '"+(this.terminals_[te]||te)+"'":fe="Parse error text-anchor: middle; font-size: 18px; fill: ${t.titleColor||t.textColor}; - font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + font-family: ${t.fontFamily}; } -`,"getStyles"),hhe=sVe});var dhe={};vr(dhe,{diagram:()=>oVe});var oVe,phe=M(()=>{"use strict";$ue();ohe();uhe();fhe();oVe={parser:Gue,db:ahe,renderer:che,styles:hhe}});var yhe,vhe=M(()=>{"use strict";Ng();ht();yhe={parse:o(async t=>{let e=await Gl("info",t);Y.debug(e)},"parse")}});var dx,JI=M(()=>{dx="11.4.1"});var fVe,dVe,xhe,bhe=M(()=>{"use strict";JI();fVe={version:dx},dVe=o(()=>fVe.version,"getVersion"),xhe={getVersion:dVe}});var Oa,Hu=M(()=>{"use strict";mr();Vt();Oa=o(t=>{let{securityLevel:e}=de(),r=ze("body");if(e==="sandbox"){let a=ze(`#i${t}`).node()?.contentDocument??document;r=ze(a.body)}return r.select(`#${t}`)},"selectSvgElement")});var pVe,whe,The=M(()=>{"use strict";ht();Hu();ni();pVe=o((t,e,r)=>{Y.debug(`rendering info diagram -`+t);let n=Oa(e);Zr(n,100,400,!0),n.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${r}`)},"draw"),whe={draw:pVe}});var khe={};vr(khe,{diagram:()=>mVe});var mVe,Ehe=M(()=>{"use strict";vhe();bhe();The();mVe={parser:yhe,db:xhe,renderer:whe}});var Ahe,eO,uE,tO,vVe,xVe,bVe,wVe,TVe,kVe,EVe,hE,rO=M(()=>{"use strict";ht();ki();hs();Ahe=ur.pie,eO={sections:new Map,showData:!1,config:Ahe},uE=eO.sections,tO=eO.showData,vVe=structuredClone(Ahe),xVe=o(()=>structuredClone(vVe),"getConfig"),bVe=o(()=>{uE=new Map,tO=eO.showData,_r()},"clear"),wVe=o(({label:t,value:e})=>{uE.has(t)||(uE.set(t,e),Y.debug(`added new section: ${t}, with value: ${e}`))},"addSection"),TVe=o(()=>uE,"getSections"),kVe=o(t=>{tO=t},"setShowData"),EVe=o(()=>tO,"getShowData"),hE={getConfig:xVe,clear:bVe,setDiagramTitle:ln,getDiagramTitle:Jr,setAccTitle:Rr,getAccTitle:Pr,setAccDescription:Br,getAccDescription:Fr,addSection:wVe,getSections:TVe,setShowData:kVe,getShowData:EVe}});var SVe,_he,Lhe=M(()=>{"use strict";Ng();ht();ox();rO();SVe=o((t,e)=>{lf(t,e),e.setShowData(t.showData),t.sections.map(e.addSection)},"populateDb"),_he={parse:o(async t=>{let e=await Gl("pie",t);Y.debug(e),SVe(e,hE)},"parse")}});var CVe,Dhe,Nhe=M(()=>{"use strict";CVe=o(t=>` +`,"getStyles"),wue=hGe});var kue={};pr(kue,{diagram:()=>fGe});var fGe,Eue=M(()=>{"use strict";Qce();yue();bue();Tue();fGe={parser:Kce,db:mue,renderer:xue,styles:wue}});var Aue,_ue=M(()=>{"use strict";y1();vt();Aue={parse:o(async t=>{let e=await Fl("info",t);Y.debug(e)},"parse")}});var ab,jI=M(()=>{ab={name:"mermaid",version:"11.5.0",description:"Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.",type:"module",module:"./dist/mermaid.core.mjs",types:"./dist/mermaid.d.ts",exports:{".":{types:"./dist/mermaid.d.ts",import:"./dist/mermaid.core.mjs",default:"./dist/mermaid.core.mjs"},"./*":"./*"},keywords:["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph","mindmap","packet diagram","c4 diagram","er diagram","pie chart","pie diagram","quadrant chart","requirement diagram","graph"],scripts:{clean:"rimraf dist",dev:"pnpm -w dev","docs:code":"typedoc src/defaultConfig.ts src/config.ts src/mermaid.ts && prettier --write ./src/docs/config/setup","docs:build":"rimraf ../../docs && pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts","docs:verify":"pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts --verify","docs:pre:vitepress":"pnpm --filter ./src/docs prefetch && rimraf src/vitepress && pnpm docs:code && tsx scripts/docs.cli.mts --vitepress && pnpm --filter ./src/vitepress install --no-frozen-lockfile --ignore-scripts","docs:build:vitepress":"pnpm docs:pre:vitepress && (cd src/vitepress && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing","docs:dev":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:dev:docker":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev:docker" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:serve":"pnpm docs:build:vitepress && vitepress serve src/vitepress","docs:spellcheck":'cspell "src/docs/**/*.md"',"docs:release-version":"tsx scripts/update-release-version.mts","docs:verify-version":"tsx scripts/update-release-version.mts --verify","types:build-config":"tsx scripts/create-types-from-json-schema.mts","types:verify-config":"tsx scripts/create-types-from-json-schema.mts --verify",checkCircle:"npx madge --circular ./src",prepublishOnly:"pnpm docs:verify-version"},repository:{type:"git",url:"https://github.com/mermaid-js/mermaid"},author:"Knut Sveidqvist",license:"MIT",standard:{ignore:["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],globals:["page"]},dependencies:{"@braintree/sanitize-url":"^7.0.4","@iconify/utils":"^2.1.33","@mermaid-js/parser":"workspace:^","@types/d3":"^7.4.3",cytoscape:"^3.29.3","cytoscape-cose-bilkent":"^4.1.0","cytoscape-fcose":"^2.2.0",d3:"^7.9.0","d3-sankey":"^0.12.3","dagre-d3-es":"7.0.11",dayjs:"^1.11.13",dompurify:"^3.2.4",katex:"^0.16.9",khroma:"^2.1.0","lodash-es":"^4.17.21",marked:"^15.0.7",roughjs:"^4.6.6",stylis:"^4.3.6","ts-dedent":"^2.2.0",uuid:"^11.1.0"},devDependencies:{"@adobe/jsonschema2md":"^8.0.2","@iconify/types":"^2.0.0","@types/cytoscape":"^3.21.9","@types/cytoscape-fcose":"^2.2.4","@types/d3-sankey":"^0.12.4","@types/d3-scale":"^4.0.9","@types/d3-scale-chromatic":"^3.1.0","@types/d3-selection":"^3.0.11","@types/d3-shape":"^3.1.7","@types/jsdom":"^21.1.7","@types/katex":"^0.16.7","@types/lodash-es":"^4.17.12","@types/micromatch":"^4.0.9","@types/stylis":"^4.2.7","@types/uuid":"^10.0.0",ajv:"^8.17.1",chokidar:"^4.0.3",concurrently:"^9.1.2","csstree-validator":"^4.0.1",globby:"^14.0.2",jison:"^0.4.18","js-base64":"^3.7.7",jsdom:"^26.0.0","json-schema-to-typescript":"^15.0.4",micromatch:"^4.0.8","path-browserify":"^1.0.1",prettier:"^3.5.2",remark:"^15.0.1","remark-frontmatter":"^5.0.0","remark-gfm":"^4.0.1",rimraf:"^6.0.1","start-server-and-test":"^2.0.10","type-fest":"^4.35.0",typedoc:"^0.27.8","typedoc-plugin-markdown":"^4.4.2",typescript:"~5.7.3","unist-util-flatmap":"^1.0.0","unist-util-visit":"^5.0.0",vitepress:"^1.0.2","vitepress-plugin-search":"1.0.4-alpha.22"},files:["dist/","README.md"],publishConfig:{access:"public"}}});var yGe,vGe,Due,Lue=M(()=>{"use strict";jI();yGe={version:ab.version},vGe=o(()=>yGe.version,"getVersion"),Due={getVersion:vGe}});var Pa,Hu=M(()=>{"use strict";hr();Gt();Pa=o(t=>{let{securityLevel:e}=me(),r=$e("body");if(e==="sandbox"){let a=$e(`#i${t}`).node()?.contentDocument??document;r=$e(a.body)}return r.select(`#${t}`)},"selectSvgElement")});var xGe,Rue,Nue=M(()=>{"use strict";vt();Hu();Ti();xGe=o((t,e,r)=>{Y.debug(`rendering info diagram +`+t);let n=Pa(e);vn(n,100,400,!0),n.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${r}`)},"draw"),Rue={draw:xGe}});var Mue={};pr(Mue,{diagram:()=>bGe});var bGe,Iue=M(()=>{"use strict";_ue();Lue();Nue();bGe={parser:Aue,db:Due,renderer:Rue}});var Bue,KI,t6,QI,kGe,EGe,SGe,CGe,AGe,_Ge,DGe,r6,ZI=M(()=>{"use strict";vt();ki();ps();Bue=cr.pie,KI={sections:new Map,showData:!1,config:Bue},t6=KI.sections,QI=KI.showData,kGe=structuredClone(Bue),EGe=o(()=>structuredClone(kGe),"getConfig"),SGe=o(()=>{t6=new Map,QI=KI.showData,Dr()},"clear"),CGe=o(({label:t,value:e})=>{t6.has(t)||(t6.set(t,e),Y.debug(`added new section: ${t}, with value: ${e}`))},"addSection"),AGe=o(()=>t6,"getSections"),_Ge=o(t=>{QI=t},"setShowData"),DGe=o(()=>QI,"getShowData"),r6={getConfig:EGe,clear:SGe,setDiagramTitle:Zr,getDiagramTitle:Fr,setAccTitle:Mr,getAccTitle:Or,setAccDescription:Pr,getAccDescription:Br,addSection:CGe,getSections:AGe,setShowData:_Ge,getShowData:DGe}});var LGe,Fue,zue=M(()=>{"use strict";y1();vt();Jx();ZI();LGe=o((t,e)=>{uf(t,e),e.setShowData(t.showData),t.sections.map(e.addSection)},"populateDb"),Fue={parse:o(async t=>{let e=await Fl("pie",t);Y.debug(e),LGe(e,r6)},"parse")}});var RGe,Gue,$ue=M(()=>{"use strict";RGe=o(t=>` .pieCircle{ stroke: ${t.pieStrokeColor}; stroke-width : ${t.pieStrokeWidth}; @@ -1126,25 +1162,25 @@ Expecting `+X.join(", ")+", got '"+(this.terminals_[te]||te)+"'":fe="Parse error font-family: ${t.fontFamily}; font-size: ${t.pieLegendTextSize}; } -`,"getStyles"),Dhe=CVe});var AVe,_Ve,Rhe,Mhe=M(()=>{"use strict";mr();Vt();ht();Hu();ni();hr();AVe=o(t=>{let e=[...t.entries()].map(n=>({label:n[0],value:n[1]})).sort((n,i)=>i.value-n.value);return R3().value(n=>n.value)(e)},"createPieArcs"),_Ve=o((t,e,r,n)=>{Y.debug(`rendering pie chart -`+t);let i=n.db,a=de(),s=ws(i.getConfig(),a.pie),l=40,u=18,h=4,f=450,d=f,p=Oa(e),m=p.append("g");m.attr("transform","translate("+d/2+","+f/2+")");let{themeVariables:g}=a,[y]=Fo(g.pieOuterStrokeWidth);y??=2;let v=s.textPosition,x=Math.min(d,f)/2-l,b=El().innerRadius(0).outerRadius(x),w=El().innerRadius(x*v).outerRadius(x*v);m.append("circle").attr("cx",0).attr("cy",0).attr("r",x+y/2).attr("class","pieOuterCircle");let _=i.getSections(),T=AVe(_),E=[g.pie1,g.pie2,g.pie3,g.pie4,g.pie5,g.pie6,g.pie7,g.pie8,g.pie9,g.pie10,g.pie11,g.pie12],L=du(E);m.selectAll("mySlices").data(T).enter().append("path").attr("d",b).attr("fill",k=>L(k.data.label)).attr("class","pieCircle");let C=0;_.forEach(k=>{C+=k}),m.selectAll("mySlices").data(T).enter().append("text").text(k=>(k.data.value/C*100).toFixed(0)+"%").attr("transform",k=>"translate("+w.centroid(k)+")").style("text-anchor","middle").attr("class","slice"),m.append("text").text(i.getDiagramTitle()).attr("x",0).attr("y",-(f-50)/2).attr("class","pieTitleText");let A=m.selectAll(".legend").data(L.domain()).enter().append("g").attr("class","legend").attr("transform",(k,R)=>{let S=u+h,O=S*L.domain().length/2,N=12*u,P=R*S-O;return"translate("+N+","+P+")"});A.append("rect").attr("width",u).attr("height",u).style("fill",L).style("stroke",L),A.data(T).append("text").attr("x",u+h).attr("y",u-h).text(k=>{let{label:R,value:S}=k.data;return i.getShowData()?`${R} [${S}]`:R});let I=Math.max(...A.selectAll("text").nodes().map(k=>k?.getBoundingClientRect().width??0)),D=d+l+u+h+I;p.attr("viewBox",`0 0 ${D} ${f}`),Zr(p,f,D,s.useMaxWidth)},"draw"),Rhe={draw:_Ve}});var Ihe={};vr(Ihe,{diagram:()=>LVe});var LVe,Ohe=M(()=>{"use strict";Lhe();rO();Nhe();Mhe();LVe={parser:_he,db:hE,renderer:Rhe,styles:Dhe}});var nO,Fhe,zhe=M(()=>{"use strict";nO=function(){var t=o(function(Te,se,Ee,Ae){for(Ee=Ee||{},Ae=Te.length;Ae--;Ee[Te[Ae]]=se);return Ee},"o"),e=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[1,7],s=[1,4,5,10,12,13,14,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[1,4,5,10,12,13,14,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],u=[55,56,57],h=[2,36],f=[1,37],d=[1,36],p=[1,38],m=[1,35],g=[1,43],y=[1,41],v=[1,14],x=[1,23],b=[1,18],w=[1,19],_=[1,20],T=[1,21],E=[1,22],L=[1,24],C=[1,25],A=[1,26],I=[1,27],D=[1,28],k=[1,29],R=[1,32],S=[1,33],O=[1,34],N=[1,39],P=[1,40],F=[1,42],B=[1,44],$=[1,62],z=[1,61],W=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],j=[1,65],K=[1,66],ie=[1,67],Q=[1,68],ee=[1,69],J=[1,70],H=[1,71],q=[1,72],Z=[1,73],ae=[1,74],ue=[1,75],ce=[1,76],te=[4,5,6,7,8,9,10,11,12,13,14,15,18],De=[1,90],oe=[1,91],ke=[1,92],Fe=[1,99],Be=[1,93],Ve=[1,96],Ge=[1,94],He=[1,95],xe=[1,97],X=[1,98],fe=[1,102],he=[10,55,56,57],ge=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],ne={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:o(function(se,Ee,Ae,Pe,Me,me,We){var Re=me.length-1;switch(Me){case 23:this.$=me[Re];break;case 24:this.$=me[Re-1]+""+me[Re];break;case 26:this.$=me[Re-1]+me[Re];break;case 27:this.$=[me[Re].trim()];break;case 28:me[Re-2].push(me[Re].trim()),this.$=me[Re-2];break;case 29:this.$=me[Re-4],Pe.addClass(me[Re-2],me[Re]);break;case 37:this.$=[];break;case 42:this.$=me[Re].trim(),Pe.setDiagramTitle(this.$);break;case 43:this.$=me[Re].trim(),Pe.setAccTitle(this.$);break;case 44:case 45:this.$=me[Re].trim(),Pe.setAccDescription(this.$);break;case 46:Pe.addSection(me[Re].substr(8)),this.$=me[Re].substr(8);break;case 47:Pe.addPoint(me[Re-3],"",me[Re-1],me[Re],[]);break;case 48:Pe.addPoint(me[Re-4],me[Re-3],me[Re-1],me[Re],[]);break;case 49:Pe.addPoint(me[Re-4],"",me[Re-2],me[Re-1],me[Re]);break;case 50:Pe.addPoint(me[Re-5],me[Re-4],me[Re-2],me[Re-1],me[Re]);break;case 51:Pe.setXAxisLeftText(me[Re-2]),Pe.setXAxisRightText(me[Re]);break;case 52:me[Re-1].text+=" \u27F6 ",Pe.setXAxisLeftText(me[Re-1]);break;case 53:Pe.setXAxisLeftText(me[Re]);break;case 54:Pe.setYAxisBottomText(me[Re-2]),Pe.setYAxisTopText(me[Re]);break;case 55:me[Re-1].text+=" \u27F6 ",Pe.setYAxisBottomText(me[Re-1]);break;case 56:Pe.setYAxisBottomText(me[Re]);break;case 57:Pe.setQuadrant1Text(me[Re]);break;case 58:Pe.setQuadrant2Text(me[Re]);break;case 59:Pe.setQuadrant3Text(me[Re]);break;case 60:Pe.setQuadrant4Text(me[Re]);break;case 64:this.$={text:me[Re],type:"text"};break;case 65:this.$={text:me[Re-1].text+""+me[Re],type:me[Re-1].type};break;case 66:this.$={text:me[Re],type:"text"};break;case 67:this.$={text:me[Re],type:"markdown"};break;case 68:this.$=me[Re];break;case 69:this.$=me[Re-1]+""+me[Re];break}},"anonymous"),table:[{18:e,26:1,27:2,28:r,55:n,56:i,57:a},{1:[3]},{18:e,26:8,27:2,28:r,55:n,56:i,57:a},{18:e,26:9,27:2,28:r,55:n,56:i,57:a},t(s,[2,33],{29:10}),t(l,[2,61]),t(l,[2,62]),t(l,[2,63]),{1:[2,30]},{1:[2,31]},t(u,h,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:f,5:d,10:p,12:m,13:g,14:y,18:v,25:x,35:b,37:w,39:_,41:T,42:E,48:L,50:C,51:A,52:I,53:D,54:k,60:R,61:S,63:O,64:N,65:P,66:F,67:B}),t(s,[2,34]),{27:45,55:n,56:i,57:a},t(u,[2,37]),t(u,h,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:f,5:d,10:p,12:m,13:g,14:y,18:v,25:x,35:b,37:w,39:_,41:T,42:E,48:L,50:C,51:A,52:I,53:D,54:k,60:R,61:S,63:O,64:N,65:P,66:F,67:B}),t(u,[2,39]),t(u,[2,40]),t(u,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},t(u,[2,45]),t(u,[2,46]),{18:[1,50]},{4:f,5:d,10:p,12:m,13:g,14:y,43:51,58:31,60:R,61:S,63:O,64:N,65:P,66:F,67:B},{4:f,5:d,10:p,12:m,13:g,14:y,43:52,58:31,60:R,61:S,63:O,64:N,65:P,66:F,67:B},{4:f,5:d,10:p,12:m,13:g,14:y,43:53,58:31,60:R,61:S,63:O,64:N,65:P,66:F,67:B},{4:f,5:d,10:p,12:m,13:g,14:y,43:54,58:31,60:R,61:S,63:O,64:N,65:P,66:F,67:B},{4:f,5:d,10:p,12:m,13:g,14:y,43:55,58:31,60:R,61:S,63:O,64:N,65:P,66:F,67:B},{4:f,5:d,10:p,12:m,13:g,14:y,43:56,58:31,60:R,61:S,63:O,64:N,65:P,66:F,67:B},{4:f,5:d,8:$,10:p,12:m,13:g,14:y,18:z,44:[1,57],47:[1,58],58:60,59:59,63:O,64:N,65:P,66:F,67:B},t(W,[2,64]),t(W,[2,66]),t(W,[2,67]),t(W,[2,70]),t(W,[2,71]),t(W,[2,72]),t(W,[2,73]),t(W,[2,74]),t(W,[2,75]),t(W,[2,76]),t(W,[2,77]),t(W,[2,78]),t(W,[2,79]),t(W,[2,80]),t(s,[2,35]),t(u,[2,38]),t(u,[2,42]),t(u,[2,43]),t(u,[2,44]),{3:64,4:j,5:K,6:ie,7:Q,8:ee,9:J,10:H,11:q,12:Z,13:ae,14:ue,15:ce,21:63},t(u,[2,53],{59:59,58:60,4:f,5:d,8:$,10:p,12:m,13:g,14:y,18:z,49:[1,77],63:O,64:N,65:P,66:F,67:B}),t(u,[2,56],{59:59,58:60,4:f,5:d,8:$,10:p,12:m,13:g,14:y,18:z,49:[1,78],63:O,64:N,65:P,66:F,67:B}),t(u,[2,57],{59:59,58:60,4:f,5:d,8:$,10:p,12:m,13:g,14:y,18:z,63:O,64:N,65:P,66:F,67:B}),t(u,[2,58],{59:59,58:60,4:f,5:d,8:$,10:p,12:m,13:g,14:y,18:z,63:O,64:N,65:P,66:F,67:B}),t(u,[2,59],{59:59,58:60,4:f,5:d,8:$,10:p,12:m,13:g,14:y,18:z,63:O,64:N,65:P,66:F,67:B}),t(u,[2,60],{59:59,58:60,4:f,5:d,8:$,10:p,12:m,13:g,14:y,18:z,63:O,64:N,65:P,66:F,67:B}),{45:[1,79]},{44:[1,80]},t(W,[2,65]),t(W,[2,81]),t(W,[2,82]),t(W,[2,83]),{3:82,4:j,5:K,6:ie,7:Q,8:ee,9:J,10:H,11:q,12:Z,13:ae,14:ue,15:ce,18:[1,81]},t(te,[2,23]),t(te,[2,1]),t(te,[2,2]),t(te,[2,3]),t(te,[2,4]),t(te,[2,5]),t(te,[2,6]),t(te,[2,7]),t(te,[2,8]),t(te,[2,9]),t(te,[2,10]),t(te,[2,11]),t(te,[2,12]),t(u,[2,52],{58:31,43:83,4:f,5:d,10:p,12:m,13:g,14:y,60:R,61:S,63:O,64:N,65:P,66:F,67:B}),t(u,[2,55],{58:31,43:84,4:f,5:d,10:p,12:m,13:g,14:y,60:R,61:S,63:O,64:N,65:P,66:F,67:B}),{46:[1,85]},{45:[1,86]},{4:De,5:oe,6:ke,8:Fe,11:Be,13:Ve,16:89,17:Ge,18:He,19:xe,20:X,22:88,23:87},t(te,[2,24]),t(u,[2,51],{59:59,58:60,4:f,5:d,8:$,10:p,12:m,13:g,14:y,18:z,63:O,64:N,65:P,66:F,67:B}),t(u,[2,54],{59:59,58:60,4:f,5:d,8:$,10:p,12:m,13:g,14:y,18:z,63:O,64:N,65:P,66:F,67:B}),t(u,[2,47],{22:88,16:89,23:100,4:De,5:oe,6:ke,8:Fe,11:Be,13:Ve,17:Ge,18:He,19:xe,20:X}),{46:[1,101]},t(u,[2,29],{10:fe}),t(he,[2,27],{16:103,4:De,5:oe,6:ke,8:Fe,11:Be,13:Ve,17:Ge,18:He,19:xe,20:X}),t(ge,[2,25]),t(ge,[2,13]),t(ge,[2,14]),t(ge,[2,15]),t(ge,[2,16]),t(ge,[2,17]),t(ge,[2,18]),t(ge,[2,19]),t(ge,[2,20]),t(ge,[2,21]),t(ge,[2,22]),t(u,[2,49],{10:fe}),t(u,[2,48],{22:88,16:89,23:104,4:De,5:oe,6:ke,8:Fe,11:Be,13:Ve,17:Ge,18:He,19:xe,20:X}),{4:De,5:oe,6:ke,8:Fe,11:Be,13:Ve,16:89,17:Ge,18:He,19:xe,20:X,22:105},t(ge,[2,26]),t(u,[2,50],{10:fe}),t(he,[2,28],{16:103,4:De,5:oe,6:ke,8:Fe,11:Be,13:Ve,17:Ge,18:He,19:xe,20:X})],defaultActions:{8:[2,30],9:[2,31]},parseError:o(function(se,Ee){if(Ee.recoverable)this.trace(se);else{var Ae=new Error(se);throw Ae.hash=Ee,Ae}},"parseError"),parse:o(function(se){var Ee=this,Ae=[0],Pe=[],Me=[null],me=[],We=this.table,Re="",tt=0,gt=0,Et=0,vt=2,Ye=1,Tt=me.slice.call(arguments,1),$e=Object.create(this.lexer),rt={yy:{}};for(var ft in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ft)&&(rt.yy[ft]=this.yy[ft]);$e.setInput(se,rt.yy),rt.yy.lexer=$e,rt.yy.parser=this,typeof $e.yylloc>"u"&&($e.yylloc={});var kt=$e.yylloc;me.push(kt);var er=$e.options&&$e.options.ranges;typeof rt.yy.parseError=="function"?this.parseError=rt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function dt(Se){Ae.length=Ae.length-2*Se,Me.length=Me.length-Se,me.length=me.length-Se}o(dt,"popStack");function Xe(){var Se;return Se=Pe.pop()||$e.lex()||Ye,typeof Se!="number"&&(Se instanceof Array&&(Pe=Se,Se=Pe.pop()),Se=Ee.symbols_[Se]||Se),Se}o(Xe,"lex");for(var ct,Lt,Rt,zt,Xn,or,hn={},Tn,Ur,ri,Mn;;){if(Rt=Ae[Ae.length-1],this.defaultActions[Rt]?zt=this.defaultActions[Rt]:((ct===null||typeof ct>"u")&&(ct=Xe()),zt=We[Rt]&&We[Rt][ct]),typeof zt>"u"||!zt.length||!zt[0]){var yt="";Mn=[];for(Tn in We[Rt])this.terminals_[Tn]&&Tn>vt&&Mn.push("'"+this.terminals_[Tn]+"'");$e.showPosition?yt="Parse error on line "+(tt+1)+`: -`+$e.showPosition()+` -Expecting `+Mn.join(", ")+", got '"+(this.terminals_[ct]||ct)+"'":yt="Parse error on line "+(tt+1)+": Unexpected "+(ct==Ye?"end of input":"'"+(this.terminals_[ct]||ct)+"'"),this.parseError(yt,{text:$e.match,token:this.terminals_[ct]||ct,line:$e.yylineno,loc:kt,expected:Mn})}if(zt[0]instanceof Array&&zt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Rt+", token: "+ct);switch(zt[0]){case 1:Ae.push(ct),Me.push($e.yytext),me.push($e.yylloc),Ae.push(zt[1]),ct=null,Lt?(ct=Lt,Lt=null):(gt=$e.yyleng,Re=$e.yytext,tt=$e.yylineno,kt=$e.yylloc,Et>0&&Et--);break;case 2:if(Ur=this.productions_[zt[1]][1],hn.$=Me[Me.length-Ur],hn._$={first_line:me[me.length-(Ur||1)].first_line,last_line:me[me.length-1].last_line,first_column:me[me.length-(Ur||1)].first_column,last_column:me[me.length-1].last_column},er&&(hn._$.range=[me[me.length-(Ur||1)].range[0],me[me.length-1].range[1]]),or=this.performAction.apply(hn,[Re,gt,tt,rt.yy,zt[1],Me,me].concat(Tt)),typeof or<"u")return or;Ur&&(Ae=Ae.slice(0,-1*Ur*2),Me=Me.slice(0,-1*Ur),me=me.slice(0,-1*Ur)),Ae.push(this.productions_[zt[1]][0]),Me.push(hn.$),me.push(hn._$),ri=We[Ae[Ae.length-2]][Ae[Ae.length-1]],Ae.push(ri);break;case 3:return!0}}return!0},"parse")},ye=function(){var Te={EOF:1,parseError:o(function(Ee,Ae){if(this.yy.parser)this.yy.parser.parseError(Ee,Ae);else throw new Error(Ee)},"parseError"),setInput:o(function(se,Ee){return this.yy=Ee||this.yy||{},this._input=se,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var se=this._input[0];this.yytext+=se,this.yyleng++,this.offset++,this.match+=se,this.matched+=se;var Ee=se.match(/(?:\r\n?|\n).*/g);return Ee?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),se},"input"),unput:o(function(se){var Ee=se.length,Ae=se.split(/(?:\r\n?|\n)/g);this._input=se+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ee),this.offset-=Ee;var Pe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Ae.length-1&&(this.yylineno-=Ae.length-1);var Me=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Ae?(Ae.length===Pe.length?this.yylloc.first_column:0)+Pe[Pe.length-Ae.length].length-Ae[0].length:this.yylloc.first_column-Ee},this.options.ranges&&(this.yylloc.range=[Me[0],Me[0]+this.yyleng-Ee]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(se){this.unput(this.match.slice(se))},"less"),pastInput:o(function(){var se=this.matched.substr(0,this.matched.length-this.match.length);return(se.length>20?"...":"")+se.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var se=this.match;return se.length<20&&(se+=this._input.substr(0,20-se.length)),(se.substr(0,20)+(se.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var se=this.pastInput(),Ee=new Array(se.length+1).join("-");return se+this.upcomingInput()+` -`+Ee+"^"},"showPosition"),test_match:o(function(se,Ee){var Ae,Pe,Me;if(this.options.backtrack_lexer&&(Me={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Me.yylloc.range=this.yylloc.range.slice(0))),Pe=se[0].match(/(?:\r\n?|\n).*/g),Pe&&(this.yylineno+=Pe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Pe?Pe[Pe.length-1].length-Pe[Pe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+se[0].length},this.yytext+=se[0],this.match+=se[0],this.matches=se,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(se[0].length),this.matched+=se[0],Ae=this.performAction.call(this,this.yy,this,Ee,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Ae)return Ae;if(this._backtrack){for(var me in Me)this[me]=Me[me];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var se,Ee,Ae,Pe;this._more||(this.yytext="",this.match="");for(var Me=this._currentRules(),me=0;meEe[0].length)){if(Ee=Ae,Pe=me,this.options.backtrack_lexer){if(se=this.test_match(Ae,Me[me]),se!==!1)return se;if(this._backtrack){Ee=!1;continue}else return!1}else if(!this.options.flex)break}return Ee?(se=this.test_match(Ee,Me[Pe]),se!==!1?se:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var Ee=this.next();return Ee||this.lex()},"lex"),begin:o(function(Ee){this.conditionStack.push(Ee)},"begin"),popState:o(function(){var Ee=this.conditionStack.length-1;return Ee>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Ee){return Ee=this.conditionStack.length-1-Math.abs(Ee||0),Ee>=0?this.conditionStack[Ee]:"INITIAL"},"topState"),pushState:o(function(Ee){this.begin(Ee)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(Ee,Ae,Pe,Me){var me=Me;switch(Pe){case 0:break;case 1:break;case 2:return 55;case 3:break;case 4:return this.begin("title"),35;break;case 5:return this.popState(),"title_value";break;case 6:return this.begin("acc_title"),37;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),39;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 23:this.popState();break;case 24:this.begin("string");break;case 25:this.popState();break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;break;case 29:return this.begin("point_start"),44;break;case 30:return this.begin("point_x"),45;break;case 31:this.popState();break;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;break;case 34:return 28;case 35:return 4;case 36:return 11;case 37:return 64;case 38:return 10;case 39:return 65;case 40:return 65;case 41:return 14;case 42:return 13;case 43:return 67;case 44:return 66;case 45:return 12;case 46:return 8;case 47:return 5;case 48:return 18;case 49:return 56;case 50:return 63;case 51:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],inclusive:!0}}};return Te}();ne.lexer=ye;function U(){this.yy={}}return o(U,"Parser"),U.prototype=ne,ne.Parser=U,new U}();nO.parser=nO;Fhe=nO});var os,fE,Ghe=M(()=>{"use strict";mr();hs();ht();Ub();os=sp(),fE=class{constructor(){this.classes=new Map;this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{o(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:ur.quadrantChart?.chartWidth||500,chartWidth:ur.quadrantChart?.chartHeight||500,titlePadding:ur.quadrantChart?.titlePadding||10,titleFontSize:ur.quadrantChart?.titleFontSize||20,quadrantPadding:ur.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:ur.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:ur.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:ur.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:ur.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:ur.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:ur.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:ur.quadrantChart?.pointTextPadding||5,pointLabelFontSize:ur.quadrantChart?.pointLabelFontSize||12,pointRadius:ur.quadrantChart?.pointRadius||5,xAxisPosition:ur.quadrantChart?.xAxisPosition||"top",yAxisPosition:ur.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:ur.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:ur.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:os.quadrant1Fill,quadrant2Fill:os.quadrant2Fill,quadrant3Fill:os.quadrant3Fill,quadrant4Fill:os.quadrant4Fill,quadrant1TextFill:os.quadrant1TextFill,quadrant2TextFill:os.quadrant2TextFill,quadrant3TextFill:os.quadrant3TextFill,quadrant4TextFill:os.quadrant4TextFill,quadrantPointFill:os.quadrantPointFill,quadrantPointTextFill:os.quadrantPointTextFill,quadrantXAxisTextFill:os.quadrantXAxisTextFill,quadrantYAxisTextFill:os.quadrantYAxisTextFill,quadrantTitleFill:os.quadrantTitleFill,quadrantInternalBorderStrokeFill:os.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:os.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,Y.info("clear called")}setData(e){this.data={...this.data,...e}}addPoints(e){this.data.points=[...e,...this.data.points]}addClass(e,r){this.classes.set(e,r)}setConfig(e){Y.trace("setConfig called with: ",e),this.config={...this.config,...e}}setThemeConfig(e){Y.trace("setThemeConfig called with: ",e),this.themeConfig={...this.themeConfig,...e}}calculateSpace(e,r,n,i){let a=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,s={top:e==="top"&&r?a:0,bottom:e==="bottom"&&r?a:0},l=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,u={left:this.config.yAxisPosition==="left"&&n?l:0,right:this.config.yAxisPosition==="right"&&n?l:0},h=this.config.titleFontSize+this.config.titlePadding*2,f={top:i?h:0},d=this.config.quadrantPadding+u.left,p=this.config.quadrantPadding+s.top+f.top,m=this.config.chartWidth-this.config.quadrantPadding*2-u.left-u.right,g=this.config.chartHeight-this.config.quadrantPadding*2-s.top-s.bottom-f.top,y=m/2,v=g/2;return{xAxisSpace:s,yAxisSpace:u,titleSpace:f,quadrantSpace:{quadrantLeft:d,quadrantTop:p,quadrantWidth:m,quadrantHalfWidth:y,quadrantHeight:g,quadrantHalfHeight:v}}}getAxisLabels(e,r,n,i){let{quadrantSpace:a,titleSpace:s}=i,{quadrantHalfHeight:l,quadrantHeight:u,quadrantLeft:h,quadrantHalfWidth:f,quadrantTop:d,quadrantWidth:p}=a,m=!!this.data.xAxisRightText,g=!!this.data.yAxisTopText,y=[];return this.data.xAxisLeftText&&r&&y.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+(m?f/2:0),y:e==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+d+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&r&&y.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+f+(m?f/2:0),y:e==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+d+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&n&&y.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:d+u-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&n&&y.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:d+l-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),y}getQuadrants(e){let{quadrantSpace:r}=e,{quadrantHalfHeight:n,quadrantLeft:i,quadrantHalfWidth:a,quadrantTop:s}=r,l=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s,width:a,height:n,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:s,width:a,height:n,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant4Fill}];for(let u of l)u.text.x=u.x+u.width/2,this.data.points.length===0?(u.text.y=u.y+u.height/2,u.text.horizontalPos="middle"):(u.text.y=u.y+this.config.quadrantTextTopPadding,u.text.horizontalPos="top");return l}getQuadrantPoints(e){let{quadrantSpace:r}=e,{quadrantHeight:n,quadrantLeft:i,quadrantTop:a,quadrantWidth:s}=r,l=bl().domain([0,1]).range([i,s+i]),u=bl().domain([0,1]).range([n+a,a]);return this.data.points.map(f=>{let d=this.classes.get(f.className);return d&&(f={...d,...f}),{x:l(f.x),y:u(f.y),fill:f.color??this.themeConfig.quadrantPointFill,radius:f.radius??this.config.pointRadius,text:{text:f.text,fill:this.themeConfig.quadrantPointTextFill,x:l(f.x),y:u(f.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:f.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:f.strokeWidth??"0px"}})}getBorders(e){let r=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:n}=e,{quadrantHalfHeight:i,quadrantHeight:a,quadrantLeft:s,quadrantHalfWidth:l,quadrantTop:u,quadrantWidth:h}=n;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u,x2:s+h+r,y2:u},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+h,y1:u+r,x2:s+h,y2:u+a-r},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u+a,x2:s+h+r,y2:u+a},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:u+r,x2:s,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+l,y1:u+r,x2:s+l,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:u+i,x2:s+h-r,y2:u+i}]}getTitle(e){if(e)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){let e=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),r=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),n=this.config.showTitle&&!!this.data.titleText,i=this.data.points.length>0?"bottom":this.config.xAxisPosition,a=this.calculateSpace(i,e,r,n);return{points:this.getQuadrantPoints(a),quadrants:this.getQuadrants(a),axisLabels:this.getAxisLabels(i,e,r,a),borderLines:this.getBorders(a),title:this.getTitle(n)}}}});function iO(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}function $he(t){return!/^\d+$/.test(t)}function Vhe(t){return!/^\d+px$/.test(t)}var T0,Uhe=M(()=>{"use strict";T0=class extends Error{static{o(this,"InvalidStyleError")}constructor(e,r,n){super(`value for ${e} ${r} is invalid, please use a valid ${n}`),this.name="InvalidStyleError"}};o(iO,"validateHexCode");o($he,"validateNumber");o(Vhe,"validateSizeInPixels")});function Wu(t){return Tr(t.trim(),RVe)}function MVe(t){ya.setData({quadrant1Text:Wu(t.text)})}function IVe(t){ya.setData({quadrant2Text:Wu(t.text)})}function OVe(t){ya.setData({quadrant3Text:Wu(t.text)})}function PVe(t){ya.setData({quadrant4Text:Wu(t.text)})}function BVe(t){ya.setData({xAxisLeftText:Wu(t.text)})}function FVe(t){ya.setData({xAxisRightText:Wu(t.text)})}function zVe(t){ya.setData({yAxisTopText:Wu(t.text)})}function GVe(t){ya.setData({yAxisBottomText:Wu(t.text)})}function aO(t){let e={};for(let r of t){let[n,i]=r.trim().split(/\s*:\s*/);if(n==="radius"){if($he(i))throw new T0(n,i,"number");e.radius=parseInt(i)}else if(n==="color"){if(iO(i))throw new T0(n,i,"hex code");e.color=i}else if(n==="stroke-color"){if(iO(i))throw new T0(n,i,"hex code");e.strokeColor=i}else if(n==="stroke-width"){if(Vhe(i))throw new T0(n,i,"number of pixels (eg. 10px)");e.strokeWidth=i}else throw new Error(`style named ${n} is not supported.`)}return e}function $Ve(t,e,r,n,i){let a=aO(i);ya.addPoints([{x:r,y:n,text:Wu(t.text),className:e,...a}])}function VVe(t,e){ya.addClass(t,aO(e))}function UVe(t){ya.setConfig({chartWidth:t})}function HVe(t){ya.setConfig({chartHeight:t})}function WVe(){let t=de(),{themeVariables:e,quadrantChart:r}=t;return r&&ya.setConfig(r),ya.setThemeConfig({quadrant1Fill:e.quadrant1Fill,quadrant2Fill:e.quadrant2Fill,quadrant3Fill:e.quadrant3Fill,quadrant4Fill:e.quadrant4Fill,quadrant1TextFill:e.quadrant1TextFill,quadrant2TextFill:e.quadrant2TextFill,quadrant3TextFill:e.quadrant3TextFill,quadrant4TextFill:e.quadrant4TextFill,quadrantPointFill:e.quadrantPointFill,quadrantPointTextFill:e.quadrantPointTextFill,quadrantXAxisTextFill:e.quadrantXAxisTextFill,quadrantYAxisTextFill:e.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:e.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:e.quadrantInternalBorderStrokeFill,quadrantTitleFill:e.quadrantTitleFill}),ya.setData({titleText:Jr()}),ya.build()}var RVe,ya,YVe,Hhe,Whe=M(()=>{"use strict";Vt();fr();ki();Ghe();Uhe();RVe=de();o(Wu,"textSanitizer");ya=new fE;o(MVe,"setQuadrant1Text");o(IVe,"setQuadrant2Text");o(OVe,"setQuadrant3Text");o(PVe,"setQuadrant4Text");o(BVe,"setXAxisLeftText");o(FVe,"setXAxisRightText");o(zVe,"setYAxisTopText");o(GVe,"setYAxisBottomText");o(aO,"parseStyles");o($Ve,"addPoint");o(VVe,"addClass");o(UVe,"setWidth");o(HVe,"setHeight");o(WVe,"getQuadrantData");YVe=o(function(){ya.clear(),_r()},"clear"),Hhe={setWidth:UVe,setHeight:HVe,setQuadrant1Text:MVe,setQuadrant2Text:IVe,setQuadrant3Text:OVe,setQuadrant4Text:PVe,setXAxisLeftText:BVe,setXAxisRightText:FVe,setYAxisTopText:zVe,setYAxisBottomText:GVe,parseStyles:aO,addPoint:$Ve,addClass:VVe,getQuadrantData:WVe,clear:YVe,setAccTitle:Rr,getAccTitle:Pr,setDiagramTitle:ln,getDiagramTitle:Jr,getAccDescription:Fr,setAccDescription:Br}});var qVe,Yhe,qhe=M(()=>{"use strict";mr();Vt();ht();ni();qVe=o((t,e,r,n)=>{function i(C){return C==="top"?"hanging":"middle"}o(i,"getDominantBaseLine");function a(C){return C==="left"?"start":"middle"}o(a,"getTextAnchor");function s(C){return`translate(${C.x}, ${C.y}) rotate(${C.rotation||0})`}o(s,"getTransformation");let l=de();Y.debug(`Rendering quadrant chart -`+t);let u=l.securityLevel,h;u==="sandbox"&&(h=ze("#i"+e));let d=(u==="sandbox"?ze(h.nodes()[0].contentDocument.body):ze("body")).select(`[id="${e}"]`),p=d.append("g").attr("class","main"),m=l.quadrantChart?.chartWidth??500,g=l.quadrantChart?.chartHeight??500;Zr(d,g,m,l.quadrantChart?.useMaxWidth??!0),d.attr("viewBox","0 0 "+m+" "+g),n.db.setHeight(g),n.db.setWidth(m);let y=n.db.getQuadrantData(),v=p.append("g").attr("class","quadrants"),x=p.append("g").attr("class","border"),b=p.append("g").attr("class","data-points"),w=p.append("g").attr("class","labels"),_=p.append("g").attr("class","title");y.title&&_.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",i(y.title.horizontalPos)).attr("text-anchor",a(y.title.verticalPos)).attr("transform",s(y.title)).text(y.title.text),y.borderLines&&x.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",C=>C.x1).attr("y1",C=>C.y1).attr("x2",C=>C.x2).attr("y2",C=>C.y2).style("stroke",C=>C.strokeFill).style("stroke-width",C=>C.strokeWidth);let T=v.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");T.append("rect").attr("x",C=>C.x).attr("y",C=>C.y).attr("width",C=>C.width).attr("height",C=>C.height).attr("fill",C=>C.fill),T.append("text").attr("x",0).attr("y",0).attr("fill",C=>C.text.fill).attr("font-size",C=>C.text.fontSize).attr("dominant-baseline",C=>i(C.text.horizontalPos)).attr("text-anchor",C=>a(C.text.verticalPos)).attr("transform",C=>s(C.text)).text(C=>C.text.text),w.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(C=>C.text).attr("fill",C=>C.fill).attr("font-size",C=>C.fontSize).attr("dominant-baseline",C=>i(C.horizontalPos)).attr("text-anchor",C=>a(C.verticalPos)).attr("transform",C=>s(C));let L=b.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");L.append("circle").attr("cx",C=>C.x).attr("cy",C=>C.y).attr("r",C=>C.radius).attr("fill",C=>C.fill).attr("stroke",C=>C.strokeColor).attr("stroke-width",C=>C.strokeWidth),L.append("text").attr("x",0).attr("y",0).text(C=>C.text.text).attr("fill",C=>C.text.fill).attr("font-size",C=>C.text.fontSize).attr("dominant-baseline",C=>i(C.text.horizontalPos)).attr("text-anchor",C=>a(C.text.verticalPos)).attr("transform",C=>s(C.text))},"draw"),Yhe={draw:qVe}});var Xhe={};vr(Xhe,{diagram:()=>XVe});var XVe,jhe=M(()=>{"use strict";zhe();Whe();qhe();XVe={parser:Fhe,db:Hhe,renderer:Yhe,styles:o(()=>"","styles")}});var sO,Zhe,Jhe=M(()=>{"use strict";sO=function(){var t=o(function(O,N,P,F){for(P=P||{},F=O.length;F--;P[O[F]]=N);return P},"o"),e=[1,10,12,14,16,18,19,21,23],r=[2,6],n=[1,3],i=[1,5],a=[1,6],s=[1,7],l=[1,5,10,12,14,16,18,19,21,23,34,35,36],u=[1,25],h=[1,26],f=[1,28],d=[1,29],p=[1,30],m=[1,31],g=[1,32],y=[1,33],v=[1,34],x=[1,35],b=[1,36],w=[1,37],_=[1,43],T=[1,42],E=[1,47],L=[1,50],C=[1,10,12,14,16,18,19,21,23,34,35,36],A=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],I=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],D=[1,64],k={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:o(function(N,P,F,B,$,z,W){var j=z.length-1;switch($){case 5:B.setOrientation(z[j]);break;case 9:B.setDiagramTitle(z[j].text.trim());break;case 12:B.setLineData({text:"",type:"text"},z[j]);break;case 13:B.setLineData(z[j-1],z[j]);break;case 14:B.setBarData({text:"",type:"text"},z[j]);break;case 15:B.setBarData(z[j-1],z[j]);break;case 16:this.$=z[j].trim(),B.setAccTitle(this.$);break;case 17:case 18:this.$=z[j].trim(),B.setAccDescription(this.$);break;case 19:this.$=z[j-1];break;case 20:this.$=[Number(z[j-2]),...z[j]];break;case 21:this.$=[Number(z[j])];break;case 22:B.setXAxisTitle(z[j]);break;case 23:B.setXAxisTitle(z[j-1]);break;case 24:B.setXAxisTitle({type:"text",text:""});break;case 25:B.setXAxisBand(z[j]);break;case 26:B.setXAxisRangeData(Number(z[j-2]),Number(z[j]));break;case 27:this.$=z[j-1];break;case 28:this.$=[z[j-2],...z[j]];break;case 29:this.$=[z[j]];break;case 30:B.setYAxisTitle(z[j]);break;case 31:B.setYAxisTitle(z[j-1]);break;case 32:B.setYAxisTitle({type:"text",text:""});break;case 33:B.setYAxisRangeData(Number(z[j-2]),Number(z[j]));break;case 37:this.$={text:z[j],type:"text"};break;case 38:this.$={text:z[j],type:"text"};break;case 39:this.$={text:z[j],type:"markdown"};break;case 40:this.$=z[j];break;case 41:this.$=z[j-1]+""+z[j];break}},"anonymous"),table:[t(e,r,{3:1,4:2,7:4,5:n,34:i,35:a,36:s}),{1:[3]},t(e,r,{4:2,7:4,3:8,5:n,34:i,35:a,36:s}),t(e,r,{4:2,7:4,6:9,3:10,5:n,8:[1,11],34:i,35:a,36:s}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},t(l,[2,34]),t(l,[2,35]),t(l,[2,36]),{1:[2,1]},t(e,r,{4:2,7:4,3:21,5:n,34:i,35:a,36:s}),{1:[2,3]},t(l,[2,5]),t(e,[2,7],{4:22,34:i,35:a,36:s}),{11:23,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{11:39,13:38,24:_,27:T,29:40,30:41,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{11:45,15:44,27:E,33:46,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{11:49,17:48,24:L,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{11:52,17:51,24:L,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{20:[1,53]},{22:[1,54]},t(C,[2,18]),{1:[2,2]},t(C,[2,8]),t(C,[2,9]),t(A,[2,37],{40:55,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w}),t(A,[2,38]),t(A,[2,39]),t(I,[2,40]),t(I,[2,42]),t(I,[2,43]),t(I,[2,44]),t(I,[2,45]),t(I,[2,46]),t(I,[2,47]),t(I,[2,48]),t(I,[2,49]),t(I,[2,50]),t(I,[2,51]),t(C,[2,10]),t(C,[2,22],{30:41,29:56,24:_,27:T}),t(C,[2,24]),t(C,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},t(C,[2,11]),t(C,[2,30],{33:60,27:E}),t(C,[2,32]),{31:[1,61]},t(C,[2,12]),{17:62,24:L},{25:63,27:D},t(C,[2,14]),{17:65,24:L},t(C,[2,16]),t(C,[2,17]),t(I,[2,41]),t(C,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},t(C,[2,31]),{27:[1,69]},t(C,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},t(C,[2,15]),t(C,[2,26]),t(C,[2,27]),{11:59,32:72,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},t(C,[2,33]),t(C,[2,19]),{25:73,27:D},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:o(function(N,P){if(P.recoverable)this.trace(N);else{var F=new Error(N);throw F.hash=P,F}},"parseError"),parse:o(function(N){var P=this,F=[0],B=[],$=[null],z=[],W=this.table,j="",K=0,ie=0,Q=0,ee=2,J=1,H=z.slice.call(arguments,1),q=Object.create(this.lexer),Z={yy:{}};for(var ae in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ae)&&(Z.yy[ae]=this.yy[ae]);q.setInput(N,Z.yy),Z.yy.lexer=q,Z.yy.parser=this,typeof q.yylloc>"u"&&(q.yylloc={});var ue=q.yylloc;z.push(ue);var ce=q.options&&q.options.ranges;typeof Z.yy.parseError=="function"?this.parseError=Z.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function te(ne){F.length=F.length-2*ne,$.length=$.length-ne,z.length=z.length-ne}o(te,"popStack");function De(){var ne;return ne=B.pop()||q.lex()||J,typeof ne!="number"&&(ne instanceof Array&&(B=ne,ne=B.pop()),ne=P.symbols_[ne]||ne),ne}o(De,"lex");for(var oe,ke,Fe,Be,Ve,Ge,He={},xe,X,fe,he;;){if(Fe=F[F.length-1],this.defaultActions[Fe]?Be=this.defaultActions[Fe]:((oe===null||typeof oe>"u")&&(oe=De()),Be=W[Fe]&&W[Fe][oe]),typeof Be>"u"||!Be.length||!Be[0]){var ge="";he=[];for(xe in W[Fe])this.terminals_[xe]&&xe>ee&&he.push("'"+this.terminals_[xe]+"'");q.showPosition?ge="Parse error on line "+(K+1)+`: -`+q.showPosition()+` -Expecting `+he.join(", ")+", got '"+(this.terminals_[oe]||oe)+"'":ge="Parse error on line "+(K+1)+": Unexpected "+(oe==J?"end of input":"'"+(this.terminals_[oe]||oe)+"'"),this.parseError(ge,{text:q.match,token:this.terminals_[oe]||oe,line:q.yylineno,loc:ue,expected:he})}if(Be[0]instanceof Array&&Be.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Fe+", token: "+oe);switch(Be[0]){case 1:F.push(oe),$.push(q.yytext),z.push(q.yylloc),F.push(Be[1]),oe=null,ke?(oe=ke,ke=null):(ie=q.yyleng,j=q.yytext,K=q.yylineno,ue=q.yylloc,Q>0&&Q--);break;case 2:if(X=this.productions_[Be[1]][1],He.$=$[$.length-X],He._$={first_line:z[z.length-(X||1)].first_line,last_line:z[z.length-1].last_line,first_column:z[z.length-(X||1)].first_column,last_column:z[z.length-1].last_column},ce&&(He._$.range=[z[z.length-(X||1)].range[0],z[z.length-1].range[1]]),Ge=this.performAction.apply(He,[j,ie,K,Z.yy,Be[1],$,z].concat(H)),typeof Ge<"u")return Ge;X&&(F=F.slice(0,-1*X*2),$=$.slice(0,-1*X),z=z.slice(0,-1*X)),F.push(this.productions_[Be[1]][0]),$.push(He.$),z.push(He._$),fe=W[F[F.length-2]][F[F.length-1]],F.push(fe);break;case 3:return!0}}return!0},"parse")},R=function(){var O={EOF:1,parseError:o(function(P,F){if(this.yy.parser)this.yy.parser.parseError(P,F);else throw new Error(P)},"parseError"),setInput:o(function(N,P){return this.yy=P||this.yy||{},this._input=N,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var N=this._input[0];this.yytext+=N,this.yyleng++,this.offset++,this.match+=N,this.matched+=N;var P=N.match(/(?:\r\n?|\n).*/g);return P?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),N},"input"),unput:o(function(N){var P=N.length,F=N.split(/(?:\r\n?|\n)/g);this._input=N+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-P),this.offset-=P;var B=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),F.length-1&&(this.yylineno-=F.length-1);var $=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:F?(F.length===B.length?this.yylloc.first_column:0)+B[B.length-F.length].length-F[0].length:this.yylloc.first_column-P},this.options.ranges&&(this.yylloc.range=[$[0],$[0]+this.yyleng-P]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(N){this.unput(this.match.slice(N))},"less"),pastInput:o(function(){var N=this.matched.substr(0,this.matched.length-this.match.length);return(N.length>20?"...":"")+N.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var N=this.match;return N.length<20&&(N+=this._input.substr(0,20-N.length)),(N.substr(0,20)+(N.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var N=this.pastInput(),P=new Array(N.length+1).join("-");return N+this.upcomingInput()+` -`+P+"^"},"showPosition"),test_match:o(function(N,P){var F,B,$;if(this.options.backtrack_lexer&&($={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&($.yylloc.range=this.yylloc.range.slice(0))),B=N[0].match(/(?:\r\n?|\n).*/g),B&&(this.yylineno+=B.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:B?B[B.length-1].length-B[B.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+N[0].length},this.yytext+=N[0],this.match+=N[0],this.matches=N,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(N[0].length),this.matched+=N[0],F=this.performAction.call(this,this.yy,this,P,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),F)return F;if(this._backtrack){for(var z in $)this[z]=$[z];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var N,P,F,B;this._more||(this.yytext="",this.match="");for(var $=this._currentRules(),z=0;z<$.length;z++)if(F=this._input.match(this.rules[$[z]]),F&&(!P||F[0].length>P[0].length)){if(P=F,B=z,this.options.backtrack_lexer){if(N=this.test_match(F,$[z]),N!==!1)return N;if(this._backtrack){P=!1;continue}else return!1}else if(!this.options.flex)break}return P?(N=this.test_match(P,$[B]),N!==!1?N:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var P=this.next();return P||this.lex()},"lex"),begin:o(function(P){this.conditionStack.push(P)},"begin"),popState:o(function(){var P=this.conditionStack.length-1;return P>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(P){return P=this.conditionStack.length-1-Math.abs(P||0),P>=0?this.conditionStack[P]:"INITIAL"},"topState"),pushState:o(function(P){this.begin(P)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(P,F,B,$){var z=$;switch(B){case 0:break;case 1:break;case 2:return this.popState(),34;break;case 3:return this.popState(),34;break;case 4:return 34;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.pushState("acc_descr"),21;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 8;case 16:return this.pushState("axis_data"),"X_AXIS";break;case 17:return this.pushState("axis_data"),"Y_AXIS";break;case 18:return this.pushState("axis_band_data"),24;break;case 19:return 31;case 20:return this.pushState("data"),16;break;case 21:return this.pushState("data"),18;break;case 22:return this.pushState("data_inner"),24;break;case 23:return 27;case 24:return this.popState(),26;break;case 25:this.popState();break;case 26:this.pushState("string");break;case 27:this.popState();break;case 28:return"STR";case 29:return 24;case 30:return 26;case 31:return 43;case 32:return"COLON";case 33:return 44;case 34:return 28;case 35:return 45;case 36:return 46;case 37:return 48;case 38:return 50;case 39:return 47;case 40:return 41;case 41:return 49;case 42:return 42;case 43:break;case 44:return 35;case 45:return 36}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\{)/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,20,21,22,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,23,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[27,28],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0}}};return O}();k.lexer=R;function S(){this.yy={}}return o(S,"Parser"),S.prototype=k,k.Parser=S,new S}();sO.parser=sO;Zhe=sO});function oO(t){return t.type==="bar"}function dE(t){return t.type==="band"}function Ig(t){return t.type==="linear"}var pE=M(()=>{"use strict";o(oO,"isBarPlot");o(dE,"isBandAxisData");o(Ig,"isLinearAxisData")});var Og,lO=M(()=>{"use strict";Dl();Og=class{constructor(e){this.parentGroup=e}static{o(this,"TextDimensionCalculatorWithFont")}getMaxDimension(e,r){if(!this.parentGroup)return{width:e.reduce((a,s)=>Math.max(s.length,a),0)*r,height:r};let n={width:0,height:0},i=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",r);for(let a of e){let s=gj(i,1,a),l=s?s.width:a.length*r,u=s?s.height:r;n.width=Math.max(n.width,l),n.height=Math.max(n.height,u)}return i.remove(),n}}});var Pg,cO=M(()=>{"use strict";Pg=class{constructor(e,r,n,i){this.axisConfig=e;this.title=r;this.textDimensionCalculator=n;this.axisThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0};this.axisPosition="left";this.showTitle=!1;this.showLabel=!1;this.showTick=!1;this.showAxisLine=!1;this.outerPadding=0;this.titleTextHeight=0;this.labelTextHeight=0;this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}static{o(this,"BaseAxis")}setRange(e){this.range=e,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=e[1]-e[0]:this.boundingRect.width=e[1]-e[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(e){this.axisPosition=e,this.setRange(this.range)}getTickDistance(){let e=this.getRange();return Math.abs(e[0]-e[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(e=>e.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(e){let r=e.height;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*e.width;this.outerPadding=Math.min(n.width/2,i);let a=n.height+this.axisConfig.labelPadding*2;this.labelTextHeight=n.height,a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=e.width,this.boundingRect.height=e.height-r}calculateSpaceIfDrawnVertical(e){let r=e.width;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*e.height;this.outerPadding=Math.min(n.height/2,i);let a=n.width+this.axisConfig.labelPadding*2;a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=e.width-r,this.boundingRect.height=e.height}calculateSpace(e){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(e):this.calculateSpaceIfDrawnHorizontally(e),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}getDrawableElementsForLeftAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${r},${this.boundingRect.y} L ${r},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(r),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){let r=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${r},${this.getScaleValue(n)} L ${r-this.axisConfig.tickLength},${this.getScaleValue(n)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),e}getDrawableElementsForBottomAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.y+this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r} L ${this.getScaleValue(n)},${r+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),e}getDrawableElementsForTopAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y;e.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(n)},${r+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),e}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}}});var mE,efe=M(()=>{"use strict";mr();ht();cO();mE=class extends Pg{static{o(this,"BandAxis")}constructor(e,r,n,i,a){super(e,i,a,r),this.categories=n,this.scale=Lp().domain(this.categories).range(this.getRange())}setRange(e){super.setRange(e)}recalculateScale(){this.scale=Lp().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),Y.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(e){return this.scale(e)??this.getRange()[0]}}});var gE,tfe=M(()=>{"use strict";mr();cO();gE=class extends Pg{static{o(this,"LinearAxis")}constructor(e,r,n,i,a){super(e,i,a,r),this.domain=n,this.scale=bl().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){let e=[...this.domain];this.axisPosition==="left"&&e.reverse(),this.scale=bl().domain(e).range(this.getRange())}getScaleValue(e){return this.scale(e)}}});function uO(t,e,r,n){let i=new Og(n);return dE(t)?new mE(e,r,t.categories,t.title,i):new gE(e,r,[t.min,t.max],t.title,i)}var rfe=M(()=>{"use strict";pE();lO();efe();tfe();o(uO,"getAxis")});function nfe(t,e,r,n){let i=new Og(n);return new hO(i,t,e,r)}var hO,ife=M(()=>{"use strict";lO();hO=class{constructor(e,r,n,i){this.textDimensionCalculator=e;this.chartConfig=r;this.chartData=n;this.chartThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{o(this,"ChartTitle")}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){let r=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),n=Math.max(r.width,e.width),i=r.height+2*this.chartConfig.titlePadding;return r.width<=n&&r.height<=i&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=n,this.boundingRect.height=i,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){let e=[];return this.showChartTitle&&e.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),e}};o(nfe,"getChartTitleComponent")});var yE,afe=M(()=>{"use strict";mr();yE=class{constructor(e,r,n,i,a){this.plotData=e;this.xAxis=r;this.yAxis=n;this.orientation=i;this.plotIndex=a}static{o(this,"LinePlot")}getDrawableElement(){let e=this.plotData.data.map(n=>[this.xAxis.getScaleValue(n[0]),this.yAxis.getScaleValue(n[1])]),r;return this.orientation==="horizontal"?r=Ka().y(n=>n[0]).x(n=>n[1])(e):r=Ka().x(n=>n[0]).y(n=>n[1])(e),r?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:r,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}}});var vE,sfe=M(()=>{"use strict";vE=class{constructor(e,r,n,i,a,s){this.barData=e;this.boundingRect=r;this.xAxis=n;this.yAxis=i;this.orientation=a;this.plotIndex=s}static{o(this,"BarPlot")}getDrawableElement(){let e=this.barData.data.map(a=>[this.xAxis.getScaleValue(a[0]),this.yAxis.getScaleValue(a[1])]),n=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-.05),i=n/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:e.map(a=>({x:this.boundingRect.x,y:a[0]-i,height:n,width:a[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:e.map(a=>({x:a[0]-i,y:a[1],width:n,height:this.boundingRect.y+this.boundingRect.height-a[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}});function ofe(t,e,r){return new fO(t,e,r)}var fO,lfe=M(()=>{"use strict";afe();sfe();fO=class{constructor(e,r,n){this.chartConfig=e;this.chartData=r;this.chartThemeConfig=n;this.boundingRect={x:0,y:0,width:0,height:0}}static{o(this,"BasePlot")}setAxes(e,r){this.xAxis=e,this.yAxis=r}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){return this.boundingRect.width=e.width,this.boundingRect.height=e.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");let e=[];for(let[r,n]of this.chartData.plots.entries())switch(n.type){case"line":{let i=new yE(n,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);e.push(...i.getDrawableElement())}break;case"bar":{let i=new vE(n,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);e.push(...i.getDrawableElement())}break}return e}};o(ofe,"getPlotComponent")});var xE,cfe=M(()=>{"use strict";rfe();ife();lfe();pE();xE=class{constructor(e,r,n,i){this.chartConfig=e;this.chartData=r;this.componentStore={title:nfe(e,r,n,i),plot:ofe(e,r,n),xAxis:uO(r.xAxis,e.xAxis,{titleColor:n.xAxisTitleColor,labelColor:n.xAxisLabelColor,tickColor:n.xAxisTickColor,axisLineColor:n.xAxisLineColor},i),yAxis:uO(r.yAxis,e.yAxis,{titleColor:n.yAxisTitleColor,labelColor:n.yAxisLabelColor,tickColor:n.yAxisTickColor,axisLineColor:n.yAxisLineColor},i)}}static{o(this,"Orchestrator")}calculateVerticalSpace(){let e=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),s=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),l=this.componentStore.plot.calculateSpace({width:a,height:s});e-=l.width,r-=l.height,l=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),i=l.height,r-=l.height,this.componentStore.xAxis.setAxisPosition("bottom"),l=this.componentStore.xAxis.calculateSpace({width:e,height:r}),r-=l.height,this.componentStore.yAxis.setAxisPosition("left"),l=this.componentStore.yAxis.calculateSpace({width:e,height:r}),n=l.width,e-=l.width,e>0&&(a+=e,e=0),r>0&&(s+=r,r=0),this.componentStore.plot.calculateSpace({width:a,height:s}),this.componentStore.plot.setBoundingBoxXY({x:n,y:i}),this.componentStore.xAxis.setRange([n,n+a]),this.componentStore.xAxis.setBoundingBoxXY({x:n,y:i+s}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:i}),this.chartData.plots.some(u=>oO(u))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let e=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=0,s=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),l=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),u=this.componentStore.plot.calculateSpace({width:s,height:l});e-=u.width,r-=u.height,u=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),n=u.height,r-=u.height,this.componentStore.xAxis.setAxisPosition("left"),u=this.componentStore.xAxis.calculateSpace({width:e,height:r}),e-=u.width,i=u.width,this.componentStore.yAxis.setAxisPosition("top"),u=this.componentStore.yAxis.calculateSpace({width:e,height:r}),r-=u.height,a=n+u.height,e>0&&(s+=e,e=0),r>0&&(l+=r,r=0),this.componentStore.plot.calculateSpace({width:s,height:l}),this.componentStore.plot.setBoundingBoxXY({x:i,y:a}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:i,y:n}),this.componentStore.xAxis.setRange([a,a+l]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:a}),this.chartData.plots.some(h=>oO(h))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();let e=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(let r of Object.values(this.componentStore))e.push(...r.getDrawableElements());return e}}});var bE,ufe=M(()=>{"use strict";cfe();bE=class{static{o(this,"XYChartBuilder")}static build(e,r,n,i){return new xE(e,r,n,i).getDrawableElement()}}});function ffe(){let t=sp(),e=Sr();return ws(t.xyChart,e.themeVariables.xyChart)}function dfe(){let t=Sr();return ws(ur.xyChart,t.xyChart)}function pfe(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function mO(t){let e=Sr();return Tr(t.trim(),e)}function ZVe(t){hfe=t}function JVe(t){t==="horizontal"?mx.chartOrientation="horizontal":mx.chartOrientation="vertical"}function eUe(t){un.xAxis.title=mO(t.text)}function mfe(t,e){un.xAxis={type:"linear",title:un.xAxis.title,min:t,max:e},wE=!0}function tUe(t){un.xAxis={type:"band",title:un.xAxis.title,categories:t.map(e=>mO(e.text))},wE=!0}function rUe(t){un.yAxis.title=mO(t.text)}function nUe(t,e){un.yAxis={type:"linear",title:un.yAxis.title,min:t,max:e},pO=!0}function iUe(t){let e=Math.min(...t),r=Math.max(...t),n=Ig(un.yAxis)?un.yAxis.min:1/0,i=Ig(un.yAxis)?un.yAxis.max:-1/0;un.yAxis={type:"linear",title:un.yAxis.title,min:Math.min(n,e),max:Math.max(i,r)}}function gfe(t){let e=[];if(t.length===0)return e;if(!wE){let r=Ig(un.xAxis)?un.xAxis.min:1/0,n=Ig(un.xAxis)?un.xAxis.max:-1/0;mfe(Math.min(r,1),Math.max(n,t.length))}if(pO||iUe(t),dE(un.xAxis)&&(e=un.xAxis.categories.map((r,n)=>[r,t[n]])),Ig(un.xAxis)){let r=un.xAxis.min,n=un.xAxis.max,i=(n-r)/(t.length-1),a=[];for(let s=r;s<=n;s+=i)a.push(`${s}`);e=a.map((s,l)=>[s,t[l]])}return e}function yfe(t){return dO[t===0?0:t%dO.length]}function aUe(t,e){let r=gfe(e);un.plots.push({type:"line",strokeFill:yfe(px),strokeWidth:2,data:r}),px++}function sUe(t,e){let r=gfe(e);un.plots.push({type:"bar",fill:yfe(px),data:r}),px++}function oUe(){if(un.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return un.title=Jr(),bE.build(mx,un,gx,hfe)}function lUe(){return gx}function cUe(){return mx}var px,hfe,mx,gx,un,dO,wE,pO,uUe,vfe,xfe=M(()=>{"use strict";Ua();hs();Ub();hr();fr();ki();ufe();pE();px=0,mx=dfe(),gx=ffe(),un=pfe(),dO=gx.plotColorPalette.split(",").map(t=>t.trim()),wE=!1,pO=!1;o(ffe,"getChartDefaultThemeConfig");o(dfe,"getChartDefaultConfig");o(pfe,"getChartDefaultData");o(mO,"textSanitizer");o(ZVe,"setTmpSVGG");o(JVe,"setOrientation");o(eUe,"setXAxisTitle");o(mfe,"setXAxisRangeData");o(tUe,"setXAxisBand");o(rUe,"setYAxisTitle");o(nUe,"setYAxisRangeData");o(iUe,"setYAxisRangeFromPlotData");o(gfe,"transformDataWithoutCategory");o(yfe,"getPlotColorFromPalette");o(aUe,"setLineData");o(sUe,"setBarData");o(oUe,"getDrawableElem");o(lUe,"getChartThemeConfig");o(cUe,"getChartConfig");uUe=o(function(){_r(),px=0,mx=dfe(),un=pfe(),gx=ffe(),dO=gx.plotColorPalette.split(",").map(t=>t.trim()),wE=!1,pO=!1},"clear"),vfe={getDrawableElem:oUe,clear:uUe,setAccTitle:Rr,getAccTitle:Pr,setDiagramTitle:ln,getDiagramTitle:Jr,getAccDescription:Fr,setAccDescription:Br,setOrientation:JVe,setXAxisTitle:eUe,setXAxisRangeData:mfe,setXAxisBand:tUe,setYAxisTitle:rUe,setYAxisRangeData:nUe,setLineData:aUe,setBarData:sUe,setTmpSVGG:ZVe,getChartThemeConfig:lUe,getChartConfig:cUe}});var hUe,bfe,wfe=M(()=>{"use strict";ht();Hu();ni();hUe=o((t,e,r,n)=>{let i=n.db,a=i.getChartThemeConfig(),s=i.getChartConfig();function l(v){return v==="top"?"text-before-edge":"middle"}o(l,"getDominantBaseLine");function u(v){return v==="left"?"start":v==="right"?"end":"middle"}o(u,"getTextAnchor");function h(v){return`translate(${v.x}, ${v.y}) rotate(${v.rotation||0})`}o(h,"getTextTransformation"),Y.debug(`Rendering xychart chart -`+t);let f=Oa(e),d=f.append("g").attr("class","main"),p=d.append("rect").attr("width",s.width).attr("height",s.height).attr("class","background");Zr(f,s.height,s.width,!0),f.attr("viewBox",`0 0 ${s.width} ${s.height}`),p.attr("fill",a.backgroundColor),i.setTmpSVGG(f.append("g").attr("class","mermaid-tmp-group"));let m=i.getDrawableElem(),g={};function y(v){let x=d,b="";for(let[w]of v.entries()){let _=d;w>0&&g[b]&&(_=g[b]),b+=v[w],x=g[b],x||(x=g[b]=_.append("g").attr("class",v[w]))}return x}o(y,"getGroup");for(let v of m){if(v.data.length===0)continue;let x=y(v.groupTexts);switch(v.type){case"rect":x.selectAll("rect").data(v.data).enter().append("rect").attr("x",b=>b.x).attr("y",b=>b.y).attr("width",b=>b.width).attr("height",b=>b.height).attr("fill",b=>b.fill).attr("stroke",b=>b.strokeFill).attr("stroke-width",b=>b.strokeWidth);break;case"text":x.selectAll("text").data(v.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",b=>b.fill).attr("font-size",b=>b.fontSize).attr("dominant-baseline",b=>l(b.verticalPos)).attr("text-anchor",b=>u(b.horizontalPos)).attr("transform",b=>h(b)).text(b=>b.text);break;case"path":x.selectAll("path").data(v.data).enter().append("path").attr("d",b=>b.path).attr("fill",b=>b.fill?b.fill:"none").attr("stroke",b=>b.strokeFill).attr("stroke-width",b=>b.strokeWidth);break}}},"draw"),bfe={draw:hUe}});var Tfe={};vr(Tfe,{diagram:()=>fUe});var fUe,kfe=M(()=>{"use strict";Jhe();xfe();wfe();fUe={parser:Zhe,db:vfe,renderer:bfe}});var gO,Cfe,Afe=M(()=>{"use strict";gO=function(){var t=o(function(ie,Q,ee,J){for(ee=ee||{},J=ie.length;J--;ee[ie[J]]=Q);return ee},"o"),e=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[5,6,8,9,11,13,31,32,33,34,35,36,44,62,63],s=[1,18],l=[2,7],u=[1,22],h=[1,23],f=[1,24],d=[1,25],p=[1,26],m=[1,27],g=[1,20],y=[1,28],v=[1,29],x=[62,63],b=[5,8,9,11,13,31,32,33,34,35,36,44,51,53,62,63],w=[1,47],_=[1,48],T=[1,49],E=[1,50],L=[1,51],C=[1,52],A=[1,53],I=[53,54],D=[1,64],k=[1,60],R=[1,61],S=[1,62],O=[1,63],N=[1,65],P=[1,69],F=[1,70],B=[1,67],$=[1,68],z=[5,8,9,11,13,31,32,33,34,35,36,44,62,63],W={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,requirementType:17,requirementName:18,STRUCT_START:19,requirementBody:20,ID:21,COLONSEP:22,id:23,TEXT:24,text:25,RISK:26,riskLevel:27,VERIFYMTHD:28,verifyType:29,STRUCT_STOP:30,REQUIREMENT:31,FUNCTIONAL_REQUIREMENT:32,INTERFACE_REQUIREMENT:33,PERFORMANCE_REQUIREMENT:34,PHYSICAL_REQUIREMENT:35,DESIGN_CONSTRAINT:36,LOW_RISK:37,MED_RISK:38,HIGH_RISK:39,VERIFY_ANALYSIS:40,VERIFY_DEMONSTRATION:41,VERIFY_INSPECTION:42,VERIFY_TEST:43,ELEMENT:44,elementName:45,elementBody:46,TYPE:47,type:48,DOCREF:49,ref:50,END_ARROW_L:51,relationship:52,LINE:53,END_ARROW_R:54,CONTAINS:55,COPIES:56,DERIVES:57,SATISFIES:58,VERIFIES:59,REFINES:60,TRACES:61,unqString:62,qString:63,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",19:"STRUCT_START",21:"ID",22:"COLONSEP",24:"TEXT",26:"RISK",28:"VERIFYMTHD",30:"STRUCT_STOP",31:"REQUIREMENT",32:"FUNCTIONAL_REQUIREMENT",33:"INTERFACE_REQUIREMENT",34:"PERFORMANCE_REQUIREMENT",35:"PHYSICAL_REQUIREMENT",36:"DESIGN_CONSTRAINT",37:"LOW_RISK",38:"MED_RISK",39:"HIGH_RISK",40:"VERIFY_ANALYSIS",41:"VERIFY_DEMONSTRATION",42:"VERIFY_INSPECTION",43:"VERIFY_TEST",44:"ELEMENT",47:"TYPE",49:"DOCREF",51:"END_ARROW_L",53:"LINE",54:"END_ARROW_R",55:"CONTAINS",56:"COPIES",57:"DERIVES",58:"SATISFIES",59:"VERIFIES",60:"REFINES",61:"TRACES",62:"unqString",63:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[14,5],[20,5],[20,5],[20,5],[20,5],[20,2],[20,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[27,1],[27,1],[27,1],[29,1],[29,1],[29,1],[29,1],[15,5],[46,5],[46,5],[46,2],[46,1],[16,5],[16,5],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[18,1],[18,1],[23,1],[23,1],[25,1],[25,1],[45,1],[45,1],[48,1],[48,1],[50,1],[50,1]],performAction:o(function(Q,ee,J,H,q,Z,ae){var ue=Z.length-1;switch(q){case 4:this.$=Z[ue].trim(),H.setAccTitle(this.$);break;case 5:case 6:this.$=Z[ue].trim(),H.setAccDescription(this.$);break;case 7:this.$=[];break;case 13:H.addRequirement(Z[ue-3],Z[ue-4]);break;case 14:H.setNewReqId(Z[ue-2]);break;case 15:H.setNewReqText(Z[ue-2]);break;case 16:H.setNewReqRisk(Z[ue-2]);break;case 17:H.setNewReqVerifyMethod(Z[ue-2]);break;case 20:this.$=H.RequirementType.REQUIREMENT;break;case 21:this.$=H.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 22:this.$=H.RequirementType.INTERFACE_REQUIREMENT;break;case 23:this.$=H.RequirementType.PERFORMANCE_REQUIREMENT;break;case 24:this.$=H.RequirementType.PHYSICAL_REQUIREMENT;break;case 25:this.$=H.RequirementType.DESIGN_CONSTRAINT;break;case 26:this.$=H.RiskLevel.LOW_RISK;break;case 27:this.$=H.RiskLevel.MED_RISK;break;case 28:this.$=H.RiskLevel.HIGH_RISK;break;case 29:this.$=H.VerifyType.VERIFY_ANALYSIS;break;case 30:this.$=H.VerifyType.VERIFY_DEMONSTRATION;break;case 31:this.$=H.VerifyType.VERIFY_INSPECTION;break;case 32:this.$=H.VerifyType.VERIFY_TEST;break;case 33:H.addElement(Z[ue-3]);break;case 34:H.setNewElementType(Z[ue-2]);break;case 35:H.setNewElementDocRef(Z[ue-2]);break;case 38:H.addRelationship(Z[ue-2],Z[ue],Z[ue-4]);break;case 39:H.addRelationship(Z[ue-2],Z[ue-4],Z[ue]);break;case 40:this.$=H.Relationships.CONTAINS;break;case 41:this.$=H.Relationships.COPIES;break;case 42:this.$=H.Relationships.DERIVES;break;case 43:this.$=H.Relationships.SATISFIES;break;case 44:this.$=H.Relationships.VERIFIES;break;case 45:this.$=H.Relationships.REFINES;break;case 46:this.$=H.Relationships.TRACES;break}},"anonymous"),table:[{3:1,4:2,6:e,9:r,11:n,13:i},{1:[3]},{3:8,4:2,5:[1,7],6:e,9:r,11:n,13:i},{5:[1,9]},{10:[1,10]},{12:[1,11]},t(a,[2,6]),{3:12,4:2,6:e,9:r,11:n,13:i},{1:[2,2]},{4:17,5:s,7:13,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:19,23:21,31:u,32:h,33:f,34:d,35:p,36:m,44:g,62:y,63:v},t(a,[2,4]),t(a,[2,5]),{1:[2,1]},{8:[1,30]},{4:17,5:s,7:31,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:19,23:21,31:u,32:h,33:f,34:d,35:p,36:m,44:g,62:y,63:v},{4:17,5:s,7:32,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:19,23:21,31:u,32:h,33:f,34:d,35:p,36:m,44:g,62:y,63:v},{4:17,5:s,7:33,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:19,23:21,31:u,32:h,33:f,34:d,35:p,36:m,44:g,62:y,63:v},{4:17,5:s,7:34,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:19,23:21,31:u,32:h,33:f,34:d,35:p,36:m,44:g,62:y,63:v},{4:17,5:s,7:35,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:19,23:21,31:u,32:h,33:f,34:d,35:p,36:m,44:g,62:y,63:v},{18:36,62:[1,37],63:[1,38]},{45:39,62:[1,40],63:[1,41]},{51:[1,42],53:[1,43]},t(x,[2,20]),t(x,[2,21]),t(x,[2,22]),t(x,[2,23]),t(x,[2,24]),t(x,[2,25]),t(b,[2,49]),t(b,[2,50]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{19:[1,44]},{19:[2,47]},{19:[2,48]},{19:[1,45]},{19:[2,53]},{19:[2,54]},{52:46,55:w,56:_,57:T,58:E,59:L,60:C,61:A},{52:54,55:w,56:_,57:T,58:E,59:L,60:C,61:A},{5:[1,55]},{5:[1,56]},{53:[1,57]},t(I,[2,40]),t(I,[2,41]),t(I,[2,42]),t(I,[2,43]),t(I,[2,44]),t(I,[2,45]),t(I,[2,46]),{54:[1,58]},{5:D,20:59,21:k,24:R,26:S,28:O,30:N},{5:P,30:F,46:66,47:B,49:$},{23:71,62:y,63:v},{23:72,62:y,63:v},t(z,[2,13]),{22:[1,73]},{22:[1,74]},{22:[1,75]},{22:[1,76]},{5:D,20:77,21:k,24:R,26:S,28:O,30:N},t(z,[2,19]),t(z,[2,33]),{22:[1,78]},{22:[1,79]},{5:P,30:F,46:80,47:B,49:$},t(z,[2,37]),t(z,[2,38]),t(z,[2,39]),{23:81,62:y,63:v},{25:82,62:[1,83],63:[1,84]},{27:85,37:[1,86],38:[1,87],39:[1,88]},{29:89,40:[1,90],41:[1,91],42:[1,92],43:[1,93]},t(z,[2,18]),{48:94,62:[1,95],63:[1,96]},{50:97,62:[1,98],63:[1,99]},t(z,[2,36]),{5:[1,100]},{5:[1,101]},{5:[2,51]},{5:[2,52]},{5:[1,102]},{5:[2,26]},{5:[2,27]},{5:[2,28]},{5:[1,103]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[2,32]},{5:[1,104]},{5:[2,55]},{5:[2,56]},{5:[1,105]},{5:[2,57]},{5:[2,58]},{5:D,20:106,21:k,24:R,26:S,28:O,30:N},{5:D,20:107,21:k,24:R,26:S,28:O,30:N},{5:D,20:108,21:k,24:R,26:S,28:O,30:N},{5:D,20:109,21:k,24:R,26:S,28:O,30:N},{5:P,30:F,46:110,47:B,49:$},{5:P,30:F,46:111,47:B,49:$},t(z,[2,14]),t(z,[2,15]),t(z,[2,16]),t(z,[2,17]),t(z,[2,34]),t(z,[2,35])],defaultActions:{8:[2,2],12:[2,1],30:[2,3],31:[2,8],32:[2,9],33:[2,10],34:[2,11],35:[2,12],37:[2,47],38:[2,48],40:[2,53],41:[2,54],83:[2,51],84:[2,52],86:[2,26],87:[2,27],88:[2,28],90:[2,29],91:[2,30],92:[2,31],93:[2,32],95:[2,55],96:[2,56],98:[2,57],99:[2,58]},parseError:o(function(Q,ee){if(ee.recoverable)this.trace(Q);else{var J=new Error(Q);throw J.hash=ee,J}},"parseError"),parse:o(function(Q){var ee=this,J=[0],H=[],q=[null],Z=[],ae=this.table,ue="",ce=0,te=0,De=0,oe=2,ke=1,Fe=Z.slice.call(arguments,1),Be=Object.create(this.lexer),Ve={yy:{}};for(var Ge in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ge)&&(Ve.yy[Ge]=this.yy[Ge]);Be.setInput(Q,Ve.yy),Ve.yy.lexer=Be,Ve.yy.parser=this,typeof Be.yylloc>"u"&&(Be.yylloc={});var He=Be.yylloc;Z.push(He);var xe=Be.options&&Be.options.ranges;typeof Ve.yy.parseError=="function"?this.parseError=Ve.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function X(We){J.length=J.length-2*We,q.length=q.length-We,Z.length=Z.length-We}o(X,"popStack");function fe(){var We;return We=H.pop()||Be.lex()||ke,typeof We!="number"&&(We instanceof Array&&(H=We,We=H.pop()),We=ee.symbols_[We]||We),We}o(fe,"lex");for(var he,ge,ne,ye,U,Te,se={},Ee,Ae,Pe,Me;;){if(ne=J[J.length-1],this.defaultActions[ne]?ye=this.defaultActions[ne]:((he===null||typeof he>"u")&&(he=fe()),ye=ae[ne]&&ae[ne][he]),typeof ye>"u"||!ye.length||!ye[0]){var me="";Me=[];for(Ee in ae[ne])this.terminals_[Ee]&&Ee>oe&&Me.push("'"+this.terminals_[Ee]+"'");Be.showPosition?me="Parse error on line "+(ce+1)+`: -`+Be.showPosition()+` -Expecting `+Me.join(", ")+", got '"+(this.terminals_[he]||he)+"'":me="Parse error on line "+(ce+1)+": Unexpected "+(he==ke?"end of input":"'"+(this.terminals_[he]||he)+"'"),this.parseError(me,{text:Be.match,token:this.terminals_[he]||he,line:Be.yylineno,loc:He,expected:Me})}if(ye[0]instanceof Array&&ye.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ne+", token: "+he);switch(ye[0]){case 1:J.push(he),q.push(Be.yytext),Z.push(Be.yylloc),J.push(ye[1]),he=null,ge?(he=ge,ge=null):(te=Be.yyleng,ue=Be.yytext,ce=Be.yylineno,He=Be.yylloc,De>0&&De--);break;case 2:if(Ae=this.productions_[ye[1]][1],se.$=q[q.length-Ae],se._$={first_line:Z[Z.length-(Ae||1)].first_line,last_line:Z[Z.length-1].last_line,first_column:Z[Z.length-(Ae||1)].first_column,last_column:Z[Z.length-1].last_column},xe&&(se._$.range=[Z[Z.length-(Ae||1)].range[0],Z[Z.length-1].range[1]]),Te=this.performAction.apply(se,[ue,te,ce,Ve.yy,ye[1],q,Z].concat(Fe)),typeof Te<"u")return Te;Ae&&(J=J.slice(0,-1*Ae*2),q=q.slice(0,-1*Ae),Z=Z.slice(0,-1*Ae)),J.push(this.productions_[ye[1]][0]),q.push(se.$),Z.push(se._$),Pe=ae[J[J.length-2]][J[J.length-1]],J.push(Pe);break;case 3:return!0}}return!0},"parse")},j=function(){var ie={EOF:1,parseError:o(function(ee,J){if(this.yy.parser)this.yy.parser.parseError(ee,J);else throw new Error(ee)},"parseError"),setInput:o(function(Q,ee){return this.yy=ee||this.yy||{},this._input=Q,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Q=this._input[0];this.yytext+=Q,this.yyleng++,this.offset++,this.match+=Q,this.matched+=Q;var ee=Q.match(/(?:\r\n?|\n).*/g);return ee?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Q},"input"),unput:o(function(Q){var ee=Q.length,J=Q.split(/(?:\r\n?|\n)/g);this._input=Q+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ee),this.offset-=ee;var H=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),J.length-1&&(this.yylineno-=J.length-1);var q=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:J?(J.length===H.length?this.yylloc.first_column:0)+H[H.length-J.length].length-J[0].length:this.yylloc.first_column-ee},this.options.ranges&&(this.yylloc.range=[q[0],q[0]+this.yyleng-ee]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Q){this.unput(this.match.slice(Q))},"less"),pastInput:o(function(){var Q=this.matched.substr(0,this.matched.length-this.match.length);return(Q.length>20?"...":"")+Q.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Q=this.match;return Q.length<20&&(Q+=this._input.substr(0,20-Q.length)),(Q.substr(0,20)+(Q.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Q=this.pastInput(),ee=new Array(Q.length+1).join("-");return Q+this.upcomingInput()+` -`+ee+"^"},"showPosition"),test_match:o(function(Q,ee){var J,H,q;if(this.options.backtrack_lexer&&(q={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(q.yylloc.range=this.yylloc.range.slice(0))),H=Q[0].match(/(?:\r\n?|\n).*/g),H&&(this.yylineno+=H.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:H?H[H.length-1].length-H[H.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Q[0].length},this.yytext+=Q[0],this.match+=Q[0],this.matches=Q,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Q[0].length),this.matched+=Q[0],J=this.performAction.call(this,this.yy,this,ee,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),J)return J;if(this._backtrack){for(var Z in q)this[Z]=q[Z];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Q,ee,J,H;this._more||(this.yytext="",this.match="");for(var q=this._currentRules(),Z=0;Zee[0].length)){if(ee=J,H=Z,this.options.backtrack_lexer){if(Q=this.test_match(J,q[Z]),Q!==!1)return Q;if(this._backtrack){ee=!1;continue}else return!1}else if(!this.options.flex)break}return ee?(Q=this.test_match(ee,q[H]),Q!==!1?Q:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var ee=this.next();return ee||this.lex()},"lex"),begin:o(function(ee){this.conditionStack.push(ee)},"begin"),popState:o(function(){var ee=this.conditionStack.length-1;return ee>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(ee){return ee=this.conditionStack.length-1-Math.abs(ee||0),ee>=0?this.conditionStack[ee]:"INITIAL"},"topState"),pushState:o(function(ee){this.begin(ee)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(ee,J,H,q){var Z=q;switch(H){case 0:return"title";case 1:return this.begin("acc_title"),9;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),11;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 5;case 9:break;case 10:break;case 11:break;case 12:return 8;case 13:return 6;case 14:return 19;case 15:return 30;case 16:return 22;case 17:return 21;case 18:return 24;case 19:return 26;case 20:return 28;case 21:return 31;case 22:return 32;case 23:return 33;case 24:return 34;case 25:return 35;case 26:return 36;case 27:return 37;case 28:return 38;case 29:return 39;case 30:return 40;case 31:return 41;case 32:return 42;case 33:return 43;case 34:return 44;case 35:return 55;case 36:return 56;case 37:return 57;case 38:return 58;case 39:return 59;case 40:return 60;case 41:return 61;case 42:return 47;case 43:return 49;case 44:return 51;case 45:return 54;case 46:return 53;case 47:this.begin("string");break;case 48:this.popState();break;case 49:return"qString";case 50:return J.yytext=J.yytext.trim(),62;break}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[48,49],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,50],inclusive:!0}}};return ie}();W.lexer=j;function K(){this.yy={}}return o(K,"Parser"),K.prototype=W,W.Parser=K,new K}();gO.parser=gO;Cfe=gO});var yO,Fs,yx,df,vx,gUe,yUe,vUe,xUe,bUe,wUe,TUe,kUe,EUe,SUe,CUe,AUe,_Ue,LUe,DUe,NUe,RUe,_fe,Lfe=M(()=>{"use strict";Vt();ht();ki();yO=[],Fs={},yx=new Map,df={},vx=new Map,gUe={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},yUe={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},vUe={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},xUe={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},bUe=o((t,e)=>(yx.has(t)||yx.set(t,{name:t,type:e,id:Fs.id,text:Fs.text,risk:Fs.risk,verifyMethod:Fs.verifyMethod}),Fs={},yx.get(t)),"addRequirement"),wUe=o(()=>yx,"getRequirements"),TUe=o(t=>{Fs!==void 0&&(Fs.id=t)},"setNewReqId"),kUe=o(t=>{Fs!==void 0&&(Fs.text=t)},"setNewReqText"),EUe=o(t=>{Fs!==void 0&&(Fs.risk=t)},"setNewReqRisk"),SUe=o(t=>{Fs!==void 0&&(Fs.verifyMethod=t)},"setNewReqVerifyMethod"),CUe=o(t=>(vx.has(t)||(vx.set(t,{name:t,type:df.type,docRef:df.docRef}),Y.info("Added new requirement: ",t)),df={},vx.get(t)),"addElement"),AUe=o(()=>vx,"getElements"),_Ue=o(t=>{df!==void 0&&(df.type=t)},"setNewElementType"),LUe=o(t=>{df!==void 0&&(df.docRef=t)},"setNewElementDocRef"),DUe=o((t,e,r)=>{yO.push({type:t,src:e,dst:r})},"addRelationship"),NUe=o(()=>yO,"getRelationships"),RUe=o(()=>{yO=[],Fs={},yx=new Map,df={},vx=new Map,_r()},"clear"),_fe={RequirementType:gUe,RiskLevel:yUe,VerifyType:vUe,Relationships:xUe,getConfig:o(()=>de().req,"getConfig"),addRequirement:bUe,getRequirements:wUe,setNewReqId:TUe,setNewReqText:kUe,setNewReqRisk:EUe,setNewReqVerifyMethod:SUe,setAccTitle:Rr,getAccTitle:Pr,setAccDescription:Br,getAccDescription:Fr,addElement:CUe,getElements:AUe,setNewElementType:_Ue,setNewElementDocRef:LUe,addRelationship:DUe,getRelationships:NUe,clear:RUe}});var MUe,Dfe,Nfe=M(()=>{"use strict";MUe=o(t=>` +`,"getStyles"),Gue=RGe});var NGe,MGe,Vue,Uue=M(()=>{"use strict";hr();Gt();vt();Hu();Ti();sr();NGe=o(t=>{let e=[...t.entries()].map(n=>({label:n[0],value:n[1]})).sort((n,i)=>i.value-n.value);return T5().value(n=>n.value)(e)},"createPieArcs"),MGe=o((t,e,r,n)=>{Y.debug(`rendering pie chart +`+t);let i=n.db,a=me(),s=Es(i.getConfig(),a.pie),l=40,u=18,h=4,f=450,d=f,p=Pa(e),m=p.append("g");m.attr("transform","translate("+d/2+","+f/2+")");let{themeVariables:g}=a,[y]=Mo(g.pieOuterStrokeWidth);y??=2;let v=s.textPosition,x=Math.min(d,f)/2-l,b=yl().innerRadius(0).outerRadius(x),w=yl().innerRadius(x*v).outerRadius(x*v);m.append("circle").attr("cx",0).attr("cy",0).attr("r",x+y/2).attr("class","pieOuterCircle");let C=i.getSections(),T=NGe(C),E=[g.pie1,g.pie2,g.pie3,g.pie4,g.pie5,g.pie6,g.pie7,g.pie8,g.pie9,g.pie10,g.pie11,g.pie12],A=pu(E);m.selectAll("mySlices").data(T).enter().append("path").attr("d",b).attr("fill",k=>A(k.data.label)).attr("class","pieCircle");let S=0;C.forEach(k=>{S+=k}),m.selectAll("mySlices").data(T).enter().append("text").text(k=>(k.data.value/S*100).toFixed(0)+"%").attr("transform",k=>"translate("+w.centroid(k)+")").style("text-anchor","middle").attr("class","slice"),m.append("text").text(i.getDiagramTitle()).attr("x",0).attr("y",-(f-50)/2).attr("class","pieTitleText");let _=m.selectAll(".legend").data(A.domain()).enter().append("g").attr("class","legend").attr("transform",(k,L)=>{let R=u+h,O=R*A.domain().length/2,N=12*u,B=L*R-O;return"translate("+N+","+B+")"});_.append("rect").attr("width",u).attr("height",u).style("fill",A).style("stroke",A),_.data(T).append("text").attr("x",u+h).attr("y",u-h).text(k=>{let{label:L,value:R}=k.data;return i.getShowData()?`${L} [${R}]`:L});let I=Math.max(..._.selectAll("text").nodes().map(k=>k?.getBoundingClientRect().width??0)),D=d+l+u+h+I;p.attr("viewBox",`0 0 ${D} ${f}`),vn(p,f,D,s.useMaxWidth)},"draw"),Vue={draw:MGe}});var Hue={};pr(Hue,{diagram:()=>IGe});var IGe,Wue=M(()=>{"use strict";zue();ZI();$ue();Uue();IGe={parser:Fue,db:r6,renderer:Vue,styles:Gue}});var JI,Xue,jue=M(()=>{"use strict";JI=function(){var t=o(function(xe,q,pe,ve){for(pe=pe||{},ve=xe.length;ve--;pe[xe[ve]]=q);return pe},"o"),e=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[1,7],s=[1,4,5,10,12,13,14,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[1,4,5,10,12,13,14,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],u=[55,56,57],h=[2,36],f=[1,37],d=[1,36],p=[1,38],m=[1,35],g=[1,43],y=[1,41],v=[1,14],x=[1,23],b=[1,18],w=[1,19],C=[1,20],T=[1,21],E=[1,22],A=[1,24],S=[1,25],_=[1,26],I=[1,27],D=[1,28],k=[1,29],L=[1,32],R=[1,33],O=[1,34],N=[1,39],B=[1,40],F=[1,42],P=[1,44],G=[1,62],z=[1,61],H=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],Q=[1,65],j=[1,66],ie=[1,67],ne=[1,68],le=[1,69],he=[1,70],K=[1,71],X=[1,72],te=[1,73],J=[1,74],se=[1,75],ue=[1,76],Z=[4,5,6,7,8,9,10,11,12,13,14,15,18],Se=[1,90],ce=[1,91],ae=[1,92],Oe=[1,99],ge=[1,93],Ge=[1,96],He=[1,94],ze=[1,95],Re=[1,97],Ie=[1,98],be=[1,102],W=[10,55,56,57],de=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],re={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:o(function(q,pe,ve,Pe,_e,we,Ve){var De=we.length-1;switch(_e){case 23:this.$=we[De];break;case 24:this.$=we[De-1]+""+we[De];break;case 26:this.$=we[De-1]+we[De];break;case 27:this.$=[we[De].trim()];break;case 28:we[De-2].push(we[De].trim()),this.$=we[De-2];break;case 29:this.$=we[De-4],Pe.addClass(we[De-2],we[De]);break;case 37:this.$=[];break;case 42:this.$=we[De].trim(),Pe.setDiagramTitle(this.$);break;case 43:this.$=we[De].trim(),Pe.setAccTitle(this.$);break;case 44:case 45:this.$=we[De].trim(),Pe.setAccDescription(this.$);break;case 46:Pe.addSection(we[De].substr(8)),this.$=we[De].substr(8);break;case 47:Pe.addPoint(we[De-3],"",we[De-1],we[De],[]);break;case 48:Pe.addPoint(we[De-4],we[De-3],we[De-1],we[De],[]);break;case 49:Pe.addPoint(we[De-4],"",we[De-2],we[De-1],we[De]);break;case 50:Pe.addPoint(we[De-5],we[De-4],we[De-2],we[De-1],we[De]);break;case 51:Pe.setXAxisLeftText(we[De-2]),Pe.setXAxisRightText(we[De]);break;case 52:we[De-1].text+=" \u27F6 ",Pe.setXAxisLeftText(we[De-1]);break;case 53:Pe.setXAxisLeftText(we[De]);break;case 54:Pe.setYAxisBottomText(we[De-2]),Pe.setYAxisTopText(we[De]);break;case 55:we[De-1].text+=" \u27F6 ",Pe.setYAxisBottomText(we[De-1]);break;case 56:Pe.setYAxisBottomText(we[De]);break;case 57:Pe.setQuadrant1Text(we[De]);break;case 58:Pe.setQuadrant2Text(we[De]);break;case 59:Pe.setQuadrant3Text(we[De]);break;case 60:Pe.setQuadrant4Text(we[De]);break;case 64:this.$={text:we[De],type:"text"};break;case 65:this.$={text:we[De-1].text+""+we[De],type:we[De-1].type};break;case 66:this.$={text:we[De],type:"text"};break;case 67:this.$={text:we[De],type:"markdown"};break;case 68:this.$=we[De];break;case 69:this.$=we[De-1]+""+we[De];break}},"anonymous"),table:[{18:e,26:1,27:2,28:r,55:n,56:i,57:a},{1:[3]},{18:e,26:8,27:2,28:r,55:n,56:i,57:a},{18:e,26:9,27:2,28:r,55:n,56:i,57:a},t(s,[2,33],{29:10}),t(l,[2,61]),t(l,[2,62]),t(l,[2,63]),{1:[2,30]},{1:[2,31]},t(u,h,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:f,5:d,10:p,12:m,13:g,14:y,18:v,25:x,35:b,37:w,39:C,41:T,42:E,48:A,50:S,51:_,52:I,53:D,54:k,60:L,61:R,63:O,64:N,65:B,66:F,67:P}),t(s,[2,34]),{27:45,55:n,56:i,57:a},t(u,[2,37]),t(u,h,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:f,5:d,10:p,12:m,13:g,14:y,18:v,25:x,35:b,37:w,39:C,41:T,42:E,48:A,50:S,51:_,52:I,53:D,54:k,60:L,61:R,63:O,64:N,65:B,66:F,67:P}),t(u,[2,39]),t(u,[2,40]),t(u,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},t(u,[2,45]),t(u,[2,46]),{18:[1,50]},{4:f,5:d,10:p,12:m,13:g,14:y,43:51,58:31,60:L,61:R,63:O,64:N,65:B,66:F,67:P},{4:f,5:d,10:p,12:m,13:g,14:y,43:52,58:31,60:L,61:R,63:O,64:N,65:B,66:F,67:P},{4:f,5:d,10:p,12:m,13:g,14:y,43:53,58:31,60:L,61:R,63:O,64:N,65:B,66:F,67:P},{4:f,5:d,10:p,12:m,13:g,14:y,43:54,58:31,60:L,61:R,63:O,64:N,65:B,66:F,67:P},{4:f,5:d,10:p,12:m,13:g,14:y,43:55,58:31,60:L,61:R,63:O,64:N,65:B,66:F,67:P},{4:f,5:d,10:p,12:m,13:g,14:y,43:56,58:31,60:L,61:R,63:O,64:N,65:B,66:F,67:P},{4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:z,44:[1,57],47:[1,58],58:60,59:59,63:O,64:N,65:B,66:F,67:P},t(H,[2,64]),t(H,[2,66]),t(H,[2,67]),t(H,[2,70]),t(H,[2,71]),t(H,[2,72]),t(H,[2,73]),t(H,[2,74]),t(H,[2,75]),t(H,[2,76]),t(H,[2,77]),t(H,[2,78]),t(H,[2,79]),t(H,[2,80]),t(s,[2,35]),t(u,[2,38]),t(u,[2,42]),t(u,[2,43]),t(u,[2,44]),{3:64,4:Q,5:j,6:ie,7:ne,8:le,9:he,10:K,11:X,12:te,13:J,14:se,15:ue,21:63},t(u,[2,53],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:z,49:[1,77],63:O,64:N,65:B,66:F,67:P}),t(u,[2,56],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:z,49:[1,78],63:O,64:N,65:B,66:F,67:P}),t(u,[2,57],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:z,63:O,64:N,65:B,66:F,67:P}),t(u,[2,58],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:z,63:O,64:N,65:B,66:F,67:P}),t(u,[2,59],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:z,63:O,64:N,65:B,66:F,67:P}),t(u,[2,60],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:z,63:O,64:N,65:B,66:F,67:P}),{45:[1,79]},{44:[1,80]},t(H,[2,65]),t(H,[2,81]),t(H,[2,82]),t(H,[2,83]),{3:82,4:Q,5:j,6:ie,7:ne,8:le,9:he,10:K,11:X,12:te,13:J,14:se,15:ue,18:[1,81]},t(Z,[2,23]),t(Z,[2,1]),t(Z,[2,2]),t(Z,[2,3]),t(Z,[2,4]),t(Z,[2,5]),t(Z,[2,6]),t(Z,[2,7]),t(Z,[2,8]),t(Z,[2,9]),t(Z,[2,10]),t(Z,[2,11]),t(Z,[2,12]),t(u,[2,52],{58:31,43:83,4:f,5:d,10:p,12:m,13:g,14:y,60:L,61:R,63:O,64:N,65:B,66:F,67:P}),t(u,[2,55],{58:31,43:84,4:f,5:d,10:p,12:m,13:g,14:y,60:L,61:R,63:O,64:N,65:B,66:F,67:P}),{46:[1,85]},{45:[1,86]},{4:Se,5:ce,6:ae,8:Oe,11:ge,13:Ge,16:89,17:He,18:ze,19:Re,20:Ie,22:88,23:87},t(Z,[2,24]),t(u,[2,51],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:z,63:O,64:N,65:B,66:F,67:P}),t(u,[2,54],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:z,63:O,64:N,65:B,66:F,67:P}),t(u,[2,47],{22:88,16:89,23:100,4:Se,5:ce,6:ae,8:Oe,11:ge,13:Ge,17:He,18:ze,19:Re,20:Ie}),{46:[1,101]},t(u,[2,29],{10:be}),t(W,[2,27],{16:103,4:Se,5:ce,6:ae,8:Oe,11:ge,13:Ge,17:He,18:ze,19:Re,20:Ie}),t(de,[2,25]),t(de,[2,13]),t(de,[2,14]),t(de,[2,15]),t(de,[2,16]),t(de,[2,17]),t(de,[2,18]),t(de,[2,19]),t(de,[2,20]),t(de,[2,21]),t(de,[2,22]),t(u,[2,49],{10:be}),t(u,[2,48],{22:88,16:89,23:104,4:Se,5:ce,6:ae,8:Oe,11:ge,13:Ge,17:He,18:ze,19:Re,20:Ie}),{4:Se,5:ce,6:ae,8:Oe,11:ge,13:Ge,16:89,17:He,18:ze,19:Re,20:Ie,22:105},t(de,[2,26]),t(u,[2,50],{10:be}),t(W,[2,28],{16:103,4:Se,5:ce,6:ae,8:Oe,11:ge,13:Ge,17:He,18:ze,19:Re,20:Ie})],defaultActions:{8:[2,30],9:[2,31]},parseError:o(function(q,pe){if(pe.recoverable)this.trace(q);else{var ve=new Error(q);throw ve.hash=pe,ve}},"parseError"),parse:o(function(q){var pe=this,ve=[0],Pe=[],_e=[null],we=[],Ve=this.table,De="",qe=0,at=0,Lt=0,st=2,Ue=1,ct=we.slice.call(arguments,1),We=Object.create(this.lexer),ot={yy:{}};for(var Yt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Yt)&&(ot.yy[Yt]=this.yy[Yt]);We.setInput(q,ot.yy),ot.yy.lexer=We,ot.yy.parser=this,typeof We.yylloc>"u"&&(We.yylloc={});var bt=We.yylloc;we.push(bt);var Nt=We.options&&We.options.ranges;typeof ot.yy.parseError=="function"?this.parseError=ot.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xt(Ce){ve.length=ve.length-2*Ce,_e.length=_e.length-Ce,we.length=we.length-Ce}o(xt,"popStack");function ut(){var Ce;return Ce=Pe.pop()||We.lex()||Ue,typeof Ce!="number"&&(Ce instanceof Array&&(Pe=Ce,Ce=Pe.pop()),Ce=pe.symbols_[Ce]||Ce),Ce}o(ut,"lex");for(var Et,ft,yt,nt,dn,Tt,On={},tn,Ar,_r,Pn;;){if(yt=ve[ve.length-1],this.defaultActions[yt]?nt=this.defaultActions[yt]:((Et===null||typeof Et>"u")&&(Et=ut()),nt=Ve[yt]&&Ve[yt][Et]),typeof nt>"u"||!nt.length||!nt[0]){var At="";Pn=[];for(tn in Ve[yt])this.terminals_[tn]&&tn>st&&Pn.push("'"+this.terminals_[tn]+"'");We.showPosition?At="Parse error on line "+(qe+1)+`: +`+We.showPosition()+` +Expecting `+Pn.join(", ")+", got '"+(this.terminals_[Et]||Et)+"'":At="Parse error on line "+(qe+1)+": Unexpected "+(Et==Ue?"end of input":"'"+(this.terminals_[Et]||Et)+"'"),this.parseError(At,{text:We.match,token:this.terminals_[Et]||Et,line:We.yylineno,loc:bt,expected:Pn})}if(nt[0]instanceof Array&&nt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+yt+", token: "+Et);switch(nt[0]){case 1:ve.push(Et),_e.push(We.yytext),we.push(We.yylloc),ve.push(nt[1]),Et=null,ft?(Et=ft,ft=null):(at=We.yyleng,De=We.yytext,qe=We.yylineno,bt=We.yylloc,Lt>0&&Lt--);break;case 2:if(Ar=this.productions_[nt[1]][1],On.$=_e[_e.length-Ar],On._$={first_line:we[we.length-(Ar||1)].first_line,last_line:we[we.length-1].last_line,first_column:we[we.length-(Ar||1)].first_column,last_column:we[we.length-1].last_column},Nt&&(On._$.range=[we[we.length-(Ar||1)].range[0],we[we.length-1].range[1]]),Tt=this.performAction.apply(On,[De,at,qe,ot.yy,nt[1],_e,we].concat(ct)),typeof Tt<"u")return Tt;Ar&&(ve=ve.slice(0,-1*Ar*2),_e=_e.slice(0,-1*Ar),we=we.slice(0,-1*Ar)),ve.push(this.productions_[nt[1]][0]),_e.push(On.$),we.push(On._$),_r=Ve[ve[ve.length-2]][ve[ve.length-1]],ve.push(_r);break;case 3:return!0}}return!0},"parse")},oe=function(){var xe={EOF:1,parseError:o(function(pe,ve){if(this.yy.parser)this.yy.parser.parseError(pe,ve);else throw new Error(pe)},"parseError"),setInput:o(function(q,pe){return this.yy=pe||this.yy||{},this._input=q,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var q=this._input[0];this.yytext+=q,this.yyleng++,this.offset++,this.match+=q,this.matched+=q;var pe=q.match(/(?:\r\n?|\n).*/g);return pe?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),q},"input"),unput:o(function(q){var pe=q.length,ve=q.split(/(?:\r\n?|\n)/g);this._input=q+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-pe),this.offset-=pe;var Pe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ve.length-1&&(this.yylineno-=ve.length-1);var _e=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ve?(ve.length===Pe.length?this.yylloc.first_column:0)+Pe[Pe.length-ve.length].length-ve[0].length:this.yylloc.first_column-pe},this.options.ranges&&(this.yylloc.range=[_e[0],_e[0]+this.yyleng-pe]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(q){this.unput(this.match.slice(q))},"less"),pastInput:o(function(){var q=this.matched.substr(0,this.matched.length-this.match.length);return(q.length>20?"...":"")+q.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var q=this.match;return q.length<20&&(q+=this._input.substr(0,20-q.length)),(q.substr(0,20)+(q.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var q=this.pastInput(),pe=new Array(q.length+1).join("-");return q+this.upcomingInput()+` +`+pe+"^"},"showPosition"),test_match:o(function(q,pe){var ve,Pe,_e;if(this.options.backtrack_lexer&&(_e={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(_e.yylloc.range=this.yylloc.range.slice(0))),Pe=q[0].match(/(?:\r\n?|\n).*/g),Pe&&(this.yylineno+=Pe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Pe?Pe[Pe.length-1].length-Pe[Pe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+q[0].length},this.yytext+=q[0],this.match+=q[0],this.matches=q,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(q[0].length),this.matched+=q[0],ve=this.performAction.call(this,this.yy,this,pe,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ve)return ve;if(this._backtrack){for(var we in _e)this[we]=_e[we];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var q,pe,ve,Pe;this._more||(this.yytext="",this.match="");for(var _e=this._currentRules(),we=0;we<_e.length;we++)if(ve=this._input.match(this.rules[_e[we]]),ve&&(!pe||ve[0].length>pe[0].length)){if(pe=ve,Pe=we,this.options.backtrack_lexer){if(q=this.test_match(ve,_e[we]),q!==!1)return q;if(this._backtrack){pe=!1;continue}else return!1}else if(!this.options.flex)break}return pe?(q=this.test_match(pe,_e[Pe]),q!==!1?q:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var pe=this.next();return pe||this.lex()},"lex"),begin:o(function(pe){this.conditionStack.push(pe)},"begin"),popState:o(function(){var pe=this.conditionStack.length-1;return pe>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(pe){return pe=this.conditionStack.length-1-Math.abs(pe||0),pe>=0?this.conditionStack[pe]:"INITIAL"},"topState"),pushState:o(function(pe){this.begin(pe)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(pe,ve,Pe,_e){var we=_e;switch(Pe){case 0:break;case 1:break;case 2:return 55;case 3:break;case 4:return this.begin("title"),35;break;case 5:return this.popState(),"title_value";break;case 6:return this.begin("acc_title"),37;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),39;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 23:this.popState();break;case 24:this.begin("string");break;case 25:this.popState();break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;break;case 29:return this.begin("point_start"),44;break;case 30:return this.begin("point_x"),45;break;case 31:this.popState();break;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;break;case 34:return 28;case 35:return 4;case 36:return 11;case 37:return 64;case 38:return 10;case 39:return 65;case 40:return 65;case 41:return 14;case 42:return 13;case 43:return 67;case 44:return 66;case 45:return 12;case 46:return 8;case 47:return 5;case 48:return 18;case 49:return 56;case 50:return 63;case 51:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],inclusive:!0}}};return xe}();re.lexer=oe;function V(){this.yy={}}return o(V,"Parser"),V.prototype=re,re.Parser=V,new V}();JI.parser=JI;Xue=JI});var us,n6,Kue=M(()=>{"use strict";hr();ps();vt();M4();us=i0(),n6=class{constructor(){this.classes=new Map;this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{o(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:cr.quadrantChart?.chartWidth||500,chartWidth:cr.quadrantChart?.chartHeight||500,titlePadding:cr.quadrantChart?.titlePadding||10,titleFontSize:cr.quadrantChart?.titleFontSize||20,quadrantPadding:cr.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:cr.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:cr.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:cr.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:cr.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:cr.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:cr.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:cr.quadrantChart?.pointTextPadding||5,pointLabelFontSize:cr.quadrantChart?.pointLabelFontSize||12,pointRadius:cr.quadrantChart?.pointRadius||5,xAxisPosition:cr.quadrantChart?.xAxisPosition||"top",yAxisPosition:cr.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:cr.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:cr.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:us.quadrant1Fill,quadrant2Fill:us.quadrant2Fill,quadrant3Fill:us.quadrant3Fill,quadrant4Fill:us.quadrant4Fill,quadrant1TextFill:us.quadrant1TextFill,quadrant2TextFill:us.quadrant2TextFill,quadrant3TextFill:us.quadrant3TextFill,quadrant4TextFill:us.quadrant4TextFill,quadrantPointFill:us.quadrantPointFill,quadrantPointTextFill:us.quadrantPointTextFill,quadrantXAxisTextFill:us.quadrantXAxisTextFill,quadrantYAxisTextFill:us.quadrantYAxisTextFill,quadrantTitleFill:us.quadrantTitleFill,quadrantInternalBorderStrokeFill:us.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:us.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,Y.info("clear called")}setData(e){this.data={...this.data,...e}}addPoints(e){this.data.points=[...e,...this.data.points]}addClass(e,r){this.classes.set(e,r)}setConfig(e){Y.trace("setConfig called with: ",e),this.config={...this.config,...e}}setThemeConfig(e){Y.trace("setThemeConfig called with: ",e),this.themeConfig={...this.themeConfig,...e}}calculateSpace(e,r,n,i){let a=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,s={top:e==="top"&&r?a:0,bottom:e==="bottom"&&r?a:0},l=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,u={left:this.config.yAxisPosition==="left"&&n?l:0,right:this.config.yAxisPosition==="right"&&n?l:0},h=this.config.titleFontSize+this.config.titlePadding*2,f={top:i?h:0},d=this.config.quadrantPadding+u.left,p=this.config.quadrantPadding+s.top+f.top,m=this.config.chartWidth-this.config.quadrantPadding*2-u.left-u.right,g=this.config.chartHeight-this.config.quadrantPadding*2-s.top-s.bottom-f.top,y=m/2,v=g/2;return{xAxisSpace:s,yAxisSpace:u,titleSpace:f,quadrantSpace:{quadrantLeft:d,quadrantTop:p,quadrantWidth:m,quadrantHalfWidth:y,quadrantHeight:g,quadrantHalfHeight:v}}}getAxisLabels(e,r,n,i){let{quadrantSpace:a,titleSpace:s}=i,{quadrantHalfHeight:l,quadrantHeight:u,quadrantLeft:h,quadrantHalfWidth:f,quadrantTop:d,quadrantWidth:p}=a,m=!!this.data.xAxisRightText,g=!!this.data.yAxisTopText,y=[];return this.data.xAxisLeftText&&r&&y.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+(m?f/2:0),y:e==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+d+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&r&&y.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+f+(m?f/2:0),y:e==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+d+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&n&&y.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:d+u-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&n&&y.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:d+l-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),y}getQuadrants(e){let{quadrantSpace:r}=e,{quadrantHalfHeight:n,quadrantLeft:i,quadrantHalfWidth:a,quadrantTop:s}=r,l=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s,width:a,height:n,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:s,width:a,height:n,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant4Fill}];for(let u of l)u.text.x=u.x+u.width/2,this.data.points.length===0?(u.text.y=u.y+u.height/2,u.text.horizontalPos="middle"):(u.text.y=u.y+this.config.quadrantTextTopPadding,u.text.horizontalPos="top");return l}getQuadrantPoints(e){let{quadrantSpace:r}=e,{quadrantHeight:n,quadrantLeft:i,quadrantTop:a,quadrantWidth:s}=r,l=dl().domain([0,1]).range([i,s+i]),u=dl().domain([0,1]).range([n+a,a]);return this.data.points.map(f=>{let d=this.classes.get(f.className);return d&&(f={...d,...f}),{x:l(f.x),y:u(f.y),fill:f.color??this.themeConfig.quadrantPointFill,radius:f.radius??this.config.pointRadius,text:{text:f.text,fill:this.themeConfig.quadrantPointTextFill,x:l(f.x),y:u(f.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:f.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:f.strokeWidth??"0px"}})}getBorders(e){let r=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:n}=e,{quadrantHalfHeight:i,quadrantHeight:a,quadrantLeft:s,quadrantHalfWidth:l,quadrantTop:u,quadrantWidth:h}=n;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u,x2:s+h+r,y2:u},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+h,y1:u+r,x2:s+h,y2:u+a-r},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u+a,x2:s+h+r,y2:u+a},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:u+r,x2:s,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+l,y1:u+r,x2:s+l,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:u+i,x2:s+h-r,y2:u+i}]}getTitle(e){if(e)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){let e=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),r=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),n=this.config.showTitle&&!!this.data.titleText,i=this.data.points.length>0?"bottom":this.config.xAxisPosition,a=this.calculateSpace(i,e,r,n);return{points:this.getQuadrantPoints(a),quadrants:this.getQuadrants(a),axisLabels:this.getAxisLabels(i,e,r,a),borderLines:this.getBorders(a),title:this.getTitle(n)}}}});function eO(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}function Que(t){return!/^\d+$/.test(t)}function Zue(t){return!/^\d+px$/.test(t)}var Sp,Jue=M(()=>{"use strict";Sp=class extends Error{static{o(this,"InvalidStyleError")}constructor(e,r,n){super(`value for ${e} ${r} is invalid, please use a valid ${n}`),this.name="InvalidStyleError"}};o(eO,"validateHexCode");o(Que,"validateNumber");o(Zue,"validateSizeInPixels")});function Wu(t){return Tr(t.trim(),BGe)}function FGe(t){ya.setData({quadrant1Text:Wu(t.text)})}function zGe(t){ya.setData({quadrant2Text:Wu(t.text)})}function GGe(t){ya.setData({quadrant3Text:Wu(t.text)})}function $Ge(t){ya.setData({quadrant4Text:Wu(t.text)})}function VGe(t){ya.setData({xAxisLeftText:Wu(t.text)})}function UGe(t){ya.setData({xAxisRightText:Wu(t.text)})}function HGe(t){ya.setData({yAxisTopText:Wu(t.text)})}function WGe(t){ya.setData({yAxisBottomText:Wu(t.text)})}function tO(t){let e={};for(let r of t){let[n,i]=r.trim().split(/\s*:\s*/);if(n==="radius"){if(Que(i))throw new Sp(n,i,"number");e.radius=parseInt(i)}else if(n==="color"){if(eO(i))throw new Sp(n,i,"hex code");e.color=i}else if(n==="stroke-color"){if(eO(i))throw new Sp(n,i,"hex code");e.strokeColor=i}else if(n==="stroke-width"){if(Zue(i))throw new Sp(n,i,"number of pixels (eg. 10px)");e.strokeWidth=i}else throw new Error(`style named ${n} is not supported.`)}return e}function qGe(t,e,r,n,i){let a=tO(i);ya.addPoints([{x:r,y:n,text:Wu(t.text),className:e,...a}])}function YGe(t,e){ya.addClass(t,tO(e))}function XGe(t){ya.setConfig({chartWidth:t})}function jGe(t){ya.setConfig({chartHeight:t})}function KGe(){let t=me(),{themeVariables:e,quadrantChart:r}=t;return r&&ya.setConfig(r),ya.setThemeConfig({quadrant1Fill:e.quadrant1Fill,quadrant2Fill:e.quadrant2Fill,quadrant3Fill:e.quadrant3Fill,quadrant4Fill:e.quadrant4Fill,quadrant1TextFill:e.quadrant1TextFill,quadrant2TextFill:e.quadrant2TextFill,quadrant3TextFill:e.quadrant3TextFill,quadrant4TextFill:e.quadrant4TextFill,quadrantPointFill:e.quadrantPointFill,quadrantPointTextFill:e.quadrantPointTextFill,quadrantXAxisTextFill:e.quadrantXAxisTextFill,quadrantYAxisTextFill:e.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:e.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:e.quadrantInternalBorderStrokeFill,quadrantTitleFill:e.quadrantTitleFill}),ya.setData({titleText:Fr()}),ya.build()}var BGe,ya,QGe,ehe,the=M(()=>{"use strict";Gt();gr();ki();Kue();Jue();BGe=me();o(Wu,"textSanitizer");ya=new n6;o(FGe,"setQuadrant1Text");o(zGe,"setQuadrant2Text");o(GGe,"setQuadrant3Text");o($Ge,"setQuadrant4Text");o(VGe,"setXAxisLeftText");o(UGe,"setXAxisRightText");o(HGe,"setYAxisTopText");o(WGe,"setYAxisBottomText");o(tO,"parseStyles");o(qGe,"addPoint");o(YGe,"addClass");o(XGe,"setWidth");o(jGe,"setHeight");o(KGe,"getQuadrantData");QGe=o(function(){ya.clear(),Dr()},"clear"),ehe={setWidth:XGe,setHeight:jGe,setQuadrant1Text:FGe,setQuadrant2Text:zGe,setQuadrant3Text:GGe,setQuadrant4Text:$Ge,setXAxisLeftText:VGe,setXAxisRightText:UGe,setYAxisTopText:HGe,setYAxisBottomText:WGe,parseStyles:tO,addPoint:qGe,addClass:YGe,getQuadrantData:KGe,clear:QGe,setAccTitle:Mr,getAccTitle:Or,setDiagramTitle:Zr,getDiagramTitle:Fr,getAccDescription:Br,setAccDescription:Pr}});var ZGe,rhe,nhe=M(()=>{"use strict";hr();Gt();vt();Ti();ZGe=o((t,e,r,n)=>{function i(S){return S==="top"?"hanging":"middle"}o(i,"getDominantBaseLine");function a(S){return S==="left"?"start":"middle"}o(a,"getTextAnchor");function s(S){return`translate(${S.x}, ${S.y}) rotate(${S.rotation||0})`}o(s,"getTransformation");let l=me();Y.debug(`Rendering quadrant chart +`+t);let u=l.securityLevel,h;u==="sandbox"&&(h=$e("#i"+e));let d=(u==="sandbox"?$e(h.nodes()[0].contentDocument.body):$e("body")).select(`[id="${e}"]`),p=d.append("g").attr("class","main"),m=l.quadrantChart?.chartWidth??500,g=l.quadrantChart?.chartHeight??500;vn(d,g,m,l.quadrantChart?.useMaxWidth??!0),d.attr("viewBox","0 0 "+m+" "+g),n.db.setHeight(g),n.db.setWidth(m);let y=n.db.getQuadrantData(),v=p.append("g").attr("class","quadrants"),x=p.append("g").attr("class","border"),b=p.append("g").attr("class","data-points"),w=p.append("g").attr("class","labels"),C=p.append("g").attr("class","title");y.title&&C.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",i(y.title.horizontalPos)).attr("text-anchor",a(y.title.verticalPos)).attr("transform",s(y.title)).text(y.title.text),y.borderLines&&x.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",S=>S.x1).attr("y1",S=>S.y1).attr("x2",S=>S.x2).attr("y2",S=>S.y2).style("stroke",S=>S.strokeFill).style("stroke-width",S=>S.strokeWidth);let T=v.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");T.append("rect").attr("x",S=>S.x).attr("y",S=>S.y).attr("width",S=>S.width).attr("height",S=>S.height).attr("fill",S=>S.fill),T.append("text").attr("x",0).attr("y",0).attr("fill",S=>S.text.fill).attr("font-size",S=>S.text.fontSize).attr("dominant-baseline",S=>i(S.text.horizontalPos)).attr("text-anchor",S=>a(S.text.verticalPos)).attr("transform",S=>s(S.text)).text(S=>S.text.text),w.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(S=>S.text).attr("fill",S=>S.fill).attr("font-size",S=>S.fontSize).attr("dominant-baseline",S=>i(S.horizontalPos)).attr("text-anchor",S=>a(S.verticalPos)).attr("transform",S=>s(S));let A=b.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");A.append("circle").attr("cx",S=>S.x).attr("cy",S=>S.y).attr("r",S=>S.radius).attr("fill",S=>S.fill).attr("stroke",S=>S.strokeColor).attr("stroke-width",S=>S.strokeWidth),A.append("text").attr("x",0).attr("y",0).text(S=>S.text.text).attr("fill",S=>S.text.fill).attr("font-size",S=>S.text.fontSize).attr("dominant-baseline",S=>i(S.text.horizontalPos)).attr("text-anchor",S=>a(S.text.verticalPos)).attr("transform",S=>s(S.text))},"draw"),rhe={draw:ZGe}});var ihe={};pr(ihe,{diagram:()=>JGe});var JGe,ahe=M(()=>{"use strict";jue();the();nhe();JGe={parser:Xue,db:ehe,renderer:rhe,styles:o(()=>"","styles")}});var rO,lhe,che=M(()=>{"use strict";rO=function(){var t=o(function(O,N,B,F){for(B=B||{},F=O.length;F--;B[O[F]]=N);return B},"o"),e=[1,10,12,14,16,18,19,21,23],r=[2,6],n=[1,3],i=[1,5],a=[1,6],s=[1,7],l=[1,5,10,12,14,16,18,19,21,23,34,35,36],u=[1,25],h=[1,26],f=[1,28],d=[1,29],p=[1,30],m=[1,31],g=[1,32],y=[1,33],v=[1,34],x=[1,35],b=[1,36],w=[1,37],C=[1,43],T=[1,42],E=[1,47],A=[1,50],S=[1,10,12,14,16,18,19,21,23,34,35,36],_=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],I=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],D=[1,64],k={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:o(function(N,B,F,P,G,z,H){var Q=z.length-1;switch(G){case 5:P.setOrientation(z[Q]);break;case 9:P.setDiagramTitle(z[Q].text.trim());break;case 12:P.setLineData({text:"",type:"text"},z[Q]);break;case 13:P.setLineData(z[Q-1],z[Q]);break;case 14:P.setBarData({text:"",type:"text"},z[Q]);break;case 15:P.setBarData(z[Q-1],z[Q]);break;case 16:this.$=z[Q].trim(),P.setAccTitle(this.$);break;case 17:case 18:this.$=z[Q].trim(),P.setAccDescription(this.$);break;case 19:this.$=z[Q-1];break;case 20:this.$=[Number(z[Q-2]),...z[Q]];break;case 21:this.$=[Number(z[Q])];break;case 22:P.setXAxisTitle(z[Q]);break;case 23:P.setXAxisTitle(z[Q-1]);break;case 24:P.setXAxisTitle({type:"text",text:""});break;case 25:P.setXAxisBand(z[Q]);break;case 26:P.setXAxisRangeData(Number(z[Q-2]),Number(z[Q]));break;case 27:this.$=z[Q-1];break;case 28:this.$=[z[Q-2],...z[Q]];break;case 29:this.$=[z[Q]];break;case 30:P.setYAxisTitle(z[Q]);break;case 31:P.setYAxisTitle(z[Q-1]);break;case 32:P.setYAxisTitle({type:"text",text:""});break;case 33:P.setYAxisRangeData(Number(z[Q-2]),Number(z[Q]));break;case 37:this.$={text:z[Q],type:"text"};break;case 38:this.$={text:z[Q],type:"text"};break;case 39:this.$={text:z[Q],type:"markdown"};break;case 40:this.$=z[Q];break;case 41:this.$=z[Q-1]+""+z[Q];break}},"anonymous"),table:[t(e,r,{3:1,4:2,7:4,5:n,34:i,35:a,36:s}),{1:[3]},t(e,r,{4:2,7:4,3:8,5:n,34:i,35:a,36:s}),t(e,r,{4:2,7:4,6:9,3:10,5:n,8:[1,11],34:i,35:a,36:s}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},t(l,[2,34]),t(l,[2,35]),t(l,[2,36]),{1:[2,1]},t(e,r,{4:2,7:4,3:21,5:n,34:i,35:a,36:s}),{1:[2,3]},t(l,[2,5]),t(e,[2,7],{4:22,34:i,35:a,36:s}),{11:23,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{11:39,13:38,24:C,27:T,29:40,30:41,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{11:45,15:44,27:E,33:46,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{11:49,17:48,24:A,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{11:52,17:51,24:A,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},{20:[1,53]},{22:[1,54]},t(S,[2,18]),{1:[2,2]},t(S,[2,8]),t(S,[2,9]),t(_,[2,37],{40:55,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w}),t(_,[2,38]),t(_,[2,39]),t(I,[2,40]),t(I,[2,42]),t(I,[2,43]),t(I,[2,44]),t(I,[2,45]),t(I,[2,46]),t(I,[2,47]),t(I,[2,48]),t(I,[2,49]),t(I,[2,50]),t(I,[2,51]),t(S,[2,10]),t(S,[2,22],{30:41,29:56,24:C,27:T}),t(S,[2,24]),t(S,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},t(S,[2,11]),t(S,[2,30],{33:60,27:E}),t(S,[2,32]),{31:[1,61]},t(S,[2,12]),{17:62,24:A},{25:63,27:D},t(S,[2,14]),{17:65,24:A},t(S,[2,16]),t(S,[2,17]),t(I,[2,41]),t(S,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},t(S,[2,31]),{27:[1,69]},t(S,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},t(S,[2,15]),t(S,[2,26]),t(S,[2,27]),{11:59,32:72,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:w},t(S,[2,33]),t(S,[2,19]),{25:73,27:D},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:o(function(N,B){if(B.recoverable)this.trace(N);else{var F=new Error(N);throw F.hash=B,F}},"parseError"),parse:o(function(N){var B=this,F=[0],P=[],G=[null],z=[],H=this.table,Q="",j=0,ie=0,ne=0,le=2,he=1,K=z.slice.call(arguments,1),X=Object.create(this.lexer),te={yy:{}};for(var J in this.yy)Object.prototype.hasOwnProperty.call(this.yy,J)&&(te.yy[J]=this.yy[J]);X.setInput(N,te.yy),te.yy.lexer=X,te.yy.parser=this,typeof X.yylloc>"u"&&(X.yylloc={});var se=X.yylloc;z.push(se);var ue=X.options&&X.options.ranges;typeof te.yy.parseError=="function"?this.parseError=te.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Z(re){F.length=F.length-2*re,G.length=G.length-re,z.length=z.length-re}o(Z,"popStack");function Se(){var re;return re=P.pop()||X.lex()||he,typeof re!="number"&&(re instanceof Array&&(P=re,re=P.pop()),re=B.symbols_[re]||re),re}o(Se,"lex");for(var ce,ae,Oe,ge,Ge,He,ze={},Re,Ie,be,W;;){if(Oe=F[F.length-1],this.defaultActions[Oe]?ge=this.defaultActions[Oe]:((ce===null||typeof ce>"u")&&(ce=Se()),ge=H[Oe]&&H[Oe][ce]),typeof ge>"u"||!ge.length||!ge[0]){var de="";W=[];for(Re in H[Oe])this.terminals_[Re]&&Re>le&&W.push("'"+this.terminals_[Re]+"'");X.showPosition?de="Parse error on line "+(j+1)+`: +`+X.showPosition()+` +Expecting `+W.join(", ")+", got '"+(this.terminals_[ce]||ce)+"'":de="Parse error on line "+(j+1)+": Unexpected "+(ce==he?"end of input":"'"+(this.terminals_[ce]||ce)+"'"),this.parseError(de,{text:X.match,token:this.terminals_[ce]||ce,line:X.yylineno,loc:se,expected:W})}if(ge[0]instanceof Array&&ge.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Oe+", token: "+ce);switch(ge[0]){case 1:F.push(ce),G.push(X.yytext),z.push(X.yylloc),F.push(ge[1]),ce=null,ae?(ce=ae,ae=null):(ie=X.yyleng,Q=X.yytext,j=X.yylineno,se=X.yylloc,ne>0&&ne--);break;case 2:if(Ie=this.productions_[ge[1]][1],ze.$=G[G.length-Ie],ze._$={first_line:z[z.length-(Ie||1)].first_line,last_line:z[z.length-1].last_line,first_column:z[z.length-(Ie||1)].first_column,last_column:z[z.length-1].last_column},ue&&(ze._$.range=[z[z.length-(Ie||1)].range[0],z[z.length-1].range[1]]),He=this.performAction.apply(ze,[Q,ie,j,te.yy,ge[1],G,z].concat(K)),typeof He<"u")return He;Ie&&(F=F.slice(0,-1*Ie*2),G=G.slice(0,-1*Ie),z=z.slice(0,-1*Ie)),F.push(this.productions_[ge[1]][0]),G.push(ze.$),z.push(ze._$),be=H[F[F.length-2]][F[F.length-1]],F.push(be);break;case 3:return!0}}return!0},"parse")},L=function(){var O={EOF:1,parseError:o(function(B,F){if(this.yy.parser)this.yy.parser.parseError(B,F);else throw new Error(B)},"parseError"),setInput:o(function(N,B){return this.yy=B||this.yy||{},this._input=N,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var N=this._input[0];this.yytext+=N,this.yyleng++,this.offset++,this.match+=N,this.matched+=N;var B=N.match(/(?:\r\n?|\n).*/g);return B?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),N},"input"),unput:o(function(N){var B=N.length,F=N.split(/(?:\r\n?|\n)/g);this._input=N+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-B),this.offset-=B;var P=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),F.length-1&&(this.yylineno-=F.length-1);var G=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:F?(F.length===P.length?this.yylloc.first_column:0)+P[P.length-F.length].length-F[0].length:this.yylloc.first_column-B},this.options.ranges&&(this.yylloc.range=[G[0],G[0]+this.yyleng-B]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(N){this.unput(this.match.slice(N))},"less"),pastInput:o(function(){var N=this.matched.substr(0,this.matched.length-this.match.length);return(N.length>20?"...":"")+N.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var N=this.match;return N.length<20&&(N+=this._input.substr(0,20-N.length)),(N.substr(0,20)+(N.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var N=this.pastInput(),B=new Array(N.length+1).join("-");return N+this.upcomingInput()+` +`+B+"^"},"showPosition"),test_match:o(function(N,B){var F,P,G;if(this.options.backtrack_lexer&&(G={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(G.yylloc.range=this.yylloc.range.slice(0))),P=N[0].match(/(?:\r\n?|\n).*/g),P&&(this.yylineno+=P.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:P?P[P.length-1].length-P[P.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+N[0].length},this.yytext+=N[0],this.match+=N[0],this.matches=N,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(N[0].length),this.matched+=N[0],F=this.performAction.call(this,this.yy,this,B,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),F)return F;if(this._backtrack){for(var z in G)this[z]=G[z];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var N,B,F,P;this._more||(this.yytext="",this.match="");for(var G=this._currentRules(),z=0;zB[0].length)){if(B=F,P=z,this.options.backtrack_lexer){if(N=this.test_match(F,G[z]),N!==!1)return N;if(this._backtrack){B=!1;continue}else return!1}else if(!this.options.flex)break}return B?(N=this.test_match(B,G[P]),N!==!1?N:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var B=this.next();return B||this.lex()},"lex"),begin:o(function(B){this.conditionStack.push(B)},"begin"),popState:o(function(){var B=this.conditionStack.length-1;return B>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(B){return B=this.conditionStack.length-1-Math.abs(B||0),B>=0?this.conditionStack[B]:"INITIAL"},"topState"),pushState:o(function(B){this.begin(B)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(B,F,P,G){var z=G;switch(P){case 0:break;case 1:break;case 2:return this.popState(),34;break;case 3:return this.popState(),34;break;case 4:return 34;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.pushState("acc_descr"),21;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 8;case 16:return this.pushState("axis_data"),"X_AXIS";break;case 17:return this.pushState("axis_data"),"Y_AXIS";break;case 18:return this.pushState("axis_band_data"),24;break;case 19:return 31;case 20:return this.pushState("data"),16;break;case 21:return this.pushState("data"),18;break;case 22:return this.pushState("data_inner"),24;break;case 23:return 27;case 24:return this.popState(),26;break;case 25:this.popState();break;case 26:this.pushState("string");break;case 27:this.popState();break;case 28:return"STR";case 29:return 24;case 30:return 26;case 31:return 43;case 32:return"COLON";case 33:return 44;case 34:return 28;case 35:return 45;case 36:return 46;case 37:return 48;case 38:return 50;case 39:return 47;case 40:return 41;case 41:return 49;case 42:return 42;case 43:break;case 44:return 35;case 45:return 36}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\{)/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,20,21,22,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,23,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[27,28],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0}}};return O}();k.lexer=L;function R(){this.yy={}}return o(R,"Parser"),R.prototype=k,k.Parser=R,new R}();rO.parser=rO;lhe=rO});function nO(t){return t.type==="bar"}function i6(t){return t.type==="band"}function b1(t){return t.type==="linear"}var a6=M(()=>{"use strict";o(nO,"isBarPlot");o(i6,"isBandAxisData");o(b1,"isLinearAxisData")});var w1,iO=M(()=>{"use strict";Ks();w1=class{constructor(e){this.parentGroup=e}static{o(this,"TextDimensionCalculatorWithFont")}getMaxDimension(e,r){if(!this.parentGroup)return{width:e.reduce((a,s)=>Math.max(s.length,a),0)*r,height:r};let n={width:0,height:0},i=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",r);for(let a of e){let s=Yj(i,1,a),l=s?s.width:a.length*r,u=s?s.height:r;n.width=Math.max(n.width,l),n.height=Math.max(n.height,u)}return i.remove(),n}}});var T1,aO=M(()=>{"use strict";T1=class{constructor(e,r,n,i){this.axisConfig=e;this.title=r;this.textDimensionCalculator=n;this.axisThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0};this.axisPosition="left";this.showTitle=!1;this.showLabel=!1;this.showTick=!1;this.showAxisLine=!1;this.outerPadding=0;this.titleTextHeight=0;this.labelTextHeight=0;this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}static{o(this,"BaseAxis")}setRange(e){this.range=e,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=e[1]-e[0]:this.boundingRect.width=e[1]-e[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(e){this.axisPosition=e,this.setRange(this.range)}getTickDistance(){let e=this.getRange();return Math.abs(e[0]-e[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(e=>e.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(e){let r=e.height;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*e.width;this.outerPadding=Math.min(n.width/2,i);let a=n.height+this.axisConfig.labelPadding*2;this.labelTextHeight=n.height,a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=e.width,this.boundingRect.height=e.height-r}calculateSpaceIfDrawnVertical(e){let r=e.width;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*e.height;this.outerPadding=Math.min(n.height/2,i);let a=n.width+this.axisConfig.labelPadding*2;a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=e.width-r,this.boundingRect.height=e.height}calculateSpace(e){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(e):this.calculateSpaceIfDrawnHorizontally(e),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}getDrawableElementsForLeftAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${r},${this.boundingRect.y} L ${r},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(r),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){let r=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${r},${this.getScaleValue(n)} L ${r-this.axisConfig.tickLength},${this.getScaleValue(n)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),e}getDrawableElementsForBottomAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.y+this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r} L ${this.getScaleValue(n)},${r+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),e}getDrawableElementsForTopAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y;e.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(n)},${r+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),e}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}}});var s6,uhe=M(()=>{"use strict";hr();vt();aO();s6=class extends T1{static{o(this,"BandAxis")}constructor(e,r,n,i,a){super(e,i,a,r),this.categories=n,this.scale=A0().domain(this.categories).range(this.getRange())}setRange(e){super.setRange(e)}recalculateScale(){this.scale=A0().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),Y.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(e){return this.scale(e)??this.getRange()[0]}}});var o6,hhe=M(()=>{"use strict";hr();aO();o6=class extends T1{static{o(this,"LinearAxis")}constructor(e,r,n,i,a){super(e,i,a,r),this.domain=n,this.scale=dl().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){let e=[...this.domain];this.axisPosition==="left"&&e.reverse(),this.scale=dl().domain(e).range(this.getRange())}getScaleValue(e){return this.scale(e)}}});function sO(t,e,r,n){let i=new w1(n);return i6(t)?new s6(e,r,t.categories,t.title,i):new o6(e,r,[t.min,t.max],t.title,i)}var fhe=M(()=>{"use strict";a6();iO();uhe();hhe();o(sO,"getAxis")});function dhe(t,e,r,n){let i=new w1(n);return new oO(i,t,e,r)}var oO,phe=M(()=>{"use strict";iO();oO=class{constructor(e,r,n,i){this.textDimensionCalculator=e;this.chartConfig=r;this.chartData=n;this.chartThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{o(this,"ChartTitle")}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){let r=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),n=Math.max(r.width,e.width),i=r.height+2*this.chartConfig.titlePadding;return r.width<=n&&r.height<=i&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=n,this.boundingRect.height=i,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){let e=[];return this.showChartTitle&&e.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),e}};o(dhe,"getChartTitleComponent")});var l6,mhe=M(()=>{"use strict";hr();l6=class{constructor(e,r,n,i,a){this.plotData=e;this.xAxis=r;this.yAxis=n;this.orientation=i;this.plotIndex=a}static{o(this,"LinePlot")}getDrawableElement(){let e=this.plotData.data.map(n=>[this.xAxis.getScaleValue(n[0]),this.yAxis.getScaleValue(n[1])]),r;return this.orientation==="horizontal"?r=vl().y(n=>n[0]).x(n=>n[1])(e):r=vl().x(n=>n[0]).y(n=>n[1])(e),r?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:r,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}}});var c6,ghe=M(()=>{"use strict";c6=class{constructor(e,r,n,i,a,s){this.barData=e;this.boundingRect=r;this.xAxis=n;this.yAxis=i;this.orientation=a;this.plotIndex=s}static{o(this,"BarPlot")}getDrawableElement(){let e=this.barData.data.map(a=>[this.xAxis.getScaleValue(a[0]),this.yAxis.getScaleValue(a[1])]),n=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-.05),i=n/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:e.map(a=>({x:this.boundingRect.x,y:a[0]-i,height:n,width:a[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:e.map(a=>({x:a[0]-i,y:a[1],width:n,height:this.boundingRect.y+this.boundingRect.height-a[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}});function yhe(t,e,r){return new lO(t,e,r)}var lO,vhe=M(()=>{"use strict";mhe();ghe();lO=class{constructor(e,r,n){this.chartConfig=e;this.chartData=r;this.chartThemeConfig=n;this.boundingRect={x:0,y:0,width:0,height:0}}static{o(this,"BasePlot")}setAxes(e,r){this.xAxis=e,this.yAxis=r}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){return this.boundingRect.width=e.width,this.boundingRect.height=e.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");let e=[];for(let[r,n]of this.chartData.plots.entries())switch(n.type){case"line":{let i=new l6(n,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);e.push(...i.getDrawableElement())}break;case"bar":{let i=new c6(n,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);e.push(...i.getDrawableElement())}break}return e}};o(yhe,"getPlotComponent")});var u6,xhe=M(()=>{"use strict";fhe();phe();vhe();a6();u6=class{constructor(e,r,n,i){this.chartConfig=e;this.chartData=r;this.componentStore={title:dhe(e,r,n,i),plot:yhe(e,r,n),xAxis:sO(r.xAxis,e.xAxis,{titleColor:n.xAxisTitleColor,labelColor:n.xAxisLabelColor,tickColor:n.xAxisTickColor,axisLineColor:n.xAxisLineColor},i),yAxis:sO(r.yAxis,e.yAxis,{titleColor:n.yAxisTitleColor,labelColor:n.yAxisLabelColor,tickColor:n.yAxisTickColor,axisLineColor:n.yAxisLineColor},i)}}static{o(this,"Orchestrator")}calculateVerticalSpace(){let e=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),s=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),l=this.componentStore.plot.calculateSpace({width:a,height:s});e-=l.width,r-=l.height,l=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),i=l.height,r-=l.height,this.componentStore.xAxis.setAxisPosition("bottom"),l=this.componentStore.xAxis.calculateSpace({width:e,height:r}),r-=l.height,this.componentStore.yAxis.setAxisPosition("left"),l=this.componentStore.yAxis.calculateSpace({width:e,height:r}),n=l.width,e-=l.width,e>0&&(a+=e,e=0),r>0&&(s+=r,r=0),this.componentStore.plot.calculateSpace({width:a,height:s}),this.componentStore.plot.setBoundingBoxXY({x:n,y:i}),this.componentStore.xAxis.setRange([n,n+a]),this.componentStore.xAxis.setBoundingBoxXY({x:n,y:i+s}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:i}),this.chartData.plots.some(u=>nO(u))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let e=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=0,s=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),l=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),u=this.componentStore.plot.calculateSpace({width:s,height:l});e-=u.width,r-=u.height,u=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),n=u.height,r-=u.height,this.componentStore.xAxis.setAxisPosition("left"),u=this.componentStore.xAxis.calculateSpace({width:e,height:r}),e-=u.width,i=u.width,this.componentStore.yAxis.setAxisPosition("top"),u=this.componentStore.yAxis.calculateSpace({width:e,height:r}),r-=u.height,a=n+u.height,e>0&&(s+=e,e=0),r>0&&(l+=r,r=0),this.componentStore.plot.calculateSpace({width:s,height:l}),this.componentStore.plot.setBoundingBoxXY({x:i,y:a}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:i,y:n}),this.componentStore.xAxis.setRange([a,a+l]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:a}),this.chartData.plots.some(h=>nO(h))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();let e=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(let r of Object.values(this.componentStore))e.push(...r.getDrawableElements());return e}}});var h6,bhe=M(()=>{"use strict";xhe();h6=class{static{o(this,"XYChartBuilder")}static build(e,r,n,i){return new u6(e,r,n,i).getDrawableElement()}}});function The(){let t=i0(),e=mr();return Es(t.xyChart,e.themeVariables.xyChart)}function khe(){let t=mr();return Es(cr.xyChart,t.xyChart)}function Ehe(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function hO(t){let e=mr();return Tr(t.trim(),e)}function n$e(t){whe=t}function i$e(t){t==="horizontal"?ob.chartOrientation="horizontal":ob.chartOrientation="vertical"}function a$e(t){fn.xAxis.title=hO(t.text)}function She(t,e){fn.xAxis={type:"linear",title:fn.xAxis.title,min:t,max:e},f6=!0}function s$e(t){fn.xAxis={type:"band",title:fn.xAxis.title,categories:t.map(e=>hO(e.text))},f6=!0}function o$e(t){fn.yAxis.title=hO(t.text)}function l$e(t,e){fn.yAxis={type:"linear",title:fn.yAxis.title,min:t,max:e},uO=!0}function c$e(t){let e=Math.min(...t),r=Math.max(...t),n=b1(fn.yAxis)?fn.yAxis.min:1/0,i=b1(fn.yAxis)?fn.yAxis.max:-1/0;fn.yAxis={type:"linear",title:fn.yAxis.title,min:Math.min(n,e),max:Math.max(i,r)}}function Che(t){let e=[];if(t.length===0)return e;if(!f6){let r=b1(fn.xAxis)?fn.xAxis.min:1/0,n=b1(fn.xAxis)?fn.xAxis.max:-1/0;She(Math.min(r,1),Math.max(n,t.length))}if(uO||c$e(t),i6(fn.xAxis)&&(e=fn.xAxis.categories.map((r,n)=>[r,t[n]])),b1(fn.xAxis)){let r=fn.xAxis.min,n=fn.xAxis.max,i=(n-r)/(t.length-1),a=[];for(let s=r;s<=n;s+=i)a.push(`${s}`);e=a.map((s,l)=>[s,t[l]])}return e}function Ahe(t){return cO[t===0?0:t%cO.length]}function u$e(t,e){let r=Che(e);fn.plots.push({type:"line",strokeFill:Ahe(sb),strokeWidth:2,data:r}),sb++}function h$e(t,e){let r=Che(e);fn.plots.push({type:"bar",fill:Ahe(sb),data:r}),sb++}function f$e(){if(fn.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return fn.title=Fr(),h6.build(ob,fn,lb,whe)}function d$e(){return lb}function p$e(){return ob}var sb,whe,ob,lb,fn,cO,f6,uO,m$e,_he,Dhe=M(()=>{"use strict";ka();ps();M4();sr();gr();ki();bhe();a6();sb=0,ob=khe(),lb=The(),fn=Ehe(),cO=lb.plotColorPalette.split(",").map(t=>t.trim()),f6=!1,uO=!1;o(The,"getChartDefaultThemeConfig");o(khe,"getChartDefaultConfig");o(Ehe,"getChartDefaultData");o(hO,"textSanitizer");o(n$e,"setTmpSVGG");o(i$e,"setOrientation");o(a$e,"setXAxisTitle");o(She,"setXAxisRangeData");o(s$e,"setXAxisBand");o(o$e,"setYAxisTitle");o(l$e,"setYAxisRangeData");o(c$e,"setYAxisRangeFromPlotData");o(Che,"transformDataWithoutCategory");o(Ahe,"getPlotColorFromPalette");o(u$e,"setLineData");o(h$e,"setBarData");o(f$e,"getDrawableElem");o(d$e,"getChartThemeConfig");o(p$e,"getChartConfig");m$e=o(function(){Dr(),sb=0,ob=khe(),fn=Ehe(),lb=The(),cO=lb.plotColorPalette.split(",").map(t=>t.trim()),f6=!1,uO=!1},"clear"),_he={getDrawableElem:f$e,clear:m$e,setAccTitle:Mr,getAccTitle:Or,setDiagramTitle:Zr,getDiagramTitle:Fr,getAccDescription:Br,setAccDescription:Pr,setOrientation:i$e,setXAxisTitle:a$e,setXAxisRangeData:She,setXAxisBand:s$e,setYAxisTitle:o$e,setYAxisRangeData:l$e,setLineData:u$e,setBarData:h$e,setTmpSVGG:n$e,getChartThemeConfig:d$e,getChartConfig:p$e}});var g$e,Lhe,Rhe=M(()=>{"use strict";vt();Hu();Ti();g$e=o((t,e,r,n)=>{let i=n.db,a=i.getChartThemeConfig(),s=i.getChartConfig();function l(v){return v==="top"?"text-before-edge":"middle"}o(l,"getDominantBaseLine");function u(v){return v==="left"?"start":v==="right"?"end":"middle"}o(u,"getTextAnchor");function h(v){return`translate(${v.x}, ${v.y}) rotate(${v.rotation||0})`}o(h,"getTextTransformation"),Y.debug(`Rendering xychart chart +`+t);let f=Pa(e),d=f.append("g").attr("class","main"),p=d.append("rect").attr("width",s.width).attr("height",s.height).attr("class","background");vn(f,s.height,s.width,!0),f.attr("viewBox",`0 0 ${s.width} ${s.height}`),p.attr("fill",a.backgroundColor),i.setTmpSVGG(f.append("g").attr("class","mermaid-tmp-group"));let m=i.getDrawableElem(),g={};function y(v){let x=d,b="";for(let[w]of v.entries()){let C=d;w>0&&g[b]&&(C=g[b]),b+=v[w],x=g[b],x||(x=g[b]=C.append("g").attr("class",v[w]))}return x}o(y,"getGroup");for(let v of m){if(v.data.length===0)continue;let x=y(v.groupTexts);switch(v.type){case"rect":x.selectAll("rect").data(v.data).enter().append("rect").attr("x",b=>b.x).attr("y",b=>b.y).attr("width",b=>b.width).attr("height",b=>b.height).attr("fill",b=>b.fill).attr("stroke",b=>b.strokeFill).attr("stroke-width",b=>b.strokeWidth);break;case"text":x.selectAll("text").data(v.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",b=>b.fill).attr("font-size",b=>b.fontSize).attr("dominant-baseline",b=>l(b.verticalPos)).attr("text-anchor",b=>u(b.horizontalPos)).attr("transform",b=>h(b)).text(b=>b.text);break;case"path":x.selectAll("path").data(v.data).enter().append("path").attr("d",b=>b.path).attr("fill",b=>b.fill?b.fill:"none").attr("stroke",b=>b.strokeFill).attr("stroke-width",b=>b.strokeWidth);break}}},"draw"),Lhe={draw:g$e}});var Nhe={};pr(Nhe,{diagram:()=>y$e});var y$e,Mhe=M(()=>{"use strict";che();Dhe();Rhe();y$e={parser:lhe,db:_he,renderer:Lhe}});var fO,Phe,Bhe=M(()=>{"use strict";fO=function(){var t=o(function(re,oe,V,xe){for(V=V||{},xe=re.length;xe--;V[re[xe]]=oe);return V},"o"),e=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],s=[1,22],l=[2,7],u=[1,26],h=[1,27],f=[1,28],d=[1,29],p=[1,33],m=[1,34],g=[1,35],y=[1,36],v=[1,37],x=[1,38],b=[1,24],w=[1,31],C=[1,32],T=[1,30],E=[1,39],A=[1,40],S=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],_=[1,61],I=[89,90],D=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],k=[27,29],L=[1,70],R=[1,71],O=[1,72],N=[1,73],B=[1,74],F=[1,75],P=[1,76],G=[1,83],z=[1,80],H=[1,84],Q=[1,85],j=[1,86],ie=[1,87],ne=[1,88],le=[1,89],he=[1,90],K=[1,91],X=[1,92],te=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],J=[63,64],se=[1,101],ue=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],Z=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],Se=[1,110],ce=[1,106],ae=[1,107],Oe=[1,108],ge=[1,109],Ge=[1,111],He=[1,116],ze=[1,117],Re=[1,114],Ie=[1,115],be={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType:39,STRUCT_STOP:40,REQUIREMENT:41,FUNCTIONAL_REQUIREMENT:42,INTERFACE_REQUIREMENT:43,PERFORMANCE_REQUIREMENT:44,PHYSICAL_REQUIREMENT:45,DESIGN_CONSTRAINT:46,LOW_RISK:47,MED_RISK:48,HIGH_RISK:49,VERIFY_ANALYSIS:50,VERIFY_DEMONSTRATION:51,VERIFY_INSPECTION:52,VERIFY_TEST:53,ELEMENT:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:o(function(oe,V,xe,q,pe,ve,Pe){var _e=ve.length-1;switch(pe){case 4:this.$=ve[_e].trim(),q.setAccTitle(this.$);break;case 5:case 6:this.$=ve[_e].trim(),q.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:q.setDirection("TB");break;case 18:q.setDirection("BT");break;case 19:q.setDirection("RL");break;case 20:q.setDirection("LR");break;case 21:q.addRequirement(ve[_e-3],ve[_e-4]);break;case 22:q.addRequirement(ve[_e-5],ve[_e-6]),q.setClass([ve[_e-5]],ve[_e-3]);break;case 23:q.setNewReqId(ve[_e-2]);break;case 24:q.setNewReqText(ve[_e-2]);break;case 25:q.setNewReqRisk(ve[_e-2]);break;case 26:q.setNewReqVerifyMethod(ve[_e-2]);break;case 29:this.$=q.RequirementType.REQUIREMENT;break;case 30:this.$=q.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=q.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=q.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=q.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=q.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=q.RiskLevel.LOW_RISK;break;case 36:this.$=q.RiskLevel.MED_RISK;break;case 37:this.$=q.RiskLevel.HIGH_RISK;break;case 38:this.$=q.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=q.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=q.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=q.VerifyType.VERIFY_TEST;break;case 42:q.addElement(ve[_e-3]);break;case 43:q.addElement(ve[_e-5]),q.setClass([ve[_e-5]],ve[_e-3]);break;case 44:q.setNewElementType(ve[_e-2]);break;case 45:q.setNewElementDocRef(ve[_e-2]);break;case 48:q.addRelationship(ve[_e-2],ve[_e],ve[_e-4]);break;case 49:q.addRelationship(ve[_e-2],ve[_e-4],ve[_e]);break;case 50:this.$=q.Relationships.CONTAINS;break;case 51:this.$=q.Relationships.COPIES;break;case 52:this.$=q.Relationships.DERIVES;break;case 53:this.$=q.Relationships.SATISFIES;break;case 54:this.$=q.Relationships.VERIFIES;break;case 55:this.$=q.Relationships.REFINES;break;case 56:this.$=q.Relationships.TRACES;break;case 57:this.$=ve[_e-2],q.defineClass(ve[_e-1],ve[_e]);break;case 58:q.setClass(ve[_e-1],ve[_e]);break;case 59:q.setClass([ve[_e-2]],ve[_e]);break;case 60:case 62:this.$=[ve[_e]];break;case 61:case 63:this.$=ve[_e-2].concat([ve[_e]]);break;case 64:this.$=ve[_e-2],q.setCssStyle(ve[_e-1],ve[_e]);break;case 65:this.$=[ve[_e]];break;case 66:ve[_e-2].push(ve[_e]),this.$=ve[_e-2];break;case 68:this.$=ve[_e-1]+ve[_e];break}},"anonymous"),table:[{3:1,4:2,6:e,9:r,11:n,13:i},{1:[3]},{3:8,4:2,5:[1,7],6:e,9:r,11:n,13:i},{5:[1,9]},{10:[1,10]},{12:[1,11]},t(a,[2,6]),{3:12,4:2,6:e,9:r,11:n,13:i},{1:[2,2]},{4:17,5:s,7:13,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},t(a,[2,4]),t(a,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:s,7:42,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:43,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:44,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:45,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:46,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:47,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:48,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:49,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{4:17,5:s,7:50,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:w,74:C,77:T,89:E,90:A},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},t(S,[2,17]),t(S,[2,18]),t(S,[2,19]),t(S,[2,20]),{30:60,33:62,75:_,89:E,90:A},{30:63,33:62,75:_,89:E,90:A},{30:64,33:62,75:_,89:E,90:A},t(I,[2,29]),t(I,[2,30]),t(I,[2,31]),t(I,[2,32]),t(I,[2,33]),t(I,[2,34]),t(D,[2,81]),t(D,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},t(k,[2,79]),t(k,[2,80]),{27:[1,67],29:[1,68]},t(k,[2,85]),t(k,[2,86]),{62:69,65:L,66:R,67:O,68:N,69:B,70:F,71:P},{62:77,65:L,66:R,67:O,68:N,69:B,70:F,71:P},{30:78,33:62,75:_,89:E,90:A},{73:79,75:G,76:z,78:81,79:82,80:H,81:Q,82:j,83:ie,84:ne,85:le,86:he,87:K,88:X},t(te,[2,60]),t(te,[2,62]),{73:93,75:G,76:z,78:81,79:82,80:H,81:Q,82:j,83:ie,84:ne,85:le,86:he,87:K,88:X},{30:94,33:62,75:_,76:z,89:E,90:A},{5:[1,95]},{30:96,33:62,75:_,89:E,90:A},{5:[1,97]},{30:98,33:62,75:_,89:E,90:A},{63:[1,99]},t(J,[2,50]),t(J,[2,51]),t(J,[2,52]),t(J,[2,53]),t(J,[2,54]),t(J,[2,55]),t(J,[2,56]),{64:[1,100]},t(S,[2,59],{76:z}),t(S,[2,64],{76:se}),{33:103,75:[1,102],89:E,90:A},t(ue,[2,65],{79:104,75:G,80:H,81:Q,82:j,83:ie,84:ne,85:le,86:he,87:K,88:X}),t(Z,[2,67]),t(Z,[2,69]),t(Z,[2,70]),t(Z,[2,71]),t(Z,[2,72]),t(Z,[2,73]),t(Z,[2,74]),t(Z,[2,75]),t(Z,[2,76]),t(Z,[2,77]),t(Z,[2,78]),t(S,[2,57],{76:se}),t(S,[2,58],{76:z}),{5:Se,28:105,31:ce,34:ae,36:Oe,38:ge,40:Ge},{27:[1,112],76:z},{5:He,40:ze,56:113,57:Re,59:Ie},{27:[1,118],76:z},{33:119,89:E,90:A},{33:120,89:E,90:A},{75:G,78:121,79:82,80:H,81:Q,82:j,83:ie,84:ne,85:le,86:he,87:K,88:X},t(te,[2,61]),t(te,[2,63]),t(Z,[2,68]),t(S,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:Se,28:126,31:ce,34:ae,36:Oe,38:ge,40:Ge},t(S,[2,28]),{5:[1,127]},t(S,[2,42]),{32:[1,128]},{32:[1,129]},{5:He,40:ze,56:130,57:Re,59:Ie},t(S,[2,47]),{5:[1,131]},t(S,[2,48]),t(S,[2,49]),t(ue,[2,66],{79:104,75:G,80:H,81:Q,82:j,83:ie,84:ne,85:le,86:he,87:K,88:X}),{33:132,89:E,90:A},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},t(S,[2,27]),{5:Se,28:145,31:ce,34:ae,36:Oe,38:ge,40:Ge},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},t(S,[2,46]),{5:He,40:ze,56:152,57:Re,59:Ie},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},t(S,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},t(S,[2,43]),{5:Se,28:159,31:ce,34:ae,36:Oe,38:ge,40:Ge},{5:Se,28:160,31:ce,34:ae,36:Oe,38:ge,40:Ge},{5:Se,28:161,31:ce,34:ae,36:Oe,38:ge,40:Ge},{5:Se,28:162,31:ce,34:ae,36:Oe,38:ge,40:Ge},{5:He,40:ze,56:163,57:Re,59:Ie},{5:He,40:ze,56:164,57:Re,59:Ie},t(S,[2,23]),t(S,[2,24]),t(S,[2,25]),t(S,[2,26]),t(S,[2,44]),t(S,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:o(function(oe,V){if(V.recoverable)this.trace(oe);else{var xe=new Error(oe);throw xe.hash=V,xe}},"parseError"),parse:o(function(oe){var V=this,xe=[0],q=[],pe=[null],ve=[],Pe=this.table,_e="",we=0,Ve=0,De=0,qe=2,at=1,Lt=ve.slice.call(arguments,1),st=Object.create(this.lexer),Ue={yy:{}};for(var ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ct)&&(Ue.yy[ct]=this.yy[ct]);st.setInput(oe,Ue.yy),Ue.yy.lexer=st,Ue.yy.parser=this,typeof st.yylloc>"u"&&(st.yylloc={});var We=st.yylloc;ve.push(We);var ot=st.options&&st.options.ranges;typeof Ue.yy.parseError=="function"?this.parseError=Ue.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Yt(_r){xe.length=xe.length-2*_r,pe.length=pe.length-_r,ve.length=ve.length-_r}o(Yt,"popStack");function bt(){var _r;return _r=q.pop()||st.lex()||at,typeof _r!="number"&&(_r instanceof Array&&(q=_r,_r=q.pop()),_r=V.symbols_[_r]||_r),_r}o(bt,"lex");for(var Nt,xt,ut,Et,ft,yt,nt={},dn,Tt,On,tn;;){if(ut=xe[xe.length-1],this.defaultActions[ut]?Et=this.defaultActions[ut]:((Nt===null||typeof Nt>"u")&&(Nt=bt()),Et=Pe[ut]&&Pe[ut][Nt]),typeof Et>"u"||!Et.length||!Et[0]){var Ar="";tn=[];for(dn in Pe[ut])this.terminals_[dn]&&dn>qe&&tn.push("'"+this.terminals_[dn]+"'");st.showPosition?Ar="Parse error on line "+(we+1)+`: +`+st.showPosition()+` +Expecting `+tn.join(", ")+", got '"+(this.terminals_[Nt]||Nt)+"'":Ar="Parse error on line "+(we+1)+": Unexpected "+(Nt==at?"end of input":"'"+(this.terminals_[Nt]||Nt)+"'"),this.parseError(Ar,{text:st.match,token:this.terminals_[Nt]||Nt,line:st.yylineno,loc:We,expected:tn})}if(Et[0]instanceof Array&&Et.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ut+", token: "+Nt);switch(Et[0]){case 1:xe.push(Nt),pe.push(st.yytext),ve.push(st.yylloc),xe.push(Et[1]),Nt=null,xt?(Nt=xt,xt=null):(Ve=st.yyleng,_e=st.yytext,we=st.yylineno,We=st.yylloc,De>0&&De--);break;case 2:if(Tt=this.productions_[Et[1]][1],nt.$=pe[pe.length-Tt],nt._$={first_line:ve[ve.length-(Tt||1)].first_line,last_line:ve[ve.length-1].last_line,first_column:ve[ve.length-(Tt||1)].first_column,last_column:ve[ve.length-1].last_column},ot&&(nt._$.range=[ve[ve.length-(Tt||1)].range[0],ve[ve.length-1].range[1]]),yt=this.performAction.apply(nt,[_e,Ve,we,Ue.yy,Et[1],pe,ve].concat(Lt)),typeof yt<"u")return yt;Tt&&(xe=xe.slice(0,-1*Tt*2),pe=pe.slice(0,-1*Tt),ve=ve.slice(0,-1*Tt)),xe.push(this.productions_[Et[1]][0]),pe.push(nt.$),ve.push(nt._$),On=Pe[xe[xe.length-2]][xe[xe.length-1]],xe.push(On);break;case 3:return!0}}return!0},"parse")},W=function(){var re={EOF:1,parseError:o(function(V,xe){if(this.yy.parser)this.yy.parser.parseError(V,xe);else throw new Error(V)},"parseError"),setInput:o(function(oe,V){return this.yy=V||this.yy||{},this._input=oe,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var oe=this._input[0];this.yytext+=oe,this.yyleng++,this.offset++,this.match+=oe,this.matched+=oe;var V=oe.match(/(?:\r\n?|\n).*/g);return V?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),oe},"input"),unput:o(function(oe){var V=oe.length,xe=oe.split(/(?:\r\n?|\n)/g);this._input=oe+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-V),this.offset-=V;var q=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),xe.length-1&&(this.yylineno-=xe.length-1);var pe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:xe?(xe.length===q.length?this.yylloc.first_column:0)+q[q.length-xe.length].length-xe[0].length:this.yylloc.first_column-V},this.options.ranges&&(this.yylloc.range=[pe[0],pe[0]+this.yyleng-V]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(oe){this.unput(this.match.slice(oe))},"less"),pastInput:o(function(){var oe=this.matched.substr(0,this.matched.length-this.match.length);return(oe.length>20?"...":"")+oe.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var oe=this.match;return oe.length<20&&(oe+=this._input.substr(0,20-oe.length)),(oe.substr(0,20)+(oe.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var oe=this.pastInput(),V=new Array(oe.length+1).join("-");return oe+this.upcomingInput()+` +`+V+"^"},"showPosition"),test_match:o(function(oe,V){var xe,q,pe;if(this.options.backtrack_lexer&&(pe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(pe.yylloc.range=this.yylloc.range.slice(0))),q=oe[0].match(/(?:\r\n?|\n).*/g),q&&(this.yylineno+=q.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:q?q[q.length-1].length-q[q.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+oe[0].length},this.yytext+=oe[0],this.match+=oe[0],this.matches=oe,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(oe[0].length),this.matched+=oe[0],xe=this.performAction.call(this,this.yy,this,V,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),xe)return xe;if(this._backtrack){for(var ve in pe)this[ve]=pe[ve];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var oe,V,xe,q;this._more||(this.yytext="",this.match="");for(var pe=this._currentRules(),ve=0;veV[0].length)){if(V=xe,q=ve,this.options.backtrack_lexer){if(oe=this.test_match(xe,pe[ve]),oe!==!1)return oe;if(this._backtrack){V=!1;continue}else return!1}else if(!this.options.flex)break}return V?(oe=this.test_match(V,pe[q]),oe!==!1?oe:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var V=this.next();return V||this.lex()},"lex"),begin:o(function(V){this.conditionStack.push(V)},"begin"),popState:o(function(){var V=this.conditionStack.length-1;return V>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(V){return V=this.conditionStack.length-1-Math.abs(V||0),V>=0?this.conditionStack[V]:"INITIAL"},"topState"),pushState:o(function(V){this.begin(V)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(V,xe,q,pe){var ve=pe;switch(q){case 0:return"title";case 1:return this.begin("acc_title"),9;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),11;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:break;case 14:break;case 15:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;break;case 50:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 56:break;case 57:this.begin("string");break;case 58:this.popState();break;case 59:return this.begin("style"),72;break;case 60:return this.begin("style"),74;break;case 61:return 61;case 62:return 64;case 63:return 63;case 64:this.begin("string");break;case 65:this.popState();break;case 66:return"qString";case 67:return xe.yytext=xe.yytext.trim(),89;break;case 68:return 75;case 69:return 80;case 70:return 76}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}};return re}();be.lexer=W;function de(){this.yy={}}return o(de,"Parser"),de.prototype=be,be.Parser=de,new de}();fO.parser=fO;Phe=fO});var d6,Fhe=M(()=>{"use strict";Gt();vt();ki();d6=class{constructor(){this.relations=[];this.latestRequirement=this.getInitialRequirement();this.requirements=new Map;this.latestElement=this.getInitialElement();this.elements=new Map;this.classes=new Map;this.direction="TB";this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"};this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"};this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"};this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"};this.setAccTitle=Mr;this.getAccTitle=Or;this.setAccDescription=Pr;this.getAccDescription=Br;this.setDiagramTitle=Zr;this.getDiagramTitle=Fr;this.getConfig=o(()=>me().requirement,"getConfig");this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"RequirementDB")}getDirection(){return this.direction}setDirection(e){this.direction=e}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(e,r){return this.requirements.has(e)||this.requirements.set(e,{name:e,type:r,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(e)}getRequirements(){return this.requirements}setNewReqId(e){this.latestRequirement!==void 0&&(this.latestRequirement.requirementId=e)}setNewReqText(e){this.latestRequirement!==void 0&&(this.latestRequirement.text=e)}setNewReqRisk(e){this.latestRequirement!==void 0&&(this.latestRequirement.risk=e)}setNewReqVerifyMethod(e){this.latestRequirement!==void 0&&(this.latestRequirement.verifyMethod=e)}addElement(e){return this.elements.has(e)||(this.elements.set(e,{name:e,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),Y.info("Added new element: ",e)),this.resetLatestElement(),this.elements.get(e)}getElements(){return this.elements}setNewElementType(e){this.latestElement!==void 0&&(this.latestElement.type=e)}setNewElementDocRef(e){this.latestElement!==void 0&&(this.latestElement.docRef=e)}addRelationship(e,r,n){this.relations.push({type:e,src:r,dst:n})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,Dr()}setCssStyle(e,r){for(let n of e){let i=this.requirements.get(n)??this.elements.get(n);if(!r||!i)return;for(let a of r)a.includes(",")?i.cssStyles.push(...a.split(",")):i.cssStyles.push(a)}}setClass(e,r){for(let n of e){let i=this.requirements.get(n)??this.elements.get(n);if(i)for(let a of r){i.classes.push(a);let s=this.classes.get(a)?.styles;s&&i.cssStyles.push(...s)}}}defineClass(e,r){for(let n of e){let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.requirements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))}),this.elements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))})}}getClasses(){return this.classes}getData(){let e=me(),r=[],n=[];for(let i of this.requirements.values()){let a=i;a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),a.shape="requirementBox",a.look=e.look,r.push(a)}for(let i of this.elements.values()){let a=i;a.shape="requirementBox",a.look=e.look,a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),r.push(a)}for(let i of this.relations){let a=0,s=i.type===this.Relationships.CONTAINS,l={id:`${i.src}-${i.dst}-${a}`,start:this.requirements.get(i.src)?.name??this.elements.get(i.src)?.name,end:this.requirements.get(i.dst)?.name??this.elements.get(i.dst)?.name,label:`<<${i.type}>>`,classes:"relationshipLine",style:["fill:none",s?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:s?"normal":"dashed",arrowTypeEnd:s?"requirement_contains":"requirement_arrow",look:e.look};n.push(l),a++}return{nodes:r,edges:n,other:{},config:e,direction:this.getDirection()}}}});var w$e,zhe,Ghe=M(()=>{"use strict";w$e=o(t=>` marker { fill: ${t.relationColor}; @@ -1186,16 +1222,28 @@ Expecting `+Me.join(", ")+", got '"+(this.terminals_[he]||he)+"'":me="Parse erro .relationshipLabel { fill: ${t.relationLabelColor}; } + .divider { + stroke: ${t.nodeBorder}; + stroke-width: 1; + } + .label { + font-family: ${t.fontFamily}; + color: ${t.nodeTextColor||t.textColor}; + } + .label text,span { + fill: ${t.nodeTextColor||t.textColor}; + color: ${t.nodeTextColor||t.textColor}; + } + .labelBkg { + background-color: ${t.edgeLabelBackground}; + } -`,"getStyles"),Dfe=MUe});var vO,IUe,xO,Rfe=M(()=>{"use strict";vO={CONTAINS:"contains",ARROW:"arrow"},IUe=o((t,e)=>{let r=t.append("defs").append("marker").attr("id",vO.CONTAINS+"_line_ending").attr("refX",0).attr("refY",e.line_height/2).attr("markerWidth",e.line_height).attr("markerHeight",e.line_height).attr("orient","auto").append("g");r.append("circle").attr("cx",e.line_height/2).attr("cy",e.line_height/2).attr("r",e.line_height/2).attr("fill","none"),r.append("line").attr("x1",0).attr("x2",e.line_height).attr("y1",e.line_height/2).attr("y2",e.line_height/2).attr("stroke-width",1),r.append("line").attr("y1",0).attr("y2",e.line_height).attr("x1",e.line_height/2).attr("x2",e.line_height/2).attr("stroke-width",1),t.append("defs").append("marker").attr("id",vO.ARROW+"_line_ending").attr("refX",e.line_height).attr("refY",.5*e.line_height).attr("markerWidth",e.line_height).attr("markerHeight",e.line_height).attr("orient","auto").append("path").attr("d",`M0,0 - L${e.line_height},${e.line_height/2} - M${e.line_height},${e.line_height/2} - L0,${e.line_height}`).attr("stroke-width",1)},"insertLineEndings"),xO={ReqMarkers:vO,insertLineEndings:IUe}});var ci,Mfe,Ife,Ofe,Pfe,OUe,PUe,BUe,FUe,zUe,GUe,Bg,$Ue,Bfe,Ffe=M(()=>{"use strict";mr();Pv();Ns();Vt();ht();ni();fr();Rfe();ci={},Mfe=0,Ife=o((t,e)=>t.insert("rect","#"+e).attr("class","req reqBox").attr("x",0).attr("y",0).attr("width",ci.rect_min_width+"px").attr("height",ci.rect_min_height+"px"),"newRectNode"),Ofe=o((t,e,r)=>{let n=ci.rect_min_width/2,i=t.append("text").attr("class","req reqLabel reqTitle").attr("id",e).attr("x",n).attr("y",ci.rect_padding).attr("dominant-baseline","hanging"),a=0;r.forEach(h=>{a==0?i.append("tspan").attr("text-anchor","middle").attr("x",ci.rect_min_width/2).attr("dy",0).text(h):i.append("tspan").attr("text-anchor","middle").attr("x",ci.rect_min_width/2).attr("dy",ci.line_height*.75).text(h),a++});let s=1.5*ci.rect_padding,l=a*ci.line_height*.75,u=s+l;return t.append("line").attr("class","req-title-line").attr("x1","0").attr("x2",ci.rect_min_width).attr("y1",u).attr("y2",u),{titleNode:i,y:u}},"newTitleNode"),Pfe=o((t,e,r,n)=>{let i=t.append("text").attr("class","req reqLabel").attr("id",e).attr("x",ci.rect_padding).attr("y",n).attr("dominant-baseline","hanging"),a=0,s=30,l=[];return r.forEach(u=>{let h=u.length;for(;h>s&&a<3;){let f=u.substring(0,s);u=u.substring(s,u.length),h=u.length,l[l.length]=f,a++}if(a==3){let f=l[l.length-1];l[l.length-1]=f.substring(0,f.length-4)+"..."}else l[l.length]=u;a=0}),l.forEach(u=>{i.append("tspan").attr("x",ci.rect_padding).attr("dy",ci.line_height).text(u)}),i},"newBodyNode"),OUe=o((t,e,r,n)=>{let i=e.node().getTotalLength(),a=e.node().getPointAtLength(i*.5),s="rel"+Mfe;Mfe++;let u=t.append("text").attr("class","req relationshipLabel").attr("id",s).attr("x",a.x).attr("y",a.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(n).node().getBBox();t.insert("rect","#"+s).attr("class","req reqLabelBox").attr("x",a.x-u.width/2).attr("y",a.y-u.height/2).attr("width",u.width).attr("height",u.height).attr("fill","white").attr("fill-opacity","85%")},"addEdgeLabel"),PUe=o(function(t,e,r,n,i){let a=r.edge(Bg(e.src),Bg(e.dst)),s=Ka().x(function(u){return u.x}).y(function(u){return u.y}),l=t.insert("path","#"+n).attr("class","er relationshipLine").attr("d",s(a.points)).attr("fill","none");e.type==i.db.Relationships.CONTAINS?l.attr("marker-start","url("+je.getUrl(ci.arrowMarkerAbsolute)+"#"+e.type+"_line_ending)"):(l.attr("stroke-dasharray","10,7"),l.attr("marker-end","url("+je.getUrl(ci.arrowMarkerAbsolute)+"#"+xO.ReqMarkers.ARROW+"_line_ending)")),OUe(t,l,ci,`<<${e.type}>>`)},"drawRelationshipFromLayout"),BUe=o((t,e,r)=>{t.forEach((n,i)=>{i=Bg(i),Y.info("Added new requirement: ",i);let a=r.append("g").attr("id",i),s="req-"+i,l=Ife(a,s),u=[],h=Ofe(a,i+"_title",[`<<${n.type}>>`,`${n.name}`]);u.push(h.titleNode);let f=Pfe(a,i+"_body",[`Id: ${n.id}`,`Text: ${n.text}`,`Risk: ${n.risk}`,`Verification: ${n.verifyMethod}`],h.y);u.push(f);let d=l.node().getBBox();e.setNode(i,{width:d.width,height:d.height,shape:"rect",id:i})})},"drawReqs"),FUe=o((t,e,r)=>{t.forEach((n,i)=>{let a=Bg(i),s=r.append("g").attr("id",a),l="element-"+a,u=Ife(s,l),h=[],f=Ofe(s,l+"_title",["<>",`${i}`]);h.push(f.titleNode);let d=Pfe(s,l+"_body",[`Type: ${n.type||"Not Specified"}`,`Doc Ref: ${n.docRef||"None"}`],f.y);h.push(d);let p=u.node().getBBox();e.setNode(a,{width:p.width,height:p.height,shape:"rect",id:a})})},"drawElements"),zUe=o((t,e)=>(t.forEach(function(r){let n=Bg(r.src),i=Bg(r.dst);e.setEdge(n,i,{relationship:r})}),t),"addRelationships"),GUe=o(function(t,e){e.nodes().forEach(function(r){r!==void 0&&e.node(r)!==void 0&&(t.select("#"+r),t.select("#"+r).attr("transform","translate("+(e.node(r).x-e.node(r).width/2)+","+(e.node(r).y-e.node(r).height/2)+" )"))})},"adjustEntities"),Bg=o(t=>t.replace(/\s/g,"").replace(/\./g,"_"),"elementString"),$Ue=o((t,e,r,n)=>{ci=de().requirement;let i=ci.securityLevel,a;i==="sandbox"&&(a=ze("#i"+e));let l=(i==="sandbox"?ze(a.nodes()[0].contentDocument.body):ze("body")).select(`[id='${e}']`);xO.insertLineEndings(l,ci);let u=new Mr({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:ci.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}}),h=n.db.getRequirements(),f=n.db.getElements(),d=n.db.getRelationships();BUe(h,u,l),FUe(f,u,l),zUe(d,u),Du(u),GUe(l,u),d.forEach(function(v){PUe(l,v,u,e,n)});let p=ci.rect_padding,m=l.node().getBBox(),g=m.width+p*2,y=m.height+p*2;Zr(l,y,g,ci.useMaxWidth),l.attr("viewBox",`${m.x-p} ${m.y-p} ${g} ${y}`)},"draw"),Bfe={draw:$Ue}});var zfe={};vr(zfe,{diagram:()=>VUe});var VUe,Gfe=M(()=>{"use strict";Afe();Lfe();Nfe();Ffe();VUe={parser:Cfe,db:_fe,renderer:Bfe,styles:Dfe}});var bO,Ufe,Hfe=M(()=>{"use strict";bO=function(){var t=o(function(H,q,Z,ae){for(Z=Z||{},ae=H.length;ae--;Z[H[ae]]=q);return Z},"o"),e=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,13],u=[1,14],h=[1,16],f=[1,17],d=[1,18],p=[1,24],m=[1,25],g=[1,26],y=[1,27],v=[1,28],x=[1,29],b=[1,30],w=[1,31],_=[1,32],T=[1,33],E=[1,34],L=[1,35],C=[1,36],A=[1,37],I=[1,38],D=[1,39],k=[1,41],R=[1,42],S=[1,43],O=[1,44],N=[1,45],P=[1,46],F=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,54,59,60,61,62,70],B=[4,5,16,50,52,53],$=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],z=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,54,59,60,61,62,70],W=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,54,59,60,61,62,70],j=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,54,59,60,61,62,70],K=[68,69,70],ie=[1,122],Q={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,note:54,placement:55,text2:56,over:57,actor_pair:58,links:59,link:60,properties:61,details:62,spaceList:63,",":64,left_of:65,right_of:66,signaltype:67,"+":68,"-":69,ACTOR:70,SOLID_OPEN_ARROW:71,DOTTED_OPEN_ARROW:72,SOLID_ARROW:73,BIDIRECTIONAL_SOLID_ARROW:74,DOTTED_ARROW:75,BIDIRECTIONAL_DOTTED_ARROW:76,SOLID_CROSS:77,DOTTED_CROSS:78,SOLID_POINT:79,DOTTED_POINT:80,TXT:81,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",29:"title",30:"legacy_title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"loop",37:"rect",38:"opt",39:"alt",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",54:"note",57:"over",59:"links",60:"link",61:"properties",62:"details",64:",",65:"left_of",66:"right_of",68:"+",69:"-",70:"ACTOR",71:"SOLID_OPEN_ARROW",72:"DOTTED_OPEN_ARROW",73:"SOLID_ARROW",74:"BIDIRECTIONAL_SOLID_ARROW",75:"DOTTED_ARROW",76:"BIDIRECTIONAL_DOTTED_ARROW",77:"SOLID_CROSS",78:"DOTTED_CROSS",79:"SOLID_POINT",80:"DOTTED_POINT",81:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[63,2],[63,1],[58,3],[58,1],[55,1],[55,1],[17,5],[17,5],[17,4],[22,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[56,1]],performAction:o(function(q,Z,ae,ue,ce,te,De){var oe=te.length-1;switch(ce){case 3:return ue.apply(te[oe]),te[oe];break;case 4:case 9:this.$=[];break;case 5:case 10:te[oe-1].push(te[oe]),this.$=te[oe-1];break;case 6:case 7:case 11:case 12:this.$=te[oe];break;case 8:case 13:this.$=[];break;case 15:te[oe].type="createParticipant",this.$=te[oe];break;case 16:te[oe-1].unshift({type:"boxStart",boxData:ue.parseBoxData(te[oe-2])}),te[oe-1].push({type:"boxEnd",boxText:te[oe-2]}),this.$=te[oe-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(te[oe-2]),sequenceIndexStep:Number(te[oe-1]),sequenceVisible:!0,signalType:ue.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(te[oe-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:ue.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:ue.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:ue.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:ue.LINETYPE.ACTIVE_START,actor:te[oe-1].actor};break;case 23:this.$={type:"activeEnd",signalType:ue.LINETYPE.ACTIVE_END,actor:te[oe-1].actor};break;case 29:ue.setDiagramTitle(te[oe].substring(6)),this.$=te[oe].substring(6);break;case 30:ue.setDiagramTitle(te[oe].substring(7)),this.$=te[oe].substring(7);break;case 31:this.$=te[oe].trim(),ue.setAccTitle(this.$);break;case 32:case 33:this.$=te[oe].trim(),ue.setAccDescription(this.$);break;case 34:te[oe-1].unshift({type:"loopStart",loopText:ue.parseMessage(te[oe-2]),signalType:ue.LINETYPE.LOOP_START}),te[oe-1].push({type:"loopEnd",loopText:te[oe-2],signalType:ue.LINETYPE.LOOP_END}),this.$=te[oe-1];break;case 35:te[oe-1].unshift({type:"rectStart",color:ue.parseMessage(te[oe-2]),signalType:ue.LINETYPE.RECT_START}),te[oe-1].push({type:"rectEnd",color:ue.parseMessage(te[oe-2]),signalType:ue.LINETYPE.RECT_END}),this.$=te[oe-1];break;case 36:te[oe-1].unshift({type:"optStart",optText:ue.parseMessage(te[oe-2]),signalType:ue.LINETYPE.OPT_START}),te[oe-1].push({type:"optEnd",optText:ue.parseMessage(te[oe-2]),signalType:ue.LINETYPE.OPT_END}),this.$=te[oe-1];break;case 37:te[oe-1].unshift({type:"altStart",altText:ue.parseMessage(te[oe-2]),signalType:ue.LINETYPE.ALT_START}),te[oe-1].push({type:"altEnd",signalType:ue.LINETYPE.ALT_END}),this.$=te[oe-1];break;case 38:te[oe-1].unshift({type:"parStart",parText:ue.parseMessage(te[oe-2]),signalType:ue.LINETYPE.PAR_START}),te[oe-1].push({type:"parEnd",signalType:ue.LINETYPE.PAR_END}),this.$=te[oe-1];break;case 39:te[oe-1].unshift({type:"parStart",parText:ue.parseMessage(te[oe-2]),signalType:ue.LINETYPE.PAR_OVER_START}),te[oe-1].push({type:"parEnd",signalType:ue.LINETYPE.PAR_END}),this.$=te[oe-1];break;case 40:te[oe-1].unshift({type:"criticalStart",criticalText:ue.parseMessage(te[oe-2]),signalType:ue.LINETYPE.CRITICAL_START}),te[oe-1].push({type:"criticalEnd",signalType:ue.LINETYPE.CRITICAL_END}),this.$=te[oe-1];break;case 41:te[oe-1].unshift({type:"breakStart",breakText:ue.parseMessage(te[oe-2]),signalType:ue.LINETYPE.BREAK_START}),te[oe-1].push({type:"breakEnd",optText:ue.parseMessage(te[oe-2]),signalType:ue.LINETYPE.BREAK_END}),this.$=te[oe-1];break;case 43:this.$=te[oe-3].concat([{type:"option",optionText:ue.parseMessage(te[oe-1]),signalType:ue.LINETYPE.CRITICAL_OPTION},te[oe]]);break;case 45:this.$=te[oe-3].concat([{type:"and",parText:ue.parseMessage(te[oe-1]),signalType:ue.LINETYPE.PAR_AND},te[oe]]);break;case 47:this.$=te[oe-3].concat([{type:"else",altText:ue.parseMessage(te[oe-1]),signalType:ue.LINETYPE.ALT_ELSE},te[oe]]);break;case 48:te[oe-3].draw="participant",te[oe-3].type="addParticipant",te[oe-3].description=ue.parseMessage(te[oe-1]),this.$=te[oe-3];break;case 49:te[oe-1].draw="participant",te[oe-1].type="addParticipant",this.$=te[oe-1];break;case 50:te[oe-3].draw="actor",te[oe-3].type="addParticipant",te[oe-3].description=ue.parseMessage(te[oe-1]),this.$=te[oe-3];break;case 51:te[oe-1].draw="actor",te[oe-1].type="addParticipant",this.$=te[oe-1];break;case 52:te[oe-1].type="destroyParticipant",this.$=te[oe-1];break;case 53:this.$=[te[oe-1],{type:"addNote",placement:te[oe-2],actor:te[oe-1].actor,text:te[oe]}];break;case 54:te[oe-2]=[].concat(te[oe-1],te[oe-1]).slice(0,2),te[oe-2][0]=te[oe-2][0].actor,te[oe-2][1]=te[oe-2][1].actor,this.$=[te[oe-1],{type:"addNote",placement:ue.PLACEMENT.OVER,actor:te[oe-2].slice(0,2),text:te[oe]}];break;case 55:this.$=[te[oe-1],{type:"addLinks",actor:te[oe-1].actor,text:te[oe]}];break;case 56:this.$=[te[oe-1],{type:"addALink",actor:te[oe-1].actor,text:te[oe]}];break;case 57:this.$=[te[oe-1],{type:"addProperties",actor:te[oe-1].actor,text:te[oe]}];break;case 58:this.$=[te[oe-1],{type:"addDetails",actor:te[oe-1].actor,text:te[oe]}];break;case 61:this.$=[te[oe-2],te[oe]];break;case 62:this.$=te[oe];break;case 63:this.$=ue.PLACEMENT.LEFTOF;break;case 64:this.$=ue.PLACEMENT.RIGHTOF;break;case 65:this.$=[te[oe-4],te[oe-1],{type:"addMessage",from:te[oe-4].actor,to:te[oe-1].actor,signalType:te[oe-3],msg:te[oe],activate:!0},{type:"activeStart",signalType:ue.LINETYPE.ACTIVE_START,actor:te[oe-1].actor}];break;case 66:this.$=[te[oe-4],te[oe-1],{type:"addMessage",from:te[oe-4].actor,to:te[oe-1].actor,signalType:te[oe-3],msg:te[oe]},{type:"activeEnd",signalType:ue.LINETYPE.ACTIVE_END,actor:te[oe-4].actor}];break;case 67:this.$=[te[oe-3],te[oe-1],{type:"addMessage",from:te[oe-3].actor,to:te[oe-1].actor,signalType:te[oe-2],msg:te[oe]}];break;case 68:this.$={type:"addParticipant",actor:te[oe]};break;case 69:this.$=ue.LINETYPE.SOLID_OPEN;break;case 70:this.$=ue.LINETYPE.DOTTED_OPEN;break;case 71:this.$=ue.LINETYPE.SOLID;break;case 72:this.$=ue.LINETYPE.BIDIRECTIONAL_SOLID;break;case 73:this.$=ue.LINETYPE.DOTTED;break;case 74:this.$=ue.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 75:this.$=ue.LINETYPE.SOLID_CROSS;break;case 76:this.$=ue.LINETYPE.DOTTED_CROSS;break;case 77:this.$=ue.LINETYPE.SOLID_POINT;break;case 78:this.$=ue.LINETYPE.DOTTED_POINT;break;case 79:this.$=ue.parseMessage(te[oe].trim().substring(1));break}},"anonymous"),table:[{3:1,4:e,5:r,6:n},{1:[3]},{3:5,4:e,5:r,6:n},{3:6,4:e,5:r,6:n},t([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,12:12,13:l,14:u,17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:_,41:T,43:E,44:L,46:C,50:A,52:I,53:D,54:k,59:R,60:S,61:O,62:N,70:P},t(F,[2,5]),{9:47,12:12,13:l,14:u,17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:_,41:T,43:E,44:L,46:C,50:A,52:I,53:D,54:k,59:R,60:S,61:O,62:N,70:P},t(F,[2,7]),t(F,[2,8]),t(F,[2,14]),{12:48,50:A,52:I,53:D},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,70:P},{22:55,70:P},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},t(F,[2,29]),t(F,[2,30]),{32:[1,61]},{34:[1,62]},t(F,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,70:P},{22:72,70:P},{22:73,70:P},{67:74,71:[1,75],72:[1,76],73:[1,77],74:[1,78],75:[1,79],76:[1,80],77:[1,81],78:[1,82],79:[1,83],80:[1,84]},{55:85,57:[1,86],65:[1,87],66:[1,88]},{22:89,70:P},{22:90,70:P},{22:91,70:P},{22:92,70:P},t([5,51,64,71,72,73,74,75,76,77,78,79,80,81],[2,68]),t(F,[2,6]),t(F,[2,15]),t(B,[2,9],{10:93}),t(F,[2,17]),{5:[1,95],19:[1,94]},{5:[1,96]},t(F,[2,21]),{5:[1,97]},{5:[1,98]},t(F,[2,24]),t(F,[2,25]),t(F,[2,26]),t(F,[2,27]),t(F,[2,28]),t(F,[2,31]),t(F,[2,32]),t($,i,{7:99}),t($,i,{7:100}),t($,i,{7:101}),t(z,i,{40:102,7:103}),t(W,i,{42:104,7:105}),t(W,i,{7:105,42:106}),t(j,i,{45:107,7:108}),t($,i,{7:109}),{5:[1,111],51:[1,110]},{5:[1,113],51:[1,112]},{5:[1,114]},{22:117,68:[1,115],69:[1,116],70:P},t(K,[2,69]),t(K,[2,70]),t(K,[2,71]),t(K,[2,72]),t(K,[2,73]),t(K,[2,74]),t(K,[2,75]),t(K,[2,76]),t(K,[2,77]),t(K,[2,78]),{22:118,70:P},{22:120,58:119,70:P},{70:[2,63]},{70:[2,64]},{56:121,81:ie},{56:123,81:ie},{56:124,81:ie},{56:125,81:ie},{4:[1,128],5:[1,130],11:127,12:129,16:[1,126],50:A,52:I,53:D},{5:[1,131]},t(F,[2,19]),t(F,[2,20]),t(F,[2,22]),t(F,[2,23]),{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,132],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:_,41:T,43:E,44:L,46:C,50:A,52:I,53:D,54:k,59:R,60:S,61:O,62:N,70:P},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,133],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:_,41:T,43:E,44:L,46:C,50:A,52:I,53:D,54:k,59:R,60:S,61:O,62:N,70:P},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,134],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:_,41:T,43:E,44:L,46:C,50:A,52:I,53:D,54:k,59:R,60:S,61:O,62:N,70:P},{16:[1,135]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,46],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:_,41:T,43:E,44:L,46:C,49:[1,136],50:A,52:I,53:D,54:k,59:R,60:S,61:O,62:N,70:P},{16:[1,137]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,44],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:_,41:T,43:E,44:L,46:C,48:[1,138],50:A,52:I,53:D,54:k,59:R,60:S,61:O,62:N,70:P},{16:[1,139]},{16:[1,140]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,42],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:_,41:T,43:E,44:L,46:C,47:[1,141],50:A,52:I,53:D,54:k,59:R,60:S,61:O,62:N,70:P},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,142],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:_,41:T,43:E,44:L,46:C,50:A,52:I,53:D,54:k,59:R,60:S,61:O,62:N,70:P},{15:[1,143]},t(F,[2,49]),{15:[1,144]},t(F,[2,51]),t(F,[2,52]),{22:145,70:P},{22:146,70:P},{56:147,81:ie},{56:148,81:ie},{56:149,81:ie},{64:[1,150],81:[2,62]},{5:[2,55]},{5:[2,79]},{5:[2,56]},{5:[2,57]},{5:[2,58]},t(F,[2,16]),t(B,[2,10]),{12:151,50:A,52:I,53:D},t(B,[2,12]),t(B,[2,13]),t(F,[2,18]),t(F,[2,34]),t(F,[2,35]),t(F,[2,36]),t(F,[2,37]),{15:[1,152]},t(F,[2,38]),{15:[1,153]},t(F,[2,39]),t(F,[2,40]),{15:[1,154]},t(F,[2,41]),{5:[1,155]},{5:[1,156]},{56:157,81:ie},{56:158,81:ie},{5:[2,67]},{5:[2,53]},{5:[2,54]},{22:159,70:P},t(B,[2,11]),t(z,i,{7:103,40:160}),t(W,i,{7:105,42:161}),t(j,i,{7:108,45:162}),t(F,[2,48]),t(F,[2,50]),{5:[2,65]},{5:[2,66]},{81:[2,61]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],87:[2,63],88:[2,64],121:[2,55],122:[2,79],123:[2,56],124:[2,57],125:[2,58],147:[2,67],148:[2,53],149:[2,54],157:[2,65],158:[2,66],159:[2,61],160:[2,47],161:[2,45],162:[2,43]},parseError:o(function(q,Z){if(Z.recoverable)this.trace(q);else{var ae=new Error(q);throw ae.hash=Z,ae}},"parseError"),parse:o(function(q){var Z=this,ae=[0],ue=[],ce=[null],te=[],De=this.table,oe="",ke=0,Fe=0,Be=0,Ve=2,Ge=1,He=te.slice.call(arguments,1),xe=Object.create(this.lexer),X={yy:{}};for(var fe in this.yy)Object.prototype.hasOwnProperty.call(this.yy,fe)&&(X.yy[fe]=this.yy[fe]);xe.setInput(q,X.yy),X.yy.lexer=xe,X.yy.parser=this,typeof xe.yylloc>"u"&&(xe.yylloc={});var he=xe.yylloc;te.push(he);var ge=xe.options&&xe.options.ranges;typeof X.yy.parseError=="function"?this.parseError=X.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ne(Et){ae.length=ae.length-2*Et,ce.length=ce.length-Et,te.length=te.length-Et}o(ne,"popStack");function ye(){var Et;return Et=ue.pop()||xe.lex()||Ge,typeof Et!="number"&&(Et instanceof Array&&(ue=Et,Et=ue.pop()),Et=Z.symbols_[Et]||Et),Et}o(ye,"lex");for(var U,Te,se,Ee,Ae,Pe,Me={},me,We,Re,tt;;){if(se=ae[ae.length-1],this.defaultActions[se]?Ee=this.defaultActions[se]:((U===null||typeof U>"u")&&(U=ye()),Ee=De[se]&&De[se][U]),typeof Ee>"u"||!Ee.length||!Ee[0]){var gt="";tt=[];for(me in De[se])this.terminals_[me]&&me>Ve&&tt.push("'"+this.terminals_[me]+"'");xe.showPosition?gt="Parse error on line "+(ke+1)+`: -`+xe.showPosition()+` -Expecting `+tt.join(", ")+", got '"+(this.terminals_[U]||U)+"'":gt="Parse error on line "+(ke+1)+": Unexpected "+(U==Ge?"end of input":"'"+(this.terminals_[U]||U)+"'"),this.parseError(gt,{text:xe.match,token:this.terminals_[U]||U,line:xe.yylineno,loc:he,expected:tt})}if(Ee[0]instanceof Array&&Ee.length>1)throw new Error("Parse Error: multiple actions possible at state: "+se+", token: "+U);switch(Ee[0]){case 1:ae.push(U),ce.push(xe.yytext),te.push(xe.yylloc),ae.push(Ee[1]),U=null,Te?(U=Te,Te=null):(Fe=xe.yyleng,oe=xe.yytext,ke=xe.yylineno,he=xe.yylloc,Be>0&&Be--);break;case 2:if(We=this.productions_[Ee[1]][1],Me.$=ce[ce.length-We],Me._$={first_line:te[te.length-(We||1)].first_line,last_line:te[te.length-1].last_line,first_column:te[te.length-(We||1)].first_column,last_column:te[te.length-1].last_column},ge&&(Me._$.range=[te[te.length-(We||1)].range[0],te[te.length-1].range[1]]),Pe=this.performAction.apply(Me,[oe,Fe,ke,X.yy,Ee[1],ce,te].concat(He)),typeof Pe<"u")return Pe;We&&(ae=ae.slice(0,-1*We*2),ce=ce.slice(0,-1*We),te=te.slice(0,-1*We)),ae.push(this.productions_[Ee[1]][0]),ce.push(Me.$),te.push(Me._$),Re=De[ae[ae.length-2]][ae[ae.length-1]],ae.push(Re);break;case 3:return!0}}return!0},"parse")},ee=function(){var H={EOF:1,parseError:o(function(Z,ae){if(this.yy.parser)this.yy.parser.parseError(Z,ae);else throw new Error(Z)},"parseError"),setInput:o(function(q,Z){return this.yy=Z||this.yy||{},this._input=q,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var q=this._input[0];this.yytext+=q,this.yyleng++,this.offset++,this.match+=q,this.matched+=q;var Z=q.match(/(?:\r\n?|\n).*/g);return Z?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),q},"input"),unput:o(function(q){var Z=q.length,ae=q.split(/(?:\r\n?|\n)/g);this._input=q+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Z),this.offset-=Z;var ue=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ae.length-1&&(this.yylineno-=ae.length-1);var ce=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ae?(ae.length===ue.length?this.yylloc.first_column:0)+ue[ue.length-ae.length].length-ae[0].length:this.yylloc.first_column-Z},this.options.ranges&&(this.yylloc.range=[ce[0],ce[0]+this.yyleng-Z]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(q){this.unput(this.match.slice(q))},"less"),pastInput:o(function(){var q=this.matched.substr(0,this.matched.length-this.match.length);return(q.length>20?"...":"")+q.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var q=this.match;return q.length<20&&(q+=this._input.substr(0,20-q.length)),(q.substr(0,20)+(q.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var q=this.pastInput(),Z=new Array(q.length+1).join("-");return q+this.upcomingInput()+` -`+Z+"^"},"showPosition"),test_match:o(function(q,Z){var ae,ue,ce;if(this.options.backtrack_lexer&&(ce={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ce.yylloc.range=this.yylloc.range.slice(0))),ue=q[0].match(/(?:\r\n?|\n).*/g),ue&&(this.yylineno+=ue.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ue?ue[ue.length-1].length-ue[ue.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+q[0].length},this.yytext+=q[0],this.match+=q[0],this.matches=q,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(q[0].length),this.matched+=q[0],ae=this.performAction.call(this,this.yy,this,Z,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ae)return ae;if(this._backtrack){for(var te in ce)this[te]=ce[te];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var q,Z,ae,ue;this._more||(this.yytext="",this.match="");for(var ce=this._currentRules(),te=0;teZ[0].length)){if(Z=ae,ue=te,this.options.backtrack_lexer){if(q=this.test_match(ae,ce[te]),q!==!1)return q;if(this._backtrack){Z=!1;continue}else return!1}else if(!this.options.flex)break}return Z?(q=this.test_match(Z,ce[ue]),q!==!1?q:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var Z=this.next();return Z||this.lex()},"lex"),begin:o(function(Z){this.conditionStack.push(Z)},"begin"),popState:o(function(){var Z=this.conditionStack.length-1;return Z>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Z){return Z=this.conditionStack.length-1-Math.abs(Z||0),Z>=0?this.conditionStack[Z]:"INITIAL"},"topState"),pushState:o(function(Z){this.begin(Z)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(Z,ae,ue,ce){var te=ce;switch(ue){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 19;case 7:return this.begin("LINE"),14;break;case 8:return this.begin("ID"),50;break;case 9:return this.begin("ID"),52;break;case 10:return 13;case 11:return this.begin("ID"),53;break;case 12:return ae.yytext=ae.yytext.trim(),this.begin("ALIAS"),70;break;case 13:return this.popState(),this.popState(),this.begin("LINE"),51;break;case 14:return this.popState(),this.popState(),5;break;case 15:return this.begin("LINE"),36;break;case 16:return this.begin("LINE"),37;break;case 17:return this.begin("LINE"),38;break;case 18:return this.begin("LINE"),39;break;case 19:return this.begin("LINE"),49;break;case 20:return this.begin("LINE"),41;break;case 21:return this.begin("LINE"),43;break;case 22:return this.begin("LINE"),48;break;case 23:return this.begin("LINE"),44;break;case 24:return this.begin("LINE"),47;break;case 25:return this.begin("LINE"),46;break;case 26:return this.popState(),15;break;case 27:return 16;case 28:return 65;case 29:return 66;case 30:return 59;case 31:return 60;case 32:return 61;case 33:return 62;case 34:return 57;case 35:return 54;case 36:return this.begin("ID"),21;break;case 37:return this.begin("ID"),23;break;case 38:return 29;case 39:return 30;case 40:return this.begin("acc_title"),31;break;case 41:return this.popState(),"acc_title_value";break;case 42:return this.begin("acc_descr"),33;break;case 43:return this.popState(),"acc_descr_value";break;case 44:this.begin("acc_descr_multiline");break;case 45:this.popState();break;case 46:return"acc_descr_multiline_value";case 47:return 6;case 48:return 18;case 49:return 20;case 50:return 64;case 51:return 5;case 52:return ae.yytext=ae.yytext.trim(),70;break;case 53:return 73;case 54:return 74;case 55:return 75;case 56:return 76;case 57:return 71;case 58:return 72;case 59:return 77;case 60:return 78;case 61:return 79;case 62:return 80;case 63:return 81;case 64:return 68;case 65:return 69;case 66:return 5;case 67:return"INVALID"}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:[^\<->\->:\n,;]+?([\-]*[^\<->\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\<->\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\<->\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[45,46],inclusive:!1},acc_descr:{rules:[43],inclusive:!1},acc_title:{rules:[41],inclusive:!1},ID:{rules:[2,3,12],inclusive:!1},ALIAS:{rules:[2,3,13,14],inclusive:!1},LINE:{rules:[2,3,26],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,7,8,9,10,11,15,16,17,18,19,20,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,37,38,39,40,42,44,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67],inclusive:!0}}};return H}();Q.lexer=ee;function J(){this.yy={}}return o(J,"Parser"),J.prototype=Q,Q.Parser=J,new J}();bO.parser=bO;Ufe=bO});function TO(t,e){if(t.links==null)t.links=e;else for(let r in e)t.links[r]=e[r]}function jfe(t,e){if(t.properties==null)t.properties=e;else for(let r in e)t.properties[r]=e[r]}function dHe(){$t.records.currentBox=void 0}var $t,YUe,wO,qUe,XUe,yi,jUe,KUe,QUe,ZUe,JUe,eHe,tHe,bx,rHe,nHe,iHe,aHe,sHe,Wfe,k0,oHe,lHe,cHe,xx,uHe,hHe,Yfe,qfe,fHe,Xfe,Kfe,pHe,Qfe,kO,Zfe=M(()=>{"use strict";Vt();ht();tE();fr();ki();$t=new cf(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0})),YUe=o(function(t){$t.records.boxes.push({name:t.text,wrap:t.wrap??k0(),fill:t.color,actorKeys:[]}),$t.records.currentBox=$t.records.boxes.slice(-1)[0]},"addBox"),wO=o(function(t,e,r,n){let i=$t.records.currentBox,a=$t.records.actors.get(t);if(a){if($t.records.currentBox&&a.box&&$t.records.currentBox!==a.box)throw new Error(`A same participant should only be defined in one Box: ${a.name} can't be in '${a.box.name}' and in '${$t.records.currentBox.name}' at the same time.`);if(i=a.box?a.box:$t.records.currentBox,a.box=i,a&&e===a.name&&r==null)return}if(r?.text==null&&(r={text:e,type:n}),(n==null||r.text==null)&&(r={text:e,type:n}),$t.records.actors.set(t,{box:i,name:e,description:r.text,wrap:r.wrap??k0(),prevActor:$t.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:n??"participant"}),$t.records.prevActor){let s=$t.records.actors.get($t.records.prevActor);s&&(s.nextActor=t)}$t.records.currentBox&&$t.records.currentBox.actorKeys.push(t),$t.records.prevActor=t},"addActor"),qUe=o(t=>{let e,r=0;if(!t)return 0;for(e=0;e<$t.records.messages.length;e++)$t.records.messages[e].type===xx.ACTIVE_START&&$t.records.messages[e].from===t&&r++,$t.records.messages[e].type===xx.ACTIVE_END&&$t.records.messages[e].from===t&&r--;return r},"activationCount"),XUe=o(function(t,e,r,n){$t.records.messages.push({from:t,to:e,message:r.text,wrap:r.wrap??k0(),answer:n})},"addMessage"),yi=o(function(t,e,r,n,i=!1){if(n===xx.ACTIVE_END&&qUe(t??"")<1){let s=new Error("Trying to inactivate an inactive participant ("+t+")");throw s.hash={text:"->>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},s}return $t.records.messages.push({from:t,to:e,message:r?.text??"",wrap:r?.wrap??k0(),type:n,activate:i}),!0},"addSignal"),jUe=o(function(){return $t.records.boxes.length>0},"hasAtLeastOneBox"),KUe=o(function(){return $t.records.boxes.some(t=>t.name)},"hasAtLeastOneBoxWithTitle"),QUe=o(function(){return $t.records.messages},"getMessages"),ZUe=o(function(){return $t.records.boxes},"getBoxes"),JUe=o(function(){return $t.records.actors},"getActors"),eHe=o(function(){return $t.records.createdActors},"getCreatedActors"),tHe=o(function(){return $t.records.destroyedActors},"getDestroyedActors"),bx=o(function(t){return $t.records.actors.get(t)},"getActor"),rHe=o(function(){return[...$t.records.actors.keys()]},"getActorKeys"),nHe=o(function(){$t.records.sequenceNumbersEnabled=!0},"enableSequenceNumbers"),iHe=o(function(){$t.records.sequenceNumbersEnabled=!1},"disableSequenceNumbers"),aHe=o(()=>$t.records.sequenceNumbersEnabled,"showSequenceNumbers"),sHe=o(function(t){$t.records.wrapEnabled=t},"setWrap"),Wfe=o(t=>{if(t===void 0)return{};t=t.trim();let e=/^:?wrap:/.exec(t)!==null?!0:/^:?nowrap:/.exec(t)!==null?!1:void 0;return{cleanedText:(e===void 0?t:t.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:e}},"extractWrap"),k0=o(()=>$t.records.wrapEnabled!==void 0?$t.records.wrapEnabled:de().sequence?.wrap??!1,"autoWrap"),oHe=o(function(){$t.reset(),_r()},"clear"),lHe=o(function(t){let e=t.trim(),{wrap:r,cleanedText:n}=Wfe(e),i={text:n,wrap:r};return Y.debug(`parseMessage: ${JSON.stringify(i)}`),i},"parseMessage"),cHe=o(function(t){let e=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(t),r=e?.[1]?e[1].trim():"transparent",n=e?.[2]?e[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",r)||(r="transparent",n=t.trim());else{let s=new Option().style;s.color=r,s.color!==r&&(r="transparent",n=t.trim())}let{wrap:i,cleanedText:a}=Wfe(n);return{text:a?Tr(a,de()):void 0,color:r,wrap:i}},"parseBoxData"),xx={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34},uHe={FILLED:0,OPEN:1},hHe={LEFTOF:0,RIGHTOF:1,OVER:2},Yfe=o(function(t,e,r){let n={actor:t,placement:e,message:r.text,wrap:r.wrap??k0()},i=[].concat(t,t);$t.records.notes.push(n),$t.records.messages.push({from:i[0],to:i[1],message:r.text,wrap:r.wrap??k0(),type:xx.NOTE,placement:e})},"addNote"),qfe=o(function(t,e){let r=bx(t);try{let n=Tr(e.text,de());n=n.replace(/&/g,"&"),n=n.replace(/=/g,"=");let i=JSON.parse(n);TO(r,i)}catch(n){Y.error("error while parsing actor link text",n)}},"addLinks"),fHe=o(function(t,e){let r=bx(t);try{let n={},i=Tr(e.text,de()),a=i.indexOf("@");i=i.replace(/&/g,"&"),i=i.replace(/=/g,"=");let s=i.slice(0,a-1).trim(),l=i.slice(a+1).trim();n[s]=l,TO(r,n)}catch(n){Y.error("error while parsing actor link text",n)}},"addALink");o(TO,"insertLinks");Xfe=o(function(t,e){let r=bx(t);try{let n=Tr(e.text,de()),i=JSON.parse(n);jfe(r,i)}catch(n){Y.error("error while parsing actor properties text",n)}},"addProperties");o(jfe,"insertProperties");o(dHe,"boxEnd");Kfe=o(function(t,e){let r=bx(t),n=document.getElementById(e.text);try{let i=n.innerHTML,a=JSON.parse(i);a.properties&&jfe(r,a.properties),a.links&&TO(r,a.links)}catch(i){Y.error("error while parsing actor details text",i)}},"addDetails"),pHe=o(function(t,e){if(t?.properties!==void 0)return t.properties[e]},"getActorProperty"),Qfe=o(function(t){if(Array.isArray(t))t.forEach(function(e){Qfe(e)});else switch(t.type){case"sequenceIndex":$t.records.messages.push({from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":wO(t.actor,t.actor,t.description,t.draw);break;case"createParticipant":if($t.records.actors.has(t.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");$t.records.lastCreated=t.actor,wO(t.actor,t.actor,t.description,t.draw),$t.records.createdActors.set(t.actor,$t.records.messages.length);break;case"destroyParticipant":$t.records.lastDestroyed=t.actor,$t.records.destroyedActors.set(t.actor,$t.records.messages.length);break;case"activeStart":yi(t.actor,void 0,void 0,t.signalType);break;case"activeEnd":yi(t.actor,void 0,void 0,t.signalType);break;case"addNote":Yfe(t.actor,t.placement,t.text);break;case"addLinks":qfe(t.actor,t.text);break;case"addALink":fHe(t.actor,t.text);break;case"addProperties":Xfe(t.actor,t.text);break;case"addDetails":Kfe(t.actor,t.text);break;case"addMessage":if($t.records.lastCreated){if(t.to!==$t.records.lastCreated)throw new Error("The created participant "+$t.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");$t.records.lastCreated=void 0}else if($t.records.lastDestroyed){if(t.to!==$t.records.lastDestroyed&&t.from!==$t.records.lastDestroyed)throw new Error("The destroyed participant "+$t.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");$t.records.lastDestroyed=void 0}yi(t.from,t.to,t.msg,t.signalType,t.activate);break;case"boxStart":YUe(t.boxData);break;case"boxEnd":dHe();break;case"loopStart":yi(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":yi(void 0,void 0,void 0,t.signalType);break;case"rectStart":yi(void 0,void 0,t.color,t.signalType);break;case"rectEnd":yi(void 0,void 0,void 0,t.signalType);break;case"optStart":yi(void 0,void 0,t.optText,t.signalType);break;case"optEnd":yi(void 0,void 0,void 0,t.signalType);break;case"altStart":yi(void 0,void 0,t.altText,t.signalType);break;case"else":yi(void 0,void 0,t.altText,t.signalType);break;case"altEnd":yi(void 0,void 0,void 0,t.signalType);break;case"setAccTitle":Rr(t.text);break;case"parStart":yi(void 0,void 0,t.parText,t.signalType);break;case"and":yi(void 0,void 0,t.parText,t.signalType);break;case"parEnd":yi(void 0,void 0,void 0,t.signalType);break;case"criticalStart":yi(void 0,void 0,t.criticalText,t.signalType);break;case"option":yi(void 0,void 0,t.optionText,t.signalType);break;case"criticalEnd":yi(void 0,void 0,void 0,t.signalType);break;case"breakStart":yi(void 0,void 0,t.breakText,t.signalType);break;case"breakEnd":yi(void 0,void 0,void 0,t.signalType);break}},"apply"),kO={addActor:wO,addMessage:XUe,addSignal:yi,addLinks:qfe,addDetails:Kfe,addProperties:Xfe,autoWrap:k0,setWrap:sHe,enableSequenceNumbers:nHe,disableSequenceNumbers:iHe,showSequenceNumbers:aHe,getMessages:QUe,getActors:JUe,getCreatedActors:eHe,getDestroyedActors:tHe,getActor:bx,getActorKeys:rHe,getActorProperty:pHe,getAccTitle:Pr,getBoxes:ZUe,getDiagramTitle:Jr,setDiagramTitle:ln,getConfig:o(()=>de().sequence,"getConfig"),clear:oHe,parseMessage:lHe,parseBoxData:cHe,LINETYPE:xx,ARROWTYPE:uHe,PLACEMENT:hHe,addNote:Yfe,setAccTitle:Rr,apply:Qfe,setAccDescription:Br,getAccDescription:Fr,hasAtLeastOneBox:jUe,hasAtLeastOneBoxWithTitle:KUe}});var mHe,Jfe,ede=M(()=>{"use strict";mHe=o(t=>`.actor { +`,"getStyles"),zhe=w$e});var dO={};pr(dO,{draw:()=>T$e});var T$e,$he=M(()=>{"use strict";Gt();vt();hm();Hd();Im();sr();T$e=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing requirement diagram (unified)",e);let{securityLevel:i,state:a,layout:s}=me(),l=n.db.getData(),u=gc(e,i);l.type=n.type,l.layoutAlgorithm=Jh(s),l.nodeSpacing=a?.nodeSpacing??50,l.rankSpacing=a?.rankSpacing??50,l.markers=["requirement_contains","requirement_arrow"],l.diagramId=e,await Sc(l,u);let h=8;$t.insertTitle(u,"requirementDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Cc(u,h,"requirementDiagram",a?.useMaxWidth??!0)},"draw")});var Vhe={};pr(Vhe,{diagram:()=>k$e});var k$e,Uhe=M(()=>{"use strict";Bhe();Fhe();Ghe();$he();k$e={parser:Phe,get db(){return new d6},renderer:dO,styles:zhe}});var pO,qhe,Yhe=M(()=>{"use strict";pO=function(){var t=o(function(K,X,te,J){for(te=te||{},J=K.length;J--;te[K[J]]=X);return te},"o"),e=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,13],u=[1,14],h=[1,16],f=[1,17],d=[1,18],p=[1,24],m=[1,25],g=[1,26],y=[1,27],v=[1,28],x=[1,29],b=[1,30],w=[1,31],C=[1,32],T=[1,33],E=[1,34],A=[1,35],S=[1,36],_=[1,37],I=[1,38],D=[1,39],k=[1,41],L=[1,42],R=[1,43],O=[1,44],N=[1,45],B=[1,46],F=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,54,59,60,61,62,70],P=[4,5,16,50,52,53],G=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],z=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,54,59,60,61,62,70],H=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,54,59,60,61,62,70],Q=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,54,59,60,61,62,70],j=[68,69,70],ie=[1,122],ne={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,note:54,placement:55,text2:56,over:57,actor_pair:58,links:59,link:60,properties:61,details:62,spaceList:63,",":64,left_of:65,right_of:66,signaltype:67,"+":68,"-":69,ACTOR:70,SOLID_OPEN_ARROW:71,DOTTED_OPEN_ARROW:72,SOLID_ARROW:73,BIDIRECTIONAL_SOLID_ARROW:74,DOTTED_ARROW:75,BIDIRECTIONAL_DOTTED_ARROW:76,SOLID_CROSS:77,DOTTED_CROSS:78,SOLID_POINT:79,DOTTED_POINT:80,TXT:81,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",29:"title",30:"legacy_title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"loop",37:"rect",38:"opt",39:"alt",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",54:"note",57:"over",59:"links",60:"link",61:"properties",62:"details",64:",",65:"left_of",66:"right_of",68:"+",69:"-",70:"ACTOR",71:"SOLID_OPEN_ARROW",72:"DOTTED_OPEN_ARROW",73:"SOLID_ARROW",74:"BIDIRECTIONAL_SOLID_ARROW",75:"DOTTED_ARROW",76:"BIDIRECTIONAL_DOTTED_ARROW",77:"SOLID_CROSS",78:"DOTTED_CROSS",79:"SOLID_POINT",80:"DOTTED_POINT",81:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[63,2],[63,1],[58,3],[58,1],[55,1],[55,1],[17,5],[17,5],[17,4],[22,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[56,1]],performAction:o(function(X,te,J,se,ue,Z,Se){var ce=Z.length-1;switch(ue){case 3:return se.apply(Z[ce]),Z[ce];break;case 4:case 9:this.$=[];break;case 5:case 10:Z[ce-1].push(Z[ce]),this.$=Z[ce-1];break;case 6:case 7:case 11:case 12:this.$=Z[ce];break;case 8:case 13:this.$=[];break;case 15:Z[ce].type="createParticipant",this.$=Z[ce];break;case 16:Z[ce-1].unshift({type:"boxStart",boxData:se.parseBoxData(Z[ce-2])}),Z[ce-1].push({type:"boxEnd",boxText:Z[ce-2]}),this.$=Z[ce-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(Z[ce-2]),sequenceIndexStep:Number(Z[ce-1]),sequenceVisible:!0,signalType:se.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(Z[ce-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:se.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:se.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:se.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:se.LINETYPE.ACTIVE_START,actor:Z[ce-1].actor};break;case 23:this.$={type:"activeEnd",signalType:se.LINETYPE.ACTIVE_END,actor:Z[ce-1].actor};break;case 29:se.setDiagramTitle(Z[ce].substring(6)),this.$=Z[ce].substring(6);break;case 30:se.setDiagramTitle(Z[ce].substring(7)),this.$=Z[ce].substring(7);break;case 31:this.$=Z[ce].trim(),se.setAccTitle(this.$);break;case 32:case 33:this.$=Z[ce].trim(),se.setAccDescription(this.$);break;case 34:Z[ce-1].unshift({type:"loopStart",loopText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.LOOP_START}),Z[ce-1].push({type:"loopEnd",loopText:Z[ce-2],signalType:se.LINETYPE.LOOP_END}),this.$=Z[ce-1];break;case 35:Z[ce-1].unshift({type:"rectStart",color:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.RECT_START}),Z[ce-1].push({type:"rectEnd",color:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.RECT_END}),this.$=Z[ce-1];break;case 36:Z[ce-1].unshift({type:"optStart",optText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.OPT_START}),Z[ce-1].push({type:"optEnd",optText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.OPT_END}),this.$=Z[ce-1];break;case 37:Z[ce-1].unshift({type:"altStart",altText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.ALT_START}),Z[ce-1].push({type:"altEnd",signalType:se.LINETYPE.ALT_END}),this.$=Z[ce-1];break;case 38:Z[ce-1].unshift({type:"parStart",parText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.PAR_START}),Z[ce-1].push({type:"parEnd",signalType:se.LINETYPE.PAR_END}),this.$=Z[ce-1];break;case 39:Z[ce-1].unshift({type:"parStart",parText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.PAR_OVER_START}),Z[ce-1].push({type:"parEnd",signalType:se.LINETYPE.PAR_END}),this.$=Z[ce-1];break;case 40:Z[ce-1].unshift({type:"criticalStart",criticalText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.CRITICAL_START}),Z[ce-1].push({type:"criticalEnd",signalType:se.LINETYPE.CRITICAL_END}),this.$=Z[ce-1];break;case 41:Z[ce-1].unshift({type:"breakStart",breakText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.BREAK_START}),Z[ce-1].push({type:"breakEnd",optText:se.parseMessage(Z[ce-2]),signalType:se.LINETYPE.BREAK_END}),this.$=Z[ce-1];break;case 43:this.$=Z[ce-3].concat([{type:"option",optionText:se.parseMessage(Z[ce-1]),signalType:se.LINETYPE.CRITICAL_OPTION},Z[ce]]);break;case 45:this.$=Z[ce-3].concat([{type:"and",parText:se.parseMessage(Z[ce-1]),signalType:se.LINETYPE.PAR_AND},Z[ce]]);break;case 47:this.$=Z[ce-3].concat([{type:"else",altText:se.parseMessage(Z[ce-1]),signalType:se.LINETYPE.ALT_ELSE},Z[ce]]);break;case 48:Z[ce-3].draw="participant",Z[ce-3].type="addParticipant",Z[ce-3].description=se.parseMessage(Z[ce-1]),this.$=Z[ce-3];break;case 49:Z[ce-1].draw="participant",Z[ce-1].type="addParticipant",this.$=Z[ce-1];break;case 50:Z[ce-3].draw="actor",Z[ce-3].type="addParticipant",Z[ce-3].description=se.parseMessage(Z[ce-1]),this.$=Z[ce-3];break;case 51:Z[ce-1].draw="actor",Z[ce-1].type="addParticipant",this.$=Z[ce-1];break;case 52:Z[ce-1].type="destroyParticipant",this.$=Z[ce-1];break;case 53:this.$=[Z[ce-1],{type:"addNote",placement:Z[ce-2],actor:Z[ce-1].actor,text:Z[ce]}];break;case 54:Z[ce-2]=[].concat(Z[ce-1],Z[ce-1]).slice(0,2),Z[ce-2][0]=Z[ce-2][0].actor,Z[ce-2][1]=Z[ce-2][1].actor,this.$=[Z[ce-1],{type:"addNote",placement:se.PLACEMENT.OVER,actor:Z[ce-2].slice(0,2),text:Z[ce]}];break;case 55:this.$=[Z[ce-1],{type:"addLinks",actor:Z[ce-1].actor,text:Z[ce]}];break;case 56:this.$=[Z[ce-1],{type:"addALink",actor:Z[ce-1].actor,text:Z[ce]}];break;case 57:this.$=[Z[ce-1],{type:"addProperties",actor:Z[ce-1].actor,text:Z[ce]}];break;case 58:this.$=[Z[ce-1],{type:"addDetails",actor:Z[ce-1].actor,text:Z[ce]}];break;case 61:this.$=[Z[ce-2],Z[ce]];break;case 62:this.$=Z[ce];break;case 63:this.$=se.PLACEMENT.LEFTOF;break;case 64:this.$=se.PLACEMENT.RIGHTOF;break;case 65:this.$=[Z[ce-4],Z[ce-1],{type:"addMessage",from:Z[ce-4].actor,to:Z[ce-1].actor,signalType:Z[ce-3],msg:Z[ce],activate:!0},{type:"activeStart",signalType:se.LINETYPE.ACTIVE_START,actor:Z[ce-1].actor}];break;case 66:this.$=[Z[ce-4],Z[ce-1],{type:"addMessage",from:Z[ce-4].actor,to:Z[ce-1].actor,signalType:Z[ce-3],msg:Z[ce]},{type:"activeEnd",signalType:se.LINETYPE.ACTIVE_END,actor:Z[ce-4].actor}];break;case 67:this.$=[Z[ce-3],Z[ce-1],{type:"addMessage",from:Z[ce-3].actor,to:Z[ce-1].actor,signalType:Z[ce-2],msg:Z[ce]}];break;case 68:this.$={type:"addParticipant",actor:Z[ce]};break;case 69:this.$=se.LINETYPE.SOLID_OPEN;break;case 70:this.$=se.LINETYPE.DOTTED_OPEN;break;case 71:this.$=se.LINETYPE.SOLID;break;case 72:this.$=se.LINETYPE.BIDIRECTIONAL_SOLID;break;case 73:this.$=se.LINETYPE.DOTTED;break;case 74:this.$=se.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 75:this.$=se.LINETYPE.SOLID_CROSS;break;case 76:this.$=se.LINETYPE.DOTTED_CROSS;break;case 77:this.$=se.LINETYPE.SOLID_POINT;break;case 78:this.$=se.LINETYPE.DOTTED_POINT;break;case 79:this.$=se.parseMessage(Z[ce].trim().substring(1));break}},"anonymous"),table:[{3:1,4:e,5:r,6:n},{1:[3]},{3:5,4:e,5:r,6:n},{3:6,4:e,5:r,6:n},t([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,12:12,13:l,14:u,17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:N,70:B},t(F,[2,5]),{9:47,12:12,13:l,14:u,17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:N,70:B},t(F,[2,7]),t(F,[2,8]),t(F,[2,14]),{12:48,50:_,52:I,53:D},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,70:B},{22:55,70:B},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},t(F,[2,29]),t(F,[2,30]),{32:[1,61]},{34:[1,62]},t(F,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,70:B},{22:72,70:B},{22:73,70:B},{67:74,71:[1,75],72:[1,76],73:[1,77],74:[1,78],75:[1,79],76:[1,80],77:[1,81],78:[1,82],79:[1,83],80:[1,84]},{55:85,57:[1,86],65:[1,87],66:[1,88]},{22:89,70:B},{22:90,70:B},{22:91,70:B},{22:92,70:B},t([5,51,64,71,72,73,74,75,76,77,78,79,80,81],[2,68]),t(F,[2,6]),t(F,[2,15]),t(P,[2,9],{10:93}),t(F,[2,17]),{5:[1,95],19:[1,94]},{5:[1,96]},t(F,[2,21]),{5:[1,97]},{5:[1,98]},t(F,[2,24]),t(F,[2,25]),t(F,[2,26]),t(F,[2,27]),t(F,[2,28]),t(F,[2,31]),t(F,[2,32]),t(G,i,{7:99}),t(G,i,{7:100}),t(G,i,{7:101}),t(z,i,{40:102,7:103}),t(H,i,{42:104,7:105}),t(H,i,{7:105,42:106}),t(Q,i,{45:107,7:108}),t(G,i,{7:109}),{5:[1,111],51:[1,110]},{5:[1,113],51:[1,112]},{5:[1,114]},{22:117,68:[1,115],69:[1,116],70:B},t(j,[2,69]),t(j,[2,70]),t(j,[2,71]),t(j,[2,72]),t(j,[2,73]),t(j,[2,74]),t(j,[2,75]),t(j,[2,76]),t(j,[2,77]),t(j,[2,78]),{22:118,70:B},{22:120,58:119,70:B},{70:[2,63]},{70:[2,64]},{56:121,81:ie},{56:123,81:ie},{56:124,81:ie},{56:125,81:ie},{4:[1,128],5:[1,130],11:127,12:129,16:[1,126],50:_,52:I,53:D},{5:[1,131]},t(F,[2,19]),t(F,[2,20]),t(F,[2,22]),t(F,[2,23]),{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,132],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:N,70:B},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,133],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:N,70:B},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,134],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:N,70:B},{16:[1,135]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,46],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,49:[1,136],50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:N,70:B},{16:[1,137]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,44],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,48:[1,138],50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:N,70:B},{16:[1,139]},{16:[1,140]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,42],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,47:[1,141],50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:N,70:B},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,142],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:w,39:C,41:T,43:E,44:A,46:S,50:_,52:I,53:D,54:k,59:L,60:R,61:O,62:N,70:B},{15:[1,143]},t(F,[2,49]),{15:[1,144]},t(F,[2,51]),t(F,[2,52]),{22:145,70:B},{22:146,70:B},{56:147,81:ie},{56:148,81:ie},{56:149,81:ie},{64:[1,150],81:[2,62]},{5:[2,55]},{5:[2,79]},{5:[2,56]},{5:[2,57]},{5:[2,58]},t(F,[2,16]),t(P,[2,10]),{12:151,50:_,52:I,53:D},t(P,[2,12]),t(P,[2,13]),t(F,[2,18]),t(F,[2,34]),t(F,[2,35]),t(F,[2,36]),t(F,[2,37]),{15:[1,152]},t(F,[2,38]),{15:[1,153]},t(F,[2,39]),t(F,[2,40]),{15:[1,154]},t(F,[2,41]),{5:[1,155]},{5:[1,156]},{56:157,81:ie},{56:158,81:ie},{5:[2,67]},{5:[2,53]},{5:[2,54]},{22:159,70:B},t(P,[2,11]),t(z,i,{7:103,40:160}),t(H,i,{7:105,42:161}),t(Q,i,{7:108,45:162}),t(F,[2,48]),t(F,[2,50]),{5:[2,65]},{5:[2,66]},{81:[2,61]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],87:[2,63],88:[2,64],121:[2,55],122:[2,79],123:[2,56],124:[2,57],125:[2,58],147:[2,67],148:[2,53],149:[2,54],157:[2,65],158:[2,66],159:[2,61],160:[2,47],161:[2,45],162:[2,43]},parseError:o(function(X,te){if(te.recoverable)this.trace(X);else{var J=new Error(X);throw J.hash=te,J}},"parseError"),parse:o(function(X){var te=this,J=[0],se=[],ue=[null],Z=[],Se=this.table,ce="",ae=0,Oe=0,ge=0,Ge=2,He=1,ze=Z.slice.call(arguments,1),Re=Object.create(this.lexer),Ie={yy:{}};for(var be in this.yy)Object.prototype.hasOwnProperty.call(this.yy,be)&&(Ie.yy[be]=this.yy[be]);Re.setInput(X,Ie.yy),Ie.yy.lexer=Re,Ie.yy.parser=this,typeof Re.yylloc>"u"&&(Re.yylloc={});var W=Re.yylloc;Z.push(W);var de=Re.options&&Re.options.ranges;typeof Ie.yy.parseError=="function"?this.parseError=Ie.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function re(Lt){J.length=J.length-2*Lt,ue.length=ue.length-Lt,Z.length=Z.length-Lt}o(re,"popStack");function oe(){var Lt;return Lt=se.pop()||Re.lex()||He,typeof Lt!="number"&&(Lt instanceof Array&&(se=Lt,Lt=se.pop()),Lt=te.symbols_[Lt]||Lt),Lt}o(oe,"lex");for(var V,xe,q,pe,ve,Pe,_e={},we,Ve,De,qe;;){if(q=J[J.length-1],this.defaultActions[q]?pe=this.defaultActions[q]:((V===null||typeof V>"u")&&(V=oe()),pe=Se[q]&&Se[q][V]),typeof pe>"u"||!pe.length||!pe[0]){var at="";qe=[];for(we in Se[q])this.terminals_[we]&&we>Ge&&qe.push("'"+this.terminals_[we]+"'");Re.showPosition?at="Parse error on line "+(ae+1)+`: +`+Re.showPosition()+` +Expecting `+qe.join(", ")+", got '"+(this.terminals_[V]||V)+"'":at="Parse error on line "+(ae+1)+": Unexpected "+(V==He?"end of input":"'"+(this.terminals_[V]||V)+"'"),this.parseError(at,{text:Re.match,token:this.terminals_[V]||V,line:Re.yylineno,loc:W,expected:qe})}if(pe[0]instanceof Array&&pe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+q+", token: "+V);switch(pe[0]){case 1:J.push(V),ue.push(Re.yytext),Z.push(Re.yylloc),J.push(pe[1]),V=null,xe?(V=xe,xe=null):(Oe=Re.yyleng,ce=Re.yytext,ae=Re.yylineno,W=Re.yylloc,ge>0&&ge--);break;case 2:if(Ve=this.productions_[pe[1]][1],_e.$=ue[ue.length-Ve],_e._$={first_line:Z[Z.length-(Ve||1)].first_line,last_line:Z[Z.length-1].last_line,first_column:Z[Z.length-(Ve||1)].first_column,last_column:Z[Z.length-1].last_column},de&&(_e._$.range=[Z[Z.length-(Ve||1)].range[0],Z[Z.length-1].range[1]]),Pe=this.performAction.apply(_e,[ce,Oe,ae,Ie.yy,pe[1],ue,Z].concat(ze)),typeof Pe<"u")return Pe;Ve&&(J=J.slice(0,-1*Ve*2),ue=ue.slice(0,-1*Ve),Z=Z.slice(0,-1*Ve)),J.push(this.productions_[pe[1]][0]),ue.push(_e.$),Z.push(_e._$),De=Se[J[J.length-2]][J[J.length-1]],J.push(De);break;case 3:return!0}}return!0},"parse")},le=function(){var K={EOF:1,parseError:o(function(te,J){if(this.yy.parser)this.yy.parser.parseError(te,J);else throw new Error(te)},"parseError"),setInput:o(function(X,te){return this.yy=te||this.yy||{},this._input=X,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var X=this._input[0];this.yytext+=X,this.yyleng++,this.offset++,this.match+=X,this.matched+=X;var te=X.match(/(?:\r\n?|\n).*/g);return te?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),X},"input"),unput:o(function(X){var te=X.length,J=X.split(/(?:\r\n?|\n)/g);this._input=X+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-te),this.offset-=te;var se=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),J.length-1&&(this.yylineno-=J.length-1);var ue=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:J?(J.length===se.length?this.yylloc.first_column:0)+se[se.length-J.length].length-J[0].length:this.yylloc.first_column-te},this.options.ranges&&(this.yylloc.range=[ue[0],ue[0]+this.yyleng-te]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(X){this.unput(this.match.slice(X))},"less"),pastInput:o(function(){var X=this.matched.substr(0,this.matched.length-this.match.length);return(X.length>20?"...":"")+X.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var X=this.match;return X.length<20&&(X+=this._input.substr(0,20-X.length)),(X.substr(0,20)+(X.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var X=this.pastInput(),te=new Array(X.length+1).join("-");return X+this.upcomingInput()+` +`+te+"^"},"showPosition"),test_match:o(function(X,te){var J,se,ue;if(this.options.backtrack_lexer&&(ue={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ue.yylloc.range=this.yylloc.range.slice(0))),se=X[0].match(/(?:\r\n?|\n).*/g),se&&(this.yylineno+=se.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:se?se[se.length-1].length-se[se.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+X[0].length},this.yytext+=X[0],this.match+=X[0],this.matches=X,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(X[0].length),this.matched+=X[0],J=this.performAction.call(this,this.yy,this,te,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),J)return J;if(this._backtrack){for(var Z in ue)this[Z]=ue[Z];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var X,te,J,se;this._more||(this.yytext="",this.match="");for(var ue=this._currentRules(),Z=0;Zte[0].length)){if(te=J,se=Z,this.options.backtrack_lexer){if(X=this.test_match(J,ue[Z]),X!==!1)return X;if(this._backtrack){te=!1;continue}else return!1}else if(!this.options.flex)break}return te?(X=this.test_match(te,ue[se]),X!==!1?X:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var te=this.next();return te||this.lex()},"lex"),begin:o(function(te){this.conditionStack.push(te)},"begin"),popState:o(function(){var te=this.conditionStack.length-1;return te>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(te){return te=this.conditionStack.length-1-Math.abs(te||0),te>=0?this.conditionStack[te]:"INITIAL"},"topState"),pushState:o(function(te){this.begin(te)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(te,J,se,ue){var Z=ue;switch(se){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 19;case 7:return this.begin("LINE"),14;break;case 8:return this.begin("ID"),50;break;case 9:return this.begin("ID"),52;break;case 10:return 13;case 11:return this.begin("ID"),53;break;case 12:return J.yytext=J.yytext.trim(),this.begin("ALIAS"),70;break;case 13:return this.popState(),this.popState(),this.begin("LINE"),51;break;case 14:return this.popState(),this.popState(),5;break;case 15:return this.begin("LINE"),36;break;case 16:return this.begin("LINE"),37;break;case 17:return this.begin("LINE"),38;break;case 18:return this.begin("LINE"),39;break;case 19:return this.begin("LINE"),49;break;case 20:return this.begin("LINE"),41;break;case 21:return this.begin("LINE"),43;break;case 22:return this.begin("LINE"),48;break;case 23:return this.begin("LINE"),44;break;case 24:return this.begin("LINE"),47;break;case 25:return this.begin("LINE"),46;break;case 26:return this.popState(),15;break;case 27:return 16;case 28:return 65;case 29:return 66;case 30:return 59;case 31:return 60;case 32:return 61;case 33:return 62;case 34:return 57;case 35:return 54;case 36:return this.begin("ID"),21;break;case 37:return this.begin("ID"),23;break;case 38:return 29;case 39:return 30;case 40:return this.begin("acc_title"),31;break;case 41:return this.popState(),"acc_title_value";break;case 42:return this.begin("acc_descr"),33;break;case 43:return this.popState(),"acc_descr_value";break;case 44:this.begin("acc_descr_multiline");break;case 45:this.popState();break;case 46:return"acc_descr_multiline_value";case 47:return 6;case 48:return 18;case 49:return 20;case 50:return 64;case 51:return 5;case 52:return J.yytext=J.yytext.trim(),70;break;case 53:return 73;case 54:return 74;case 55:return 75;case 56:return 76;case 57:return 71;case 58:return 72;case 59:return 77;case 60:return 78;case 61:return 79;case 62:return 80;case 63:return 81;case 64:return 68;case 65:return 69;case 66:return 5;case 67:return"INVALID"}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:[^\<->\->:\n,;]+?([\-]*[^\<->\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\<->\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\<->\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[45,46],inclusive:!1},acc_descr:{rules:[43],inclusive:!1},acc_title:{rules:[41],inclusive:!1},ID:{rules:[2,3,12],inclusive:!1},ALIAS:{rules:[2,3,13,14],inclusive:!1},LINE:{rules:[2,3,26],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,7,8,9,10,11,15,16,17,18,19,20,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,37,38,39,40,42,44,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67],inclusive:!0}}};return K}();ne.lexer=le;function he(){this.yy={}}return o(he,"Parser"),he.prototype=ne,ne.Parser=he,new he}();pO.parser=pO;qhe=pO});var A$e,_$e,D$e,p6,Xhe=M(()=>{"use strict";Gt();vt();qE();gr();ki();A$e={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34},_$e={FILLED:0,OPEN:1},D$e={LEFTOF:0,RIGHTOF:1,OVER:2},p6=class{constructor(){this.state=new hf(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0}));this.setAccTitle=Mr;this.setAccDescription=Pr;this.setDiagramTitle=Zr;this.getAccTitle=Or;this.getAccDescription=Br;this.getDiagramTitle=Fr;this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap(me().wrap),this.LINETYPE=A$e,this.ARROWTYPE=_$e,this.PLACEMENT=D$e}static{o(this,"SequenceDB")}addBox(e){this.state.records.boxes.push({name:e.text,wrap:e.wrap??this.autoWrap(),fill:e.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(e,r,n,i){let a=this.state.records.currentBox,s=this.state.records.actors.get(e);if(s){if(this.state.records.currentBox&&s.box&&this.state.records.currentBox!==s.box)throw new Error(`A same participant should only be defined in one Box: ${s.name} can't be in '${s.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(a=s.box?s.box:this.state.records.currentBox,s.box=a,s&&r===s.name&&n==null)return}if(n?.text==null&&(n={text:r,type:i}),(i==null||n.text==null)&&(n={text:r,type:i}),this.state.records.actors.set(e,{box:a,name:r,description:n.text,wrap:n.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:i??"participant"}),this.state.records.prevActor){let l=this.state.records.actors.get(this.state.records.prevActor);l&&(l.nextActor=e)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(e),this.state.records.prevActor=e}activationCount(e){let r,n=0;if(!e)return 0;for(r=0;r>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},l}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:e,to:r,message:n?.text??"",wrap:n?.wrap??this.autoWrap(),type:i,activate:a}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some(e=>e.name)}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(e){return this.state.records.actors.get(e)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(e){this.state.records.wrapEnabled=e}extractWrap(e){if(e===void 0)return{};e=e.trim();let r=/^:?wrap:/.exec(e)!==null?!0:/^:?nowrap:/.exec(e)!==null?!1:void 0;return{cleanedText:(r===void 0?e:e.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:r}}autoWrap(){return this.state.records.wrapEnabled!==void 0?this.state.records.wrapEnabled:me().sequence?.wrap??!1}clear(){this.state.reset(),Dr()}parseMessage(e){let r=e.trim(),{wrap:n,cleanedText:i}=this.extractWrap(r),a={text:i,wrap:n};return Y.debug(`parseMessage: ${JSON.stringify(a)}`),a}parseBoxData(e){let r=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(e),n=r?.[1]?r[1].trim():"transparent",i=r?.[2]?r[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",n)||(n="transparent",i=e.trim());else{let l=new Option().style;l.color=n,l.color!==n&&(n="transparent",i=e.trim())}let{wrap:a,cleanedText:s}=this.extractWrap(i);return{text:s?Tr(s,me()):void 0,color:n,wrap:a}}addNote(e,r,n){let i={actor:e,placement:r,message:n.text,wrap:n.wrap??this.autoWrap()},a=[].concat(e,e);this.state.records.notes.push(i),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:a[0],to:a[1],message:n.text,wrap:n.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:r})}addLinks(e,r){let n=this.getActor(e);try{let i=Tr(r.text,me());i=i.replace(/=/g,"="),i=i.replace(/&/g,"&");let a=JSON.parse(i);this.insertLinks(n,a)}catch(i){Y.error("error while parsing actor link text",i)}}addALink(e,r){let n=this.getActor(e);try{let i={},a=Tr(r.text,me()),s=a.indexOf("@");a=a.replace(/=/g,"="),a=a.replace(/&/g,"&");let l=a.slice(0,s-1).trim(),u=a.slice(s+1).trim();i[l]=u,this.insertLinks(n,i)}catch(i){Y.error("error while parsing actor link text",i)}}insertLinks(e,r){if(e.links==null)e.links=r;else for(let n in r)e.links[n]=r[n]}addProperties(e,r){let n=this.getActor(e);try{let i=Tr(r.text,me()),a=JSON.parse(i);this.insertProperties(n,a)}catch(i){Y.error("error while parsing actor properties text",i)}}insertProperties(e,r){if(e.properties==null)e.properties=r;else for(let n in r)e.properties[n]=r[n]}boxEnd(){this.state.records.currentBox=void 0}addDetails(e,r){let n=this.getActor(e),i=document.getElementById(r.text);try{let a=i.innerHTML,s=JSON.parse(a);s.properties&&this.insertProperties(n,s.properties),s.links&&this.insertLinks(n,s.links)}catch(a){Y.error("error while parsing actor details text",a)}}getActorProperty(e,r){if(e?.properties!==void 0)return e.properties[r]}apply(e){if(Array.isArray(e))e.forEach(r=>{this.apply(r)});else switch(e.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:e.sequenceIndex,step:e.sequenceIndexStep,visible:e.sequenceVisible},wrap:!1,type:e.signalType});break;case"addParticipant":this.addActor(e.actor,e.actor,e.description,e.draw);break;case"createParticipant":if(this.state.records.actors.has(e.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");this.state.records.lastCreated=e.actor,this.addActor(e.actor,e.actor,e.description,e.draw),this.state.records.createdActors.set(e.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=e.actor,this.state.records.destroyedActors.set(e.actor,this.state.records.messages.length);break;case"activeStart":this.addSignal(e.actor,void 0,void 0,e.signalType);break;case"activeEnd":this.addSignal(e.actor,void 0,void 0,e.signalType);break;case"addNote":this.addNote(e.actor,e.placement,e.text);break;case"addLinks":this.addLinks(e.actor,e.text);break;case"addALink":this.addALink(e.actor,e.text);break;case"addProperties":this.addProperties(e.actor,e.text);break;case"addDetails":this.addDetails(e.actor,e.text);break;case"addMessage":if(this.state.records.lastCreated){if(e.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(e.to!==this.state.records.lastDestroyed&&e.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(e.from,e.to,e.msg,e.signalType,e.activate);break;case"boxStart":this.addBox(e.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,e.loopText,e.signalType);break;case"loopEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"rectStart":this.addSignal(void 0,void 0,e.color,e.signalType);break;case"rectEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"optStart":this.addSignal(void 0,void 0,e.optText,e.signalType);break;case"optEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"altStart":this.addSignal(void 0,void 0,e.altText,e.signalType);break;case"else":this.addSignal(void 0,void 0,e.altText,e.signalType);break;case"altEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"setAccTitle":Mr(e.text);break;case"parStart":this.addSignal(void 0,void 0,e.parText,e.signalType);break;case"and":this.addSignal(void 0,void 0,e.parText,e.signalType);break;case"parEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,e.criticalText,e.signalType);break;case"option":this.addSignal(void 0,void 0,e.optionText,e.signalType);break;case"criticalEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"breakStart":this.addSignal(void 0,void 0,e.breakText,e.signalType);break;case"breakEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break}}getConfig(){return me().sequence}}});var L$e,jhe,Khe=M(()=>{"use strict";L$e=o(t=>`.actor { stroke: ${t.actorBorder}; fill: ${t.actorBkg}; } @@ -1311,12 +1359,12 @@ Expecting `+tt.join(", ")+", got '"+(this.terminals_[U]||U)+"'":gt="Parse error fill: ${t.actorBkg}; stroke-width: 2px; } -`,"getStyles"),Jfe=mHe});var EO,pf,rde,nde,gHe,tde,SO,yHe,vHe,wx,E0,ide,Fc,CO,xHe,bHe,wHe,THe,kHe,EHe,SHe,ade,CHe,AHe,_He,LHe,DHe,NHe,RHe,sde,MHe,AO,IHe,ui,ode=M(()=>{"use strict";fr();qy();hr();EO=ka(Fp(),1);Ua();pf=18*2,rde="actor-top",nde="actor-bottom",gHe="actor-box",tde="actor-man",SO=o(function(t,e){return md(t,e)},"drawRect"),yHe=o(function(t,e,r,n,i){if(e.links===void 0||e.links===null||Object.keys(e.links).length===0)return{height:0,width:0};let a=e.links,s=e.actorCnt,l=e.rectData;var u="none";i&&(u="block !important");let h=t.append("g");h.attr("id","actor"+s+"_popup"),h.attr("class","actorPopupMenu"),h.attr("display",u);var f="";l.class!==void 0&&(f=" "+l.class);let d=l.width>r?l.width:r,p=h.append("rect");if(p.attr("class","actorPopupMenuPanel"+f),p.attr("x",l.x),p.attr("y",l.height),p.attr("fill",l.fill),p.attr("stroke",l.stroke),p.attr("width",d),p.attr("height",l.height),p.attr("rx",l.rx),p.attr("ry",l.ry),a!=null){var m=20;for(let v in a){var g=h.append("a"),y=(0,EO.sanitizeUrl)(a[v]);g.attr("xlink:href",y),g.attr("target","_blank"),IHe(n)(v,g,l.x+10,l.height+m,d,20,{class:"actor"},n),m+=30}}return p.attr("height",m),{height:l.height+m,width:d}},"drawPopup"),vHe=o(function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),wx=o(async function(t,e,r=null){let n=t.append("foreignObject"),i=await hh(e.text,Sr()),s=n.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(i).node().getBoundingClientRect();if(n.attr("height",Math.round(s.height)).attr("width",Math.round(s.width)),e.class==="noteText"){let l=t.node().firstChild;l.setAttribute("height",s.height+2*e.textMargin);let u=l.getBBox();n.attr("x",Math.round(u.x+u.width/2-s.width/2)).attr("y",Math.round(u.y+u.height/2-s.height/2))}else if(r){let{startx:l,stopx:u,starty:h}=r;if(l>u){let f=l;l=u,u=f}n.attr("x",Math.round(l+Math.abs(l-u)/2-s.width/2)),e.class==="loopText"?n.attr("y",Math.round(h)):n.attr("y",Math.round(h-s.height))}return[n]},"drawKatex"),E0=o(function(t,e){let r=0,n=0,i=e.text.split(je.lineBreakRegex),[a,s]=Fo(e.fontSize),l=[],u=0,h=o(()=>e.y,"yfunc");if(e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0)switch(e.valign){case"top":case"start":h=o(()=>Math.round(e.y+e.textMargin),"yfunc");break;case"middle":case"center":h=o(()=>Math.round(e.y+(r+n+e.textMargin)/2),"yfunc");break;case"bottom":case"end":h=o(()=>Math.round(e.y+(r+n+2*e.textMargin)-e.textMargin),"yfunc");break}if(e.anchor!==void 0&&e.textMargin!==void 0&&e.width!==void 0)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle";break}for(let[f,d]of i.entries()){e.textMargin!==void 0&&e.textMargin===0&&a!==void 0&&(u=f*a);let p=t.append("text");p.attr("x",e.x),p.attr("y",h()),e.anchor!==void 0&&p.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),e.fontFamily!==void 0&&p.style("font-family",e.fontFamily),s!==void 0&&p.style("font-size",s),e.fontWeight!==void 0&&p.style("font-weight",e.fontWeight),e.fill!==void 0&&p.attr("fill",e.fill),e.class!==void 0&&p.attr("class",e.class),e.dy!==void 0?p.attr("dy",e.dy):u!==0&&p.attr("dy",u);let m=d||K_;if(e.tspan){let g=p.append("tspan");g.attr("x",e.x),e.fill!==void 0&&g.attr("fill",e.fill),g.text(m)}else p.text(m);e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0&&(n+=(p._groups||p)[0][0].getBBox().height,r=n),l.push(p)}return l},"drawText"),ide=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=t.append("polygon");return n.attr("points",r(e.x,e.y,e.width,e.height,7)),n.attr("class","labelBox"),e.y=e.y+e.height/2,E0(t,e),n},"drawLabel"),Fc=-1,CO=o((t,e,r,n)=>{t.select&&r.forEach(i=>{let a=e.get(i),s=t.select("#actor"+a.actorCnt);!n.mirrorActors&&a.stopy?s.attr("y2",a.stopy+a.height/2):n.mirrorActors&&s.attr("y2",a.stopy)})},"fixLifeLineHeights"),xHe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,l=t.append("g").lower();var u=l;n||(Fc++,Object.keys(e.links||{}).length&&!r.forceMenus&&u.attr("onclick",vHe(`actor${Fc}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+Fc).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),u=l.append("g"),e.actorCnt=Fc,e.links!=null&&u.attr("id","root-"+Fc));let h=Sl();var f="actor";e.properties?.class?f=e.properties.class:h.fill="#eaeaea",n?f+=` ${nde}`:f+=` ${rde}`,h.x=e.x,h.y=i,h.width=e.width,h.height=e.height,h.class=f,h.rx=3,h.ry=3,h.name=e.name;let d=SO(u,h);if(e.rectData=h,e.properties?.icon){let m=e.properties.icon.trim();m.charAt(0)==="@"?RY(u,h.x+h.width-20,h.y+10,m.substr(1)):NY(u,h.x+h.width-20,h.y+10,m)}AO(r,pi(e.description))(e.description,u,h.x,h.y,h.width,h.height,{class:`actor ${gHe}`},r);let p=e.height;if(d.node){let m=d.node().getBBox();e.height=m.height,p=m.height}return p},"drawActorTypeParticipant"),bHe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+80,l=t.append("g").lower();n||(Fc++,l.append("line").attr("id","actor"+Fc).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=Fc);let u=t.append("g"),h=tde;n?h+=` ${nde}`:h+=` ${rde}`,u.attr("class",h),u.attr("name",e.name);let f=Sl();f.x=e.x,f.y=i,f.fill="#eaeaea",f.width=e.width,f.height=e.height,f.class="actor",f.rx=3,f.ry=3,u.append("line").attr("id","actor-man-torso"+Fc).attr("x1",a).attr("y1",i+25).attr("x2",a).attr("y2",i+45),u.append("line").attr("id","actor-man-arms"+Fc).attr("x1",a-pf/2).attr("y1",i+33).attr("x2",a+pf/2).attr("y2",i+33),u.append("line").attr("x1",a-pf/2).attr("y1",i+60).attr("x2",a).attr("y2",i+45),u.append("line").attr("x1",a).attr("y1",i+45).attr("x2",a+pf/2-2).attr("y2",i+60);let d=u.append("circle");d.attr("cx",e.x+e.width/2),d.attr("cy",i+10),d.attr("r",15),d.attr("width",e.width),d.attr("height",e.height);let p=u.node().getBBox();return e.height=p.height,AO(r,pi(e.description))(e.description,u,f.x,f.y+35,f.width,f.height,{class:`actor ${tde}`},r),e.height},"drawActorTypeActor"),wHe=o(async function(t,e,r,n){switch(e.type){case"actor":return await bHe(t,e,r,n);case"participant":return await xHe(t,e,r,n)}},"drawActor"),THe=o(function(t,e,r){let i=t.append("g");ade(i,e),e.name&&AO(r)(e.name,i,e.x,e.y+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},r),i.lower()},"drawBox"),kHe=o(function(t){return t.append("g")},"anchorElement"),EHe=o(function(t,e,r,n,i){let a=Sl(),s=e.anchored;a.x=e.startx,a.y=e.starty,a.class="activation"+i%3,a.width=e.stopx-e.startx,a.height=r-e.starty,SO(s,a)},"drawActivation"),SHe=o(async function(t,e,r,n){let{boxMargin:i,boxTextMargin:a,labelBoxHeight:s,labelBoxWidth:l,messageFontFamily:u,messageFontSize:h,messageFontWeight:f}=n,d=t.append("g"),p=o(function(y,v,x,b){return d.append("line").attr("x1",y).attr("y1",v).attr("x2",x).attr("y2",b).attr("class","loopLine")},"drawLoopLine");p(e.startx,e.starty,e.stopx,e.starty),p(e.stopx,e.starty,e.stopx,e.stopy),p(e.startx,e.stopy,e.stopx,e.stopy),p(e.startx,e.starty,e.startx,e.stopy),e.sections!==void 0&&e.sections.forEach(function(y){p(e.startx,y.y,e.stopx,y.y).style("stroke-dasharray","3, 3")});let m=Yy();m.text=r,m.x=e.startx,m.y=e.starty,m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.anchor="middle",m.valign="middle",m.tspan=!1,m.width=l||50,m.height=s||20,m.textMargin=a,m.class="labelText",ide(d,m),m=sde(),m.text=e.title,m.x=e.startx+l/2+(e.stopx-e.startx)/2,m.y=e.starty+i+a,m.anchor="middle",m.valign="middle",m.textMargin=a,m.class="loopText",m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.wrap=!0;let g=pi(m.text)?await wx(d,m,e):E0(d,m);if(e.sectionTitles!==void 0){for(let[y,v]of Object.entries(e.sectionTitles))if(v.message){m.text=v.message,m.x=e.startx+(e.stopx-e.startx)/2,m.y=e.sections[y].y+i+a,m.class="loopText",m.anchor="middle",m.valign="middle",m.tspan=!1,m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.wrap=e.wrap,pi(m.text)?(e.starty=e.sections[y].y,await wx(d,m,e)):E0(d,m);let x=Math.round(g.map(b=>(b._groups||b)[0][0].getBBox().height).reduce((b,w)=>b+w));e.sections[y].height+=x-(i+a)}}return e.height=Math.round(e.stopy-e.starty),d},"drawLoop"),ade=o(function(t,e){Y3(t,e)},"drawBackgroundRect"),CHe=o(function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),AHe=o(function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),_He=o(function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),LHe=o(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),DHe=o(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),NHe=o(function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertSequenceNumber"),RHe=o(function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},"insertArrowCrossHead"),sde=o(function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},"getTextObj"),MHe=o(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),AO=function(){function t(a,s,l,u,h,f,d){let p=s.append("text").attr("x",l+h/2).attr("y",u+f/2+5).style("text-anchor","middle").text(a);i(p,d)}o(t,"byText");function e(a,s,l,u,h,f,d,p){let{actorFontSize:m,actorFontFamily:g,actorFontWeight:y}=p,[v,x]=Fo(m),b=a.split(je.lineBreakRegex);for(let w=0;w{let s=S0(Le),l=a.actorKeys.reduce((f,d)=>f+=t.get(d).width+(t.get(d).margin||0),0);l-=2*Le.boxTextMargin,a.wrap&&(a.name=Ut.wrapLabel(a.name,l-2*Le.wrapPadding,s));let u=Ut.calculateTextDimensions(a.name,s);i=je.getMax(u.height,i);let h=je.getMax(l,u.width+2*Le.wrapPadding);if(a.margin=Le.boxTextMargin,la.textMaxHeight=i),je.getMax(n,Le.height)}var Le,nt,OHe,S0,Fg,_O,BHe,FHe,LO,cde,ude,TE,lde,GHe,VHe,HHe,WHe,YHe,hde,fde=M(()=>{"use strict";mr();ode();ht();fr();qy();Vt();ip();hr();ni();Le={},nt={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:o(function(){return Math.max.apply(null,this.actors.length===0?[0]:this.actors.map(t=>t.height||0))+(this.loops.length===0?0:this.loops.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.messages.length===0?0:this.messages.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.notes.length===0?0:this.notes.map(t=>t.height||0).reduce((t,e)=>t+e))},"getHeight"),clear:o(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:o(function(t){this.boxes.push(t)},"addBox"),addActor:o(function(t){this.actors.push(t)},"addActor"),addLoop:o(function(t){this.loops.push(t)},"addLoop"),addMessage:o(function(t){this.messages.push(t)},"addMessage"),addNote:o(function(t){this.notes.push(t)},"addNote"),lastActor:o(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:o(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:o(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:o(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:o(function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,ude(de())},"init"),updateVal:o(function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:o(function(t,e,r,n){let i=this,a=0;function s(l){return o(function(h){a++;let f=i.sequenceItems.length-a+1;i.updateVal(h,"starty",e-f*Le.boxMargin,Math.min),i.updateVal(h,"stopy",n+f*Le.boxMargin,Math.max),i.updateVal(nt.data,"startx",t-f*Le.boxMargin,Math.min),i.updateVal(nt.data,"stopx",r+f*Le.boxMargin,Math.max),l!=="activation"&&(i.updateVal(h,"startx",t-f*Le.boxMargin,Math.min),i.updateVal(h,"stopx",r+f*Le.boxMargin,Math.max),i.updateVal(nt.data,"starty",e-f*Le.boxMargin,Math.min),i.updateVal(nt.data,"stopy",n+f*Le.boxMargin,Math.max))},"updateItemBounds")}o(s,"updateFn"),this.sequenceItems.forEach(s()),this.activations.forEach(s("activation"))},"updateBounds"),insert:o(function(t,e,r,n){let i=je.getMin(t,r),a=je.getMax(t,r),s=je.getMin(e,n),l=je.getMax(e,n);this.updateVal(nt.data,"startx",i,Math.min),this.updateVal(nt.data,"starty",s,Math.min),this.updateVal(nt.data,"stopx",a,Math.max),this.updateVal(nt.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),newActivation:o(function(t,e,r){let n=r.get(t.from),i=TE(t.from).length||0,a=n.x+n.width/2+(i-1)*Le.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+Le.activationWidth,stopy:void 0,actor:t.from,anchored:ui.anchorElement(e)})},"newActivation"),endActivation:o(function(t){let e=this.activations.map(function(r){return r.actor}).lastIndexOf(t.from);return this.activations.splice(e,1)[0]},"endActivation"),createLoop:o(function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},"createLoop"),newLoop:o(function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},"newLoop"),endLoop:o(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:o(function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},"isLoopOverlap"),addSectionToLoop:o(function(t){let e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:nt.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},"addSectionToLoop"),saveVerticalPos:o(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:o(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:o(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=je.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return{bounds:this.data,models:this.models}},"getBounds")},OHe=o(async function(t,e){nt.bumpVerticalPos(Le.boxMargin),e.height=Le.boxMargin,e.starty=nt.getVerticalPos();let r=Sl();r.x=e.startx,r.y=e.starty,r.width=e.width||Le.width,r.class="note";let n=t.append("g"),i=ui.drawRect(n,r),a=Yy();a.x=e.startx,a.y=e.starty,a.width=r.width,a.dy="1em",a.text=e.message,a.class="noteText",a.fontFamily=Le.noteFontFamily,a.fontSize=Le.noteFontSize,a.fontWeight=Le.noteFontWeight,a.anchor=Le.noteAlign,a.textMargin=Le.noteMargin,a.valign="center";let s=pi(a.text)?await wx(n,a):E0(n,a),l=Math.round(s.map(u=>(u._groups||u)[0][0].getBBox().height).reduce((u,h)=>u+h));i.attr("height",l+2*Le.noteMargin),e.height+=l+2*Le.noteMargin,nt.bumpVerticalPos(l+2*Le.noteMargin),e.stopy=e.starty+l+2*Le.noteMargin,e.stopx=e.startx+r.width,nt.insert(e.startx,e.starty,e.stopx,e.stopy),nt.models.addNote(e)},"drawNote"),S0=o(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont"),Fg=o(t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),"noteFont"),_O=o(t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}),"actorFont");o(PHe,"boundMessage");BHe=o(async function(t,e,r,n){let{startx:i,stopx:a,starty:s,message:l,type:u,sequenceIndex:h,sequenceVisible:f}=e,d=Ut.calculateTextDimensions(l,S0(Le)),p=Yy();p.x=i,p.y=s+10,p.width=a-i,p.class="messageText",p.dy="1em",p.text=l,p.fontFamily=Le.messageFontFamily,p.fontSize=Le.messageFontSize,p.fontWeight=Le.messageFontWeight,p.anchor=Le.messageAlign,p.valign="center",p.textMargin=Le.wrapPadding,p.tspan=!1,pi(p.text)?await wx(t,p,{startx:i,stopx:a,starty:r}):E0(t,p);let m=d.width,g;i===a?Le.rightAngles?g=t.append("path").attr("d",`M ${i},${r} H ${i+je.getMax(Le.width/2,m/2)} V ${r+25} H ${i}`):g=t.append("path").attr("d","M "+i+","+r+" C "+(i+60)+","+(r-10)+" "+(i+60)+","+(r+30)+" "+i+","+(r+20)):(g=t.append("line"),g.attr("x1",i),g.attr("y1",r),g.attr("x2",a),g.attr("y2",r)),u===n.db.LINETYPE.DOTTED||u===n.db.LINETYPE.DOTTED_CROSS||u===n.db.LINETYPE.DOTTED_POINT||u===n.db.LINETYPE.DOTTED_OPEN||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED?(g.style("stroke-dasharray","3, 3"),g.attr("class","messageLine1")):g.attr("class","messageLine0");let y="";Le.arrowMarkerAbsolute&&(y=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,y=y.replace(/\(/g,"\\("),y=y.replace(/\)/g,"\\)")),g.attr("stroke-width",2),g.attr("stroke","none"),g.style("fill","none"),(u===n.db.LINETYPE.SOLID||u===n.db.LINETYPE.DOTTED)&&g.attr("marker-end","url("+y+"#arrowhead)"),(u===n.db.LINETYPE.BIDIRECTIONAL_SOLID||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(g.attr("marker-start","url("+y+"#arrowhead)"),g.attr("marker-end","url("+y+"#arrowhead)")),(u===n.db.LINETYPE.SOLID_POINT||u===n.db.LINETYPE.DOTTED_POINT)&&g.attr("marker-end","url("+y+"#filled-head)"),(u===n.db.LINETYPE.SOLID_CROSS||u===n.db.LINETYPE.DOTTED_CROSS)&&g.attr("marker-end","url("+y+"#crosshead)"),(f||Le.showSequenceNumbers)&&(g.attr("marker-start","url("+y+"#sequencenumber)"),t.append("text").attr("x",i).attr("y",r+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(h))},"drawMessage"),FHe=o(function(t,e,r,n,i,a,s){let l=0,u=0,h,f=0;for(let d of n){let p=e.get(d),m=p.box;h&&h!=m&&(s||nt.models.addBox(h),u+=Le.boxMargin+h.margin),m&&m!=h&&(s||(m.x=l+u,m.y=i),u+=m.margin),p.width=p.width||Le.width,p.height=je.getMax(p.height||Le.height,Le.height),p.margin=p.margin||Le.actorMargin,f=je.getMax(f,p.height),r.get(p.name)&&(u+=p.width/2),p.x=l+u,p.starty=nt.getVerticalPos(),nt.insert(p.x,i,p.x+p.width,p.height),l+=p.width+u,p.box&&(p.box.width=l+m.margin-p.box.x),u=p.margin,h=p.box,nt.models.addActor(p)}h&&!s&&nt.models.addBox(h),nt.bumpVerticalPos(f)},"addActorRenderingData"),LO=o(async function(t,e,r,n){if(n){let i=0;nt.bumpVerticalPos(Le.boxMargin*2);for(let a of r){let s=e.get(a);s.stopy||(s.stopy=nt.getVerticalPos());let l=await ui.drawActor(t,s,Le,!0);i=je.getMax(i,l)}nt.bumpVerticalPos(i+Le.boxMargin)}else for(let i of r){let a=e.get(i);await ui.drawActor(t,a,Le,!1)}},"drawActors"),cde=o(function(t,e,r,n){let i=0,a=0;for(let s of r){let l=e.get(s),u=VHe(l),h=ui.drawPopup(t,l,u,Le,Le.forceMenus,n);h.height>i&&(i=h.height),h.width+l.x>a&&(a=h.width+l.x)}return{maxHeight:i,maxWidth:a}},"drawActorsPopup"),ude=o(function(t){Gn(Le,t),t.fontFamily&&(Le.actorFontFamily=Le.noteFontFamily=Le.messageFontFamily=t.fontFamily),t.fontSize&&(Le.actorFontSize=Le.noteFontSize=Le.messageFontSize=t.fontSize),t.fontWeight&&(Le.actorFontWeight=Le.noteFontWeight=Le.messageFontWeight=t.fontWeight)},"setConf"),TE=o(function(t){return nt.activations.filter(function(e){return e.actor===t})},"actorActivations"),lde=o(function(t,e){let r=e.get(t),n=TE(t),i=n.reduce(function(s,l){return je.getMin(s,l.startx)},r.x+r.width/2-1),a=n.reduce(function(s,l){return je.getMax(s,l.stopx)},r.x+r.width/2+1);return[i,a]},"activationBounds");o(zc,"adjustLoopHeightForWrap");o(zHe,"adjustCreatedDestroyedData");GHe=o(async function(t,e,r,n){let{securityLevel:i,sequence:a}=de();Le=a;let s;i==="sandbox"&&(s=ze("#i"+e));let l=i==="sandbox"?ze(s.nodes()[0].contentDocument.body):ze("body"),u=i==="sandbox"?s.nodes()[0].contentDocument:document;nt.init(),Y.debug(n.db);let h=i==="sandbox"?l.select(`[id="${e}"]`):ze(`[id="${e}"]`),f=n.db.getActors(),d=n.db.getCreatedActors(),p=n.db.getDestroyedActors(),m=n.db.getBoxes(),g=n.db.getActorKeys(),y=n.db.getMessages(),v=n.db.getDiagramTitle(),x=n.db.hasAtLeastOneBox(),b=n.db.hasAtLeastOneBoxWithTitle(),w=await $He(f,y,n);if(Le.height=await UHe(f,w,m),ui.insertComputerIcon(h),ui.insertDatabaseIcon(h),ui.insertClockIcon(h),x&&(nt.bumpVerticalPos(Le.boxMargin),b&&nt.bumpVerticalPos(m[0].textMaxHeight)),Le.hideUnusedParticipants===!0){let F=new Set;y.forEach(B=>{F.add(B.from),F.add(B.to)}),g=g.filter(B=>F.has(B))}FHe(h,f,d,g,0,y,!1);let _=await YHe(y,f,w,n);ui.insertArrowHead(h),ui.insertArrowCrossHead(h),ui.insertArrowFilledHead(h),ui.insertSequenceNumber(h);function T(F,B){let $=nt.endActivation(F);$.starty+18>B&&($.starty=B-6,B+=12),ui.drawActivation(h,$,B,Le,TE(F.from).length),nt.insert($.startx,B-10,$.stopx,B)}o(T,"activeEnd");let E=1,L=1,C=[],A=[],I=0;for(let F of y){let B,$,z;switch(F.type){case n.db.LINETYPE.NOTE:nt.resetVerticalPos(),$=F.noteModel,await OHe(h,$);break;case n.db.LINETYPE.ACTIVE_START:nt.newActivation(F,h,f);break;case n.db.LINETYPE.ACTIVE_END:T(F,nt.getVerticalPos());break;case n.db.LINETYPE.LOOP_START:zc(_,F,Le.boxMargin,Le.boxMargin+Le.boxTextMargin,W=>nt.newLoop(W));break;case n.db.LINETYPE.LOOP_END:B=nt.endLoop(),await ui.drawLoop(h,B,"loop",Le),nt.bumpVerticalPos(B.stopy-nt.getVerticalPos()),nt.models.addLoop(B);break;case n.db.LINETYPE.RECT_START:zc(_,F,Le.boxMargin,Le.boxMargin,W=>nt.newLoop(void 0,W.message));break;case n.db.LINETYPE.RECT_END:B=nt.endLoop(),A.push(B),nt.models.addLoop(B),nt.bumpVerticalPos(B.stopy-nt.getVerticalPos());break;case n.db.LINETYPE.OPT_START:zc(_,F,Le.boxMargin,Le.boxMargin+Le.boxTextMargin,W=>nt.newLoop(W));break;case n.db.LINETYPE.OPT_END:B=nt.endLoop(),await ui.drawLoop(h,B,"opt",Le),nt.bumpVerticalPos(B.stopy-nt.getVerticalPos()),nt.models.addLoop(B);break;case n.db.LINETYPE.ALT_START:zc(_,F,Le.boxMargin,Le.boxMargin+Le.boxTextMargin,W=>nt.newLoop(W));break;case n.db.LINETYPE.ALT_ELSE:zc(_,F,Le.boxMargin+Le.boxTextMargin,Le.boxMargin,W=>nt.addSectionToLoop(W));break;case n.db.LINETYPE.ALT_END:B=nt.endLoop(),await ui.drawLoop(h,B,"alt",Le),nt.bumpVerticalPos(B.stopy-nt.getVerticalPos()),nt.models.addLoop(B);break;case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:zc(_,F,Le.boxMargin,Le.boxMargin+Le.boxTextMargin,W=>nt.newLoop(W)),nt.saveVerticalPos();break;case n.db.LINETYPE.PAR_AND:zc(_,F,Le.boxMargin+Le.boxTextMargin,Le.boxMargin,W=>nt.addSectionToLoop(W));break;case n.db.LINETYPE.PAR_END:B=nt.endLoop(),await ui.drawLoop(h,B,"par",Le),nt.bumpVerticalPos(B.stopy-nt.getVerticalPos()),nt.models.addLoop(B);break;case n.db.LINETYPE.AUTONUMBER:E=F.message.start||E,L=F.message.step||L,F.message.visible?n.db.enableSequenceNumbers():n.db.disableSequenceNumbers();break;case n.db.LINETYPE.CRITICAL_START:zc(_,F,Le.boxMargin,Le.boxMargin+Le.boxTextMargin,W=>nt.newLoop(W));break;case n.db.LINETYPE.CRITICAL_OPTION:zc(_,F,Le.boxMargin+Le.boxTextMargin,Le.boxMargin,W=>nt.addSectionToLoop(W));break;case n.db.LINETYPE.CRITICAL_END:B=nt.endLoop(),await ui.drawLoop(h,B,"critical",Le),nt.bumpVerticalPos(B.stopy-nt.getVerticalPos()),nt.models.addLoop(B);break;case n.db.LINETYPE.BREAK_START:zc(_,F,Le.boxMargin,Le.boxMargin+Le.boxTextMargin,W=>nt.newLoop(W));break;case n.db.LINETYPE.BREAK_END:B=nt.endLoop(),await ui.drawLoop(h,B,"break",Le),nt.bumpVerticalPos(B.stopy-nt.getVerticalPos()),nt.models.addLoop(B);break;default:try{z=F.msgModel,z.starty=nt.getVerticalPos(),z.sequenceIndex=E,z.sequenceVisible=n.db.showSequenceNumbers();let W=await PHe(h,z);zHe(F,z,W,I,f,d,p),C.push({messageModel:z,lineStartY:W}),nt.models.addMessage(z)}catch(W){Y.error("error while drawing message",W)}}[n.db.LINETYPE.SOLID_OPEN,n.db.LINETYPE.DOTTED_OPEN,n.db.LINETYPE.SOLID,n.db.LINETYPE.DOTTED,n.db.LINETYPE.SOLID_CROSS,n.db.LINETYPE.DOTTED_CROSS,n.db.LINETYPE.SOLID_POINT,n.db.LINETYPE.DOTTED_POINT,n.db.LINETYPE.BIDIRECTIONAL_SOLID,n.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(F.type)&&(E=E+L),I++}Y.debug("createdActors",d),Y.debug("destroyedActors",p),await LO(h,f,g,!1);for(let F of C)await BHe(h,F.messageModel,F.lineStartY,n);Le.mirrorActors&&await LO(h,f,g,!0),A.forEach(F=>ui.drawBackgroundRect(h,F)),CO(h,f,g,Le);for(let F of nt.models.boxes)F.height=nt.getVerticalPos()-F.y,nt.insert(F.x,F.y,F.x+F.width,F.height),F.startx=F.x,F.starty=F.y,F.stopx=F.startx+F.width,F.stopy=F.starty+F.height,F.stroke="rgb(0,0,0, 0.5)",ui.drawBox(h,F,Le);x&&nt.bumpVerticalPos(Le.boxMargin);let D=cde(h,f,g,u),{bounds:k}=nt.getBounds();k.startx===void 0&&(k.startx=0),k.starty===void 0&&(k.starty=0),k.stopx===void 0&&(k.stopx=0),k.stopy===void 0&&(k.stopy=0);let R=k.stopy-k.starty;R2,d=o(y=>l?-y:y,"adjustValue");t.from===t.to?h=u:(t.activate&&!f&&(h+=d(Le.activationWidth/2-1)),[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN].includes(t.type)||(h+=d(3)),[r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type)&&(u-=d(3)));let p=[n,i,a,s],m=Math.abs(u-h);t.wrap&&t.message&&(t.message=Ut.wrapLabel(t.message,je.getMax(m+2*Le.wrapPadding,Le.width),S0(Le)));let g=Ut.calculateTextDimensions(t.message,S0(Le));return{width:je.getMax(t.wrap?0:g.width+2*Le.wrapPadding,m+2*Le.wrapPadding,Le.width),height:0,startx:u,stopx:h,starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,p),toBounds:Math.max.apply(null,p)}},"buildMessageModel"),YHe=o(async function(t,e,r,n){let i={},a=[],s,l,u;for(let h of t){switch(h.id=Ut.random({length:10}),h.type){case n.db.LINETYPE.LOOP_START:case n.db.LINETYPE.ALT_START:case n.db.LINETYPE.OPT_START:case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:case n.db.LINETYPE.CRITICAL_START:case n.db.LINETYPE.BREAK_START:a.push({id:h.id,msg:h.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case n.db.LINETYPE.ALT_ELSE:case n.db.LINETYPE.PAR_AND:case n.db.LINETYPE.CRITICAL_OPTION:h.message&&(s=a.pop(),i[s.id]=s,i[h.id]=s,a.push(s));break;case n.db.LINETYPE.LOOP_END:case n.db.LINETYPE.ALT_END:case n.db.LINETYPE.OPT_END:case n.db.LINETYPE.PAR_END:case n.db.LINETYPE.CRITICAL_END:case n.db.LINETYPE.BREAK_END:s=a.pop(),i[s.id]=s;break;case n.db.LINETYPE.ACTIVE_START:{let d=e.get(h.from?h.from:h.to.actor),p=TE(h.from?h.from:h.to.actor).length,m=d.x+d.width/2+(p-1)*Le.activationWidth/2,g={startx:m,stopx:m+Le.activationWidth,actor:h.from,enabled:!0};nt.activations.push(g)}break;case n.db.LINETYPE.ACTIVE_END:{let d=nt.activations.map(p=>p.actor).lastIndexOf(h.from);nt.activations.splice(d,1).splice(0,1)}break}h.placement!==void 0?(l=await HHe(h,e,n),h.noteModel=l,a.forEach(d=>{s=d,s.from=je.getMin(s.from,l.startx),s.to=je.getMax(s.to,l.startx+l.width),s.width=je.getMax(s.width,Math.abs(s.from-s.to))-Le.labelBoxWidth})):(u=WHe(h,e,n),h.msgModel=u,u.startx&&u.stopx&&a.length>0&&a.forEach(d=>{if(s=d,u.startx===u.stopx){let p=e.get(h.from),m=e.get(h.to);s.from=je.getMin(p.x-u.width/2,p.x-p.width/2,s.from),s.to=je.getMax(m.x+u.width/2,m.x+p.width/2,s.to),s.width=je.getMax(s.width,Math.abs(s.to-s.from))-Le.labelBoxWidth}else s.from=je.getMin(u.startx,s.from),s.to=je.getMax(u.stopx,s.to),s.width=je.getMax(s.width,u.width)-Le.labelBoxWidth}))}return nt.activations=[],Y.debug("Loop type widths:",i),i},"calculateLoopBounds"),hde={bounds:nt,drawActors:LO,drawActorsPopup:cde,setConf:ude,draw:GHe}});var dde={};vr(dde,{diagram:()=>qHe});var qHe,pde=M(()=>{"use strict";Hfe();Zfe();ede();fde();qHe={parser:Ufe,db:kO,renderer:hde,styles:Jfe,init:o(({wrap:t})=>{kO.setWrap(t)},"init")}});var DO,kE,NO=M(()=>{"use strict";DO=function(){var t=o(function(X,fe,he,ge){for(he=he||{},ge=X.length;ge--;he[X[ge]]=fe);return he},"o"),e=[1,18],r=[1,19],n=[1,20],i=[1,41],a=[1,42],s=[1,26],l=[1,24],u=[1,25],h=[1,32],f=[1,33],d=[1,34],p=[1,45],m=[1,35],g=[1,36],y=[1,37],v=[1,38],x=[1,27],b=[1,28],w=[1,29],_=[1,30],T=[1,31],E=[1,44],L=[1,46],C=[1,43],A=[1,47],I=[1,9],D=[1,8,9],k=[1,58],R=[1,59],S=[1,60],O=[1,61],N=[1,62],P=[1,63],F=[1,64],B=[1,8,9,41],$=[1,76],z=[1,8,9,12,13,22,39,41,44,66,67,68,69,70,71,72,77,79],W=[1,8,9,12,13,17,20,22,39,41,44,48,58,66,67,68,69,70,71,72,77,79,84,99,101,102],j=[13,58,84,99,101,102],K=[13,58,71,72,84,99,101,102],ie=[13,58,66,67,68,69,70,84,99,101,102],Q=[1,98],ee=[1,115],J=[1,107],H=[1,113],q=[1,108],Z=[1,109],ae=[1,110],ue=[1,111],ce=[1,112],te=[1,114],De=[22,58,59,80,84,85,86,87,88,89],oe=[1,8,9,39,41,44],ke=[1,8,9,22],Fe=[1,143],Be=[1,8,9,59],Ve=[1,8,9,22,58,59,80,84,85,86,87,88,89],Ge={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,DOT:17,className:18,classLiteralName:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,CLASS:46,ANNOTATION_START:47,ANNOTATION_END:48,MEMBER:49,SEPARATOR:50,relation:51,NOTE_FOR:52,noteText:53,NOTE:54,CLASSDEF:55,classList:56,stylesOpt:57,ALPHA:58,COMMA:59,direction_tb:60,direction_bt:61,direction_rl:62,direction_lr:63,relationType:64,lineType:65,AGGREGATION:66,EXTENSION:67,COMPOSITION:68,DEPENDENCY:69,LOLLIPOP:70,LINE:71,DOTTED_LINE:72,CALLBACK:73,LINK:74,LINK_TARGET:75,CLICK:76,CALLBACK_NAME:77,CALLBACK_ARGS:78,HREF:79,STYLE:80,CSSCLASS:81,style:82,styleComponent:83,NUM:84,COLON:85,UNIT:86,SPACE:87,BRKT:88,PCT:89,commentToken:90,textToken:91,graphCodeTokens:92,textNoTagsToken:93,TAGSTART:94,TAGEND:95,"==":96,"--":97,DEFAULT:98,MINUS:99,keywords:100,UNICODE_TEXT:101,BQUOTE_STR:102,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",17:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"CLASS",47:"ANNOTATION_START",48:"ANNOTATION_END",49:"MEMBER",50:"SEPARATOR",52:"NOTE_FOR",54:"NOTE",55:"CLASSDEF",58:"ALPHA",59:"COMMA",60:"direction_tb",61:"direction_bt",62:"direction_rl",63:"direction_lr",66:"AGGREGATION",67:"EXTENSION",68:"COMPOSITION",69:"DEPENDENCY",70:"LOLLIPOP",71:"LINE",72:"DOTTED_LINE",73:"CALLBACK",74:"LINK",75:"LINK_TARGET",76:"CLICK",77:"CALLBACK_NAME",78:"CALLBACK_ARGS",79:"HREF",80:"STYLE",81:"CSSCLASS",84:"NUM",85:"COLON",86:"UNIT",87:"SPACE",88:"BRKT",89:"PCT",92:"graphCodeTokens",94:"TAGSTART",95:"TAGEND",96:"==",97:"--",98:"DEFAULT",99:"MINUS",100:"keywords",101:"UNICODE_TEXT",102:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,3],[15,2],[18,1],[18,3],[18,1],[18,2],[18,2],[18,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,6],[43,2],[43,3],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[56,1],[56,3],[32,1],[32,1],[32,1],[32,1],[51,3],[51,2],[51,2],[51,1],[64,1],[64,1],[64,1],[64,1],[64,1],[65,1],[65,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[57,1],[57,3],[82,1],[82,2],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[90,1],[90,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[93,1],[93,1],[93,1],[93,1],[16,1],[16,1],[16,1],[16,1],[19,1],[53,1]],performAction:o(function(fe,he,ge,ne,ye,U,Te){var se=U.length-1;switch(ye){case 8:this.$=U[se-1];break;case 9:case 12:case 14:this.$=U[se];break;case 10:case 13:this.$=U[se-2]+"."+U[se];break;case 11:case 15:this.$=U[se-1]+U[se];break;case 16:case 17:this.$=U[se-1]+"~"+U[se]+"~";break;case 18:ne.addRelation(U[se]);break;case 19:U[se-1].title=ne.cleanupLabel(U[se]),ne.addRelation(U[se-1]);break;case 30:this.$=U[se].trim(),ne.setAccTitle(this.$);break;case 31:case 32:this.$=U[se].trim(),ne.setAccDescription(this.$);break;case 33:ne.addClassesToNamespace(U[se-3],U[se-1]);break;case 34:ne.addClassesToNamespace(U[se-4],U[se-1]);break;case 35:this.$=U[se],ne.addNamespace(U[se]);break;case 36:this.$=[U[se]];break;case 37:this.$=[U[se-1]];break;case 38:U[se].unshift(U[se-2]),this.$=U[se];break;case 40:ne.setCssClass(U[se-2],U[se]);break;case 41:ne.addMembers(U[se-3],U[se-1]);break;case 42:ne.setCssClass(U[se-5],U[se-3]),ne.addMembers(U[se-5],U[se-1]);break;case 43:this.$=U[se],ne.addClass(U[se]);break;case 44:this.$=U[se-1],ne.addClass(U[se-1]),ne.setClassLabel(U[se-1],U[se]);break;case 45:ne.addAnnotation(U[se],U[se-2]);break;case 46:case 59:this.$=[U[se]];break;case 47:U[se].push(U[se-1]),this.$=U[se];break;case 48:break;case 49:ne.addMember(U[se-1],ne.cleanupLabel(U[se]));break;case 50:break;case 51:break;case 52:this.$={id1:U[se-2],id2:U[se],relation:U[se-1],relationTitle1:"none",relationTitle2:"none"};break;case 53:this.$={id1:U[se-3],id2:U[se],relation:U[se-1],relationTitle1:U[se-2],relationTitle2:"none"};break;case 54:this.$={id1:U[se-3],id2:U[se],relation:U[se-2],relationTitle1:"none",relationTitle2:U[se-1]};break;case 55:this.$={id1:U[se-4],id2:U[se],relation:U[se-2],relationTitle1:U[se-3],relationTitle2:U[se-1]};break;case 56:ne.addNote(U[se],U[se-1]);break;case 57:ne.addNote(U[se]);break;case 58:this.$=U[se-2],ne.defineClass(U[se-1],U[se]);break;case 60:this.$=U[se-2].concat([U[se]]);break;case 61:ne.setDirection("TB");break;case 62:ne.setDirection("BT");break;case 63:ne.setDirection("RL");break;case 64:ne.setDirection("LR");break;case 65:this.$={type1:U[se-2],type2:U[se],lineType:U[se-1]};break;case 66:this.$={type1:"none",type2:U[se],lineType:U[se-1]};break;case 67:this.$={type1:U[se-1],type2:"none",lineType:U[se]};break;case 68:this.$={type1:"none",type2:"none",lineType:U[se]};break;case 69:this.$=ne.relationType.AGGREGATION;break;case 70:this.$=ne.relationType.EXTENSION;break;case 71:this.$=ne.relationType.COMPOSITION;break;case 72:this.$=ne.relationType.DEPENDENCY;break;case 73:this.$=ne.relationType.LOLLIPOP;break;case 74:this.$=ne.lineType.LINE;break;case 75:this.$=ne.lineType.DOTTED_LINE;break;case 76:case 82:this.$=U[se-2],ne.setClickEvent(U[se-1],U[se]);break;case 77:case 83:this.$=U[se-3],ne.setClickEvent(U[se-2],U[se-1]),ne.setTooltip(U[se-2],U[se]);break;case 78:this.$=U[se-2],ne.setLink(U[se-1],U[se]);break;case 79:this.$=U[se-3],ne.setLink(U[se-2],U[se-1],U[se]);break;case 80:this.$=U[se-3],ne.setLink(U[se-2],U[se-1]),ne.setTooltip(U[se-2],U[se]);break;case 81:this.$=U[se-4],ne.setLink(U[se-3],U[se-2],U[se]),ne.setTooltip(U[se-3],U[se-1]);break;case 84:this.$=U[se-3],ne.setClickEvent(U[se-2],U[se-1],U[se]);break;case 85:this.$=U[se-4],ne.setClickEvent(U[se-3],U[se-2],U[se-1]),ne.setTooltip(U[se-3],U[se]);break;case 86:this.$=U[se-3],ne.setLink(U[se-2],U[se]);break;case 87:this.$=U[se-4],ne.setLink(U[se-3],U[se-1],U[se]);break;case 88:this.$=U[se-4],ne.setLink(U[se-3],U[se-1]),ne.setTooltip(U[se-3],U[se]);break;case 89:this.$=U[se-5],ne.setLink(U[se-4],U[se-2],U[se]),ne.setTooltip(U[se-4],U[se-1]);break;case 90:this.$=U[se-2],ne.setCssStyle(U[se-1],U[se]);break;case 91:ne.setCssClass(U[se-1],U[se]);break;case 92:this.$=[U[se]];break;case 93:U[se-2].push(U[se]),this.$=U[se-2];break;case 95:this.$=U[se-1]+U[se];break}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,18:21,19:40,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:r,37:n,38:22,42:i,43:23,46:a,47:s,49:l,50:u,52:h,54:f,55:d,58:p,60:m,61:g,62:y,63:v,73:x,74:b,76:w,80:_,81:T,84:E,99:L,101:C,102:A},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(I,[2,5],{8:[1,48]}),{8:[1,49]},t(D,[2,18],{22:[1,50]}),t(D,[2,20]),t(D,[2,21]),t(D,[2,22]),t(D,[2,23]),t(D,[2,24]),t(D,[2,25]),t(D,[2,26]),t(D,[2,27]),t(D,[2,28]),t(D,[2,29]),{34:[1,51]},{36:[1,52]},t(D,[2,32]),t(D,[2,48],{51:53,64:56,65:57,13:[1,54],22:[1,55],66:k,67:R,68:S,69:O,70:N,71:P,72:F}),{39:[1,65]},t(B,[2,39],{39:[1,67],44:[1,66]}),t(D,[2,50]),t(D,[2,51]),{16:68,58:p,84:E,99:L,101:C},{16:39,18:69,19:40,58:p,84:E,99:L,101:C,102:A},{16:39,18:70,19:40,58:p,84:E,99:L,101:C,102:A},{16:39,18:71,19:40,58:p,84:E,99:L,101:C,102:A},{58:[1,72]},{13:[1,73]},{16:39,18:74,19:40,58:p,84:E,99:L,101:C,102:A},{13:$,53:75},{56:77,58:[1,78]},t(D,[2,61]),t(D,[2,62]),t(D,[2,63]),t(D,[2,64]),t(z,[2,12],{16:39,19:40,18:80,17:[1,79],20:[1,81],58:p,84:E,99:L,101:C,102:A}),t(z,[2,14],{20:[1,82]}),{15:83,16:84,58:p,84:E,99:L,101:C},{16:39,18:85,19:40,58:p,84:E,99:L,101:C,102:A},t(W,[2,118]),t(W,[2,119]),t(W,[2,120]),t(W,[2,121]),t([1,8,9,12,13,20,22,39,41,44,66,67,68,69,70,71,72,77,79],[2,122]),t(I,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,18:21,38:22,43:23,16:39,19:40,5:86,33:e,35:r,37:n,42:i,46:a,47:s,49:l,50:u,52:h,54:f,55:d,58:p,60:m,61:g,62:y,63:v,73:x,74:b,76:w,80:_,81:T,84:E,99:L,101:C,102:A}),{5:87,10:5,16:39,18:21,19:40,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:r,37:n,38:22,42:i,43:23,46:a,47:s,49:l,50:u,52:h,54:f,55:d,58:p,60:m,61:g,62:y,63:v,73:x,74:b,76:w,80:_,81:T,84:E,99:L,101:C,102:A},t(D,[2,19]),t(D,[2,30]),t(D,[2,31]),{13:[1,89],16:39,18:88,19:40,58:p,84:E,99:L,101:C,102:A},{51:90,64:56,65:57,66:k,67:R,68:S,69:O,70:N,71:P,72:F},t(D,[2,49]),{65:91,71:P,72:F},t(j,[2,68],{64:92,66:k,67:R,68:S,69:O,70:N}),t(K,[2,69]),t(K,[2,70]),t(K,[2,71]),t(K,[2,72]),t(K,[2,73]),t(ie,[2,74]),t(ie,[2,75]),{8:[1,94],24:95,40:93,43:23,46:a},{16:96,58:p,84:E,99:L,101:C},{45:97,49:Q},{48:[1,99]},{13:[1,100]},{13:[1,101]},{77:[1,102],79:[1,103]},{22:ee,57:104,58:J,80:H,82:105,83:106,84:q,85:Z,86:ae,87:ue,88:ce,89:te},{58:[1,116]},{13:$,53:117},t(D,[2,57]),t(D,[2,123]),{22:ee,57:118,58:J,59:[1,119],80:H,82:105,83:106,84:q,85:Z,86:ae,87:ue,88:ce,89:te},t(De,[2,59]),{16:39,18:120,19:40,58:p,84:E,99:L,101:C,102:A},t(z,[2,15]),t(z,[2,16]),t(z,[2,17]),{39:[2,35]},{15:122,16:84,17:[1,121],39:[2,9],58:p,84:E,99:L,101:C},t(oe,[2,43],{11:123,12:[1,124]}),t(I,[2,7]),{9:[1,125]},t(ke,[2,52]),{16:39,18:126,19:40,58:p,84:E,99:L,101:C,102:A},{13:[1,128],16:39,18:127,19:40,58:p,84:E,99:L,101:C,102:A},t(j,[2,67],{64:129,66:k,67:R,68:S,69:O,70:N}),t(j,[2,66]),{41:[1,130]},{24:95,40:131,43:23,46:a},{8:[1,132],41:[2,36]},t(B,[2,40],{39:[1,133]}),{41:[1,134]},{41:[2,46],45:135,49:Q},{16:39,18:136,19:40,58:p,84:E,99:L,101:C,102:A},t(D,[2,76],{13:[1,137]}),t(D,[2,78],{13:[1,139],75:[1,138]}),t(D,[2,82],{13:[1,140],78:[1,141]}),{13:[1,142]},t(D,[2,90],{59:Fe}),t(Be,[2,92],{83:144,22:ee,58:J,80:H,84:q,85:Z,86:ae,87:ue,88:ce,89:te}),t(Ve,[2,94]),t(Ve,[2,96]),t(Ve,[2,97]),t(Ve,[2,98]),t(Ve,[2,99]),t(Ve,[2,100]),t(Ve,[2,101]),t(Ve,[2,102]),t(Ve,[2,103]),t(Ve,[2,104]),t(D,[2,91]),t(D,[2,56]),t(D,[2,58],{59:Fe}),{58:[1,145]},t(z,[2,13]),{15:146,16:84,58:p,84:E,99:L,101:C},{39:[2,11]},t(oe,[2,44]),{13:[1,147]},{1:[2,4]},t(ke,[2,54]),t(ke,[2,53]),{16:39,18:148,19:40,58:p,84:E,99:L,101:C,102:A},t(j,[2,65]),t(D,[2,33]),{41:[1,149]},{24:95,40:150,41:[2,37],43:23,46:a},{45:151,49:Q},t(B,[2,41]),{41:[2,47]},t(D,[2,45]),t(D,[2,77]),t(D,[2,79]),t(D,[2,80],{75:[1,152]}),t(D,[2,83]),t(D,[2,84],{13:[1,153]}),t(D,[2,86],{13:[1,155],75:[1,154]}),{22:ee,58:J,80:H,82:156,83:106,84:q,85:Z,86:ae,87:ue,88:ce,89:te},t(Ve,[2,95]),t(De,[2,60]),{39:[2,10]},{14:[1,157]},t(ke,[2,55]),t(D,[2,34]),{41:[2,38]},{41:[1,158]},t(D,[2,81]),t(D,[2,85]),t(D,[2,87]),t(D,[2,88],{75:[1,159]}),t(Be,[2,93],{83:144,22:ee,58:J,80:H,84:q,85:Z,86:ae,87:ue,88:ce,89:te}),t(oe,[2,8]),t(B,[2,42]),t(D,[2,89])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],83:[2,35],122:[2,11],125:[2,4],135:[2,47],146:[2,10],150:[2,38]},parseError:o(function(fe,he){if(he.recoverable)this.trace(fe);else{var ge=new Error(fe);throw ge.hash=he,ge}},"parseError"),parse:o(function(fe){var he=this,ge=[0],ne=[],ye=[null],U=[],Te=this.table,se="",Ee=0,Ae=0,Pe=0,Me=2,me=1,We=U.slice.call(arguments,1),Re=Object.create(this.lexer),tt={yy:{}};for(var gt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,gt)&&(tt.yy[gt]=this.yy[gt]);Re.setInput(fe,tt.yy),tt.yy.lexer=Re,tt.yy.parser=this,typeof Re.yylloc>"u"&&(Re.yylloc={});var Et=Re.yylloc;U.push(Et);var vt=Re.options&&Re.options.ranges;typeof tt.yy.parseError=="function"?this.parseError=tt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ye(or){ge.length=ge.length-2*or,ye.length=ye.length-or,U.length=U.length-or}o(Ye,"popStack");function Tt(){var or;return or=ne.pop()||Re.lex()||me,typeof or!="number"&&(or instanceof Array&&(ne=or,or=ne.pop()),or=he.symbols_[or]||or),or}o(Tt,"lex");for(var $e,rt,ft,kt,er,dt,Xe={},ct,Lt,Rt,zt;;){if(ft=ge[ge.length-1],this.defaultActions[ft]?kt=this.defaultActions[ft]:(($e===null||typeof $e>"u")&&($e=Tt()),kt=Te[ft]&&Te[ft][$e]),typeof kt>"u"||!kt.length||!kt[0]){var Xn="";zt=[];for(ct in Te[ft])this.terminals_[ct]&&ct>Me&&zt.push("'"+this.terminals_[ct]+"'");Re.showPosition?Xn="Parse error on line "+(Ee+1)+`: -`+Re.showPosition()+` -Expecting `+zt.join(", ")+", got '"+(this.terminals_[$e]||$e)+"'":Xn="Parse error on line "+(Ee+1)+": Unexpected "+($e==me?"end of input":"'"+(this.terminals_[$e]||$e)+"'"),this.parseError(Xn,{text:Re.match,token:this.terminals_[$e]||$e,line:Re.yylineno,loc:Et,expected:zt})}if(kt[0]instanceof Array&&kt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ft+", token: "+$e);switch(kt[0]){case 1:ge.push($e),ye.push(Re.yytext),U.push(Re.yylloc),ge.push(kt[1]),$e=null,rt?($e=rt,rt=null):(Ae=Re.yyleng,se=Re.yytext,Ee=Re.yylineno,Et=Re.yylloc,Pe>0&&Pe--);break;case 2:if(Lt=this.productions_[kt[1]][1],Xe.$=ye[ye.length-Lt],Xe._$={first_line:U[U.length-(Lt||1)].first_line,last_line:U[U.length-1].last_line,first_column:U[U.length-(Lt||1)].first_column,last_column:U[U.length-1].last_column},vt&&(Xe._$.range=[U[U.length-(Lt||1)].range[0],U[U.length-1].range[1]]),dt=this.performAction.apply(Xe,[se,Ae,Ee,tt.yy,kt[1],ye,U].concat(We)),typeof dt<"u")return dt;Lt&&(ge=ge.slice(0,-1*Lt*2),ye=ye.slice(0,-1*Lt),U=U.slice(0,-1*Lt)),ge.push(this.productions_[kt[1]][0]),ye.push(Xe.$),U.push(Xe._$),Rt=Te[ge[ge.length-2]][ge[ge.length-1]],ge.push(Rt);break;case 3:return!0}}return!0},"parse")},He=function(){var X={EOF:1,parseError:o(function(he,ge){if(this.yy.parser)this.yy.parser.parseError(he,ge);else throw new Error(he)},"parseError"),setInput:o(function(fe,he){return this.yy=he||this.yy||{},this._input=fe,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var fe=this._input[0];this.yytext+=fe,this.yyleng++,this.offset++,this.match+=fe,this.matched+=fe;var he=fe.match(/(?:\r\n?|\n).*/g);return he?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),fe},"input"),unput:o(function(fe){var he=fe.length,ge=fe.split(/(?:\r\n?|\n)/g);this._input=fe+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-he),this.offset-=he;var ne=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ge.length-1&&(this.yylineno-=ge.length-1);var ye=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ge?(ge.length===ne.length?this.yylloc.first_column:0)+ne[ne.length-ge.length].length-ge[0].length:this.yylloc.first_column-he},this.options.ranges&&(this.yylloc.range=[ye[0],ye[0]+this.yyleng-he]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(fe){this.unput(this.match.slice(fe))},"less"),pastInput:o(function(){var fe=this.matched.substr(0,this.matched.length-this.match.length);return(fe.length>20?"...":"")+fe.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var fe=this.match;return fe.length<20&&(fe+=this._input.substr(0,20-fe.length)),(fe.substr(0,20)+(fe.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var fe=this.pastInput(),he=new Array(fe.length+1).join("-");return fe+this.upcomingInput()+` -`+he+"^"},"showPosition"),test_match:o(function(fe,he){var ge,ne,ye;if(this.options.backtrack_lexer&&(ye={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ye.yylloc.range=this.yylloc.range.slice(0))),ne=fe[0].match(/(?:\r\n?|\n).*/g),ne&&(this.yylineno+=ne.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ne?ne[ne.length-1].length-ne[ne.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+fe[0].length},this.yytext+=fe[0],this.match+=fe[0],this.matches=fe,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(fe[0].length),this.matched+=fe[0],ge=this.performAction.call(this,this.yy,this,he,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ge)return ge;if(this._backtrack){for(var U in ye)this[U]=ye[U];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var fe,he,ge,ne;this._more||(this.yytext="",this.match="");for(var ye=this._currentRules(),U=0;Uhe[0].length)){if(he=ge,ne=U,this.options.backtrack_lexer){if(fe=this.test_match(ge,ye[U]),fe!==!1)return fe;if(this._backtrack){he=!1;continue}else return!1}else if(!this.options.flex)break}return he?(fe=this.test_match(he,ye[ne]),fe!==!1?fe:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var he=this.next();return he||this.lex()},"lex"),begin:o(function(he){this.conditionStack.push(he)},"begin"),popState:o(function(){var he=this.conditionStack.length-1;return he>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(he){return he=this.conditionStack.length-1-Math.abs(he||0),he>=0?this.conditionStack[he]:"INITIAL"},"topState"),pushState:o(function(he){this.begin(he)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(he,ge,ne,ye){var U=ye;switch(ne){case 0:return 60;case 1:return 61;case 2:return 62;case 3:return 63;case 4:break;case 5:break;case 6:return this.begin("acc_title"),33;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),35;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 77;case 22:this.popState();break;case 23:return 78;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 80;case 28:return 55;case 29:return this.begin("namespace"),42;break;case 30:return this.popState(),8;break;case 31:break;case 32:return this.begin("namespace-body"),39;break;case 33:return this.popState(),41;break;case 34:return"EOF_IN_STRUCT";case 35:return 8;case 36:break;case 37:return"EDGE_STATE";case 38:return this.begin("class"),46;break;case 39:return this.popState(),8;break;case 40:break;case 41:return this.popState(),this.popState(),41;break;case 42:return this.begin("class-body"),39;break;case 43:return this.popState(),41;break;case 44:return"EOF_IN_STRUCT";case 45:return"EDGE_STATE";case 46:return"OPEN_IN_STRUCT";case 47:break;case 48:return"MEMBER";case 49:return 81;case 50:return 73;case 51:return 74;case 52:return 76;case 53:return 52;case 54:return 54;case 55:return 47;case 56:return 48;case 57:return 79;case 58:this.popState();break;case 59:return"GENERICTYPE";case 60:this.begin("generic");break;case 61:this.popState();break;case 62:return"BQUOTE_STR";case 63:this.begin("bqstring");break;case 64:return 75;case 65:return 75;case 66:return 75;case 67:return 75;case 68:return 67;case 69:return 67;case 70:return 69;case 71:return 69;case 72:return 68;case 73:return 66;case 74:return 70;case 75:return 71;case 76:return 72;case 77:return 22;case 78:return 44;case 79:return 99;case 80:return 17;case 81:return"PLUS";case 82:return 85;case 83:return 59;case 84:return 88;case 85:return 88;case 86:return 89;case 87:return"EQUALS";case 88:return"EQUALS";case 89:return 58;case 90:return 12;case 91:return 14;case 92:return"PUNCTUATION";case 93:return 84;case 94:return 101;case 95:return 87;case 96:return 87;case 97:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?::)/,/^(?:,)/,/^(?:#)/,/^(?:#)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,33,34,35,36,37,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},namespace:{rules:[26,29,30,31,32,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},"class-body":{rules:[26,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},class:{rules:[26,39,40,41,42,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr:{rules:[9,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_title:{rules:[7,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_args:{rules:[22,23,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_name:{rules:[19,20,21,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},href:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},struct:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},generic:{rules:[26,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},bqstring:{rules:[26,49,50,51,52,53,54,55,56,57,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},string:{rules:[24,25,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!0}}};return X}();Ge.lexer=He;function xe(){this.yy={}}return o(xe,"Parser"),xe.prototype=Ge,Ge.Parser=xe,new xe}();DO.parser=DO;kE=DO});var yde,Tx,vde=M(()=>{"use strict";Vt();fr();yde=["#","+","~","-",""],Tx=class{static{o(this,"ClassMember")}constructor(e,r){this.memberType=r,this.visibility="",this.classifier="",this.text="";let n=Tr(e,de());this.parseMember(n)}getDisplayDetails(){let e=this.visibility+ou(this.id);this.memberType==="method"&&(e+=`(${ou(this.parameters.trim())})`,this.returnType&&(e+=" : "+ou(this.returnType))),e=e.trim();let r=this.parseClassifier();return{displayText:e,cssStyle:r}}parseMember(e){let r="";if(this.memberType==="method"){let a=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(e);if(a){let s=a[1]?a[1].trim():"";if(yde.includes(s)&&(this.visibility=s),this.id=a[2],this.parameters=a[3]?a[3].trim():"",r=a[4]?a[4].trim():"",this.returnType=a[5]?a[5].trim():"",r===""){let l=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(l)&&(r=l,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{let i=e.length,a=e.substring(0,1),s=e.substring(i-1);yde.includes(a)&&(this.visibility=a),/[$*]/.exec(s)&&(r=s),this.id=e.substring(this.visibility===""?0:1,r===""?i:i-1)}this.classifier=r,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();let n=`${this.visibility?"\\"+this.visibility:""}${ou(this.id)}${this.memberType==="method"?`(${ou(this.parameters)})${this.returnType?" : "+ou(this.returnType):""}`:""}`;this.text=n.replaceAll("<","<").replaceAll(">",">"),this.text.startsWith("\\<")&&(this.text=this.text.replace("\\<","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}}});function Tde(t){let e;switch(t){case 0:e="aggregation";break;case 1:e="extension";break;case 2:e="composition";break;case 3:e="dependency";break;case 4:e="lollipop";break;default:e="none"}return e}var EE,SE,Ln,xde,kx,Gg,bde,$l,RO,Ex,C0,A0,QHe,zg,wde,kde,ZHe,JHe,eWe,tWe,rWe,nWe,iWe,Ede,aWe,sWe,oWe,MO,lWe,cWe,uWe,hWe,fWe,dWe,pWe,mWe,mf,Sde,IO,Cde,gWe,yWe,vWe,xWe,bWe,wWe,TWe,$g,OO=M(()=>{"use strict";mr();ht();Vt();fr();hr();ki();vde();EE="classId-",SE=[],Ln=new Map,xde=new Map,kx=[],Gg=[],bde=0,$l=new Map,RO=0,Ex=[],C0=o(t=>je.sanitizeText(t,de()),"sanitizeText"),A0=o(function(t){let e=je.sanitizeText(t,de()),r="",n=e;if(e.indexOf("~")>0){let i=e.split("~");n=C0(i[0]),r=C0(i[1])}return{className:n,type:r}},"splitClassNameAndType"),QHe=o(function(t,e){let r=je.sanitizeText(t,de());e&&(e=C0(e));let{className:n}=A0(r);Ln.get(n).label=e,Ln.get(n).text=`${e}${Ln.get(n).type?`<${Ln.get(n).type}>`:""}`},"setClassLabel"),zg=o(function(t){let e=je.sanitizeText(t,de()),{className:r,type:n}=A0(e);if(Ln.has(r))return;let i=je.sanitizeText(r,de());Ln.set(i,{id:i,type:n,label:i,text:`${i}${n?`<${n}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:EE+i+"-"+bde}),bde++},"addClass"),wde=o(function(t,e){let r={id:`interface${Gg.length}`,label:t,classId:e};Gg.push(r)},"addInterface"),kde=o(function(t){let e=je.sanitizeText(t,de());if(Ln.has(e))return Ln.get(e).domId;throw new Error("Class not found: "+e)},"lookUpDomId"),ZHe=o(function(){SE=[],Ln=new Map,kx=[],Gg=[],Ex=[],Ex.push(Sde),$l=new Map,RO=0,IO="TB",_r()},"clear"),JHe=o(function(t){return Ln.get(t)},"getClass"),eWe=o(function(){return Ln},"getClasses"),tWe=o(function(){return SE},"getRelations"),rWe=o(function(){return kx},"getNotes"),nWe=o(function(t){Y.debug("Adding relation: "+JSON.stringify(t));let e=[mf.LOLLIPOP,mf.AGGREGATION,mf.COMPOSITION,mf.DEPENDENCY,mf.EXTENSION];t.relation.type1===mf.LOLLIPOP&&!e.includes(t.relation.type2)?(zg(t.id2),wde(t.id1,t.id2),t.id1=`interface${Gg.length-1}`):t.relation.type2===mf.LOLLIPOP&&!e.includes(t.relation.type1)?(zg(t.id1),wde(t.id2,t.id1),t.id2=`interface${Gg.length-1}`):(zg(t.id1),zg(t.id2)),t.id1=A0(t.id1).className,t.id2=A0(t.id2).className,t.relationTitle1=je.sanitizeText(t.relationTitle1.trim(),de()),t.relationTitle2=je.sanitizeText(t.relationTitle2.trim(),de()),SE.push(t)},"addRelation"),iWe=o(function(t,e){let r=A0(t).className;Ln.get(r).annotations.push(e)},"addAnnotation"),Ede=o(function(t,e){zg(t);let r=A0(t).className,n=Ln.get(r);if(typeof e=="string"){let i=e.trim();i.startsWith("<<")&&i.endsWith(">>")?n.annotations.push(C0(i.substring(2,i.length-2))):i.indexOf(")")>0?n.methods.push(new Tx(i,"method")):i&&n.members.push(new Tx(i,"attribute"))}},"addMember"),aWe=o(function(t,e){Array.isArray(e)&&(e.reverse(),e.forEach(r=>Ede(t,r)))},"addMembers"),sWe=o(function(t,e){let r={id:`note${kx.length}`,class:e,text:t};kx.push(r)},"addNote"),oWe=o(function(t){return t.startsWith(":")&&(t=t.substring(1)),C0(t.trim())},"cleanupLabel"),MO=o(function(t,e){t.split(",").forEach(function(r){let n=r;/\d/.exec(r[0])&&(n=EE+n);let i=Ln.get(n);i&&(i.cssClasses+=" "+e)})},"setCssClass"),lWe=o(function(t,e){for(let r of t){let n=xde.get(r);n===void 0&&(n={id:r,styles:[],textStyles:[]},xde.set(r,n)),e&&e.forEach(function(i){if(/color/.exec(i)){let a=i.replace("fill","bgFill");n.textStyles.push(a)}n.styles.push(i)}),Ln.forEach(i=>{i.cssClasses.includes(r)&&i.styles.push(...e.flatMap(a=>a.split(",")))})}},"defineClass"),cWe=o(function(t,e){t.split(",").forEach(function(r){e!==void 0&&(Ln.get(r).tooltip=C0(e))})},"setTooltip"),uWe=o(function(t,e){return e&&$l.has(e)?$l.get(e).classes.get(t).tooltip:Ln.get(t).tooltip},"getTooltip"),hWe=o(function(t,e,r){let n=de();t.split(",").forEach(function(i){let a=i;/\d/.exec(i[0])&&(a=EE+a);let s=Ln.get(a);s&&(s.link=Ut.formatUrl(e,n),n.securityLevel==="sandbox"?s.linkTarget="_top":typeof r=="string"?s.linkTarget=C0(r):s.linkTarget="_blank")}),MO(t,"clickable")},"setLink"),fWe=o(function(t,e,r){t.split(",").forEach(function(n){dWe(n,e,r),Ln.get(n).haveCallback=!0}),MO(t,"clickable")},"setClickEvent"),dWe=o(function(t,e,r){let n=je.sanitizeText(t,de());if(de().securityLevel!=="loose"||e===void 0)return;let a=n;if(Ln.has(a)){let s=kde(a),l=[];if(typeof r=="string"){l=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let u=0;u")),i.classed("hover",!0)}).on("mouseout",function(){e.transition().duration(500).style("opacity",0),ze(this).classed("hover",!1)})},"setupToolTips");Ex.push(Sde);IO="TB",Cde=o(()=>IO,"getDirection"),gWe=o(t=>{IO=t},"setDirection"),yWe=o(function(t){$l.has(t)||($l.set(t,{id:t,classes:new Map,children:{},domId:EE+t+"-"+RO}),RO++)},"addNamespace"),vWe=o(function(t){return $l.get(t)},"getNamespace"),xWe=o(function(){return $l},"getNamespaces"),bWe=o(function(t,e){if($l.has(t))for(let r of e){let{className:n}=A0(r);Ln.get(n).parent=t,$l.get(t).classes.set(n,Ln.get(n))}},"addClassesToNamespace"),wWe=o(function(t,e){let r=Ln.get(t);if(!(!e||!r))for(let n of e)n.includes(",")?r.styles.push(...n.split(",")):r.styles.push(n)},"setCssStyle");o(Tde,"getArrowMarker");TWe=o(()=>{let t=[],e=[],r=de();for(let i of $l.keys()){let a=$l.get(i);if(a){let s={id:a.id,label:a.id,isGroup:!0,padding:r.class.padding??16,shape:"rect",cssStyles:["fill: none","stroke: black"],look:r.look};t.push(s)}}for(let i of Ln.keys()){let a=Ln.get(i);if(a){let s=a;s.parentId=a.parent,s.look=r.look,t.push(s)}}let n=0;for(let i of kx){n++;let a={id:i.id,label:i.text,isGroup:!1,shape:"note",padding:r.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${r.themeVariables.noteBkgColor}`,`stroke: ${r.themeVariables.noteBorderColor}`],look:r.look};t.push(a);let s=Ln.get(i.class)?.id??"";if(s){let l={id:`edgeNote${n}`,start:i.id,end:s,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:r.look};e.push(l)}}for(let i of Gg){let a={id:i.id,label:i.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:r.look};t.push(a)}n=0;for(let i of SE){n++;let a={id:p5(i.id1,i.id2,{prefix:"id",counter:n}),start:i.id1,end:i.id2,type:"normal",label:i.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:Tde(i.relation.type1),arrowTypeEnd:Tde(i.relation.type2),startLabelRight:i.relationTitle1==="none"?"":i.relationTitle1,endLabelLeft:i.relationTitle2==="none"?"":i.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:i.style||"",pattern:i.relation.lineType==1?"dashed":"solid",look:r.look};e.push(a)}return{nodes:t,edges:e,other:{},config:r,direction:Cde()}},"getData"),$g={setAccTitle:Rr,getAccTitle:Pr,getAccDescription:Fr,setAccDescription:Br,getConfig:o(()=>de().class,"getConfig"),addClass:zg,bindFunctions:pWe,clear:ZHe,getClass:JHe,getClasses:eWe,getNotes:rWe,addAnnotation:iWe,addNote:sWe,getRelations:tWe,addRelation:nWe,getDirection:Cde,setDirection:gWe,addMember:Ede,addMembers:aWe,cleanupLabel:oWe,lineType:mWe,relationType:mf,setClickEvent:fWe,setCssClass:MO,defineClass:lWe,setLink:hWe,getTooltip:uWe,setTooltip:cWe,lookUpDomId:kde,setDiagramTitle:ln,getDiagramTitle:Jr,setClassLabel:QHe,addNamespace:yWe,addClassesToNamespace:bWe,getNamespace:vWe,getNamespaces:xWe,setCssStyle:wWe,getData:TWe}});var kWe,CE,PO=M(()=>{"use strict";kWe=o(t=>`g.classGroup text { +`,"getStyles"),jhe=L$e});var mO,mf,Zhe,Jhe,R$e,Qhe,gO,N$e,M$e,cb,Cp,efe,Gc,yO,I$e,O$e,P$e,B$e,F$e,z$e,G$e,tfe,$$e,V$e,U$e,H$e,W$e,q$e,Y$e,rfe,X$e,vO,j$e,ui,nfe=M(()=>{"use strict";gr();Rv();sr();mO=Ta(O0(),1);ka();mf=18*2,Zhe="actor-top",Jhe="actor-bottom",R$e="actor-box",Qhe="actor-man",gO=o(function(t,e){return bd(t,e)},"drawRect"),N$e=o(function(t,e,r,n,i){if(e.links===void 0||e.links===null||Object.keys(e.links).length===0)return{height:0,width:0};let a=e.links,s=e.actorCnt,l=e.rectData;var u="none";i&&(u="block !important");let h=t.append("g");h.attr("id","actor"+s+"_popup"),h.attr("class","actorPopupMenu"),h.attr("display",u);var f="";l.class!==void 0&&(f=" "+l.class);let d=l.width>r?l.width:r,p=h.append("rect");if(p.attr("class","actorPopupMenuPanel"+f),p.attr("x",l.x),p.attr("y",l.height),p.attr("fill",l.fill),p.attr("stroke",l.stroke),p.attr("width",d),p.attr("height",l.height),p.attr("rx",l.rx),p.attr("ry",l.ry),a!=null){var m=20;for(let v in a){var g=h.append("a"),y=(0,mO.sanitizeUrl)(a[v]);g.attr("xlink:href",y),g.attr("target","_blank"),j$e(n)(v,g,l.x+10,l.height+m,d,20,{class:"actor"},n),m+=30}}return p.attr("height",m),{height:l.height+m,width:d}},"drawPopup"),M$e=o(function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),cb=o(async function(t,e,r=null){let n=t.append("foreignObject"),i=await hh(e.text,mr()),s=n.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(i).node().getBoundingClientRect();if(n.attr("height",Math.round(s.height)).attr("width",Math.round(s.width)),e.class==="noteText"){let l=t.node().firstChild;l.setAttribute("height",s.height+2*e.textMargin);let u=l.getBBox();n.attr("x",Math.round(u.x+u.width/2-s.width/2)).attr("y",Math.round(u.y+u.height/2-s.height/2))}else if(r){let{startx:l,stopx:u,starty:h}=r;if(l>u){let f=l;l=u,u=f}n.attr("x",Math.round(l+Math.abs(l-u)/2-s.width/2)),e.class==="loopText"?n.attr("y",Math.round(h)):n.attr("y",Math.round(h-s.height))}return[n]},"drawKatex"),Cp=o(function(t,e){let r=0,n=0,i=e.text.split(Ze.lineBreakRegex),[a,s]=Mo(e.fontSize),l=[],u=0,h=o(()=>e.y,"yfunc");if(e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0)switch(e.valign){case"top":case"start":h=o(()=>Math.round(e.y+e.textMargin),"yfunc");break;case"middle":case"center":h=o(()=>Math.round(e.y+(r+n+e.textMargin)/2),"yfunc");break;case"bottom":case"end":h=o(()=>Math.round(e.y+(r+n+2*e.textMargin)-e.textMargin),"yfunc");break}if(e.anchor!==void 0&&e.textMargin!==void 0&&e.width!==void 0)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle";break}for(let[f,d]of i.entries()){e.textMargin!==void 0&&e.textMargin===0&&a!==void 0&&(u=f*a);let p=t.append("text");p.attr("x",e.x),p.attr("y",h()),e.anchor!==void 0&&p.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),e.fontFamily!==void 0&&p.style("font-family",e.fontFamily),s!==void 0&&p.style("font-size",s),e.fontWeight!==void 0&&p.style("font-weight",e.fontWeight),e.fill!==void 0&&p.attr("fill",e.fill),e.class!==void 0&&p.attr("class",e.class),e.dy!==void 0?p.attr("dy",e.dy):u!==0&&p.attr("dy",u);let m=d||B9;if(e.tspan){let g=p.append("tspan");g.attr("x",e.x),e.fill!==void 0&&g.attr("fill",e.fill),g.text(m)}else p.text(m);e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0&&(n+=(p._groups||p)[0][0].getBBox().height,r=n),l.push(p)}return l},"drawText"),efe=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=t.append("polygon");return n.attr("points",r(e.x,e.y,e.width,e.height,7)),n.attr("class","labelBox"),e.y=e.y+e.height/2,Cp(t,e),n},"drawLabel"),Gc=-1,yO=o((t,e,r,n)=>{t.select&&r.forEach(i=>{let a=e.get(i),s=t.select("#actor"+a.actorCnt);!n.mirrorActors&&a.stopy?s.attr("y2",a.stopy+a.height/2):n.mirrorActors&&s.attr("y2",a.stopy)})},"fixLifeLineHeights"),I$e=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,l=t.append("g").lower();var u=l;n||(Gc++,Object.keys(e.links||{}).length&&!r.forceMenus&&u.attr("onclick",M$e(`actor${Gc}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+Gc).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),u=l.append("g"),e.actorCnt=Gc,e.links!=null&&u.attr("id","root-"+Gc));let h=xl();var f="actor";e.properties?.class?f=e.properties.class:h.fill="#eaeaea",n?f+=` ${Jhe}`:f+=` ${Zhe}`,h.x=e.x,h.y=i,h.width=e.width,h.height=e.height,h.class=f,h.rx=3,h.ry=3,h.name=e.name;let d=gO(u,h);if(e.rectData=h,e.properties?.icon){let m=e.properties.icon.trim();m.charAt(0)==="@"?wq(u,h.x+h.width-20,h.y+10,m.substr(1)):bq(u,h.x+h.width-20,h.y+10,m)}vO(r,di(e.description))(e.description,u,h.x,h.y,h.width,h.height,{class:`actor ${R$e}`},r);let p=e.height;if(d.node){let m=d.node().getBBox();e.height=m.height,p=m.height}return p},"drawActorTypeParticipant"),O$e=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+80,l=t.append("g").lower();n||(Gc++,l.append("line").attr("id","actor"+Gc).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=Gc);let u=t.append("g"),h=Qhe;n?h+=` ${Jhe}`:h+=` ${Zhe}`,u.attr("class",h),u.attr("name",e.name);let f=xl();f.x=e.x,f.y=i,f.fill="#eaeaea",f.width=e.width,f.height=e.height,f.class="actor",f.rx=3,f.ry=3,u.append("line").attr("id","actor-man-torso"+Gc).attr("x1",a).attr("y1",i+25).attr("x2",a).attr("y2",i+45),u.append("line").attr("id","actor-man-arms"+Gc).attr("x1",a-mf/2).attr("y1",i+33).attr("x2",a+mf/2).attr("y2",i+33),u.append("line").attr("x1",a-mf/2).attr("y1",i+60).attr("x2",a).attr("y2",i+45),u.append("line").attr("x1",a).attr("y1",i+45).attr("x2",a+mf/2-2).attr("y2",i+60);let d=u.append("circle");d.attr("cx",e.x+e.width/2),d.attr("cy",i+10),d.attr("r",15),d.attr("width",e.width),d.attr("height",e.height);let p=u.node().getBBox();return e.height=p.height,vO(r,di(e.description))(e.description,u,f.x,f.y+35,f.width,f.height,{class:`actor ${Qhe}`},r),e.height},"drawActorTypeActor"),P$e=o(async function(t,e,r,n){switch(e.type){case"actor":return await O$e(t,e,r,n);case"participant":return await I$e(t,e,r,n)}},"drawActor"),B$e=o(function(t,e,r){let i=t.append("g");tfe(i,e),e.name&&vO(r)(e.name,i,e.x,e.y+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},r),i.lower()},"drawBox"),F$e=o(function(t){return t.append("g")},"anchorElement"),z$e=o(function(t,e,r,n,i){let a=xl(),s=e.anchored;a.x=e.startx,a.y=e.starty,a.class="activation"+i%3,a.width=e.stopx-e.startx,a.height=r-e.starty,gO(s,a)},"drawActivation"),G$e=o(async function(t,e,r,n){let{boxMargin:i,boxTextMargin:a,labelBoxHeight:s,labelBoxWidth:l,messageFontFamily:u,messageFontSize:h,messageFontWeight:f}=n,d=t.append("g"),p=o(function(y,v,x,b){return d.append("line").attr("x1",y).attr("y1",v).attr("x2",x).attr("y2",b).attr("class","loopLine")},"drawLoopLine");p(e.startx,e.starty,e.stopx,e.starty),p(e.stopx,e.starty,e.stopx,e.stopy),p(e.startx,e.stopy,e.stopx,e.stopy),p(e.startx,e.starty,e.startx,e.stopy),e.sections!==void 0&&e.sections.forEach(function(y){p(e.startx,y.y,e.stopx,y.y).style("stroke-dasharray","3, 3")});let m=Lv();m.text=r,m.x=e.startx,m.y=e.starty,m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.anchor="middle",m.valign="middle",m.tspan=!1,m.width=l||50,m.height=s||20,m.textMargin=a,m.class="labelText",efe(d,m),m=rfe(),m.text=e.title,m.x=e.startx+l/2+(e.stopx-e.startx)/2,m.y=e.starty+i+a,m.anchor="middle",m.valign="middle",m.textMargin=a,m.class="loopText",m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.wrap=!0;let g=di(m.text)?await cb(d,m,e):Cp(d,m);if(e.sectionTitles!==void 0){for(let[y,v]of Object.entries(e.sectionTitles))if(v.message){m.text=v.message,m.x=e.startx+(e.stopx-e.startx)/2,m.y=e.sections[y].y+i+a,m.class="loopText",m.anchor="middle",m.valign="middle",m.tspan=!1,m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.wrap=e.wrap,di(m.text)?(e.starty=e.sections[y].y,await cb(d,m,e)):Cp(d,m);let x=Math.round(g.map(b=>(b._groups||b)[0][0].getBBox().height).reduce((b,w)=>b+w));e.sections[y].height+=x-(i+a)}}return e.height=Math.round(e.stopy-e.starty),d},"drawLoop"),tfe=o(function(t,e){P5(t,e)},"drawBackgroundRect"),$$e=o(function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),V$e=o(function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),U$e=o(function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),H$e=o(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),W$e=o(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),q$e=o(function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertSequenceNumber"),Y$e=o(function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},"insertArrowCrossHead"),rfe=o(function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},"getTextObj"),X$e=o(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),vO=function(){function t(a,s,l,u,h,f,d){let p=s.append("text").attr("x",l+h/2).attr("y",u+f/2+5).style("text-anchor","middle").text(a);i(p,d)}o(t,"byText");function e(a,s,l,u,h,f,d,p){let{actorFontSize:m,actorFontFamily:g,actorFontWeight:y}=p,[v,x]=Mo(m),b=a.split(Ze.lineBreakRegex);for(let w=0;w{let s=Ap(Ne),l=a.actorKeys.reduce((f,d)=>f+=t.get(d).width+(t.get(d).margin||0),0);l-=2*Ne.boxTextMargin,a.wrap&&(a.name=$t.wrapLabel(a.name,l-2*Ne.wrapPadding,s));let u=$t.calculateTextDimensions(a.name,s);i=Ze.getMax(u.height,i);let h=Ze.getMax(l,u.width+2*Ne.wrapPadding);if(a.margin=Ne.boxTextMargin,la.textMaxHeight=i),Ze.getMax(n,Ne.height)}var Ne,rt,K$e,Ap,k1,xO,Z$e,J$e,bO,afe,sfe,m6,ife,tVe,nVe,aVe,sVe,oVe,ofe,lfe=M(()=>{"use strict";hr();nfe();vt();gr();Rv();Gt();r0();sr();Ti();Ne={},rt={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:o(function(){return Math.max.apply(null,this.actors.length===0?[0]:this.actors.map(t=>t.height||0))+(this.loops.length===0?0:this.loops.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.messages.length===0?0:this.messages.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.notes.length===0?0:this.notes.map(t=>t.height||0).reduce((t,e)=>t+e))},"getHeight"),clear:o(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:o(function(t){this.boxes.push(t)},"addBox"),addActor:o(function(t){this.actors.push(t)},"addActor"),addLoop:o(function(t){this.loops.push(t)},"addLoop"),addMessage:o(function(t){this.messages.push(t)},"addMessage"),addNote:o(function(t){this.notes.push(t)},"addNote"),lastActor:o(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:o(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:o(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:o(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:o(function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,sfe(me())},"init"),updateVal:o(function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:o(function(t,e,r,n){let i=this,a=0;function s(l){return o(function(h){a++;let f=i.sequenceItems.length-a+1;i.updateVal(h,"starty",e-f*Ne.boxMargin,Math.min),i.updateVal(h,"stopy",n+f*Ne.boxMargin,Math.max),i.updateVal(rt.data,"startx",t-f*Ne.boxMargin,Math.min),i.updateVal(rt.data,"stopx",r+f*Ne.boxMargin,Math.max),l!=="activation"&&(i.updateVal(h,"startx",t-f*Ne.boxMargin,Math.min),i.updateVal(h,"stopx",r+f*Ne.boxMargin,Math.max),i.updateVal(rt.data,"starty",e-f*Ne.boxMargin,Math.min),i.updateVal(rt.data,"stopy",n+f*Ne.boxMargin,Math.max))},"updateItemBounds")}o(s,"updateFn"),this.sequenceItems.forEach(s()),this.activations.forEach(s("activation"))},"updateBounds"),insert:o(function(t,e,r,n){let i=Ze.getMin(t,r),a=Ze.getMax(t,r),s=Ze.getMin(e,n),l=Ze.getMax(e,n);this.updateVal(rt.data,"startx",i,Math.min),this.updateVal(rt.data,"starty",s,Math.min),this.updateVal(rt.data,"stopx",a,Math.max),this.updateVal(rt.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),newActivation:o(function(t,e,r){let n=r.get(t.from),i=m6(t.from).length||0,a=n.x+n.width/2+(i-1)*Ne.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+Ne.activationWidth,stopy:void 0,actor:t.from,anchored:ui.anchorElement(e)})},"newActivation"),endActivation:o(function(t){let e=this.activations.map(function(r){return r.actor}).lastIndexOf(t.from);return this.activations.splice(e,1)[0]},"endActivation"),createLoop:o(function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},"createLoop"),newLoop:o(function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},"newLoop"),endLoop:o(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:o(function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},"isLoopOverlap"),addSectionToLoop:o(function(t){let e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:rt.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},"addSectionToLoop"),saveVerticalPos:o(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:o(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:o(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=Ze.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return{bounds:this.data,models:this.models}},"getBounds")},K$e=o(async function(t,e){rt.bumpVerticalPos(Ne.boxMargin),e.height=Ne.boxMargin,e.starty=rt.getVerticalPos();let r=xl();r.x=e.startx,r.y=e.starty,r.width=e.width||Ne.width,r.class="note";let n=t.append("g"),i=ui.drawRect(n,r),a=Lv();a.x=e.startx,a.y=e.starty,a.width=r.width,a.dy="1em",a.text=e.message,a.class="noteText",a.fontFamily=Ne.noteFontFamily,a.fontSize=Ne.noteFontSize,a.fontWeight=Ne.noteFontWeight,a.anchor=Ne.noteAlign,a.textMargin=Ne.noteMargin,a.valign="center";let s=di(a.text)?await cb(n,a):Cp(n,a),l=Math.round(s.map(u=>(u._groups||u)[0][0].getBBox().height).reduce((u,h)=>u+h));i.attr("height",l+2*Ne.noteMargin),e.height+=l+2*Ne.noteMargin,rt.bumpVerticalPos(l+2*Ne.noteMargin),e.stopy=e.starty+l+2*Ne.noteMargin,e.stopx=e.startx+r.width,rt.insert(e.startx,e.starty,e.stopx,e.stopy),rt.models.addNote(e)},"drawNote"),Ap=o(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont"),k1=o(t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),"noteFont"),xO=o(t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}),"actorFont");o(Q$e,"boundMessage");Z$e=o(async function(t,e,r,n){let{startx:i,stopx:a,starty:s,message:l,type:u,sequenceIndex:h,sequenceVisible:f}=e,d=$t.calculateTextDimensions(l,Ap(Ne)),p=Lv();p.x=i,p.y=s+10,p.width=a-i,p.class="messageText",p.dy="1em",p.text=l,p.fontFamily=Ne.messageFontFamily,p.fontSize=Ne.messageFontSize,p.fontWeight=Ne.messageFontWeight,p.anchor=Ne.messageAlign,p.valign="center",p.textMargin=Ne.wrapPadding,p.tspan=!1,di(p.text)?await cb(t,p,{startx:i,stopx:a,starty:r}):Cp(t,p);let m=d.width,g;i===a?Ne.rightAngles?g=t.append("path").attr("d",`M ${i},${r} H ${i+Ze.getMax(Ne.width/2,m/2)} V ${r+25} H ${i}`):g=t.append("path").attr("d","M "+i+","+r+" C "+(i+60)+","+(r-10)+" "+(i+60)+","+(r+30)+" "+i+","+(r+20)):(g=t.append("line"),g.attr("x1",i),g.attr("y1",r),g.attr("x2",a),g.attr("y2",r)),u===n.db.LINETYPE.DOTTED||u===n.db.LINETYPE.DOTTED_CROSS||u===n.db.LINETYPE.DOTTED_POINT||u===n.db.LINETYPE.DOTTED_OPEN||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED?(g.style("stroke-dasharray","3, 3"),g.attr("class","messageLine1")):g.attr("class","messageLine0");let y="";Ne.arrowMarkerAbsolute&&(y=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,y=y.replace(/\(/g,"\\("),y=y.replace(/\)/g,"\\)")),g.attr("stroke-width",2),g.attr("stroke","none"),g.style("fill","none"),(u===n.db.LINETYPE.SOLID||u===n.db.LINETYPE.DOTTED)&&g.attr("marker-end","url("+y+"#arrowhead)"),(u===n.db.LINETYPE.BIDIRECTIONAL_SOLID||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(g.attr("marker-start","url("+y+"#arrowhead)"),g.attr("marker-end","url("+y+"#arrowhead)")),(u===n.db.LINETYPE.SOLID_POINT||u===n.db.LINETYPE.DOTTED_POINT)&&g.attr("marker-end","url("+y+"#filled-head)"),(u===n.db.LINETYPE.SOLID_CROSS||u===n.db.LINETYPE.DOTTED_CROSS)&&g.attr("marker-end","url("+y+"#crosshead)"),(f||Ne.showSequenceNumbers)&&(g.attr("marker-start","url("+y+"#sequencenumber)"),t.append("text").attr("x",i).attr("y",r+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(h))},"drawMessage"),J$e=o(function(t,e,r,n,i,a,s){let l=0,u=0,h,f=0;for(let d of n){let p=e.get(d),m=p.box;h&&h!=m&&(s||rt.models.addBox(h),u+=Ne.boxMargin+h.margin),m&&m!=h&&(s||(m.x=l+u,m.y=i),u+=m.margin),p.width=p.width||Ne.width,p.height=Ze.getMax(p.height||Ne.height,Ne.height),p.margin=p.margin||Ne.actorMargin,f=Ze.getMax(f,p.height),r.get(p.name)&&(u+=p.width/2),p.x=l+u,p.starty=rt.getVerticalPos(),rt.insert(p.x,i,p.x+p.width,p.height),l+=p.width+u,p.box&&(p.box.width=l+m.margin-p.box.x),u=p.margin,h=p.box,rt.models.addActor(p)}h&&!s&&rt.models.addBox(h),rt.bumpVerticalPos(f)},"addActorRenderingData"),bO=o(async function(t,e,r,n){if(n){let i=0;rt.bumpVerticalPos(Ne.boxMargin*2);for(let a of r){let s=e.get(a);s.stopy||(s.stopy=rt.getVerticalPos());let l=await ui.drawActor(t,s,Ne,!0);i=Ze.getMax(i,l)}rt.bumpVerticalPos(i+Ne.boxMargin)}else for(let i of r){let a=e.get(i);await ui.drawActor(t,a,Ne,!1)}},"drawActors"),afe=o(function(t,e,r,n){let i=0,a=0;for(let s of r){let l=e.get(s),u=nVe(l),h=ui.drawPopup(t,l,u,Ne,Ne.forceMenus,n);h.height>i&&(i=h.height),h.width+l.x>a&&(a=h.width+l.x)}return{maxHeight:i,maxWidth:a}},"drawActorsPopup"),sfe=o(function(t){$n(Ne,t),t.fontFamily&&(Ne.actorFontFamily=Ne.noteFontFamily=Ne.messageFontFamily=t.fontFamily),t.fontSize&&(Ne.actorFontSize=Ne.noteFontSize=Ne.messageFontSize=t.fontSize),t.fontWeight&&(Ne.actorFontWeight=Ne.noteFontWeight=Ne.messageFontWeight=t.fontWeight)},"setConf"),m6=o(function(t){return rt.activations.filter(function(e){return e.actor===t})},"actorActivations"),ife=o(function(t,e){let r=e.get(t),n=m6(t),i=n.reduce(function(s,l){return Ze.getMin(s,l.startx)},r.x+r.width/2-1),a=n.reduce(function(s,l){return Ze.getMax(s,l.stopx)},r.x+r.width/2+1);return[i,a]},"activationBounds");o($c,"adjustLoopHeightForWrap");o(eVe,"adjustCreatedDestroyedData");tVe=o(async function(t,e,r,n){let{securityLevel:i,sequence:a}=me();Ne=a;let s;i==="sandbox"&&(s=$e("#i"+e));let l=i==="sandbox"?$e(s.nodes()[0].contentDocument.body):$e("body"),u=i==="sandbox"?s.nodes()[0].contentDocument:document;rt.init(),Y.debug(n.db);let h=i==="sandbox"?l.select(`[id="${e}"]`):$e(`[id="${e}"]`),f=n.db.getActors(),d=n.db.getCreatedActors(),p=n.db.getDestroyedActors(),m=n.db.getBoxes(),g=n.db.getActorKeys(),y=n.db.getMessages(),v=n.db.getDiagramTitle(),x=n.db.hasAtLeastOneBox(),b=n.db.hasAtLeastOneBoxWithTitle(),w=await rVe(f,y,n);if(Ne.height=await iVe(f,w,m),ui.insertComputerIcon(h),ui.insertDatabaseIcon(h),ui.insertClockIcon(h),x&&(rt.bumpVerticalPos(Ne.boxMargin),b&&rt.bumpVerticalPos(m[0].textMaxHeight)),Ne.hideUnusedParticipants===!0){let F=new Set;y.forEach(P=>{F.add(P.from),F.add(P.to)}),g=g.filter(P=>F.has(P))}J$e(h,f,d,g,0,y,!1);let C=await oVe(y,f,w,n);ui.insertArrowHead(h),ui.insertArrowCrossHead(h),ui.insertArrowFilledHead(h),ui.insertSequenceNumber(h);function T(F,P){let G=rt.endActivation(F);G.starty+18>P&&(G.starty=P-6,P+=12),ui.drawActivation(h,G,P,Ne,m6(F.from).length),rt.insert(G.startx,P-10,G.stopx,P)}o(T,"activeEnd");let E=1,A=1,S=[],_=[],I=0;for(let F of y){let P,G,z;switch(F.type){case n.db.LINETYPE.NOTE:rt.resetVerticalPos(),G=F.noteModel,await K$e(h,G);break;case n.db.LINETYPE.ACTIVE_START:rt.newActivation(F,h,f);break;case n.db.LINETYPE.ACTIVE_END:T(F,rt.getVerticalPos());break;case n.db.LINETYPE.LOOP_START:$c(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H));break;case n.db.LINETYPE.LOOP_END:P=rt.endLoop(),await ui.drawLoop(h,P,"loop",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;case n.db.LINETYPE.RECT_START:$c(C,F,Ne.boxMargin,Ne.boxMargin,H=>rt.newLoop(void 0,H.message));break;case n.db.LINETYPE.RECT_END:P=rt.endLoop(),_.push(P),rt.models.addLoop(P),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos());break;case n.db.LINETYPE.OPT_START:$c(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H));break;case n.db.LINETYPE.OPT_END:P=rt.endLoop(),await ui.drawLoop(h,P,"opt",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;case n.db.LINETYPE.ALT_START:$c(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H));break;case n.db.LINETYPE.ALT_ELSE:$c(C,F,Ne.boxMargin+Ne.boxTextMargin,Ne.boxMargin,H=>rt.addSectionToLoop(H));break;case n.db.LINETYPE.ALT_END:P=rt.endLoop(),await ui.drawLoop(h,P,"alt",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:$c(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H)),rt.saveVerticalPos();break;case n.db.LINETYPE.PAR_AND:$c(C,F,Ne.boxMargin+Ne.boxTextMargin,Ne.boxMargin,H=>rt.addSectionToLoop(H));break;case n.db.LINETYPE.PAR_END:P=rt.endLoop(),await ui.drawLoop(h,P,"par",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;case n.db.LINETYPE.AUTONUMBER:E=F.message.start||E,A=F.message.step||A,F.message.visible?n.db.enableSequenceNumbers():n.db.disableSequenceNumbers();break;case n.db.LINETYPE.CRITICAL_START:$c(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H));break;case n.db.LINETYPE.CRITICAL_OPTION:$c(C,F,Ne.boxMargin+Ne.boxTextMargin,Ne.boxMargin,H=>rt.addSectionToLoop(H));break;case n.db.LINETYPE.CRITICAL_END:P=rt.endLoop(),await ui.drawLoop(h,P,"critical",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;case n.db.LINETYPE.BREAK_START:$c(C,F,Ne.boxMargin,Ne.boxMargin+Ne.boxTextMargin,H=>rt.newLoop(H));break;case n.db.LINETYPE.BREAK_END:P=rt.endLoop(),await ui.drawLoop(h,P,"break",Ne),rt.bumpVerticalPos(P.stopy-rt.getVerticalPos()),rt.models.addLoop(P);break;default:try{z=F.msgModel,z.starty=rt.getVerticalPos(),z.sequenceIndex=E,z.sequenceVisible=n.db.showSequenceNumbers();let H=await Q$e(h,z);eVe(F,z,H,I,f,d,p),S.push({messageModel:z,lineStartY:H}),rt.models.addMessage(z)}catch(H){Y.error("error while drawing message",H)}}[n.db.LINETYPE.SOLID_OPEN,n.db.LINETYPE.DOTTED_OPEN,n.db.LINETYPE.SOLID,n.db.LINETYPE.DOTTED,n.db.LINETYPE.SOLID_CROSS,n.db.LINETYPE.DOTTED_CROSS,n.db.LINETYPE.SOLID_POINT,n.db.LINETYPE.DOTTED_POINT,n.db.LINETYPE.BIDIRECTIONAL_SOLID,n.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(F.type)&&(E=E+A),I++}Y.debug("createdActors",d),Y.debug("destroyedActors",p),await bO(h,f,g,!1);for(let F of S)await Z$e(h,F.messageModel,F.lineStartY,n);Ne.mirrorActors&&await bO(h,f,g,!0),_.forEach(F=>ui.drawBackgroundRect(h,F)),yO(h,f,g,Ne);for(let F of rt.models.boxes)F.height=rt.getVerticalPos()-F.y,rt.insert(F.x,F.y,F.x+F.width,F.height),F.startx=F.x,F.starty=F.y,F.stopx=F.startx+F.width,F.stopy=F.starty+F.height,F.stroke="rgb(0,0,0, 0.5)",ui.drawBox(h,F,Ne);x&&rt.bumpVerticalPos(Ne.boxMargin);let D=afe(h,f,g,u),{bounds:k}=rt.getBounds();k.startx===void 0&&(k.startx=0),k.starty===void 0&&(k.starty=0),k.stopx===void 0&&(k.stopx=0),k.stopy===void 0&&(k.stopy=0);let L=k.stopy-k.starty;L2,d=o(y=>l?-y:y,"adjustValue");t.from===t.to?h=u:(t.activate&&!f&&(h+=d(Ne.activationWidth/2-1)),[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN].includes(t.type)||(h+=d(3)),[r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type)&&(u-=d(3)));let p=[n,i,a,s],m=Math.abs(u-h);t.wrap&&t.message&&(t.message=$t.wrapLabel(t.message,Ze.getMax(m+2*Ne.wrapPadding,Ne.width),Ap(Ne)));let g=$t.calculateTextDimensions(t.message,Ap(Ne));return{width:Ze.getMax(t.wrap?0:g.width+2*Ne.wrapPadding,m+2*Ne.wrapPadding,Ne.width),height:0,startx:u,stopx:h,starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,p),toBounds:Math.max.apply(null,p)}},"buildMessageModel"),oVe=o(async function(t,e,r,n){let i={},a=[],s,l,u;for(let h of t){switch(h.type){case n.db.LINETYPE.LOOP_START:case n.db.LINETYPE.ALT_START:case n.db.LINETYPE.OPT_START:case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:case n.db.LINETYPE.CRITICAL_START:case n.db.LINETYPE.BREAK_START:a.push({id:h.id,msg:h.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case n.db.LINETYPE.ALT_ELSE:case n.db.LINETYPE.PAR_AND:case n.db.LINETYPE.CRITICAL_OPTION:h.message&&(s=a.pop(),i[s.id]=s,i[h.id]=s,a.push(s));break;case n.db.LINETYPE.LOOP_END:case n.db.LINETYPE.ALT_END:case n.db.LINETYPE.OPT_END:case n.db.LINETYPE.PAR_END:case n.db.LINETYPE.CRITICAL_END:case n.db.LINETYPE.BREAK_END:s=a.pop(),i[s.id]=s;break;case n.db.LINETYPE.ACTIVE_START:{let d=e.get(h.from?h.from:h.to.actor),p=m6(h.from?h.from:h.to.actor).length,m=d.x+d.width/2+(p-1)*Ne.activationWidth/2,g={startx:m,stopx:m+Ne.activationWidth,actor:h.from,enabled:!0};rt.activations.push(g)}break;case n.db.LINETYPE.ACTIVE_END:{let d=rt.activations.map(p=>p.actor).lastIndexOf(h.from);rt.activations.splice(d,1).splice(0,1)}break}h.placement!==void 0?(l=await aVe(h,e,n),h.noteModel=l,a.forEach(d=>{s=d,s.from=Ze.getMin(s.from,l.startx),s.to=Ze.getMax(s.to,l.startx+l.width),s.width=Ze.getMax(s.width,Math.abs(s.from-s.to))-Ne.labelBoxWidth})):(u=sVe(h,e,n),h.msgModel=u,u.startx&&u.stopx&&a.length>0&&a.forEach(d=>{if(s=d,u.startx===u.stopx){let p=e.get(h.from),m=e.get(h.to);s.from=Ze.getMin(p.x-u.width/2,p.x-p.width/2,s.from),s.to=Ze.getMax(m.x+u.width/2,m.x+p.width/2,s.to),s.width=Ze.getMax(s.width,Math.abs(s.to-s.from))-Ne.labelBoxWidth}else s.from=Ze.getMin(u.startx,s.from),s.to=Ze.getMax(u.stopx,s.to),s.width=Ze.getMax(s.width,u.width)-Ne.labelBoxWidth}))}return rt.activations=[],Y.debug("Loop type widths:",i),i},"calculateLoopBounds"),ofe={bounds:rt,drawActors:bO,drawActorsPopup:afe,setConf:sfe,draw:tVe}});var cfe={};pr(cfe,{diagram:()=>lVe});var lVe,ufe=M(()=>{"use strict";Yhe();Xhe();Khe();Gt();lfe();lVe={parser:qhe,get db(){return new p6},renderer:ofe,styles:jhe,init:o(t=>{t.sequence||(t.sequence={}),t.wrap&&(t.sequence.wrap=t.wrap,Gy({sequence:{wrap:t.wrap}}))},"init")}});var wO,g6,TO=M(()=>{"use strict";wO=function(){var t=o(function(Ie,be,W,de){for(W=W||{},de=Ie.length;de--;W[Ie[de]]=be);return W},"o"),e=[1,18],r=[1,19],n=[1,20],i=[1,41],a=[1,42],s=[1,26],l=[1,24],u=[1,25],h=[1,32],f=[1,33],d=[1,34],p=[1,45],m=[1,35],g=[1,36],y=[1,37],v=[1,38],x=[1,27],b=[1,28],w=[1,29],C=[1,30],T=[1,31],E=[1,44],A=[1,46],S=[1,43],_=[1,47],I=[1,9],D=[1,8,9],k=[1,58],L=[1,59],R=[1,60],O=[1,61],N=[1,62],B=[1,63],F=[1,64],P=[1,8,9,41],G=[1,76],z=[1,8,9,12,13,22,39,41,44,66,67,68,69,70,71,72,77,79],H=[1,8,9,12,13,17,20,22,39,41,44,48,58,66,67,68,69,70,71,72,77,79,84,99,101,102],Q=[13,58,84,99,101,102],j=[13,58,71,72,84,99,101,102],ie=[13,58,66,67,68,69,70,84,99,101,102],ne=[1,98],le=[1,115],he=[1,107],K=[1,113],X=[1,108],te=[1,109],J=[1,110],se=[1,111],ue=[1,112],Z=[1,114],Se=[22,58,59,80,84,85,86,87,88,89],ce=[1,8,9,39,41,44],ae=[1,8,9,22],Oe=[1,143],ge=[1,8,9,59],Ge=[1,8,9,22,58,59,80,84,85,86,87,88,89],He={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,DOT:17,className:18,classLiteralName:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,CLASS:46,ANNOTATION_START:47,ANNOTATION_END:48,MEMBER:49,SEPARATOR:50,relation:51,NOTE_FOR:52,noteText:53,NOTE:54,CLASSDEF:55,classList:56,stylesOpt:57,ALPHA:58,COMMA:59,direction_tb:60,direction_bt:61,direction_rl:62,direction_lr:63,relationType:64,lineType:65,AGGREGATION:66,EXTENSION:67,COMPOSITION:68,DEPENDENCY:69,LOLLIPOP:70,LINE:71,DOTTED_LINE:72,CALLBACK:73,LINK:74,LINK_TARGET:75,CLICK:76,CALLBACK_NAME:77,CALLBACK_ARGS:78,HREF:79,STYLE:80,CSSCLASS:81,style:82,styleComponent:83,NUM:84,COLON:85,UNIT:86,SPACE:87,BRKT:88,PCT:89,commentToken:90,textToken:91,graphCodeTokens:92,textNoTagsToken:93,TAGSTART:94,TAGEND:95,"==":96,"--":97,DEFAULT:98,MINUS:99,keywords:100,UNICODE_TEXT:101,BQUOTE_STR:102,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",17:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"CLASS",47:"ANNOTATION_START",48:"ANNOTATION_END",49:"MEMBER",50:"SEPARATOR",52:"NOTE_FOR",54:"NOTE",55:"CLASSDEF",58:"ALPHA",59:"COMMA",60:"direction_tb",61:"direction_bt",62:"direction_rl",63:"direction_lr",66:"AGGREGATION",67:"EXTENSION",68:"COMPOSITION",69:"DEPENDENCY",70:"LOLLIPOP",71:"LINE",72:"DOTTED_LINE",73:"CALLBACK",74:"LINK",75:"LINK_TARGET",76:"CLICK",77:"CALLBACK_NAME",78:"CALLBACK_ARGS",79:"HREF",80:"STYLE",81:"CSSCLASS",84:"NUM",85:"COLON",86:"UNIT",87:"SPACE",88:"BRKT",89:"PCT",92:"graphCodeTokens",94:"TAGSTART",95:"TAGEND",96:"==",97:"--",98:"DEFAULT",99:"MINUS",100:"keywords",101:"UNICODE_TEXT",102:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,3],[15,2],[18,1],[18,3],[18,1],[18,2],[18,2],[18,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,6],[43,2],[43,3],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[56,1],[56,3],[32,1],[32,1],[32,1],[32,1],[51,3],[51,2],[51,2],[51,1],[64,1],[64,1],[64,1],[64,1],[64,1],[65,1],[65,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[57,1],[57,3],[82,1],[82,2],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[90,1],[90,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[93,1],[93,1],[93,1],[93,1],[16,1],[16,1],[16,1],[16,1],[19,1],[53,1]],performAction:o(function(be,W,de,re,oe,V,xe){var q=V.length-1;switch(oe){case 8:this.$=V[q-1];break;case 9:case 12:case 14:this.$=V[q];break;case 10:case 13:this.$=V[q-2]+"."+V[q];break;case 11:case 15:this.$=V[q-1]+V[q];break;case 16:case 17:this.$=V[q-1]+"~"+V[q]+"~";break;case 18:re.addRelation(V[q]);break;case 19:V[q-1].title=re.cleanupLabel(V[q]),re.addRelation(V[q-1]);break;case 30:this.$=V[q].trim(),re.setAccTitle(this.$);break;case 31:case 32:this.$=V[q].trim(),re.setAccDescription(this.$);break;case 33:re.addClassesToNamespace(V[q-3],V[q-1]);break;case 34:re.addClassesToNamespace(V[q-4],V[q-1]);break;case 35:this.$=V[q],re.addNamespace(V[q]);break;case 36:this.$=[V[q]];break;case 37:this.$=[V[q-1]];break;case 38:V[q].unshift(V[q-2]),this.$=V[q];break;case 40:re.setCssClass(V[q-2],V[q]);break;case 41:re.addMembers(V[q-3],V[q-1]);break;case 42:re.setCssClass(V[q-5],V[q-3]),re.addMembers(V[q-5],V[q-1]);break;case 43:this.$=V[q],re.addClass(V[q]);break;case 44:this.$=V[q-1],re.addClass(V[q-1]),re.setClassLabel(V[q-1],V[q]);break;case 45:re.addAnnotation(V[q],V[q-2]);break;case 46:case 59:this.$=[V[q]];break;case 47:V[q].push(V[q-1]),this.$=V[q];break;case 48:break;case 49:re.addMember(V[q-1],re.cleanupLabel(V[q]));break;case 50:break;case 51:break;case 52:this.$={id1:V[q-2],id2:V[q],relation:V[q-1],relationTitle1:"none",relationTitle2:"none"};break;case 53:this.$={id1:V[q-3],id2:V[q],relation:V[q-1],relationTitle1:V[q-2],relationTitle2:"none"};break;case 54:this.$={id1:V[q-3],id2:V[q],relation:V[q-2],relationTitle1:"none",relationTitle2:V[q-1]};break;case 55:this.$={id1:V[q-4],id2:V[q],relation:V[q-2],relationTitle1:V[q-3],relationTitle2:V[q-1]};break;case 56:re.addNote(V[q],V[q-1]);break;case 57:re.addNote(V[q]);break;case 58:this.$=V[q-2],re.defineClass(V[q-1],V[q]);break;case 60:this.$=V[q-2].concat([V[q]]);break;case 61:re.setDirection("TB");break;case 62:re.setDirection("BT");break;case 63:re.setDirection("RL");break;case 64:re.setDirection("LR");break;case 65:this.$={type1:V[q-2],type2:V[q],lineType:V[q-1]};break;case 66:this.$={type1:"none",type2:V[q],lineType:V[q-1]};break;case 67:this.$={type1:V[q-1],type2:"none",lineType:V[q]};break;case 68:this.$={type1:"none",type2:"none",lineType:V[q]};break;case 69:this.$=re.relationType.AGGREGATION;break;case 70:this.$=re.relationType.EXTENSION;break;case 71:this.$=re.relationType.COMPOSITION;break;case 72:this.$=re.relationType.DEPENDENCY;break;case 73:this.$=re.relationType.LOLLIPOP;break;case 74:this.$=re.lineType.LINE;break;case 75:this.$=re.lineType.DOTTED_LINE;break;case 76:case 82:this.$=V[q-2],re.setClickEvent(V[q-1],V[q]);break;case 77:case 83:this.$=V[q-3],re.setClickEvent(V[q-2],V[q-1]),re.setTooltip(V[q-2],V[q]);break;case 78:this.$=V[q-2],re.setLink(V[q-1],V[q]);break;case 79:this.$=V[q-3],re.setLink(V[q-2],V[q-1],V[q]);break;case 80:this.$=V[q-3],re.setLink(V[q-2],V[q-1]),re.setTooltip(V[q-2],V[q]);break;case 81:this.$=V[q-4],re.setLink(V[q-3],V[q-2],V[q]),re.setTooltip(V[q-3],V[q-1]);break;case 84:this.$=V[q-3],re.setClickEvent(V[q-2],V[q-1],V[q]);break;case 85:this.$=V[q-4],re.setClickEvent(V[q-3],V[q-2],V[q-1]),re.setTooltip(V[q-3],V[q]);break;case 86:this.$=V[q-3],re.setLink(V[q-2],V[q]);break;case 87:this.$=V[q-4],re.setLink(V[q-3],V[q-1],V[q]);break;case 88:this.$=V[q-4],re.setLink(V[q-3],V[q-1]),re.setTooltip(V[q-3],V[q]);break;case 89:this.$=V[q-5],re.setLink(V[q-4],V[q-2],V[q]),re.setTooltip(V[q-4],V[q-1]);break;case 90:this.$=V[q-2],re.setCssStyle(V[q-1],V[q]);break;case 91:re.setCssClass(V[q-1],V[q]);break;case 92:this.$=[V[q]];break;case 93:V[q-2].push(V[q]),this.$=V[q-2];break;case 95:this.$=V[q-1]+V[q];break}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,18:21,19:40,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:r,37:n,38:22,42:i,43:23,46:a,47:s,49:l,50:u,52:h,54:f,55:d,58:p,60:m,61:g,62:y,63:v,73:x,74:b,76:w,80:C,81:T,84:E,99:A,101:S,102:_},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(I,[2,5],{8:[1,48]}),{8:[1,49]},t(D,[2,18],{22:[1,50]}),t(D,[2,20]),t(D,[2,21]),t(D,[2,22]),t(D,[2,23]),t(D,[2,24]),t(D,[2,25]),t(D,[2,26]),t(D,[2,27]),t(D,[2,28]),t(D,[2,29]),{34:[1,51]},{36:[1,52]},t(D,[2,32]),t(D,[2,48],{51:53,64:56,65:57,13:[1,54],22:[1,55],66:k,67:L,68:R,69:O,70:N,71:B,72:F}),{39:[1,65]},t(P,[2,39],{39:[1,67],44:[1,66]}),t(D,[2,50]),t(D,[2,51]),{16:68,58:p,84:E,99:A,101:S},{16:39,18:69,19:40,58:p,84:E,99:A,101:S,102:_},{16:39,18:70,19:40,58:p,84:E,99:A,101:S,102:_},{16:39,18:71,19:40,58:p,84:E,99:A,101:S,102:_},{58:[1,72]},{13:[1,73]},{16:39,18:74,19:40,58:p,84:E,99:A,101:S,102:_},{13:G,53:75},{56:77,58:[1,78]},t(D,[2,61]),t(D,[2,62]),t(D,[2,63]),t(D,[2,64]),t(z,[2,12],{16:39,19:40,18:80,17:[1,79],20:[1,81],58:p,84:E,99:A,101:S,102:_}),t(z,[2,14],{20:[1,82]}),{15:83,16:84,58:p,84:E,99:A,101:S},{16:39,18:85,19:40,58:p,84:E,99:A,101:S,102:_},t(H,[2,118]),t(H,[2,119]),t(H,[2,120]),t(H,[2,121]),t([1,8,9,12,13,20,22,39,41,44,66,67,68,69,70,71,72,77,79],[2,122]),t(I,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,18:21,38:22,43:23,16:39,19:40,5:86,33:e,35:r,37:n,42:i,46:a,47:s,49:l,50:u,52:h,54:f,55:d,58:p,60:m,61:g,62:y,63:v,73:x,74:b,76:w,80:C,81:T,84:E,99:A,101:S,102:_}),{5:87,10:5,16:39,18:21,19:40,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:r,37:n,38:22,42:i,43:23,46:a,47:s,49:l,50:u,52:h,54:f,55:d,58:p,60:m,61:g,62:y,63:v,73:x,74:b,76:w,80:C,81:T,84:E,99:A,101:S,102:_},t(D,[2,19]),t(D,[2,30]),t(D,[2,31]),{13:[1,89],16:39,18:88,19:40,58:p,84:E,99:A,101:S,102:_},{51:90,64:56,65:57,66:k,67:L,68:R,69:O,70:N,71:B,72:F},t(D,[2,49]),{65:91,71:B,72:F},t(Q,[2,68],{64:92,66:k,67:L,68:R,69:O,70:N}),t(j,[2,69]),t(j,[2,70]),t(j,[2,71]),t(j,[2,72]),t(j,[2,73]),t(ie,[2,74]),t(ie,[2,75]),{8:[1,94],24:95,40:93,43:23,46:a},{16:96,58:p,84:E,99:A,101:S},{45:97,49:ne},{48:[1,99]},{13:[1,100]},{13:[1,101]},{77:[1,102],79:[1,103]},{22:le,57:104,58:he,80:K,82:105,83:106,84:X,85:te,86:J,87:se,88:ue,89:Z},{58:[1,116]},{13:G,53:117},t(D,[2,57]),t(D,[2,123]),{22:le,57:118,58:he,59:[1,119],80:K,82:105,83:106,84:X,85:te,86:J,87:se,88:ue,89:Z},t(Se,[2,59]),{16:39,18:120,19:40,58:p,84:E,99:A,101:S,102:_},t(z,[2,15]),t(z,[2,16]),t(z,[2,17]),{39:[2,35]},{15:122,16:84,17:[1,121],39:[2,9],58:p,84:E,99:A,101:S},t(ce,[2,43],{11:123,12:[1,124]}),t(I,[2,7]),{9:[1,125]},t(ae,[2,52]),{16:39,18:126,19:40,58:p,84:E,99:A,101:S,102:_},{13:[1,128],16:39,18:127,19:40,58:p,84:E,99:A,101:S,102:_},t(Q,[2,67],{64:129,66:k,67:L,68:R,69:O,70:N}),t(Q,[2,66]),{41:[1,130]},{24:95,40:131,43:23,46:a},{8:[1,132],41:[2,36]},t(P,[2,40],{39:[1,133]}),{41:[1,134]},{41:[2,46],45:135,49:ne},{16:39,18:136,19:40,58:p,84:E,99:A,101:S,102:_},t(D,[2,76],{13:[1,137]}),t(D,[2,78],{13:[1,139],75:[1,138]}),t(D,[2,82],{13:[1,140],78:[1,141]}),{13:[1,142]},t(D,[2,90],{59:Oe}),t(ge,[2,92],{83:144,22:le,58:he,80:K,84:X,85:te,86:J,87:se,88:ue,89:Z}),t(Ge,[2,94]),t(Ge,[2,96]),t(Ge,[2,97]),t(Ge,[2,98]),t(Ge,[2,99]),t(Ge,[2,100]),t(Ge,[2,101]),t(Ge,[2,102]),t(Ge,[2,103]),t(Ge,[2,104]),t(D,[2,91]),t(D,[2,56]),t(D,[2,58],{59:Oe}),{58:[1,145]},t(z,[2,13]),{15:146,16:84,58:p,84:E,99:A,101:S},{39:[2,11]},t(ce,[2,44]),{13:[1,147]},{1:[2,4]},t(ae,[2,54]),t(ae,[2,53]),{16:39,18:148,19:40,58:p,84:E,99:A,101:S,102:_},t(Q,[2,65]),t(D,[2,33]),{41:[1,149]},{24:95,40:150,41:[2,37],43:23,46:a},{45:151,49:ne},t(P,[2,41]),{41:[2,47]},t(D,[2,45]),t(D,[2,77]),t(D,[2,79]),t(D,[2,80],{75:[1,152]}),t(D,[2,83]),t(D,[2,84],{13:[1,153]}),t(D,[2,86],{13:[1,155],75:[1,154]}),{22:le,58:he,80:K,82:156,83:106,84:X,85:te,86:J,87:se,88:ue,89:Z},t(Ge,[2,95]),t(Se,[2,60]),{39:[2,10]},{14:[1,157]},t(ae,[2,55]),t(D,[2,34]),{41:[2,38]},{41:[1,158]},t(D,[2,81]),t(D,[2,85]),t(D,[2,87]),t(D,[2,88],{75:[1,159]}),t(ge,[2,93],{83:144,22:le,58:he,80:K,84:X,85:te,86:J,87:se,88:ue,89:Z}),t(ce,[2,8]),t(P,[2,42]),t(D,[2,89])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],83:[2,35],122:[2,11],125:[2,4],135:[2,47],146:[2,10],150:[2,38]},parseError:o(function(be,W){if(W.recoverable)this.trace(be);else{var de=new Error(be);throw de.hash=W,de}},"parseError"),parse:o(function(be){var W=this,de=[0],re=[],oe=[null],V=[],xe=this.table,q="",pe=0,ve=0,Pe=0,_e=2,we=1,Ve=V.slice.call(arguments,1),De=Object.create(this.lexer),qe={yy:{}};for(var at in this.yy)Object.prototype.hasOwnProperty.call(this.yy,at)&&(qe.yy[at]=this.yy[at]);De.setInput(be,qe.yy),qe.yy.lexer=De,qe.yy.parser=this,typeof De.yylloc>"u"&&(De.yylloc={});var Lt=De.yylloc;V.push(Lt);var st=De.options&&De.options.ranges;typeof qe.yy.parseError=="function"?this.parseError=qe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ue(Tt){de.length=de.length-2*Tt,oe.length=oe.length-Tt,V.length=V.length-Tt}o(Ue,"popStack");function ct(){var Tt;return Tt=re.pop()||De.lex()||we,typeof Tt!="number"&&(Tt instanceof Array&&(re=Tt,Tt=re.pop()),Tt=W.symbols_[Tt]||Tt),Tt}o(ct,"lex");for(var We,ot,Yt,bt,Nt,xt,ut={},Et,ft,yt,nt;;){if(Yt=de[de.length-1],this.defaultActions[Yt]?bt=this.defaultActions[Yt]:((We===null||typeof We>"u")&&(We=ct()),bt=xe[Yt]&&xe[Yt][We]),typeof bt>"u"||!bt.length||!bt[0]){var dn="";nt=[];for(Et in xe[Yt])this.terminals_[Et]&&Et>_e&&nt.push("'"+this.terminals_[Et]+"'");De.showPosition?dn="Parse error on line "+(pe+1)+`: +`+De.showPosition()+` +Expecting `+nt.join(", ")+", got '"+(this.terminals_[We]||We)+"'":dn="Parse error on line "+(pe+1)+": Unexpected "+(We==we?"end of input":"'"+(this.terminals_[We]||We)+"'"),this.parseError(dn,{text:De.match,token:this.terminals_[We]||We,line:De.yylineno,loc:Lt,expected:nt})}if(bt[0]instanceof Array&&bt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Yt+", token: "+We);switch(bt[0]){case 1:de.push(We),oe.push(De.yytext),V.push(De.yylloc),de.push(bt[1]),We=null,ot?(We=ot,ot=null):(ve=De.yyleng,q=De.yytext,pe=De.yylineno,Lt=De.yylloc,Pe>0&&Pe--);break;case 2:if(ft=this.productions_[bt[1]][1],ut.$=oe[oe.length-ft],ut._$={first_line:V[V.length-(ft||1)].first_line,last_line:V[V.length-1].last_line,first_column:V[V.length-(ft||1)].first_column,last_column:V[V.length-1].last_column},st&&(ut._$.range=[V[V.length-(ft||1)].range[0],V[V.length-1].range[1]]),xt=this.performAction.apply(ut,[q,ve,pe,qe.yy,bt[1],oe,V].concat(Ve)),typeof xt<"u")return xt;ft&&(de=de.slice(0,-1*ft*2),oe=oe.slice(0,-1*ft),V=V.slice(0,-1*ft)),de.push(this.productions_[bt[1]][0]),oe.push(ut.$),V.push(ut._$),yt=xe[de[de.length-2]][de[de.length-1]],de.push(yt);break;case 3:return!0}}return!0},"parse")},ze=function(){var Ie={EOF:1,parseError:o(function(W,de){if(this.yy.parser)this.yy.parser.parseError(W,de);else throw new Error(W)},"parseError"),setInput:o(function(be,W){return this.yy=W||this.yy||{},this._input=be,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var be=this._input[0];this.yytext+=be,this.yyleng++,this.offset++,this.match+=be,this.matched+=be;var W=be.match(/(?:\r\n?|\n).*/g);return W?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),be},"input"),unput:o(function(be){var W=be.length,de=be.split(/(?:\r\n?|\n)/g);this._input=be+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-W),this.offset-=W;var re=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),de.length-1&&(this.yylineno-=de.length-1);var oe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:de?(de.length===re.length?this.yylloc.first_column:0)+re[re.length-de.length].length-de[0].length:this.yylloc.first_column-W},this.options.ranges&&(this.yylloc.range=[oe[0],oe[0]+this.yyleng-W]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(be){this.unput(this.match.slice(be))},"less"),pastInput:o(function(){var be=this.matched.substr(0,this.matched.length-this.match.length);return(be.length>20?"...":"")+be.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var be=this.match;return be.length<20&&(be+=this._input.substr(0,20-be.length)),(be.substr(0,20)+(be.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var be=this.pastInput(),W=new Array(be.length+1).join("-");return be+this.upcomingInput()+` +`+W+"^"},"showPosition"),test_match:o(function(be,W){var de,re,oe;if(this.options.backtrack_lexer&&(oe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(oe.yylloc.range=this.yylloc.range.slice(0))),re=be[0].match(/(?:\r\n?|\n).*/g),re&&(this.yylineno+=re.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:re?re[re.length-1].length-re[re.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+be[0].length},this.yytext+=be[0],this.match+=be[0],this.matches=be,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(be[0].length),this.matched+=be[0],de=this.performAction.call(this,this.yy,this,W,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),de)return de;if(this._backtrack){for(var V in oe)this[V]=oe[V];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var be,W,de,re;this._more||(this.yytext="",this.match="");for(var oe=this._currentRules(),V=0;VW[0].length)){if(W=de,re=V,this.options.backtrack_lexer){if(be=this.test_match(de,oe[V]),be!==!1)return be;if(this._backtrack){W=!1;continue}else return!1}else if(!this.options.flex)break}return W?(be=this.test_match(W,oe[re]),be!==!1?be:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var W=this.next();return W||this.lex()},"lex"),begin:o(function(W){this.conditionStack.push(W)},"begin"),popState:o(function(){var W=this.conditionStack.length-1;return W>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(W){return W=this.conditionStack.length-1-Math.abs(W||0),W>=0?this.conditionStack[W]:"INITIAL"},"topState"),pushState:o(function(W){this.begin(W)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(W,de,re,oe){var V=oe;switch(re){case 0:return 60;case 1:return 61;case 2:return 62;case 3:return 63;case 4:break;case 5:break;case 6:return this.begin("acc_title"),33;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),35;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 77;case 22:this.popState();break;case 23:return 78;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 80;case 28:return 55;case 29:return this.begin("namespace"),42;break;case 30:return this.popState(),8;break;case 31:break;case 32:return this.begin("namespace-body"),39;break;case 33:return this.popState(),41;break;case 34:return"EOF_IN_STRUCT";case 35:return 8;case 36:break;case 37:return"EDGE_STATE";case 38:return this.begin("class"),46;break;case 39:return this.popState(),8;break;case 40:break;case 41:return this.popState(),this.popState(),41;break;case 42:return this.begin("class-body"),39;break;case 43:return this.popState(),41;break;case 44:return"EOF_IN_STRUCT";case 45:return"EDGE_STATE";case 46:return"OPEN_IN_STRUCT";case 47:break;case 48:return"MEMBER";case 49:return 81;case 50:return 73;case 51:return 74;case 52:return 76;case 53:return 52;case 54:return 54;case 55:return 47;case 56:return 48;case 57:return 79;case 58:this.popState();break;case 59:return"GENERICTYPE";case 60:this.begin("generic");break;case 61:this.popState();break;case 62:return"BQUOTE_STR";case 63:this.begin("bqstring");break;case 64:return 75;case 65:return 75;case 66:return 75;case 67:return 75;case 68:return 67;case 69:return 67;case 70:return 69;case 71:return 69;case 72:return 68;case 73:return 66;case 74:return 70;case 75:return 71;case 76:return 72;case 77:return 22;case 78:return 44;case 79:return 99;case 80:return 17;case 81:return"PLUS";case 82:return 85;case 83:return 59;case 84:return 88;case 85:return 88;case 86:return 89;case 87:return"EQUALS";case 88:return"EQUALS";case 89:return 58;case 90:return 12;case 91:return 14;case 92:return"PUNCTUATION";case 93:return 84;case 94:return 101;case 95:return 87;case 96:return 87;case 97:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?::)/,/^(?:,)/,/^(?:#)/,/^(?:#)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,33,34,35,36,37,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},namespace:{rules:[26,29,30,31,32,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},"class-body":{rules:[26,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},class:{rules:[26,39,40,41,42,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr:{rules:[9,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_title:{rules:[7,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_args:{rules:[22,23,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_name:{rules:[19,20,21,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},href:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},struct:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},generic:{rules:[26,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},bqstring:{rules:[26,49,50,51,52,53,54,55,56,57,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},string:{rules:[24,25,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!0}}};return Ie}();He.lexer=ze;function Re(){this.yy={}}return o(Re,"Parser"),Re.prototype=He,He.Parser=Re,new Re}();wO.parser=wO;g6=wO});var dfe,ub,pfe=M(()=>{"use strict";Gt();gr();dfe=["#","+","~","-",""],ub=class{static{o(this,"ClassMember")}constructor(e,r){this.memberType=r,this.visibility="",this.classifier="",this.text="";let n=Tr(e,me());this.parseMember(n)}getDisplayDetails(){let e=this.visibility+Jl(this.id);this.memberType==="method"&&(e+=`(${Jl(this.parameters.trim())})`,this.returnType&&(e+=" : "+Jl(this.returnType))),e=e.trim();let r=this.parseClassifier();return{displayText:e,cssStyle:r}}parseMember(e){let r="";if(this.memberType==="method"){let a=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(e);if(a){let s=a[1]?a[1].trim():"";if(dfe.includes(s)&&(this.visibility=s),this.id=a[2],this.parameters=a[3]?a[3].trim():"",r=a[4]?a[4].trim():"",this.returnType=a[5]?a[5].trim():"",r===""){let l=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(l)&&(r=l,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{let i=e.length,a=e.substring(0,1),s=e.substring(i-1);dfe.includes(a)&&(this.visibility=a),/[$*]/.exec(s)&&(r=s),this.id=e.substring(this.visibility===""?0:1,r===""?i:i-1)}this.classifier=r,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();let n=`${this.visibility?"\\"+this.visibility:""}${Jl(this.id)}${this.memberType==="method"?`(${Jl(this.parameters)})${this.returnType?" : "+Jl(this.returnType):""}`:""}`;this.text=n.replaceAll("<","<").replaceAll(">",">"),this.text.startsWith("\\<")&&(this.text=this.text.replace("\\<","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}}});var y6,mfe,_p,E1,kO=M(()=>{"use strict";hr();vt();Gt();gr();sr();ki();pfe();y6="classId-",mfe=0,_p=o(t=>Ze.sanitizeText(t,me()),"sanitizeText"),E1=class{constructor(){this.relations=[];this.classes=new Map;this.styleClasses=new Map;this.notes=[];this.interfaces=[];this.namespaces=new Map;this.namespaceCounter=0;this.functions=[];this.lineType={LINE:0,DOTTED_LINE:1};this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4};this.setupToolTips=o(e=>{let r=$e(".mermaidTooltip");(r._groups||r)[0][0]===null&&(r=$e("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),$e(e).select("svg").selectAll("g.node").on("mouseover",a=>{let s=$e(a.currentTarget);if(s.attr("title")===null)return;let u=this.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.text(s.attr("title")).style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.top-14+document.body.scrollTop+"px"),r.html(r.html().replace(/<br\/>/g,"
    ")),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),$e(a.currentTarget).classed("hover",!1)})},"setupToolTips");this.direction="TB";this.setAccTitle=Mr;this.getAccTitle=Or;this.setAccDescription=Pr;this.getAccDescription=Br;this.setDiagramTitle=Zr;this.getDiagramTitle=Fr;this.getConfig=o(()=>me().class,"getConfig");this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{o(this,"ClassDB")}splitClassNameAndType(e){let r=Ze.sanitizeText(e,me()),n="",i=r;if(r.indexOf("~")>0){let a=r.split("~");i=_p(a[0]),n=_p(a[1])}return{className:i,type:n}}setClassLabel(e,r){let n=Ze.sanitizeText(e,me());r&&(r=_p(r));let{className:i}=this.splitClassNameAndType(n);this.classes.get(i).label=r,this.classes.get(i).text=`${r}${this.classes.get(i).type?`<${this.classes.get(i).type}>`:""}`}addClass(e){let r=Ze.sanitizeText(e,me()),{className:n,type:i}=this.splitClassNameAndType(r);if(this.classes.has(n))return;let a=Ze.sanitizeText(n,me());this.classes.set(a,{id:a,type:i,label:a,text:`${a}${i?`<${i}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:y6+a+"-"+mfe}),mfe++}addInterface(e,r){let n={id:`interface${this.interfaces.length}`,label:e,classId:r};this.interfaces.push(n)}lookUpDomId(e){let r=Ze.sanitizeText(e,me());if(this.classes.has(r))return this.classes.get(r).domId;throw new Error("Class not found: "+r)}clear(){this.relations=[],this.classes=new Map,this.notes=[],this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.direction="TB",Dr()}getClass(e){return this.classes.get(e)}getClasses(){return this.classes}getRelations(){return this.relations}getNotes(){return this.notes}addRelation(e){Y.debug("Adding relation: "+JSON.stringify(e));let r=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];e.relation.type1===this.relationType.LOLLIPOP&&!r.includes(e.relation.type2)?(this.addClass(e.id2),this.addInterface(e.id1,e.id2),e.id1=`interface${this.interfaces.length-1}`):e.relation.type2===this.relationType.LOLLIPOP&&!r.includes(e.relation.type1)?(this.addClass(e.id1),this.addInterface(e.id2,e.id1),e.id2=`interface${this.interfaces.length-1}`):(this.addClass(e.id1),this.addClass(e.id2)),e.id1=this.splitClassNameAndType(e.id1).className,e.id2=this.splitClassNameAndType(e.id2).className,e.relationTitle1=Ze.sanitizeText(e.relationTitle1.trim(),me()),e.relationTitle2=Ze.sanitizeText(e.relationTitle2.trim(),me()),this.relations.push(e)}addAnnotation(e,r){let n=this.splitClassNameAndType(e).className;this.classes.get(n).annotations.push(r)}addMember(e,r){this.addClass(e);let n=this.splitClassNameAndType(e).className,i=this.classes.get(n);if(typeof r=="string"){let a=r.trim();a.startsWith("<<")&&a.endsWith(">>")?i.annotations.push(_p(a.substring(2,a.length-2))):a.indexOf(")")>0?i.methods.push(new ub(a,"method")):a&&i.members.push(new ub(a,"attribute"))}}addMembers(e,r){Array.isArray(r)&&(r.reverse(),r.forEach(n=>this.addMember(e,n)))}addNote(e,r){let n={id:`note${this.notes.length}`,class:r,text:e};this.notes.push(n)}cleanupLabel(e){return e.startsWith(":")&&(e=e.substring(1)),_p(e.trim())}setCssClass(e,r){e.split(",").forEach(n=>{let i=n;/\d/.exec(n[0])&&(i=y6+i);let a=this.classes.get(i);a&&(a.cssClasses+=" "+r)})}defineClass(e,r){for(let n of e){let i=this.styleClasses.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.styleClasses.set(n,i)),r&&r.forEach(a=>{if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.classes.forEach(a=>{a.cssClasses.includes(n)&&a.styles.push(...r.flatMap(s=>s.split(",")))})}}setTooltip(e,r){e.split(",").forEach(n=>{r!==void 0&&(this.classes.get(n).tooltip=_p(r))})}getTooltip(e,r){return r&&this.namespaces.has(r)?this.namespaces.get(r).classes.get(e).tooltip:this.classes.get(e).tooltip}setLink(e,r,n){let i=me();e.split(",").forEach(a=>{let s=a;/\d/.exec(a[0])&&(s=y6+s);let l=this.classes.get(s);l&&(l.link=$t.formatUrl(r,i),i.securityLevel==="sandbox"?l.linkTarget="_top":typeof n=="string"?l.linkTarget=_p(n):l.linkTarget="_blank")}),this.setCssClass(e,"clickable")}setClickEvent(e,r,n){e.split(",").forEach(i=>{this.setClickFunc(i,r,n),this.classes.get(i).haveCallback=!0}),this.setCssClass(e,"clickable")}setClickFunc(e,r,n){let i=Ze.sanitizeText(e,me());if(me().securityLevel!=="loose"||r===void 0)return;let s=i;if(this.classes.has(s)){let l=this.lookUpDomId(s),u=[];if(typeof n=="string"){u=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let h=0;h{let h=document.querySelector(`[id="${l}"]`);h!==null&&h.addEventListener("click",()=>{$t.runFunc(r,...u)},!1)})}}bindFunctions(e){this.functions.forEach(r=>{r(e)})}getDirection(){return this.direction}setDirection(e){this.direction=e}addNamespace(e){this.namespaces.has(e)||(this.namespaces.set(e,{id:e,classes:new Map,children:{},domId:y6+e+"-"+this.namespaceCounter}),this.namespaceCounter++)}getNamespace(e){return this.namespaces.get(e)}getNamespaces(){return this.namespaces}addClassesToNamespace(e,r){if(this.namespaces.has(e))for(let n of r){let{className:i}=this.splitClassNameAndType(n);this.classes.get(i).parent=e,this.namespaces.get(e).classes.set(i,this.classes.get(i))}}setCssStyle(e,r){let n=this.classes.get(e);if(!(!r||!n))for(let i of r)i.includes(",")?n.styles.push(...i.split(",")):n.styles.push(i)}getArrowMarker(e){let r;switch(e){case 0:r="aggregation";break;case 1:r="extension";break;case 2:r="composition";break;case 3:r="dependency";break;case 4:r="lollipop";break;default:r="none"}return r}getData(){let e=[],r=[],n=me();for(let a of this.namespaces.keys()){let s=this.namespaces.get(a);if(s){let l={id:s.id,label:s.id,isGroup:!0,padding:n.class.padding??16,shape:"rect",cssStyles:["fill: none","stroke: black"],look:n.look};e.push(l)}}for(let a of this.classes.keys()){let s=this.classes.get(a);if(s){let l=s;l.parentId=s.parent,l.look=n.look,e.push(l)}}let i=0;for(let a of this.notes){i++;let s={id:a.id,label:a.text,isGroup:!1,shape:"note",padding:n.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${n.themeVariables.noteBkgColor}`,`stroke: ${n.themeVariables.noteBorderColor}`],look:n.look};e.push(s);let l=this.classes.get(a.class)?.id??"";if(l){let u={id:`edgeNote${i}`,start:a.id,end:l,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:n.look};r.push(u)}}for(let a of this.interfaces){let s={id:a.id,label:a.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:n.look};e.push(s)}i=0;for(let a of this.relations){i++;let s={id:Oh(a.id1,a.id2,{prefix:"id",counter:i}),start:a.id1,end:a.id2,type:"normal",label:a.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(a.relation.type1),arrowTypeEnd:this.getArrowMarker(a.relation.type2),startLabelRight:a.relationTitle1==="none"?"":a.relationTitle1,endLabelLeft:a.relationTitle2==="none"?"":a.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:a.style||"",pattern:a.relation.lineType==1?"dashed":"solid",look:n.look};r.push(s)}return{nodes:e,edges:r,other:{},config:n,direction:this.getDirection()}}}});var fVe,v6,EO=M(()=>{"use strict";fVe=o(t=>`g.classGroup text { fill: ${t.nodeBorder||t.classText}; stroke: none; font-family: ${t.fontFamily}; @@ -1474,12 +1522,12 @@ g.classGroup line { font-size: 18px; fill: ${t.textColor}; } -`,"getStyles"),CE=kWe});var EWe,SWe,CWe,AE,BO=M(()=>{"use strict";Vt();ht();j5();Fv();uT();hr();EWe=o((t,e="TB")=>{if(!t.doc)return e;let r=e;for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),SWe=o(function(t,e){return e.db.getClasses()},"getClasses"),CWe=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing class diagram (v3)",e);let{securityLevel:i,state:a,layout:s}=de(),l=n.db.getData(),u=pm(e,i);l.type=n.type,l.layoutAlgorithm=cT(s),l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["aggregation","extension","composition","dependency","lollipop"],l.diagramId=e,await Fm(l,u);let h=8;Ut.insertTitle(u,"classDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),zm(u,h,"classDiagram",a?.useMaxWidth??!0)},"draw"),AE={getClasses:SWe,draw:CWe,getDir:EWe}});var Ade={};vr(Ade,{diagram:()=>AWe});var AWe,_de=M(()=>{"use strict";NO();OO();PO();BO();AWe={parser:kE,db:$g,renderer:AE,styles:CE,init:o(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute,$g.clear()},"init")}});var Nde={};vr(Nde,{diagram:()=>NWe});var NWe,Rde=M(()=>{"use strict";NO();OO();PO();BO();NWe={parser:kE,db:$g,renderer:AE,styles:CE,init:o(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute,$g.clear()},"init")}});var FO,_E,zO=M(()=>{"use strict";FO=function(){var t=o(function(F,B,$,z){for($=$||{},z=F.length;z--;$[F[z]]=B);return $},"o"),e=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,16],u=[1,17],h=[1,18],f=[1,19],d=[1,32],p=[1,20],m=[1,21],g=[1,22],y=[1,23],v=[1,24],x=[1,26],b=[1,27],w=[1,28],_=[1,29],T=[1,30],E=[1,31],L=[1,34],C=[1,35],A=[1,36],I=[1,37],D=[1,33],k=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],R=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],S=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],O={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,classDef:38,CLASSDEF_ID:39,CLASSDEF_STYLEOPTS:40,DEFAULT:41,style:42,STYLE_IDS:43,STYLEDEF_STYLEOPTS:44,class:45,CLASSENTITY_IDS:46,STYLECLASS:47,direction_tb:48,direction_bt:49,direction_rl:50,direction_lr:51,eol:52,";":53,EDGE_STATE:54,STYLE_SEPARATOR:55,left_of:56,right_of:57,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"-->",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"classDef",39:"CLASSDEF_ID",40:"CLASSDEF_STYLEOPTS",41:"DEFAULT",42:"style",43:"STYLE_IDS",44:"STYLEDEF_STYLEOPTS",45:"class",46:"CLASSENTITY_IDS",47:"STYLECLASS",48:"direction_tb",49:"direction_bt",50:"direction_rl",51:"direction_lr",53:";",54:"EDGE_STATE",55:"STYLE_SEPARATOR",56:"left_of",57:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[52,1],[52,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:o(function(B,$,z,W,j,K,ie){var Q=K.length-1;switch(j){case 3:return W.setRootDoc(K[Q]),K[Q];break;case 4:this.$=[];break;case 5:K[Q]!="nl"&&(K[Q-1].push(K[Q]),this.$=K[Q-1]);break;case 6:case 7:this.$=K[Q];break;case 8:this.$="nl";break;case 12:this.$=K[Q];break;case 13:let q=K[Q-1];q.description=W.trimColon(K[Q]),this.$=q;break;case 14:this.$={stmt:"relation",state1:K[Q-2],state2:K[Q]};break;case 15:let Z=W.trimColon(K[Q]);this.$={stmt:"relation",state1:K[Q-3],state2:K[Q-1],description:Z};break;case 19:this.$={stmt:"state",id:K[Q-3],type:"default",description:"",doc:K[Q-1]};break;case 20:var ee=K[Q],J=K[Q-2].trim();if(K[Q].match(":")){var H=K[Q].split(":");ee=H[0],J=[J,H[1]]}this.$={stmt:"state",id:ee,type:"default",description:J};break;case 21:this.$={stmt:"state",id:K[Q-3],type:"default",description:K[Q-5],doc:K[Q-1]};break;case 22:this.$={stmt:"state",id:K[Q],type:"fork"};break;case 23:this.$={stmt:"state",id:K[Q],type:"join"};break;case 24:this.$={stmt:"state",id:K[Q],type:"choice"};break;case 25:this.$={stmt:"state",id:W.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:K[Q-1].trim(),note:{position:K[Q-2].trim(),text:K[Q].trim()}};break;case 29:this.$=K[Q].trim(),W.setAccTitle(this.$);break;case 30:case 31:this.$=K[Q].trim(),W.setAccDescription(this.$);break;case 32:case 33:this.$={stmt:"classDef",id:K[Q-1].trim(),classes:K[Q].trim()};break;case 34:this.$={stmt:"style",id:K[Q-1].trim(),styleClass:K[Q].trim()};break;case 35:this.$={stmt:"applyClass",id:K[Q-1].trim(),styleClass:K[Q].trim()};break;case 36:W.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 37:W.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 38:W.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 39:W.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 42:case 43:this.$={stmt:"state",id:K[Q].trim(),type:"default",description:""};break;case 44:this.$={stmt:"state",id:K[Q-2].trim(),classes:[K[Q].trim()],type:"default",description:""};break;case 45:this.$={stmt:"state",id:K[Q-2].trim(),classes:[K[Q].trim()],type:"default",description:""};break}},"anonymous"),table:[{3:1,4:e,5:r,6:n},{1:[3]},{3:5,4:e,5:r,6:n},{3:6,4:e,5:r,6:n},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:w,38:_,42:T,45:E,48:L,49:C,50:A,51:I,54:D},t(k,[2,5]),{9:38,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:w,38:_,42:T,45:E,48:L,49:C,50:A,51:I,54:D},t(k,[2,7]),t(k,[2,8]),t(k,[2,9]),t(k,[2,10]),t(k,[2,11]),t(k,[2,12],{14:[1,39],15:[1,40]}),t(k,[2,16]),{18:[1,41]},t(k,[2,18],{20:[1,42]}),{23:[1,43]},t(k,[2,22]),t(k,[2,23]),t(k,[2,24]),t(k,[2,25]),{30:44,31:[1,45],56:[1,46],57:[1,47]},t(k,[2,28]),{34:[1,48]},{36:[1,49]},t(k,[2,31]),{39:[1,50],41:[1,51]},{43:[1,52]},{46:[1,53]},t(R,[2,42],{55:[1,54]}),t(R,[2,43],{55:[1,55]}),t(k,[2,36]),t(k,[2,37]),t(k,[2,38]),t(k,[2,39]),t(k,[2,6]),t(k,[2,13]),{13:56,24:d,54:D},t(k,[2,17]),t(S,i,{7:57}),{24:[1,58]},{24:[1,59]},{23:[1,60]},{24:[2,46]},{24:[2,47]},t(k,[2,29]),t(k,[2,30]),{40:[1,61]},{40:[1,62]},{44:[1,63]},{47:[1,64]},{24:[1,65]},{24:[1,66]},t(k,[2,14],{14:[1,67]}),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,68],22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:w,38:_,42:T,45:E,48:L,49:C,50:A,51:I,54:D},t(k,[2,20],{20:[1,69]}),{31:[1,70]},{24:[1,71]},t(k,[2,32]),t(k,[2,33]),t(k,[2,34]),t(k,[2,35]),t(R,[2,44]),t(R,[2,45]),t(k,[2,15]),t(k,[2,19]),t(S,i,{7:72}),t(k,[2,26]),t(k,[2,27]),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,73],22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:w,38:_,42:T,45:E,48:L,49:C,50:A,51:I,54:D},t(k,[2,21])],defaultActions:{5:[2,1],6:[2,2],46:[2,46],47:[2,47]},parseError:o(function(B,$){if($.recoverable)this.trace(B);else{var z=new Error(B);throw z.hash=$,z}},"parseError"),parse:o(function(B){var $=this,z=[0],W=[],j=[null],K=[],ie=this.table,Q="",ee=0,J=0,H=0,q=2,Z=1,ae=K.slice.call(arguments,1),ue=Object.create(this.lexer),ce={yy:{}};for(var te in this.yy)Object.prototype.hasOwnProperty.call(this.yy,te)&&(ce.yy[te]=this.yy[te]);ue.setInput(B,ce.yy),ce.yy.lexer=ue,ce.yy.parser=this,typeof ue.yylloc>"u"&&(ue.yylloc={});var De=ue.yylloc;K.push(De);var oe=ue.options&&ue.options.ranges;typeof ce.yy.parseError=="function"?this.parseError=ce.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ke(Te){z.length=z.length-2*Te,j.length=j.length-Te,K.length=K.length-Te}o(ke,"popStack");function Fe(){var Te;return Te=W.pop()||ue.lex()||Z,typeof Te!="number"&&(Te instanceof Array&&(W=Te,Te=W.pop()),Te=$.symbols_[Te]||Te),Te}o(Fe,"lex");for(var Be,Ve,Ge,He,xe,X,fe={},he,ge,ne,ye;;){if(Ge=z[z.length-1],this.defaultActions[Ge]?He=this.defaultActions[Ge]:((Be===null||typeof Be>"u")&&(Be=Fe()),He=ie[Ge]&&ie[Ge][Be]),typeof He>"u"||!He.length||!He[0]){var U="";ye=[];for(he in ie[Ge])this.terminals_[he]&&he>q&&ye.push("'"+this.terminals_[he]+"'");ue.showPosition?U="Parse error on line "+(ee+1)+`: -`+ue.showPosition()+` -Expecting `+ye.join(", ")+", got '"+(this.terminals_[Be]||Be)+"'":U="Parse error on line "+(ee+1)+": Unexpected "+(Be==Z?"end of input":"'"+(this.terminals_[Be]||Be)+"'"),this.parseError(U,{text:ue.match,token:this.terminals_[Be]||Be,line:ue.yylineno,loc:De,expected:ye})}if(He[0]instanceof Array&&He.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ge+", token: "+Be);switch(He[0]){case 1:z.push(Be),j.push(ue.yytext),K.push(ue.yylloc),z.push(He[1]),Be=null,Ve?(Be=Ve,Ve=null):(J=ue.yyleng,Q=ue.yytext,ee=ue.yylineno,De=ue.yylloc,H>0&&H--);break;case 2:if(ge=this.productions_[He[1]][1],fe.$=j[j.length-ge],fe._$={first_line:K[K.length-(ge||1)].first_line,last_line:K[K.length-1].last_line,first_column:K[K.length-(ge||1)].first_column,last_column:K[K.length-1].last_column},oe&&(fe._$.range=[K[K.length-(ge||1)].range[0],K[K.length-1].range[1]]),X=this.performAction.apply(fe,[Q,J,ee,ce.yy,He[1],j,K].concat(ae)),typeof X<"u")return X;ge&&(z=z.slice(0,-1*ge*2),j=j.slice(0,-1*ge),K=K.slice(0,-1*ge)),z.push(this.productions_[He[1]][0]),j.push(fe.$),K.push(fe._$),ne=ie[z[z.length-2]][z[z.length-1]],z.push(ne);break;case 3:return!0}}return!0},"parse")},N=function(){var F={EOF:1,parseError:o(function($,z){if(this.yy.parser)this.yy.parser.parseError($,z);else throw new Error($)},"parseError"),setInput:o(function(B,$){return this.yy=$||this.yy||{},this._input=B,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var B=this._input[0];this.yytext+=B,this.yyleng++,this.offset++,this.match+=B,this.matched+=B;var $=B.match(/(?:\r\n?|\n).*/g);return $?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),B},"input"),unput:o(function(B){var $=B.length,z=B.split(/(?:\r\n?|\n)/g);this._input=B+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-$),this.offset-=$;var W=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),z.length-1&&(this.yylineno-=z.length-1);var j=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:z?(z.length===W.length?this.yylloc.first_column:0)+W[W.length-z.length].length-z[0].length:this.yylloc.first_column-$},this.options.ranges&&(this.yylloc.range=[j[0],j[0]+this.yyleng-$]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(B){this.unput(this.match.slice(B))},"less"),pastInput:o(function(){var B=this.matched.substr(0,this.matched.length-this.match.length);return(B.length>20?"...":"")+B.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var B=this.match;return B.length<20&&(B+=this._input.substr(0,20-B.length)),(B.substr(0,20)+(B.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var B=this.pastInput(),$=new Array(B.length+1).join("-");return B+this.upcomingInput()+` -`+$+"^"},"showPosition"),test_match:o(function(B,$){var z,W,j;if(this.options.backtrack_lexer&&(j={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(j.yylloc.range=this.yylloc.range.slice(0))),W=B[0].match(/(?:\r\n?|\n).*/g),W&&(this.yylineno+=W.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:W?W[W.length-1].length-W[W.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+B[0].length},this.yytext+=B[0],this.match+=B[0],this.matches=B,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(B[0].length),this.matched+=B[0],z=this.performAction.call(this,this.yy,this,$,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),z)return z;if(this._backtrack){for(var K in j)this[K]=j[K];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var B,$,z,W;this._more||(this.yytext="",this.match="");for(var j=this._currentRules(),K=0;K$[0].length)){if($=z,W=K,this.options.backtrack_lexer){if(B=this.test_match(z,j[K]),B!==!1)return B;if(this._backtrack){$=!1;continue}else return!1}else if(!this.options.flex)break}return $?(B=this.test_match($,j[W]),B!==!1?B:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var $=this.next();return $||this.lex()},"lex"),begin:o(function($){this.conditionStack.push($)},"begin"),popState:o(function(){var $=this.conditionStack.length-1;return $>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function($){return $=this.conditionStack.length-1-Math.abs($||0),$>=0?this.conditionStack[$]:"INITIAL"},"topState"),pushState:o(function($){this.begin($)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function($,z,W,j){var K=j;switch(W){case 0:return 41;case 1:return 48;case 2:return 49;case 3:return 50;case 4:return 51;case 5:break;case 6:break;case 7:return 5;case 8:break;case 9:break;case 10:break;case 11:break;case 12:return this.pushState("SCALE"),17;break;case 13:return 18;case 14:this.popState();break;case 15:return this.begin("acc_title"),33;break;case 16:return this.popState(),"acc_title_value";break;case 17:return this.begin("acc_descr"),35;break;case 18:return this.popState(),"acc_descr_value";break;case 19:this.begin("acc_descr_multiline");break;case 20:this.popState();break;case 21:return"acc_descr_multiline_value";case 22:return this.pushState("CLASSDEF"),38;break;case 23:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 24:return this.popState(),this.pushState("CLASSDEFID"),39;break;case 25:return this.popState(),40;break;case 26:return this.pushState("CLASS"),45;break;case 27:return this.popState(),this.pushState("CLASS_STYLE"),46;break;case 28:return this.popState(),47;break;case 29:return this.pushState("STYLE"),42;break;case 30:return this.popState(),this.pushState("STYLEDEF_STYLES"),43;break;case 31:return this.popState(),44;break;case 32:return this.pushState("SCALE"),17;break;case 33:return 18;case 34:this.popState();break;case 35:this.pushState("STATE");break;case 36:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),25;break;case 37:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),26;break;case 38:return this.popState(),z.yytext=z.yytext.slice(0,-10).trim(),27;break;case 39:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),25;break;case 40:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),26;break;case 41:return this.popState(),z.yytext=z.yytext.slice(0,-10).trim(),27;break;case 42:return 48;case 43:return 49;case 44:return 50;case 45:return 51;case 46:this.pushState("STATE_STRING");break;case 47:return this.pushState("STATE_ID"),"AS";break;case 48:return this.popState(),"ID";break;case 49:this.popState();break;case 50:return"STATE_DESCR";case 51:return 19;case 52:this.popState();break;case 53:return this.popState(),this.pushState("struct"),20;break;case 54:break;case 55:return this.popState(),21;break;case 56:break;case 57:return this.begin("NOTE"),29;break;case 58:return this.popState(),this.pushState("NOTE_ID"),56;break;case 59:return this.popState(),this.pushState("NOTE_ID"),57;break;case 60:this.popState(),this.pushState("FLOATING_NOTE");break;case 61:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";break;case 62:break;case 63:return"NOTE_TEXT";case 64:return this.popState(),"ID";break;case 65:return this.popState(),this.pushState("NOTE_TEXT"),24;break;case 66:return this.popState(),z.yytext=z.yytext.substr(2).trim(),31;break;case 67:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),31;break;case 68:return 6;case 69:return 6;case 70:return 16;case 71:return 54;case 72:return 24;case 73:return z.yytext=z.yytext.trim(),14;break;case 74:return 15;case 75:return 28;case 76:return 55;case 77:return 5;case 78:return"INVALID"}},"anonymous"),rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[9,10],inclusive:!1},struct:{rules:[9,10,22,26,29,35,42,43,44,45,54,55,56,57,71,72,73,74,75],inclusive:!1},FLOATING_NOTE_ID:{rules:[64],inclusive:!1},FLOATING_NOTE:{rules:[61,62,63],inclusive:!1},NOTE_TEXT:{rules:[66,67],inclusive:!1},NOTE_ID:{rules:[65],inclusive:!1},NOTE:{rules:[58,59,60],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[31],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[30],inclusive:!1},CLASS_STYLE:{rules:[28],inclusive:!1},CLASS:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[25],inclusive:!1},CLASSDEF:{rules:[23,24],inclusive:!1},acc_descr_multiline:{rules:[20,21],inclusive:!1},acc_descr:{rules:[18],inclusive:!1},acc_title:{rules:[16],inclusive:!1},SCALE:{rules:[13,14,33,34],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[48],inclusive:!1},STATE_STRING:{rules:[49,50],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[9,10,36,37,38,39,40,41,46,47,51,52,53],inclusive:!1},ID:{rules:[9,10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,10,11,12,15,17,19,22,26,29,32,35,53,57,68,69,70,71,72,73,74,76,77,78],inclusive:!0}}};return F}();O.lexer=N;function P(){this.yy={}}return o(P,"Parser"),P.prototype=O,O.Parser=P,new P}();FO.parser=FO;_E=FO});var Ode,LE,Vg,Sx,Pde,Bde,Fde,_0,DE,GO,$O,VO,UO,HO,NE,RE,zde,Gde,WO,YO,$de,Vde,Ug,OWe,Ude,qO,PWe,BWe,Hde,Wde,FWe,Yde,zWe,qde,XO,jO,Xde,ME,jde,KO,IE=M(()=>{"use strict";Ode="LR",LE="TB",Vg="state",Sx="relation",Pde="classDef",Bde="style",Fde="applyClass",_0="default",DE="divider",GO="fill:none",$O="fill: #333",VO="c",UO="text",HO="normal",NE="rect",RE="rectWithTitle",zde="stateStart",Gde="stateEnd",WO="divider",YO="roundedWithTitle",$de="note",Vde="noteGroup",Ug="statediagram",OWe="state",Ude=`${Ug}-${OWe}`,qO="transition",PWe="note",BWe="note-edge",Hde=`${qO} ${BWe}`,Wde=`${Ug}-${PWe}`,FWe="cluster",Yde=`${Ug}-${FWe}`,zWe="cluster-alt",qde=`${Ug}-${zWe}`,XO="parent",jO="note",Xde="state",ME="----",jde=`${ME}${jO}`,KO=`${ME}${XO}`});function QO(t="",e=0,r="",n=ME){let i=r!==null&&r.length>0?`${n}${r}`:"";return`${Xde}-${t}${i}-${e}`}function OE(t,e,r){if(!e.id||e.id===""||e.id==="")return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(i=>{if(r.get(i)){let a=r.get(i);e.cssCompiledStyles=[...e.cssCompiledStyles,...a.styles]}}));let n=t.find(i=>i.id===e.id);n?Object.assign(n,e):t.push(e)}function $We(t){return t?.classes?.join(" ")??""}function VWe(t){return t?.styles??[]}var PE,gf,GWe,Kde,Hg,Qde,Zde=M(()=>{"use strict";Vt();ht();fr();IE();PE=new Map,gf=0;o(QO,"stateDomId");GWe=o((t,e,r,n,i,a,s,l)=>{Y.trace("items",e),e.forEach(u=>{switch(u.stmt){case Vg:Hg(t,u,r,n,i,a,s,l);break;case _0:Hg(t,u,r,n,i,a,s,l);break;case Sx:{Hg(t,u.state1,r,n,i,a,s,l),Hg(t,u.state2,r,n,i,a,s,l);let h={id:"edge"+gf,start:u.state1.id,end:u.state2.id,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:GO,labelStyle:"",label:je.sanitizeText(u.description,de()),arrowheadStyle:$O,labelpos:VO,labelType:UO,thickness:HO,classes:qO,look:s};i.push(h),gf++}break}})},"setupDoc"),Kde=o((t,e=LE)=>{let r=e;if(t.doc)for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir");o(OE,"insertOrUpdateNode");o($We,"getClassesFromDbInfo");o(VWe,"getStylesFromDbInfo");Hg=o((t,e,r,n,i,a,s,l)=>{let u=e.id,h=r.get(u),f=$We(h),d=VWe(h);if(Y.info("dataFetcher parsedItem",e,h,d),u!=="root"){let p=NE;e.start===!0?p=zde:e.start===!1&&(p=Gde),e.type!==_0&&(p=e.type),PE.get(u)||PE.set(u,{id:u,shape:p,description:je.sanitizeText(u,de()),cssClasses:`${f} ${Ude}`,cssStyles:d});let m=PE.get(u);e.description&&(Array.isArray(m.description)?(m.shape=RE,m.description.push(e.description)):m.description?.length>0?(m.shape=RE,m.description===u?m.description=[e.description]:m.description=[m.description,e.description]):(m.shape=NE,m.description=e.description),m.description=je.sanitizeTextOrArray(m.description,de())),m.description?.length===1&&m.shape===RE&&(m.type==="group"?m.shape=YO:m.shape=NE),!m.type&&e.doc&&(Y.info("Setting cluster for XCX",u,Kde(e)),m.type="group",m.isGroup=!0,m.dir=Kde(e),m.shape=e.type===DE?WO:YO,m.cssClasses=`${m.cssClasses} ${Yde} ${a?qde:""}`);let g={labelStyle:"",shape:m.shape,label:m.description,cssClasses:m.cssClasses,cssCompiledStyles:[],cssStyles:m.cssStyles,id:u,dir:m.dir,domId:QO(u,gf),type:m.type,isGroup:m.type==="group",padding:8,rx:10,ry:10,look:s};if(g.shape===WO&&(g.label=""),t&&t.id!=="root"&&(Y.trace("Setting node ",u," to be child of its parent ",t.id),g.parentId=t.id),g.centerLabel=!0,e.note){let y={labelStyle:"",shape:$de,label:e.note.text,cssClasses:Wde,cssStyles:[],cssCompilesStyles:[],id:u+jde+"-"+gf,domId:QO(u,gf,jO),type:m.type,isGroup:m.type==="group",padding:de().flowchart.padding,look:s,position:e.note.position},v=u+KO,x={labelStyle:"",shape:Vde,label:e.note.text,cssClasses:m.cssClasses,cssStyles:[],id:u+KO,domId:QO(u,gf,XO),type:"group",isGroup:!0,padding:16,look:s,position:e.note.position};gf++,x.id=v,y.parentId=v,OE(n,x,l),OE(n,y,l),OE(n,g,l);let b=u,w=y.id;e.note.position==="left of"&&(b=y.id,w=u),i.push({id:b+"-"+w,start:b,end:w,arrowhead:"none",arrowTypeEnd:"",style:GO,labelStyle:"",classes:Hde,arrowheadStyle:$O,labelpos:VO,labelType:UO,thickness:HO,look:s})}else OE(n,g,l)}e.doc&&(Y.trace("Adding nodes children "),GWe(e,e.doc,r,n,i,!a,s,l))},"dataFetcher"),Qde=o(()=>{PE.clear(),gf=0},"reset")});var ZO,UWe,HWe,Jde,JO=M(()=>{"use strict";Vt();ht();j5();Fv();uT();hr();IE();ZO=o((t,e=LE)=>{if(!t.doc)return e;let r=e;for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),UWe=o(function(t,e){return e.db.extract(e.db.getRootDocV2()),e.db.getClasses()},"getClasses"),HWe=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing state diagram (v2)",e);let{securityLevel:i,state:a,layout:s}=de();n.db.extract(n.db.getRootDocV2());let l=n.db.getData(),u=pm(e,i);l.type=n.type,l.layoutAlgorithm=s,l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["barb"],l.diagramId=e,await Fm(l,u);let h=8;Ut.insertTitle(u,"statediagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),zm(u,h,Ug,a?.useMaxWidth??!0)},"draw"),Jde={getClasses:UWe,draw:HWe,getDir:ZO}});function s0e(){return new Map}function eP(t=""){let e=t;return t===nP&&(Cx++,e=`${n0e}${Cx}`),e}function tP(t="",e=_0){return t===nP?n0e:e}function eYe(t=""){let e=t;return t===i0e&&(Cx++,e=`${a0e}${Cx}`),e}function tYe(t="",e=_0){return t===i0e?a0e:e}function rYe(t,e,r){let n=eP(t.id.trim()),i=tP(t.id.trim(),t.type),a=eP(e.id.trim()),s=tP(e.id.trim(),e.type);yf(n,i,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),yf(a,s,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),zs.relations.push({id1:n,id2:a,relationTitle:je.sanitizeText(r,de())})}var nP,n0e,i0e,a0e,e0e,t0e,WWe,YWe,zE,iP,o0e,GE,Wg,l0e,$E,zs,Cx,r0e,qWe,XWe,BE,jWe,KWe,FE,aP,QWe,yf,c0e,L0,u0e,ZWe,JWe,h0e,rP,nYe,iYe,f0e,aYe,sP,sYe,oYe,lYe,cYe,uYe,hYe,tl,VE=M(()=>{"use strict";ht();hr();fr();Vt();ki();Zde();JO();IE();nP="[*]",n0e="start",i0e=nP,a0e="end",e0e="color",t0e="fill",WWe="bgFill",YWe=",";o(s0e,"newClassesList");zE=[],iP=[],o0e=Ode,GE=[],Wg=s0e(),l0e=o(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),$E={root:l0e()},zs=$E.root,Cx=0,r0e=0,qWe={LINE:0,DOTTED_LINE:1},XWe={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},BE=o(t=>JSON.parse(JSON.stringify(t)),"clone"),jWe=o(t=>{Y.info("Setting root doc",t),GE=t},"setRootDoc"),KWe=o(()=>GE,"getRootDoc"),FE=o((t,e,r)=>{if(e.stmt===Sx)FE(t,e.state1,!0),FE(t,e.state2,!1);else if(e.stmt===Vg&&(e.id==="[*]"?(e.id=r?t.id+"_start":t.id+"_end",e.start=r):e.id=e.id.trim()),e.doc){let n=[],i=[],a;for(a=0;a0&&i.length>0){let s={stmt:Vg,id:e9(),type:"divider",doc:BE(i)};n.push(BE(s)),e.doc=n}e.doc.forEach(s=>FE(e,s,!0))}},"docTranslator"),aP=o(()=>(FE({id:"root"},{id:"root",doc:GE},!0),{id:"root",doc:GE}),"getRootDocV2"),QWe=o(t=>{let e;t.doc?e=t.doc:e=t,Y.info(e),c0e(!0),Y.info("Extract initial document:",e),e.forEach(a=>{switch(Y.warn("Statement",a.stmt),a.stmt){case Vg:yf(a.id.trim(),a.type,a.doc,a.description,a.note,a.classes,a.styles,a.textStyles);break;case Sx:h0e(a.state1,a.state2,a.description);break;case Pde:f0e(a.id.trim(),a.classes);break;case Bde:{let s=a.id.trim().split(","),l=a.styleClass.split(",");s.forEach(u=>{let h=L0(u);if(h===void 0){let f=u.trim();yf(f),h=L0(f)}h.styles=l.map(f=>f.replace(/;/g,"")?.trim())})}break;case Fde:sP(a.id.trim(),a.styleClass);break}});let r=u0e(),i=de().look;Qde(),Hg(void 0,aP(),r,zE,iP,!0,i,Wg),zE.forEach(a=>{if(Array.isArray(a.label)){if(a.description=a.label.slice(1),a.isGroup&&a.description.length>0)throw new Error("Group nodes can only have label. Remove the additional description for node ["+a.id+"]");a.label=a.label[0]}})},"extract"),yf=o(function(t,e=_0,r=null,n=null,i=null,a=null,s=null,l=null){let u=t?.trim();if(zs.states.has(u)?(zs.states.get(u).doc||(zs.states.get(u).doc=r),zs.states.get(u).type||(zs.states.get(u).type=e)):(Y.info("Adding state ",u,n),zs.states.set(u,{id:u,descriptions:[],type:e,doc:r,note:i,classes:[],styles:[],textStyles:[]})),n&&(Y.info("Setting state description",u,n),typeof n=="string"&&rP(u,n.trim()),typeof n=="object"&&n.forEach(h=>rP(u,h.trim()))),i){let h=zs.states.get(u);h.note=i,h.note.text=je.sanitizeText(h.note.text,de())}a&&(Y.info("Setting state classes",u,a),(typeof a=="string"?[a]:a).forEach(f=>sP(u,f.trim()))),s&&(Y.info("Setting state styles",u,s),(typeof s=="string"?[s]:s).forEach(f=>sYe(u,f.trim()))),l&&(Y.info("Setting state styles",u,s),(typeof l=="string"?[l]:l).forEach(f=>oYe(u,f.trim())))},"addState"),c0e=o(function(t){zE=[],iP=[],$E={root:l0e()},zs=$E.root,Cx=0,Wg=s0e(),t||_r()},"clear"),L0=o(function(t){return zs.states.get(t)},"getState"),u0e=o(function(){return zs.states},"getStates"),ZWe=o(function(){Y.info("Documents = ",$E)},"logDocuments"),JWe=o(function(){return zs.relations},"getRelations");o(eP,"startIdIfNeeded");o(tP,"startTypeIfNeeded");o(eYe,"endIdIfNeeded");o(tYe,"endTypeIfNeeded");o(rYe,"addRelationObjs");h0e=o(function(t,e,r){if(typeof t=="object")rYe(t,e,r);else{let n=eP(t.trim()),i=tP(t),a=eYe(e.trim()),s=tYe(e);yf(n,i),yf(a,s),zs.relations.push({id1:n,id2:a,title:je.sanitizeText(r,de())})}},"addRelation"),rP=o(function(t,e){let r=zs.states.get(t),n=e.startsWith(":")?e.replace(":","").trim():e;r.descriptions.push(je.sanitizeText(n,de()))},"addDescription"),nYe=o(function(t){return t.substring(0,1)===":"?t.substr(2).trim():t.trim()},"cleanupLabel"),iYe=o(()=>(r0e++,"divider-id-"+r0e),"getDividerId"),f0e=o(function(t,e=""){Wg.has(t)||Wg.set(t,{id:t,styles:[],textStyles:[]});let r=Wg.get(t);e?.split(YWe).forEach(n=>{let i=n.replace(/([^;]*);/,"$1").trim();if(RegExp(e0e).exec(n)){let s=i.replace(t0e,WWe).replace(e0e,t0e);r.textStyles.push(s)}r.styles.push(i)})},"addStyleClass"),aYe=o(function(){return Wg},"getClasses"),sP=o(function(t,e){t.split(",").forEach(function(r){let n=L0(r);if(n===void 0){let i=r.trim();yf(i),n=L0(i)}n.classes.push(e)})},"setCssClass"),sYe=o(function(t,e){let r=L0(t);r!==void 0&&r.styles.push(e)},"setStyle"),oYe=o(function(t,e){let r=L0(t);r!==void 0&&r.textStyles.push(e)},"setTextStyle"),lYe=o(()=>o0e,"getDirection"),cYe=o(t=>{o0e=t},"setDirection"),uYe=o(t=>t&&t[0]===":"?t.substr(1).trim():t.trim(),"trimColon"),hYe=o(()=>{let t=de();return{nodes:zE,edges:iP,other:{},config:t,direction:ZO(aP())}},"getData"),tl={getConfig:o(()=>de().state,"getConfig"),getData:hYe,addState:yf,clear:c0e,getState:L0,getStates:u0e,getRelations:JWe,getClasses:aYe,getDirection:lYe,addRelation:h0e,getDividerId:iYe,setDirection:cYe,cleanupLabel:nYe,lineType:qWe,relationType:XWe,logDocuments:ZWe,getRootDoc:KWe,setRootDoc:jWe,getRootDocV2:aP,extract:QWe,trimColon:uYe,getAccTitle:Pr,setAccTitle:Rr,getAccDescription:Fr,setAccDescription:Br,addStyleClass:f0e,setCssClass:sP,addDescription:rP,setDiagramTitle:ln,getDiagramTitle:Jr}});var fYe,UE,oP=M(()=>{"use strict";fYe=o(t=>` +`,"getStyles"),v6=fVe});var dVe,pVe,mVe,x6,SO=M(()=>{"use strict";Gt();vt();hm();Hd();Im();sr();dVe=o((t,e="TB")=>{if(!t.doc)return e;let r=e;for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),pVe=o(function(t,e){return e.db.getClasses()},"getClasses"),mVe=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing class diagram (v3)",e);let{securityLevel:i,state:a,layout:s}=me(),l=n.db.getData(),u=gc(e,i);l.type=n.type,l.layoutAlgorithm=Jh(s),l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["aggregation","extension","composition","dependency","lollipop"],l.diagramId=e,await Sc(l,u);let h=8;$t.insertTitle(u,"classDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Cc(u,h,"classDiagram",a?.useMaxWidth??!0)},"draw"),x6={getClasses:pVe,draw:mVe,getDir:dVe}});var gfe={};pr(gfe,{diagram:()=>gVe});var gVe,yfe=M(()=>{"use strict";TO();kO();EO();SO();gVe={parser:g6,get db(){return new E1},renderer:x6,styles:v6,init:o(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var bfe={};pr(bfe,{diagram:()=>bVe});var bVe,wfe=M(()=>{"use strict";TO();kO();EO();SO();bVe={parser:g6,get db(){return new E1},renderer:x6,styles:v6,init:o(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var CO,b6,AO=M(()=>{"use strict";CO=function(){var t=o(function(F,P,G,z){for(G=G||{},z=F.length;z--;G[F[z]]=P);return G},"o"),e=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,16],u=[1,17],h=[1,18],f=[1,19],d=[1,32],p=[1,20],m=[1,21],g=[1,22],y=[1,23],v=[1,24],x=[1,26],b=[1,27],w=[1,28],C=[1,29],T=[1,30],E=[1,31],A=[1,34],S=[1,35],_=[1,36],I=[1,37],D=[1,33],k=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],L=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],R=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],O={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,classDef:38,CLASSDEF_ID:39,CLASSDEF_STYLEOPTS:40,DEFAULT:41,style:42,STYLE_IDS:43,STYLEDEF_STYLEOPTS:44,class:45,CLASSENTITY_IDS:46,STYLECLASS:47,direction_tb:48,direction_bt:49,direction_rl:50,direction_lr:51,eol:52,";":53,EDGE_STATE:54,STYLE_SEPARATOR:55,left_of:56,right_of:57,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"-->",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"classDef",39:"CLASSDEF_ID",40:"CLASSDEF_STYLEOPTS",41:"DEFAULT",42:"style",43:"STYLE_IDS",44:"STYLEDEF_STYLEOPTS",45:"class",46:"CLASSENTITY_IDS",47:"STYLECLASS",48:"direction_tb",49:"direction_bt",50:"direction_rl",51:"direction_lr",53:";",54:"EDGE_STATE",55:"STYLE_SEPARATOR",56:"left_of",57:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[52,1],[52,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:o(function(P,G,z,H,Q,j,ie){var ne=j.length-1;switch(Q){case 3:return H.setRootDoc(j[ne]),j[ne];break;case 4:this.$=[];break;case 5:j[ne]!="nl"&&(j[ne-1].push(j[ne]),this.$=j[ne-1]);break;case 6:case 7:this.$=j[ne];break;case 8:this.$="nl";break;case 12:this.$=j[ne];break;case 13:let X=j[ne-1];X.description=H.trimColon(j[ne]),this.$=X;break;case 14:this.$={stmt:"relation",state1:j[ne-2],state2:j[ne]};break;case 15:let te=H.trimColon(j[ne]);this.$={stmt:"relation",state1:j[ne-3],state2:j[ne-1],description:te};break;case 19:this.$={stmt:"state",id:j[ne-3],type:"default",description:"",doc:j[ne-1]};break;case 20:var le=j[ne],he=j[ne-2].trim();if(j[ne].match(":")){var K=j[ne].split(":");le=K[0],he=[he,K[1]]}this.$={stmt:"state",id:le,type:"default",description:he};break;case 21:this.$={stmt:"state",id:j[ne-3],type:"default",description:j[ne-5],doc:j[ne-1]};break;case 22:this.$={stmt:"state",id:j[ne],type:"fork"};break;case 23:this.$={stmt:"state",id:j[ne],type:"join"};break;case 24:this.$={stmt:"state",id:j[ne],type:"choice"};break;case 25:this.$={stmt:"state",id:H.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:j[ne-1].trim(),note:{position:j[ne-2].trim(),text:j[ne].trim()}};break;case 29:this.$=j[ne].trim(),H.setAccTitle(this.$);break;case 30:case 31:this.$=j[ne].trim(),H.setAccDescription(this.$);break;case 32:case 33:this.$={stmt:"classDef",id:j[ne-1].trim(),classes:j[ne].trim()};break;case 34:this.$={stmt:"style",id:j[ne-1].trim(),styleClass:j[ne].trim()};break;case 35:this.$={stmt:"applyClass",id:j[ne-1].trim(),styleClass:j[ne].trim()};break;case 36:H.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 37:H.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 38:H.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 39:H.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 42:case 43:this.$={stmt:"state",id:j[ne].trim(),type:"default",description:""};break;case 44:this.$={stmt:"state",id:j[ne-2].trim(),classes:[j[ne].trim()],type:"default",description:""};break;case 45:this.$={stmt:"state",id:j[ne-2].trim(),classes:[j[ne].trim()],type:"default",description:""};break}},"anonymous"),table:[{3:1,4:e,5:r,6:n},{1:[3]},{3:5,4:e,5:r,6:n},{3:6,4:e,5:r,6:n},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:w,38:C,42:T,45:E,48:A,49:S,50:_,51:I,54:D},t(k,[2,5]),{9:38,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:w,38:C,42:T,45:E,48:A,49:S,50:_,51:I,54:D},t(k,[2,7]),t(k,[2,8]),t(k,[2,9]),t(k,[2,10]),t(k,[2,11]),t(k,[2,12],{14:[1,39],15:[1,40]}),t(k,[2,16]),{18:[1,41]},t(k,[2,18],{20:[1,42]}),{23:[1,43]},t(k,[2,22]),t(k,[2,23]),t(k,[2,24]),t(k,[2,25]),{30:44,31:[1,45],56:[1,46],57:[1,47]},t(k,[2,28]),{34:[1,48]},{36:[1,49]},t(k,[2,31]),{39:[1,50],41:[1,51]},{43:[1,52]},{46:[1,53]},t(L,[2,42],{55:[1,54]}),t(L,[2,43],{55:[1,55]}),t(k,[2,36]),t(k,[2,37]),t(k,[2,38]),t(k,[2,39]),t(k,[2,6]),t(k,[2,13]),{13:56,24:d,54:D},t(k,[2,17]),t(R,i,{7:57}),{24:[1,58]},{24:[1,59]},{23:[1,60]},{24:[2,46]},{24:[2,47]},t(k,[2,29]),t(k,[2,30]),{40:[1,61]},{40:[1,62]},{44:[1,63]},{47:[1,64]},{24:[1,65]},{24:[1,66]},t(k,[2,14],{14:[1,67]}),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,68],22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:w,38:C,42:T,45:E,48:A,49:S,50:_,51:I,54:D},t(k,[2,20],{20:[1,69]}),{31:[1,70]},{24:[1,71]},t(k,[2,32]),t(k,[2,33]),t(k,[2,34]),t(k,[2,35]),t(L,[2,44]),t(L,[2,45]),t(k,[2,15]),t(k,[2,19]),t(R,i,{7:72}),t(k,[2,26]),t(k,[2,27]),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,73],22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:w,38:C,42:T,45:E,48:A,49:S,50:_,51:I,54:D},t(k,[2,21])],defaultActions:{5:[2,1],6:[2,2],46:[2,46],47:[2,47]},parseError:o(function(P,G){if(G.recoverable)this.trace(P);else{var z=new Error(P);throw z.hash=G,z}},"parseError"),parse:o(function(P){var G=this,z=[0],H=[],Q=[null],j=[],ie=this.table,ne="",le=0,he=0,K=0,X=2,te=1,J=j.slice.call(arguments,1),se=Object.create(this.lexer),ue={yy:{}};for(var Z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Z)&&(ue.yy[Z]=this.yy[Z]);se.setInput(P,ue.yy),ue.yy.lexer=se,ue.yy.parser=this,typeof se.yylloc>"u"&&(se.yylloc={});var Se=se.yylloc;j.push(Se);var ce=se.options&&se.options.ranges;typeof ue.yy.parseError=="function"?this.parseError=ue.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ae(xe){z.length=z.length-2*xe,Q.length=Q.length-xe,j.length=j.length-xe}o(ae,"popStack");function Oe(){var xe;return xe=H.pop()||se.lex()||te,typeof xe!="number"&&(xe instanceof Array&&(H=xe,xe=H.pop()),xe=G.symbols_[xe]||xe),xe}o(Oe,"lex");for(var ge,Ge,He,ze,Re,Ie,be={},W,de,re,oe;;){if(He=z[z.length-1],this.defaultActions[He]?ze=this.defaultActions[He]:((ge===null||typeof ge>"u")&&(ge=Oe()),ze=ie[He]&&ie[He][ge]),typeof ze>"u"||!ze.length||!ze[0]){var V="";oe=[];for(W in ie[He])this.terminals_[W]&&W>X&&oe.push("'"+this.terminals_[W]+"'");se.showPosition?V="Parse error on line "+(le+1)+`: +`+se.showPosition()+` +Expecting `+oe.join(", ")+", got '"+(this.terminals_[ge]||ge)+"'":V="Parse error on line "+(le+1)+": Unexpected "+(ge==te?"end of input":"'"+(this.terminals_[ge]||ge)+"'"),this.parseError(V,{text:se.match,token:this.terminals_[ge]||ge,line:se.yylineno,loc:Se,expected:oe})}if(ze[0]instanceof Array&&ze.length>1)throw new Error("Parse Error: multiple actions possible at state: "+He+", token: "+ge);switch(ze[0]){case 1:z.push(ge),Q.push(se.yytext),j.push(se.yylloc),z.push(ze[1]),ge=null,Ge?(ge=Ge,Ge=null):(he=se.yyleng,ne=se.yytext,le=se.yylineno,Se=se.yylloc,K>0&&K--);break;case 2:if(de=this.productions_[ze[1]][1],be.$=Q[Q.length-de],be._$={first_line:j[j.length-(de||1)].first_line,last_line:j[j.length-1].last_line,first_column:j[j.length-(de||1)].first_column,last_column:j[j.length-1].last_column},ce&&(be._$.range=[j[j.length-(de||1)].range[0],j[j.length-1].range[1]]),Ie=this.performAction.apply(be,[ne,he,le,ue.yy,ze[1],Q,j].concat(J)),typeof Ie<"u")return Ie;de&&(z=z.slice(0,-1*de*2),Q=Q.slice(0,-1*de),j=j.slice(0,-1*de)),z.push(this.productions_[ze[1]][0]),Q.push(be.$),j.push(be._$),re=ie[z[z.length-2]][z[z.length-1]],z.push(re);break;case 3:return!0}}return!0},"parse")},N=function(){var F={EOF:1,parseError:o(function(G,z){if(this.yy.parser)this.yy.parser.parseError(G,z);else throw new Error(G)},"parseError"),setInput:o(function(P,G){return this.yy=G||this.yy||{},this._input=P,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var P=this._input[0];this.yytext+=P,this.yyleng++,this.offset++,this.match+=P,this.matched+=P;var G=P.match(/(?:\r\n?|\n).*/g);return G?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),P},"input"),unput:o(function(P){var G=P.length,z=P.split(/(?:\r\n?|\n)/g);this._input=P+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-G),this.offset-=G;var H=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),z.length-1&&(this.yylineno-=z.length-1);var Q=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:z?(z.length===H.length?this.yylloc.first_column:0)+H[H.length-z.length].length-z[0].length:this.yylloc.first_column-G},this.options.ranges&&(this.yylloc.range=[Q[0],Q[0]+this.yyleng-G]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(P){this.unput(this.match.slice(P))},"less"),pastInput:o(function(){var P=this.matched.substr(0,this.matched.length-this.match.length);return(P.length>20?"...":"")+P.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var P=this.match;return P.length<20&&(P+=this._input.substr(0,20-P.length)),(P.substr(0,20)+(P.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var P=this.pastInput(),G=new Array(P.length+1).join("-");return P+this.upcomingInput()+` +`+G+"^"},"showPosition"),test_match:o(function(P,G){var z,H,Q;if(this.options.backtrack_lexer&&(Q={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Q.yylloc.range=this.yylloc.range.slice(0))),H=P[0].match(/(?:\r\n?|\n).*/g),H&&(this.yylineno+=H.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:H?H[H.length-1].length-H[H.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+P[0].length},this.yytext+=P[0],this.match+=P[0],this.matches=P,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(P[0].length),this.matched+=P[0],z=this.performAction.call(this,this.yy,this,G,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),z)return z;if(this._backtrack){for(var j in Q)this[j]=Q[j];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var P,G,z,H;this._more||(this.yytext="",this.match="");for(var Q=this._currentRules(),j=0;jG[0].length)){if(G=z,H=j,this.options.backtrack_lexer){if(P=this.test_match(z,Q[j]),P!==!1)return P;if(this._backtrack){G=!1;continue}else return!1}else if(!this.options.flex)break}return G?(P=this.test_match(G,Q[H]),P!==!1?P:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var G=this.next();return G||this.lex()},"lex"),begin:o(function(G){this.conditionStack.push(G)},"begin"),popState:o(function(){var G=this.conditionStack.length-1;return G>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(G){return G=this.conditionStack.length-1-Math.abs(G||0),G>=0?this.conditionStack[G]:"INITIAL"},"topState"),pushState:o(function(G){this.begin(G)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(G,z,H,Q){var j=Q;switch(H){case 0:return 41;case 1:return 48;case 2:return 49;case 3:return 50;case 4:return 51;case 5:break;case 6:break;case 7:return 5;case 8:break;case 9:break;case 10:break;case 11:break;case 12:return this.pushState("SCALE"),17;break;case 13:return 18;case 14:this.popState();break;case 15:return this.begin("acc_title"),33;break;case 16:return this.popState(),"acc_title_value";break;case 17:return this.begin("acc_descr"),35;break;case 18:return this.popState(),"acc_descr_value";break;case 19:this.begin("acc_descr_multiline");break;case 20:this.popState();break;case 21:return"acc_descr_multiline_value";case 22:return this.pushState("CLASSDEF"),38;break;case 23:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 24:return this.popState(),this.pushState("CLASSDEFID"),39;break;case 25:return this.popState(),40;break;case 26:return this.pushState("CLASS"),45;break;case 27:return this.popState(),this.pushState("CLASS_STYLE"),46;break;case 28:return this.popState(),47;break;case 29:return this.pushState("STYLE"),42;break;case 30:return this.popState(),this.pushState("STYLEDEF_STYLES"),43;break;case 31:return this.popState(),44;break;case 32:return this.pushState("SCALE"),17;break;case 33:return 18;case 34:this.popState();break;case 35:this.pushState("STATE");break;case 36:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),25;break;case 37:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),26;break;case 38:return this.popState(),z.yytext=z.yytext.slice(0,-10).trim(),27;break;case 39:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),25;break;case 40:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),26;break;case 41:return this.popState(),z.yytext=z.yytext.slice(0,-10).trim(),27;break;case 42:return 48;case 43:return 49;case 44:return 50;case 45:return 51;case 46:this.pushState("STATE_STRING");break;case 47:return this.pushState("STATE_ID"),"AS";break;case 48:return this.popState(),"ID";break;case 49:this.popState();break;case 50:return"STATE_DESCR";case 51:return 19;case 52:this.popState();break;case 53:return this.popState(),this.pushState("struct"),20;break;case 54:break;case 55:return this.popState(),21;break;case 56:break;case 57:return this.begin("NOTE"),29;break;case 58:return this.popState(),this.pushState("NOTE_ID"),56;break;case 59:return this.popState(),this.pushState("NOTE_ID"),57;break;case 60:this.popState(),this.pushState("FLOATING_NOTE");break;case 61:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";break;case 62:break;case 63:return"NOTE_TEXT";case 64:return this.popState(),"ID";break;case 65:return this.popState(),this.pushState("NOTE_TEXT"),24;break;case 66:return this.popState(),z.yytext=z.yytext.substr(2).trim(),31;break;case 67:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),31;break;case 68:return 6;case 69:return 6;case 70:return 16;case 71:return 54;case 72:return 24;case 73:return z.yytext=z.yytext.trim(),14;break;case 74:return 15;case 75:return 28;case 76:return 55;case 77:return 5;case 78:return"INVALID"}},"anonymous"),rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[9,10],inclusive:!1},struct:{rules:[9,10,22,26,29,35,42,43,44,45,54,55,56,57,71,72,73,74,75],inclusive:!1},FLOATING_NOTE_ID:{rules:[64],inclusive:!1},FLOATING_NOTE:{rules:[61,62,63],inclusive:!1},NOTE_TEXT:{rules:[66,67],inclusive:!1},NOTE_ID:{rules:[65],inclusive:!1},NOTE:{rules:[58,59,60],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[31],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[30],inclusive:!1},CLASS_STYLE:{rules:[28],inclusive:!1},CLASS:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[25],inclusive:!1},CLASSDEF:{rules:[23,24],inclusive:!1},acc_descr_multiline:{rules:[20,21],inclusive:!1},acc_descr:{rules:[18],inclusive:!1},acc_title:{rules:[16],inclusive:!1},SCALE:{rules:[13,14,33,34],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[48],inclusive:!1},STATE_STRING:{rules:[49,50],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[9,10,36,37,38,39,40,41,46,47,51,52,53],inclusive:!1},ID:{rules:[9,10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,10,11,12,15,17,19,22,26,29,32,35,53,57,68,69,70,71,72,73,74,76,77,78],inclusive:!0}}};return F}();O.lexer=N;function B(){this.yy={}}return o(B,"Parser"),B.prototype=O,O.Parser=B,new B}();CO.parser=CO;b6=CO});var Efe,w6,_O,S1,hb,Sfe,Cfe,Afe,Dp,T6,DO,LO,RO,NO,MO,k6,E6,_fe,Dfe,IO,OO,Lfe,Rfe,C1,EVe,Nfe,PO,SVe,CVe,Mfe,Ife,AVe,Ofe,_Ve,Pfe,BO,FO,Bfe,S6,Ffe,zO,C6=M(()=>{"use strict";Efe="TB",w6="TB",_O="dir",S1="state",hb="relation",Sfe="classDef",Cfe="style",Afe="applyClass",Dp="default",T6="divider",DO="fill:none",LO="fill: #333",RO="c",NO="text",MO="normal",k6="rect",E6="rectWithTitle",_fe="stateStart",Dfe="stateEnd",IO="divider",OO="roundedWithTitle",Lfe="note",Rfe="noteGroup",C1="statediagram",EVe="state",Nfe=`${C1}-${EVe}`,PO="transition",SVe="note",CVe="note-edge",Mfe=`${PO} ${CVe}`,Ife=`${C1}-${SVe}`,AVe="cluster",Ofe=`${C1}-${AVe}`,_Ve="cluster-alt",Pfe=`${C1}-${_Ve}`,BO="parent",FO="note",Bfe="state",S6="----",Ffe=`${S6}${FO}`,zO=`${S6}${BO}`});function GO(t="",e=0,r="",n=S6){let i=r!==null&&r.length>0?`${n}${r}`:"";return`${Bfe}-${t}${i}-${e}`}function A6(t,e,r){if(!e.id||e.id===""||e.id==="")return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(i=>{if(r.get(i)){let a=r.get(i);e.cssCompiledStyles=[...e.cssCompiledStyles,...a.styles]}}));let n=t.find(i=>i.id===e.id);n?Object.assign(n,e):t.push(e)}function LVe(t){return t?.classes?.join(" ")??""}function RVe(t){return t?.styles??[]}var _6,gf,DVe,zfe,A1,Gfe,$fe=M(()=>{"use strict";Gt();vt();gr();C6();_6=new Map,gf=0;o(GO,"stateDomId");DVe=o((t,e,r,n,i,a,s,l)=>{Y.trace("items",e),e.forEach(u=>{switch(u.stmt){case S1:A1(t,u,r,n,i,a,s,l);break;case Dp:A1(t,u,r,n,i,a,s,l);break;case hb:{A1(t,u.state1,r,n,i,a,s,l),A1(t,u.state2,r,n,i,a,s,l);let h={id:"edge"+gf,start:u.state1.id,end:u.state2.id,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:DO,labelStyle:"",label:Ze.sanitizeText(u.description,me()),arrowheadStyle:LO,labelpos:RO,labelType:NO,thickness:MO,classes:PO,look:s};i.push(h),gf++}break}})},"setupDoc"),zfe=o((t,e=w6)=>{let r=e;if(t.doc)for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir");o(A6,"insertOrUpdateNode");o(LVe,"getClassesFromDbInfo");o(RVe,"getStylesFromDbInfo");A1=o((t,e,r,n,i,a,s,l)=>{let u=e.id,h=r.get(u),f=LVe(h),d=RVe(h);if(Y.info("dataFetcher parsedItem",e,h,d),u!=="root"){let p=k6;e.start===!0?p=_fe:e.start===!1&&(p=Dfe),e.type!==Dp&&(p=e.type),_6.get(u)||_6.set(u,{id:u,shape:p,description:Ze.sanitizeText(u,me()),cssClasses:`${f} ${Nfe}`,cssStyles:d});let m=_6.get(u);e.description&&(Array.isArray(m.description)?(m.shape=E6,m.description.push(e.description)):m.description?.length>0?(m.shape=E6,m.description===u?m.description=[e.description]:m.description=[m.description,e.description]):(m.shape=k6,m.description=e.description),m.description=Ze.sanitizeTextOrArray(m.description,me())),m.description?.length===1&&m.shape===E6&&(m.type==="group"?m.shape=OO:m.shape=k6),!m.type&&e.doc&&(Y.info("Setting cluster for XCX",u,zfe(e)),m.type="group",m.isGroup=!0,m.dir=zfe(e),m.shape=e.type===T6?IO:OO,m.cssClasses=`${m.cssClasses} ${Ofe} ${a?Pfe:""}`);let g={labelStyle:"",shape:m.shape,label:m.description,cssClasses:m.cssClasses,cssCompiledStyles:[],cssStyles:m.cssStyles,id:u,dir:m.dir,domId:GO(u,gf),type:m.type,isGroup:m.type==="group",padding:8,rx:10,ry:10,look:s};if(g.shape===IO&&(g.label=""),t&&t.id!=="root"&&(Y.trace("Setting node ",u," to be child of its parent ",t.id),g.parentId=t.id),g.centerLabel=!0,e.note){let y={labelStyle:"",shape:Lfe,label:e.note.text,cssClasses:Ife,cssStyles:[],cssCompilesStyles:[],id:u+Ffe+"-"+gf,domId:GO(u,gf,FO),type:m.type,isGroup:m.type==="group",padding:me().flowchart.padding,look:s,position:e.note.position},v=u+zO,x={labelStyle:"",shape:Rfe,label:e.note.text,cssClasses:m.cssClasses,cssStyles:[],id:u+zO,domId:GO(u,gf,BO),type:"group",isGroup:!0,padding:16,look:s,position:e.note.position};gf++,x.id=v,y.parentId=v,A6(n,x,l),A6(n,y,l),A6(n,g,l);let b=u,w=y.id;e.note.position==="left of"&&(b=y.id,w=u),i.push({id:b+"-"+w,start:b,end:w,arrowhead:"none",arrowTypeEnd:"",style:DO,labelStyle:"",classes:Mfe,arrowheadStyle:LO,labelpos:RO,labelType:NO,thickness:MO,look:s})}else A6(n,g,l)}e.doc&&(Y.trace("Adding nodes children "),DVe(e,e.doc,r,n,i,!a,s,l))},"dataFetcher"),Gfe=o(()=>{_6.clear(),gf=0},"reset")});var $O,NVe,MVe,Vfe,VO=M(()=>{"use strict";Gt();vt();hm();Hd();Im();sr();C6();$O=o((t,e=w6)=>{if(!t.doc)return e;let r=e;for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),NVe=o(function(t,e){return e.db.getClasses()},"getClasses"),MVe=o(async function(t,e,r,n){Y.info("REF0:"),Y.info("Drawing state diagram (v2)",e);let{securityLevel:i,state:a,layout:s}=me();n.db.extract(n.db.getRootDocV2());let l=n.db.getData(),u=gc(e,i);l.type=n.type,l.layoutAlgorithm=s,l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["barb"],l.diagramId=e,await Sc(l,u);let h=8;$t.insertTitle(u,"statediagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Cc(u,h,C1,a?.useMaxWidth??!0)},"draw"),Vfe={getClasses:NVe,draw:MVe,getDir:$O}});function Xfe(){return new Map}var UO,Ufe,Hfe,Wfe,qfe,Yfe,IVe,OVe,jfe,D6,Xo,L6=M(()=>{"use strict";Gt();vt();sr();gr();ki();$fe();VO();C6();UO="[*]",Ufe="start",Hfe=UO,Wfe="end",qfe="color",Yfe="fill",IVe="bgFill",OVe=",";o(Xfe,"newClassesList");jfe=o(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),D6=o(t=>JSON.parse(JSON.stringify(t)),"clone"),Xo=class{static{o(this,"StateDB")}constructor(e){this.clear(),this.version=e,this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this)}version;nodes=[];edges=[];rootDoc=[];classes=Xfe();documents={root:jfe()};currentDocument=this.documents.root;startEndCount=0;dividerCnt=0;static relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3};setRootDoc(e){Y.info("Setting root doc",e),this.rootDoc=e,this.version===1?this.extract(e):this.extract(this.getRootDocV2())}getRootDoc(){return this.rootDoc}docTranslator(e,r,n){if(r.stmt===hb)this.docTranslator(e,r.state1,!0),this.docTranslator(e,r.state2,!1);else if(r.stmt===S1&&(r.id==="[*]"?(r.id=n?e.id+"_start":e.id+"_end",r.start=n):r.id=r.id.trim()),r.doc){let i=[],a=[],s;for(s=0;s0&&a.length>0){let l={stmt:S1,id:$9(),type:"divider",doc:D6(a)};i.push(D6(l)),r.doc=i}r.doc.forEach(l=>this.docTranslator(r,l,!0))}}getRootDocV2(){return this.docTranslator({id:"root"},{id:"root",doc:this.rootDoc},!0),{id:"root",doc:this.rootDoc}}extract(e){let r;e.doc?r=e.doc:r=e,Y.info(r),this.clear(!0),Y.info("Extract initial document:",r),r.forEach(s=>{switch(Y.warn("Statement",s.stmt),s.stmt){case S1:this.addState(s.id.trim(),s.type,s.doc,s.description,s.note,s.classes,s.styles,s.textStyles);break;case hb:this.addRelation(s.state1,s.state2,s.description);break;case Sfe:this.addStyleClass(s.id.trim(),s.classes);break;case Cfe:{let l=s.id.trim().split(","),u=s.styleClass.split(",");l.forEach(h=>{let f=this.getState(h);if(f===void 0){let d=h.trim();this.addState(d),f=this.getState(d)}f.styles=u.map(d=>d.replace(/;/g,"")?.trim())})}break;case Afe:this.setCssClass(s.id.trim(),s.styleClass);break}});let n=this.getStates(),a=me().look;Gfe(),A1(void 0,this.getRootDocV2(),n,this.nodes,this.edges,!0,a,this.classes),this.nodes.forEach(s=>{if(Array.isArray(s.label)){if(s.description=s.label.slice(1),s.isGroup&&s.description.length>0)throw new Error("Group nodes can only have label. Remove the additional description for node ["+s.id+"]");s.label=s.label[0]}})}addState(e,r=Dp,n=null,i=null,a=null,s=null,l=null,u=null){let h=e?.trim();if(this.currentDocument.states.has(h)?(this.currentDocument.states.get(h).doc||(this.currentDocument.states.get(h).doc=n),this.currentDocument.states.get(h).type||(this.currentDocument.states.get(h).type=r)):(Y.info("Adding state ",h,i),this.currentDocument.states.set(h,{id:h,descriptions:[],type:r,doc:n,note:a,classes:[],styles:[],textStyles:[]})),i&&(Y.info("Setting state description",h,i),typeof i=="string"&&this.addDescription(h,i.trim()),typeof i=="object"&&i.forEach(f=>this.addDescription(h,f.trim()))),a){let f=this.currentDocument.states.get(h);f.note=a,f.note.text=Ze.sanitizeText(f.note.text,me())}s&&(Y.info("Setting state classes",h,s),(typeof s=="string"?[s]:s).forEach(d=>this.setCssClass(h,d.trim()))),l&&(Y.info("Setting state styles",h,l),(typeof l=="string"?[l]:l).forEach(d=>this.setStyle(h,d.trim()))),u&&(Y.info("Setting state styles",h,l),(typeof u=="string"?[u]:u).forEach(d=>this.setTextStyle(h,d.trim())))}clear(e){this.nodes=[],this.edges=[],this.documents={root:jfe()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=Xfe(),e||Dr()}getState(e){return this.currentDocument.states.get(e)}getStates(){return this.currentDocument.states}logDocuments(){Y.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}startIdIfNeeded(e=""){let r=e;return e===UO&&(this.startEndCount++,r=`${Ufe}${this.startEndCount}`),r}startTypeIfNeeded(e="",r=Dp){return e===UO?Ufe:r}endIdIfNeeded(e=""){let r=e;return e===Hfe&&(this.startEndCount++,r=`${Wfe}${this.startEndCount}`),r}endTypeIfNeeded(e="",r=Dp){return e===Hfe?Wfe:r}addRelationObjs(e,r,n){let i=this.startIdIfNeeded(e.id.trim()),a=this.startTypeIfNeeded(e.id.trim(),e.type),s=this.startIdIfNeeded(r.id.trim()),l=this.startTypeIfNeeded(r.id.trim(),r.type);this.addState(i,a,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),this.addState(s,l,r.doc,r.description,r.note,r.classes,r.styles,r.textStyles),this.currentDocument.relations.push({id1:i,id2:s,relationTitle:Ze.sanitizeText(n,me())})}addRelation(e,r,n){if(typeof e=="object")this.addRelationObjs(e,r,n);else{let i=this.startIdIfNeeded(e.trim()),a=this.startTypeIfNeeded(e),s=this.endIdIfNeeded(r.trim()),l=this.endTypeIfNeeded(r);this.addState(i,a),this.addState(s,l),this.currentDocument.relations.push({id1:i,id2:s,title:Ze.sanitizeText(n,me())})}}addDescription(e,r){let n=this.currentDocument.states.get(e),i=r.startsWith(":")?r.replace(":","").trim():r;n.descriptions.push(Ze.sanitizeText(i,me()))}cleanupLabel(e){return e.substring(0,1)===":"?e.substr(2).trim():e.trim()}getDividerId(){return this.dividerCnt++,"divider-id-"+this.dividerCnt}addStyleClass(e,r=""){this.classes.has(e)||this.classes.set(e,{id:e,styles:[],textStyles:[]});let n=this.classes.get(e);r?.split(OVe).forEach(i=>{let a=i.replace(/([^;]*);/,"$1").trim();if(RegExp(qfe).exec(i)){let l=a.replace(Yfe,IVe).replace(qfe,Yfe);n.textStyles.push(l)}n.styles.push(a)})}getClasses(){return this.classes}setCssClass(e,r){e.split(",").forEach(n=>{let i=this.getState(n);if(i===void 0){let a=n.trim();this.addState(a),i=this.getState(a)}i.classes.push(r)})}setStyle(e,r){let n=this.getState(e);n!==void 0&&n.styles.push(r)}setTextStyle(e,r){let n=this.getState(e);n!==void 0&&n.textStyles.push(r)}getDirectionStatement(){return this.rootDoc.find(e=>e.stmt===_O)}getDirection(){return this.getDirectionStatement()?.value??Efe}setDirection(e){let r=this.getDirectionStatement();r?r.value=e:this.rootDoc.unshift({stmt:_O,value:e})}trimColon(e){return e&&e[0]===":"?e.substr(1).trim():e.trim()}getData(){let e=me();return{nodes:this.nodes,edges:this.edges,other:{},config:e,direction:$O(this.getRootDocV2())}}getConfig(){return me().state}getAccTitle=Or;setAccTitle=Mr;getAccDescription=Br;setAccDescription=Pr;setDiagramTitle=Zr;getDiagramTitle=Fr}});var PVe,R6,HO=M(()=>{"use strict";PVe=o(t=>` defs #statediagram-barbEnd { fill: ${t.transitionColor}; stroke: ${t.transitionColor}; @@ -1693,14 +1741,13 @@ g.stateGroup line { font-size: 18px; fill: ${t.textColor}; } -`,"getStyles"),UE=fYe});var lP,dYe,pYe,d0e,mYe,p0e,m0e=M(()=>{"use strict";lP={},dYe=o((t,e)=>{lP[t]=e},"set"),pYe=o(t=>lP[t],"get"),d0e=o(()=>Object.keys(lP),"keys"),mYe=o(()=>d0e().length,"size"),p0e={get:pYe,set:dYe,keys:d0e,size:mYe}});var gYe,yYe,vYe,xYe,y0e,bYe,wYe,TYe,kYe,cP,g0e,v0e,x0e=M(()=>{"use strict";mr();m0e();VE();hr();fr();Vt();ht();gYe=o(t=>t.append("circle").attr("class","start-state").attr("r",de().state.sizeUnit).attr("cx",de().state.padding+de().state.sizeUnit).attr("cy",de().state.padding+de().state.sizeUnit),"drawStartState"),yYe=o(t=>t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",de().state.textHeight).attr("class","divider").attr("x2",de().state.textHeight*2).attr("y1",0).attr("y2",0),"drawDivider"),vYe=o((t,e)=>{let r=t.append("text").attr("x",2*de().state.padding).attr("y",de().state.textHeight+2*de().state.padding).attr("font-size",de().state.fontSize).attr("class","state-title").text(e.id),n=r.node().getBBox();return t.insert("rect",":first-child").attr("x",de().state.padding).attr("y",de().state.padding).attr("width",n.width+2*de().state.padding).attr("height",n.height+2*de().state.padding).attr("rx",de().state.radius),r},"drawSimpleState"),xYe=o((t,e)=>{let r=o(function(p,m,g){let y=p.append("tspan").attr("x",2*de().state.padding).text(m);g||y.attr("dy",de().state.textHeight)},"addTspan"),i=t.append("text").attr("x",2*de().state.padding).attr("y",de().state.textHeight+1.3*de().state.padding).attr("font-size",de().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),a=i.height,s=t.append("text").attr("x",de().state.padding).attr("y",a+de().state.padding*.4+de().state.dividerMargin+de().state.textHeight).attr("class","state-description"),l=!0,u=!0;e.descriptions.forEach(function(p){l||(r(s,p,u),u=!1),l=!1});let h=t.append("line").attr("x1",de().state.padding).attr("y1",de().state.padding+a+de().state.dividerMargin/2).attr("y2",de().state.padding+a+de().state.dividerMargin/2).attr("class","descr-divider"),f=s.node().getBBox(),d=Math.max(f.width,i.width);return h.attr("x2",d+3*de().state.padding),t.insert("rect",":first-child").attr("x",de().state.padding).attr("y",de().state.padding).attr("width",d+2*de().state.padding).attr("height",f.height+a+2*de().state.padding).attr("rx",de().state.radius),t},"drawDescrState"),y0e=o((t,e,r)=>{let n=de().state.padding,i=2*de().state.padding,a=t.node().getBBox(),s=a.width,l=a.x,u=t.append("text").attr("x",0).attr("y",de().state.titleShift).attr("font-size",de().state.fontSize).attr("class","state-title").text(e.id),f=u.node().getBBox().width+i,d=Math.max(f,s);d===s&&(d=d+i);let p,m=t.node().getBBox();e.doc,p=l-n,f>s&&(p=(s-d)/2+n),Math.abs(l-m.x)s&&(p=l-(f-s)/2);let g=1-de().state.textHeight;return t.insert("rect",":first-child").attr("x",p).attr("y",g).attr("class",r?"alt-composit":"composit").attr("width",d).attr("height",m.height+de().state.textHeight+de().state.titleShift+1).attr("rx","0"),u.attr("x",p+n),f<=s&&u.attr("x",l+(d-i)/2-f/2+n),t.insert("rect",":first-child").attr("x",p).attr("y",de().state.titleShift-de().state.textHeight-de().state.padding).attr("width",d).attr("height",de().state.textHeight*3).attr("rx",de().state.radius),t.insert("rect",":first-child").attr("x",p).attr("y",de().state.titleShift-de().state.textHeight-de().state.padding).attr("width",d).attr("height",m.height+3+2*de().state.textHeight).attr("rx",de().state.radius),t},"addTitleAndBox"),bYe=o(t=>(t.append("circle").attr("class","end-state-outer").attr("r",de().state.sizeUnit+de().state.miniPadding).attr("cx",de().state.padding+de().state.sizeUnit+de().state.miniPadding).attr("cy",de().state.padding+de().state.sizeUnit+de().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",de().state.sizeUnit).attr("cx",de().state.padding+de().state.sizeUnit+2).attr("cy",de().state.padding+de().state.sizeUnit+2)),"drawEndState"),wYe=o((t,e)=>{let r=de().state.forkWidth,n=de().state.forkHeight;if(e.parentId){let i=r;r=n,n=i}return t.append("rect").style("stroke","black").style("fill","black").attr("width",r).attr("height",n).attr("x",de().state.padding).attr("y",de().state.padding)},"drawForkJoinState"),TYe=o((t,e,r,n)=>{let i=0,a=n.append("text");a.style("text-anchor","start"),a.attr("class","noteText");let s=t.replace(/\r\n/g,"
    ");s=s.replace(/\n/g,"
    ");let l=s.split(je.lineBreakRegex),u=1.25*de().state.noteMargin;for(let h of l){let f=h.trim();if(f.length>0){let d=a.append("tspan");if(d.text(f),u===0){let p=d.node().getBBox();u+=p.height}i+=u,d.attr("x",e+de().state.noteMargin),d.attr("y",r+i+1.25*de().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:i}},"_drawLongText"),kYe=o((t,e)=>{e.attr("class","state-note");let r=e.append("rect").attr("x",0).attr("y",de().state.padding),n=e.append("g"),{textWidth:i,textHeight:a}=TYe(t,0,0,n);return r.attr("height",a+2*de().state.noteMargin),r.attr("width",i+de().state.noteMargin*2),r},"drawNote"),cP=o(function(t,e){let r=e.id,n={id:r,label:e.id,width:0,height:0},i=t.append("g").attr("id",r).attr("class","stateGroup");e.type==="start"&&gYe(i),e.type==="end"&&bYe(i),(e.type==="fork"||e.type==="join")&&wYe(i,e),e.type==="note"&&kYe(e.note.text,i),e.type==="divider"&&yYe(i),e.type==="default"&&e.descriptions.length===0&&vYe(i,e),e.type==="default"&&e.descriptions.length>0&&xYe(i,e);let a=i.node().getBBox();return n.width=a.width+2*de().state.padding,n.height=a.height+2*de().state.padding,p0e.set(r,n),n},"drawState"),g0e=0,v0e=o(function(t,e,r){let n=o(function(u){switch(u){case tl.relationType.AGGREGATION:return"aggregation";case tl.relationType.EXTENSION:return"extension";case tl.relationType.COMPOSITION:return"composition";case tl.relationType.DEPENDENCY:return"dependency"}},"getRelationType");e.points=e.points.filter(u=>!Number.isNaN(u.y));let i=e.points,a=Ka().x(function(u){return u.x}).y(function(u){return u.y}).curve(Do),s=t.append("path").attr("d",a(i)).attr("id","edge"+g0e).attr("class","transition"),l="";if(de().state.arrowMarkerAbsolute&&(l=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,l=l.replace(/\(/g,"\\("),l=l.replace(/\)/g,"\\)")),s.attr("marker-end","url("+l+"#"+n(tl.relationType.DEPENDENCY)+"End)"),r.title!==void 0){let u=t.append("g").attr("class","stateLabel"),{x:h,y:f}=Ut.calcLabelPosition(e.points),d=je.getRows(r.title),p=0,m=[],g=0,y=0;for(let b=0;b<=d.length;b++){let w=u.append("text").attr("text-anchor","middle").text(d[b]).attr("x",h).attr("y",f+p),_=w.node().getBBox();g=Math.max(g,_.width),y=Math.min(y,_.x),Y.info(_.x,h,f+p),p===0&&(p=w.node().getBBox().height,Y.info("Title height",p,f)),m.push(w)}let v=p*d.length;if(d.length>1){let b=(d.length-1)*p*.5;m.forEach((w,_)=>w.attr("y",f+_*p-b)),v=p*d.length}let x=u.node().getBBox();u.insert("rect",":first-child").attr("class","box").attr("x",h-g/2-de().state.padding/2).attr("y",f-v/2-de().state.padding/2-3.5).attr("width",g+de().state.padding).attr("height",v+de().state.padding),Y.info(x)}g0e++},"drawEdge")});var fo,uP,EYe,SYe,CYe,AYe,b0e,w0e,T0e=M(()=>{"use strict";mr();Pv();Ns();ht();fr();x0e();Vt();ni();uP={},EYe=o(function(){},"setConf"),SYe=o(function(t){t.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"insertMarkers"),CYe=o(function(t,e,r,n){fo=de().state;let i=de().securityLevel,a;i==="sandbox"&&(a=ze("#i"+e));let s=i==="sandbox"?ze(a.nodes()[0].contentDocument.body):ze("body"),l=i==="sandbox"?a.nodes()[0].contentDocument:document;Y.debug("Rendering diagram "+t);let u=s.select(`[id='${e}']`);SYe(u);let h=n.db.getRootDoc();b0e(h,u,void 0,!1,s,l,n);let f=fo.padding,d=u.node().getBBox(),p=d.width+f*2,m=d.height+f*2,g=p*1.75;Zr(u,m,g,fo.useMaxWidth),u.attr("viewBox",`${d.x-fo.padding} ${d.y-fo.padding} `+p+" "+m)},"draw"),AYe=o(t=>t?t.length*fo.fontSizeFactor:1,"getLabelWidth"),b0e=o((t,e,r,n,i,a,s)=>{let l=new Mr({compound:!0,multigraph:!0}),u,h=!0;for(u=0;u{let T=_.parentElement,E=0,L=0;T&&(T.parentElement&&(E=T.parentElement.getBBox().width),L=parseInt(T.getAttribute("data-x-shift"),10),Number.isNaN(L)&&(L=0)),_.setAttribute("x1",0-L+8),_.setAttribute("x2",E-L-8)})):Y.debug("No Node "+b+": "+JSON.stringify(l.node(b)))});let v=y.getBBox();l.edges().forEach(function(b){b!==void 0&&l.edge(b)!==void 0&&(Y.debug("Edge "+b.v+" -> "+b.w+": "+JSON.stringify(l.edge(b))),v0e(e,l.edge(b),l.edge(b).relation))}),v=y.getBBox();let x={id:r||"root",label:r||"root",width:0,height:0};return x.width=v.width+2*fo.padding,x.height=v.height+2*fo.padding,Y.debug("Doc rendered",x,l),x},"renderDoc"),w0e={setConf:EYe,draw:CYe}});var k0e={};vr(k0e,{diagram:()=>_Ye});var _Ye,E0e=M(()=>{"use strict";zO();VE();oP();T0e();_Ye={parser:_E,db:tl,renderer:w0e,styles:UE,init:o(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,tl.clear()},"init")}});var A0e={};vr(A0e,{diagram:()=>RYe});var RYe,_0e=M(()=>{"use strict";zO();VE();oP();JO();RYe={parser:_E,db:tl,renderer:Jde,styles:UE,init:o(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,tl.clear()},"init")}});var hP,N0e,R0e=M(()=>{"use strict";hP=function(){var t=o(function(d,p,m,g){for(m=m||{},g=d.length;g--;m[d[g]]=p);return m},"o"),e=[6,8,10,11,12,14,16,17,18],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],l=[1,14],u={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:o(function(p,m,g,y,v,x,b){var w=x.length-1;switch(v){case 1:return x[w-1];case 2:this.$=[];break;case 3:x[w-1].push(x[w]),this.$=x[w-1];break;case 4:case 5:this.$=x[w];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(x[w].substr(6)),this.$=x[w].substr(6);break;case 9:this.$=x[w].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=x[w].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(x[w].substr(8)),this.$=x[w].substr(8);break;case 13:y.addTask(x[w-1],x[w]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:r,12:n,14:i,16:a,17:s,18:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:o(function(p,m){if(m.recoverable)this.trace(p);else{var g=new Error(p);throw g.hash=m,g}},"parseError"),parse:o(function(p){var m=this,g=[0],y=[],v=[null],x=[],b=this.table,w="",_=0,T=0,E=0,L=2,C=1,A=x.slice.call(arguments,1),I=Object.create(this.lexer),D={yy:{}};for(var k in this.yy)Object.prototype.hasOwnProperty.call(this.yy,k)&&(D.yy[k]=this.yy[k]);I.setInput(p,D.yy),D.yy.lexer=I,D.yy.parser=this,typeof I.yylloc>"u"&&(I.yylloc={});var R=I.yylloc;x.push(R);var S=I.options&&I.options.ranges;typeof D.yy.parseError=="function"?this.parseError=D.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function O(H){g.length=g.length-2*H,v.length=v.length-H,x.length=x.length-H}o(O,"popStack");function N(){var H;return H=y.pop()||I.lex()||C,typeof H!="number"&&(H instanceof Array&&(y=H,H=y.pop()),H=m.symbols_[H]||H),H}o(N,"lex");for(var P,F,B,$,z,W,j={},K,ie,Q,ee;;){if(B=g[g.length-1],this.defaultActions[B]?$=this.defaultActions[B]:((P===null||typeof P>"u")&&(P=N()),$=b[B]&&b[B][P]),typeof $>"u"||!$.length||!$[0]){var J="";ee=[];for(K in b[B])this.terminals_[K]&&K>L&&ee.push("'"+this.terminals_[K]+"'");I.showPosition?J="Parse error on line "+(_+1)+`: +`,"getStyles"),R6=PVe});var WO,BVe,FVe,Kfe,zVe,Qfe,Zfe=M(()=>{"use strict";WO={},BVe=o((t,e)=>{WO[t]=e},"set"),FVe=o(t=>WO[t],"get"),Kfe=o(()=>Object.keys(WO),"keys"),zVe=o(()=>Kfe().length,"size"),Qfe={get:FVe,set:BVe,keys:Kfe,size:zVe}});var GVe,$Ve,VVe,UVe,ede,HVe,WVe,qVe,YVe,qO,Jfe,tde,rde=M(()=>{"use strict";hr();Zfe();L6();sr();gr();Gt();vt();GVe=o(t=>t.append("circle").attr("class","start-state").attr("r",me().state.sizeUnit).attr("cx",me().state.padding+me().state.sizeUnit).attr("cy",me().state.padding+me().state.sizeUnit),"drawStartState"),$Ve=o(t=>t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",me().state.textHeight).attr("class","divider").attr("x2",me().state.textHeight*2).attr("y1",0).attr("y2",0),"drawDivider"),VVe=o((t,e)=>{let r=t.append("text").attr("x",2*me().state.padding).attr("y",me().state.textHeight+2*me().state.padding).attr("font-size",me().state.fontSize).attr("class","state-title").text(e.id),n=r.node().getBBox();return t.insert("rect",":first-child").attr("x",me().state.padding).attr("y",me().state.padding).attr("width",n.width+2*me().state.padding).attr("height",n.height+2*me().state.padding).attr("rx",me().state.radius),r},"drawSimpleState"),UVe=o((t,e)=>{let r=o(function(p,m,g){let y=p.append("tspan").attr("x",2*me().state.padding).text(m);g||y.attr("dy",me().state.textHeight)},"addTspan"),i=t.append("text").attr("x",2*me().state.padding).attr("y",me().state.textHeight+1.3*me().state.padding).attr("font-size",me().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),a=i.height,s=t.append("text").attr("x",me().state.padding).attr("y",a+me().state.padding*.4+me().state.dividerMargin+me().state.textHeight).attr("class","state-description"),l=!0,u=!0;e.descriptions.forEach(function(p){l||(r(s,p,u),u=!1),l=!1});let h=t.append("line").attr("x1",me().state.padding).attr("y1",me().state.padding+a+me().state.dividerMargin/2).attr("y2",me().state.padding+a+me().state.dividerMargin/2).attr("class","descr-divider"),f=s.node().getBBox(),d=Math.max(f.width,i.width);return h.attr("x2",d+3*me().state.padding),t.insert("rect",":first-child").attr("x",me().state.padding).attr("y",me().state.padding).attr("width",d+2*me().state.padding).attr("height",f.height+a+2*me().state.padding).attr("rx",me().state.radius),t},"drawDescrState"),ede=o((t,e,r)=>{let n=me().state.padding,i=2*me().state.padding,a=t.node().getBBox(),s=a.width,l=a.x,u=t.append("text").attr("x",0).attr("y",me().state.titleShift).attr("font-size",me().state.fontSize).attr("class","state-title").text(e.id),f=u.node().getBBox().width+i,d=Math.max(f,s);d===s&&(d=d+i);let p,m=t.node().getBBox();e.doc,p=l-n,f>s&&(p=(s-d)/2+n),Math.abs(l-m.x)s&&(p=l-(f-s)/2);let g=1-me().state.textHeight;return t.insert("rect",":first-child").attr("x",p).attr("y",g).attr("class",r?"alt-composit":"composit").attr("width",d).attr("height",m.height+me().state.textHeight+me().state.titleShift+1).attr("rx","0"),u.attr("x",p+n),f<=s&&u.attr("x",l+(d-i)/2-f/2+n),t.insert("rect",":first-child").attr("x",p).attr("y",me().state.titleShift-me().state.textHeight-me().state.padding).attr("width",d).attr("height",me().state.textHeight*3).attr("rx",me().state.radius),t.insert("rect",":first-child").attr("x",p).attr("y",me().state.titleShift-me().state.textHeight-me().state.padding).attr("width",d).attr("height",m.height+3+2*me().state.textHeight).attr("rx",me().state.radius),t},"addTitleAndBox"),HVe=o(t=>(t.append("circle").attr("class","end-state-outer").attr("r",me().state.sizeUnit+me().state.miniPadding).attr("cx",me().state.padding+me().state.sizeUnit+me().state.miniPadding).attr("cy",me().state.padding+me().state.sizeUnit+me().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",me().state.sizeUnit).attr("cx",me().state.padding+me().state.sizeUnit+2).attr("cy",me().state.padding+me().state.sizeUnit+2)),"drawEndState"),WVe=o((t,e)=>{let r=me().state.forkWidth,n=me().state.forkHeight;if(e.parentId){let i=r;r=n,n=i}return t.append("rect").style("stroke","black").style("fill","black").attr("width",r).attr("height",n).attr("x",me().state.padding).attr("y",me().state.padding)},"drawForkJoinState"),qVe=o((t,e,r,n)=>{let i=0,a=n.append("text");a.style("text-anchor","start"),a.attr("class","noteText");let s=t.replace(/\r\n/g,"
    ");s=s.replace(/\n/g,"
    ");let l=s.split(Ze.lineBreakRegex),u=1.25*me().state.noteMargin;for(let h of l){let f=h.trim();if(f.length>0){let d=a.append("tspan");if(d.text(f),u===0){let p=d.node().getBBox();u+=p.height}i+=u,d.attr("x",e+me().state.noteMargin),d.attr("y",r+i+1.25*me().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:i}},"_drawLongText"),YVe=o((t,e)=>{e.attr("class","state-note");let r=e.append("rect").attr("x",0).attr("y",me().state.padding),n=e.append("g"),{textWidth:i,textHeight:a}=qVe(t,0,0,n);return r.attr("height",a+2*me().state.noteMargin),r.attr("width",i+me().state.noteMargin*2),r},"drawNote"),qO=o(function(t,e){let r=e.id,n={id:r,label:e.id,width:0,height:0},i=t.append("g").attr("id",r).attr("class","stateGroup");e.type==="start"&&GVe(i),e.type==="end"&&HVe(i),(e.type==="fork"||e.type==="join")&&WVe(i,e),e.type==="note"&&YVe(e.note.text,i),e.type==="divider"&&$Ve(i),e.type==="default"&&e.descriptions.length===0&&VVe(i,e),e.type==="default"&&e.descriptions.length>0&&UVe(i,e);let a=i.node().getBBox();return n.width=a.width+2*me().state.padding,n.height=a.height+2*me().state.padding,Qfe.set(r,n),n},"drawState"),Jfe=0,tde=o(function(t,e,r){let n=o(function(u){switch(u){case Xo.relationType.AGGREGATION:return"aggregation";case Xo.relationType.EXTENSION:return"extension";case Xo.relationType.COMPOSITION:return"composition";case Xo.relationType.DEPENDENCY:return"dependency"}},"getRelationType");e.points=e.points.filter(u=>!Number.isNaN(u.y));let i=e.points,a=vl().x(function(u){return u.x}).y(function(u){return u.y}).curve(So),s=t.append("path").attr("d",a(i)).attr("id","edge"+Jfe).attr("class","transition"),l="";if(me().state.arrowMarkerAbsolute&&(l=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,l=l.replace(/\(/g,"\\("),l=l.replace(/\)/g,"\\)")),s.attr("marker-end","url("+l+"#"+n(Xo.relationType.DEPENDENCY)+"End)"),r.title!==void 0){let u=t.append("g").attr("class","stateLabel"),{x:h,y:f}=$t.calcLabelPosition(e.points),d=Ze.getRows(r.title),p=0,m=[],g=0,y=0;for(let b=0;b<=d.length;b++){let w=u.append("text").attr("text-anchor","middle").text(d[b]).attr("x",h).attr("y",f+p),C=w.node().getBBox();g=Math.max(g,C.width),y=Math.min(y,C.x),Y.info(C.x,h,f+p),p===0&&(p=w.node().getBBox().height,Y.info("Title height",p,f)),m.push(w)}let v=p*d.length;if(d.length>1){let b=(d.length-1)*p*.5;m.forEach((w,C)=>w.attr("y",f+C*p-b)),v=p*d.length}let x=u.node().getBBox();u.insert("rect",":first-child").attr("class","box").attr("x",h-g/2-me().state.padding/2).attr("y",f-v/2-me().state.padding/2-3.5).attr("width",g+me().state.padding).attr("height",v+me().state.padding),Y.info(x)}Jfe++},"drawEdge")});var lo,YO,XVe,jVe,KVe,QVe,nde,ide,ade=M(()=>{"use strict";hr();cR();Fo();vt();gr();rde();Gt();Ti();YO={},XVe=o(function(){},"setConf"),jVe=o(function(t){t.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"insertMarkers"),KVe=o(function(t,e,r,n){lo=me().state;let i=me().securityLevel,a;i==="sandbox"&&(a=$e("#i"+e));let s=i==="sandbox"?$e(a.nodes()[0].contentDocument.body):$e("body"),l=i==="sandbox"?a.nodes()[0].contentDocument:document;Y.debug("Rendering diagram "+t);let u=s.select(`[id='${e}']`);jVe(u);let h=n.db.getRootDoc();nde(h,u,void 0,!1,s,l,n);let f=lo.padding,d=u.node().getBBox(),p=d.width+f*2,m=d.height+f*2,g=p*1.75;vn(u,m,g,lo.useMaxWidth),u.attr("viewBox",`${d.x-lo.padding} ${d.y-lo.padding} `+p+" "+m)},"draw"),QVe=o(t=>t?t.length*lo.fontSizeFactor:1,"getLabelWidth"),nde=o((t,e,r,n,i,a,s)=>{let l=new sn({compound:!0,multigraph:!0}),u,h=!0;for(u=0;u{let T=C.parentElement,E=0,A=0;T&&(T.parentElement&&(E=T.parentElement.getBBox().width),A=parseInt(T.getAttribute("data-x-shift"),10),Number.isNaN(A)&&(A=0)),C.setAttribute("x1",0-A+8),C.setAttribute("x2",E-A-8)})):Y.debug("No Node "+b+": "+JSON.stringify(l.node(b)))});let v=y.getBBox();l.edges().forEach(function(b){b!==void 0&&l.edge(b)!==void 0&&(Y.debug("Edge "+b.v+" -> "+b.w+": "+JSON.stringify(l.edge(b))),tde(e,l.edge(b),l.edge(b).relation))}),v=y.getBBox();let x={id:r||"root",label:r||"root",width:0,height:0};return x.width=v.width+2*lo.padding,x.height=v.height+2*lo.padding,Y.debug("Doc rendered",x,l),x},"renderDoc"),ide={setConf:XVe,draw:KVe}});var sde={};pr(sde,{diagram:()=>ZVe});var ZVe,ode=M(()=>{"use strict";AO();L6();HO();ade();ZVe={parser:b6,get db(){return new Xo(1)},renderer:ide,styles:R6,init:o(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var ude={};pr(ude,{diagram:()=>rUe});var rUe,hde=M(()=>{"use strict";AO();L6();HO();VO();rUe={parser:b6,get db(){return new Xo(2)},renderer:Vfe,styles:R6,init:o(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var XO,pde,mde=M(()=>{"use strict";XO=function(){var t=o(function(d,p,m,g){for(m=m||{},g=d.length;g--;m[d[g]]=p);return m},"o"),e=[6,8,10,11,12,14,16,17,18],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],l=[1,14],u={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:o(function(p,m,g,y,v,x,b){var w=x.length-1;switch(v){case 1:return x[w-1];case 2:this.$=[];break;case 3:x[w-1].push(x[w]),this.$=x[w-1];break;case 4:case 5:this.$=x[w];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(x[w].substr(6)),this.$=x[w].substr(6);break;case 9:this.$=x[w].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=x[w].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(x[w].substr(8)),this.$=x[w].substr(8);break;case 13:y.addTask(x[w-1],x[w]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:r,12:n,14:i,16:a,17:s,18:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:o(function(p,m){if(m.recoverable)this.trace(p);else{var g=new Error(p);throw g.hash=m,g}},"parseError"),parse:o(function(p){var m=this,g=[0],y=[],v=[null],x=[],b=this.table,w="",C=0,T=0,E=0,A=2,S=1,_=x.slice.call(arguments,1),I=Object.create(this.lexer),D={yy:{}};for(var k in this.yy)Object.prototype.hasOwnProperty.call(this.yy,k)&&(D.yy[k]=this.yy[k]);I.setInput(p,D.yy),D.yy.lexer=I,D.yy.parser=this,typeof I.yylloc>"u"&&(I.yylloc={});var L=I.yylloc;x.push(L);var R=I.options&&I.options.ranges;typeof D.yy.parseError=="function"?this.parseError=D.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function O(K){g.length=g.length-2*K,v.length=v.length-K,x.length=x.length-K}o(O,"popStack");function N(){var K;return K=y.pop()||I.lex()||S,typeof K!="number"&&(K instanceof Array&&(y=K,K=y.pop()),K=m.symbols_[K]||K),K}o(N,"lex");for(var B,F,P,G,z,H,Q={},j,ie,ne,le;;){if(P=g[g.length-1],this.defaultActions[P]?G=this.defaultActions[P]:((B===null||typeof B>"u")&&(B=N()),G=b[P]&&b[P][B]),typeof G>"u"||!G.length||!G[0]){var he="";le=[];for(j in b[P])this.terminals_[j]&&j>A&&le.push("'"+this.terminals_[j]+"'");I.showPosition?he="Parse error on line "+(C+1)+`: `+I.showPosition()+` -Expecting `+ee.join(", ")+", got '"+(this.terminals_[P]||P)+"'":J="Parse error on line "+(_+1)+": Unexpected "+(P==C?"end of input":"'"+(this.terminals_[P]||P)+"'"),this.parseError(J,{text:I.match,token:this.terminals_[P]||P,line:I.yylineno,loc:R,expected:ee})}if($[0]instanceof Array&&$.length>1)throw new Error("Parse Error: multiple actions possible at state: "+B+", token: "+P);switch($[0]){case 1:g.push(P),v.push(I.yytext),x.push(I.yylloc),g.push($[1]),P=null,F?(P=F,F=null):(T=I.yyleng,w=I.yytext,_=I.yylineno,R=I.yylloc,E>0&&E--);break;case 2:if(ie=this.productions_[$[1]][1],j.$=v[v.length-ie],j._$={first_line:x[x.length-(ie||1)].first_line,last_line:x[x.length-1].last_line,first_column:x[x.length-(ie||1)].first_column,last_column:x[x.length-1].last_column},S&&(j._$.range=[x[x.length-(ie||1)].range[0],x[x.length-1].range[1]]),W=this.performAction.apply(j,[w,T,_,D.yy,$[1],v,x].concat(A)),typeof W<"u")return W;ie&&(g=g.slice(0,-1*ie*2),v=v.slice(0,-1*ie),x=x.slice(0,-1*ie)),g.push(this.productions_[$[1]][0]),v.push(j.$),x.push(j._$),Q=b[g[g.length-2]][g[g.length-1]],g.push(Q);break;case 3:return!0}}return!0},"parse")},h=function(){var d={EOF:1,parseError:o(function(m,g){if(this.yy.parser)this.yy.parser.parseError(m,g);else throw new Error(m)},"parseError"),setInput:o(function(p,m){return this.yy=m||this.yy||{},this._input=p,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var p=this._input[0];this.yytext+=p,this.yyleng++,this.offset++,this.match+=p,this.matched+=p;var m=p.match(/(?:\r\n?|\n).*/g);return m?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),p},"input"),unput:o(function(p){var m=p.length,g=p.split(/(?:\r\n?|\n)/g);this._input=p+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-m),this.offset-=m;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var v=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===y.length?this.yylloc.first_column:0)+y[y.length-g.length].length-g[0].length:this.yylloc.first_column-m},this.options.ranges&&(this.yylloc.range=[v[0],v[0]+this.yyleng-m]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +Expecting `+le.join(", ")+", got '"+(this.terminals_[B]||B)+"'":he="Parse error on line "+(C+1)+": Unexpected "+(B==S?"end of input":"'"+(this.terminals_[B]||B)+"'"),this.parseError(he,{text:I.match,token:this.terminals_[B]||B,line:I.yylineno,loc:L,expected:le})}if(G[0]instanceof Array&&G.length>1)throw new Error("Parse Error: multiple actions possible at state: "+P+", token: "+B);switch(G[0]){case 1:g.push(B),v.push(I.yytext),x.push(I.yylloc),g.push(G[1]),B=null,F?(B=F,F=null):(T=I.yyleng,w=I.yytext,C=I.yylineno,L=I.yylloc,E>0&&E--);break;case 2:if(ie=this.productions_[G[1]][1],Q.$=v[v.length-ie],Q._$={first_line:x[x.length-(ie||1)].first_line,last_line:x[x.length-1].last_line,first_column:x[x.length-(ie||1)].first_column,last_column:x[x.length-1].last_column},R&&(Q._$.range=[x[x.length-(ie||1)].range[0],x[x.length-1].range[1]]),H=this.performAction.apply(Q,[w,T,C,D.yy,G[1],v,x].concat(_)),typeof H<"u")return H;ie&&(g=g.slice(0,-1*ie*2),v=v.slice(0,-1*ie),x=x.slice(0,-1*ie)),g.push(this.productions_[G[1]][0]),v.push(Q.$),x.push(Q._$),ne=b[g[g.length-2]][g[g.length-1]],g.push(ne);break;case 3:return!0}}return!0},"parse")},h=function(){var d={EOF:1,parseError:o(function(m,g){if(this.yy.parser)this.yy.parser.parseError(m,g);else throw new Error(m)},"parseError"),setInput:o(function(p,m){return this.yy=m||this.yy||{},this._input=p,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var p=this._input[0];this.yytext+=p,this.yyleng++,this.offset++,this.match+=p,this.matched+=p;var m=p.match(/(?:\r\n?|\n).*/g);return m?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),p},"input"),unput:o(function(p){var m=p.length,g=p.split(/(?:\r\n?|\n)/g);this._input=p+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-m),this.offset-=m;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var v=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===y.length?this.yylloc.first_column:0)+y[y.length-g.length].length-g[0].length:this.yylloc.first_column-m},this.options.ranges&&(this.yylloc.range=[v[0],v[0]+this.yyleng-m]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(p){this.unput(this.match.slice(p))},"less"),pastInput:o(function(){var p=this.matched.substr(0,this.matched.length-this.match.length);return(p.length>20?"...":"")+p.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var p=this.match;return p.length<20&&(p+=this._input.substr(0,20-p.length)),(p.substr(0,20)+(p.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var p=this.pastInput(),m=new Array(p.length+1).join("-");return p+this.upcomingInput()+` `+m+"^"},"showPosition"),test_match:o(function(p,m){var g,y,v;if(this.options.backtrack_lexer&&(v={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(v.yylloc.range=this.yylloc.range.slice(0))),y=p[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+p[0].length},this.yytext+=p[0],this.match+=p[0],this.matches=p,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(p[0].length),this.matched+=p[0],g=this.performAction.call(this,this.yy,this,m,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),g)return g;if(this._backtrack){for(var x in v)this[x]=v[x];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var p,m,g,y;this._more||(this.yytext="",this.match="");for(var v=this._currentRules(),x=0;xm[0].length)){if(m=g,y=x,this.options.backtrack_lexer){if(p=this.test_match(g,v[x]),p!==!1)return p;if(this._backtrack){m=!1;continue}else return!1}else if(!this.options.flex)break}return m?(p=this.test_match(m,v[y]),p!==!1?p:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var m=this.next();return m||this.lex()},"lex"),begin:o(function(m){this.conditionStack.push(m)},"begin"),popState:o(function(){var m=this.conditionStack.length-1;return m>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(m){return m=this.conditionStack.length-1-Math.abs(m||0),m>=0?this.conditionStack[m]:"INITIAL"},"topState"),pushState:o(function(m){this.begin(m)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(m,g,y,v){var x=v;switch(y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return d}();u.lexer=h;function f(){this.yy={}}return o(f,"Parser"),f.prototype=u,u.Parser=f,new f}();hP.parser=hP;N0e=hP});var Yg,fP,Ax,_x,PYe,BYe,FYe,zYe,GYe,$Ye,VYe,M0e,UYe,dP,I0e=M(()=>{"use strict";Vt();ki();Yg="",fP=[],Ax=[],_x=[],PYe=o(function(){fP.length=0,Ax.length=0,Yg="",_x.length=0,_r()},"clear"),BYe=o(function(t){Yg=t,fP.push(t)},"addSection"),FYe=o(function(){return fP},"getSections"),zYe=o(function(){let t=M0e(),e=100,r=0;for(;!t&&r{r.people&&t.push(...r.people)}),[...new Set(t)].sort()},"updateActors"),$Ye=o(function(t,e){let r=e.substr(1).split(":"),n=0,i=[];r.length===1?(n=Number(r[0]),i=[]):(n=Number(r[0]),i=r[1].split(","));let a=i.map(l=>l.trim()),s={section:Yg,type:Yg,people:a,task:t,score:n};_x.push(s)},"addTask"),VYe=o(function(t){let e={section:Yg,type:Yg,description:t,task:t,classes:[]};Ax.push(e)},"addTaskOrg"),M0e=o(function(){let t=o(function(r){return _x[r].processed},"compileTask"),e=!0;for(let[r,n]of _x.entries())t(r),e=e&&n.processed;return e},"compileTasks"),UYe=o(function(){return GYe()},"getActors"),dP={getConfig:o(()=>de().journey,"getConfig"),clear:PYe,setDiagramTitle:ln,getDiagramTitle:Jr,setAccTitle:Rr,getAccTitle:Pr,setAccDescription:Br,getAccDescription:Fr,addSection:BYe,getSections:FYe,getTasks:zYe,addTask:$Ye,addTaskOrg:VYe,getActors:UYe}});var HYe,O0e,P0e=M(()=>{"use strict";HYe=o(t=>`.label { - font-family: 'trebuchet ms', verdana, arial, sans-serif; - font-family: var(--mermaid-font-family); +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var m=this.next();return m||this.lex()},"lex"),begin:o(function(m){this.conditionStack.push(m)},"begin"),popState:o(function(){var m=this.conditionStack.length-1;return m>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(m){return m=this.conditionStack.length-1-Math.abs(m||0),m>=0?this.conditionStack[m]:"INITIAL"},"topState"),pushState:o(function(m){this.begin(m)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(m,g,y,v){var x=v;switch(y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return d}();u.lexer=h;function f(){this.yy={}}return o(f,"Parser"),f.prototype=u,u.Parser=f,new f}();XO.parser=XO;pde=XO});var _1,jO,fb,db,sUe,oUe,lUe,cUe,uUe,hUe,fUe,gde,dUe,KO,yde=M(()=>{"use strict";Gt();ki();_1="",jO=[],fb=[],db=[],sUe=o(function(){jO.length=0,fb.length=0,_1="",db.length=0,Dr()},"clear"),oUe=o(function(t){_1=t,jO.push(t)},"addSection"),lUe=o(function(){return jO},"getSections"),cUe=o(function(){let t=gde(),e=100,r=0;for(;!t&&r{r.people&&t.push(...r.people)}),[...new Set(t)].sort()},"updateActors"),hUe=o(function(t,e){let r=e.substr(1).split(":"),n=0,i=[];r.length===1?(n=Number(r[0]),i=[]):(n=Number(r[0]),i=r[1].split(","));let a=i.map(l=>l.trim()),s={section:_1,type:_1,people:a,task:t,score:n};db.push(s)},"addTask"),fUe=o(function(t){let e={section:_1,type:_1,description:t,task:t,classes:[]};fb.push(e)},"addTaskOrg"),gde=o(function(){let t=o(function(r){return db[r].processed},"compileTask"),e=!0;for(let[r,n]of db.entries())t(r),e=e&&n.processed;return e},"compileTasks"),dUe=o(function(){return uUe()},"getActors"),KO={getConfig:o(()=>me().journey,"getConfig"),clear:sUe,setDiagramTitle:Zr,getDiagramTitle:Fr,setAccTitle:Mr,getAccTitle:Or,setAccDescription:Pr,getAccDescription:Br,addSection:oUe,getSections:lUe,getTasks:cUe,addTask:hUe,addTaskOrg:fUe,getActors:dUe}});var pUe,vde,xde=M(()=>{"use strict";pUe=o(t=>`.label { + font-family: ${t.fontFamily}; color: ${t.textColor}; } .mouth { @@ -1713,6 +1760,7 @@ Expecting `+ee.join(", ")+", got '"+(this.terminals_[P]||P)+"'":J="Parse error o .legend { fill: ${t.textColor}; + font-family: ${t.fontFamily}; } .label text { @@ -1778,8 +1826,7 @@ Expecting `+ee.join(", ")+", got '"+(this.terminals_[P]||P)+"'":J="Parse error o text-align: center; max-width: 200px; padding: 2px; - font-family: 'trebuchet ms', verdana, arial, sans-serif; - font-family: var(--mermaid-font-family); + font-family: ${t.fontFamily}; font-size: 12px; background: ${t.tertiaryColor}; border: 1px solid ${t.border2}; @@ -1831,12 +1878,12 @@ Expecting `+ee.join(", ")+", got '"+(this.terminals_[P]||P)+"'":J="Parse error o .actor-5 { ${t.actor5?`fill: ${t.actor5}`:""}; } -`,"getStyles"),O0e=HYe});var pP,WYe,F0e,z0e,YYe,qYe,B0e,XYe,jYe,G0e,KYe,qg,$0e=M(()=>{"use strict";mr();qy();pP=o(function(t,e){return md(t,e)},"drawRect"),WYe=o(function(t,e){let n=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=El().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}o(a,"smile");function s(u){let h=El().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),e.score>3?a(i):e.score<3?s(i):l(i),n},"drawFace"),F0e=o(function(t,e){let r=t.append("circle");return r.attr("cx",e.cx),r.attr("cy",e.cy),r.attr("class","actor-"+e.pos),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("r",e.r),r.class!==void 0&&r.attr("class",r.class),e.title!==void 0&&r.append("title").text(e.title),r},"drawCircle"),z0e=o(function(t,e){return DY(t,e)},"drawText"),YYe=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=t.append("polygon");n.attr("points",r(e.x,e.y,50,20,7)),n.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,z0e(t,e)},"drawLabel"),qYe=o(function(t,e,r){let n=t.append("g"),i=Sl();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=r.width*e.taskCount+r.diagramMarginX*(e.taskCount-1),i.height=r.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,pP(n,i),G0e(r)(e.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),B0e=-1,XYe=o(function(t,e,r){let n=e.x+r.width/2,i=t.append("g");B0e++;let a=300+5*30;i.append("line").attr("id","task"+B0e).attr("x1",n).attr("y1",e.y).attr("x2",n).attr("y2",a).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),WYe(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});let s=Sl();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=r.width,s.height=r.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,pP(i,s);let l=e.x+14;e.people.forEach(u=>{let h=e.actors[u].color,f={cx:l,cy:e.y,r:7,fill:h,stroke:"#000",title:u,pos:e.actors[u].position};F0e(i,f),l+=10}),G0e(r)(e.task,i,s.x,s.y,s.width,s.height,{class:"task"},r,e.colour)},"drawTask"),jYe=o(function(t,e){Y3(t,e)},"drawBackgroundRect"),G0e=function(){function t(i,a,s,l,u,h,f,d){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",d).style("text-anchor","middle").text(i);n(p,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d,p){let{taskFontSize:m,taskFontFamily:g}=d,y=i.split(//gi);for(let v=0;v{let i=Yu[n].color,a={cx:20,cy:r,r:7,fill:i,stroke:"#000",pos:Yu[n].position};qg.drawCircle(t,a);let s={x:40,y:r+7,fill:"#666",text:n,textMargin:e.boxTextMargin|5};qg.drawText(t,s),r+=20})}var QYe,Yu,HE,D0,JYe,rl,mP,V0e,eqe,gP,U0e=M(()=>{"use strict";mr();$0e();Vt();ni();QYe=o(function(t){Object.keys(t).forEach(function(r){HE[r]=t[r]})},"setConf"),Yu={};o(ZYe,"drawActorLegend");HE=de().journey,D0=HE.leftMargin,JYe=o(function(t,e,r,n){let i=de().journey,a=de().securityLevel,s;a==="sandbox"&&(s=ze("#i"+e));let l=a==="sandbox"?ze(s.nodes()[0].contentDocument.body):ze("body");rl.init();let u=l.select("#"+e);qg.initGraphics(u);let h=n.db.getTasks(),f=n.db.getDiagramTitle(),d=n.db.getActors();for(let x in Yu)delete Yu[x];let p=0;d.forEach(x=>{Yu[x]={color:i.actorColours[p%i.actorColours.length],position:p},p++}),ZYe(u),rl.insert(0,0,D0,Object.keys(Yu).length*50),eqe(u,h,0);let m=rl.getBounds();f&&u.append("text").text(f).attr("x",D0).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);let g=m.stopy-m.starty+2*i.diagramMarginY,y=D0+m.stopx+2*i.diagramMarginX;Zr(u,g,y,i.useMaxWidth),u.append("line").attr("x1",D0).attr("y1",i.height*4).attr("x2",y-D0-4).attr("y2",i.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");let v=f?70:0;u.attr("viewBox",`${m.startx} -25 ${y} ${g+v}`),u.attr("preserveAspectRatio","xMinYMin meet"),u.attr("height",g+v+25)},"draw"),rl={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:o(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:o(function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:o(function(t,e,r,n){let i=de().journey,a=this,s=0;function l(u){return o(function(f){s++;let d=a.sequenceItems.length-s+1;a.updateVal(f,"starty",e-d*i.boxMargin,Math.min),a.updateVal(f,"stopy",n+d*i.boxMargin,Math.max),a.updateVal(rl.data,"startx",t-d*i.boxMargin,Math.min),a.updateVal(rl.data,"stopx",r+d*i.boxMargin,Math.max),u!=="activation"&&(a.updateVal(f,"startx",t-d*i.boxMargin,Math.min),a.updateVal(f,"stopx",r+d*i.boxMargin,Math.max),a.updateVal(rl.data,"starty",e-d*i.boxMargin,Math.min),a.updateVal(rl.data,"stopy",n+d*i.boxMargin,Math.max))},"updateItemBounds")}o(l,"updateFn"),this.sequenceItems.forEach(l())},"updateBounds"),insert:o(function(t,e,r,n){let i=Math.min(t,r),a=Math.max(t,r),s=Math.min(e,n),l=Math.max(e,n);this.updateVal(rl.data,"startx",i,Math.min),this.updateVal(rl.data,"starty",s,Math.min),this.updateVal(rl.data,"stopx",a,Math.max),this.updateVal(rl.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),bumpVerticalPos:o(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return this.data},"getBounds")},mP=HE.sectionFills,V0e=HE.sectionColours,eqe=o(function(t,e,r){let n=de().journey,i="",a=n.height*2+n.diagramMarginY,s=r+a,l=0,u="#CCC",h="black",f=0;for(let[d,p]of e.entries()){if(i!==p.section){u=mP[l%mP.length],f=l%mP.length,h=V0e[l%V0e.length];let g=0,y=p.section;for(let x=d;x(Yu[y]&&(g[y]=Yu[y]),g),{});p.x=d*n.taskMargin+d*n.width+D0,p.y=s,p.width=n.diagramMarginX,p.height=n.diagramMarginY,p.colour=h,p.fill=u,p.num=f,p.actors=m,qg.drawTask(t,p,n),rl.insert(p.x,p.y,p.x+p.width+n.taskMargin,300+5*30)}},"drawTasks"),gP={setConf:QYe,draw:JYe}});var H0e={};vr(H0e,{diagram:()=>tqe});var tqe,W0e=M(()=>{"use strict";R0e();I0e();P0e();U0e();tqe={parser:N0e,db:dP,renderer:gP,styles:O0e,init:o(t=>{gP.setConf(t.journey),dP.clear()},"init")}});var vP,Z0e,J0e=M(()=>{"use strict";vP=function(){var t=o(function(p,m,g,y){for(g=g||{},y=p.length;y--;g[p[y]]=m);return g},"o"),e=[6,8,10,11,12,14,16,17,20,21],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],l=[1,16],u=[1,17],h={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:o(function(m,g,y,v,x,b,w){var _=b.length-1;switch(x){case 1:return b[_-1];case 2:this.$=[];break;case 3:b[_-1].push(b[_]),this.$=b[_-1];break;case 4:case 5:this.$=b[_];break;case 6:case 7:this.$=[];break;case 8:v.getCommonDb().setDiagramTitle(b[_].substr(6)),this.$=b[_].substr(6);break;case 9:this.$=b[_].trim(),v.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=b[_].trim(),v.getCommonDb().setAccDescription(this.$);break;case 12:v.addSection(b[_].substr(8)),this.$=b[_].substr(8);break;case 15:v.addTask(b[_],0,""),this.$=b[_];break;case 16:v.addEvent(b[_].substr(2)),this.$=b[_];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:14,19:15,20:l,21:u},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:18,11:r,12:n,14:i,16:a,17:s,18:14,19:15,20:l,21:u},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,19]},{15:[1,20]},t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),t(e,[2,4]),t(e,[2,9]),t(e,[2,10])],defaultActions:{},parseError:o(function(m,g){if(g.recoverable)this.trace(m);else{var y=new Error(m);throw y.hash=g,y}},"parseError"),parse:o(function(m){var g=this,y=[0],v=[],x=[null],b=[],w=this.table,_="",T=0,E=0,L=0,C=2,A=1,I=b.slice.call(arguments,1),D=Object.create(this.lexer),k={yy:{}};for(var R in this.yy)Object.prototype.hasOwnProperty.call(this.yy,R)&&(k.yy[R]=this.yy[R]);D.setInput(m,k.yy),k.yy.lexer=D,k.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var S=D.yylloc;b.push(S);var O=D.options&&D.options.ranges;typeof k.yy.parseError=="function"?this.parseError=k.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function N(q){y.length=y.length-2*q,x.length=x.length-q,b.length=b.length-q}o(N,"popStack");function P(){var q;return q=v.pop()||D.lex()||A,typeof q!="number"&&(q instanceof Array&&(v=q,q=v.pop()),q=g.symbols_[q]||q),q}o(P,"lex");for(var F,B,$,z,W,j,K={},ie,Q,ee,J;;){if($=y[y.length-1],this.defaultActions[$]?z=this.defaultActions[$]:((F===null||typeof F>"u")&&(F=P()),z=w[$]&&w[$][F]),typeof z>"u"||!z.length||!z[0]){var H="";J=[];for(ie in w[$])this.terminals_[ie]&&ie>C&&J.push("'"+this.terminals_[ie]+"'");D.showPosition?H="Parse error on line "+(T+1)+`: +`,"getStyles"),vde=pUe});var QO,mUe,wde,Tde,gUe,yUe,bde,vUe,xUe,kde,bUe,D1,Ede=M(()=>{"use strict";hr();Rv();QO=o(function(t,e){return bd(t,e)},"drawRect"),mUe=o(function(t,e){let n=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=yl().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}o(a,"smile");function s(u){let h=yl().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),e.score>3?a(i):e.score<3?s(i):l(i),n},"drawFace"),wde=o(function(t,e){let r=t.append("circle");return r.attr("cx",e.cx),r.attr("cy",e.cy),r.attr("class","actor-"+e.pos),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("r",e.r),r.class!==void 0&&r.attr("class",r.class),e.title!==void 0&&r.append("title").text(e.title),r},"drawCircle"),Tde=o(function(t,e){return xq(t,e)},"drawText"),gUe=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=t.append("polygon");n.attr("points",r(e.x,e.y,50,20,7)),n.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,Tde(t,e)},"drawLabel"),yUe=o(function(t,e,r){let n=t.append("g"),i=xl();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=r.width*e.taskCount+r.diagramMarginX*(e.taskCount-1),i.height=r.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,QO(n,i),kde(r)(e.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),bde=-1,vUe=o(function(t,e,r){let n=e.x+r.width/2,i=t.append("g");bde++;let a=300+5*30;i.append("line").attr("id","task"+bde).attr("x1",n).attr("y1",e.y).attr("x2",n).attr("y2",a).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),mUe(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});let s=xl();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=r.width,s.height=r.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,QO(i,s);let l=e.x+14;e.people.forEach(u=>{let h=e.actors[u].color,f={cx:l,cy:e.y,r:7,fill:h,stroke:"#000",title:u,pos:e.actors[u].position};wde(i,f),l+=10}),kde(r)(e.task,i,s.x,s.y,s.width,s.height,{class:"task"},r,e.colour)},"drawTask"),xUe=o(function(t,e){P5(t,e)},"drawBackgroundRect"),kde=function(){function t(i,a,s,l,u,h,f,d){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",d).style("text-anchor","middle").text(i);n(p,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d,p){let{taskFontSize:m,taskFontFamily:g}=d,y=i.split(//gi);for(let v=0;v{let i=qu[n].color,a={cx:20,cy:r,r:7,fill:i,stroke:"#000",pos:qu[n].position};D1.drawCircle(t,a);let s={x:40,y:r+7,fill:"#666",text:n,textMargin:e.boxTextMargin|5};D1.drawText(t,s),r+=20})}var wUe,qu,N6,Lp,kUe,jo,ZO,Sde,EUe,JO,Cde=M(()=>{"use strict";hr();Ede();Gt();Ti();wUe=o(function(t){Object.keys(t).forEach(function(r){N6[r]=t[r]})},"setConf"),qu={};o(TUe,"drawActorLegend");N6=me().journey,Lp=N6.leftMargin,kUe=o(function(t,e,r,n){let i=me().journey,a=me().securityLevel,s;a==="sandbox"&&(s=$e("#i"+e));let l=a==="sandbox"?$e(s.nodes()[0].contentDocument.body):$e("body");jo.init();let u=l.select("#"+e);D1.initGraphics(u);let h=n.db.getTasks(),f=n.db.getDiagramTitle(),d=n.db.getActors();for(let x in qu)delete qu[x];let p=0;d.forEach(x=>{qu[x]={color:i.actorColours[p%i.actorColours.length],position:p},p++}),TUe(u),jo.insert(0,0,Lp,Object.keys(qu).length*50),EUe(u,h,0);let m=jo.getBounds();f&&u.append("text").text(f).attr("x",Lp).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);let g=m.stopy-m.starty+2*i.diagramMarginY,y=Lp+m.stopx+2*i.diagramMarginX;vn(u,g,y,i.useMaxWidth),u.append("line").attr("x1",Lp).attr("y1",i.height*4).attr("x2",y-Lp-4).attr("y2",i.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");let v=f?70:0;u.attr("viewBox",`${m.startx} -25 ${y} ${g+v}`),u.attr("preserveAspectRatio","xMinYMin meet"),u.attr("height",g+v+25)},"draw"),jo={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:o(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:o(function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:o(function(t,e,r,n){let i=me().journey,a=this,s=0;function l(u){return o(function(f){s++;let d=a.sequenceItems.length-s+1;a.updateVal(f,"starty",e-d*i.boxMargin,Math.min),a.updateVal(f,"stopy",n+d*i.boxMargin,Math.max),a.updateVal(jo.data,"startx",t-d*i.boxMargin,Math.min),a.updateVal(jo.data,"stopx",r+d*i.boxMargin,Math.max),u!=="activation"&&(a.updateVal(f,"startx",t-d*i.boxMargin,Math.min),a.updateVal(f,"stopx",r+d*i.boxMargin,Math.max),a.updateVal(jo.data,"starty",e-d*i.boxMargin,Math.min),a.updateVal(jo.data,"stopy",n+d*i.boxMargin,Math.max))},"updateItemBounds")}o(l,"updateFn"),this.sequenceItems.forEach(l())},"updateBounds"),insert:o(function(t,e,r,n){let i=Math.min(t,r),a=Math.max(t,r),s=Math.min(e,n),l=Math.max(e,n);this.updateVal(jo.data,"startx",i,Math.min),this.updateVal(jo.data,"starty",s,Math.min),this.updateVal(jo.data,"stopx",a,Math.max),this.updateVal(jo.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),bumpVerticalPos:o(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return this.data},"getBounds")},ZO=N6.sectionFills,Sde=N6.sectionColours,EUe=o(function(t,e,r){let n=me().journey,i="",a=n.height*2+n.diagramMarginY,s=r+a,l=0,u="#CCC",h="black",f=0;for(let[d,p]of e.entries()){if(i!==p.section){u=ZO[l%ZO.length],f=l%ZO.length,h=Sde[l%Sde.length];let g=0,y=p.section;for(let x=d;x(qu[y]&&(g[y]=qu[y]),g),{});p.x=d*n.taskMargin+d*n.width+Lp,p.y=s,p.width=n.diagramMarginX,p.height=n.diagramMarginY,p.colour=h,p.fill=u,p.num=f,p.actors=m,D1.drawTask(t,p,n),jo.insert(p.x,p.y,p.x+p.width+n.taskMargin,300+5*30)}},"drawTasks"),JO={setConf:wUe,draw:kUe}});var Ade={};pr(Ade,{diagram:()=>SUe});var SUe,_de=M(()=>{"use strict";mde();yde();xde();Cde();SUe={parser:pde,db:KO,renderer:JO,styles:vde,init:o(t=>{JO.setConf(t.journey),KO.clear()},"init")}});var tP,Ode,Pde=M(()=>{"use strict";tP=function(){var t=o(function(p,m,g,y){for(g=g||{},y=p.length;y--;g[p[y]]=m);return g},"o"),e=[6,8,10,11,12,14,16,17,20,21],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],l=[1,16],u=[1,17],h={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:o(function(m,g,y,v,x,b,w){var C=b.length-1;switch(x){case 1:return b[C-1];case 2:this.$=[];break;case 3:b[C-1].push(b[C]),this.$=b[C-1];break;case 4:case 5:this.$=b[C];break;case 6:case 7:this.$=[];break;case 8:v.getCommonDb().setDiagramTitle(b[C].substr(6)),this.$=b[C].substr(6);break;case 9:this.$=b[C].trim(),v.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=b[C].trim(),v.getCommonDb().setAccDescription(this.$);break;case 12:v.addSection(b[C].substr(8)),this.$=b[C].substr(8);break;case 15:v.addTask(b[C],0,""),this.$=b[C];break;case 16:v.addEvent(b[C].substr(2)),this.$=b[C];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:14,19:15,20:l,21:u},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:18,11:r,12:n,14:i,16:a,17:s,18:14,19:15,20:l,21:u},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,19]},{15:[1,20]},t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),t(e,[2,4]),t(e,[2,9]),t(e,[2,10])],defaultActions:{},parseError:o(function(m,g){if(g.recoverable)this.trace(m);else{var y=new Error(m);throw y.hash=g,y}},"parseError"),parse:o(function(m){var g=this,y=[0],v=[],x=[null],b=[],w=this.table,C="",T=0,E=0,A=0,S=2,_=1,I=b.slice.call(arguments,1),D=Object.create(this.lexer),k={yy:{}};for(var L in this.yy)Object.prototype.hasOwnProperty.call(this.yy,L)&&(k.yy[L]=this.yy[L]);D.setInput(m,k.yy),k.yy.lexer=D,k.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var R=D.yylloc;b.push(R);var O=D.options&&D.options.ranges;typeof k.yy.parseError=="function"?this.parseError=k.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function N(X){y.length=y.length-2*X,x.length=x.length-X,b.length=b.length-X}o(N,"popStack");function B(){var X;return X=v.pop()||D.lex()||_,typeof X!="number"&&(X instanceof Array&&(v=X,X=v.pop()),X=g.symbols_[X]||X),X}o(B,"lex");for(var F,P,G,z,H,Q,j={},ie,ne,le,he;;){if(G=y[y.length-1],this.defaultActions[G]?z=this.defaultActions[G]:((F===null||typeof F>"u")&&(F=B()),z=w[G]&&w[G][F]),typeof z>"u"||!z.length||!z[0]){var K="";he=[];for(ie in w[G])this.terminals_[ie]&&ie>S&&he.push("'"+this.terminals_[ie]+"'");D.showPosition?K="Parse error on line "+(T+1)+`: `+D.showPosition()+` -Expecting `+J.join(", ")+", got '"+(this.terminals_[F]||F)+"'":H="Parse error on line "+(T+1)+": Unexpected "+(F==A?"end of input":"'"+(this.terminals_[F]||F)+"'"),this.parseError(H,{text:D.match,token:this.terminals_[F]||F,line:D.yylineno,loc:S,expected:J})}if(z[0]instanceof Array&&z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+$+", token: "+F);switch(z[0]){case 1:y.push(F),x.push(D.yytext),b.push(D.yylloc),y.push(z[1]),F=null,B?(F=B,B=null):(E=D.yyleng,_=D.yytext,T=D.yylineno,S=D.yylloc,L>0&&L--);break;case 2:if(Q=this.productions_[z[1]][1],K.$=x[x.length-Q],K._$={first_line:b[b.length-(Q||1)].first_line,last_line:b[b.length-1].last_line,first_column:b[b.length-(Q||1)].first_column,last_column:b[b.length-1].last_column},O&&(K._$.range=[b[b.length-(Q||1)].range[0],b[b.length-1].range[1]]),j=this.performAction.apply(K,[_,E,T,k.yy,z[1],x,b].concat(I)),typeof j<"u")return j;Q&&(y=y.slice(0,-1*Q*2),x=x.slice(0,-1*Q),b=b.slice(0,-1*Q)),y.push(this.productions_[z[1]][0]),x.push(K.$),b.push(K._$),ee=w[y[y.length-2]][y[y.length-1]],y.push(ee);break;case 3:return!0}}return!0},"parse")},f=function(){var p={EOF:1,parseError:o(function(g,y){if(this.yy.parser)this.yy.parser.parseError(g,y);else throw new Error(g)},"parseError"),setInput:o(function(m,g){return this.yy=g||this.yy||{},this._input=m,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var m=this._input[0];this.yytext+=m,this.yyleng++,this.offset++,this.match+=m,this.matched+=m;var g=m.match(/(?:\r\n?|\n).*/g);return g?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),m},"input"),unput:o(function(m){var g=m.length,y=m.split(/(?:\r\n?|\n)/g);this._input=m+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-g),this.offset-=g;var v=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),y.length-1&&(this.yylineno-=y.length-1);var x=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:y?(y.length===v.length?this.yylloc.first_column:0)+v[v.length-y.length].length-y[0].length:this.yylloc.first_column-g},this.options.ranges&&(this.yylloc.range=[x[0],x[0]+this.yyleng-g]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +Expecting `+he.join(", ")+", got '"+(this.terminals_[F]||F)+"'":K="Parse error on line "+(T+1)+": Unexpected "+(F==_?"end of input":"'"+(this.terminals_[F]||F)+"'"),this.parseError(K,{text:D.match,token:this.terminals_[F]||F,line:D.yylineno,loc:R,expected:he})}if(z[0]instanceof Array&&z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+G+", token: "+F);switch(z[0]){case 1:y.push(F),x.push(D.yytext),b.push(D.yylloc),y.push(z[1]),F=null,P?(F=P,P=null):(E=D.yyleng,C=D.yytext,T=D.yylineno,R=D.yylloc,A>0&&A--);break;case 2:if(ne=this.productions_[z[1]][1],j.$=x[x.length-ne],j._$={first_line:b[b.length-(ne||1)].first_line,last_line:b[b.length-1].last_line,first_column:b[b.length-(ne||1)].first_column,last_column:b[b.length-1].last_column},O&&(j._$.range=[b[b.length-(ne||1)].range[0],b[b.length-1].range[1]]),Q=this.performAction.apply(j,[C,E,T,k.yy,z[1],x,b].concat(I)),typeof Q<"u")return Q;ne&&(y=y.slice(0,-1*ne*2),x=x.slice(0,-1*ne),b=b.slice(0,-1*ne)),y.push(this.productions_[z[1]][0]),x.push(j.$),b.push(j._$),le=w[y[y.length-2]][y[y.length-1]],y.push(le);break;case 3:return!0}}return!0},"parse")},f=function(){var p={EOF:1,parseError:o(function(g,y){if(this.yy.parser)this.yy.parser.parseError(g,y);else throw new Error(g)},"parseError"),setInput:o(function(m,g){return this.yy=g||this.yy||{},this._input=m,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var m=this._input[0];this.yytext+=m,this.yyleng++,this.offset++,this.match+=m,this.matched+=m;var g=m.match(/(?:\r\n?|\n).*/g);return g?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),m},"input"),unput:o(function(m){var g=m.length,y=m.split(/(?:\r\n?|\n)/g);this._input=m+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-g),this.offset-=g;var v=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),y.length-1&&(this.yylineno-=y.length-1);var x=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:y?(y.length===v.length?this.yylloc.first_column:0)+v[v.length-y.length].length-y[0].length:this.yylloc.first_column-g},this.options.ranges&&(this.yylloc.range=[x[0],x[0]+this.yyleng-g]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(m){this.unput(this.match.slice(m))},"less"),pastInput:o(function(){var m=this.matched.substr(0,this.matched.length-this.match.length);return(m.length>20?"...":"")+m.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var m=this.match;return m.length<20&&(m+=this._input.substr(0,20-m.length)),(m.substr(0,20)+(m.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var m=this.pastInput(),g=new Array(m.length+1).join("-");return m+this.upcomingInput()+` `+g+"^"},"showPosition"),test_match:o(function(m,g){var y,v,x;if(this.options.backtrack_lexer&&(x={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(x.yylloc.range=this.yylloc.range.slice(0))),v=m[0].match(/(?:\r\n?|\n).*/g),v&&(this.yylineno+=v.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:v?v[v.length-1].length-v[v.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+m[0].length},this.yytext+=m[0],this.match+=m[0],this.matches=m,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(m[0].length),this.matched+=m[0],y=this.performAction.call(this,this.yy,this,g,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),y)return y;if(this._backtrack){for(var b in x)this[b]=x[b];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var m,g,y,v;this._more||(this.yytext="",this.match="");for(var x=this._currentRules(),b=0;bg[0].length)){if(g=y,v=b,this.options.backtrack_lexer){if(m=this.test_match(y,x[b]),m!==!1)return m;if(this._backtrack){g=!1;continue}else return!1}else if(!this.options.flex)break}return g?(m=this.test_match(g,x[v]),m!==!1?m:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var g=this.next();return g||this.lex()},"lex"),begin:o(function(g){this.conditionStack.push(g)},"begin"),popState:o(function(){var g=this.conditionStack.length-1;return g>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(g){return g=this.conditionStack.length-1-Math.abs(g||0),g>=0?this.conditionStack[g]:"INITIAL"},"topState"),pushState:o(function(g){this.begin(g)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(g,y,v,x){var b=x;switch(v){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 21;case 16:return 20;case 17:return 6;case 18:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s[^:\n]+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18],inclusive:!0}}};return p}();h.lexer=f;function d(){this.yy={}}return o(d,"Parser"),d.prototype=h,h.Parser=d,new d}();vP.parser=vP;Z0e=vP});var bP={};vr(bP,{addEvent:()=>lpe,addSection:()=>ipe,addTask:()=>ope,addTaskOrg:()=>cpe,clear:()=>npe,default:()=>uqe,getCommonDb:()=>rpe,getSections:()=>ape,getTasks:()=>spe});var Xg,tpe,xP,WE,jg,rpe,npe,ipe,ape,spe,ope,lpe,cpe,epe,uqe,upe=M(()=>{"use strict";ki();Xg="",tpe=0,xP=[],WE=[],jg=[],rpe=o(()=>iy,"getCommonDb"),npe=o(function(){xP.length=0,WE.length=0,Xg="",jg.length=0,_r()},"clear"),ipe=o(function(t){Xg=t,xP.push(t)},"addSection"),ape=o(function(){return xP},"getSections"),spe=o(function(){let t=epe(),e=100,r=0;for(;!t&&rr.id===tpe-1).events.push(t)},"addEvent"),cpe=o(function(t){let e={section:Xg,type:Xg,description:t,task:t,classes:[]};WE.push(e)},"addTaskOrg"),epe=o(function(){let t=o(function(r){return jg[r].processed},"compileTask"),e=!0;for(let[r,n]of jg.entries())t(r),e=e&&n.processed;return e},"compileTasks"),uqe={clear:npe,getCommonDb:rpe,addSection:ipe,getSections:ape,getTasks:spe,addTask:ope,addTaskOrg:cpe,addEvent:lpe}});function ppe(t,e){t.each(function(){var r=ze(this),n=r.text().split(/(\s+|
    )/).reverse(),i,a=[],s=1.1,l=r.attr("y"),u=parseFloat(r.attr("dy")),h=r.text(null).append("tspan").attr("x",0).attr("y",l).attr("dy",u+"em");for(let f=0;fe||i==="
    ")&&(a.pop(),h.text(a.join(" ").trim()),i==="
    "?a=[""]:a=[i],h=r.append("tspan").attr("x",0).attr("y",l).attr("dy",s+"em").text(i))})}var hqe,YE,fqe,dqe,fpe,pqe,mqe,hpe,gqe,yqe,vqe,wP,dpe,xqe,bqe,wqe,Tqe,vf,mpe=M(()=>{"use strict";mr();hqe=12,YE=o(function(t,e){let r=t.append("rect");return r.attr("x",e.x),r.attr("y",e.y),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("width",e.width),r.attr("height",e.height),r.attr("rx",e.rx),r.attr("ry",e.ry),e.class!==void 0&&r.attr("class",e.class),r},"drawRect"),fqe=o(function(t,e){let n=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=El().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}o(a,"smile");function s(u){let h=El().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),e.score>3?a(i):e.score<3?s(i):l(i),n},"drawFace"),dqe=o(function(t,e){let r=t.append("circle");return r.attr("cx",e.cx),r.attr("cy",e.cy),r.attr("class","actor-"+e.pos),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("r",e.r),r.class!==void 0&&r.attr("class",r.class),e.title!==void 0&&r.append("title").text(e.title),r},"drawCircle"),fpe=o(function(t,e){let r=e.text.replace(//gi," "),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.attr("class","legend"),n.style("text-anchor",e.anchor),e.class!==void 0&&n.attr("class",e.class);let i=n.append("tspan");return i.attr("x",e.x+e.textMargin*2),i.text(r),n},"drawText"),pqe=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=t.append("polygon");n.attr("points",r(e.x,e.y,50,20,7)),n.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,fpe(t,e)},"drawLabel"),mqe=o(function(t,e,r){let n=t.append("g"),i=wP();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=r.width,i.height=r.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,YE(n,i),dpe(r)(e.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),hpe=-1,gqe=o(function(t,e,r){let n=e.x+r.width/2,i=t.append("g");hpe++;let a=300+5*30;i.append("line").attr("id","task"+hpe).attr("x1",n).attr("y1",e.y).attr("x2",n).attr("y2",a).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),fqe(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});let s=wP();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=r.width,s.height=r.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,YE(i,s),dpe(r)(e.task,i,s.x,s.y,s.width,s.height,{class:"task"},r,e.colour)},"drawTask"),yqe=o(function(t,e){YE(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},"drawBackgroundRect"),vqe=o(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),wP=o(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),dpe=function(){function t(i,a,s,l,u,h,f,d){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",d).style("text-anchor","middle").text(i);n(p,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d,p){let{taskFontSize:m,taskFontFamily:g}=d,y=i.split(//gi);for(let v=0;v{"use strict";mr();mpe();ht();Vt();ni();kqe=o(function(t,e,r,n){let i=de(),a=i.leftMargin??50;Y.debug("timeline",n.db);let s=i.securityLevel,l;s==="sandbox"&&(l=ze("#i"+e));let h=(s==="sandbox"?ze(l.nodes()[0].contentDocument.body):ze("body")).select("#"+e);h.append("g");let f=n.db.getTasks(),d=n.db.getCommonDb().getDiagramTitle();Y.debug("task",f),vf.initGraphics(h);let p=n.db.getSections();Y.debug("sections",p);let m=0,g=0,y=0,v=0,x=50+a,b=50;v=50;let w=0,_=!0;p.forEach(function(A){let I={number:w,descr:A,section:w,width:150,padding:20,maxHeight:m},D=vf.getVirtualNodeHeight(h,I,i);Y.debug("sectionHeight before draw",D),m=Math.max(m,D+20)});let T=0,E=0;Y.debug("tasks.length",f.length);for(let[A,I]of f.entries()){let D={number:A,descr:I,section:I.section,width:150,padding:20,maxHeight:g},k=vf.getVirtualNodeHeight(h,D,i);Y.debug("taskHeight before draw",k),g=Math.max(g,k+20),T=Math.max(T,I.events.length);let R=0;for(let S of I.events){let O={descr:S,section:I.section,number:I.section,width:150,padding:20,maxHeight:50};R+=vf.getVirtualNodeHeight(h,O,i)}E=Math.max(E,R)}Y.debug("maxSectionHeight before draw",m),Y.debug("maxTaskHeight before draw",g),p&&p.length>0?p.forEach(A=>{let I=f.filter(S=>S.section===A),D={number:w,descr:A,section:w,width:200*Math.max(I.length,1)-50,padding:20,maxHeight:m};Y.debug("sectionNode",D);let k=h.append("g"),R=vf.drawNode(k,D,w,i);Y.debug("sectionNode output",R),k.attr("transform",`translate(${x}, ${v})`),b+=m+50,I.length>0&&gpe(h,I,w,x,b,g,i,T,E,m,!1),x+=200*Math.max(I.length,1),b=v,w++}):(_=!1,gpe(h,f,w,x,b,g,i,T,E,m,!0));let L=h.node().getBBox();Y.debug("bounds",L),d&&h.append("text").text(d).attr("x",L.width/2-a).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),y=_?m+g+150:g+100,h.append("g").attr("class","lineWrapper").append("line").attr("x1",a).attr("y1",y).attr("x2",L.width+3*a).attr("y2",y).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),_o(void 0,h,i.timeline?.padding??50,i.timeline?.useMaxWidth??!1)},"draw"),gpe=o(function(t,e,r,n,i,a,s,l,u,h,f){for(let d of e){let p={descr:d.task,section:r,number:r,width:150,padding:20,maxHeight:a};Y.debug("taskNode",p);let m=t.append("g").attr("class","taskWrapper"),y=vf.drawNode(m,p,r,s).height;if(Y.debug("taskHeight after draw",y),m.attr("transform",`translate(${n}, ${i})`),a=Math.max(a,y),d.events){let v=t.append("g").attr("class","lineWrapper"),x=a;i+=100,x=x+Eqe(t,d.events,r,n,i,s),i-=100,v.append("line").attr("x1",n+190/2).attr("y1",i+a).attr("x2",n+190/2).attr("y2",i+a+(f?a:h)+u+120).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}n=n+200,f&&!s.timeline?.disableMulticolor&&r++}i=i-10},"drawTasks"),Eqe=o(function(t,e,r,n,i,a){let s=0,l=i;i=i+100;for(let u of e){let h={descr:u,section:r,number:r,width:150,padding:20,maxHeight:50};Y.debug("eventNode",h);let f=t.append("g").attr("class","eventWrapper"),p=vf.drawNode(f,h,r,a).height;s=s+p,f.attr("transform",`translate(${n}, ${i})`),i=i+10+p}return i=l,s},"drawEvents"),ype={setConf:o(()=>{},"setConf"),draw:kqe}});var Sqe,Cqe,xpe,bpe=M(()=>{"use strict";To();Sqe=o(t=>{let e="";for(let r=0;r0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(g){return g=this.conditionStack.length-1-Math.abs(g||0),g>=0?this.conditionStack[g]:"INITIAL"},"topState"),pushState:o(function(g){this.begin(g)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(g,y,v,x){var b=x;switch(v){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 21;case 16:return 20;case 17:return 6;case 18:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s[^:\n]+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18],inclusive:!0}}};return p}();h.lexer=f;function d(){this.yy={}}return o(d,"Parser"),d.prototype=h,h.Parser=d,new d}();tP.parser=tP;Ode=tP});var nP={};pr(nP,{addEvent:()=>Wde,addSection:()=>$de,addTask:()=>Hde,addTaskOrg:()=>qde,clear:()=>Gde,default:()=>IUe,getCommonDb:()=>zde,getSections:()=>Vde,getTasks:()=>Ude});var L1,Fde,rP,M6,R1,zde,Gde,$de,Vde,Ude,Hde,Wde,qde,Bde,IUe,Yde=M(()=>{"use strict";ki();L1="",Fde=0,rP=[],M6=[],R1=[],zde=o(()=>zy,"getCommonDb"),Gde=o(function(){rP.length=0,M6.length=0,L1="",R1.length=0,Dr()},"clear"),$de=o(function(t){L1=t,rP.push(t)},"addSection"),Vde=o(function(){return rP},"getSections"),Ude=o(function(){let t=Bde(),e=100,r=0;for(;!t&&rr.id===Fde-1).events.push(t)},"addEvent"),qde=o(function(t){let e={section:L1,type:L1,description:t,task:t,classes:[]};M6.push(e)},"addTaskOrg"),Bde=o(function(){let t=o(function(r){return R1[r].processed},"compileTask"),e=!0;for(let[r,n]of R1.entries())t(r),e=e&&n.processed;return e},"compileTasks"),IUe={clear:Gde,getCommonDb:zde,addSection:$de,getSections:Vde,getTasks:Ude,addTask:Hde,addTaskOrg:qde,addEvent:Wde}});function Qde(t,e){t.each(function(){var r=$e(this),n=r.text().split(/(\s+|
    )/).reverse(),i,a=[],s=1.1,l=r.attr("y"),u=parseFloat(r.attr("dy")),h=r.text(null).append("tspan").attr("x",0).attr("y",l).attr("dy",u+"em");for(let f=0;fe||i==="
    ")&&(a.pop(),h.text(a.join(" ").trim()),i==="
    "?a=[""]:a=[i],h=r.append("tspan").attr("x",0).attr("y",l).attr("dy",s+"em").text(i))})}var OUe,I6,PUe,BUe,jde,FUe,zUe,Xde,GUe,$Ue,VUe,iP,Kde,UUe,HUe,WUe,qUe,yf,Zde=M(()=>{"use strict";hr();OUe=12,I6=o(function(t,e){let r=t.append("rect");return r.attr("x",e.x),r.attr("y",e.y),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("width",e.width),r.attr("height",e.height),r.attr("rx",e.rx),r.attr("ry",e.ry),e.class!==void 0&&r.attr("class",e.class),r},"drawRect"),PUe=o(function(t,e){let n=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=yl().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}o(a,"smile");function s(u){let h=yl().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),e.score>3?a(i):e.score<3?s(i):l(i),n},"drawFace"),BUe=o(function(t,e){let r=t.append("circle");return r.attr("cx",e.cx),r.attr("cy",e.cy),r.attr("class","actor-"+e.pos),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("r",e.r),r.class!==void 0&&r.attr("class",r.class),e.title!==void 0&&r.append("title").text(e.title),r},"drawCircle"),jde=o(function(t,e){let r=e.text.replace(//gi," "),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.attr("class","legend"),n.style("text-anchor",e.anchor),e.class!==void 0&&n.attr("class",e.class);let i=n.append("tspan");return i.attr("x",e.x+e.textMargin*2),i.text(r),n},"drawText"),FUe=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=t.append("polygon");n.attr("points",r(e.x,e.y,50,20,7)),n.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,jde(t,e)},"drawLabel"),zUe=o(function(t,e,r){let n=t.append("g"),i=iP();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=r.width,i.height=r.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,I6(n,i),Kde(r)(e.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),Xde=-1,GUe=o(function(t,e,r){let n=e.x+r.width/2,i=t.append("g");Xde++;let a=300+5*30;i.append("line").attr("id","task"+Xde).attr("x1",n).attr("y1",e.y).attr("x2",n).attr("y2",a).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),PUe(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});let s=iP();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=r.width,s.height=r.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,I6(i,s),Kde(r)(e.task,i,s.x,s.y,s.width,s.height,{class:"task"},r,e.colour)},"drawTask"),$Ue=o(function(t,e){I6(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},"drawBackgroundRect"),VUe=o(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),iP=o(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),Kde=function(){function t(i,a,s,l,u,h,f,d){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",d).style("text-anchor","middle").text(i);n(p,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d,p){let{taskFontSize:m,taskFontFamily:g}=d,y=i.split(//gi);for(let v=0;v{"use strict";hr();Zde();vt();Gt();Ti();YUe=o(function(t,e,r,n){let i=me(),a=i.leftMargin??50;Y.debug("timeline",n.db);let s=i.securityLevel,l;s==="sandbox"&&(l=$e("#i"+e));let h=(s==="sandbox"?$e(l.nodes()[0].contentDocument.body):$e("body")).select("#"+e);h.append("g");let f=n.db.getTasks(),d=n.db.getCommonDb().getDiagramTitle();Y.debug("task",f),yf.initGraphics(h);let p=n.db.getSections();Y.debug("sections",p);let m=0,g=0,y=0,v=0,x=50+a,b=50;v=50;let w=0,C=!0;p.forEach(function(_){let I={number:w,descr:_,section:w,width:150,padding:20,maxHeight:m},D=yf.getVirtualNodeHeight(h,I,i);Y.debug("sectionHeight before draw",D),m=Math.max(m,D+20)});let T=0,E=0;Y.debug("tasks.length",f.length);for(let[_,I]of f.entries()){let D={number:_,descr:I,section:I.section,width:150,padding:20,maxHeight:g},k=yf.getVirtualNodeHeight(h,D,i);Y.debug("taskHeight before draw",k),g=Math.max(g,k+20),T=Math.max(T,I.events.length);let L=0;for(let R of I.events){let O={descr:R,section:I.section,number:I.section,width:150,padding:20,maxHeight:50};L+=yf.getVirtualNodeHeight(h,O,i)}E=Math.max(E,L)}Y.debug("maxSectionHeight before draw",m),Y.debug("maxTaskHeight before draw",g),p&&p.length>0?p.forEach(_=>{let I=f.filter(R=>R.section===_),D={number:w,descr:_,section:w,width:200*Math.max(I.length,1)-50,padding:20,maxHeight:m};Y.debug("sectionNode",D);let k=h.append("g"),L=yf.drawNode(k,D,w,i);Y.debug("sectionNode output",L),k.attr("transform",`translate(${x}, ${v})`),b+=m+50,I.length>0&&Jde(h,I,w,x,b,g,i,T,E,m,!1),x+=200*Math.max(I.length,1),b=v,w++}):(C=!1,Jde(h,f,w,x,b,g,i,T,E,m,!0));let A=h.node().getBBox();Y.debug("bounds",A),d&&h.append("text").text(d).attr("x",A.width/2-a).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),y=C?m+g+150:g+100,h.append("g").attr("class","lineWrapper").append("line").attr("x1",a).attr("y1",y).attr("x2",A.width+3*a).attr("y2",y).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),ko(void 0,h,i.timeline?.padding??50,i.timeline?.useMaxWidth??!1)},"draw"),Jde=o(function(t,e,r,n,i,a,s,l,u,h,f){for(let d of e){let p={descr:d.task,section:r,number:r,width:150,padding:20,maxHeight:a};Y.debug("taskNode",p);let m=t.append("g").attr("class","taskWrapper"),y=yf.drawNode(m,p,r,s).height;if(Y.debug("taskHeight after draw",y),m.attr("transform",`translate(${n}, ${i})`),a=Math.max(a,y),d.events){let v=t.append("g").attr("class","lineWrapper"),x=a;i+=100,x=x+XUe(t,d.events,r,n,i,s),i-=100,v.append("line").attr("x1",n+190/2).attr("y1",i+a).attr("x2",n+190/2).attr("y2",i+a+(f?a:h)+u+120).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}n=n+200,f&&!s.timeline?.disableMulticolor&&r++}i=i-10},"drawTasks"),XUe=o(function(t,e,r,n,i,a){let s=0,l=i;i=i+100;for(let u of e){let h={descr:u,section:r,number:r,width:150,padding:20,maxHeight:50};Y.debug("eventNode",h);let f=t.append("g").attr("class","eventWrapper"),p=yf.drawNode(f,h,r,a).height;s=s+p,f.attr("transform",`translate(${n}, ${i})`),i=i+10+p}return i=l,s},"drawEvents"),epe={setConf:o(()=>{},"setConf"),draw:YUe}});var jUe,KUe,rpe,npe=M(()=>{"use strict";Vs();jUe=o(t=>{let e="";for(let r=0;r` + `}return e},"genSections"),KUe=o(t=>` .edge { stroke-width: 3; } - ${Sqe(t)} + ${jUe(t)} .section-root rect, .section-root path, .section-root circle { fill: ${t.git0}; } @@ -1891,17 +1938,219 @@ Expecting `+J.join(", ")+", got '"+(this.terminals_[F]||F)+"'":H="Parse error on .eventWrapper { filter: brightness(120%); } -`,"getStyles"),xpe=Cqe});var wpe={};vr(wpe,{diagram:()=>Aqe});var Aqe,Tpe=M(()=>{"use strict";J0e();upe();vpe();bpe();Aqe={db:bP,renderer:ype,parser:Z0e,styles:xpe}});var TP,Spe,Cpe=M(()=>{"use strict";TP=function(){var t=o(function(_,T,E,L){for(E=E||{},L=_.length;L--;E[_[L]]=T);return E},"o"),e=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],f=[1,24],d=[1,25],p=[6,7,11],m=[1,6,13,15,16,19,22],g=[1,33],y=[1,34],v=[1,6,7,11,13,15,16,19,22],x={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:o(function(T,E,L,C,A,I,D){var k=I.length-1;switch(A){case 6:case 7:return C;case 8:C.getLogger().trace("Stop NL ");break;case 9:C.getLogger().trace("Stop EOF ");break;case 11:C.getLogger().trace("Stop NL2 ");break;case 12:C.getLogger().trace("Stop EOF2 ");break;case 15:C.getLogger().info("Node: ",I[k].id),C.addNode(I[k-1].length,I[k].id,I[k].descr,I[k].type);break;case 16:C.getLogger().trace("Icon: ",I[k]),C.decorateNode({icon:I[k]});break;case 17:case 21:C.decorateNode({class:I[k]});break;case 18:C.getLogger().trace("SPACELIST");break;case 19:C.getLogger().trace("Node: ",I[k].id),C.addNode(0,I[k].id,I[k].descr,I[k].type);break;case 20:C.decorateNode({icon:I[k]});break;case 25:C.getLogger().trace("node found ..",I[k-2]),this.$={id:I[k-1],descr:I[k-1],type:C.getType(I[k-2],I[k])};break;case 26:this.$={id:I[k],descr:I[k],type:C.nodeType.DEFAULT};break;case 27:C.getLogger().trace("node found ..",I[k-3]),this.$={id:I[k-3],descr:I[k-1],type:C.getType(I[k-2],I[k])};break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:r,7:[1,10],9:9,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},t(u,[2,3]),{1:[2,2]},t(u,[2,4]),t(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:r,9:22,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:h,7:f,10:23,11:d},t(p,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:s,22:l}),t(p,[2,18]),t(p,[2,19]),t(p,[2,20]),t(p,[2,21]),t(p,[2,23]),t(p,[2,24]),t(p,[2,26],{19:[1,30]}),{20:[1,31]},{6:h,7:f,10:32,11:d},{1:[2,7],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},t(m,[2,14],{7:g,11:y}),t(v,[2,8]),t(v,[2,9]),t(v,[2,10]),t(p,[2,15]),t(p,[2,16]),t(p,[2,17]),{20:[1,35]},{21:[1,36]},t(m,[2,13],{7:g,11:y}),t(v,[2,11]),t(v,[2,12]),{21:[1,37]},t(p,[2,25]),t(p,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(T,E){if(E.recoverable)this.trace(T);else{var L=new Error(T);throw L.hash=E,L}},"parseError"),parse:o(function(T){var E=this,L=[0],C=[],A=[null],I=[],D=this.table,k="",R=0,S=0,O=0,N=2,P=1,F=I.slice.call(arguments,1),B=Object.create(this.lexer),$={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&($.yy[z]=this.yy[z]);B.setInput(T,$.yy),$.yy.lexer=B,$.yy.parser=this,typeof B.yylloc>"u"&&(B.yylloc={});var W=B.yylloc;I.push(W);var j=B.options&&B.options.ranges;typeof $.yy.parseError=="function"?this.parseError=$.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function K(ke){L.length=L.length-2*ke,A.length=A.length-ke,I.length=I.length-ke}o(K,"popStack");function ie(){var ke;return ke=C.pop()||B.lex()||P,typeof ke!="number"&&(ke instanceof Array&&(C=ke,ke=C.pop()),ke=E.symbols_[ke]||ke),ke}o(ie,"lex");for(var Q,ee,J,H,q,Z,ae={},ue,ce,te,De;;){if(J=L[L.length-1],this.defaultActions[J]?H=this.defaultActions[J]:((Q===null||typeof Q>"u")&&(Q=ie()),H=D[J]&&D[J][Q]),typeof H>"u"||!H.length||!H[0]){var oe="";De=[];for(ue in D[J])this.terminals_[ue]&&ue>N&&De.push("'"+this.terminals_[ue]+"'");B.showPosition?oe="Parse error on line "+(R+1)+`: -`+B.showPosition()+` -Expecting `+De.join(", ")+", got '"+(this.terminals_[Q]||Q)+"'":oe="Parse error on line "+(R+1)+": Unexpected "+(Q==P?"end of input":"'"+(this.terminals_[Q]||Q)+"'"),this.parseError(oe,{text:B.match,token:this.terminals_[Q]||Q,line:B.yylineno,loc:W,expected:De})}if(H[0]instanceof Array&&H.length>1)throw new Error("Parse Error: multiple actions possible at state: "+J+", token: "+Q);switch(H[0]){case 1:L.push(Q),A.push(B.yytext),I.push(B.yylloc),L.push(H[1]),Q=null,ee?(Q=ee,ee=null):(S=B.yyleng,k=B.yytext,R=B.yylineno,W=B.yylloc,O>0&&O--);break;case 2:if(ce=this.productions_[H[1]][1],ae.$=A[A.length-ce],ae._$={first_line:I[I.length-(ce||1)].first_line,last_line:I[I.length-1].last_line,first_column:I[I.length-(ce||1)].first_column,last_column:I[I.length-1].last_column},j&&(ae._$.range=[I[I.length-(ce||1)].range[0],I[I.length-1].range[1]]),Z=this.performAction.apply(ae,[k,S,R,$.yy,H[1],A,I].concat(F)),typeof Z<"u")return Z;ce&&(L=L.slice(0,-1*ce*2),A=A.slice(0,-1*ce),I=I.slice(0,-1*ce)),L.push(this.productions_[H[1]][0]),A.push(ae.$),I.push(ae._$),te=D[L[L.length-2]][L[L.length-1]],L.push(te);break;case 3:return!0}}return!0},"parse")},b=function(){var _={EOF:1,parseError:o(function(E,L){if(this.yy.parser)this.yy.parser.parseError(E,L);else throw new Error(E)},"parseError"),setInput:o(function(T,E){return this.yy=E||this.yy||{},this._input=T,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var T=this._input[0];this.yytext+=T,this.yyleng++,this.offset++,this.match+=T,this.matched+=T;var E=T.match(/(?:\r\n?|\n).*/g);return E?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),T},"input"),unput:o(function(T){var E=T.length,L=T.split(/(?:\r\n?|\n)/g);this._input=T+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-E),this.offset-=E;var C=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),L.length-1&&(this.yylineno-=L.length-1);var A=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:L?(L.length===C.length?this.yylloc.first_column:0)+C[C.length-L.length].length-L[0].length:this.yylloc.first_column-E},this.options.ranges&&(this.yylloc.range=[A[0],A[0]+this.yyleng-E]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`,"getStyles"),rpe=KUe});var ipe={};pr(ipe,{diagram:()=>QUe});var QUe,ape=M(()=>{"use strict";Pde();Yde();tpe();npe();QUe={db:nP,renderer:epe,parser:Ode,styles:rpe}});var aP,lpe,cpe=M(()=>{"use strict";aP=function(){var t=o(function(C,T,E,A){for(E=E||{},A=C.length;A--;E[C[A]]=T);return E},"o"),e=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],f=[1,24],d=[1,25],p=[6,7,11],m=[1,6,13,15,16,19,22],g=[1,33],y=[1,34],v=[1,6,7,11,13,15,16,19,22],x={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:o(function(T,E,A,S,_,I,D){var k=I.length-1;switch(_){case 6:case 7:return S;case 8:S.getLogger().trace("Stop NL ");break;case 9:S.getLogger().trace("Stop EOF ");break;case 11:S.getLogger().trace("Stop NL2 ");break;case 12:S.getLogger().trace("Stop EOF2 ");break;case 15:S.getLogger().info("Node: ",I[k].id),S.addNode(I[k-1].length,I[k].id,I[k].descr,I[k].type);break;case 16:S.getLogger().trace("Icon: ",I[k]),S.decorateNode({icon:I[k]});break;case 17:case 21:S.decorateNode({class:I[k]});break;case 18:S.getLogger().trace("SPACELIST");break;case 19:S.getLogger().trace("Node: ",I[k].id),S.addNode(0,I[k].id,I[k].descr,I[k].type);break;case 20:S.decorateNode({icon:I[k]});break;case 25:S.getLogger().trace("node found ..",I[k-2]),this.$={id:I[k-1],descr:I[k-1],type:S.getType(I[k-2],I[k])};break;case 26:this.$={id:I[k],descr:I[k],type:S.nodeType.DEFAULT};break;case 27:S.getLogger().trace("node found ..",I[k-3]),this.$={id:I[k-3],descr:I[k-1],type:S.getType(I[k-2],I[k])};break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:r,7:[1,10],9:9,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},t(u,[2,3]),{1:[2,2]},t(u,[2,4]),t(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:r,9:22,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:h,7:f,10:23,11:d},t(p,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:s,22:l}),t(p,[2,18]),t(p,[2,19]),t(p,[2,20]),t(p,[2,21]),t(p,[2,23]),t(p,[2,24]),t(p,[2,26],{19:[1,30]}),{20:[1,31]},{6:h,7:f,10:32,11:d},{1:[2,7],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},t(m,[2,14],{7:g,11:y}),t(v,[2,8]),t(v,[2,9]),t(v,[2,10]),t(p,[2,15]),t(p,[2,16]),t(p,[2,17]),{20:[1,35]},{21:[1,36]},t(m,[2,13],{7:g,11:y}),t(v,[2,11]),t(v,[2,12]),{21:[1,37]},t(p,[2,25]),t(p,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(T,E){if(E.recoverable)this.trace(T);else{var A=new Error(T);throw A.hash=E,A}},"parseError"),parse:o(function(T){var E=this,A=[0],S=[],_=[null],I=[],D=this.table,k="",L=0,R=0,O=0,N=2,B=1,F=I.slice.call(arguments,1),P=Object.create(this.lexer),G={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&(G.yy[z]=this.yy[z]);P.setInput(T,G.yy),G.yy.lexer=P,G.yy.parser=this,typeof P.yylloc>"u"&&(P.yylloc={});var H=P.yylloc;I.push(H);var Q=P.options&&P.options.ranges;typeof G.yy.parseError=="function"?this.parseError=G.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function j(ae){A.length=A.length-2*ae,_.length=_.length-ae,I.length=I.length-ae}o(j,"popStack");function ie(){var ae;return ae=S.pop()||P.lex()||B,typeof ae!="number"&&(ae instanceof Array&&(S=ae,ae=S.pop()),ae=E.symbols_[ae]||ae),ae}o(ie,"lex");for(var ne,le,he,K,X,te,J={},se,ue,Z,Se;;){if(he=A[A.length-1],this.defaultActions[he]?K=this.defaultActions[he]:((ne===null||typeof ne>"u")&&(ne=ie()),K=D[he]&&D[he][ne]),typeof K>"u"||!K.length||!K[0]){var ce="";Se=[];for(se in D[he])this.terminals_[se]&&se>N&&Se.push("'"+this.terminals_[se]+"'");P.showPosition?ce="Parse error on line "+(L+1)+`: +`+P.showPosition()+` +Expecting `+Se.join(", ")+", got '"+(this.terminals_[ne]||ne)+"'":ce="Parse error on line "+(L+1)+": Unexpected "+(ne==B?"end of input":"'"+(this.terminals_[ne]||ne)+"'"),this.parseError(ce,{text:P.match,token:this.terminals_[ne]||ne,line:P.yylineno,loc:H,expected:Se})}if(K[0]instanceof Array&&K.length>1)throw new Error("Parse Error: multiple actions possible at state: "+he+", token: "+ne);switch(K[0]){case 1:A.push(ne),_.push(P.yytext),I.push(P.yylloc),A.push(K[1]),ne=null,le?(ne=le,le=null):(R=P.yyleng,k=P.yytext,L=P.yylineno,H=P.yylloc,O>0&&O--);break;case 2:if(ue=this.productions_[K[1]][1],J.$=_[_.length-ue],J._$={first_line:I[I.length-(ue||1)].first_line,last_line:I[I.length-1].last_line,first_column:I[I.length-(ue||1)].first_column,last_column:I[I.length-1].last_column},Q&&(J._$.range=[I[I.length-(ue||1)].range[0],I[I.length-1].range[1]]),te=this.performAction.apply(J,[k,R,L,G.yy,K[1],_,I].concat(F)),typeof te<"u")return te;ue&&(A=A.slice(0,-1*ue*2),_=_.slice(0,-1*ue),I=I.slice(0,-1*ue)),A.push(this.productions_[K[1]][0]),_.push(J.$),I.push(J._$),Z=D[A[A.length-2]][A[A.length-1]],A.push(Z);break;case 3:return!0}}return!0},"parse")},b=function(){var C={EOF:1,parseError:o(function(E,A){if(this.yy.parser)this.yy.parser.parseError(E,A);else throw new Error(E)},"parseError"),setInput:o(function(T,E){return this.yy=E||this.yy||{},this._input=T,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var T=this._input[0];this.yytext+=T,this.yyleng++,this.offset++,this.match+=T,this.matched+=T;var E=T.match(/(?:\r\n?|\n).*/g);return E?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),T},"input"),unput:o(function(T){var E=T.length,A=T.split(/(?:\r\n?|\n)/g);this._input=T+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-E),this.offset-=E;var S=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),A.length-1&&(this.yylineno-=A.length-1);var _=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:A?(A.length===S.length?this.yylloc.first_column:0)+S[S.length-A.length].length-A[0].length:this.yylloc.first_column-E},this.options.ranges&&(this.yylloc.range=[_[0],_[0]+this.yyleng-E]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(T){this.unput(this.match.slice(T))},"less"),pastInput:o(function(){var T=this.matched.substr(0,this.matched.length-this.match.length);return(T.length>20?"...":"")+T.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var T=this.match;return T.length<20&&(T+=this._input.substr(0,20-T.length)),(T.substr(0,20)+(T.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var T=this.pastInput(),E=new Array(T.length+1).join("-");return T+this.upcomingInput()+` -`+E+"^"},"showPosition"),test_match:o(function(T,E){var L,C,A;if(this.options.backtrack_lexer&&(A={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(A.yylloc.range=this.yylloc.range.slice(0))),C=T[0].match(/(?:\r\n?|\n).*/g),C&&(this.yylineno+=C.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:C?C[C.length-1].length-C[C.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+T[0].length},this.yytext+=T[0],this.match+=T[0],this.matches=T,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(T[0].length),this.matched+=T[0],L=this.performAction.call(this,this.yy,this,E,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),L)return L;if(this._backtrack){for(var I in A)this[I]=A[I];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var T,E,L,C;this._more||(this.yytext="",this.match="");for(var A=this._currentRules(),I=0;IE[0].length)){if(E=L,C=I,this.options.backtrack_lexer){if(T=this.test_match(L,A[I]),T!==!1)return T;if(this._backtrack){E=!1;continue}else return!1}else if(!this.options.flex)break}return E?(T=this.test_match(E,A[C]),T!==!1?T:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var E=this.next();return E||this.lex()},"lex"),begin:o(function(E){this.conditionStack.push(E)},"begin"),popState:o(function(){var E=this.conditionStack.length-1;return E>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(E){return E=this.conditionStack.length-1-Math.abs(E||0),E>=0?this.conditionStack[E]:"INITIAL"},"topState"),pushState:o(function(E){this.begin(E)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(E,L,C,A){var I=A;switch(C){case 0:return E.getLogger().trace("Found comment",L.yytext),6;break;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;break;case 4:this.popState();break;case 5:E.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return E.getLogger().trace("SPACELINE"),6;break;case 7:return 7;case 8:return 15;case 9:E.getLogger().trace("end icon"),this.popState();break;case 10:return E.getLogger().trace("Exploding node"),this.begin("NODE"),19;break;case 11:return E.getLogger().trace("Cloud"),this.begin("NODE"),19;break;case 12:return E.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;break;case 13:return E.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;break;case 14:return this.begin("NODE"),19;break;case 15:return this.begin("NODE"),19;break;case 16:return this.begin("NODE"),19;break;case 17:return this.begin("NODE"),19;break;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:E.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return E.getLogger().trace("description:",L.yytext),"NODE_DESCR";break;case 26:this.popState();break;case 27:return this.popState(),E.getLogger().trace("node end ))"),"NODE_DEND";break;case 28:return this.popState(),E.getLogger().trace("node end )"),"NODE_DEND";break;case 29:return this.popState(),E.getLogger().trace("node end ...",L.yytext),"NODE_DEND";break;case 30:return this.popState(),E.getLogger().trace("node end (("),"NODE_DEND";break;case 31:return this.popState(),E.getLogger().trace("node end (-"),"NODE_DEND";break;case 32:return this.popState(),E.getLogger().trace("node end (-"),"NODE_DEND";break;case 33:return this.popState(),E.getLogger().trace("node end (("),"NODE_DEND";break;case 34:return this.popState(),E.getLogger().trace("node end (("),"NODE_DEND";break;case 35:return E.getLogger().trace("Long description:",L.yytext),20;break;case 36:return E.getLogger().trace("Long description:",L.yytext),20;break}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return _}();x.lexer=b;function w(){this.yy={}}return o(w,"Parser"),w.prototype=x,x.Parser=w,new w}();TP.parser=TP;Spe=TP});var Vl,Ape,kP,Nqe,Rqe,Mqe,Iqe,Ui,Oqe,Pqe,Bqe,Fqe,zqe,Gqe,$qe,_pe,Lpe=M(()=>{"use strict";Vt();fr();ht();hs();Vl=[],Ape=0,kP={},Nqe=o(()=>{Vl=[],Ape=0,kP={}},"clear"),Rqe=o(function(t){for(let e=Vl.length-1;e>=0;e--)if(Vl[e].levelVl.length>0?Vl[0]:null,"getMindmap"),Iqe=o((t,e,r,n)=>{Y.info("addNode",t,e,r,n);let i=de(),a=i.mindmap?.padding??ur.mindmap.padding;switch(n){case Ui.ROUNDED_RECT:case Ui.RECT:case Ui.HEXAGON:a*=2}let s={id:Ape++,nodeId:Tr(e,i),level:t,descr:Tr(r,i),type:n,children:[],width:i.mindmap?.maxNodeWidth??ur.mindmap.maxNodeWidth,padding:a},l=Rqe(t);if(l)l.children.push(s),Vl.push(s);else if(Vl.length===0)Vl.push(s);else throw new Error('There can be only one root. No parent could be found for ("'+s.descr+'")')},"addNode"),Ui={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},Oqe=o((t,e)=>{switch(Y.debug("In get type",t,e),t){case"[":return Ui.RECT;case"(":return e===")"?Ui.ROUNDED_RECT:Ui.CLOUD;case"((":return Ui.CIRCLE;case")":return Ui.CLOUD;case"))":return Ui.BANG;case"{{":return Ui.HEXAGON;default:return Ui.DEFAULT}},"getType"),Pqe=o((t,e)=>{kP[t]=e},"setElementForId"),Bqe=o(t=>{if(!t)return;let e=de(),r=Vl[Vl.length-1];t.icon&&(r.icon=Tr(t.icon,e)),t.class&&(r.class=Tr(t.class,e))},"decorateNode"),Fqe=o(t=>{switch(t){case Ui.DEFAULT:return"no-border";case Ui.RECT:return"rect";case Ui.ROUNDED_RECT:return"rounded-rect";case Ui.CIRCLE:return"circle";case Ui.CLOUD:return"cloud";case Ui.BANG:return"bang";case Ui.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),zqe=o(()=>Y,"getLogger"),Gqe=o(t=>kP[t],"getElementById"),$qe={clear:Nqe,addNode:Iqe,getMindmap:Mqe,nodeType:Ui,getType:Oqe,setElementForId:Pqe,decorateNode:Bqe,type2Str:Fqe,getLogger:zqe,getElementById:Gqe},_pe=$qe});function Yi(t){"@babel/helpers - typeof";return Yi=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Yi(t)}function JP(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Dpe(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},"n"),e:o(function(u){throw u},"e"),f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a=!0,s=!1,l;return{s:o(function(){r=r.call(t)},"s"),n:o(function(){var u=r.next();return a=u.done,u},"n"),e:o(function(u){s=!0,l=u},"e"),f:o(function(){try{!a&&r.return!=null&&r.return()}finally{if(s)throw l}},"f")}}function pXe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}function mXe(t,e){return e={exports:{}},t(e,e.exports),e.exports}function TXe(t){for(var e=t.length;e--&&wXe.test(t.charAt(e)););return e}function SXe(t){return t&&t.slice(0,kXe(t)+1).replace(EXe,"")}function DXe(t){var e=_Xe.call(t,Lx),r=t[Lx];try{t[Lx]=void 0;var n=!0}catch{}var i=LXe.call(t);return n&&(e?t[Lx]=r:delete t[Lx]),i}function IXe(t){return MXe.call(t)}function FXe(t){return t==null?t===void 0?BXe:PXe:Ipe&&Ipe in Object(t)?NXe(t):OXe(t)}function zXe(t){return t!=null&&typeof t=="object"}function VXe(t){return typeof t=="symbol"||GXe(t)&&tge(t)==$Xe}function qXe(t){if(typeof t=="number")return t;if(eb(t))return Ope;if(F0(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=F0(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=CXe(t);var r=HXe.test(t);return r||WXe.test(t)?YXe(t.slice(2),r?2:8):UXe.test(t)?Ope:+t}function QXe(t,e,r){var n,i,a,s,l,u,h=0,f=!1,d=!1,p=!0;if(typeof t!="function")throw new TypeError(XXe);e=Ppe(e)||0,F0(r)&&(f=!!r.leading,d="maxWait"in r,a=d?jXe(Ppe(r.maxWait)||0,e):a,p="trailing"in r?!!r.trailing:p);function m(E){var L=n,C=i;return n=i=void 0,h=E,s=t.apply(C,L),s}o(m,"invokeFunc");function g(E){return h=E,l=setTimeout(x,e),f?m(E):s}o(g,"leadingEdge");function y(E){var L=E-u,C=E-h,A=e-L;return d?KXe(A,a-C):A}o(y,"remainingWait");function v(E){var L=E-u,C=E-h;return u===void 0||L>=e||L<0||d&&C>=a}o(v,"shouldInvoke");function x(){var E=EP();if(v(E))return b(E);l=setTimeout(x,y(E))}o(x,"timerExpired");function b(E){return l=void 0,p&&n?m(E):(n=i=void 0,s)}o(b,"trailingEdge");function w(){l!==void 0&&clearTimeout(l),h=0,n=u=i=l=void 0}o(w,"cancel");function _(){return l===void 0?s:b(EP())}o(_,"flush");function T(){var E=EP(),L=v(E);if(n=arguments,i=this,u=E,L){if(l===void 0)return g(u);if(d)return clearTimeout(l),l=setTimeout(x,e),m(u)}return l===void 0&&(l=setTimeout(x,e)),s}return o(T,"debounced"),T.cancel=w,T.flush=_,T}function D6(t,e,r,n,i,a){var s;return ti(t)?s=t:s=u1[t]||u1.euclidean,e===0&&ti(t)?s(i,a):s(e,r,n,i,a)}function UKe(t,e){if(N6(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||eb(t)?!0:VKe.test(t)||!$Ke.test(t)||e!=null&&t in Object(e)}function jKe(t){if(!F0(t))return!1;var e=tge(t);return e==YKe||e==qKe||e==WKe||e==XKe}function ZKe(t){return!!rme&&rme in t}function rQe(t){if(t!=null){try{return tQe.call(t)}catch{}try{return t+""}catch{}}return""}function hQe(t){if(!F0(t)||JKe(t))return!1;var e=KKe(t)?uQe:aQe;return e.test(nQe(t))}function dQe(t,e){return t?.[e]}function mQe(t,e){var r=pQe(t,e);return fQe(r)?r:void 0}function yQe(){this.__data__=qx?qx(null):{},this.size=0}function xQe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}function EQe(t){var e=this.__data__;if(qx){var r=e[t];return r===wQe?void 0:r}return kQe.call(e,t)?e[t]:void 0}function _Qe(t){var e=this.__data__;return qx?e[t]!==void 0:AQe.call(e,t)}function NQe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=qx&&e===void 0?DQe:e,this}function p1(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1}function WQe(t,e){var r=this.__data__,n=R6(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}function m1(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1&&t%1==0&&t0;){var f=i.shift();e(f),a.add(f.id()),l&&n(i,a,f)}return t}function Ige(t,e,r){if(r.isParent())for(var n=r._private.children,i=0;i0&&arguments[0]!==void 0?arguments[0]:LJe,e=arguments.length>1?arguments[1]:void 0,r=0;r0?k=S:D=S;while(Math.abs(R)>s&&++O=a?b(I,O):N===0?O:_(I,D,D+h)}o(T,"getTForX");var E=!1;function L(){E=!0,(t!==e||r!==n)&&w()}o(L,"precompute");var C=o(function(D){return E||L(),t===e&&r===n?D:D===0?0:D===1?1:v(T(D),e,n)},"f");C.getControlPoints=function(){return[{x:t,y:e},{x:r,y:n}]};var A="generateBezier("+[t,e,r,n]+")";return C.toString=function(){return A},C}function wme(t,e,r,n,i){if(n===1||e===r)return r;var a=i(e,r,n);return t==null||((t.roundValue||t.color)&&(a=Math.round(a)),t.min!==void 0&&(a=Math.max(a,t.min)),t.max!==void 0&&(a=Math.min(a,t.max))),a}function Tme(t,e){return t.pfValue!=null||t.value!=null?t.pfValue!=null&&(e==null||e.type.units!=="%")?t.pfValue:t.value:t}function Zg(t,e,r,n,i){var a=i!=null?i.type:null;r<0?r=0:r>1&&(r=1);var s=Tme(t,i),l=Tme(e,i);if(xt(s)&&xt(l))return wme(a,s,l,r,n);if(wn(s)&&wn(l)){for(var u=[],h=0;h0?(m==="spring"&&g.push(s.duration),s.easingImpl=c6[m].apply(null,g)):s.easingImpl=c6[m]}var y=s.easingImpl,v;if(s.duration===0?v=1:v=(r-u)/s.duration,s.applying&&(v=s.progress),v<0?v=0:v>1&&(v=1),s.delay==null){var x=s.startPosition,b=s.position;if(b&&i&&!t.locked()){var w={};Mx(x.x,b.x)&&(w.x=Zg(x.x,b.x,v,y)),Mx(x.y,b.y)&&(w.y=Zg(x.y,b.y,v,y)),t.position(w)}var _=s.startPan,T=s.pan,E=a.pan,L=T!=null&&n;L&&(Mx(_.x,T.x)&&(E.x=Zg(_.x,T.x,v,y)),Mx(_.y,T.y)&&(E.y=Zg(_.y,T.y,v,y)),t.emit("pan"));var C=s.startZoom,A=s.zoom,I=A!=null&&n;I&&(Mx(C,A)&&(a.zoom=Wx(a.minZoom,Zg(C,A,v,y),a.maxZoom)),t.emit("zoom")),(L||I)&&t.emit("viewport");var D=s.style;if(D&&D.length>0&&i){for(var k=0;k=0;L--){var C=E[L];C()}E.splice(0,E.length)},"callbacks"),b=m.length-1;b>=0;b--){var w=m[b],_=w._private;if(_.stopped){m.splice(b,1),_.hooked=!1,_.playing=!1,_.started=!1,x(_.frames);continue}!_.playing&&!_.applying||(_.playing&&_.applying&&(_.applying=!1),_.started||UJe(f,w,t),VJe(f,w,t,d),_.applying&&(_.applying=!1),x(_.frames),_.step!=null&&_.step(t),w.completed()&&(m.splice(b,1),_.hooked=!1,_.playing=!1,_.started=!1,x(_.completes)),y=!0)}return!d&&m.length===0&&g.length===0&&n.push(f),y}o(i,"stepOne");for(var a=!1,s=0;s0?e.notify("draw",r):e.notify("draw")),r.unmerge(n),e.emit("step")}function Qge(t){this.options=ir({},QJe,ZJe,t)}function Zge(t){this.options=ir({},JJe,t)}function Jge(t){this.options=ir({},eet,t)}function G6(t){this.options=ir({},tet,t),this.options.layout=this;var e=this.options.eles.nodes(),r=this.options.eles.edges(),n=r.filter(function(i){var a=i.source().data("id"),s=i.target().data("id"),l=e.some(function(h){return h.data("id")===a}),u=e.some(function(h){return h.data("id")===s});return!l||!u});this.options.eles=this.options.eles.not(n)}function t1e(t){this.options=ir({},xet,t)}function vB(t){this.options=ir({},bet,t)}function r1e(t){this.options=ir({},wet,t)}function n1e(t){this.options=ir({},Tet,t)}function i1e(t){this.options=t,this.notifications=0}function o1e(t,e){e.radius===0?t.lineTo(e.cx,e.cy):t.arc(e.cx,e.cy,e.radius,e.startAngle,e.endAngle,e.counterClockwise)}function bB(t,e,r,n){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;return n===0||e.radius===0?{cx:e.x,cy:e.y,radius:0,startX:e.x,startY:e.y,stopX:e.x,stopY:e.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(Cet(t,e,r,n,i),{cx:WP,cy:YP,radius:O0,startX:a1e,startY:s1e,stopX:qP,stopY:XP,startAngle:$c.ang+Math.PI/2*P0,endAngle:nl.ang-Math.PI/2*P0,counterClockwise:f6})}function l1e(t){var e=[];if(t!=null){for(var r=0;r5&&arguments[5]!==void 0?arguments[5]:5,s=arguments.length>6?arguments[6]:void 0;t.beginPath(),t.moveTo(e+a,r),t.lineTo(e+n-a,r),t.quadraticCurveTo(e+n,r,e+n,r+a),t.lineTo(e+n,r+i-a),t.quadraticCurveTo(e+n,r+i,e+n-a,r+i),t.lineTo(e+a,r+i),t.quadraticCurveTo(e,r+i,e,r+i-a),t.lineTo(e,r+a),t.quadraticCurveTo(e,r,e+a,r),t.closePath(),s?t.stroke():t.fill()}function ptt(t,e){for(var r=atob(t),n=new ArrayBuffer(r.length),i=new Uint8Array(n),a=0;a{"use strict";o(Yi,"_typeof");o(JP,"_classCallCheck");o(Dpe,"_defineProperties");o(eB,"_createClass");o(Hme,"_defineProperty$1");o(Ul,"_slicedToArray");o(Vqe,"_arrayWithHoles");o(Uqe,"_iterableToArrayLimit");o(Wme,"_unsupportedIterableToArray");o(Npe,"_arrayLikeToArray");o(Hqe,"_nonIterableRest");o(Yme,"_createForOfIteratorHelper");Hi=typeof window>"u"?null:window,Rpe=Hi?Hi.navigator:null;Hi&&Hi.document;Wqe=Yi(""),qme=Yi({}),Yqe=Yi(function(){}),qqe=typeof HTMLElement>"u"?"undefined":Yi(HTMLElement),Zx=o(function(e){return e&&e.instanceString&&ti(e.instanceString)?e.instanceString():null},"instanceStr"),Zt=o(function(e){return e!=null&&Yi(e)==Wqe},"string"),ti=o(function(e){return e!=null&&Yi(e)===Yqe},"fn"),wn=o(function(e){return!po(e)&&(Array.isArray?Array.isArray(e):e!=null&&e instanceof Array)},"array"),Vr=o(function(e){return e!=null&&Yi(e)===qme&&!wn(e)&&e.constructor===Object},"plainObject"),Xqe=o(function(e){return e!=null&&Yi(e)===qme},"object"),xt=o(function(e){return e!=null&&Yi(e)===Yi(1)&&!isNaN(e)},"number"),jqe=o(function(e){return xt(e)&&Math.floor(e)===e},"integer"),p6=o(function(e){if(qqe!=="undefined")return e!=null&&e instanceof HTMLElement},"htmlElement"),po=o(function(e){return Jx(e)||Xme(e)},"elementOrCollection"),Jx=o(function(e){return Zx(e)==="collection"&&e._private.single},"element"),Xme=o(function(e){return Zx(e)==="collection"&&!e._private.single},"collection"),tB=o(function(e){return Zx(e)==="core"},"core"),jme=o(function(e){return Zx(e)==="stylesheet"},"stylesheet"),Kqe=o(function(e){return Zx(e)==="event"},"event"),Sf=o(function(e){return e==null?!0:!!(e===""||e.match(/^\s+$/))},"emptyString"),Qqe=o(function(e){return typeof HTMLElement>"u"?!1:e instanceof HTMLElement},"domElement"),Zqe=o(function(e){return Vr(e)&&xt(e.x1)&&xt(e.x2)&&xt(e.y1)&&xt(e.y2)},"boundingBox"),Jqe=o(function(e){return Xqe(e)&&ti(e.then)},"promise"),eXe=o(function(){return Rpe&&Rpe.userAgent.match(/msie|trident|edge/i)},"ms"),$x=o(function(e,r){r||(r=o(function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var a=[],s=0;sr?1:0},"ascending"),oXe=o(function(e,r){return-1*Qme(e,r)},"descending"),ir=Object.assign!=null?Object.assign.bind(Object):function(t){for(var e=arguments,r=1;r1&&(v-=1),v<1/6?g+(y-g)*6*v:v<1/2?y:v<2/3?g+(y-g)*(2/3-v)*6:g}o(f,"hue2rgb");var d=new RegExp("^"+nXe+"$").exec(e);if(d){if(n=parseInt(d[1]),n<0?n=(360- -1*n%360)%360:n>360&&(n=n%360),n/=360,i=parseFloat(d[2]),i<0||i>100||(i=i/100,a=parseFloat(d[3]),a<0||a>100)||(a=a/100,s=d[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(i===0)l=u=h=Math.round(a*255);else{var p=a<.5?a*(1+i):a+i-a*i,m=2*a-p;l=Math.round(255*f(m,p,n+1/3)),u=Math.round(255*f(m,p,n)),h=Math.round(255*f(m,p,n-1/3))}r=[l,u,h,s]}return r},"hsl2tuple"),uXe=o(function(e){var r,n=new RegExp("^"+tXe+"$").exec(e);if(n){r=[];for(var i=[],a=1;a<=3;a++){var s=n[a];if(s[s.length-1]==="%"&&(i[a]=!0),s=parseFloat(s),i[a]&&(s=s/100*255),s<0||s>255)return;r.push(Math.floor(s))}var l=i[1]||i[2]||i[3],u=i[1]&&i[2]&&i[3];if(l&&!u)return;var h=n[4];if(h!==void 0){if(h=parseFloat(h),h<0||h>1)return;r.push(h)}}return r},"rgb2tuple"),hXe=o(function(e){return dXe[e.toLowerCase()]},"colorname2tuple"),fXe=o(function(e){return(wn(e)?e:null)||hXe(e)||lXe(e)||uXe(e)||cXe(e)},"color2tuple"),dXe={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Zme=o(function(e){for(var r=e.map,n=e.keys,i=n.length,a=0;a1&&arguments[1]!==void 0?arguments[1]:t1,n=r,i;i=e.next(),!i.done;)n=n*nge+i.value|0;return n},"hashIterableInts"),Vx=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t1;return r*nge+e|0},"hashInt"),Ux=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ox;return(r<<5)+r+e|0},"hashIntAlt"),JXe=o(function(e,r){return e*2097152+r},"combineHashes"),xf=o(function(e){return e[0]*2097152+e[1]},"combineHashesArray"),qE=o(function(e,r){return[Vx(e[0],r[0]),Ux(e[1],r[1])]},"hashArrays"),eje=o(function(e,r){var n={value:0,done:!1},i=0,a=e.length,s={next:o(function(){return i=0&&!(e[i]===r&&(e.splice(i,1),n));i--);},"removeFromArray"),aB=o(function(e){e.splice(0,e.length)},"clearArray"),oje=o(function(e,r){for(var n=0;n"u"?"undefined":Yi(Set))!==cje?Set:uje,_6=o(function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0||r===void 0||!tB(e)){hi("An element must have a core reference and parameters set");return}var i=r.group;if(i==null&&(r.data&&r.data.source!=null&&r.data.target!=null?i="edges":i="nodes"),i!=="nodes"&&i!=="edges"){hi("An element must be of type `nodes` or `edges`; you specified `"+i+"`");return}this.length=1,this[0]=this;var a=this._private={cy:e,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:i,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?i==="edges":!!r.pannable,active:!1,classes:new f1,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(a.position.x==null&&(a.position.x=0),a.position.y==null&&(a.position.y=0),r.renderedPosition){var s=r.renderedPosition,l=e.pan(),u=e.zoom();a.position={x:(s.x-l.x)/u,y:(s.y-l.y)/u}}var h=[];wn(r.classes)?h=r.classes:Zt(r.classes)&&(h=r.classes.split(/\s+/));for(var f=0,d=h.length;fb?1:0},"defaultCmp"),f=o(function(x,b,w,_,T){var E;if(w==null&&(w=0),T==null&&(T=n),w<0)throw new Error("lo must be non-negative");for(_==null&&(_=x.length);w<_;)E=i((w+_)/2),T(b,x[E])<0?_=E:w=E+1;return[].splice.apply(x,[w,w-w].concat(b)),b},"insort"),l=o(function(x,b,w){return w==null&&(w=n),x.push(b),y(x,0,x.length-1,w)},"heappush"),s=o(function(x,b){var w,_;return b==null&&(b=n),w=x.pop(),x.length?(_=x[0],x[0]=w,v(x,0,b)):_=w,_},"heappop"),h=o(function(x,b,w){var _;return w==null&&(w=n),_=x[0],x[0]=b,v(x,0,w),_},"heapreplace"),u=o(function(x,b,w){var _;return w==null&&(w=n),x.length&&w(x[0],b)<0&&(_=[x[0],b],b=_[0],x[0]=_[1],v(x,0,w)),b},"heappushpop"),a=o(function(x,b){var w,_,T,E,L,C;for(b==null&&(b=n),E=function(){C=[];for(var A=0,I=i(x.length/2);0<=I?AI;0<=I?A++:A--)C.push(A);return C}.apply(this).reverse(),L=[],_=0,T=E.length;_D;0<=D?++C:--C)k.push(s(x,w));return k},"nsmallest"),y=o(function(x,b,w,_){var T,E,L;for(_==null&&(_=n),T=x[w];w>b;){if(L=w-1>>1,E=x[L],_(T,E)<0){x[w]=E,w=L;continue}break}return x[w]=T},"_siftdown"),v=o(function(x,b,w){var _,T,E,L,C;for(w==null&&(w=n),T=x.length,C=b,E=x[b],_=2*b+1;_0;){var E=b.pop(),L=v(E),C=E.id();if(p[C]=L,L!==1/0)for(var A=E.neighborhood().intersect(g),I=0;I0)for(F.unshift(P);d[$];){var z=d[$];F.unshift(z.edge),F.unshift(z.node),B=z.node,$=B.id()}return l.spawn(F)},"pathTo")}},"dijkstra")},pje={kruskal:o(function(e){e=e||function(w){return 1};for(var r=this.byGroup(),n=r.nodes,i=r.edges,a=n.length,s=new Array(a),l=n,u=o(function(_){for(var T=0;T0;){if(T(),L++,_===f){for(var C=[],A=a,I=f,D=x[I];C.unshift(A),D!=null&&C.unshift(D),A=v[I],A!=null;)I=A.id(),D=x[I];return{found:!0,distance:d[_],path:this.spawn(C),steps:L}}m[_]=!0;for(var k=w._private.edges,R=0;RD&&(g[I]=D,b[I]=A,w[I]=T),!a){var k=A*f+C;!a&&g[k]>D&&(g[k]=D,b[k]=C,w[k]=T)}}}for(var R=0;R1&&arguments[1]!==void 0?arguments[1]:s,Be=w(ke),Ve=[],Ge=Be;;){if(Ge==null)return r.spawn();var He=b(Ge),xe=He.edge,X=He.pred;if(Ve.unshift(Ge[0]),Ge.same(Fe)&&Ve.length>0)break;xe!=null&&Ve.unshift(xe),Ge=X}return u.spawn(Ve)},"pathTo"),E=0;E=0;f--){var d=h[f],p=d[1],m=d[2];(r[p]===l&&r[m]===u||r[p]===u&&r[m]===l)&&h.splice(f,1)}for(var g=0;gi;){var a=Math.floor(Math.random()*r.length);r=Tje(a,e,r),n--}return r},"contractUntil"),kje={kargerStein:o(function(){var e=this,r=this.byGroup(),n=r.nodes,i=r.edges;i.unmergeBy(function(F){return F.isLoop()});var a=n.length,s=i.length,l=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),u=Math.floor(a/wje);if(a<2){hi("At least 2 nodes are required for Karger-Stein algorithm");return}for(var h=[],f=0;f1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=-1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=0,a=0,s=r;s1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;i?e=e.slice(r,n):(n0&&e.splice(0,r));for(var l=0,u=e.length-1;u>=0;u--){var h=e[u];s?isFinite(h)||(e[u]=-1/0,l++):e.splice(u,1)}a&&e.sort(function(p,m){return p-m});var f=e.length,d=Math.floor(f/2);return f%2!==0?e[d+1+l]:(e[d-1+l]+e[d+l])/2},"median"),Lje=o(function(e){return Math.PI*e/180},"deg2rad"),XE=o(function(e,r){return Math.atan2(r,e)-Math.PI/2},"getAngleFromDisp"),sB=Math.log2||function(t){return Math.log(t)/Math.log(2)},hge=o(function(e){return e>0?1:e<0?-1:0},"signum"),G0=o(function(e,r){return Math.sqrt(M0(e,r))},"dist"),M0=o(function(e,r){var n=r.x-e.x,i=r.y-e.y;return n*n+i*i},"sqdist"),Dje=o(function(e){for(var r=e.length,n=0,i=0;i=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(e.w!=null&&e.h!=null&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},"makeBoundingBox"),Rje=o(function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}},"copyBoundingBox"),Mje=o(function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0},"clearBoundingBox"),Ije=o(function(e,r,n){return{x1:e.x1+r,x2:e.x2+r,y1:e.y1+n,y2:e.y2+n,w:e.w,h:e.h}},"shiftBoundingBox"),fge=o(function(e,r){e.x1=Math.min(e.x1,r.x1),e.x2=Math.max(e.x2,r.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,r.y1),e.y2=Math.max(e.y2,r.y2),e.h=e.y2-e.y1},"updateBoundingBox"),Oje=o(function(e,r,n){e.x1=Math.min(e.x1,r),e.x2=Math.max(e.x2,r),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},"expandBoundingBoxByPoint"),a6=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.x1-=r,e.x2+=r,e.y1-=r,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},"expandBoundingBox"),s6=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],n,i,a,s;if(r.length===1)n=i=a=s=r[0];else if(r.length===2)n=a=r[0],s=i=r[1];else if(r.length===4){var l=Ul(r,4);n=l[0],i=l[1],a=l[2],s=l[3]}return e.x1-=s,e.x2+=i,e.y1-=n,e.y2+=a,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},"expandBoundingBoxSides"),Gpe=o(function(e,r){e.x1=r.x1,e.y1=r.y1,e.x2=r.x2,e.y2=r.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},"assignBoundingBox"),oB=o(function(e,r){return!(e.x1>r.x2||r.x1>e.x2||e.x2r.y2||r.y1>e.y2)},"boundingBoxesIntersect"),c1=o(function(e,r,n){return e.x1<=r&&r<=e.x2&&e.y1<=n&&n<=e.y2},"inBoundingBox"),Pje=o(function(e,r){return c1(e,r.x,r.y)},"pointInBoundingBox"),dge=o(function(e,r){return c1(e,r.x1,r.y1)&&c1(e,r.x2,r.y2)},"boundingBoxInBoundingBox"),pge=o(function(e,r,n,i,a,s,l){var u=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"auto",h=u==="auto"?$0(a,s):u,f=a/2,d=s/2;h=Math.min(h,f,d);var p=h!==f,m=h!==d,g;if(p){var y=n-f+h-l,v=i-d-l,x=n+f-h+l,b=v;if(g=Tf(e,r,n,i,y,v,x,b,!1),g.length>0)return g}if(m){var w=n+f+l,_=i-d+h-l,T=w,E=i+d-h+l;if(g=Tf(e,r,n,i,w,_,T,E,!1),g.length>0)return g}if(p){var L=n-f+h-l,C=i+d+l,A=n+f-h+l,I=C;if(g=Tf(e,r,n,i,L,C,A,I,!1),g.length>0)return g}if(m){var D=n-f-l,k=i-d+h-l,R=D,S=i+d-h+l;if(g=Tf(e,r,n,i,D,k,R,S,!1),g.length>0)return g}var O;{var N=n-f+h,P=i-d+h;if(O=Px(e,r,n,i,N,P,h+l),O.length>0&&O[0]<=N&&O[1]<=P)return[O[0],O[1]]}{var F=n+f-h,B=i-d+h;if(O=Px(e,r,n,i,F,B,h+l),O.length>0&&O[0]>=F&&O[1]<=B)return[O[0],O[1]]}{var $=n+f-h,z=i+d-h;if(O=Px(e,r,n,i,$,z,h+l),O.length>0&&O[0]>=$&&O[1]>=z)return[O[0],O[1]]}{var W=n-f+h,j=i+d-h;if(O=Px(e,r,n,i,W,j,h+l),O.length>0&&O[0]<=W&&O[1]>=j)return[O[0],O[1]]}return[]},"roundRectangleIntersectLine"),Bje=o(function(e,r,n,i,a,s,l){var u=l,h=Math.min(n,a),f=Math.max(n,a),d=Math.min(i,s),p=Math.max(i,s);return h-u<=e&&e<=f+u&&d-u<=r&&r<=p+u},"inLineVicinity"),Fje=o(function(e,r,n,i,a,s,l,u,h){var f={x1:Math.min(n,l,a)-h,x2:Math.max(n,l,a)+h,y1:Math.min(i,u,s)-h,y2:Math.max(i,u,s)+h};return!(ef.x2||rf.y2)},"inBezierVicinity"),zje=o(function(e,r,n,i){n-=i;var a=r*r-4*e*n;if(a<0)return[];var s=Math.sqrt(a),l=2*e,u=(-r+s)/l,h=(-r-s)/l;return[u,h]},"solveQuadratic"),Gje=o(function(e,r,n,i,a){var s=1e-5;e===0&&(e=s),r/=e,n/=e,i/=e;var l,u,h,f,d,p,m,g;if(u=(3*n-r*r)/9,h=-(27*i)+r*(9*n-2*(r*r)),h/=54,l=u*u*u+h*h,a[1]=0,m=r/3,l>0){d=h+Math.sqrt(l),d=d<0?-Math.pow(-d,1/3):Math.pow(d,1/3),p=h-Math.sqrt(l),p=p<0?-Math.pow(-p,1/3):Math.pow(p,1/3),a[0]=-m+d+p,m+=(d+p)/2,a[4]=a[2]=-m,m=Math.sqrt(3)*(-p+d)/2,a[3]=m,a[5]=-m;return}if(a[5]=a[3]=0,l===0){g=h<0?-Math.pow(-h,1/3):Math.pow(h,1/3),a[0]=-m+2*g,a[4]=a[2]=-(g+m);return}u=-u,f=u*u*u,f=Math.acos(h/Math.sqrt(f)),g=2*Math.sqrt(u),a[0]=-m+g*Math.cos(f/3),a[2]=-m+g*Math.cos((f+2*Math.PI)/3),a[4]=-m+g*Math.cos((f+4*Math.PI)/3)},"solveCubic"),$je=o(function(e,r,n,i,a,s,l,u){var h=1*n*n-4*n*a+2*n*l+4*a*a-4*a*l+l*l+i*i-4*i*s+2*i*u+4*s*s-4*s*u+u*u,f=1*9*n*a-3*n*n-3*n*l-6*a*a+3*a*l+9*i*s-3*i*i-3*i*u-6*s*s+3*s*u,d=1*3*n*n-6*n*a+n*l-n*e+2*a*a+2*a*e-l*e+3*i*i-6*i*s+i*u-i*r+2*s*s+2*s*r-u*r,p=1*n*a-n*n+n*e-a*e+i*s-i*i+i*r-s*r,m=[];Gje(h,f,d,p,m);for(var g=1e-7,y=[],v=0;v<6;v+=2)Math.abs(m[v+1])=0&&m[v]<=1&&y.push(m[v]);y.push(1),y.push(0);for(var x=-1,b,w,_,T=0;T=0?_h?(e-a)*(e-a)+(r-s)*(r-s):f-p},"sqdistToFiniteLine"),Gs=o(function(e,r,n){for(var i,a,s,l,u,h=0,f=0;f=e&&e>=s||i<=e&&e<=s)u=(e-i)/(s-i)*(l-a)+a,u>r&&h++;else continue;return h%2!==0},"pointInsidePolygonPoints"),ju=o(function(e,r,n,i,a,s,l,u,h){var f=new Array(n.length),d;u[0]!=null?(d=Math.atan(u[1]/u[0]),u[0]<0?d=d+Math.PI/2:d=-d-Math.PI/2):d=u;for(var p=Math.cos(-d),m=Math.sin(-d),g=0;g0){var v=v6(f,-h);y=y6(v)}else y=f;return Gs(e,r,y)},"pointInsidePolygon"),Uje=o(function(e,r,n,i,a,s,l,u){for(var h=new Array(n.length*2),f=0;f=0&&v<=1&&b.push(v),x>=0&&x<=1&&b.push(x),b.length===0)return[];var w=b[0]*u[0]+e,_=b[0]*u[1]+r;if(b.length>1){if(b[0]==b[1])return[w,_];var T=b[1]*u[0]+e,E=b[1]*u[1]+r;return[w,_,T,E]}else return[w,_]},"intersectLineCircle"),AP=o(function(e,r,n){return r<=e&&e<=n||n<=e&&e<=r?e:e<=r&&r<=n||n<=r&&r<=e?r:n},"midOfThree"),Tf=o(function(e,r,n,i,a,s,l,u,h){var f=e-a,d=n-e,p=l-a,m=r-s,g=i-r,y=u-s,v=p*m-y*f,x=d*m-g*f,b=y*d-p*g;if(b!==0){var w=v/b,_=x/b,T=.001,E=0-T,L=1+T;return E<=w&&w<=L&&E<=_&&_<=L?[e+w*d,r+w*g]:h?[e+w*d,r+w*g]:[]}else return v===0||x===0?AP(e,n,l)===l?[l,u]:AP(e,n,a)===a?[a,s]:AP(a,l,n)===n?[n,i]:[]:[]},"finiteLinesIntersect"),Yx=o(function(e,r,n,i,a,s,l,u){var h=[],f,d=new Array(n.length),p=!0;s==null&&(p=!1);var m;if(p){for(var g=0;g0){var y=v6(d,-u);m=y6(y)}else m=d}else m=n;for(var v,x,b,w,_=0;_2){for(var g=[f[0],f[1]],y=Math.pow(g[0]-e,2)+Math.pow(g[1]-r,2),v=1;vf&&(f=_)},"set"),get:o(function(w){return h[w]},"get")},p=0;p0?N=O.edgesTo(S)[0]:N=S.edgesTo(O)[0];var P=i(N);S=S.id(),C[S]>C[k]+P&&(C[S]=C[k]+P,A.nodes.indexOf(S)<0?A.push(S):A.updateItem(S),L[S]=0,E[S]=[]),C[S]==C[k]+P&&(L[S]=L[S]+L[k],E[S].push(k))}else for(var F=0;F0;){for(var W=T.pop(),j=0;j0&&l.push(n[u]);l.length!==0&&a.push(i.collection(l))}return a},"assign"),aKe=o(function(e,r){for(var n=0;n5&&arguments[5]!==void 0?arguments[5]:lKe,l=i,u,h,f=0;f=2?Dx(e,r,n,0,Wpe,cKe):Dx(e,r,n,0,Hpe)},"euclidean"),squaredEuclidean:o(function(e,r,n){return Dx(e,r,n,0,Wpe)},"squaredEuclidean"),manhattan:o(function(e,r,n){return Dx(e,r,n,0,Hpe)},"manhattan"),max:o(function(e,r,n){return Dx(e,r,n,-1/0,uKe)},"max")};u1["squared-euclidean"]=u1.squaredEuclidean;u1.squaredeuclidean=u1.squaredEuclidean;o(D6,"clusteringDistance");hKe=wa({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),cB=o(function(e){return hKe(e)},"setOptions"),x6=o(function(e,r,n,i,a){var s=a!=="kMedoids",l=s?function(d){return n[d]}:function(d){return i[d](n)},u=o(function(p){return i[p](r)},"getQ"),h=n,f=r;return D6(e,i.length,l,u,h,f)},"getDist"),_P=o(function(e,r,n){for(var i=n.length,a=new Array(i),s=new Array(i),l=new Array(r),u=null,h=0;hn)return!1}return!0},"haveMatricesConverged"),pKe=o(function(e,r,n){for(var i=0;il&&(l=r[h][f],u=f);a[u].push(e[h])}for(var d=0;d=a.threshold||a.mode==="dendrogram"&&e.length===1)return!1;var g=r[s],y=r[i[s]],v;a.mode==="dendrogram"?v={left:g,right:y,key:g.key}:v={value:g.value.concat(y.value),key:g.key},e[g.index]=v,e.splice(y.index,1),r[g.key]=v;for(var x=0;xn[y.key][b.key]&&(u=n[y.key][b.key])):a.linkage==="max"?(u=n[g.key][b.key],n[g.key][b.key]0&&i.push(a);return i},"findExemplars"),Qpe=o(function(e,r,n){for(var i=[],a=0;al&&(s=h,l=r[a*e+h])}s>0&&i.push(s)}for(var f=0;fh&&(u=f,h=d)}n[a]=s[u]}return i=Qpe(e,r,n),i},"assign"),Zpe=o(function(e){for(var r=this.cy(),n=this.nodes(),i=_Ke(e),a={},s=0;s=D?(k=D,D=S,R=O):S>k&&(k=S);for(var N=0;N0?1:0;L[A%i.minIterations*l+W]=j,z+=j}if(z>0&&(A>=i.minIterations-1||A==i.maxIterations-1)){for(var K=0,ie=0;ie1||E>1)&&(l=!0),d[w]=[],b.outgoers().forEach(function(C){C.isEdge()&&d[w].push(C.id())})}else p[w]=[void 0,b.target().id()]}):s.forEach(function(b){var w=b.id();if(b.isNode()){var _=b.degree(!0);_%2&&(u?h?l=!0:h=w:u=w),d[w]=[],b.connectedEdges().forEach(function(T){return d[w].push(T.id())})}else p[w]=[b.source().id(),b.target().id()]});var m={found:!1,trail:void 0};if(l)return m;if(h&&u)if(a){if(f&&h!=f)return m;f=h}else{if(f&&h!=f&&u!=f)return m;f||(f=h)}else f||(f=s[0].id());var g=o(function(w){for(var _=w,T=[w],E,L,C;d[_].length;)E=d[_].shift(),L=p[E][0],C=p[E][1],_!=C?(d[C]=d[C].filter(function(A){return A!=E}),_=C):!a&&_!=L&&(d[L]=d[L].filter(function(A){return A!=E}),_=L),T.unshift(E),T.unshift(_);return T},"walk"),y=[],v=[];for(v=g(f);v.length!=1;)d[v[0]].length==0?(y.unshift(s.getElementById(v.shift())),y.unshift(s.getElementById(v.shift()))):v=g(v.shift()).concat(v);y.unshift(s.getElementById(v.shift()));for(var x in d)if(d[x].length)return m;return m.found=!0,m.trail=this.spawn(y,!0),m},"hierholzer")},QE=o(function(){var e=this,r={},n=0,i=0,a=[],s=[],l={},u=o(function(p,m){for(var g=s.length-1,y=[],v=e.spawn();s[g].x!=p||s[g].y!=m;)y.push(s.pop().edge),g--;y.push(s.pop().edge),y.forEach(function(x){var b=x.connectedNodes().intersection(e);v.merge(x),b.forEach(function(w){var _=w.id(),T=w.connectedEdges().intersection(e);v.merge(w),r[_].cutVertex?v.merge(T.filter(function(E){return E.isLoop()})):v.merge(T)})}),a.push(v)},"buildComponent"),h=o(function d(p,m,g){p===g&&(i+=1),r[m]={id:n,low:n++,cutVertex:!1};var y=e.getElementById(m).connectedEdges().intersection(e);if(y.size()===0)a.push(e.spawn(e.getElementById(m)));else{var v,x,b,w;y.forEach(function(_){v=_.source().id(),x=_.target().id(),b=v===m?x:v,b!==g&&(w=_.id(),l[w]||(l[w]=!0,s.push({x:m,y:b,edge:_})),b in r?r[m].low=Math.min(r[m].low,r[b].id):(d(p,b,m),r[m].low=Math.min(r[m].low,r[b].low),r[m].id<=r[b].low&&(r[m].cutVertex=!0,u(m,b))))})}},"biconnectedSearch");e.forEach(function(d){if(d.isNode()){var p=d.id();p in r||(i=0,h(p,p),r[p].cutVertex=i>1)}});var f=Object.keys(r).filter(function(d){return r[d].cutVertex}).map(function(d){return e.getElementById(d)});return{cut:e.spawn(f),components:a}},"hopcroftTarjanBiconnected"),PKe={hopcroftTarjanBiconnected:QE,htbc:QE,htb:QE,hopcroftTarjanBiconnectedComponents:QE},ZE=o(function(){var e=this,r={},n=0,i=[],a=[],s=e.spawn(e),l=o(function u(h){a.push(h),r[h]={index:n,low:n++,explored:!1};var f=e.getElementById(h).connectedEdges().intersection(e);if(f.forEach(function(y){var v=y.target().id();v!==h&&(v in r||u(v),r[v].explored||(r[h].low=Math.min(r[h].low,r[v].low)))}),r[h].index===r[h].low){for(var d=e.spawn();;){var p=a.pop();if(d.merge(e.getElementById(p)),r[p].low=r[h].index,r[p].explored=!0,p===h)break}var m=d.edgesWith(d),g=d.merge(m);i.push(g),s=s.difference(g)}},"stronglyConnectedSearch");return e.forEach(function(u){if(u.isNode()){var h=u.id();h in r||l(h)}}),{cut:s,components:i}},"tarjanStronglyConnected"),BKe={tarjanStronglyConnected:ZE,tsc:ZE,tscc:ZE,tarjanStronglyConnectedComponents:ZE},wge={};[Hx,dje,pje,gje,vje,bje,kje,Xje,a1,s1,zP,oKe,bKe,CKe,MKe,OKe,PKe,BKe].forEach(function(t){ir(wge,t)});Tge=0,kge=1,Ege=2,Ku=o(function t(e){if(!(this instanceof t))return new t(e);this.id="Thenable/1.0.7",this.state=Tge,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof e=="function"&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))},"api");Ku.prototype={fulfill:o(function(e){return Jpe(this,kge,"fulfillValue",e)},"fulfill"),reject:o(function(e){return Jpe(this,Ege,"rejectReason",e)},"reject"),then:o(function(e,r){var n=this,i=new Ku;return n.onFulfilled.push(tme(e,i,"fulfill")),n.onRejected.push(tme(r,i,"reject")),Sge(n),i.proxy},"then")};Jpe=o(function(e,r,n,i){return e.state===Tge&&(e.state=r,e[n]=i,Sge(e)),e},"deliver"),Sge=o(function(e){e.state===kge?eme(e,"onFulfilled",e.fulfillValue):e.state===Ege&&eme(e,"onRejected",e.rejectReason)},"execute"),eme=o(function(e,r,n){if(e[r].length!==0){var i=e[r];e[r]=[];var a=o(function(){for(var l=0;l0},"animatedImpl")},"animated"),clearQueue:o(function(){return o(function(){var r=this,n=r.length!==void 0,i=n?r:[r],a=this._private.cy||this;if(!a.styleEnabled())return this;for(var s=0;s0&&this.spawn(i).updateStyle().emit("class"),r},"classes"),addClass:o(function(e){return this.toggleClass(e,!0)},"addClass"),hasClass:o(function(e){var r=this[0];return r!=null&&r._private.classes.has(e)},"hasClass"),toggleClass:o(function(e,r){wn(e)||(e=e.match(/\S+/g)||[]);for(var n=this,i=r===void 0,a=[],s=0,l=n.length;s0&&this.spawn(a).updateStyle().emit("class"),n},"toggleClass"),removeClass:o(function(e){return this.toggleClass(e,!1)},"removeClass"),flashClass:o(function(e,r){var n=this;if(r==null)r=250;else if(r===0)return n;return n.addClass(e),setTimeout(function(){n.removeClass(e)},r),n},"flashClass")};o6.className=o6.classNames=o6.classes;$r={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:Wi,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};$r.variable="(?:[\\w-.]|(?:\\\\"+$r.metaChar+"))+";$r.className="(?:[\\w-]|(?:\\\\"+$r.metaChar+"))+";$r.value=$r.string+"|"+$r.number;$r.id=$r.variable;(function(){var t,e,r;for(t=$r.comparatorOp.split("|"),r=0;r=0)&&e!=="="&&($r.comparatorOp+="|\\!"+e)})();pn=o(function(){return{checks:[]}},"newQuery"),Pt={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},$P=[{selector:":selected",matches:o(function(e){return e.selected()},"matches")},{selector:":unselected",matches:o(function(e){return!e.selected()},"matches")},{selector:":selectable",matches:o(function(e){return e.selectable()},"matches")},{selector:":unselectable",matches:o(function(e){return!e.selectable()},"matches")},{selector:":locked",matches:o(function(e){return e.locked()},"matches")},{selector:":unlocked",matches:o(function(e){return!e.locked()},"matches")},{selector:":visible",matches:o(function(e){return e.visible()},"matches")},{selector:":hidden",matches:o(function(e){return!e.visible()},"matches")},{selector:":transparent",matches:o(function(e){return e.transparent()},"matches")},{selector:":grabbed",matches:o(function(e){return e.grabbed()},"matches")},{selector:":free",matches:o(function(e){return!e.grabbed()},"matches")},{selector:":removed",matches:o(function(e){return e.removed()},"matches")},{selector:":inside",matches:o(function(e){return!e.removed()},"matches")},{selector:":grabbable",matches:o(function(e){return e.grabbable()},"matches")},{selector:":ungrabbable",matches:o(function(e){return!e.grabbable()},"matches")},{selector:":animated",matches:o(function(e){return e.animated()},"matches")},{selector:":unanimated",matches:o(function(e){return!e.animated()},"matches")},{selector:":parent",matches:o(function(e){return e.isParent()},"matches")},{selector:":childless",matches:o(function(e){return e.isChildless()},"matches")},{selector:":child",matches:o(function(e){return e.isChild()},"matches")},{selector:":orphan",matches:o(function(e){return e.isOrphan()},"matches")},{selector:":nonorphan",matches:o(function(e){return e.isChild()},"matches")},{selector:":compound",matches:o(function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()},"matches")},{selector:":loop",matches:o(function(e){return e.isLoop()},"matches")},{selector:":simple",matches:o(function(e){return e.isSimple()},"matches")},{selector:":active",matches:o(function(e){return e.active()},"matches")},{selector:":inactive",matches:o(function(e){return!e.active()},"matches")},{selector:":backgrounding",matches:o(function(e){return e.backgrounding()},"matches")},{selector:":nonbackgrounding",matches:o(function(e){return!e.backgrounding()},"matches")}].sort(function(t,e){return oXe(t.selector,e.selector)}),KZe=function(){for(var t={},e,r=0;r<$P.length;r++)e=$P[r],t[e.selector]=e.matches;return t}(),QZe=o(function(e,r){return KZe[e](r)},"stateSelectorMatches"),ZZe="("+$P.map(function(t){return t.selector}).join("|")+")",Kg=o(function(e){return e.replace(new RegExp("\\\\("+$r.metaChar+")","g"),function(r,n){return n})},"cleanMetaChars"),bf=o(function(e,r,n){e[e.length-1]=n},"replaceLastQuery"),VP=[{name:"group",query:!0,regex:"("+$r.group+")",populate:o(function(e,r,n){var i=Ul(n,1),a=i[0];r.checks.push({type:Pt.GROUP,value:a==="*"?a:a+"s"})},"populate")},{name:"state",query:!0,regex:ZZe,populate:o(function(e,r,n){var i=Ul(n,1),a=i[0];r.checks.push({type:Pt.STATE,value:a})},"populate")},{name:"id",query:!0,regex:"\\#("+$r.id+")",populate:o(function(e,r,n){var i=Ul(n,1),a=i[0];r.checks.push({type:Pt.ID,value:Kg(a)})},"populate")},{name:"className",query:!0,regex:"\\.("+$r.className+")",populate:o(function(e,r,n){var i=Ul(n,1),a=i[0];r.checks.push({type:Pt.CLASS,value:Kg(a)})},"populate")},{name:"dataExists",query:!0,regex:"\\[\\s*("+$r.variable+")\\s*\\]",populate:o(function(e,r,n){var i=Ul(n,1),a=i[0];r.checks.push({type:Pt.DATA_EXIST,field:Kg(a)})},"populate")},{name:"dataCompare",query:!0,regex:"\\[\\s*("+$r.variable+")\\s*("+$r.comparatorOp+")\\s*("+$r.value+")\\s*\\]",populate:o(function(e,r,n){var i=Ul(n,3),a=i[0],s=i[1],l=i[2],u=new RegExp("^"+$r.string+"$").exec(l)!=null;u?l=l.substring(1,l.length-1):l=parseFloat(l),r.checks.push({type:Pt.DATA_COMPARE,field:Kg(a),operator:s,value:l})},"populate")},{name:"dataBool",query:!0,regex:"\\[\\s*("+$r.boolOp+")\\s*("+$r.variable+")\\s*\\]",populate:o(function(e,r,n){var i=Ul(n,2),a=i[0],s=i[1];r.checks.push({type:Pt.DATA_BOOL,field:Kg(s),operator:a})},"populate")},{name:"metaCompare",query:!0,regex:"\\[\\[\\s*("+$r.meta+")\\s*("+$r.comparatorOp+")\\s*("+$r.number+")\\s*\\]\\]",populate:o(function(e,r,n){var i=Ul(n,3),a=i[0],s=i[1],l=i[2];r.checks.push({type:Pt.META_COMPARE,field:Kg(a),operator:s,value:parseFloat(l)})},"populate")},{name:"nextQuery",separator:!0,regex:$r.separator,populate:o(function(e,r){var n=e.currentSubject,i=e.edgeCount,a=e.compoundCount,s=e[e.length-1];n!=null&&(s.subject=n,e.currentSubject=null),s.edgeCount=i,s.compoundCount=a,e.edgeCount=0,e.compoundCount=0;var l=e[e.length++]=pn();return l},"populate")},{name:"directedEdge",separator:!0,regex:$r.directedEdge,populate:o(function(e,r){if(e.currentSubject==null){var n=pn(),i=r,a=pn();return n.checks.push({type:Pt.DIRECTED_EDGE,source:i,target:a}),bf(e,r,n),e.edgeCount++,a}else{var s=pn(),l=r,u=pn();return s.checks.push({type:Pt.NODE_SOURCE,source:l,target:u}),bf(e,r,s),e.edgeCount++,u}},"populate")},{name:"undirectedEdge",separator:!0,regex:$r.undirectedEdge,populate:o(function(e,r){if(e.currentSubject==null){var n=pn(),i=r,a=pn();return n.checks.push({type:Pt.UNDIRECTED_EDGE,nodes:[i,a]}),bf(e,r,n),e.edgeCount++,a}else{var s=pn(),l=r,u=pn();return s.checks.push({type:Pt.NODE_NEIGHBOR,node:l,neighbor:u}),bf(e,r,s),u}},"populate")},{name:"child",separator:!0,regex:$r.child,populate:o(function(e,r){if(e.currentSubject==null){var n=pn(),i=pn(),a=e[e.length-1];return n.checks.push({type:Pt.CHILD,parent:a,child:i}),bf(e,r,n),e.compoundCount++,i}else if(e.currentSubject===r){var s=pn(),l=e[e.length-1],u=pn(),h=pn(),f=pn(),d=pn();return s.checks.push({type:Pt.COMPOUND_SPLIT,left:l,right:u,subject:h}),h.checks=r.checks,r.checks=[{type:Pt.TRUE}],d.checks.push({type:Pt.TRUE}),u.checks.push({type:Pt.PARENT,parent:d,child:f}),bf(e,l,s),e.currentSubject=h,e.compoundCount++,f}else{var p=pn(),m=pn(),g=[{type:Pt.PARENT,parent:p,child:m}];return p.checks=r.checks,r.checks=g,e.compoundCount++,m}},"populate")},{name:"descendant",separator:!0,regex:$r.descendant,populate:o(function(e,r){if(e.currentSubject==null){var n=pn(),i=pn(),a=e[e.length-1];return n.checks.push({type:Pt.DESCENDANT,ancestor:a,descendant:i}),bf(e,r,n),e.compoundCount++,i}else if(e.currentSubject===r){var s=pn(),l=e[e.length-1],u=pn(),h=pn(),f=pn(),d=pn();return s.checks.push({type:Pt.COMPOUND_SPLIT,left:l,right:u,subject:h}),h.checks=r.checks,r.checks=[{type:Pt.TRUE}],d.checks.push({type:Pt.TRUE}),u.checks.push({type:Pt.ANCESTOR,ancestor:d,descendant:f}),bf(e,l,s),e.currentSubject=h,e.compoundCount++,f}else{var p=pn(),m=pn(),g=[{type:Pt.ANCESTOR,ancestor:p,descendant:m}];return p.checks=r.checks,r.checks=g,e.compoundCount++,m}},"populate")},{name:"subject",modifier:!0,regex:$r.subject,populate:o(function(e,r){if(e.currentSubject!=null&&e.currentSubject!==r)return on("Redefinition of subject in selector `"+e.toString()+"`"),!1;e.currentSubject=r;var n=e[e.length-1],i=n.checks[0],a=i==null?null:i.type;a===Pt.DIRECTED_EDGE?i.type=Pt.NODE_TARGET:a===Pt.UNDIRECTED_EDGE&&(i.type=Pt.NODE_NEIGHBOR,i.node=i.nodes[1],i.neighbor=i.nodes[0],i.nodes=null)},"populate")}];VP.forEach(function(t){return t.regexObj=new RegExp("^"+t.regex)});JZe=o(function(e){for(var r,n,i,a=0;a0&&f.edgeCount>0)return on("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(f.edgeCount>1)return on("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;f.edgeCount===1&&on("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},"parse"),rJe=o(function(){if(this.toStringCache!=null)return this.toStringCache;for(var e=o(function(f){return f??""},"clean"),r=o(function(f){return Zt(f)?'"'+f+'"':e(f)},"cleanVal"),n=o(function(f){return" "+f+" "},"space"),i=o(function(f,d){var p=f.type,m=f.value;switch(p){case Pt.GROUP:{var g=e(m);return g.substring(0,g.length-1)}case Pt.DATA_COMPARE:{var y=f.field,v=f.operator;return"["+y+n(e(v))+r(m)+"]"}case Pt.DATA_BOOL:{var x=f.operator,b=f.field;return"["+e(x)+b+"]"}case Pt.DATA_EXIST:{var w=f.field;return"["+w+"]"}case Pt.META_COMPARE:{var _=f.operator,T=f.field;return"[["+T+n(e(_))+r(m)+"]]"}case Pt.STATE:return m;case Pt.ID:return"#"+m;case Pt.CLASS:return"."+m;case Pt.PARENT:case Pt.CHILD:return a(f.parent,d)+n(">")+a(f.child,d);case Pt.ANCESTOR:case Pt.DESCENDANT:return a(f.ancestor,d)+" "+a(f.descendant,d);case Pt.COMPOUND_SPLIT:{var E=a(f.left,d),L=a(f.subject,d),C=a(f.right,d);return E+(E.length>0?" ":"")+L+C}case Pt.TRUE:return""}},"checkToString"),a=o(function(f,d){return f.checks.reduce(function(p,m,g){return p+(d===f&&g===0?"$":"")+i(m,d)},"")},"queryToString"),s="",l=0;l1&&l=0&&(r=r.replace("!",""),d=!0),r.indexOf("@")>=0&&(r=r.replace("@",""),f=!0),(a||l||f)&&(u=!a&&!s?"":""+e,h=""+n),f&&(e=u=u.toLowerCase(),n=h=h.toLowerCase()),r){case"*=":i=u.indexOf(h)>=0;break;case"$=":i=u.indexOf(h,u.length-h.length)>=0;break;case"^=":i=u.indexOf(h)===0;break;case"=":i=e===n;break;case">":p=!0,i=e>n;break;case">=":p=!0,i=e>=n;break;case"<":p=!0,i=e1&&arguments[1]!==void 0?arguments[1]:!0;return pB(this,t,e,Ige)};o(Oge,"addParent");h1.forEachUp=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return pB(this,t,e,Oge)};o(uJe,"addParentAndChildren");h1.forEachUpAndDown=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return pB(this,t,e,uJe)};h1.ancestors=h1.parents;Xx=Pge={data:sn.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:sn.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:sn.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:sn.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:sn.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:sn.removeData({field:"rscratch",triggerEvent:!1}),id:o(function(){var e=this[0];if(e)return e._private.data.id},"id")};Xx.attr=Xx.data;Xx.removeAttr=Xx.removeData;hJe=Pge,I6={};o(DP,"defineDegreeFunction");ir(I6,{degree:DP(function(t,e){return e.source().same(e.target())?2:1}),indegree:DP(function(t,e){return e.target().same(t)?1:0}),outdegree:DP(function(t,e){return e.source().same(t)?1:0})});o(Qg,"defineDegreeBoundsFunction");ir(I6,{minDegree:Qg("degree",function(t,e){return te}),minIndegree:Qg("indegree",function(t,e){return te}),minOutdegree:Qg("outdegree",function(t,e){return te})});ir(I6,{totalDegree:o(function(e){for(var r=0,n=this.nodes(),i=0;i0,p=d;d&&(f=f[0]);var m=p?f.position():{x:0,y:0};r!==void 0?h.position(e,r+m[e]):a!==void 0&&h.position({x:a.x+m.x,y:a.y+m.y})}else{var g=n.position(),y=l?n.parent():null,v=y&&y.length>0,x=v;v&&(y=y[0]);var b=x?y.position():{x:0,y:0};return a={x:g.x-b.x,y:g.y-b.y},e===void 0?a:a[e]}else if(!s)return;return this},"relativePosition")};Yl.modelPosition=Yl.point=Yl.position;Yl.modelPositions=Yl.points=Yl.positions;Yl.renderedPoint=Yl.renderedPosition;Yl.relativePoint=Yl.relativePosition;fJe=Bge;o1=Df={};Df.renderedBoundingBox=function(t){var e=this.boundingBox(t),r=this.cy(),n=r.zoom(),i=r.pan(),a=e.x1*n+i.x,s=e.x2*n+i.x,l=e.y1*n+i.y,u=e.y2*n+i.y;return{x1:a,x2:s,y1:l,y2:u,w:s-a,h:u-l}};Df.dirtyCompoundBoundsCache=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();return!e.styleEnabled()||!e.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var n=r._private;n.compoundBoundsClean=!1,n.bbCache=null,t||r.emitAndNotify("bounds")}}),this)};Df.updateCompoundBounds=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!t&&e.batching())return this;function r(s){if(!s.isParent())return;var l=s._private,u=s.children(),h=s.pstyle("compound-sizing-wrt-labels").value==="include",f={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},d=u.boundingBox({includeLabels:h,includeOverlays:!1,useCache:!1}),p=l.position;(d.w===0||d.h===0)&&(d={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},d.x1=p.x-d.w/2,d.x2=p.x+d.w/2,d.y1=p.y-d.h/2,d.y2=p.y+d.h/2);function m(A,I,D){var k=0,R=0,S=I+D;return A>0&&S>0&&(k=I/S*A,R=D/S*A),{biasDiff:k,biasComplementDiff:R}}o(m,"computeBiasValues");function g(A,I,D,k){if(D.units==="%")switch(k){case"width":return A>0?D.pfValue*A:0;case"height":return I>0?D.pfValue*I:0;case"average":return A>0&&I>0?D.pfValue*(A+I)/2:0;case"min":return A>0&&I>0?A>I?D.pfValue*I:D.pfValue*A:0;case"max":return A>0&&I>0?A>I?D.pfValue*A:D.pfValue*I:0;default:return 0}else return D.units==="px"?D.pfValue:0}o(g,"computePaddingValues");var y=f.width.left.value;f.width.left.units==="px"&&f.width.val>0&&(y=y*100/f.width.val);var v=f.width.right.value;f.width.right.units==="px"&&f.width.val>0&&(v=v*100/f.width.val);var x=f.height.top.value;f.height.top.units==="px"&&f.height.val>0&&(x=x*100/f.height.val);var b=f.height.bottom.value;f.height.bottom.units==="px"&&f.height.val>0&&(b=b*100/f.height.val);var w=m(f.width.val-d.w,y,v),_=w.biasDiff,T=w.biasComplementDiff,E=m(f.height.val-d.h,x,b),L=E.biasDiff,C=E.biasComplementDiff;l.autoPadding=g(d.w,d.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),l.autoWidth=Math.max(d.w,f.width.val),p.x=(-_+d.x1+d.x2+T)/2,l.autoHeight=Math.max(d.h,f.height.val),p.y=(-L+d.y1+d.y2+C)/2}o(r,"update");for(var n=0;ne.x2?i:e.x2,e.y1=ne.y2?a:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},"updateBounds"),I0=o(function(e,r){return r==null?e:Hl(e,r.x1,r.y1,r.x2,r.y2)},"updateBoundsFromBox"),Nx=o(function(e,r,n){return Wl(e,r,n)},"prefixedProperty"),JE=o(function(e,r,n){if(!r.cy().headless()){var i=r._private,a=i.rstyle,s=a.arrowWidth/2,l=r.pstyle(n+"-arrow-shape").value,u,h;if(l!=="none"){n==="source"?(u=a.srcX,h=a.srcY):n==="target"?(u=a.tgtX,h=a.tgtY):(u=a.midX,h=a.midY);var f=i.arrowBounds=i.arrowBounds||{},d=f[n]=f[n]||{};d.x1=u-s,d.y1=h-s,d.x2=u+s,d.y2=h+s,d.w=d.x2-d.x1,d.h=d.y2-d.y1,a6(d,1),Hl(e,d.x1,d.y1,d.x2,d.y2)}}},"updateBoundsFromArrow"),NP=o(function(e,r,n){if(!r.cy().headless()){var i;n?i=n+"-":i="";var a=r._private,s=a.rstyle,l=r.pstyle(i+"label").strValue;if(l){var u=r.pstyle("text-halign"),h=r.pstyle("text-valign"),f=Nx(s,"labelWidth",n),d=Nx(s,"labelHeight",n),p=Nx(s,"labelX",n),m=Nx(s,"labelY",n),g=r.pstyle(i+"text-margin-x").pfValue,y=r.pstyle(i+"text-margin-y").pfValue,v=r.isEdge(),x=r.pstyle(i+"text-rotation"),b=r.pstyle("text-outline-width").pfValue,w=r.pstyle("text-border-width").pfValue,_=w/2,T=r.pstyle("text-background-padding").pfValue,E=2,L=d,C=f,A=C/2,I=L/2,D,k,R,S;if(v)D=p-A,k=p+A,R=m-I,S=m+I;else{switch(u.value){case"left":D=p-C,k=p;break;case"center":D=p-A,k=p+A;break;case"right":D=p,k=p+C;break}switch(h.value){case"top":R=m-L,S=m;break;case"center":R=m-I,S=m+I;break;case"bottom":R=m,S=m+L;break}}D+=g-Math.max(b,_)-T-E,k+=g+Math.max(b,_)+T+E,R+=y-Math.max(b,_)-T-E,S+=y+Math.max(b,_)+T+E;var O=n||"main",N=a.labelBounds,P=N[O]=N[O]||{};P.x1=D,P.y1=R,P.x2=k,P.y2=S,P.w=k-D,P.h=S-R;var F=v&&x.strValue==="autorotate",B=x.pfValue!=null&&x.pfValue!==0;if(F||B){var $=F?Nx(a.rstyle,"labelAngle",n):x.pfValue,z=Math.cos($),W=Math.sin($),j=(D+k)/2,K=(R+S)/2;if(!v){switch(u.value){case"left":j=k;break;case"right":j=D;break}switch(h.value){case"top":K=S;break;case"bottom":K=R;break}}var ie=o(function(ue,ce){return ue=ue-j,ce=ce-K,{x:ue*z-ce*W+j,y:ue*W+ce*z+K}},"rotate"),Q=ie(D,R),ee=ie(D,S),J=ie(k,R),H=ie(k,S);D=Math.min(Q.x,ee.x,J.x,H.x),k=Math.max(Q.x,ee.x,J.x,H.x),R=Math.min(Q.y,ee.y,J.y,H.y),S=Math.max(Q.y,ee.y,J.y,H.y)}var q=O+"Rot",Z=N[q]=N[q]||{};Z.x1=D,Z.y1=R,Z.x2=k,Z.y2=S,Z.w=k-D,Z.h=S-R,Hl(e,D,R,k,S),Hl(a.labelBounds.all,D,R,k,S)}return e}},"updateBoundsFromLabel"),dJe=o(function(e,r){if(!r.cy().headless()){var n=r.pstyle("outline-opacity").value,i=r.pstyle("outline-width").value;if(n>0&&i>0){var a=r.pstyle("outline-offset").value,s=r.pstyle("shape").value,l=i+a,u=(e.w+l*2)/e.w,h=(e.h+l*2)/e.h,f=0,d=0;["diamond","pentagon","round-triangle"].includes(s)?(u=(e.w+l*2.4)/e.w,d=-l/3.6):["concave-hexagon","rhomboid","right-rhomboid"].includes(s)?u=(e.w+l*2.4)/e.w:s==="star"?(u=(e.w+l*2.8)/e.w,h=(e.h+l*2.6)/e.h,d=-l/3.8):s==="triangle"?(u=(e.w+l*2.8)/e.w,h=(e.h+l*2.4)/e.h,d=-l/1.4):s==="vee"&&(u=(e.w+l*4.4)/e.w,h=(e.h+l*3.8)/e.h,d=-l*.5);var p=e.h*h-e.h,m=e.w*u-e.w;if(s6(e,[Math.ceil(p/2),Math.ceil(m/2)]),f!=0||d!==0){var g=Ije(e,f,d);fge(e,g)}}}},"updateBoundsFromOutline"),pJe=o(function(e,r){var n=e._private.cy,i=n.styleEnabled(),a=n.headless(),s=$s(),l=e._private,u=e.isNode(),h=e.isEdge(),f,d,p,m,g,y,v=l.rstyle,x=u&&i?e.pstyle("bounds-expansion").pfValue:[0],b=o(function(De){return De.pstyle("display").value!=="none"},"isDisplayed"),w=!i||b(e)&&(!h||b(e.source())&&b(e.target()));if(w){var _=0,T=0;i&&r.includeOverlays&&(_=e.pstyle("overlay-opacity").value,_!==0&&(T=e.pstyle("overlay-padding").value));var E=0,L=0;i&&r.includeUnderlays&&(E=e.pstyle("underlay-opacity").value,E!==0&&(L=e.pstyle("underlay-padding").value));var C=Math.max(T,L),A=0,I=0;if(i&&(A=e.pstyle("width").pfValue,I=A/2),u&&r.includeNodes){var D=e.position();g=D.x,y=D.y;var k=e.outerWidth(),R=k/2,S=e.outerHeight(),O=S/2;f=g-R,d=g+R,p=y-O,m=y+O,Hl(s,f,p,d,m),i&&r.includeOutlines&&dJe(s,e)}else if(h&&r.includeEdges)if(i&&!a){var N=e.pstyle("curve-style").strValue;if(f=Math.min(v.srcX,v.midX,v.tgtX),d=Math.max(v.srcX,v.midX,v.tgtX),p=Math.min(v.srcY,v.midY,v.tgtY),m=Math.max(v.srcY,v.midY,v.tgtY),f-=I,d+=I,p-=I,m+=I,Hl(s,f,p,d,m),N==="haystack"){var P=v.haystackPts;if(P&&P.length===2){if(f=P[0].x,p=P[0].y,d=P[1].x,m=P[1].y,f>d){var F=f;f=d,d=F}if(p>m){var B=p;p=m,m=B}Hl(s,f-I,p-I,d+I,m+I)}}else if(N==="bezier"||N==="unbundled-bezier"||N.endsWith("segments")||N.endsWith("taxi")){var $;switch(N){case"bezier":case"unbundled-bezier":$=v.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":$=v.linePts;break}if($!=null)for(var z=0;z<$.length;z++){var W=$[z];f=W.x-I,d=W.x+I,p=W.y-I,m=W.y+I,Hl(s,f,p,d,m)}}}else{var j=e.source(),K=j.position(),ie=e.target(),Q=ie.position();if(f=K.x,d=Q.x,p=K.y,m=Q.y,f>d){var ee=f;f=d,d=ee}if(p>m){var J=p;p=m,m=J}f-=I,d+=I,p-=I,m+=I,Hl(s,f,p,d,m)}if(i&&r.includeEdges&&h&&(JE(s,e,"mid-source"),JE(s,e,"mid-target"),JE(s,e,"source"),JE(s,e,"target")),i){var H=e.pstyle("ghost").value==="yes";if(H){var q=e.pstyle("ghost-offset-x").pfValue,Z=e.pstyle("ghost-offset-y").pfValue;Hl(s,s.x1+q,s.y1+Z,s.x2+q,s.y2+Z)}}var ae=l.bodyBounds=l.bodyBounds||{};Gpe(ae,s),s6(ae,x),a6(ae,1),i&&(f=s.x1,d=s.x2,p=s.y1,m=s.y2,Hl(s,f-C,p-C,d+C,m+C));var ue=l.overlayBounds=l.overlayBounds||{};Gpe(ue,s),s6(ue,x),a6(ue,1);var ce=l.labelBounds=l.labelBounds||{};ce.all!=null?Mje(ce.all):ce.all=$s(),i&&r.includeLabels&&(r.includeMainLabels&&NP(s,e,null),h&&(r.includeSourceLabels&&NP(s,e,"source"),r.includeTargetLabels&&NP(s,e,"target")))}return s.x1=il(s.x1),s.y1=il(s.y1),s.x2=il(s.x2),s.y2=il(s.y2),s.w=il(s.x2-s.x1),s.h=il(s.y2-s.y1),s.w>0&&s.h>0&&w&&(s6(s,x),a6(s,1)),s},"boundingBoxImpl"),zge=o(function(e){var r=0,n=o(function(s){return(s?1:0)<=0;l--)s(l);return this};Lf.removeAllListeners=function(){return this.removeListener("*")};Lf.emit=Lf.trigger=function(t,e,r){var n=this.listeners,i=n.length;return this.emitting++,wn(e)||(e=[e]),DJe(this,function(a,s){r!=null&&(n=[{event:s.event,type:s.type,namespace:s.namespace,callback:r}],i=n.length);for(var l=o(function(f){var d=n[f];if(d.type===s.type&&(!d.namespace||d.namespace===s.namespace||d.namespace===_Je)&&a.eventMatches(a.context,d,s)){var p=[s];e!=null&&oje(p,e),a.beforeEmit(a.context,d,s),d.conf&&d.conf.one&&(a.listeners=a.listeners.filter(function(y){return y!==d}));var m=a.callbackContext(a.context,d,s),g=d.callback.apply(m,p);a.afterEmit(a.context,d,s),g===!1&&(s.stopPropagation(),s.preventDefault())}},"_loop2"),u=0;u1&&!s){var l=this.length-1,u=this[l],h=u._private.data.id;this[l]=void 0,this[e]=u,a.set(h,{ele:u,index:e})}return this.length--,this},"unmergeAt"),unmergeOne:o(function(e){e=e[0];var r=this._private,n=e._private.data.id,i=r.map,a=i.get(n);if(!a)return this;var s=a.index;return this.unmergeAt(s),this},"unmergeOne"),unmerge:o(function(e){var r=this._private.cy;if(!e)return this;if(e&&Zt(e)){var n=e;e=r.mutableElements().filter(n)}for(var i=0;i=0;r--){var n=this[r];e(n)&&this.unmergeAt(r)}return this},"unmergeBy"),map:o(function(e,r){for(var n=[],i=this,a=0;an&&(n=u,i=l)}return{value:n,ele:i}},"max"),min:o(function(e,r){for(var n=1/0,i,a=this,s=0;s=0&&a"u"?"undefined":Yi(Symbol))!=e&&Yi(Symbol.iterator)!=e;r&&(b6[Symbol.iterator]=function(){var n=this,i={value:void 0,done:!1},a=0,s=this.length;return Hme({next:o(function(){return a1&&arguments[1]!==void 0?arguments[1]:!0,n=this[0],i=n.cy();if(i.styleEnabled()&&n){this.cleanStyle();var a=n._private.style[e];return a??(r?i.style().getDefaultProperty(e):null)}},"parsedStyle"),numericStyle:o(function(e){var r=this[0];if(r.cy().styleEnabled()&&r){var n=r.pstyle(e);return n.pfValue!==void 0?n.pfValue:n.value}},"numericStyle"),numericStyleUnits:o(function(e){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(e).units},"numericStyleUnits"),renderedStyle:o(function(e){var r=this.cy();if(!r.styleEnabled())return this;var n=this[0];if(n)return r.style().getRenderedStyle(n,e)},"renderedStyle"),style:o(function(e,r){var n=this.cy();if(!n.styleEnabled())return this;var i=!1,a=n.style();if(Vr(e)){var s=e;a.applyBypass(this,s,i),this.emitAndNotify("style")}else if(Zt(e))if(r===void 0){var l=this[0];return l?a.getStylePropertyValue(l,e):void 0}else a.applyBypass(this,e,r,i),this.emitAndNotify("style");else if(e===void 0){var u=this[0];return u?a.getRawStyle(u):void 0}return this},"style"),removeStyle:o(function(e){var r=this.cy();if(!r.styleEnabled())return this;var n=!1,i=r.style(),a=this;if(e===void 0)for(var s=0;s0&&e.push(f[0]),e.push(l[0])}return this.spawn(e,!0).filter(t)},"neighborhood"),closedNeighborhood:o(function(e){return this.neighborhood().add(this).filter(e)},"closedNeighborhood"),openNeighborhood:o(function(e){return this.neighborhood(e)},"openNeighborhood")});Ba.neighbourhood=Ba.neighborhood;Ba.closedNeighbourhood=Ba.closedNeighborhood;Ba.openNeighbourhood=Ba.openNeighborhood;ir(Ba,{source:al(o(function(e){var r=this[0],n;return r&&(n=r._private.source||r.cy().collection()),n&&e?n.filter(e):n},"sourceImpl"),"source"),target:al(o(function(e){var r=this[0],n;return r&&(n=r._private.target||r.cy().collection()),n&&e?n.filter(e):n},"targetImpl"),"target"),sources:vme({attr:"source"}),targets:vme({attr:"target"})});o(vme,"defineSourceFunction");ir(Ba,{edgesWith:al(xme(),"edgesWith"),edgesTo:al(xme({thisIsSrc:!0}),"edgesTo")});o(xme,"defineEdgesWithFunction");ir(Ba,{connectedEdges:al(function(t){for(var e=[],r=this,n=0;n0);return s},"components"),component:o(function(){var e=this[0];return e.cy().mutableElements().components(e)[0]},"component")});Ba.componentsOf=Ba.components;ba=o(function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===void 0){hi("A collection must have a reference to the core");return}var a=new Uc,s=!1;if(!r)r=[];else if(r.length>0&&Vr(r[0])&&!Jx(r[0])){s=!0;for(var l=[],u=new f1,h=0,f=r.length;h0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=r.cy(),i=n._private,a=[],s=[],l,u=0,h=r.length;u0){for(var B=l.length===r.length?r:new ba(n,l),$=0;$0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=[],i={},a=r._private.cy;function s(S){for(var O=S._private.edges,N=0;N0&&(t?D.emitAndNotify("remove"):e&&D.emit("remove"));for(var k=0;kf&&Math.abs(g.v)>f;);return p?function(y){return u[y*(u.length-1)|0]}:h},"springRK4Factory")}(),Dn=o(function(e,r,n,i){var a=GJe(e,r,n,i);return function(s,l,u){return s+(l-s)*a(u)}},"cubicBezier"),c6={linear:o(function(e,r,n){return e+(r-e)*n},"linear"),ease:Dn(.25,.1,.25,1),"ease-in":Dn(.42,0,1,1),"ease-out":Dn(0,0,.58,1),"ease-in-out":Dn(.42,0,.58,1),"ease-in-sine":Dn(.47,0,.745,.715),"ease-out-sine":Dn(.39,.575,.565,1),"ease-in-out-sine":Dn(.445,.05,.55,.95),"ease-in-quad":Dn(.55,.085,.68,.53),"ease-out-quad":Dn(.25,.46,.45,.94),"ease-in-out-quad":Dn(.455,.03,.515,.955),"ease-in-cubic":Dn(.55,.055,.675,.19),"ease-out-cubic":Dn(.215,.61,.355,1),"ease-in-out-cubic":Dn(.645,.045,.355,1),"ease-in-quart":Dn(.895,.03,.685,.22),"ease-out-quart":Dn(.165,.84,.44,1),"ease-in-out-quart":Dn(.77,0,.175,1),"ease-in-quint":Dn(.755,.05,.855,.06),"ease-out-quint":Dn(.23,1,.32,1),"ease-in-out-quint":Dn(.86,0,.07,1),"ease-in-expo":Dn(.95,.05,.795,.035),"ease-out-expo":Dn(.19,1,.22,1),"ease-in-out-expo":Dn(1,0,0,1),"ease-in-circ":Dn(.6,.04,.98,.335),"ease-out-circ":Dn(.075,.82,.165,1),"ease-in-out-circ":Dn(.785,.135,.15,.86),spring:o(function(e,r,n){if(n===0)return c6.linear;var i=$Je(e,r,n);return function(a,s,l){return a+(s-a)*i(l)}},"spring"),"cubic-bezier":Dn};o(wme,"getEasedValue");o(Tme,"getValue");o(Zg,"ease");o(VJe,"step$1");o(Mx,"valid");o(UJe,"startAnimation");o(kme,"stepAll");HJe={animate:sn.animate(),animation:sn.animation(),animated:sn.animated(),clearQueue:sn.clearQueue(),delay:sn.delay(),delayAnimation:sn.delayAnimation(),stop:sn.stop(),addToAnimationPool:o(function(e){var r=this;r.styleEnabled()&&r._private.aniEles.merge(e)},"addToAnimationPool"),stopAnimationLoop:o(function(){this._private.animationsRunning=!1},"stopAnimationLoop"),startAnimationLoop:o(function(){var e=this;if(e._private.animationsRunning=!0,!e.styleEnabled())return;function r(){e._private.animationsRunning&&m6(o(function(a){kme(a,e),r()},"animationStep"))}o(r,"headlessStep");var n=e.renderer();n&&n.beforeRender?n.beforeRender(o(function(a,s){kme(s,e)},"rendererAnimationStep"),n.beforeRenderPriorities.animations):r()},"startAnimationLoop")},WJe={qualifierCompare:o(function(e,r){return e==null||r==null?e==null&&r==null:e.sameText(r)},"qualifierCompare"),eventMatches:o(function(e,r,n){var i=r.qualifier;return i!=null?e!==n.target&&Jx(n.target)&&i.matches(n.target):!0},"eventMatches"),addEventFields:o(function(e,r){r.cy=e,r.target=e},"addEventFields"),callbackContext:o(function(e,r,n){return r.qualifier!=null?n.target:e},"callbackContext")},r6=o(function(e){return Zt(e)?new Af(e):e},"argSelector"),Kge={createEmitter:o(function(){var e=this._private;return e.emitter||(e.emitter=new O6(WJe,this)),this},"createEmitter"),emitter:o(function(){return this._private.emitter},"emitter"),on:o(function(e,r,n){return this.emitter().on(e,r6(r),n),this},"on"),removeListener:o(function(e,r,n){return this.emitter().removeListener(e,r6(r),n),this},"removeListener"),removeAllListeners:o(function(){return this.emitter().removeAllListeners(),this},"removeAllListeners"),one:o(function(e,r,n){return this.emitter().one(e,r6(r),n),this},"one"),once:o(function(e,r,n){return this.emitter().one(e,r6(r),n),this},"once"),emit:o(function(e,r){return this.emitter().emit(e,r),this},"emit"),emitAndNotify:o(function(e,r){return this.emit(e),this.notify(e,r),this},"emitAndNotify")};sn.eventAliasesOn(Kge);UP={png:o(function(e){var r=this._private.renderer;return e=e||{},r.png(e)},"png"),jpg:o(function(e){var r=this._private.renderer;return e=e||{},e.bg=e.bg||"#fff",r.jpg(e)},"jpg")};UP.jpeg=UP.jpg;u6={layout:o(function(e){var r=this;if(e==null){hi("Layout options must be specified to make a layout");return}if(e.name==null){hi("A `name` must be specified to make a layout");return}var n=e.name,i=r.extension("layout",n);if(i==null){hi("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var a;Zt(e.eles)?a=r.$(e.eles):a=e.eles!=null?e.eles:r.$();var s=new i(ir({},e,{cy:r,eles:a}));return s},"layout")};u6.createLayout=u6.makeLayout=u6.layout;YJe={notify:o(function(e,r){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var i=n.batchNotifications[e]=n.batchNotifications[e]||this.collection();r!=null&&i.merge(r);return}if(n.notificationsEnabled){var a=this.renderer();this.destroyed()||!a||a.notify(e,r)}},"notify"),notifications:o(function(e){var r=this._private;return e===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!e,this)},"notifications"),noNotifications:o(function(e){this.notifications(!1),e(),this.notifications(!0)},"noNotifications"),batching:o(function(){return this._private.batchCount>0},"batching"),startBatch:o(function(){var e=this._private;return e.batchCount==null&&(e.batchCount=0),e.batchCount===0&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},"startBatch"),endBatch:o(function(){var e=this._private;if(e.batchCount===0)return this;if(e.batchCount--,e.batchCount===0){e.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(e.batchNotifications).forEach(function(n){var i=e.batchNotifications[n];i.empty()?r.notify(n):r.notify(n,i)})}return this},"endBatch"),batch:o(function(e){return this.startBatch(),e(),this.endBatch(),this},"batch"),batchData:o(function(e){var r=this;return this.batch(function(){for(var n=Object.keys(e),i=0;i0;)r.removeChild(r.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(n){var i=n._private;i.rscratch={},i.rstyle={},i.animation.current=[],i.animation.queue=[]})},"destroyRenderer"),onRender:o(function(e){return this.on("render",e)},"onRender"),offRender:o(function(e){return this.off("render",e)},"offRender")};HP.invalidateDimensions=HP.resize;h6={collection:o(function(e,r){return Zt(e)?this.$(e):po(e)?e.collection():wn(e)?(r||(r={}),new ba(this,e,r.unique,r.removed)):new ba(this)},"collection"),nodes:o(function(e){var r=this.$(function(n){return n.isNode()});return e?r.filter(e):r},"nodes"),edges:o(function(e){var r=this.$(function(n){return n.isEdge()});return e?r.filter(e):r},"edges"),$:o(function(e){var r=this._private.elements;return e?r.filter(e):r.spawnSelf()},"$"),mutableElements:o(function(){return this._private.elements},"mutableElements")};h6.elements=h6.filter=h6.$;za={},zx="t",XJe="f";za.apply=function(t){for(var e=this,r=e._private,n=r.cy,i=n.collection(),a=0;a0;if(p||d&&m){var g=void 0;p&&m||p?g=h.properties:m&&(g=h.mappedProperties);for(var y=0;y1&&(_=1),l.color){var E=n.valueMin[0],L=n.valueMax[0],C=n.valueMin[1],A=n.valueMax[1],I=n.valueMin[2],D=n.valueMax[2],k=n.valueMin[3]==null?1:n.valueMin[3],R=n.valueMax[3]==null?1:n.valueMax[3],S=[Math.round(E+(L-E)*_),Math.round(C+(A-C)*_),Math.round(I+(D-I)*_),Math.round(k+(R-k)*_)];a={bypass:n.bypass,name:n.name,value:S,strValue:"rgb("+S[0]+", "+S[1]+", "+S[2]+")"}}else if(l.number){var O=n.valueMin+(n.valueMax-n.valueMin)*_;a=this.parse(n.name,O,n.bypass,p)}else return!1;if(!a)return y(),!1;a.mapping=n,n=a;break}case s.data:{for(var N=n.field.split("."),P=d.data,F=0;F0&&a>0){for(var l={},u=!1,h=0;h0?t.delayAnimation(s).play().promise().then(w):w()}).then(function(){return t.animation({style:l,duration:a,easing:t.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(t,i),t.emitAndNotify("style"),n.transitioning=!1})}else n.transitioning&&(this.removeBypasses(t,i),t.emitAndNotify("style"),n.transitioning=!1)};za.checkTrigger=function(t,e,r,n,i,a){var s=this.properties[e],l=i(s);l!=null&&l(r,n)&&a(s)};za.checkZOrderTrigger=function(t,e,r,n){var i=this;this.checkTrigger(t,e,r,n,function(a){return a.triggersZOrder},function(){i._private.cy.notify("zorder",t)})};za.checkBoundsTrigger=function(t,e,r,n){this.checkTrigger(t,e,r,n,function(i){return i.triggersBounds},function(i){t.dirtyCompoundBoundsCache(),t.dirtyBoundingBoxCache(),i.triggersBoundsOfParallelBeziers&&e==="curve-style"&&(r==="bezier"||n==="bezier")&&t.parallelEdges().forEach(function(a){a.isBundledBezier()&&a.dirtyBoundingBoxCache()}),i.triggersBoundsOfConnectedEdges&&e==="display"&&(r==="none"||n==="none")&&t.connectedEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};za.checkTriggers=function(t,e,r,n){t.dirtyStyleCache(),this.checkZOrderTrigger(t,e,r,n),this.checkBoundsTrigger(t,e,r,n)};nb={};nb.applyBypass=function(t,e,r,n){var i=this,a=[],s=!0;if(e==="*"||e==="**"){if(r!==void 0)for(var l=0;li.length?n=n.substr(i.length):n=""}o(l,"removeSelAndBlockFromRemaining");function u(){a.length>s.length?a=a.substr(s.length):a=""}for(o(u,"removePropAndValFromRem");;){var h=n.match(/^\s*$/);if(h)break;var f=n.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!f){on("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+n);break}i=f[0];var d=f[1];if(d!=="core"){var p=new Af(d);if(p.invalid){on("Skipping parsing of block: Invalid selector found in string stylesheet: "+d),l();continue}}var m=f[2],g=!1;a=m;for(var y=[];;){var v=a.match(/^\s*$/);if(v)break;var x=a.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!x){on("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+m),g=!0;break}s=x[0];var b=x[1],w=x[2],_=e.properties[b];if(!_){on("Skipping property: Invalid property name in: "+s),u();continue}var T=r.parse(b,w);if(!T){on("Skipping property: Invalid property definition in: "+s),u();continue}y.push({name:b,val:w}),u()}if(g){l();break}r.selector(d);for(var E=0;E=7&&e[0]==="d"&&(f=new RegExp(l.data.regex).exec(e))){if(r)return!1;var p=l.data;return{name:t,value:f,strValue:""+e,mapped:p,field:f[1],bypass:r}}else if(e.length>=10&&e[0]==="m"&&(d=new RegExp(l.mapData.regex).exec(e))){if(r||h.multiple)return!1;var m=l.mapData;if(!(h.color||h.number))return!1;var g=this.parse(t,d[4]);if(!g||g.mapped)return!1;var y=this.parse(t,d[5]);if(!y||y.mapped)return!1;if(g.pfValue===y.pfValue||g.strValue===y.strValue)return on("`"+t+": "+e+"` is not a valid mapper because the output range is zero; converting to `"+t+": "+g.strValue+"`"),this.parse(t,g.strValue);if(h.color){var v=g.value,x=y.value,b=v[0]===x[0]&&v[1]===x[1]&&v[2]===x[2]&&(v[3]===x[3]||(v[3]==null||v[3]===1)&&(x[3]==null||x[3]===1));if(b)return!1}return{name:t,value:d,strValue:""+e,mapped:m,field:d[1],fieldMin:parseFloat(d[2]),fieldMax:parseFloat(d[3]),valueMin:g.value,valueMax:y.value,bypass:r}}}if(h.multiple&&n!=="multiple"){var w;if(u?w=e.split(/\s+/):wn(e)?w=e:w=[e],h.evenMultiple&&w.length%2!==0)return null;for(var _=[],T=[],E=[],L="",C=!1,A=0;A0?" ":"")+I.strValue}return h.validate&&!h.validate(_,T)?null:h.singleEnum&&C?_.length===1&&Zt(_[0])?{name:t,value:_[0],strValue:_[0],bypass:r}:null:{name:t,value:_,pfValue:E,strValue:L,bypass:r,units:T}}var D=o(function(){for(var H=0;Hh.max||h.strictMax&&e===h.max))return null;var N={name:t,value:e,strValue:""+e+(k||""),units:k,bypass:r};return h.unitless||k!=="px"&&k!=="em"?N.pfValue=e:N.pfValue=k==="px"||!k?e:this.getEmSizeInPixels()*e,(k==="ms"||k==="s")&&(N.pfValue=k==="ms"?e:1e3*e),(k==="deg"||k==="rad")&&(N.pfValue=k==="rad"?e:Lje(e)),k==="%"&&(N.pfValue=e/100),N}else if(h.propList){var P=[],F=""+e;if(F!=="none"){for(var B=F.split(/\s*,\s*|\s+/),$=0;$0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0){u=Math.min((s-2*r)/n.w,(l-2*r)/n.h),u=u>this._private.maxZoom?this._private.maxZoom:u,u=u=n.minZoom&&(n.maxZoom=r),this},"zoomRange"),minZoom:o(function(e){return e===void 0?this._private.minZoom:this.zoomRange({min:e})},"minZoom"),maxZoom:o(function(e){return e===void 0?this._private.maxZoom:this.zoomRange({max:e})},"maxZoom"),getZoomedViewport:o(function(e){var r=this._private,n=r.pan,i=r.zoom,a,s,l=!1;if(r.zoomingEnabled||(l=!0),xt(e)?s=e:Vr(e)&&(s=e.level,e.position!=null?a=L6(e.position,i,n):e.renderedPosition!=null&&(a=e.renderedPosition),a!=null&&!r.panningEnabled&&(l=!0)),s=s>r.maxZoom?r.maxZoom:s,s=sr.maxZoom||!r.zoomingEnabled?s=!0:(r.zoom=u,a.push("zoom"))}if(i&&(!s||!e.cancelOnFailedZoom)&&r.panningEnabled){var h=e.pan;xt(h.x)&&(r.pan.x=h.x,l=!1),xt(h.y)&&(r.pan.y=h.y,l=!1),l||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},"viewport"),center:o(function(e){var r=this.getCenterPan(e);return r&&(this._private.pan=r,this.emit("pan viewport"),this.notify("viewport")),this},"center"),getCenterPan:o(function(e,r){if(this._private.panningEnabled){if(Zt(e)){var n=e;e=this.mutableElements().filter(n)}else po(e)||(e=this.mutableElements());if(e.length!==0){var i=e.boundingBox(),a=this.width(),s=this.height();r=r===void 0?this._private.zoom:r;var l={x:(a-r*(i.x1+i.x2))/2,y:(s-r*(i.y1+i.y2))/2};return l}}},"getCenterPan"),reset:o(function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},"reset"),invalidateSize:o(function(){this._private.sizeCache=null},"invalidateSize"),size:o(function(){var e=this._private,r=e.container,n=this;return e.sizeCache=e.sizeCache||(r?function(){var i=n.window().getComputedStyle(r),a=o(function(l){return parseFloat(i.getPropertyValue(l))},"val");return{width:r.clientWidth-a("padding-left")-a("padding-right"),height:r.clientHeight-a("padding-top")-a("padding-bottom")}}():{width:1,height:1})},"size"),width:o(function(){return this.size().width},"width"),height:o(function(){return this.size().height},"height"),extent:o(function(){var e=this._private.pan,r=this._private.zoom,n=this.renderedExtent(),i={x1:(n.x1-e.x)/r,x2:(n.x2-e.x)/r,y1:(n.y1-e.y)/r,y2:(n.y2-e.y)/r};return i.w=i.x2-i.x1,i.h=i.y2-i.y1,i},"extent"),renderedExtent:o(function(){var e=this.width(),r=this.height();return{x1:0,y1:0,x2:e,y2:r,w:e,h:r}},"renderedExtent"),multiClickDebounceTime:o(function(e){if(e)this._private.multiClickDebounceTime=e;else return this._private.multiClickDebounceTime;return this},"multiClickDebounceTime")};U0.centre=U0.center;U0.autolockNodes=U0.autolock;U0.autoungrabifyNodes=U0.autoungrabify;Kx={data:sn.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:sn.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:sn.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:sn.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Kx.attr=Kx.data;Kx.removeAttr=Kx.removeData;Qx=o(function(e){var r=this;e=ir({},e);var n=e.container;n&&!p6(n)&&p6(n[0])&&(n=n[0]);var i=n?n._cyreg:null;i=i||{},i&&i.cy&&(i.cy.destroy(),i={});var a=i.readies=i.readies||[];n&&(n._cyreg=i),i.cy=r;var s=Hi!==void 0&&n!==void 0&&!e.headless,l=e;l.layout=ir({name:s?"grid":"null"},l.layout),l.renderer=ir({name:s?"canvas":"null"},l.renderer);var u=o(function(g,y,v){return y!==void 0?y:v!==void 0?v:g},"defVal"),h=this._private={container:n,ready:!1,options:l,elements:new ba(this),listeners:[],aniEles:new ba(this),data:l.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:u(!0,l.zoomingEnabled),userZoomingEnabled:u(!0,l.userZoomingEnabled),panningEnabled:u(!0,l.panningEnabled),userPanningEnabled:u(!0,l.userPanningEnabled),boxSelectionEnabled:u(!0,l.boxSelectionEnabled),autolock:u(!1,l.autolock,l.autolockNodes),autoungrabify:u(!1,l.autoungrabify,l.autoungrabifyNodes),autounselectify:u(!1,l.autounselectify),styleEnabled:l.styleEnabled===void 0?s:l.styleEnabled,zoom:xt(l.zoom)?l.zoom:1,pan:{x:Vr(l.pan)&&xt(l.pan.x)?l.pan.x:0,y:Vr(l.pan)&&xt(l.pan.y)?l.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:u(250,l.multiClickDebounceTime)};this.createEmitter(),this.selectionType(l.selectionType),this.zoomRange({min:l.minZoom,max:l.maxZoom});var f=o(function(g,y){var v=g.some(Jqe);if(v)return d1.all(g).then(y);y(g)},"loadExtData");h.styleEnabled&&r.setStyle([]);var d=ir({},l,l.renderer);r.initRenderer(d);var p=o(function(g,y,v){r.notifications(!1);var x=r.mutableElements();x.length>0&&x.remove(),g!=null&&(Vr(g)||wn(g))&&r.add(g),r.one("layoutready",function(w){r.notifications(!0),r.emit(w),r.one("load",y),r.emitAndNotify("load")}).one("layoutstop",function(){r.one("done",v),r.emit("done")});var b=ir({},r._private.options.layout);b.eles=r.elements(),r.layout(b).run()},"setElesAndLayout");f([l.style,l.elements],function(m){var g=m[0],y=m[1];h.styleEnabled&&r.style().append(g),p(y,function(){r.startAnimationLoop(),h.ready=!0,ti(l.ready)&&r.on("ready",l.ready);for(var v=0;v0,u=$s(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),h;if(po(e.roots))h=e.roots;else if(wn(e.roots)){for(var f=[],d=0;d0;){var O=S(),N=I(O,k);if(N)O.outgoers().filter(function(ce){return ce.isNode()&&n.has(ce)}).forEach(R);else if(N===null){on("Detected double maximal shift for node `"+O.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}A();var P=0;if(e.avoidOverlap)for(var F=0;F0&&x[0].length<=3?Ge/2:0),X=2*Math.PI/x[oe].length*ke;return oe===0&&x[0].length===1&&(xe=1),{x:Z.x+xe*Math.cos(X),y:Z.y+xe*Math.sin(X)}}else{var He={x:Z.x+(ke+1-(Fe+1)/2)*Be,y:(oe+1)*Ve};return He}},"getPosition");return n.nodes().layoutPositions(this,e,ue),this};JJe={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(Zge,"CircleLayout");Zge.prototype.run=function(){var t=this.options,e=t,r=t.cy,n=e.eles,i=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,a=n.nodes().not(":parent");e.sort&&(a=a.sort(e.sort));for(var s=$s(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=e.sweep===void 0?2*Math.PI-2*Math.PI/a.length:e.sweep,h=u/Math.max(1,a.length-1),f,d=0,p=0;p1&&e.avoidOverlap){d*=1.75;var x=Math.cos(h)-Math.cos(0),b=Math.sin(h)-Math.sin(0),w=Math.sqrt(d*d/(x*x+b*b));f=Math.max(w,f)}var _=o(function(E,L){var C=e.startAngle+L*h*(i?1:-1),A=f*Math.cos(C),I=f*Math.sin(C),D={x:l.x+A,y:l.y+I};return D},"getPos");return n.nodes().layoutPositions(this,e,_),this};eet={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:o(function(e){return e.degree()},"concentric"),levelWidth:o(function(e){return e.maxDegree()/4},"levelWidth"),animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(Jge,"ConcentricLayout");Jge.prototype.run=function(){for(var t=this.options,e=t,r=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,n=t.cy,i=e.eles,a=i.nodes().not(":parent"),s=$s(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=[],h=0,f=0;f0){var T=Math.abs(b[0].value-_.value);T>=v&&(b=[],x.push(b))}b.push(_)}var E=h+e.minNodeSpacing;if(!e.avoidOverlap){var L=x.length>0&&x[0].length>1,C=Math.min(s.w,s.h)/2-E,A=C/(x.length+L?1:0);E=Math.min(E,A)}for(var I=0,D=0;D1&&e.avoidOverlap){var O=Math.cos(S)-Math.cos(0),N=Math.sin(S)-Math.sin(0),P=Math.sqrt(E*E/(O*O+N*N));I=Math.max(P,I)}k.r=I,I+=E}if(e.equidistant){for(var F=0,B=0,$=0;$=t.numIter||(cet(n,t),n.temperature=n.temperature*t.coolingFactor,n.temperature=t.animationThreshold&&a(),m6(d)}},"frame");f()}else{for(;h;)h=s(u),u++;Cme(n,t),l()}return this};G6.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this};G6.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};ret=o(function(e,r,n){for(var i=n.eles.edges(),a=n.eles.nodes(),s=$s(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),l={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:i.size(),temperature:n.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},u=n.eles.components(),h={},f=0;f0){l.graphSet.push(C);for(var f=0;fi.count?0:i.graph},"findLCA"),iet=o(function t(e,r,n,i){var a=i.graphSet[n];if(-10)var d=i.nodeOverlap*f,p=Math.sqrt(l*l+u*u),m=d*l/p,g=d*u/p;else var y=T6(e,l,u),v=T6(r,-1*l,-1*u),x=v.x-y.x,b=v.y-y.y,w=x*x+b*b,p=Math.sqrt(w),d=(e.nodeRepulsion+r.nodeRepulsion)/w,m=d*x/p,g=d*b/p;e.isLocked||(e.offsetX-=m,e.offsetY-=g),r.isLocked||(r.offsetX+=m,r.offsetY+=g)}},"nodeRepulsion"),fet=o(function(e,r,n,i){if(n>0)var a=e.maxX-r.minX;else var a=r.maxX-e.minX;if(i>0)var s=e.maxY-r.minY;else var s=r.maxY-e.minY;return a>=0&&s>=0?Math.sqrt(a*a+s*s):0},"nodesOverlap"),T6=o(function(e,r,n){var i=e.positionX,a=e.positionY,s=e.height||1,l=e.width||1,u=n/r,h=s/l,f={};return r===0&&0n?(f.x=i,f.y=a+s/2,f):0r&&-1*h<=u&&u<=h?(f.x=i-l/2,f.y=a-l*n/2/r,f):0=h)?(f.x=i+s*r/2/n,f.y=a+s/2,f):(0>n&&(u<=-1*h||u>=h)&&(f.x=i-s*r/2/n,f.y=a-s/2),f)},"findClippingPoint"),det=o(function(e,r){for(var n=0;nn){var v=r.gravity*m/y,x=r.gravity*g/y;p.offsetX+=v,p.offsetY+=x}}}}},"calculateGravityForces"),met=o(function(e,r){var n=[],i=0,a=-1;for(n.push.apply(n,e.graphSet[0]),a+=e.graphSet[0].length;i<=a;){var s=n[i++],l=e.idToIndex[s],u=e.layoutNodes[l],h=u.children;if(0n)var a={x:n*e/i,y:n*r/i};else var a={x:e,y:r};return a},"limitForce"),vet=o(function t(e,r){var n=e.parentId;if(n!=null){var i=r.layoutNodes[r.idToIndex[n]],a=!1;if((i.maxX==null||e.maxX+i.padRight>i.maxX)&&(i.maxX=e.maxX+i.padRight,a=!0),(i.minX==null||e.minX-i.padLefti.maxY)&&(i.maxY=e.maxY+i.padBottom,a=!0),(i.minY==null||e.minY-i.padTopx&&(g+=v+r.componentSpacing,m=0,y=0,v=0)}}},"separateComponents"),xet={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:o(function(e){},"position"),sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(t1e,"GridLayout");t1e.prototype.run=function(){var t=this.options,e=t,r=t.cy,n=e.eles,i=n.nodes().not(":parent");e.sort&&(i=i.sort(e.sort));var a=$s(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(a.h===0||a.w===0)n.nodes().layoutPositions(this,e,function(j){return{x:a.x1,y:a.y1}});else{var s=i.size(),l=Math.sqrt(s*a.h/a.w),u=Math.round(l),h=Math.round(a.w/a.h*l),f=o(function(K){if(K==null)return Math.min(u,h);var ie=Math.min(u,h);ie==u?u=K:h=K},"small"),d=o(function(K){if(K==null)return Math.max(u,h);var ie=Math.max(u,h);ie==u?u=K:h=K},"large"),p=e.rows,m=e.cols!=null?e.cols:e.columns;if(p!=null&&m!=null)u=p,h=m;else if(p!=null&&m==null)u=p,h=Math.ceil(s/u);else if(p==null&&m!=null)h=m,u=Math.ceil(s/h);else if(h*u>s){var g=f(),y=d();(g-1)*y>=s?f(g-1):(y-1)*g>=s&&d(y-1)}else for(;h*u=s?d(x+1):f(v+1)}var b=a.w/h,w=a.h/u;if(e.condense&&(b=0,w=0),e.avoidOverlap)for(var _=0;_=h&&(O=0,S++)},"moveToNextCell"),P={},F=0;F(O=Vje(t,e,N[P],N[P+1],N[P+2],N[P+3])))return v(L,O),!0}else if(A.edgeType==="bezier"||A.edgeType==="multibezier"||A.edgeType==="self"||A.edgeType==="compound"){for(var N=A.allpts,P=0;P+5(O=$je(t,e,N[P],N[P+1],N[P+2],N[P+3],N[P+4],N[P+5])))return v(L,O),!0}for(var F=F||C.source,B=B||C.target,$=i.getArrowWidth(I,D),z=[{name:"source",x:A.arrowStartX,y:A.arrowStartY,angle:A.srcArrowAngle},{name:"target",x:A.arrowEndX,y:A.arrowEndY,angle:A.tgtArrowAngle},{name:"mid-source",x:A.midX,y:A.midY,angle:A.midsrcArrowAngle},{name:"mid-target",x:A.midX,y:A.midY,angle:A.midtgtArrowAngle}],P=0;P0&&(x(F),x(B))}o(b,"checkEdge");function w(L,C,A){return Wl(L,C,A)}o(w,"preprop");function _(L,C){var A=L._private,I=p,D;C?D=C+"-":D="",L.boundingBox();var k=A.labelBounds[C||"main"],R=L.pstyle(D+"label").value,S=L.pstyle("text-events").strValue==="yes";if(!(!S||!R)){var O=w(A.rscratch,"labelX",C),N=w(A.rscratch,"labelY",C),P=w(A.rscratch,"labelAngle",C),F=L.pstyle(D+"text-margin-x").pfValue,B=L.pstyle(D+"text-margin-y").pfValue,$=k.x1-I-F,z=k.x2+I-F,W=k.y1-I-B,j=k.y2+I-B;if(P){var K=Math.cos(P),ie=Math.sin(P),Q=o(function(ue,ce){return ue=ue-O,ce=ce-N,{x:ue*K-ce*ie+O,y:ue*ie+ce*K+N}},"rotate"),ee=Q($,W),J=Q($,j),H=Q(z,W),q=Q(z,j),Z=[ee.x+F,ee.y+B,H.x+F,H.y+B,q.x+F,q.y+B,J.x+F,J.y+B];if(Gs(t,e,Z))return v(L),!0}else if(c1(k,t,e))return v(L),!0}}o(_,"checkLabel");for(var T=s.length-1;T>=0;T--){var E=s[T];E.isNode()?x(E)||_(E):b(E)||_(E)||_(E,"source")||_(E,"target")}return l};W0.getAllInBox=function(t,e,r,n){var i=this.getCachedZSortedEles().interactive,a=[],s=Math.min(t,r),l=Math.max(t,r),u=Math.min(e,n),h=Math.max(e,n);t=s,r=l,e=u,n=h;for(var f=$s({x1:t,y1:e,x2:r,y2:n}),d=0;d0?-(Math.PI-e.ang):Math.PI+e.ang},"invertVec"),Cet=o(function(e,r,n,i,a){if(e!==Nme?Rme(r,e,$c):Eet(nl,$c),Rme(r,n,nl),Lme=$c.nx*nl.ny-$c.ny*nl.nx,Dme=$c.nx*nl.nx-$c.ny*-nl.ny,qu=Math.asin(Math.max(-1,Math.min(1,Lme))),Math.abs(qu)<1e-6){WP=r.x,YP=r.y,O0=e1=0;return}P0=1,f6=!1,Dme<0?qu<0?qu=Math.PI+qu:(qu=Math.PI-qu,P0=-1,f6=!0):qu>0&&(P0=-1,f6=!0),r.radius!==void 0?e1=r.radius:e1=i,N0=qu/2,n6=Math.min($c.len/2,nl.len/2),a?(Gc=Math.abs(Math.cos(N0)*e1/Math.sin(N0)),Gc>n6?(Gc=n6,O0=Math.abs(Gc*Math.sin(N0)/Math.cos(N0))):O0=e1):(Gc=Math.min(n6,e1),O0=Math.abs(Gc*Math.sin(N0)/Math.cos(N0))),qP=r.x+nl.nx*Gc,XP=r.y+nl.ny*Gc,WP=qP-nl.ny*O0*P0,YP=XP+nl.nx*O0*P0,a1e=r.x+$c.nx*Gc,s1e=r.y+$c.ny*Gc,Nme=r},"calcCornerArc");o(o1e,"drawPreparedRoundCorner");o(bB,"getRoundCorner");Ga={};Ga.findMidptPtsEtc=function(t,e){var r=e.posPts,n=e.intersectionPts,i=e.vectorNormInverse,a,s=t.pstyle("source-endpoint"),l=t.pstyle("target-endpoint"),u=s.units!=null&&l.units!=null,h=o(function(T,E,L,C){var A=C-E,I=L-T,D=Math.sqrt(I*I+A*A);return{x:-A/D,y:I/D}},"recalcVectorNormInverse"),f=t.pstyle("edge-distances").value;switch(f){case"node-position":a=r;break;case"intersection":a=n;break;case"endpoints":{if(u){var d=this.manualEndptToPx(t.source()[0],s),p=Ul(d,2),m=p[0],g=p[1],y=this.manualEndptToPx(t.target()[0],l),v=Ul(y,2),x=v[0],b=v[1],w={x1:m,y1:g,x2:x,y2:b};i=h(m,g,x,b),a=w}else on("Edge ".concat(t.id()," has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).")),a=n;break}}return{midptPts:a,vectorNormInverse:i}};Ga.findHaystackPoints=function(t){for(var e=0;e0?Math.max(se-Ee,0):Math.min(se+Ee,0)},"subDWH"),R=k(I,C),S=k(D,A),O=!1;b===h?x=Math.abs(R)>Math.abs(S)?i:n:b===u||b===l?(x=n,O=!0):(b===a||b===s)&&(x=i,O=!0);var N=x===n,P=N?S:R,F=N?D:I,B=hge(F),$=!1;!(O&&(_||E))&&(b===l&&F<0||b===u&&F>0||b===a&&F>0||b===s&&F<0)&&(B*=-1,P=B*Math.abs(P),$=!0);var z;if(_){var W=T<0?1+T:T;z=W*P}else{var j=T<0?P:0;z=j+T*B}var K=o(function(se){return Math.abs(se)=Math.abs(P)},"getIsTooClose"),ie=K(z),Q=K(Math.abs(P)-Math.abs(z)),ee=ie||Q;if(ee&&!$)if(N){var J=Math.abs(F)<=p/2,H=Math.abs(I)<=m/2;if(J){var q=(f.x1+f.x2)/2,Z=f.y1,ae=f.y2;r.segpts=[q,Z,q,ae]}else if(H){var ue=(f.y1+f.y2)/2,ce=f.x1,te=f.x2;r.segpts=[ce,ue,te,ue]}else r.segpts=[f.x1,f.y2]}else{var De=Math.abs(F)<=d/2,oe=Math.abs(D)<=g/2;if(De){var ke=(f.y1+f.y2)/2,Fe=f.x1,Be=f.x2;r.segpts=[Fe,ke,Be,ke]}else if(oe){var Ve=(f.x1+f.x2)/2,Ge=f.y1,He=f.y2;r.segpts=[Ve,Ge,Ve,He]}else r.segpts=[f.x2,f.y1]}else if(N){var xe=f.y1+z+(v?p/2*B:0),X=f.x1,fe=f.x2;r.segpts=[X,xe,fe,xe]}else{var he=f.x1+z+(v?d/2*B:0),ge=f.y1,ne=f.y2;r.segpts=[he,ge,he,ne]}if(r.isRound){var ye=t.pstyle("taxi-radius").value,U=t.pstyle("radius-type").value[0]==="arc-radius";r.radii=new Array(r.segpts.length/2).fill(ye),r.isArcRadius=new Array(r.segpts.length/2).fill(U)}};Ga.tryToCorrectInvalidPoints=function(t,e){var r=t._private.rscratch;if(r.edgeType==="bezier"){var n=e.srcPos,i=e.tgtPos,a=e.srcW,s=e.srcH,l=e.tgtW,u=e.tgtH,h=e.srcShape,f=e.tgtShape,d=e.srcCornerRadius,p=e.tgtCornerRadius,m=e.srcRs,g=e.tgtRs,y=!xt(r.startX)||!xt(r.startY),v=!xt(r.arrowStartX)||!xt(r.arrowStartY),x=!xt(r.endX)||!xt(r.endY),b=!xt(r.arrowEndX)||!xt(r.arrowEndY),w=3,_=this.getArrowWidth(t.pstyle("width").pfValue,t.pstyle("arrow-scale").value)*this.arrowShapeWidth,T=w*_,E=G0({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),L=ES.poolIndex()){var O=R;R=S,S=O}var N=A.srcPos=R.position(),P=A.tgtPos=S.position(),F=A.srcW=R.outerWidth(),B=A.srcH=R.outerHeight(),$=A.tgtW=S.outerWidth(),z=A.tgtH=S.outerHeight(),W=A.srcShape=r.nodeShapes[e.getNodeShape(R)],j=A.tgtShape=r.nodeShapes[e.getNodeShape(S)],K=A.srcCornerRadius=R.pstyle("corner-radius").value==="auto"?"auto":R.pstyle("corner-radius").pfValue,ie=A.tgtCornerRadius=S.pstyle("corner-radius").value==="auto"?"auto":S.pstyle("corner-radius").pfValue,Q=A.tgtRs=S._private.rscratch,ee=A.srcRs=R._private.rscratch;A.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var J=0;J0){var ae=a,ue=M0(ae,r1(r)),ce=M0(ae,r1(Z)),te=ue;if(ce2){var De=M0(ae,{x:Z[2],y:Z[3]});De0){var ne=s,ye=M0(ne,r1(r)),U=M0(ne,r1(ge)),Te=ye;if(U2){var se=M0(ne,{x:ge[2],y:ge[3]});se=g||L){v={cp:_,segment:E};break}}if(v)break}var C=v.cp,A=v.segment,I=(g-x)/A.length,D=A.t1-A.t0,k=m?A.t0+D*I:A.t1-D*I;k=Wx(0,k,1),e=i1(C.p0,C.p1,C.p2,k),p=_et(C.p0,C.p1,C.p2,k);break}case"straight":case"segments":case"haystack":{for(var R=0,S,O,N,P,F=n.allpts.length,B=0;B+3=g));B+=2);var $=g-O,z=$/S;z=Wx(0,z,1),e=Nje(N,P,z),p=u1e(N,P);break}}s("labelX",d,e.x),s("labelY",d,e.y),s("labelAutoAngle",d,p)}},"calculateEndProjection");h("source"),h("target"),this.applyLabelDimensions(t)}};Wc.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,"source"),this.applyPrefixedLabelDimensions(t,"target"))};Wc.applyPrefixedLabelDimensions=function(t,e){var r=t._private,n=this.getLabelText(t,e),i=this.calculateLabelDimensions(t,n),a=t.pstyle("line-height").pfValue,s=t.pstyle("text-wrap").strValue,l=Wl(r.rscratch,"labelWrapCachedLines",e)||[],u=s!=="wrap"?1:Math.max(l.length,1),h=i.height/u,f=h*a,d=i.width,p=i.height+(u-1)*(a-1)*h;wf(r.rstyle,"labelWidth",e,d),wf(r.rscratch,"labelWidth",e,d),wf(r.rstyle,"labelHeight",e,p),wf(r.rscratch,"labelHeight",e,p),wf(r.rscratch,"labelLineHeight",e,f)};Wc.getLabelText=function(t,e){var r=t._private,n=e?e+"-":"",i=t.pstyle(n+"label").strValue,a=t.pstyle("text-transform").value,s=o(function(j,K){return K?(wf(r.rscratch,j,e,K),K):Wl(r.rscratch,j,e)},"rscratch");if(!i)return"";a=="none"||(a=="uppercase"?i=i.toUpperCase():a=="lowercase"&&(i=i.toLowerCase()));var l=t.pstyle("text-wrap").value;if(l==="wrap"){var u=s("labelKey");if(u!=null&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var h="\u200B",f=i.split(` -`),d=t.pstyle("text-max-width").pfValue,p=t.pstyle("text-overflow-wrap").value,m=p==="anywhere",g=[],y=/[\s\u200b]+|$/g,v=0;vd){var T=x.matchAll(y),E="",L=0,C=Yme(T),A;try{for(C.s();!(A=C.n()).done;){var I=A.value,D=I[0],k=x.substring(L,I.index);L=I.index+D.length;var R=E.length===0?k:E+k+D,S=this.calculateLabelDimensions(t,R),O=S.width;O<=d?E+=k+D:(E&&g.push(E),E=k+D)}}catch(W){C.e(W)}finally{C.f()}E.match(/^[\s\u200b]+$/)||g.push(E)}else g.push(x)}s("labelWrapCachedLines",g),i=s("labelWrapCachedText",g.join(` -`)),s("labelWrapKey",u)}else if(l==="ellipsis"){var N=t.pstyle("text-max-width").pfValue,P="",F="\u2026",B=!1;if(this.calculateLabelDimensions(t,i).widthN)break;P+=i[$],$===i.length-1&&(B=!0)}return B||(P+=F),P}return i};Wc.getLabelJustification=function(t){var e=t.pstyle("text-justification").strValue,r=t.pstyle("text-halign").strValue;if(e==="auto")if(t.isNode())switch(r){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return e};Wc.calculateLabelDimensions=function(t,e){var r=this,n=r.cy.window(),i=n.document,a=z0(e,t._private.labelDimsKey),s=r.labelDimCache||(r.labelDimCache=[]),l=s[a];if(l!=null)return l;var u=0,h=t.pstyle("font-style").strValue,f=t.pstyle("font-size").pfValue,d=t.pstyle("font-family").strValue,p=t.pstyle("font-weight").strValue,m=this.labelCalcCanvas,g=this.labelCalcCanvasContext;if(!m){m=this.labelCalcCanvas=i.createElement("canvas"),g=this.labelCalcCanvasContext=m.getContext("2d");var y=m.style;y.position="absolute",y.left="-9999px",y.top="-9999px",y.zIndex="-1",y.visibility="hidden",y.pointerEvents="none"}g.font="".concat(h," ").concat(p," ").concat(f,"px ").concat(d);for(var v=0,x=0,b=e.split(` -`),w=0;w1&&arguments[1]!==void 0?arguments[1]:!0;if(e.merge(s),l)for(var u=0;u=t.desktopTapThreshold2}var Tt=i(X);Re&&(t.hoverData.tapholdCancelled=!0);var $e=o(function(){var zt=t.hoverData.dragDelta=t.hoverData.dragDelta||[];zt.length===0?(zt.push(me[0]),zt.push(me[1])):(zt[0]+=me[0],zt[1]+=me[1])},"updateDragDelta");he=!0,n(Ae,["mousemove","vmousemove","tapdrag"],X,{x:U[0],y:U[1]});var rt=o(function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||ge.emit({originalEvent:X,type:"boxstart",position:{x:U[0],y:U[1]}}),Ee[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()},"goIntoBoxMode");if(t.hoverData.which===3){if(Re){var ft={originalEvent:X,type:"cxtdrag",position:{x:U[0],y:U[1]}};Me?Me.emit(ft):ge.emit(ft),t.hoverData.cxtDragged=!0,(!t.hoverData.cxtOver||Ae!==t.hoverData.cxtOver)&&(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit({originalEvent:X,type:"cxtdragout",position:{x:U[0],y:U[1]}}),t.hoverData.cxtOver=Ae,Ae&&Ae.emit({originalEvent:X,type:"cxtdragover",position:{x:U[0],y:U[1]}}))}}else if(t.hoverData.dragging){if(he=!0,ge.panningEnabled()&&ge.userPanningEnabled()){var kt;if(t.hoverData.justStartedPan){var er=t.hoverData.mdownPos;kt={x:(U[0]-er[0])*ne,y:(U[1]-er[1])*ne},t.hoverData.justStartedPan=!1}else kt={x:me[0]*ne,y:me[1]*ne};ge.panBy(kt),ge.emit("dragpan"),t.hoverData.dragged=!0}U=t.projectIntoViewport(X.clientX,X.clientY)}else if(Ee[4]==1&&(Me==null||Me.pannable())){if(Re){if(!t.hoverData.dragging&&ge.boxSelectionEnabled()&&(Tt||!ge.panningEnabled()||!ge.userPanningEnabled()))rt();else if(!t.hoverData.selecting&&ge.panningEnabled()&&ge.userPanningEnabled()){var dt=a(Me,t.hoverData.downs);dt&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,Ee[4]=0,t.data.bgActivePosistion=r1(Te),t.redrawHint("select",!0),t.redraw())}Me&&Me.pannable()&&Me.active()&&Me.unactivate()}}else{if(Me&&Me.pannable()&&Me.active()&&Me.unactivate(),(!Me||!Me.grabbed())&&Ae!=Pe&&(Pe&&n(Pe,["mouseout","tapdragout"],X,{x:U[0],y:U[1]}),Ae&&n(Ae,["mouseover","tapdragover"],X,{x:U[0],y:U[1]}),t.hoverData.last=Ae),Me)if(Re){if(ge.boxSelectionEnabled()&&Tt)Me&&Me.grabbed()&&(v(We),Me.emit("freeon"),We.emit("free"),t.dragData.didDrag&&(Me.emit("dragfreeon"),We.emit("dragfree"))),rt();else if(Me&&Me.grabbed()&&t.nodeIsDraggable(Me)){var Xe=!t.dragData.didDrag;Xe&&t.redrawHint("eles",!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||g(We,{inDragLayer:!0});var ct={x:0,y:0};if(xt(me[0])&&xt(me[1])&&(ct.x+=me[0],ct.y+=me[1],Xe)){var Lt=t.hoverData.dragDelta;Lt&&xt(Lt[0])&&xt(Lt[1])&&(ct.x+=Lt[0],ct.y+=Lt[1])}t.hoverData.draggingEles=!0,We.silentShift(ct).emit("position drag"),t.redrawHint("drag",!0),t.redraw()}}else $e();he=!0}if(Ee[2]=U[0],Ee[3]=U[1],he)return X.stopPropagation&&X.stopPropagation(),X.preventDefault&&X.preventDefault(),!1}},"mousemoveHandler"),!1);var I,D,k;t.registerBinding(e,"mouseup",o(function(X){if(!(t.hoverData.which===1&&X.which!==1&&t.hoverData.capture)){var fe=t.hoverData.capture;if(fe){t.hoverData.capture=!1;var he=t.cy,ge=t.projectIntoViewport(X.clientX,X.clientY),ne=t.selection,ye=t.findNearestElement(ge[0],ge[1],!0,!1),U=t.dragData.possibleDragElements,Te=t.hoverData.down,se=i(X);if(t.data.bgActivePosistion&&(t.redrawHint("select",!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,Te&&Te.unactivate(),t.hoverData.which===3){var Ee={originalEvent:X,type:"cxttapend",position:{x:ge[0],y:ge[1]}};if(Te?Te.emit(Ee):he.emit(Ee),!t.hoverData.cxtDragged){var Ae={originalEvent:X,type:"cxttap",position:{x:ge[0],y:ge[1]}};Te?Te.emit(Ae):he.emit(Ae)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(t.hoverData.which===1){if(n(ye,["mouseup","tapend","vmouseup"],X,{x:ge[0],y:ge[1]}),!t.dragData.didDrag&&!t.hoverData.dragged&&!t.hoverData.selecting&&!t.hoverData.isOverThresholdDrag&&(n(Te,["click","tap","vclick"],X,{x:ge[0],y:ge[1]}),D=!1,X.timeStamp-k<=he.multiClickDebounceTime()?(I&&clearTimeout(I),D=!0,k=null,n(Te,["dblclick","dbltap","vdblclick"],X,{x:ge[0],y:ge[1]})):(I=setTimeout(function(){D||n(Te,["oneclick","onetap","voneclick"],X,{x:ge[0],y:ge[1]})},he.multiClickDebounceTime()),k=X.timeStamp)),Te==null&&!t.dragData.didDrag&&!t.hoverData.selecting&&!t.hoverData.dragged&&!i(X)&&(he.$(r).unselect(["tapunselect"]),U.length>0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=U=he.collection()),ye==Te&&!t.dragData.didDrag&&!t.hoverData.selecting&&ye!=null&&ye._private.selectable&&(t.hoverData.dragging||(he.selectionType()==="additive"||se?ye.selected()?ye.unselect(["tapunselect"]):ye.select(["tapselect"]):se||(he.$(r).unmerge(ye).unselect(["tapunselect"]),ye.select(["tapselect"]))),t.redrawHint("eles",!0)),t.hoverData.selecting){var Pe=he.collection(t.getAllInBox(ne[0],ne[1],ne[2],ne[3]));t.redrawHint("select",!0),Pe.length>0&&t.redrawHint("eles",!0),he.emit({type:"boxend",originalEvent:X,position:{x:ge[0],y:ge[1]}});var Me=o(function(Re){return Re.selectable()&&!Re.selected()},"eleWouldBeSelected");he.selectionType()==="additive"||se||he.$(r).unmerge(Pe).unselect(),Pe.emit("box").stdFilter(Me).select().emit("boxselect"),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!ne[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var me=Te&&Te.grabbed();v(U),me&&(Te.emit("freeon"),U.emit("free"),t.dragData.didDrag&&(Te.emit("dragfreeon"),U.emit("dragfree")))}}ne[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null,t.hoverData.which=null}}},"mouseupHandler"),!1);var R=o(function(X){if(!t.scrollingPage){var fe=t.cy,he=fe.zoom(),ge=fe.pan(),ne=t.projectIntoViewport(X.clientX,X.clientY),ye=[ne[0]*he+ge.x,ne[1]*he+ge.y];if(t.hoverData.draggingEles||t.hoverData.dragging||t.hoverData.cxtStarted||C()){X.preventDefault();return}if(fe.panningEnabled()&&fe.userPanningEnabled()&&fe.zoomingEnabled()&&fe.userZoomingEnabled()){X.preventDefault(),t.data.wheelZooming=!0,clearTimeout(t.data.wheelTimeout),t.data.wheelTimeout=setTimeout(function(){t.data.wheelZooming=!1,t.redrawHint("eles",!0),t.redraw()},150);var U;X.deltaY!=null?U=X.deltaY/-250:X.wheelDeltaY!=null?U=X.wheelDeltaY/1e3:U=X.wheelDelta/1e3,U=U*t.wheelSensitivity;var Te=X.deltaMode===1;Te&&(U*=33);var se=fe.zoom()*Math.pow(10,U);X.type==="gesturechange"&&(se=t.gestureStartZoom*X.scale),fe.zoom({level:se,renderedPosition:{x:ye[0],y:ye[1]}}),fe.emit(X.type==="gesturechange"?"pinchzoom":"scrollzoom")}}},"wheelHandler");t.registerBinding(t.container,"wheel",R,!0),t.registerBinding(e,"scroll",o(function(X){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},"scrollHandler"),!0),t.registerBinding(t.container,"gesturestart",o(function(X){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||X.preventDefault()},"gestureStartHandler"),!0),t.registerBinding(t.container,"gesturechange",function(xe){t.hasTouchStarted||R(xe)},!0),t.registerBinding(t.container,"mouseout",o(function(X){var fe=t.projectIntoViewport(X.clientX,X.clientY);t.cy.emit({originalEvent:X,type:"mouseout",position:{x:fe[0],y:fe[1]}})},"mouseOutHandler"),!1),t.registerBinding(t.container,"mouseover",o(function(X){var fe=t.projectIntoViewport(X.clientX,X.clientY);t.cy.emit({originalEvent:X,type:"mouseover",position:{x:fe[0],y:fe[1]}})},"mouseOverHandler"),!1);var S,O,N,P,F,B,$,z,W,j,K,ie,Q,ee=o(function(X,fe,he,ge){return Math.sqrt((he-X)*(he-X)+(ge-fe)*(ge-fe))},"distance"),J=o(function(X,fe,he,ge){return(he-X)*(he-X)+(ge-fe)*(ge-fe)},"distanceSq"),H;t.registerBinding(t.container,"touchstart",H=o(function(X){if(t.hasTouchStarted=!0,!!A(X)){b(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var fe=t.cy,he=t.touchData.now,ge=t.touchData.earlier;if(X.touches[0]){var ne=t.projectIntoViewport(X.touches[0].clientX,X.touches[0].clientY);he[0]=ne[0],he[1]=ne[1]}if(X.touches[1]){var ne=t.projectIntoViewport(X.touches[1].clientX,X.touches[1].clientY);he[2]=ne[0],he[3]=ne[1]}if(X.touches[2]){var ne=t.projectIntoViewport(X.touches[2].clientX,X.touches[2].clientY);he[4]=ne[0],he[5]=ne[1]}if(X.touches[1]){t.touchData.singleTouchMoved=!0,v(t.dragData.touchDragEles);var ye=t.findContainerClientCoords();W=ye[0],j=ye[1],K=ye[2],ie=ye[3],S=X.touches[0].clientX-W,O=X.touches[0].clientY-j,N=X.touches[1].clientX-W,P=X.touches[1].clientY-j,Q=0<=S&&S<=K&&0<=N&&N<=K&&0<=O&&O<=ie&&0<=P&&P<=ie;var U=fe.pan(),Te=fe.zoom();F=ee(S,O,N,P),B=J(S,O,N,P),$=[(S+N)/2,(O+P)/2],z=[($[0]-U.x)/Te,($[1]-U.y)/Te];var se=200,Ee=se*se;if(B=1){for(var gt=t.touchData.startPosition=[null,null,null,null,null,null],Et=0;Et=t.touchTapThreshold2}if(fe&&t.touchData.cxt){X.preventDefault();var gt=X.touches[0].clientX-W,Et=X.touches[0].clientY-j,vt=X.touches[1].clientX-W,Ye=X.touches[1].clientY-j,Tt=J(gt,Et,vt,Ye),$e=Tt/B,rt=150,ft=rt*rt,kt=1.5,er=kt*kt;if($e>=er||Tt>=ft){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var dt={originalEvent:X,type:"cxttapend",position:{x:ne[0],y:ne[1]}};t.touchData.start?(t.touchData.start.unactivate().emit(dt),t.touchData.start=null):ge.emit(dt)}}if(fe&&t.touchData.cxt){var dt={originalEvent:X,type:"cxtdrag",position:{x:ne[0],y:ne[1]}};t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(dt):ge.emit(dt),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var Xe=t.findNearestElement(ne[0],ne[1],!0,!0);(!t.touchData.cxtOver||Xe!==t.touchData.cxtOver)&&(t.touchData.cxtOver&&t.touchData.cxtOver.emit({originalEvent:X,type:"cxtdragout",position:{x:ne[0],y:ne[1]}}),t.touchData.cxtOver=Xe,Xe&&Xe.emit({originalEvent:X,type:"cxtdragover",position:{x:ne[0],y:ne[1]}}))}else if(fe&&X.touches[2]&&ge.boxSelectionEnabled())X.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||ge.emit({originalEvent:X,type:"boxstart",position:{x:ne[0],y:ne[1]}}),t.touchData.selecting=!0,t.touchData.didSelect=!0,he[4]=1,!he||he.length===0||he[0]===void 0?(he[0]=(ne[0]+ne[2]+ne[4])/3,he[1]=(ne[1]+ne[3]+ne[5])/3,he[2]=(ne[0]+ne[2]+ne[4])/3+1,he[3]=(ne[1]+ne[3]+ne[5])/3+1):(he[2]=(ne[0]+ne[2]+ne[4])/3,he[3]=(ne[1]+ne[3]+ne[5])/3),t.redrawHint("select",!0),t.redraw();else if(fe&&X.touches[1]&&!t.touchData.didSelect&&ge.zoomingEnabled()&&ge.panningEnabled()&&ge.userZoomingEnabled()&&ge.userPanningEnabled()){X.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var ct=t.dragData.touchDragEles;if(ct){t.redrawHint("drag",!0);for(var Lt=0;Lt0&&!t.hoverData.draggingEles&&!t.swipePanning&&t.data.bgActivePosistion!=null&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},"touchmoveHandler"),!1);var Z;t.registerBinding(e,"touchcancel",Z=o(function(X){var fe=t.touchData.start;t.touchData.capture=!1,fe&&fe.unactivate()},"touchcancelHandler"));var ae,ue,ce,te;if(t.registerBinding(e,"touchend",ae=o(function(X){var fe=t.touchData.start,he=t.touchData.capture;if(he)X.touches.length===0&&(t.touchData.capture=!1),X.preventDefault();else return;var ge=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var ne=t.cy,ye=ne.zoom(),U=t.touchData.now,Te=t.touchData.earlier;if(X.touches[0]){var se=t.projectIntoViewport(X.touches[0].clientX,X.touches[0].clientY);U[0]=se[0],U[1]=se[1]}if(X.touches[1]){var se=t.projectIntoViewport(X.touches[1].clientX,X.touches[1].clientY);U[2]=se[0],U[3]=se[1]}if(X.touches[2]){var se=t.projectIntoViewport(X.touches[2].clientX,X.touches[2].clientY);U[4]=se[0],U[5]=se[1]}fe&&fe.unactivate();var Ee;if(t.touchData.cxt){if(Ee={originalEvent:X,type:"cxttapend",position:{x:U[0],y:U[1]}},fe?fe.emit(Ee):ne.emit(Ee),!t.touchData.cxtDragged){var Ae={originalEvent:X,type:"cxttap",position:{x:U[0],y:U[1]}};fe?fe.emit(Ae):ne.emit(Ae)}t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,t.redraw();return}if(!X.touches[2]&&ne.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var Pe=ne.collection(t.getAllInBox(ge[0],ge[1],ge[2],ge[3]));ge[0]=void 0,ge[1]=void 0,ge[2]=void 0,ge[3]=void 0,ge[4]=0,t.redrawHint("select",!0),ne.emit({type:"boxend",originalEvent:X,position:{x:U[0],y:U[1]}});var Me=o(function(ft){return ft.selectable()&&!ft.selected()},"eleWouldBeSelected");Pe.emit("box").stdFilter(Me).select().emit("boxselect"),Pe.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if(fe?.unactivate(),X.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(!X.touches[1]){if(!X.touches[0]){if(!X.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var me=t.dragData.touchDragEles;if(fe!=null){var We=fe._private.grabbed;v(me),t.redrawHint("drag",!0),t.redrawHint("eles",!0),We&&(fe.emit("freeon"),me.emit("free"),t.dragData.didDrag&&(fe.emit("dragfreeon"),me.emit("dragfree"))),n(fe,["touchend","tapend","vmouseup","tapdragout"],X,{x:U[0],y:U[1]}),fe.unactivate(),t.touchData.start=null}else{var Re=t.findNearestElement(U[0],U[1],!0,!0);n(Re,["touchend","tapend","vmouseup","tapdragout"],X,{x:U[0],y:U[1]})}var tt=t.touchData.startPosition[0]-U[0],gt=tt*tt,Et=t.touchData.startPosition[1]-U[1],vt=Et*Et,Ye=gt+vt,Tt=Ye*ye*ye;t.touchData.singleTouchMoved||(fe||ne.$(":selected").unselect(["tapunselect"]),n(fe,["tap","vclick"],X,{x:U[0],y:U[1]}),ue=!1,X.timeStamp-te<=ne.multiClickDebounceTime()?(ce&&clearTimeout(ce),ue=!0,te=null,n(fe,["dbltap","vdblclick"],X,{x:U[0],y:U[1]})):(ce=setTimeout(function(){ue||n(fe,["onetap","voneclick"],X,{x:U[0],y:U[1]})},ne.multiClickDebounceTime()),te=X.timeStamp)),fe!=null&&!t.dragData.didDrag&&fe._private.selectable&&Tt"u"){var De=[],oe=o(function(X){return{clientX:X.clientX,clientY:X.clientY,force:1,identifier:X.pointerId,pageX:X.pageX,pageY:X.pageY,radiusX:X.width/2,radiusY:X.height/2,screenX:X.screenX,screenY:X.screenY,target:X.target}},"makeTouch"),ke=o(function(X){return{event:X,touch:oe(X)}},"makePointer"),Fe=o(function(X){De.push(ke(X))},"addPointer"),Be=o(function(X){for(var fe=0;fe0)return W[0]}return null},"getCurveT"),g=Object.keys(p),y=0;y0?m:pge(a,s,e,r,n,i,l,u)},"intersectLine"),checkPoint:o(function(e,r,n,i,a,s,l,u){u=u==="auto"?$0(i,a):u;var h=2*u;if(ju(e,r,this.points,s,l,i,a-h,[0,-1],n)||ju(e,r,this.points,s,l,i-h,a,[0,-1],n))return!0;var f=i/2+2*n,d=a/2+2*n,p=[s-f,l-d,s-f,l,s+f,l,s+f,l-d];return!!(Gs(e,r,p)||B0(e,r,h,h,s+i/2-u,l+a/2-u,n)||B0(e,r,h,h,s-i/2+u,l+a/2-u,n))},"checkPoint")}};Qu.registerNodeShapes=function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",ls(3,0)),this.generateRoundPolygon("round-triangle",ls(3,0)),this.generatePolygon("rectangle",ls(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",r),this.generateRoundPolygon("round-diamond",r)}this.generatePolygon("pentagon",ls(5,0)),this.generateRoundPolygon("round-pentagon",ls(5,0)),this.generatePolygon("hexagon",ls(6,0)),this.generateRoundPolygon("round-hexagon",ls(6,0)),this.generatePolygon("heptagon",ls(7,0)),this.generateRoundPolygon("round-heptagon",ls(7,0)),this.generatePolygon("octagon",ls(8,0)),this.generateRoundPolygon("round-octagon",ls(8,0));var n=new Array(20);{var i=BP(5,0),a=BP(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var l=0;l=e.deqFastCost*_)break}else if(h){if(b>=e.deqCost*m||b>=e.deqAvgCost*p)break}else if(w>=e.deqNoDrawCost*IP)break;var T=e.deq(n,v,y);if(T.length>0)for(var E=0;E0&&(e.onDeqd(n,g),!h&&e.shouldRedraw(n,g,v,y)&&a())},"dequeue"),l=e.priority||iB;i.beforeRender(s,l(n))}},"setupDequeueingImpl")},"setupDequeueing")},Det=function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:g6;JP(this,t),this.idsByKey=new Uc,this.keyForId=new Uc,this.cachesByLvl=new Uc,this.lvls=[],this.getKey=e,this.doesEleInvalidateKey=r}return o(t,"ElementTextureCacheLookup"),eB(t,[{key:"getIdsFor",value:o(function(r){r==null&&hi("Can not get id list for null key");var n=this.idsByKey,i=this.idsByKey.get(r);return i||(i=new f1,n.set(r,i)),i},"getIdsFor")},{key:"addIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).add(n)},"addIdForKey")},{key:"deleteIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).delete(n)},"deleteIdForKey")},{key:"getNumberOfIdsForKey",value:o(function(r){return r==null?0:this.getIdsFor(r).size},"getNumberOfIdsForKey")},{key:"updateKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);this.deleteIdForKey(i,n),this.addIdForKey(a,n),this.keyForId.set(n,a)},"updateKeyMappingFor")},{key:"deleteKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteIdForKey(i,n),this.keyForId.delete(n)},"deleteKeyMappingFor")},{key:"keyHasChangedFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);return i!==a},"keyHasChangedFor")},{key:"isInvalid",value:o(function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)},"isInvalid")},{key:"getCachesAt",value:o(function(r){var n=this.cachesByLvl,i=this.lvls,a=n.get(r);return a||(a=new Uc,n.set(r,a),i.push(r)),a},"getCachesAt")},{key:"getCache",value:o(function(r,n){return this.getCachesAt(n).get(r)},"getCache")},{key:"get",value:o(function(r,n){var i=this.getKey(r),a=this.getCache(i,n);return a!=null&&this.updateKeyMappingFor(r),a},"get")},{key:"getForCachedKey",value:o(function(r,n){var i=this.keyForId.get(r.id()),a=this.getCache(i,n);return a},"getForCachedKey")},{key:"hasCache",value:o(function(r,n){return this.getCachesAt(n).has(r)},"hasCache")},{key:"has",value:o(function(r,n){var i=this.getKey(r);return this.hasCache(i,n)},"has")},{key:"setCache",value:o(function(r,n,i){i.key=r,this.getCachesAt(n).set(r,i)},"setCache")},{key:"set",value:o(function(r,n,i){var a=this.getKey(r);this.setCache(a,n,i),this.updateKeyMappingFor(r)},"set")},{key:"deleteCache",value:o(function(r,n){this.getCachesAt(n).delete(r)},"deleteCache")},{key:"delete",value:o(function(r,n){var i=this.getKey(r);this.deleteCache(i,n)},"_delete")},{key:"invalidateKey",value:o(function(r){var n=this;this.lvls.forEach(function(i){return n.deleteCache(r,i)})},"invalidateKey")},{key:"invalidate",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteKeyMappingFor(r);var a=this.doesEleInvalidateKey(r);return a&&this.invalidateKey(i),a||this.getNumberOfIdsForKey(i)===0},"invalidate")}]),t}(),Pme=25,i6=50,d6=-4,jP=3,Net=7.99,Ret=8,Met=1024,Iet=1024,Oet=1024,Pet=.2,Bet=.8,Fet=10,zet=.15,Get=.1,$et=.9,Vet=.9,Uet=100,Het=1,n1={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},Wet=wa({getKey:null,doesEleInvalidateKey:g6,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:sge,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),Fx=o(function(e,r){var n=this;n.renderer=e,n.onDequeues=[];var i=Wet(r);ir(n,i),n.lookup=new Det(i.getKey,i.doesEleInvalidateKey),n.setupDequeueing()},"ElementTextureCache"),qi=Fx.prototype;qi.reasons=n1;qi.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]};qi.getRetiredTextureQueue=function(t){var e=this,r=e.eleImgCaches.retired=e.eleImgCaches.retired||{},n=r[t]=r[t]||[];return n};qi.getElementQueue=function(){var t=this,e=t.eleCacheQueue=t.eleCacheQueue||new tb(function(r,n){return n.reqs-r.reqs});return e};qi.getElementKeyToQueue=function(){var t=this,e=t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{};return e};qi.getElement=function(t,e,r,n,i){var a=this,s=this.renderer,l=s.cy.zoom(),u=this.lookup;if(!e||e.w===0||e.h===0||isNaN(e.w)||isNaN(e.h)||!t.visible()||t.removed()||!a.allowEdgeTxrCaching&&t.isEdge()||!a.allowParentTxrCaching&&t.isParent())return null;if(n==null&&(n=Math.ceil(sB(l*r))),n=Net||n>jP)return null;var h=Math.pow(2,n),f=e.h*h,d=e.w*h,p=s.eleTextBiggerThanMin(t,h);if(!this.isVisible(t,p))return null;var m=u.get(t,n);if(m&&m.invalidated&&(m.invalidated=!1,m.texture.invalidatedWidth-=m.width),m)return m;var g;if(f<=Pme?g=Pme:f<=i6?g=i6:g=Math.ceil(f/i6)*i6,f>Oet||d>Iet)return null;var y=a.getTextureQueue(g),v=y[y.length-2],x=o(function(){return a.recycleTexture(g,d)||a.addTexture(g,d)},"addNewTxr");v||(v=y[y.length-1]),v||(v=x()),v.width-v.usedWidthn;D--)A=a.getElement(t,e,r,D,n1.downscale);I()}else return a.queueElement(t,E.level-1),E;else{var k;if(!w&&!_&&!T)for(var R=n-1;R>=d6;R--){var S=u.get(t,R);if(S){k=S;break}}if(b(k))return a.queueElement(t,n),k;v.context.translate(v.usedWidth,0),v.context.scale(h,h),this.drawElement(v.context,t,e,p,!1),v.context.scale(1/h,1/h),v.context.translate(-v.usedWidth,0)}return m={x:v.usedWidth,texture:v,level:n,scale:h,width:d,height:f,scaledLabelShown:p},v.usedWidth+=Math.ceil(d+Ret),v.eleCaches.push(m),u.set(t,n,m),a.checkTextureFullness(v),m};qi.invalidateElements=function(t){for(var e=0;e=Pet*t.width&&this.retireTexture(t)};qi.checkTextureFullness=function(t){var e=this,r=e.getTextureQueue(t.height);t.usedWidth/t.width>Bet&&t.fullnessChecks>=Fet?Cf(r,t):t.fullnessChecks++};qi.retireTexture=function(t){var e=this,r=t.height,n=e.getTextureQueue(r),i=this.lookup;Cf(n,t),t.retired=!0;for(var a=t.eleCaches,s=0;s=e)return s.retired=!1,s.usedWidth=0,s.invalidatedWidth=0,s.fullnessChecks=0,aB(s.eleCaches),s.context.setTransform(1,0,0,1,0,0),s.context.clearRect(0,0,s.width,s.height),Cf(i,s),n.push(s),s}};qi.queueElement=function(t,e){var r=this,n=r.getElementQueue(),i=r.getElementKeyToQueue(),a=this.getKey(t),s=i[a];if(s)s.level=Math.max(s.level,e),s.eles.merge(t),s.reqs++,n.updateItem(s);else{var l={eles:t.spawn().merge(t),level:e,reqs:1,key:a};n.push(l),i[a]=l}};qi.dequeue=function(t){for(var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),i=[],a=e.lookup,s=0;s0;s++){var l=r.pop(),u=l.key,h=l.eles[0],f=a.hasCache(h,l.level);if(n[u]=null,f)continue;i.push(l);var d=e.getBoundingBox(h);e.getElement(h,d,t,l.level,n1.dequeue)}return i};qi.removeFromQueue=function(t){var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),i=this.getKey(t),a=n[i];a!=null&&(a.eles.length===1?(a.reqs=nB,r.updateItem(a),r.pop(),n[i]=null):a.eles.unmerge(t))};qi.onDequeue=function(t){this.onDequeues.push(t)};qi.offDequeue=function(t){Cf(this.onDequeues,t)};qi.setupDequeueing=m1e.setupDequeueing({deqRedrawThreshold:Uet,deqCost:zet,deqAvgCost:Get,deqNoDrawCost:$et,deqFastCost:Vet,deq:o(function(e,r,n){return e.dequeue(r,n)},"deq"),onDeqd:o(function(e,r){for(var n=0;n=qet||r>E6)return null}n.validateLayersElesOrdering(r,t);var u=n.layersByLevel,h=Math.pow(2,r),f=u[r]=u[r]||[],d,p=n.levelIsComplete(r,t),m,g=o(function(){var I=o(function(O){if(n.validateLayersElesOrdering(O,t),n.levelIsComplete(O,t))return m=u[O],!0},"canUseAsTmpLvl"),D=o(function(O){if(!m)for(var N=r+O;Gx<=N&&N<=E6&&!I(N);N+=O);},"checkLvls");D(1),D(-1);for(var k=f.length-1;k>=0;k--){var R=f[k];R.invalid&&Cf(f,R)}},"checkTempLevels");if(!p)g();else return f;var y=o(function(){if(!d){d=$s();for(var I=0;Ittt)return null;var R=n.makeLayer(d,r);if(D!=null){var S=f.indexOf(D)+1;f.splice(S,0,R)}else(I.insert===void 0||I.insert)&&f.unshift(R);return R},"makeLayer");if(n.skipping&&!l)return null;for(var x=null,b=t.length/Yet,w=!l,_=0;_=b||!dge(x.bb,T.boundingBox()))&&(x=v({insert:!0,after:x}),!x))return null;m||w?n.queueLayer(x,T):n.drawEleInLayer(x,T,r,e),x.eles.push(T),L[r]=x}return m||(w?null:f)};Ta.getEleLevelForLayerLevel=function(t,e){return t};Ta.drawEleInLayer=function(t,e,r,n){var i=this,a=this.renderer,s=t.context,l=e.boundingBox();l.w===0||l.h===0||!e.visible()||(r=i.getEleLevelForLayerLevel(r,n),a.setImgSmoothing(s,!1),a.drawCachedElement(s,e,null,null,r,rtt),a.setImgSmoothing(s,!0))};Ta.levelIsComplete=function(t,e){var r=this,n=r.layersByLevel[t];if(!n||n.length===0)return!1;for(var i=0,a=0;a0||s.invalid)return!1;i+=s.eles.length}return i===e.length};Ta.validateLayersElesOrdering=function(t,e){var r=this.layersByLevel[t];if(r)for(var n=0;n0){e=!0;break}}return e};Ta.invalidateElements=function(t){var e=this;t.length!==0&&(e.lastInvalidationTime=Xu(),!(t.length===0||!e.haveLayers())&&e.updateElementsInLayers(t,o(function(n,i,a){e.invalidateLayer(n)},"invalAssocLayers")))};Ta.invalidateLayer=function(t){if(this.lastInvalidationTime=Xu(),!t.invalid){var e=t.level,r=t.eles,n=this.layersByLevel[e];Cf(n,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var i=0;i3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l=e._private.rscratch;if(!(a&&!e.visible())&&!(l.badLine||l.allpts==null||isNaN(l.allpts[0]))){var u;r&&(u=r,t.translate(-u.x1,-u.y1));var h=a?e.pstyle("opacity").value:1,f=a?e.pstyle("line-opacity").value:1,d=e.pstyle("curve-style").value,p=e.pstyle("line-style").value,m=e.pstyle("width").pfValue,g=e.pstyle("line-cap").value,y=e.pstyle("line-outline-width").value,v=e.pstyle("line-outline-color").value,x=h*f,b=h*f,w=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;d==="straight-triangle"?(s.eleStrokeStyle(t,e,O),s.drawEdgeTrianglePath(e,t,l.allpts)):(t.lineWidth=m,t.lineCap=g,s.eleStrokeStyle(t,e,O),s.drawEdgePath(e,t,l.allpts,p),t.lineCap="butt")},"drawLine"),_=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;if(t.lineWidth=m+y,t.lineCap=g,y>0)s.colorStrokeStyle(t,v[0],v[1],v[2],O);else{t.lineCap="butt";return}d==="straight-triangle"?s.drawEdgeTrianglePath(e,t,l.allpts):(s.drawEdgePath(e,t,l.allpts,p),t.lineCap="butt")},"drawLineOutline"),T=o(function(){i&&s.drawEdgeOverlay(t,e)},"drawOverlay"),E=o(function(){i&&s.drawEdgeUnderlay(t,e)},"drawUnderlay"),L=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:b;s.drawArrowheads(t,e,O)},"drawArrows"),C=o(function(){s.drawElementText(t,e,null,n)},"drawText");t.lineJoin="round";var A=e.pstyle("ghost").value==="yes";if(A){var I=e.pstyle("ghost-offset-x").pfValue,D=e.pstyle("ghost-offset-y").pfValue,k=e.pstyle("ghost-opacity").value,R=x*k;t.translate(I,D),w(R),L(R),t.translate(-I,-D)}else _();E(),w(),L(),T(),C(),r&&t.translate(u.x1,u.y1)}};v1e=o(function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,n){if(n.visible()){var i=n.pstyle("".concat(e,"-opacity")).value;if(i!==0){var a=this,s=a.usePaths(),l=n._private.rscratch,u=n.pstyle("".concat(e,"-padding")).pfValue,h=2*u,f=n.pstyle("".concat(e,"-color")).value;r.lineWidth=h,l.edgeType==="self"&&!s?r.lineCap="butt":r.lineCap="round",a.colorStrokeStyle(r,f[0],f[1],f[2],i),a.drawEdgePath(n,r,l.allpts,"solid")}}}},"drawEdgeOverlayUnderlay");Zu.drawEdgeOverlay=v1e("overlay");Zu.drawEdgeUnderlay=v1e("underlay");Zu.drawEdgePath=function(t,e,r,n){var i=t._private.rscratch,a=e,s,l=!1,u=this.usePaths(),h=t.pstyle("line-dash-pattern").pfValue,f=t.pstyle("line-dash-offset").pfValue;if(u){var d=r.join("$"),p=i.pathCacheKey&&i.pathCacheKey===d;p?(s=e=i.pathCache,l=!0):(s=e=new Path2D,i.pathCacheKey=d,i.pathCache=s)}if(a.setLineDash)switch(n){case"dotted":a.setLineDash([1,1]);break;case"dashed":a.setLineDash(h),a.lineDashOffset=f;break;case"solid":a.setLineDash([]);break}if(!l&&!i.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(r[0],r[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var m=2;m+35&&arguments[5]!==void 0?arguments[5]:!0,s=this;if(n==null){if(a&&!s.eleTextBiggerThanMin(e))return}else if(n===!1)return;if(e.isNode()){var l=e.pstyle("label");if(!l||!l.value)return;var u=s.getLabelJustification(e);t.textAlign=u,t.textBaseline="bottom"}else{var h=e.element()._private.rscratch.badLine,f=e.pstyle("label"),d=e.pstyle("source-label"),p=e.pstyle("target-label");if(h||(!f||!f.value)&&(!d||!d.value)&&(!p||!p.value))return;t.textAlign="center",t.textBaseline="bottom"}var m=!r,g;r&&(g=r,t.translate(-g.x1,-g.y1)),i==null?(s.drawText(t,e,null,m,a),e.isEdge()&&(s.drawText(t,e,"source",m,a),s.drawText(t,e,"target",m,a))):s.drawText(t,e,i,m,a),r&&t.translate(g.x1,g.y1)};Y0.getFontCache=function(t){var e;this.fontCaches=this.fontCaches||[];for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!0,n=e.pstyle("font-style").strValue,i=e.pstyle("font-size").pfValue+"px",a=e.pstyle("font-family").strValue,s=e.pstyle("font-weight").strValue,l=r?e.effectiveOpacity()*e.pstyle("text-opacity").value:1,u=e.pstyle("text-outline-opacity").value*l,h=e.pstyle("color").value,f=e.pstyle("text-outline-color").value;t.font=n+" "+s+" "+i+" "+a,t.lineJoin="round",this.colorFillStyle(t,h[0],h[1],h[2],l),this.colorStrokeStyle(t,f[0],f[1],f[2],u)};o(PP,"roundRect");Y0.getTextAngle=function(t,e){var r,n=t._private,i=n.rscratch,a=e?e+"-":"",s=t.pstyle(a+"text-rotation"),l=Wl(i,"labelAngle",e);return s.strValue==="autorotate"?r=t.isEdge()?l:0:s.strValue==="none"?r=0:r=s.pfValue,r};Y0.drawText=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=e._private,s=a.rscratch,l=i?e.effectiveOpacity():1;if(!(i&&(l===0||e.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var u=Wl(s,"labelX",r),h=Wl(s,"labelY",r),f,d,p=this.getLabelText(e,r);if(p!=null&&p!==""&&!isNaN(u)&&!isNaN(h)){this.setupTextStyle(t,e,i);var m=r?r+"-":"",g=Wl(s,"labelWidth",r),y=Wl(s,"labelHeight",r),v=e.pstyle(m+"text-margin-x").pfValue,x=e.pstyle(m+"text-margin-y").pfValue,b=e.isEdge(),w=e.pstyle("text-halign").value,_=e.pstyle("text-valign").value;b&&(w="center",_="center"),u+=v,h+=x;var T;switch(n?T=this.getTextAngle(e,r):T=0,T!==0&&(f=u,d=h,t.translate(f,d),t.rotate(T),u=0,h=0),_){case"top":break;case"center":h+=y/2;break;case"bottom":h+=y;break}var E=e.pstyle("text-background-opacity").value,L=e.pstyle("text-border-opacity").value,C=e.pstyle("text-border-width").pfValue,A=e.pstyle("text-background-padding").pfValue,I=e.pstyle("text-background-shape").strValue,D=I.indexOf("round")===0,k=2;if(E>0||C>0&&L>0){var R=u-A;switch(w){case"left":R-=g;break;case"center":R-=g/2;break}var S=h-y-A,O=g+2*A,N=y+2*A;if(E>0){var P=t.fillStyle,F=e.pstyle("text-background-color").value;t.fillStyle="rgba("+F[0]+","+F[1]+","+F[2]+","+E*l+")",D?PP(t,R,S,O,N,k):t.fillRect(R,S,O,N),t.fillStyle=P}if(C>0&&L>0){var B=t.strokeStyle,$=t.lineWidth,z=e.pstyle("text-border-color").value,W=e.pstyle("text-border-style").value;if(t.strokeStyle="rgba("+z[0]+","+z[1]+","+z[2]+","+L*l+")",t.lineWidth=C,t.setLineDash)switch(W){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=C/4,t.setLineDash([]);break;case"solid":t.setLineDash([]);break}if(D?PP(t,R,S,O,N,k,"stroke"):t.strokeRect(R,S,O,N),W==="double"){var j=C/2;D?PP(t,R+j,S+j,O-j*2,N-j*2,k,"stroke"):t.strokeRect(R+j,S+j,O-j*2,N-j*2)}t.setLineDash&&t.setLineDash([]),t.lineWidth=$,t.strokeStyle=B}}var K=2*e.pstyle("text-outline-width").pfValue;if(K>0&&(t.lineWidth=K),e.pstyle("text-wrap").value==="wrap"){var ie=Wl(s,"labelWrapCachedLines",r),Q=Wl(s,"labelLineHeight",r),ee=g/2,J=this.getLabelJustification(e);switch(J==="auto"||(w==="left"?J==="left"?u+=-g:J==="center"&&(u+=-ee):w==="center"?J==="left"?u+=-ee:J==="right"&&(u+=ee):w==="right"&&(J==="center"?u+=ee:J==="right"&&(u+=g))),_){case"top":h-=(ie.length-1)*Q;break;case"center":case"bottom":h-=(ie.length-1)*Q;break}for(var H=0;H0&&t.strokeText(ie[H],u,h),t.fillText(ie[H],u,h),h+=Q}else K>0&&t.strokeText(p,u,h),t.fillText(p,u,h);T!==0&&(t.rotate(-T),t.translate(-f,-d))}}};w1={};w1.drawNode=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l,u,h=e._private,f=h.rscratch,d=e.position();if(!(!xt(d.x)||!xt(d.y))&&!(a&&!e.visible())){var p=a?e.effectiveOpacity():1,m=s.usePaths(),g,y=!1,v=e.padding();l=e.width()+2*v,u=e.height()+2*v;var x;r&&(x=r,t.translate(-x.x1,-x.y1));for(var b=e.pstyle("background-image"),w=b.value,_=new Array(w.length),T=new Array(w.length),E=0,L=0;L0&&arguments[0]!==void 0?arguments[0]:R;s.eleFillStyle(t,e,ye)},"setupShapeColor"),H=o(function(){var ye=arguments.length>0&&arguments[0]!==void 0?arguments[0]:z;s.colorStrokeStyle(t,S[0],S[1],S[2],ye)},"setupBorderColor"),q=o(function(){var ye=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ie;s.colorStrokeStyle(t,j[0],j[1],j[2],ye)},"setupOutlineColor"),Z=o(function(ye,U,Te,se){var Ee=s.nodePathCache=s.nodePathCache||[],Ae=age(Te==="polygon"?Te+","+se.join(","):Te,""+U,""+ye,""+ee),Pe=Ee[Ae],Me,me=!1;return Pe!=null?(Me=Pe,me=!0,f.pathCache=Me):(Me=new Path2D,Ee[Ae]=f.pathCache=Me),{path:Me,cacheHit:me}},"getPath"),ae=e.pstyle("shape").strValue,ue=e.pstyle("shape-polygon-points").pfValue;if(m){t.translate(d.x,d.y);var ce=Z(l,u,ae,ue);g=ce.path,y=ce.cacheHit}var te=o(function(){if(!y){var ye=d;m&&(ye={x:0,y:0}),s.nodeShapes[s.getNodeShape(e)].draw(g||t,ye.x,ye.y,l,u,ee,f)}m?t.fill(g):t.fill()},"drawShape"),De=o(function(){for(var ye=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,U=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,Te=h.backgrounding,se=0,Ee=0;Ee0&&arguments[0]!==void 0?arguments[0]:!1,U=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasPie(e)&&(s.drawPie(t,e,U),ye&&(m||s.nodeShapes[s.getNodeShape(e)].draw(t,d.x,d.y,l,u,ee,f)))},"drawPie"),ke=o(function(){var ye=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,U=(D>0?D:-D)*ye,Te=D>0?0:255;D!==0&&(s.colorFillStyle(t,Te,Te,Te,U),m?t.fill(g):t.fill())},"darken"),Fe=o(function(){if(k>0){if(t.lineWidth=k,t.lineCap=P,t.lineJoin=N,t.setLineDash)switch(O){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash(B),t.lineDashOffset=$;break;case"solid":case"double":t.setLineDash([]);break}if(F!=="center"){if(t.save(),t.lineWidth*=2,F==="inside")m?t.clip(g):t.clip();else{var ye=new Path2D;ye.rect(-l/2-k,-u/2-k,l+2*k,u+2*k),ye.addPath(g),t.clip(ye,"evenodd")}m?t.stroke(g):t.stroke(),t.restore()}else m?t.stroke(g):t.stroke();if(O==="double"){t.lineWidth=k/3;var U=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",m?t.stroke(g):t.stroke(),t.globalCompositeOperation=U}t.setLineDash&&t.setLineDash([])}},"drawBorder"),Be=o(function(){if(W>0){if(t.lineWidth=W,t.lineCap="butt",t.setLineDash)switch(K){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([]);break}var ye=d;m&&(ye={x:0,y:0});var U=s.getNodeShape(e),Te=k;F==="inside"&&(Te=0),F==="outside"&&(Te*=2);var se=(l+Te+(W+Q))/l,Ee=(u+Te+(W+Q))/u,Ae=l*se,Pe=u*Ee,Me=s.nodeShapes[U].points,me;if(m){var We=Z(Ae,Pe,U,Me);me=We.path}if(U==="ellipse")s.drawEllipsePath(me||t,ye.x,ye.y,Ae,Pe);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(U)){var Re=0,tt=0,gt=0;U==="round-diamond"?Re=(Te+Q+W)*1.4:U==="round-heptagon"?(Re=(Te+Q+W)*1.075,gt=-(Te/2+Q+W)/35):U==="round-hexagon"?Re=(Te+Q+W)*1.12:U==="round-pentagon"?(Re=(Te+Q+W)*1.13,gt=-(Te/2+Q+W)/15):U==="round-tag"?(Re=(Te+Q+W)*1.12,tt=(Te/2+W+Q)*.07):U==="round-triangle"&&(Re=(Te+Q+W)*(Math.PI/2),gt=-(Te+Q/2+W)/Math.PI),Re!==0&&(se=(l+Re)/l,Ae=l*se,["round-hexagon","round-tag"].includes(U)||(Ee=(u+Re)/u,Pe=u*Ee)),ee=ee==="auto"?gge(Ae,Pe):ee;for(var Et=Ae/2,vt=Pe/2,Ye=ee+(Te+W+Q)/2,Tt=new Array(Me.length/2),$e=new Array(Me.length/2),rt=0;rt0){if(i=i||n.position(),a==null||s==null){var m=n.padding();a=n.width()+2*m,s=n.height()+2*m}l.colorFillStyle(r,f[0],f[1],f[2],h),l.nodeShapes[d].draw(r,i.x,i.y,a+u*2,s+u*2,p),r.fill()}}}},"drawNodeOverlayUnderlay");w1.drawNodeOverlay=x1e("overlay");w1.drawNodeUnderlay=x1e("underlay");w1.hasPie=function(t){return t=t[0],t._private.hasPie};w1.drawPie=function(t,e,r,n){e=e[0],n=n||e.position();var i=e.cy().style(),a=e.pstyle("pie-size"),s=n.x,l=n.y,u=e.width(),h=e.height(),f=Math.min(u,h)/2,d=0,p=this.usePaths();p&&(s=0,l=0),a.units==="%"?f=f*a.pfValue:a.pfValue!==void 0&&(f=a.pfValue/2);for(var m=1;m<=i.pieBackgroundN;m++){var g=e.pstyle("pie-"+m+"-background-size").value,y=e.pstyle("pie-"+m+"-background-color").value,v=e.pstyle("pie-"+m+"-background-opacity").value*r,x=g/100;x+d>1&&(x=1-d);var b=1.5*Math.PI+2*Math.PI*d,w=2*Math.PI*x,_=b+w;g===0||d>=1||d+x>1||(t.beginPath(),t.moveTo(s,l),t.arc(s,l,f,b,_),t.closePath(),this.colorFillStyle(t,y[0],y[1],y[2],v),t.fill(),d+=x)}};mo={},dtt=100;mo.getPixelRatio=function(){var t=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var e=this.cy.window(),r=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(e.devicePixelRatio||1)/r};mo.paintCache=function(t){for(var e=this.paintCaches=this.paintCaches||[],r=!0,n,i=0;is.minMbLowQualFrames&&(s.motionBlurPxRatio=s.mbPxRBlurry)),s.clearingMotionBlur&&(s.motionBlurPxRatio=1),s.textureDrawLastFrame&&!d&&(f[s.NODE]=!0,f[s.SELECT_BOX]=!0);var b=u.style(),w=u.zoom(),_=i!==void 0?i:w,T=u.pan(),E={x:T.x,y:T.y},L={zoom:w,pan:{x:T.x,y:T.y}},C=s.prevViewport,A=C===void 0||L.zoom!==C.zoom||L.pan.x!==C.pan.x||L.pan.y!==C.pan.y;!A&&!(y&&!g)&&(s.motionBlurPxRatio=1),a&&(E=a),_*=l,E.x*=l,E.y*=l;var I=s.getCachedZSortedEles();function D(ce,te,De,oe,ke){var Fe=ce.globalCompositeOperation;ce.globalCompositeOperation="destination-out",s.colorFillStyle(ce,255,255,255,s.motionBlurTransparency),ce.fillRect(te,De,oe,ke),ce.globalCompositeOperation=Fe}o(D,"mbclear");function k(ce,te){var De,oe,ke,Fe;!s.clearingMotionBlur&&(ce===h.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]||ce===h.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG])?(De={x:T.x*m,y:T.y*m},oe=w*m,ke=s.canvasWidth*m,Fe=s.canvasHeight*m):(De=E,oe=_,ke=s.canvasWidth,Fe=s.canvasHeight),ce.setTransform(1,0,0,1,0,0),te==="motionBlur"?D(ce,0,0,ke,Fe):!e&&(te===void 0||te)&&ce.clearRect(0,0,ke,Fe),r||(ce.translate(De.x,De.y),ce.scale(oe,oe)),a&&ce.translate(a.x,a.y),i&&ce.scale(i,i)}if(o(k,"setContextTransform"),d||(s.textureDrawLastFrame=!1),d){if(s.textureDrawLastFrame=!0,!s.textureCache){s.textureCache={},s.textureCache.bb=u.mutableElements().boundingBox(),s.textureCache.texture=s.data.bufferCanvases[s.TEXTURE_BUFFER];var R=s.data.bufferContexts[s.TEXTURE_BUFFER];R.setTransform(1,0,0,1,0,0),R.clearRect(0,0,s.canvasWidth*s.textureMult,s.canvasHeight*s.textureMult),s.render({forcedContext:R,drawOnlyNodeLayer:!0,forcedPxRatio:l*s.textureMult});var L=s.textureCache.viewport={zoom:u.zoom(),pan:u.pan(),width:s.canvasWidth,height:s.canvasHeight};L.mpan={x:(0-L.pan.x)/L.zoom,y:(0-L.pan.y)/L.zoom}}f[s.DRAG]=!1,f[s.NODE]=!1;var S=h.contexts[s.NODE],O=s.textureCache.texture,L=s.textureCache.viewport;S.setTransform(1,0,0,1,0,0),p?D(S,0,0,L.width,L.height):S.clearRect(0,0,L.width,L.height);var N=b.core("outside-texture-bg-color").value,P=b.core("outside-texture-bg-opacity").value;s.colorFillStyle(S,N[0],N[1],N[2],P),S.fillRect(0,0,L.width,L.height);var w=u.zoom();k(S,!1),S.clearRect(L.mpan.x,L.mpan.y,L.width/L.zoom/l,L.height/L.zoom/l),S.drawImage(O,L.mpan.x,L.mpan.y,L.width/L.zoom/l,L.height/L.zoom/l)}else s.textureOnViewport&&!e&&(s.textureCache=null);var F=u.extent(),B=s.pinching||s.hoverData.dragging||s.swipePanning||s.data.wheelZooming||s.hoverData.draggingEles||s.cy.animated(),$=s.hideEdgesOnViewport&&B,z=[];if(z[s.NODE]=!f[s.NODE]&&p&&!s.clearedForMotionBlur[s.NODE]||s.clearingMotionBlur,z[s.NODE]&&(s.clearedForMotionBlur[s.NODE]=!0),z[s.DRAG]=!f[s.DRAG]&&p&&!s.clearedForMotionBlur[s.DRAG]||s.clearingMotionBlur,z[s.DRAG]&&(s.clearedForMotionBlur[s.DRAG]=!0),f[s.NODE]||r||n||z[s.NODE]){var W=p&&!z[s.NODE]&&m!==1,S=e||(W?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]:h.contexts[s.NODE]),j=p&&!W?"motionBlur":void 0;k(S,j),$?s.drawCachedNodes(S,I.nondrag,l,F):s.drawLayeredElements(S,I.nondrag,l,F),s.debug&&s.drawDebugPoints(S,I.nondrag),!r&&!p&&(f[s.NODE]=!1)}if(!n&&(f[s.DRAG]||r||z[s.DRAG])){var W=p&&!z[s.DRAG]&&m!==1,S=e||(W?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]:h.contexts[s.DRAG]);k(S,p&&!W?"motionBlur":void 0),$?s.drawCachedNodes(S,I.drag,l,F):s.drawCachedElements(S,I.drag,l,F),s.debug&&s.drawDebugPoints(S,I.drag),!r&&!p&&(f[s.DRAG]=!1)}if(s.showFps||!n&&f[s.SELECT_BOX]&&!r){var S=e||h.contexts[s.SELECT_BOX];if(k(S),s.selection[4]==1&&(s.hoverData.selecting||s.touchData.selecting)){var w=s.cy.zoom(),K=b.core("selection-box-border-width").value/w;S.lineWidth=K,S.fillStyle="rgba("+b.core("selection-box-color").value[0]+","+b.core("selection-box-color").value[1]+","+b.core("selection-box-color").value[2]+","+b.core("selection-box-opacity").value+")",S.fillRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]),K>0&&(S.strokeStyle="rgba("+b.core("selection-box-border-color").value[0]+","+b.core("selection-box-border-color").value[1]+","+b.core("selection-box-border-color").value[2]+","+b.core("selection-box-opacity").value+")",S.strokeRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]))}if(h.bgActivePosistion&&!s.hoverData.selecting){var w=s.cy.zoom(),ie=h.bgActivePosistion;S.fillStyle="rgba("+b.core("active-bg-color").value[0]+","+b.core("active-bg-color").value[1]+","+b.core("active-bg-color").value[2]+","+b.core("active-bg-opacity").value+")",S.beginPath(),S.arc(ie.x,ie.y,b.core("active-bg-size").pfValue/w,0,2*Math.PI),S.fill()}var Q=s.lastRedrawTime;if(s.showFps&&Q){Q=Math.round(Q);var ee=Math.round(1e3/Q);S.setTransform(1,0,0,1,0,0),S.fillStyle="rgba(255, 0, 0, 0.75)",S.strokeStyle="rgba(255, 0, 0, 0.75)",S.lineWidth=1,S.fillText("1 frame = "+Q+" ms = "+ee+" fps",0,20);var J=60;S.strokeRect(0,30,250,20),S.fillRect(0,30,250*Math.min(ee/J,1),20)}r||(f[s.SELECT_BOX]=!1)}if(p&&m!==1){var H=h.contexts[s.NODE],q=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_NODE],Z=h.contexts[s.DRAG],ae=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_DRAG],ue=o(function(te,De,oe){te.setTransform(1,0,0,1,0,0),oe||!x?te.clearRect(0,0,s.canvasWidth,s.canvasHeight):D(te,0,0,s.canvasWidth,s.canvasHeight);var ke=m;te.drawImage(De,0,0,s.canvasWidth*ke,s.canvasHeight*ke,0,0,s.canvasWidth,s.canvasHeight)},"drawMotionBlur");(f[s.NODE]||z[s.NODE])&&(ue(H,q,z[s.NODE]),f[s.NODE]=!1),(f[s.DRAG]||z[s.DRAG])&&(ue(Z,ae,z[s.DRAG]),f[s.DRAG]=!1)}s.prevViewport=L,s.clearingMotionBlur&&(s.clearingMotionBlur=!1,s.motionBlurCleared=!0,s.motionBlur=!0),p&&(s.motionBlurTimeout=setTimeout(function(){s.motionBlurTimeout=null,s.clearedForMotionBlur[s.NODE]=!1,s.clearedForMotionBlur[s.DRAG]=!1,s.motionBlur=!1,s.clearingMotionBlur=!d,s.mbFrames=0,f[s.NODE]=!0,f[s.DRAG]=!0,s.redraw()},dtt)),e||u.emit("render")};Nf={};Nf.drawPolygonPath=function(t,e,r,n,i,a){var s=n/2,l=i/2;t.beginPath&&t.beginPath(),t.moveTo(e+s*a[0],r+l*a[1]);for(var u=1;u0&&s>0){m.clearRect(0,0,a,s),m.globalCompositeOperation="source-over";var g=this.getCachedZSortedEles();if(t.full)m.translate(-n.x1*h,-n.y1*h),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(n.x1*h,n.y1*h);else{var y=e.pan(),v={x:y.x*h,y:y.y*h};h*=e.zoom(),m.translate(v.x,v.y),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(-v.x,-v.y)}t.bg&&(m.globalCompositeOperation="destination-over",m.fillStyle=t.bg,m.rect(0,0,a,s),m.fill())}return p};o(ptt,"b64ToBlob");o(Ume,"b64UriToB64");o(w1e,"output");sb.png=function(t){return w1e(t,this.bufferCanvasImage(t),"image/png")};sb.jpg=function(t){return w1e(t,this.bufferCanvasImage(t),"image/jpeg")};T1e={};T1e.nodeShapeImpl=function(t,e,r,n,i,a,s,l){switch(t){case"ellipse":return this.drawEllipsePath(e,r,n,i,a);case"polygon":return this.drawPolygonPath(e,r,n,i,a,s);case"round-polygon":return this.drawRoundPolygonPath(e,r,n,i,a,s,l);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(e,r,n,i,a,l);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(e,r,n,i,a,s,l);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(e,r,n,i,a,l);case"barrel":return this.drawBarrelPath(e,r,n,i,a)}};mtt=k1e,Kr=k1e.prototype;Kr.CANVAS_LAYERS=3;Kr.SELECT_BOX=0;Kr.DRAG=1;Kr.NODE=2;Kr.BUFFER_COUNT=3;Kr.TEXTURE_BUFFER=0;Kr.MOTIONBLUR_BUFFER_NODE=1;Kr.MOTIONBLUR_BUFFER_DRAG=2;o(k1e,"CanvasRenderer");Kr.redrawHint=function(t,e){var r=this;switch(t){case"eles":r.data.canvasNeedsRedraw[Kr.NODE]=e;break;case"drag":r.data.canvasNeedsRedraw[Kr.DRAG]=e;break;case"select":r.data.canvasNeedsRedraw[Kr.SELECT_BOX]=e;break}};gtt=typeof Path2D<"u";Kr.path2dEnabled=function(t){if(t===void 0)return this.pathsEnabled;this.pathsEnabled=!!t};Kr.usePaths=function(){return gtt&&this.pathsEnabled};Kr.setImgSmoothing=function(t,e){t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled=e:(t.webkitImageSmoothingEnabled=e,t.mozImageSmoothingEnabled=e,t.msImageSmoothingEnabled=e)};Kr.getImgSmoothing=function(t){return t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled:t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled};Kr.makeOffscreenCanvas=function(t,e){var r;if((typeof OffscreenCanvas>"u"?"undefined":Yi(OffscreenCanvas))!=="undefined")r=new OffscreenCanvas(t,e);else{var n=this.cy.window(),i=n.document;r=i.createElement("canvas"),r.width=t,r.height=e}return r};[y1e,Yc,Zu,TB,Y0,w1,mo,Nf,sb,T1e].forEach(function(t){ir(Kr,t)});ytt=[{name:"null",impl:i1e},{name:"base",impl:p1e},{name:"canvas",impl:mtt}],vtt=[{type:"layout",extensions:ket},{type:"renderer",extensions:ytt}],E1e={},S1e={};o(C1e,"setExtension");o(A1e,"getExtension");o(xtt,"setModule");o(btt,"getModule");ZP=o(function(){if(arguments.length===2)return A1e.apply(null,arguments);if(arguments.length===3)return C1e.apply(null,arguments);if(arguments.length===4)return btt.apply(null,arguments);if(arguments.length===5)return xtt.apply(null,arguments);hi("Invalid extension access syntax")},"extension");Qx.prototype.extension=ZP;vtt.forEach(function(t){t.extensions.forEach(function(e){C1e(t.type,e.name,e.impl)})});_1e=o(function t(){if(!(this instanceof t))return new t;this.length=0},"Stylesheet"),H0=_1e.prototype;H0.instanceString=function(){return"stylesheet"};H0.selector=function(t){var e=this.length++;return this[e]={selector:t,properties:[]},this};H0.css=function(t,e){var r=this.length-1;if(Zt(t))this[r].properties.push({name:t,value:e});else if(Vr(t))for(var n=t,i=Object.keys(n),a=0;a{"use strict";o(function(e,r){typeof ob=="object"&&typeof EB=="object"?EB.exports=r():typeof define=="function"&&define.amd?define([],r):typeof ob=="object"?ob.layoutBase=r():e.layoutBase=r()},"webpackUniversalModuleDefinition")(ob,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=t,r.c=e,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=26)}([function(t,e,r){"use strict";function n(){}o(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,f){n.call(this,f),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=f,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var f=this.getOtherEnd(u),d=h.getGraphManager().getRoot();;){if(f.getOwner()==h)return f;if(f.getOwner()==d)break;f=f.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(4);function h(d,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),d.graphManager!=null&&(d=d.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=d,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var f in n)h[f]=n[f];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(d){this.rect.width=d},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(d){this.rect.height=d},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(d,p){this.rect.x=d.x,this.rect.y=d.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(d,p){this.rect.x=d-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(d,p){this.rect.x=d,this.rect.y=p},h.prototype.moveBy=function(d,p){this.rect.x+=d,this.rect.y+=p},h.prototype.getEdgeListToNode=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==d){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==d||y.source==d)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var d=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)d.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";d.add(m.source)}}),d},h.prototype.withChildren=function(){var d=new Set,p,m;if(d.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp&&(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)),this.labelHeight>m&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-m)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-m),this.setHeight(this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(d){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=d.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},t.exports=h},function(t,e,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(6),l=r(3),u=r(1),h=r(13),f=r(12),d=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,w=0;w-1&&E>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(T,1),x.target!=x.source&&x.target.edges.splice(E,1);var _=x.source.owner.getEdges().indexOf(x);if(_==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(_,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,w=this.getNodes(),_=w.length,T=0;T<_;T++){var E=w[T];v=E.getTop(),x=E.getLeft(),g>v&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(w[0].getParent().paddingLeft!=null?b=w[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new f(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,w,_,T,E,L,C=this.nodes,A=C.length,I=0;Iw&&(y=w),v<_&&(v=_),x>T&&(x=T),bw&&(y=w),v<_&&(v=_),x>T&&(x=T),b=this.nodes.length){var A=0;v.forEach(function(I){I.owner==g&&A++}),A==this.nodes.length&&(this.isConnected=!0)}},t.exports=p},function(t,e,r){"use strict";var n,i=r(1);function a(s){n=r(5),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,f){if(u==null&&h==null&&f==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{f=u,h=l,u=s;var d=h.getOwner(),p=f.getOwner();if(!(d!=null&&d.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(d==p)return u.isInterGraph=!1,d.add(u,h,f);if(u.isInterGraph=!0,u.source=h,u.target=f,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,f=u.length,d=0;d=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var f=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(f=1);var d=f*l[0],p=l[1]/f;l[0]d)return l[0]=u,l[1]=m,l[2]=f,l[3]=C,!1;if(hf)return l[0]=p,l[1]=h,l[2]=E,l[3]=d,!1;if(uf?(l[0]=y,l[1]=v,k=!0):(l[0]=g,l[1]=m,k=!0):S===N&&(u>f?(l[0]=p,l[1]=m,k=!0):(l[0]=x,l[1]=v,k=!0)),-O===N?f>u?(l[2]=L,l[3]=C,R=!0):(l[2]=E,l[3]=T,R=!0):O===N&&(f>u?(l[2]=_,l[3]=T,R=!0):(l[2]=A,l[3]=C,R=!0)),k&&R)return!1;if(u>f?h>d?(P=this.getCardinalDirection(S,N,4),F=this.getCardinalDirection(O,N,2)):(P=this.getCardinalDirection(-S,N,3),F=this.getCardinalDirection(-O,N,1)):h>d?(P=this.getCardinalDirection(-S,N,1),F=this.getCardinalDirection(-O,N,3)):(P=this.getCardinalDirection(S,N,2),F=this.getCardinalDirection(O,N,4)),!k)switch(P){case 1:$=m,B=u+-w/N,l[0]=B,l[1]=$;break;case 2:B=x,$=h+b*N,l[0]=B,l[1]=$;break;case 3:$=v,B=u+w/N,l[0]=B,l[1]=$;break;case 4:B=y,$=h+-b*N,l[0]=B,l[1]=$;break}if(!R)switch(F){case 1:W=T,z=f+-D/N,l[2]=z,l[3]=W;break;case 2:z=A,W=d+I*N,l[2]=z,l[3]=W;break;case 3:W=C,z=f+D/N,l[2]=z,l[3]=W;break;case 4:z=L,W=d+-I*N,l[2]=z,l[3]=W;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,f=a.y,d=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,w=void 0,_=void 0,T=void 0,E=void 0,L=void 0,C=void 0,A=void 0;return w=p-f,T=h-d,L=d*f-h*p,_=v-g,E=m-y,C=y*g-m*v,A=w*E-_*T,A===0?null:(x=(T*C-E*L)/A,b=(_*L-w*C)/A,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},t.exports=n},function(t,e,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n},function(t,e,r){"use strict";var n=function(){function h(f,d){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},t.exports=i},function(t,e,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(w.push(T[0]);w.length>0&&g;){var E=w[0];w.splice(0,1),b.add(E);for(var L=E.getEdges(),x=0;x-1&&T.splice(D,1)}b=new Set,_=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(C,1);var A=_.getNeighborsList();A.forEach(function(k){if(y.indexOf(k)<0){var R=v.get(k),S=R-1;S==1&&E.push(k),v.set(k,S)}})}y=y.concat(E),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},t.exports=p},function(t,e,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},t.exports=n},function(t,e,r){"use strict";var n=r(4);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},t.exports=i},function(t,e,r){"use strict";function n(d){if(Array.isArray(d)){for(var p=0,m=Array(d.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(d>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var d=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&d&&this.updateGrid(),b=new Set,m=0;mw||b>w)&&(d.gravitationForceX=-this.gravityConstant*y,d.gravitationForceY=-this.gravityConstant*v)):(w=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>w||b>w)&&(d.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,d.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var d,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),d=this.totalDisplacement=x.length||w>=x[0].length)){for(var _=0;_h},"_defaultCompareFunction")}]),l}();t.exports=s},function(t,e,r){"use strict";var n=function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=f,this.gap_penalty=d,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o(function(e,r){typeof lb=="object"&&typeof CB=="object"?CB.exports=r(SB()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof lb=="object"?lb.coseBase=r(SB()):e.coseBase=r(e.layoutBase)},"webpackUniversalModuleDefinition")(lb,function(t){return function(e){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=e,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=7)}([function(e,r){e.exports=t},function(e,r,n){"use strict";var i=n(0).FDLayoutConstants;function a(){}o(a,"CoSEConstants");for(var s in i)a[s]=i[s];a.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,a.DEFAULT_RADIAL_SEPARATION=i.DEFAULT_EDGE_LENGTH,a.DEFAULT_COMPONENT_SEPERATION=60,a.TILE=!0,a.TILING_PADDING_VERTICAL=10,a.TILING_PADDING_HORIZONTAL=10,a.TREE_REDUCTION_ON_INCREMENTAL=!1,e.exports=a},function(e,r,n){"use strict";var i=n(0).FDLayoutEdge;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEEdge"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a},function(e,r,n){"use strict";var i=n(0).LGraph;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEGraph"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a},function(e,r,n){"use strict";var i=n(0).LGraphManager;function a(l){i.call(this,l)}o(a,"CoSEGraphManager"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a},function(e,r,n){"use strict";var i=n(0).FDLayoutNode,a=n(0).IMath;function s(u,h,f,d){i.call(this,u,h,f,d)}o(s,"CoSENode"),s.prototype=Object.create(i.prototype);for(var l in i)s[l]=i[l];s.prototype.move=function(){var u=this.graphManager.getLayout();this.displacementX=u.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=u.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementX=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementX)),Math.abs(this.displacementY)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementY=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),u.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},s.prototype.propogateDisplacementToChildren=function(u,h){for(var f=this.getChild().getNodes(),d,p=0;p0)this.positionNodesRadially(T);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var E=new Set(this.getAllNodes()),L=this.nodesWithGravity.filter(function(C){return E.has(C)});this.graphManager.setAllNodesToApplyGravitation(L),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},w.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%f.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var T=new Set(this.getAllNodes()),E=this.nodesWithGravity.filter(function(A){return T.has(A)});this.graphManager.setAllNodesToApplyGravitation(E),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=f.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=f.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var L=!this.isTreeGrowing&&!this.isGrowthFinished,C=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(L,C),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},w.prototype.getPositionsData=function(){for(var T=this.graphManager.getAllNodes(),E={},L=0;L1){var k;for(k=0;kC&&(C=Math.floor(D.y)),I=Math.floor(D.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new m(d.WORLD_CENTER_X-D.x/2,d.WORLD_CENTER_Y-D.y/2))},w.radialLayout=function(T,E,L){var C=Math.max(this.maxDiagonalInTree(T),h.DEFAULT_RADIAL_SEPARATION);w.branchRadialLayout(E,null,0,359,0,C);var A=x.calculateBounds(T),I=new b;I.setDeviceOrgX(A.getMinX()),I.setDeviceOrgY(A.getMinY()),I.setWorldOrgX(L.x),I.setWorldOrgY(L.y);for(var D=0;D1;){var j=W[0];W.splice(0,1);var K=P.indexOf(j);K>=0&&P.splice(K,1),$--,F--}E!=null?z=(P.indexOf(W[0])+1)%$:z=0;for(var ie=Math.abs(C-L)/F,Q=z;B!=F;Q=++Q%$){var ee=P[Q].getOtherEnd(T);if(ee!=E){var J=(L+B*ie)%360,H=(J+ie)%360;w.branchRadialLayout(ee,T,J,H,A+I,I),B++}}},w.maxDiagonalInTree=function(T){for(var E=y.MIN_VALUE,L=0;LE&&(E=A)}return E},w.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},w.prototype.groupZeroDegreeMembers=function(){var T=this,E={};this.memberGroups={},this.idToDummyNode={};for(var L=[],C=this.graphManager.getAllNodes(),A=0;A"u"&&(E[k]=[]),E[k]=E[k].concat(I)}Object.keys(E).forEach(function(R){if(E[R].length>1){var S="DummyCompound_"+R;T.memberGroups[S]=E[R];var O=E[R][0].getParent(),N=new l(T.graphManager);N.id=S,N.paddingLeft=O.paddingLeft||0,N.paddingRight=O.paddingRight||0,N.paddingBottom=O.paddingBottom||0,N.paddingTop=O.paddingTop||0,T.idToDummyNode[S]=N;var P=T.getGraphManager().add(T.newGraph(),N),F=O.getChild();F.add(N);for(var B=0;B=0;T--){var E=this.compoundOrder[T],L=E.id,C=E.paddingLeft,A=E.paddingTop;this.adjustLocations(this.tiledMemberPack[L],E.rect.x,E.rect.y,C,A)}},w.prototype.repopulateZeroDegreeMembers=function(){var T=this,E=this.tiledZeroDegreePack;Object.keys(E).forEach(function(L){var C=T.idToDummyNode[L],A=C.paddingLeft,I=C.paddingTop;T.adjustLocations(E[L],C.rect.x,C.rect.y,A,I)})},w.prototype.getToBeTiled=function(T){var E=T.id;if(this.toBeTiled[E]!=null)return this.toBeTiled[E];var L=T.getChild();if(L==null)return this.toBeTiled[E]=!1,!1;for(var C=L.getNodes(),A=0;A0)return this.toBeTiled[E]=!1,!1;if(I.getChild()==null){this.toBeTiled[I.id]=!1;continue}if(!this.getToBeTiled(I))return this.toBeTiled[E]=!1,!1}return this.toBeTiled[E]=!0,!0},w.prototype.getNodeDegree=function(T){for(var E=T.id,L=T.getEdges(),C=0,A=0;AR&&(R=O.rect.height)}L+=R+T.verticalPadding}},w.prototype.tileCompoundMembers=function(T,E){var L=this;this.tiledMemberPack=[],Object.keys(T).forEach(function(C){var A=E[C];L.tiledMemberPack[C]=L.tileNodes(T[C],A.paddingLeft+A.paddingRight),A.rect.width=L.tiledMemberPack[C].width,A.rect.height=L.tiledMemberPack[C].height})},w.prototype.tileNodes=function(T,E){var L=h.TILING_PADDING_VERTICAL,C=h.TILING_PADDING_HORIZONTAL,A={rows:[],rowWidth:[],rowHeight:[],width:0,height:E,verticalPadding:L,horizontalPadding:C};T.sort(function(k,R){return k.rect.width*k.rect.height>R.rect.width*R.rect.height?-1:k.rect.width*k.rect.height0&&(D+=T.horizontalPadding),T.rowWidth[L]=D,T.width0&&(k+=T.verticalPadding);var R=0;k>T.rowHeight[L]&&(R=T.rowHeight[L],T.rowHeight[L]=k,R=T.rowHeight[L]-R),T.height+=R,T.rows[L].push(E)},w.prototype.getShortestRowIndex=function(T){for(var E=-1,L=Number.MAX_VALUE,C=0;CL&&(E=C,L=T.rowWidth[C]);return E},w.prototype.canAddHorizontal=function(T,E,L){var C=this.getShortestRowIndex(T);if(C<0)return!0;var A=T.rowWidth[C];if(A+T.horizontalPadding+E<=T.width)return!0;var I=0;T.rowHeight[C]0&&(I=L+T.verticalPadding-T.rowHeight[C]);var D;T.width-A>=E+T.horizontalPadding?D=(T.height+I)/(A+E+T.horizontalPadding):D=(T.height+I)/T.width,I=L+T.verticalPadding;var k;return T.widthI&&E!=L){C.splice(-1,1),T.rows[L].push(A),T.rowWidth[E]=T.rowWidth[E]-I,T.rowWidth[L]=T.rowWidth[L]+I,T.width=T.rowWidth[instance.getLongestRowIndex(T)];for(var D=Number.MIN_VALUE,k=0;kD&&(D=C[k].height);E>0&&(D+=T.verticalPadding);var R=T.rowHeight[E]+T.rowHeight[L];T.rowHeight[E]=D,T.rowHeight[L]0)for(var F=A;F<=I;F++)P[0]+=this.grid[F][D-1].length+this.grid[F][D].length-1;if(I0)for(var F=D;F<=k;F++)P[3]+=this.grid[A-1][F].length+this.grid[A][F].length-1;for(var B=y.MAX_VALUE,$,z,W=0;W{"use strict";o(function(e,r){typeof cb=="object"&&typeof _B=="object"?_B.exports=r(AB()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof cb=="object"?cb.cytoscapeCoseBilkent=r(AB()):e.cytoscapeCoseBilkent=r(e.coseBase)},"webpackUniversalModuleDefinition")(cb,function(t){return function(e){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=e,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=1)}([function(e,r){e.exports=t},function(e,r,n){"use strict";var i=n(0).layoutBase.LayoutConstants,a=n(0).layoutBase.FDLayoutConstants,s=n(0).CoSEConstants,l=n(0).CoSELayout,u=n(0).CoSENode,h=n(0).layoutBase.PointD,f=n(0).layoutBase.DimensionD,d={ready:o(function(){},"ready"),stop:o(function(){},"stop"),quality:"default",nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:"end",animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function p(v,x){var b={};for(var w in v)b[w]=v[w];for(var w in x)b[w]=x[w];return b}o(p,"extend");function m(v){this.options=p(d,v),g(this.options)}o(m,"_CoSELayout");var g=o(function(x){x.nodeRepulsion!=null&&(s.DEFAULT_REPULSION_STRENGTH=a.DEFAULT_REPULSION_STRENGTH=x.nodeRepulsion),x.idealEdgeLength!=null&&(s.DEFAULT_EDGE_LENGTH=a.DEFAULT_EDGE_LENGTH=x.idealEdgeLength),x.edgeElasticity!=null&&(s.DEFAULT_SPRING_STRENGTH=a.DEFAULT_SPRING_STRENGTH=x.edgeElasticity),x.nestingFactor!=null&&(s.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=x.nestingFactor),x.gravity!=null&&(s.DEFAULT_GRAVITY_STRENGTH=a.DEFAULT_GRAVITY_STRENGTH=x.gravity),x.numIter!=null&&(s.MAX_ITERATIONS=a.MAX_ITERATIONS=x.numIter),x.gravityRange!=null&&(s.DEFAULT_GRAVITY_RANGE_FACTOR=a.DEFAULT_GRAVITY_RANGE_FACTOR=x.gravityRange),x.gravityCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_STRENGTH=a.DEFAULT_COMPOUND_GRAVITY_STRENGTH=x.gravityCompound),x.gravityRangeCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=x.gravityRangeCompound),x.initialEnergyOnIncremental!=null&&(s.DEFAULT_COOLING_FACTOR_INCREMENTAL=a.DEFAULT_COOLING_FACTOR_INCREMENTAL=x.initialEnergyOnIncremental),x.quality=="draft"?i.QUALITY=0:x.quality=="proof"?i.QUALITY=2:i.QUALITY=1,s.NODE_DIMENSIONS_INCLUDE_LABELS=a.NODE_DIMENSIONS_INCLUDE_LABELS=i.NODE_DIMENSIONS_INCLUDE_LABELS=x.nodeDimensionsIncludeLabels,s.DEFAULT_INCREMENTAL=a.DEFAULT_INCREMENTAL=i.DEFAULT_INCREMENTAL=!x.randomize,s.ANIMATE=a.ANIMATE=i.ANIMATE=x.animate,s.TILE=x.tile,s.TILING_PADDING_VERTICAL=typeof x.tilingPaddingVertical=="function"?x.tilingPaddingVertical.call():x.tilingPaddingVertical,s.TILING_PADDING_HORIZONTAL=typeof x.tilingPaddingHorizontal=="function"?x.tilingPaddingHorizontal.call():x.tilingPaddingHorizontal},"getUserOptions");m.prototype.run=function(){var v,x,b=this.options,w=this.idToLNode={},_=this.layout=new l,T=this;T.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this});var E=_.newGraphManager();this.gm=E;var L=this.options.eles.nodes(),C=this.options.eles.edges();this.root=E.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(L),_);for(var A=0;A0){var k;k=b.getGraphManager().add(b.newGraph(),L),this.processChildrenList(k,E,b)}}},m.prototype.stop=function(){return this.stopped=!0,this};var y=o(function(x){x("layout","cose-bilkent",m)},"register");typeof cytoscape<"u"&&y(cytoscape),e.exports=y}])})});function _tt(t,e,r,n,i){return t.insert("polygon",":first-child").attr("points",n.map(function(a){return a.x+","+a.y}).join(" ")).attr("transform","translate("+(i.width-e)/2+", "+r+")")}var Ttt,ktt,Ett,Stt,Ctt,Att,Ltt,Dtt,D1e,N1e,R1e=M(()=>{"use strict";Dl();hr();Ttt=12,ktt=o(function(t,e,r,n){e.append("path").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("d",`M0 ${r.height-5} v${-r.height+2*5} q0,-5 5,-5 h${r.width-2*5} q5,0 5,5 v${r.height-5} H0 Z`),e.append("line").attr("class","node-line-"+n).attr("x1",0).attr("y1",r.height).attr("x2",r.width).attr("y2",r.height)},"defaultBkg"),Ett=o(function(t,e,r){e.append("rect").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("height",r.height).attr("width",r.width)},"rectBkg"),Stt=o(function(t,e,r){let n=r.width,i=r.height,a=.15*n,s=.25*n,l=.35*n,u=.2*n;e.append("path").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("d",`M0 0 a${a},${a} 0 0,1 ${n*.25},${-1*n*.1} +`+E+"^"},"showPosition"),test_match:o(function(T,E){var A,S,_;if(this.options.backtrack_lexer&&(_={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(_.yylloc.range=this.yylloc.range.slice(0))),S=T[0].match(/(?:\r\n?|\n).*/g),S&&(this.yylineno+=S.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:S?S[S.length-1].length-S[S.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+T[0].length},this.yytext+=T[0],this.match+=T[0],this.matches=T,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(T[0].length),this.matched+=T[0],A=this.performAction.call(this,this.yy,this,E,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),A)return A;if(this._backtrack){for(var I in _)this[I]=_[I];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var T,E,A,S;this._more||(this.yytext="",this.match="");for(var _=this._currentRules(),I=0;I<_.length;I++)if(A=this._input.match(this.rules[_[I]]),A&&(!E||A[0].length>E[0].length)){if(E=A,S=I,this.options.backtrack_lexer){if(T=this.test_match(A,_[I]),T!==!1)return T;if(this._backtrack){E=!1;continue}else return!1}else if(!this.options.flex)break}return E?(T=this.test_match(E,_[S]),T!==!1?T:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var E=this.next();return E||this.lex()},"lex"),begin:o(function(E){this.conditionStack.push(E)},"begin"),popState:o(function(){var E=this.conditionStack.length-1;return E>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(E){return E=this.conditionStack.length-1-Math.abs(E||0),E>=0?this.conditionStack[E]:"INITIAL"},"topState"),pushState:o(function(E){this.begin(E)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(E,A,S,_){var I=_;switch(S){case 0:return E.getLogger().trace("Found comment",A.yytext),6;break;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;break;case 4:this.popState();break;case 5:E.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return E.getLogger().trace("SPACELINE"),6;break;case 7:return 7;case 8:return 15;case 9:E.getLogger().trace("end icon"),this.popState();break;case 10:return E.getLogger().trace("Exploding node"),this.begin("NODE"),19;break;case 11:return E.getLogger().trace("Cloud"),this.begin("NODE"),19;break;case 12:return E.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;break;case 13:return E.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;break;case 14:return this.begin("NODE"),19;break;case 15:return this.begin("NODE"),19;break;case 16:return this.begin("NODE"),19;break;case 17:return this.begin("NODE"),19;break;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:E.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return E.getLogger().trace("description:",A.yytext),"NODE_DESCR";break;case 26:this.popState();break;case 27:return this.popState(),E.getLogger().trace("node end ))"),"NODE_DEND";break;case 28:return this.popState(),E.getLogger().trace("node end )"),"NODE_DEND";break;case 29:return this.popState(),E.getLogger().trace("node end ...",A.yytext),"NODE_DEND";break;case 30:return this.popState(),E.getLogger().trace("node end (("),"NODE_DEND";break;case 31:return this.popState(),E.getLogger().trace("node end (-"),"NODE_DEND";break;case 32:return this.popState(),E.getLogger().trace("node end (-"),"NODE_DEND";break;case 33:return this.popState(),E.getLogger().trace("node end (("),"NODE_DEND";break;case 34:return this.popState(),E.getLogger().trace("node end (("),"NODE_DEND";break;case 35:return E.getLogger().trace("Long description:",A.yytext),20;break;case 36:return E.getLogger().trace("Long description:",A.yytext),20;break}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return C}();x.lexer=b;function w(){this.yy={}}return o(w,"Parser"),w.prototype=x,x.Parser=w,new w}();aP.parser=aP;lpe=aP});var zl,upe,sP,tHe,rHe,nHe,iHe,$i,aHe,sHe,oHe,lHe,cHe,uHe,hHe,hpe,fpe=M(()=>{"use strict";Gt();gr();vt();ps();zl=[],upe=0,sP={},tHe=o(()=>{zl=[],upe=0,sP={}},"clear"),rHe=o(function(t){for(let e=zl.length-1;e>=0;e--)if(zl[e].levelzl.length>0?zl[0]:null,"getMindmap"),iHe=o((t,e,r,n)=>{Y.info("addNode",t,e,r,n);let i=me(),a=i.mindmap?.padding??cr.mindmap.padding;switch(n){case $i.ROUNDED_RECT:case $i.RECT:case $i.HEXAGON:a*=2}let s={id:upe++,nodeId:Tr(e,i),level:t,descr:Tr(r,i),type:n,children:[],width:i.mindmap?.maxNodeWidth??cr.mindmap.maxNodeWidth,padding:a},l=rHe(t);if(l)l.children.push(s),zl.push(s);else if(zl.length===0)zl.push(s);else throw new Error('There can be only one root. No parent could be found for ("'+s.descr+'")')},"addNode"),$i={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},aHe=o((t,e)=>{switch(Y.debug("In get type",t,e),t){case"[":return $i.RECT;case"(":return e===")"?$i.ROUNDED_RECT:$i.CLOUD;case"((":return $i.CIRCLE;case")":return $i.CLOUD;case"))":return $i.BANG;case"{{":return $i.HEXAGON;default:return $i.DEFAULT}},"getType"),sHe=o((t,e)=>{sP[t]=e},"setElementForId"),oHe=o(t=>{if(!t)return;let e=me(),r=zl[zl.length-1];t.icon&&(r.icon=Tr(t.icon,e)),t.class&&(r.class=Tr(t.class,e))},"decorateNode"),lHe=o(t=>{switch(t){case $i.DEFAULT:return"no-border";case $i.RECT:return"rect";case $i.ROUNDED_RECT:return"rounded-rect";case $i.CIRCLE:return"circle";case $i.CLOUD:return"cloud";case $i.BANG:return"bang";case $i.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),cHe=o(()=>Y,"getLogger"),uHe=o(t=>sP[t],"getElementById"),hHe={clear:tHe,addNode:iHe,getMindmap:nHe,nodeType:$i,getType:aHe,setElementForId:sHe,decorateNode:oHe,type2Str:lHe,getLogger:cHe,getElementById:uHe},hpe=hHe});function Hi(t){"@babel/helpers - typeof";return Hi=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Hi(t)}function Lf(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function dpe(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},"n"),e:o(function(u){throw u},"e"),f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a=!0,s=!1,l;return{s:o(function(){r=r.call(t)},"s"),n:o(function(){var u=r.next();return a=u.done,u},"n"),e:o(function(u){s=!0,l=u},"e"),f:o(function(){try{!a&&r.return!=null&&r.return()}finally{if(s)throw l}},"f")}}function GHe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}function $He(t,e){return e={exports:{}},t(e,e.exports),e.exports}function XHe(t){for(var e=t.length;e--&&YHe.test(t.charAt(e)););return e}function QHe(t){return t&&t.slice(0,jHe(t)+1).replace(KHe,"")}function rWe(t){var e=eWe.call(t,pb),r=t[pb];try{t[pb]=void 0;var n=!0}catch{}var i=tWe.call(t);return n&&(e?t[pb]=r:delete t[pb]),i}function sWe(t){return aWe.call(t)}function uWe(t){return t==null?t===void 0?cWe:lWe:gpe&&gpe in Object(t)?nWe(t):oWe(t)}function hWe(t){return t!=null&&typeof t=="object"}function pWe(t){return typeof t=="symbol"||fWe(t)&&U0e(t)==dWe}function xWe(t){if(typeof t=="number")return t;if(Ub(t))return ype;if(Fp(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=Fp(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=ZHe(t);var r=gWe.test(t);return r||yWe.test(t)?vWe(t.slice(2),r?2:8):mWe.test(t)?ype:+t}function kWe(t,e,r){var n,i,a,s,l,u,h=0,f=!1,d=!1,p=!0;if(typeof t!="function")throw new TypeError(bWe);e=vpe(e)||0,Fp(r)&&(f=!!r.leading,d="maxWait"in r,a=d?wWe(vpe(r.maxWait)||0,e):a,p="trailing"in r?!!r.trailing:p);function m(E){var A=n,S=i;return n=i=void 0,h=E,s=t.apply(S,A),s}o(m,"invokeFunc");function g(E){return h=E,l=setTimeout(x,e),f?m(E):s}o(g,"leadingEdge");function y(E){var A=E-u,S=E-h,_=e-A;return d?TWe(_,a-S):_}o(y,"remainingWait");function v(E){var A=E-u,S=E-h;return u===void 0||A>=e||A<0||d&&S>=a}o(v,"shouldInvoke");function x(){var E=oP();if(v(E))return b(E);l=setTimeout(x,y(E))}o(x,"timerExpired");function b(E){return l=void 0,p&&n?m(E):(n=i=void 0,s)}o(b,"trailingEdge");function w(){l!==void 0&&clearTimeout(l),h=0,n=u=i=l=void 0}o(w,"cancel");function C(){return l===void 0?s:b(oP())}o(C,"flush");function T(){var E=oP(),A=v(E);if(n=arguments,i=this,u=E,A){if(l===void 0)return g(u);if(d)return clearTimeout(l),l=setTimeout(x,e),m(u)}return l===void 0&&(l=setTimeout(x,e)),s}return o(T,"debounced"),T.cancel=w,T.flush=C,T}function bS(t,e,r,n,i,a){var s;return si(t)?s=t:s=q1[t]||q1.euclidean,e===0&&si(t)?s(i,a):s(e,r,n,i,a)}function mYe(t,e){if(wS(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||Ub(t)?!0:pYe.test(t)||!dYe.test(t)||e!=null&&t in Object(e)}function wYe(t){if(!Fp(t))return!1;var e=U0e(t);return e==vYe||e==xYe||e==yYe||e==bYe}function EYe(t){return!!Fpe&&Fpe in t}function _Ye(t){if(t!=null){try{return AYe.call(t)}catch{}try{return t+""}catch{}}return""}function BYe(t){if(!Fp(t)||SYe(t))return!1;var e=TYe(t)?PYe:RYe;return e.test(DYe(t))}function zYe(t,e){return t?.[e]}function $Ye(t,e){var r=GYe(t,e);return FYe(r)?r:void 0}function UYe(){this.__data__=Pb?Pb(null):{},this.size=0}function WYe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}function KYe(t){var e=this.__data__;if(Pb){var r=e[t];return r===YYe?void 0:r}return jYe.call(e,t)?e[t]:void 0}function eXe(t){var e=this.__data__;return Pb?e[t]!==void 0:JYe.call(e,t)}function nXe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=Pb&&e===void 0?rXe:e,this}function K1(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1}function yXe(t,e){var r=this.__data__,n=TS(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}function Q1(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1&&t%1==0&&t0;){var f=i.shift();e(f),a.add(f.id()),l&&n(i,a,f)}return t}function Tme(t,e,r){if(r.isParent())for(var n=r._private.children,i=0;i0&&arguments[0]!==void 0?arguments[0]:tKe,e=arguments.length>1?arguments[1]:void 0,r=0;r0?k=R:D=R;while(Math.abs(L)>s&&++O=a?b(I,O):N===0?O:C(I,D,D+h)}o(T,"getTForX");var E=!1;function A(){E=!0,(t!==e||r!==n)&&w()}o(A,"precompute");var S=o(function(D){return E||A(),t===e&&r===n?D:D===0?0:D===1?1:v(T(D),e,n)},"f");S.getControlPoints=function(){return[{x:t,y:e},{x:r,y:n}]};var _="generateBezier("+[t,e,r,n]+")";return S.toString=function(){return _},S}function n0e(t,e,r,n,i){if(n===1||e===r)return r;var a=i(e,r,n);return t==null||((t.roundValue||t.color)&&(a=Math.round(a)),t.min!==void 0&&(a=Math.max(a,t.min)),t.max!==void 0&&(a=Math.min(a,t.max))),a}function i0e(t,e){return t.pfValue!=null||t.value!=null?t.pfValue!=null&&(e==null||e.type.units!=="%")?t.pfValue:t.value:t}function I1(t,e,r,n,i){var a=i!=null?i.type:null;r<0?r=0:r>1&&(r=1);var s=i0e(t,i),l=i0e(e,i);if(Ct(s)&&Ct(l))return n0e(a,s,l,r,n);if(En(s)&&En(l)){for(var u=[],h=0;h0?(m==="spring"&&g.push(s.duration),s.easingImpl=J6[m].apply(null,g)):s.easingImpl=J6[m]}var y=s.easingImpl,v;if(s.duration===0?v=1:v=(r-u)/s.duration,s.applying&&(v=s.progress),v<0?v=0:v>1&&(v=1),s.delay==null){var x=s.startPosition,b=s.position;if(b&&i&&!t.locked()){var w={};vb(x.x,b.x)&&(w.x=I1(x.x,b.x,v,y)),vb(x.y,b.y)&&(w.y=I1(x.y,b.y,v,y)),t.position(w)}var C=s.startPan,T=s.pan,E=a.pan,A=T!=null&&n;A&&(vb(C.x,T.x)&&(E.x=I1(C.x,T.x,v,y)),vb(C.y,T.y)&&(E.y=I1(C.y,T.y,v,y)),t.emit("pan"));var S=s.startZoom,_=s.zoom,I=_!=null&&n;I&&(vb(S,_)&&(a.zoom=Ib(a.minZoom,I1(S,_,v,y),a.maxZoom)),t.emit("zoom")),(A||I)&&t.emit("viewport");var D=s.style;if(D&&D.length>0&&i){for(var k=0;k=0;A--){var S=E[A];S()}E.splice(0,E.length)},"callbacks"),b=m.length-1;b>=0;b--){var w=m[b],C=w._private;if(C.stopped){m.splice(b,1),C.hooked=!1,C.playing=!1,C.started=!1,x(C.frames);continue}!C.playing&&!C.applying||(C.playing&&C.applying&&(C.applying=!1),C.started||mKe(f,w,t),pKe(f,w,t,d),C.applying&&(C.applying=!1),x(C.frames),C.step!=null&&C.step(t),w.completed()&&(m.splice(b,1),C.hooked=!1,C.playing=!1,C.started=!1,x(C.completes)),y=!0)}return!d&&m.length===0&&g.length===0&&n.push(f),y}o(i,"stepOne");for(var a=!1,s=0;s0?e.notify("draw",r):e.notify("draw")),r.unmerge(n),e.emit("step")}function zme(t){this.options=rr({},kKe,EKe,t)}function Gme(t){this.options=rr({},SKe,t)}function $me(t){this.options=rr({},CKe,t)}function LS(t){this.options=rr({},AKe,t),this.options.layout=this;var e=this.options.eles.nodes(),r=this.options.eles.edges(),n=r.filter(function(i){var a=i.source().data("id"),s=i.target().data("id"),l=e.some(function(h){return h.data("id")===a}),u=e.some(function(h){return h.data("id")===s});return!l||!u});this.options.eles=this.options.eles.not(n)}function Ume(t){this.options=rr({},HKe,t)}function iB(t){this.options=rr({},WKe,t)}function Hme(t){this.options=rr({},qKe,t)}function Wme(t){this.options=rr({},YKe,t)}function qme(t){this.options=t,this.notifications=0}function jme(t,e){e.radius===0?t.lineTo(e.cx,e.cy):t.arc(e.cx,e.cy,e.radius,e.startAngle,e.endAngle,e.counterClockwise)}function sB(t,e,r,n){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;return n===0||e.radius===0?{cx:e.x,cy:e.y,radius:0,startX:e.x,startY:e.y,stopX:e.x,stopY:e.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(KKe(t,e,r,n,i),{cx:NP,cy:MP,radius:Op,startX:Yme,startY:Xme,stopX:IP,stopY:OP,startAngle:Uc.ang+Math.PI/2*Pp,endAngle:Ko.ang-Math.PI/2*Pp,counterClockwise:rS})}function Kme(t){var e=[];if(t!=null){for(var r=0;r5&&arguments[5]!==void 0?arguments[5]:5,s=arguments.length>6?arguments[6]:void 0;t.beginPath(),t.moveTo(e+a,r),t.lineTo(e+n-a,r),t.quadraticCurveTo(e+n,r,e+n,r+a),t.lineTo(e+n,r+i-a),t.quadraticCurveTo(e+n,r+i,e+n-a,r+i),t.lineTo(e+a,r+i),t.quadraticCurveTo(e,r+i,e,r+i-a),t.lineTo(e,r+a),t.quadraticCurveTo(e,r,e+a,r),t.closePath(),s?t.stroke():t.fill()}function E0e(t,e,r){var n=t.createShader(e);if(t.shaderSource(n,r),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error(t.getShaderInfoLog(n));return n}function BQe(t,e,r){var n=E0e(t,t.VERTEX_SHADER,e),i=E0e(t,t.FRAGMENT_SHADER,r),a=t.createProgram();if(t.attachShader(a,n),t.attachShader(a,i),t.linkProgram(a),!t.getProgramParameter(a,t.LINK_STATUS))throw new Error("Could not initialize shaders");return a}function FQe(t,e,r){r===void 0&&(r=e);var n=t.makeOffscreenCanvas(e,r),i=n.context=n.getContext("2d");return n.clear=function(){return i.clearRect(0,0,n.width,n.height)},n.clear(),n}function cB(t){var e=t.pixelRatio,r=t.cy.zoom(),n=t.cy.pan();return{zoom:r*e,pan:{x:n.x*e,y:n.y*e}}}function bP(t,e,r,n,i){var a=n*r+e.x,s=i*r+e.y;return s=Math.round(t.canvasHeight-s),[a,s]}function Y6(t,e,r){var n=t[0]/255,i=t[1]/255,a=t[2]/255,s=e,l=r||new Array(4);return l[0]=n*s,l[1]=i*s,l[2]=a*s,l[3]=s,l}function X6(t,e){var r=e||new Array(4);return r[0]=(t>>0&255)/255,r[1]=(t>>8&255)/255,r[2]=(t>>16&255)/255,r[3]=(t>>24&255)/255,r}function zQe(t){return t[0]+(t[1]<<8)+(t[2]<<16)+(t[3]<<24)}function GQe(t,e){var r=t.createTexture();return r.buffer=function(n){t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_NEAREST),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,n),t.generateMipmap(t.TEXTURE_2D),t.bindTexture(t.TEXTURE_2D,null)},r.deleteTexture=function(){t.deleteTexture(r)},r}function cge(t,e){switch(e){case"float":return[1,t.FLOAT,4];case"vec2":return[2,t.FLOAT,4];case"vec3":return[3,t.FLOAT,4];case"vec4":return[4,t.FLOAT,4];case"int":return[1,t.INT,4];case"ivec2":return[2,t.INT,4]}}function uge(t,e,r){switch(e){case t.FLOAT:return new Float32Array(r);case t.INT:return new Int32Array(r)}}function $Qe(t,e,r,n,i,a){switch(e){case t.FLOAT:return new Float32Array(r.buffer,a*n,i);case t.INT:return new Int32Array(r.buffer,a*n,i)}}function VQe(t,e,r,n){var i=cge(t,e),a=Ai(i,2),s=a[0],l=a[1],u=uge(t,l,n),h=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,h),t.bufferData(t.ARRAY_BUFFER,u,t.STATIC_DRAW),l===t.FLOAT?t.vertexAttribPointer(r,s,l,!1,0,0):l===t.INT&&t.vertexAttribIPointer(r,s,l,0,0),t.enableVertexAttribArray(r),t.bindBuffer(t.ARRAY_BUFFER,null),h}function co(t,e,r,n){var i=cge(t,r),a=Ai(i,3),s=a[0],l=a[1],u=a[2],h=uge(t,l,e*s),f=s*u,d=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,d),t.bufferData(t.ARRAY_BUFFER,e*f,t.DYNAMIC_DRAW),t.enableVertexAttribArray(n),l===t.FLOAT?t.vertexAttribPointer(n,s,l,!1,f,0):l===t.INT&&t.vertexAttribIPointer(n,s,l,f,0),t.vertexAttribDivisor(n,1),t.bindBuffer(t.ARRAY_BUFFER,null);for(var p=new Array(e),m=0;mige?(eZe(t),e.call(t,a)):(tZe(t),mge(t,a,Db.SCREEN)))}}{var r=t.matchCanvasSize;t.matchCanvasSize=function(a){r.call(t,a),t.pickingFrameBuffer.setFramebufferAttachmentSizes(t.canvasWidth,t.canvasHeight),t.pickingFrameBuffer.needsDraw=!0}}t.findNearestElements=function(a,s,l,u){return oZe(t,a,s)};{var n=t.invalidateCachedZSortedEles;t.invalidateCachedZSortedEles=function(){n.call(t),t.pickingFrameBuffer.needsDraw=!0}}{var i=t.notify;t.notify=function(a,s){i.call(t,a,s),a==="viewport"||a==="bounds"?t.pickingFrameBuffer.needsDraw=!0:a==="background"&&t.eleDrawing.invalidate(s,{type:"node-body"})}}}function eZe(t){var e=t.data.contexts[t.WEBGL];e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT)}function tZe(t){var e=o(function(n){n.save(),n.setTransform(1,0,0,1,0,0),n.clearRect(0,0,t.canvasWidth,t.canvasHeight),n.restore()},"clear");e(t.data.contexts[t.NODE]),e(t.data.contexts[t.DRAG])}function rZe(t){var e=t.canvasWidth,r=t.canvasHeight,n=cB(t),i=n.pan,a=n.zoom,s=_b();mS(s,s,[i.x,i.y]),uB(s,s,[a,a]);var l=_b();WQe(l,e,r);var u=_b();return HQe(u,l,s),u}function pge(t,e){var r=t.canvasWidth,n=t.canvasHeight,i=cB(t),a=i.pan,s=i.zoom;e.setTransform(1,0,0,1,0,0),e.clearRect(0,0,r,n),e.translate(a.x,a.y),e.scale(s,s)}function nZe(t,e){t.drawSelectionRectangle(e,function(r){return pge(t,r)})}function iZe(t){var e=t.data.contexts[t.NODE];e.save(),pge(t,e),e.strokeStyle="rgba(0, 0, 0, 0.3)",e.beginPath(),e.moveTo(-1e3,0),e.lineTo(1e3,0),e.stroke(),e.beginPath(),e.moveTo(0,-1e3),e.lineTo(0,1e3),e.stroke(),e.restore()}function aZe(t){var e=o(function(i,a,s){for(var l=i.atlasManager.getRenderTypeOpts(a),u=t.data.contexts[t.NODE],h=.125,f=l.atlasCollection.atlases,d=0;d=0&&k.add(O)}return k}function oZe(t,e,r){var n=sZe(t,e,r),i=t.getCachedZSortedEles(),a,s,l=uo(n),u;try{for(l.s();!(u=l.n()).done;){var h=u.value,f=i[h];if(!a&&f.isNode()&&(a=f),!s&&f.isEdge()&&(s=f),a&&s)break}}catch(d){l.e(d)}finally{l.f()}return[a,s].filter(Boolean)}function mge(t,e,r){var n,i;t.webglDebug&&(i=[],n=performance.now());var a=t.eleDrawing,s=0;if(r.screen&&t.data.canvasNeedsRedraw[t.SELECT_BOX]&&nZe(t,e),t.data.canvasNeedsRedraw[t.NODE]||r.picking){var l=o(function(k,L){L+=1,k.isNode()?(a.drawTexture(k,L,"node-underlay"),a.drawTexture(k,L,"node-body"),a.drawTexture(k,L,"node-label"),a.drawTexture(k,L,"node-overlay")):(a.drawEdgeLine(k,L),a.drawEdgeArrow(k,L,"source"),a.drawEdgeArrow(k,L,"target"),a.drawTexture(k,L,"edge-label"))},"draw"),u=t.data.contexts[t.WEBGL];r.screen?(u.clearColor(0,0,0,0),u.enable(u.BLEND),u.blendFunc(u.ONE,u.ONE_MINUS_SRC_ALPHA)):u.disable(u.BLEND),u.clear(u.COLOR_BUFFER_BIT|u.DEPTH_BUFFER_BIT),u.viewport(0,0,u.canvas.width,u.canvas.height);var h=rZe(t),f=t.getCachedZSortedEles();if(s=f.length,a.startFrame(h,i,r),r.screen){for(var d=0;d{"use strict";o(Hi,"_typeof");o(Lf,"_classCallCheck");o(dpe,"_defineProperties");o(Rf,"_createClass");o(N0e,"_defineProperty$1");o(Ai,"_slicedToArray");o(M0e,"_toConsumableArray");o(fHe,"_arrayWithoutHoles");o(dHe,"_arrayWithHoles");o(pHe,"_iterableToArray");o(mHe,"_iterableToArrayLimit");o(GP,"_unsupportedIterableToArray");o(kP,"_arrayLikeToArray");o(gHe,"_nonIterableSpread");o(yHe,"_nonIterableRest");o(uo,"_createForOfIteratorHelper");Vi=typeof window>"u"?null:window,ppe=Vi?Vi.navigator:null;Vi&&Vi.document;vHe=Hi(""),I0e=Hi({}),xHe=Hi(function(){}),bHe=typeof HTMLElement>"u"?"undefined":Hi(HTMLElement),$b=o(function(e){return e&&e.instanceString&&si(e.instanceString)?e.instanceString():null},"instanceStr"),Zt=o(function(e){return e!=null&&Hi(e)==vHe},"string"),si=o(function(e){return e!=null&&Hi(e)===xHe},"fn"),En=o(function(e){return!ho(e)&&(Array.isArray?Array.isArray(e):e!=null&&e instanceof Array)},"array"),Vr=o(function(e){return e!=null&&Hi(e)===I0e&&!En(e)&&e.constructor===Object},"plainObject"),wHe=o(function(e){return e!=null&&Hi(e)===I0e},"object"),Ct=o(function(e){return e!=null&&Hi(e)===Hi(1)&&!isNaN(e)},"number"),THe=o(function(e){return Ct(e)&&Math.floor(e)===e},"integer"),iS=o(function(e){if(bHe!=="undefined")return e!=null&&e instanceof HTMLElement},"htmlElement"),ho=o(function(e){return Vb(e)||O0e(e)},"elementOrCollection"),Vb=o(function(e){return $b(e)==="collection"&&e._private.single},"element"),O0e=o(function(e){return $b(e)==="collection"&&!e._private.single},"collection"),$P=o(function(e){return $b(e)==="core"},"core"),P0e=o(function(e){return $b(e)==="stylesheet"},"stylesheet"),kHe=o(function(e){return $b(e)==="event"},"event"),Ef=o(function(e){return e==null?!0:!!(e===""||e.match(/^\s+$/))},"emptyString"),EHe=o(function(e){return typeof HTMLElement>"u"?!1:e instanceof HTMLElement},"domElement"),SHe=o(function(e){return Vr(e)&&Ct(e.x1)&&Ct(e.x2)&&Ct(e.y1)&&Ct(e.y2)},"boundingBox"),CHe=o(function(e){return wHe(e)&&si(e.then)},"promise"),AHe=o(function(){return ppe&&ppe.userAgent.match(/msie|trident|edge/i)},"ms"),Lb=o(function(e,r){r||(r=o(function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var a=[],s=0;sr?1:0},"ascending"),IHe=o(function(e,r){return-1*F0e(e,r)},"descending"),rr=Object.assign!=null?Object.assign.bind(Object):function(t){for(var e=arguments,r=1;r1&&(v-=1),v<1/6?g+(y-g)*6*v:v<1/2?y:v<2/3?g+(y-g)*(2/3-v)*6:g}o(f,"hue2rgb");var d=new RegExp("^"+LHe+"$").exec(e);if(d){if(n=parseInt(d[1]),n<0?n=(360- -1*n%360)%360:n>360&&(n=n%360),n/=360,i=parseFloat(d[2]),i<0||i>100||(i=i/100,a=parseFloat(d[3]),a<0||a>100)||(a=a/100,s=d[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(i===0)l=u=h=Math.round(a*255);else{var p=a<.5?a*(1+i):a+i-a*i,m=2*a-p;l=Math.round(255*f(m,p,n+1/3)),u=Math.round(255*f(m,p,n)),h=Math.round(255*f(m,p,n-1/3))}r=[l,u,h,s]}return r},"hsl2tuple"),BHe=o(function(e){var r,n=new RegExp("^"+_He+"$").exec(e);if(n){r=[];for(var i=[],a=1;a<=3;a++){var s=n[a];if(s[s.length-1]==="%"&&(i[a]=!0),s=parseFloat(s),i[a]&&(s=s/100*255),s<0||s>255)return;r.push(Math.floor(s))}var l=i[1]||i[2]||i[3],u=i[1]&&i[2]&&i[3];if(l&&!u)return;var h=n[4];if(h!==void 0){if(h=parseFloat(h),h<0||h>1)return;r.push(h)}}return r},"rgb2tuple"),FHe=o(function(e){return zHe[e.toLowerCase()]},"colorname2tuple"),z0e=o(function(e){return(En(e)?e:null)||FHe(e)||OHe(e)||BHe(e)||PHe(e)},"color2tuple"),zHe={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},G0e=o(function(e){for(var r=e.map,n=e.keys,i=n.length,a=0;a1&&arguments[1]!==void 0?arguments[1]:B1,n=r,i;i=e.next(),!i.done;)n=n*W0e+i.value|0;return n},"hashIterableInts"),Rb=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:B1;return r*W0e+e|0},"hashInt"),Nb=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Tb;return(r<<5)+r+e|0},"hashIntAlt"),SWe=o(function(e,r){return e*2097152+r},"combineHashes"),vf=o(function(e){return e[0]*2097152+e[1]},"combineHashesArray"),O6=o(function(e,r){return[Rb(e[0],r[0]),Nb(e[1],r[1])]},"hashArrays"),CWe=o(function(e,r){var n={value:0,done:!1},i=0,a=e.length,s={next:o(function(){return i=0&&!(e[i]===r&&(e.splice(i,1),n));i--);},"removeFromArray"),WP=o(function(e){e.splice(0,e.length)},"clearArray"),MWe=o(function(e,r){for(var n=0;n"u"?"undefined":Hi(Set))!==OWe?Set:PWe,vS=o(function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0||r===void 0||!$P(e)){ai("An element must have a core reference and parameters set");return}var i=r.group;if(i==null&&(r.data&&r.data.source!=null&&r.data.target!=null?i="edges":i="nodes"),i!=="nodes"&&i!=="edges"){ai("An element must be of type `nodes` or `edges`; you specified `"+i+"`");return}this.length=1,this[0]=this;var a=this._private={cy:e,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:i,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?i==="edges":!!r.pannable,active:!1,classes:new X1,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(a.position.x==null&&(a.position.x=0),a.position.y==null&&(a.position.y=0),r.renderedPosition){var s=r.renderedPosition,l=e.pan(),u=e.zoom();a.position={x:(s.x-l.x)/u,y:(s.y-l.y)/u}}var h=[];En(r.classes)?h=r.classes:Zt(r.classes)&&(h=r.classes.split(/\s+/));for(var f=0,d=h.length;fb?1:0},"defaultCmp"),f=o(function(x,b,w,C,T){var E;if(w==null&&(w=0),T==null&&(T=n),w<0)throw new Error("lo must be non-negative");for(C==null&&(C=x.length);wI;0<=I?_++:_--)S.push(_);return S}.apply(this).reverse(),A=[],C=0,T=E.length;CD;0<=D?++S:--S)k.push(s(x,w));return k},"nsmallest"),y=o(function(x,b,w,C){var T,E,A;for(C==null&&(C=n),T=x[w];w>b;){if(A=w-1>>1,E=x[A],C(T,E)<0){x[w]=E,w=A;continue}break}return x[w]=T},"_siftdown"),v=o(function(x,b,w){var C,T,E,A,S;for(w==null&&(w=n),T=x.length,S=b,E=x[b],C=2*b+1;C0;){var E=b.pop(),A=v(E),S=E.id();if(p[S]=A,A!==1/0)for(var _=E.neighborhood().intersect(g),I=0;I<_.length;I++){var D=_[I],k=D.id(),L=T(E,D),R=A+L.dist;R0)for(F.unshift(B);d[G];){var z=d[G];F.unshift(z.edge),F.unshift(z.node),P=z.node,G=P.id()}return l.spawn(F)},"pathTo")}},"dijkstra")},GWe={kruskal:o(function(e){e=e||function(w){return 1};for(var r=this.byGroup(),n=r.nodes,i=r.edges,a=n.length,s=new Array(a),l=n,u=o(function(C){for(var T=0;T0;){if(T(),A++,C===f){for(var S=[],_=a,I=f,D=x[I];S.unshift(_),D!=null&&S.unshift(D),_=v[I],_!=null;)I=_.id(),D=x[I];return{found:!0,distance:d[C],path:this.spawn(S),steps:A}}m[C]=!0;for(var k=w._private.edges,L=0;LD&&(g[I]=D,b[I]=_,w[I]=T),!a){var k=_*f+S;!a&&g[k]>D&&(g[k]=D,b[k]=S,w[k]=T)}}}for(var L=0;L1&&arguments[1]!==void 0?arguments[1]:s,ge=w(ae),Ge=[],He=ge;;){if(He==null)return r.spawn();var ze=b(He),Re=ze.edge,Ie=ze.pred;if(Ge.unshift(He[0]),He.same(Oe)&&Ge.length>0)break;Re!=null&&Ge.unshift(Re),He=Ie}return u.spawn(Ge)},"pathTo"),E=0;E=0;f--){var d=h[f],p=d[1],m=d[2];(r[p]===l&&r[m]===u||r[p]===u&&r[m]===l)&&h.splice(f,1)}for(var g=0;gi;){var a=Math.floor(Math.random()*r.length);r=XWe(a,e,r),n--}return r},"contractUntil"),jWe={kargerStein:o(function(){var e=this,r=this.byGroup(),n=r.nodes,i=r.edges;i.unmergeBy(function(F){return F.isLoop()});var a=n.length,s=i.length,l=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),u=Math.floor(a/YWe);if(a<2){ai("At least 2 nodes are required for Karger-Stein algorithm");return}for(var h=[],f=0;f1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=-1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=0,a=0,s=r;s1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;i?e=e.slice(r,n):(n0&&e.splice(0,r));for(var l=0,u=e.length-1;u>=0;u--){var h=e[u];s?isFinite(h)||(e[u]=-1/0,l++):e.splice(u,1)}a&&e.sort(function(p,m){return p-m});var f=e.length,d=Math.floor(f/2);return f%2!==0?e[d+1+l]:(e[d-1+l]+e[d+l])/2},"median"),tqe=o(function(e){return Math.PI*e/180},"deg2rad"),P6=o(function(e,r){return Math.atan2(r,e)-Math.PI/2},"getAngleFromDisp"),qP=Math.log2||function(t){return Math.log(t)/Math.log(2)},J0e=o(function(e){return e>0?1:e<0?-1:0},"signum"),zp=o(function(e,r){return Math.sqrt(Mp(e,r))},"dist"),Mp=o(function(e,r){var n=r.x-e.x,i=r.y-e.y;return n*n+i*i},"sqdist"),rqe=o(function(e){for(var r=e.length,n=0,i=0;i=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(e.w!=null&&e.h!=null&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},"makeBoundingBox"),iqe=o(function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}},"copyBoundingBox"),aqe=o(function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0},"clearBoundingBox"),sqe=o(function(e,r,n){return{x1:e.x1+r,x2:e.x2+r,y1:e.y1+n,y2:e.y2+n,w:e.w,h:e.h}},"shiftBoundingBox"),eme=o(function(e,r){e.x1=Math.min(e.x1,r.x1),e.x2=Math.max(e.x2,r.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,r.y1),e.y2=Math.max(e.y2,r.y2),e.h=e.y2-e.y1},"updateBoundingBox"),oqe=o(function(e,r,n){e.x1=Math.min(e.x1,r),e.x2=Math.max(e.x2,r),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},"expandBoundingBoxByPoint"),j6=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.x1-=r,e.x2+=r,e.y1-=r,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},"expandBoundingBox"),K6=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],n,i,a,s;if(r.length===1)n=i=a=s=r[0];else if(r.length===2)n=a=r[0],s=i=r[1];else if(r.length===4){var l=Ai(r,4);n=l[0],i=l[1],a=l[2],s=l[3]}return e.x1-=s,e.x2+=i,e.y1-=n,e.y2+=a,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},"expandBoundingBoxSides"),Tpe=o(function(e,r){e.x1=r.x1,e.y1=r.y1,e.x2=r.x2,e.y2=r.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},"assignBoundingBox"),YP=o(function(e,r){return!(e.x1>r.x2||r.x1>e.x2||e.x2r.y2||r.y1>e.y2)},"boundingBoxesIntersect"),W1=o(function(e,r,n){return e.x1<=r&&r<=e.x2&&e.y1<=n&&n<=e.y2},"inBoundingBox"),lqe=o(function(e,r){return W1(e,r.x,r.y)},"pointInBoundingBox"),tme=o(function(e,r){return W1(e,r.x1,r.y1)&&W1(e,r.x2,r.y2)},"boundingBoxInBoundingBox"),rme=o(function(e,r,n,i,a,s,l){var u=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"auto",h=u==="auto"?Gp(a,s):u,f=a/2,d=s/2;h=Math.min(h,f,d);var p=h!==f,m=h!==d,g;if(p){var y=n-f+h-l,v=i-d-l,x=n+f-h+l,b=v;if(g=wf(e,r,n,i,y,v,x,b,!1),g.length>0)return g}if(m){var w=n+f+l,C=i-d+h-l,T=w,E=i+d-h+l;if(g=wf(e,r,n,i,w,C,T,E,!1),g.length>0)return g}if(p){var A=n-f+h-l,S=i+d+l,_=n+f-h+l,I=S;if(g=wf(e,r,n,i,A,S,_,I,!1),g.length>0)return g}if(m){var D=n-f-l,k=i-d+h-l,L=D,R=i+d-h+l;if(g=wf(e,r,n,i,D,k,L,R,!1),g.length>0)return g}var O;{var N=n-f+h,B=i-d+h;if(O=kb(e,r,n,i,N,B,h+l),O.length>0&&O[0]<=N&&O[1]<=B)return[O[0],O[1]]}{var F=n+f-h,P=i-d+h;if(O=kb(e,r,n,i,F,P,h+l),O.length>0&&O[0]>=F&&O[1]<=P)return[O[0],O[1]]}{var G=n+f-h,z=i+d-h;if(O=kb(e,r,n,i,G,z,h+l),O.length>0&&O[0]>=G&&O[1]>=z)return[O[0],O[1]]}{var H=n-f+h,Q=i+d-h;if(O=kb(e,r,n,i,H,Q,h+l),O.length>0&&O[0]<=H&&O[1]>=Q)return[O[0],O[1]]}return[]},"roundRectangleIntersectLine"),cqe=o(function(e,r,n,i,a,s,l){var u=l,h=Math.min(n,a),f=Math.max(n,a),d=Math.min(i,s),p=Math.max(i,s);return h-u<=e&&e<=f+u&&d-u<=r&&r<=p+u},"inLineVicinity"),uqe=o(function(e,r,n,i,a,s,l,u,h){var f={x1:Math.min(n,l,a)-h,x2:Math.max(n,l,a)+h,y1:Math.min(i,u,s)-h,y2:Math.max(i,u,s)+h};return!(ef.x2||rf.y2)},"inBezierVicinity"),hqe=o(function(e,r,n,i){n-=i;var a=r*r-4*e*n;if(a<0)return[];var s=Math.sqrt(a),l=2*e,u=(-r+s)/l,h=(-r-s)/l;return[u,h]},"solveQuadratic"),fqe=o(function(e,r,n,i,a){var s=1e-5;e===0&&(e=s),r/=e,n/=e,i/=e;var l,u,h,f,d,p,m,g;if(u=(3*n-r*r)/9,h=-(27*i)+r*(9*n-2*(r*r)),h/=54,l=u*u*u+h*h,a[1]=0,m=r/3,l>0){d=h+Math.sqrt(l),d=d<0?-Math.pow(-d,1/3):Math.pow(d,1/3),p=h-Math.sqrt(l),p=p<0?-Math.pow(-p,1/3):Math.pow(p,1/3),a[0]=-m+d+p,m+=(d+p)/2,a[4]=a[2]=-m,m=Math.sqrt(3)*(-p+d)/2,a[3]=m,a[5]=-m;return}if(a[5]=a[3]=0,l===0){g=h<0?-Math.pow(-h,1/3):Math.pow(h,1/3),a[0]=-m+2*g,a[4]=a[2]=-(g+m);return}u=-u,f=u*u*u,f=Math.acos(h/Math.sqrt(f)),g=2*Math.sqrt(u),a[0]=-m+g*Math.cos(f/3),a[2]=-m+g*Math.cos((f+2*Math.PI)/3),a[4]=-m+g*Math.cos((f+4*Math.PI)/3)},"solveCubic"),dqe=o(function(e,r,n,i,a,s,l,u){var h=1*n*n-4*n*a+2*n*l+4*a*a-4*a*l+l*l+i*i-4*i*s+2*i*u+4*s*s-4*s*u+u*u,f=1*9*n*a-3*n*n-3*n*l-6*a*a+3*a*l+9*i*s-3*i*i-3*i*u-6*s*s+3*s*u,d=1*3*n*n-6*n*a+n*l-n*e+2*a*a+2*a*e-l*e+3*i*i-6*i*s+i*u-i*r+2*s*s+2*s*r-u*r,p=1*n*a-n*n+n*e-a*e+i*s-i*i+i*r-s*r,m=[];fqe(h,f,d,p,m);for(var g=1e-7,y=[],v=0;v<6;v+=2)Math.abs(m[v+1])=0&&m[v]<=1&&y.push(m[v]);y.push(1),y.push(0);for(var x=-1,b,w,C,T=0;T=0?Ch?(e-a)*(e-a)+(r-s)*(r-s):f-p},"sqdistToFiniteLine"),Fs=o(function(e,r,n){for(var i,a,s,l,u,h=0,f=0;f=e&&e>=s||i<=e&&e<=s)u=(e-i)/(s-i)*(l-a)+a,u>r&&h++;else continue;return h%2!==0},"pointInsidePolygonPoints"),ju=o(function(e,r,n,i,a,s,l,u,h){var f=new Array(n.length),d;u[0]!=null?(d=Math.atan(u[1]/u[0]),u[0]<0?d=d+Math.PI/2:d=-d-Math.PI/2):d=u;for(var p=Math.cos(-d),m=Math.sin(-d),g=0;g0){var v=lS(f,-h);y=oS(v)}else y=f;return Fs(e,r,y)},"pointInsidePolygon"),mqe=o(function(e,r,n,i,a,s,l,u){for(var h=new Array(n.length*2),f=0;f=0&&v<=1&&b.push(v),x>=0&&x<=1&&b.push(x),b.length===0)return[];var w=b[0]*u[0]+e,C=b[0]*u[1]+r;if(b.length>1){if(b[0]==b[1])return[w,C];var T=b[1]*u[0]+e,E=b[1]*u[1]+r;return[w,C,T,E]}else return[w,C]},"intersectLineCircle"),uP=o(function(e,r,n){return r<=e&&e<=n||n<=e&&e<=r?e:e<=r&&r<=n||n<=r&&r<=e?r:n},"midOfThree"),wf=o(function(e,r,n,i,a,s,l,u,h){var f=e-a,d=n-e,p=l-a,m=r-s,g=i-r,y=u-s,v=p*m-y*f,x=d*m-g*f,b=y*d-p*g;if(b!==0){var w=v/b,C=x/b,T=.001,E=0-T,A=1+T;return E<=w&&w<=A&&E<=C&&C<=A?[e+w*d,r+w*g]:h?[e+w*d,r+w*g]:[]}else return v===0||x===0?uP(e,n,l)===l?[l,u]:uP(e,n,a)===a?[a,s]:uP(a,l,n)===n?[n,i]:[]:[]},"finiteLinesIntersect"),Ob=o(function(e,r,n,i,a,s,l,u){var h=[],f,d=new Array(n.length),p=!0;s==null&&(p=!1);var m;if(p){for(var g=0;g0){var y=lS(d,-u);m=oS(y)}else m=d}else m=n;for(var v,x,b,w,C=0;C2){for(var g=[f[0],f[1]],y=Math.pow(g[0]-e,2)+Math.pow(g[1]-r,2),v=1;vf&&(f=C)},"set"),get:o(function(w){return h[w]},"get")},p=0;p0?N=O.edgesTo(R)[0]:N=R.edgesTo(O)[0];var B=i(N);R=R.id(),S[R]>S[k]+B&&(S[R]=S[k]+B,_.nodes.indexOf(R)<0?_.push(R):_.updateItem(R),A[R]=0,E[R]=[]),S[R]==S[k]+B&&(A[R]=A[R]+A[k],E[R].push(k))}else for(var F=0;F0;){for(var H=T.pop(),Q=0;Q0&&l.push(n[u]);l.length!==0&&a.push(i.collection(l))}return a},"assign"),Rqe=o(function(e,r){for(var n=0;n5&&arguments[5]!==void 0?arguments[5]:Iqe,l=i,u,h,f=0;f=2?mb(e,r,n,0,Ape,Oqe):mb(e,r,n,0,Cpe)},"euclidean"),squaredEuclidean:o(function(e,r,n){return mb(e,r,n,0,Ape)},"squaredEuclidean"),manhattan:o(function(e,r,n){return mb(e,r,n,0,Cpe)},"manhattan"),max:o(function(e,r,n){return mb(e,r,n,-1/0,Pqe)},"max")};q1["squared-euclidean"]=q1.squaredEuclidean;q1.squaredeuclidean=q1.squaredEuclidean;o(bS,"clusteringDistance");Bqe=aa({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),jP=o(function(e){return Bqe(e)},"setOptions"),cS=o(function(e,r,n,i,a){var s=a!=="kMedoids",l=s?function(d){return n[d]}:function(d){return i[d](n)},u=o(function(p){return i[p](r)},"getQ"),h=n,f=r;return bS(e,i.length,l,u,h,f)},"getDist"),hP=o(function(e,r,n){for(var i=n.length,a=new Array(i),s=new Array(i),l=new Array(r),u=null,h=0;hn)return!1}return!0},"haveMatricesConverged"),Gqe=o(function(e,r,n){for(var i=0;il&&(l=r[h][f],u=f);a[u].push(e[h])}for(var d=0;d=a.threshold||a.mode==="dendrogram"&&e.length===1)return!1;var g=r[s],y=r[i[s]],v;a.mode==="dendrogram"?v={left:g,right:y,key:g.key}:v={value:g.value.concat(y.value),key:g.key},e[g.index]=v,e.splice(y.index,1),r[g.key]=v;for(var x=0;xn[y.key][b.key]&&(u=n[y.key][b.key])):a.linkage==="max"?(u=n[g.key][b.key],n[g.key][b.key]0&&i.push(a);return i},"findExemplars"),Mpe=o(function(e,r,n){for(var i=[],a=0;al&&(s=h,l=r[a*e+h])}s>0&&i.push(s)}for(var f=0;fh&&(u=f,h=d)}n[a]=s[u]}return i=Mpe(e,r,n),i},"assign"),Ipe=o(function(e){for(var r=this.cy(),n=this.nodes(),i=eYe(e),a={},s=0;s=D?(k=D,D=R,L=O):R>k&&(k=R);for(var N=0;N0?1:0;A[_%i.minIterations*l+H]=Q,z+=Q}if(z>0&&(_>=i.minIterations-1||_==i.maxIterations-1)){for(var j=0,ie=0;ie1||E>1)&&(l=!0),d[w]=[],b.outgoers().forEach(function(S){S.isEdge()&&d[w].push(S.id())})}else p[w]=[void 0,b.target().id()]}):s.forEach(function(b){var w=b.id();if(b.isNode()){var C=b.degree(!0);C%2&&(u?h?l=!0:h=w:u=w),d[w]=[],b.connectedEdges().forEach(function(T){return d[w].push(T.id())})}else p[w]=[b.source().id(),b.target().id()]});var m={found:!1,trail:void 0};if(l)return m;if(h&&u)if(a){if(f&&h!=f)return m;f=h}else{if(f&&h!=f&&u!=f)return m;f||(f=h)}else f||(f=s[0].id());var g=o(function(w){for(var C=w,T=[w],E,A,S;d[C].length;)E=d[C].shift(),A=p[E][0],S=p[E][1],C!=S?(d[S]=d[S].filter(function(_){return _!=E}),C=S):!a&&C!=A&&(d[A]=d[A].filter(function(_){return _!=E}),C=A),T.unshift(E),T.unshift(C);return T},"walk"),y=[],v=[];for(v=g(f);v.length!=1;)d[v[0]].length==0?(y.unshift(s.getElementById(v.shift())),y.unshift(s.getElementById(v.shift()))):v=g(v.shift()).concat(v);y.unshift(s.getElementById(v.shift()));for(var x in d)if(d[x].length)return m;return m.found=!0,m.trail=this.spawn(y,!0),m},"hierholzer")},z6=o(function(){var e=this,r={},n=0,i=0,a=[],s=[],l={},u=o(function(p,m){for(var g=s.length-1,y=[],v=e.spawn();s[g].x!=p||s[g].y!=m;)y.push(s.pop().edge),g--;y.push(s.pop().edge),y.forEach(function(x){var b=x.connectedNodes().intersection(e);v.merge(x),b.forEach(function(w){var C=w.id(),T=w.connectedEdges().intersection(e);v.merge(w),r[C].cutVertex?v.merge(T.filter(function(E){return E.isLoop()})):v.merge(T)})}),a.push(v)},"buildComponent"),h=o(function d(p,m,g){p===g&&(i+=1),r[m]={id:n,low:n++,cutVertex:!1};var y=e.getElementById(m).connectedEdges().intersection(e);if(y.size()===0)a.push(e.spawn(e.getElementById(m)));else{var v,x,b,w;y.forEach(function(C){v=C.source().id(),x=C.target().id(),b=v===m?x:v,b!==g&&(w=C.id(),l[w]||(l[w]=!0,s.push({x:m,y:b,edge:C})),b in r?r[m].low=Math.min(r[m].low,r[b].id):(d(p,b,m),r[m].low=Math.min(r[m].low,r[b].low),r[m].id<=r[b].low&&(r[m].cutVertex=!0,u(m,b))))})}},"biconnectedSearch");e.forEach(function(d){if(d.isNode()){var p=d.id();p in r||(i=0,h(p,p),r[p].cutVertex=i>1)}});var f=Object.keys(r).filter(function(d){return r[d].cutVertex}).map(function(d){return e.getElementById(d)});return{cut:e.spawn(f),components:a}},"hopcroftTarjanBiconnected"),lYe={hopcroftTarjanBiconnected:z6,htbc:z6,htb:z6,hopcroftTarjanBiconnectedComponents:z6},G6=o(function(){var e=this,r={},n=0,i=[],a=[],s=e.spawn(e),l=o(function u(h){a.push(h),r[h]={index:n,low:n++,explored:!1};var f=e.getElementById(h).connectedEdges().intersection(e);if(f.forEach(function(y){var v=y.target().id();v!==h&&(v in r||u(v),r[v].explored||(r[h].low=Math.min(r[h].low,r[v].low)))}),r[h].index===r[h].low){for(var d=e.spawn();;){var p=a.pop();if(d.merge(e.getElementById(p)),r[p].low=r[h].index,r[p].explored=!0,p===h)break}var m=d.edgesWith(d),g=d.merge(m);i.push(g),s=s.difference(g)}},"stronglyConnectedSearch");return e.forEach(function(u){if(u.isNode()){var h=u.id();h in r||l(h)}}),{cut:s,components:i}},"tarjanStronglyConnected"),cYe={tarjanStronglyConnected:G6,tsc:G6,tscc:G6,tarjanStronglyConnectedComponents:G6},cme={};[Mb,zWe,GWe,VWe,HWe,qWe,jWe,bqe,$1,V1,CP,Mqe,qqe,Zqe,aYe,oYe,lYe,cYe].forEach(function(t){rr(cme,t)});ume=0,hme=1,fme=2,Ku=o(function t(e){if(!(this instanceof t))return new t(e);this.id="Thenable/1.0.7",this.state=ume,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof e=="function"&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))},"api");Ku.prototype={fulfill:o(function(e){return Ope(this,hme,"fulfillValue",e)},"fulfill"),reject:o(function(e){return Ope(this,fme,"rejectReason",e)},"reject"),then:o(function(e,r){var n=this,i=new Ku;return n.onFulfilled.push(Bpe(e,i,"fulfill")),n.onRejected.push(Bpe(r,i,"reject")),dme(n),i.proxy},"then")};Ope=o(function(e,r,n,i){return e.state===ume&&(e.state=r,e[n]=i,dme(e)),e},"deliver"),dme=o(function(e){e.state===hme?Ppe(e,"onFulfilled",e.fulfillValue):e.state===fme&&Ppe(e,"onRejected",e.rejectReason)},"execute"),Ppe=o(function(e,r,n){if(e[r].length!==0){var i=e[r];e[r]=[];var a=o(function(){for(var l=0;l0},"animatedImpl")},"animated"),clearQueue:o(function(){return o(function(){var r=this,n=r.length!==void 0,i=n?r:[r],a=this._private.cy||this;if(!a.styleEnabled())return this;for(var s=0;s0&&this.spawn(i).updateStyle().emit("class"),r},"classes"),addClass:o(function(e){return this.toggleClass(e,!0)},"addClass"),hasClass:o(function(e){var r=this[0];return r!=null&&r._private.classes.has(e)},"hasClass"),toggleClass:o(function(e,r){En(e)||(e=e.match(/\S+/g)||[]);for(var n=this,i=r===void 0,a=[],s=0,l=n.length;s0&&this.spawn(a).updateStyle().emit("class"),n},"toggleClass"),removeClass:o(function(e){return this.toggleClass(e,!1)},"removeClass"),flashClass:o(function(e,r){var n=this;if(r==null)r=250;else if(r===0)return n;return n.addClass(e),setTimeout(function(){n.removeClass(e)},r),n},"flashClass")};Q6.className=Q6.classNames=Q6.classes;$r={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:Ui,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};$r.variable="(?:[\\w-.]|(?:\\\\"+$r.metaChar+"))+";$r.className="(?:[\\w-]|(?:\\\\"+$r.metaChar+"))+";$r.value=$r.string+"|"+$r.number;$r.id=$r.variable;(function(){var t,e,r;for(t=$r.comparatorOp.split("|"),r=0;r=0)&&e!=="="&&($r.comparatorOp+="|\\!"+e)})();mn=o(function(){return{checks:[]}},"newQuery"),zt={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},_P=[{selector:":selected",matches:o(function(e){return e.selected()},"matches")},{selector:":unselected",matches:o(function(e){return!e.selected()},"matches")},{selector:":selectable",matches:o(function(e){return e.selectable()},"matches")},{selector:":unselectable",matches:o(function(e){return!e.selectable()},"matches")},{selector:":locked",matches:o(function(e){return e.locked()},"matches")},{selector:":unlocked",matches:o(function(e){return!e.locked()},"matches")},{selector:":visible",matches:o(function(e){return e.visible()},"matches")},{selector:":hidden",matches:o(function(e){return!e.visible()},"matches")},{selector:":transparent",matches:o(function(e){return e.transparent()},"matches")},{selector:":grabbed",matches:o(function(e){return e.grabbed()},"matches")},{selector:":free",matches:o(function(e){return!e.grabbed()},"matches")},{selector:":removed",matches:o(function(e){return e.removed()},"matches")},{selector:":inside",matches:o(function(e){return!e.removed()},"matches")},{selector:":grabbable",matches:o(function(e){return e.grabbable()},"matches")},{selector:":ungrabbable",matches:o(function(e){return!e.grabbable()},"matches")},{selector:":animated",matches:o(function(e){return e.animated()},"matches")},{selector:":unanimated",matches:o(function(e){return!e.animated()},"matches")},{selector:":parent",matches:o(function(e){return e.isParent()},"matches")},{selector:":childless",matches:o(function(e){return e.isChildless()},"matches")},{selector:":child",matches:o(function(e){return e.isChild()},"matches")},{selector:":orphan",matches:o(function(e){return e.isOrphan()},"matches")},{selector:":nonorphan",matches:o(function(e){return e.isChild()},"matches")},{selector:":compound",matches:o(function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()},"matches")},{selector:":loop",matches:o(function(e){return e.isLoop()},"matches")},{selector:":simple",matches:o(function(e){return e.isSimple()},"matches")},{selector:":active",matches:o(function(e){return e.active()},"matches")},{selector:":inactive",matches:o(function(e){return!e.active()},"matches")},{selector:":backgrounding",matches:o(function(e){return e.backgrounding()},"matches")},{selector:":nonbackgrounding",matches:o(function(e){return!e.backgrounding()},"matches")}].sort(function(t,e){return IHe(t.selector,e.selector)}),Tje=function(){for(var t={},e,r=0;r<_P.length;r++)e=_P[r],t[e.selector]=e.matches;return t}(),kje=o(function(e,r){return Tje[e](r)},"stateSelectorMatches"),Eje="("+_P.map(function(t){return t.selector}).join("|")+")",N1=o(function(e){return e.replace(new RegExp("\\\\("+$r.metaChar+")","g"),function(r,n){return n})},"cleanMetaChars"),xf=o(function(e,r,n){e[e.length-1]=n},"replaceLastQuery"),DP=[{name:"group",query:!0,regex:"("+$r.group+")",populate:o(function(e,r,n){var i=Ai(n,1),a=i[0];r.checks.push({type:zt.GROUP,value:a==="*"?a:a+"s"})},"populate")},{name:"state",query:!0,regex:Eje,populate:o(function(e,r,n){var i=Ai(n,1),a=i[0];r.checks.push({type:zt.STATE,value:a})},"populate")},{name:"id",query:!0,regex:"\\#("+$r.id+")",populate:o(function(e,r,n){var i=Ai(n,1),a=i[0];r.checks.push({type:zt.ID,value:N1(a)})},"populate")},{name:"className",query:!0,regex:"\\.("+$r.className+")",populate:o(function(e,r,n){var i=Ai(n,1),a=i[0];r.checks.push({type:zt.CLASS,value:N1(a)})},"populate")},{name:"dataExists",query:!0,regex:"\\[\\s*("+$r.variable+")\\s*\\]",populate:o(function(e,r,n){var i=Ai(n,1),a=i[0];r.checks.push({type:zt.DATA_EXIST,field:N1(a)})},"populate")},{name:"dataCompare",query:!0,regex:"\\[\\s*("+$r.variable+")\\s*("+$r.comparatorOp+")\\s*("+$r.value+")\\s*\\]",populate:o(function(e,r,n){var i=Ai(n,3),a=i[0],s=i[1],l=i[2],u=new RegExp("^"+$r.string+"$").exec(l)!=null;u?l=l.substring(1,l.length-1):l=parseFloat(l),r.checks.push({type:zt.DATA_COMPARE,field:N1(a),operator:s,value:l})},"populate")},{name:"dataBool",query:!0,regex:"\\[\\s*("+$r.boolOp+")\\s*("+$r.variable+")\\s*\\]",populate:o(function(e,r,n){var i=Ai(n,2),a=i[0],s=i[1];r.checks.push({type:zt.DATA_BOOL,field:N1(s),operator:a})},"populate")},{name:"metaCompare",query:!0,regex:"\\[\\[\\s*("+$r.meta+")\\s*("+$r.comparatorOp+")\\s*("+$r.number+")\\s*\\]\\]",populate:o(function(e,r,n){var i=Ai(n,3),a=i[0],s=i[1],l=i[2];r.checks.push({type:zt.META_COMPARE,field:N1(a),operator:s,value:parseFloat(l)})},"populate")},{name:"nextQuery",separator:!0,regex:$r.separator,populate:o(function(e,r){var n=e.currentSubject,i=e.edgeCount,a=e.compoundCount,s=e[e.length-1];n!=null&&(s.subject=n,e.currentSubject=null),s.edgeCount=i,s.compoundCount=a,e.edgeCount=0,e.compoundCount=0;var l=e[e.length++]=mn();return l},"populate")},{name:"directedEdge",separator:!0,regex:$r.directedEdge,populate:o(function(e,r){if(e.currentSubject==null){var n=mn(),i=r,a=mn();return n.checks.push({type:zt.DIRECTED_EDGE,source:i,target:a}),xf(e,r,n),e.edgeCount++,a}else{var s=mn(),l=r,u=mn();return s.checks.push({type:zt.NODE_SOURCE,source:l,target:u}),xf(e,r,s),e.edgeCount++,u}},"populate")},{name:"undirectedEdge",separator:!0,regex:$r.undirectedEdge,populate:o(function(e,r){if(e.currentSubject==null){var n=mn(),i=r,a=mn();return n.checks.push({type:zt.UNDIRECTED_EDGE,nodes:[i,a]}),xf(e,r,n),e.edgeCount++,a}else{var s=mn(),l=r,u=mn();return s.checks.push({type:zt.NODE_NEIGHBOR,node:l,neighbor:u}),xf(e,r,s),u}},"populate")},{name:"child",separator:!0,regex:$r.child,populate:o(function(e,r){if(e.currentSubject==null){var n=mn(),i=mn(),a=e[e.length-1];return n.checks.push({type:zt.CHILD,parent:a,child:i}),xf(e,r,n),e.compoundCount++,i}else if(e.currentSubject===r){var s=mn(),l=e[e.length-1],u=mn(),h=mn(),f=mn(),d=mn();return s.checks.push({type:zt.COMPOUND_SPLIT,left:l,right:u,subject:h}),h.checks=r.checks,r.checks=[{type:zt.TRUE}],d.checks.push({type:zt.TRUE}),u.checks.push({type:zt.PARENT,parent:d,child:f}),xf(e,l,s),e.currentSubject=h,e.compoundCount++,f}else{var p=mn(),m=mn(),g=[{type:zt.PARENT,parent:p,child:m}];return p.checks=r.checks,r.checks=g,e.compoundCount++,m}},"populate")},{name:"descendant",separator:!0,regex:$r.descendant,populate:o(function(e,r){if(e.currentSubject==null){var n=mn(),i=mn(),a=e[e.length-1];return n.checks.push({type:zt.DESCENDANT,ancestor:a,descendant:i}),xf(e,r,n),e.compoundCount++,i}else if(e.currentSubject===r){var s=mn(),l=e[e.length-1],u=mn(),h=mn(),f=mn(),d=mn();return s.checks.push({type:zt.COMPOUND_SPLIT,left:l,right:u,subject:h}),h.checks=r.checks,r.checks=[{type:zt.TRUE}],d.checks.push({type:zt.TRUE}),u.checks.push({type:zt.ANCESTOR,ancestor:d,descendant:f}),xf(e,l,s),e.currentSubject=h,e.compoundCount++,f}else{var p=mn(),m=mn(),g=[{type:zt.ANCESTOR,ancestor:p,descendant:m}];return p.checks=r.checks,r.checks=g,e.compoundCount++,m}},"populate")},{name:"subject",modifier:!0,regex:$r.subject,populate:o(function(e,r){if(e.currentSubject!=null&&e.currentSubject!==r)return un("Redefinition of subject in selector `"+e.toString()+"`"),!1;e.currentSubject=r;var n=e[e.length-1],i=n.checks[0],a=i==null?null:i.type;a===zt.DIRECTED_EDGE?i.type=zt.NODE_TARGET:a===zt.UNDIRECTED_EDGE&&(i.type=zt.NODE_NEIGHBOR,i.node=i.nodes[1],i.neighbor=i.nodes[0],i.nodes=null)},"populate")}];DP.forEach(function(t){return t.regexObj=new RegExp("^"+t.regex)});Sje=o(function(e){for(var r,n,i,a=0;a0&&f.edgeCount>0)return un("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(f.edgeCount>1)return un("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;f.edgeCount===1&&un("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},"parse"),_je=o(function(){if(this.toStringCache!=null)return this.toStringCache;for(var e=o(function(f){return f??""},"clean"),r=o(function(f){return Zt(f)?'"'+f+'"':e(f)},"cleanVal"),n=o(function(f){return" "+f+" "},"space"),i=o(function(f,d){var p=f.type,m=f.value;switch(p){case zt.GROUP:{var g=e(m);return g.substring(0,g.length-1)}case zt.DATA_COMPARE:{var y=f.field,v=f.operator;return"["+y+n(e(v))+r(m)+"]"}case zt.DATA_BOOL:{var x=f.operator,b=f.field;return"["+e(x)+b+"]"}case zt.DATA_EXIST:{var w=f.field;return"["+w+"]"}case zt.META_COMPARE:{var C=f.operator,T=f.field;return"[["+T+n(e(C))+r(m)+"]]"}case zt.STATE:return m;case zt.ID:return"#"+m;case zt.CLASS:return"."+m;case zt.PARENT:case zt.CHILD:return a(f.parent,d)+n(">")+a(f.child,d);case zt.ANCESTOR:case zt.DESCENDANT:return a(f.ancestor,d)+" "+a(f.descendant,d);case zt.COMPOUND_SPLIT:{var E=a(f.left,d),A=a(f.subject,d),S=a(f.right,d);return E+(E.length>0?" ":"")+A+S}case zt.TRUE:return""}},"checkToString"),a=o(function(f,d){return f.checks.reduce(function(p,m,g){return p+(d===f&&g===0?"$":"")+i(m,d)},"")},"queryToString"),s="",l=0;l1&&l=0&&(r=r.replace("!",""),d=!0),r.indexOf("@")>=0&&(r=r.replace("@",""),f=!0),(a||l||f)&&(u=!a&&!s?"":""+e,h=""+n),f&&(e=u=u.toLowerCase(),n=h=h.toLowerCase()),r){case"*=":i=u.indexOf(h)>=0;break;case"$=":i=u.indexOf(h,u.length-h.length)>=0;break;case"^=":i=u.indexOf(h)===0;break;case"=":i=e===n;break;case">":p=!0,i=e>n;break;case">=":p=!0,i=e>=n;break;case"<":p=!0,i=e1&&arguments[1]!==void 0?arguments[1]:!0;return eB(this,t,e,Tme)};o(kme,"addParent");Y1.forEachUp=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return eB(this,t,e,kme)};o(Pje,"addParentAndChildren");Y1.forEachUpAndDown=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return eB(this,t,e,Pje)};Y1.ancestors=Y1.parents;Bb=Eme={data:cn.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:cn.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:cn.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:cn.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:cn.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:cn.removeData({field:"rscratch",triggerEvent:!1}),id:o(function(){var e=this[0];if(e)return e._private.data.id},"id")};Bb.attr=Bb.data;Bb.removeAttr=Bb.removeData;Bje=Eme,ES={};o(dP,"defineDegreeFunction");rr(ES,{degree:dP(function(t,e){return e.source().same(e.target())?2:1}),indegree:dP(function(t,e){return e.target().same(t)?1:0}),outdegree:dP(function(t,e){return e.source().same(t)?1:0})});o(M1,"defineDegreeBoundsFunction");rr(ES,{minDegree:M1("degree",function(t,e){return te}),minIndegree:M1("indegree",function(t,e){return te}),minOutdegree:M1("outdegree",function(t,e){return te})});rr(ES,{totalDegree:o(function(e){for(var r=0,n=this.nodes(),i=0;i0,p=d;d&&(f=f[0]);var m=p?f.position():{x:0,y:0};r!==void 0?h.position(e,r+m[e]):a!==void 0&&h.position({x:a.x+m.x,y:a.y+m.y})}else{var g=n.position(),y=l?n.parent():null,v=y&&y.length>0,x=v;v&&(y=y[0]);var b=x?y.position():{x:0,y:0};return a={x:g.x-b.x,y:g.y-b.y},e===void 0?a:a[e]}else if(!s)return;return this},"relativePosition")};Vl.modelPosition=Vl.point=Vl.position;Vl.modelPositions=Vl.points=Vl.positions;Vl.renderedPoint=Vl.renderedPosition;Vl.relativePoint=Vl.relativePosition;Fje=Sme;U1=Nf={};Nf.renderedBoundingBox=function(t){var e=this.boundingBox(t),r=this.cy(),n=r.zoom(),i=r.pan(),a=e.x1*n+i.x,s=e.x2*n+i.x,l=e.y1*n+i.y,u=e.y2*n+i.y;return{x1:a,x2:s,y1:l,y2:u,w:s-a,h:u-l}};Nf.dirtyCompoundBoundsCache=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();return!e.styleEnabled()||!e.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var n=r._private;n.compoundBoundsClean=!1,n.bbCache=null,t||r.emitAndNotify("bounds")}}),this)};Nf.updateCompoundBounds=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!t&&e.batching())return this;function r(s){if(!s.isParent())return;var l=s._private,u=s.children(),h=s.pstyle("compound-sizing-wrt-labels").value==="include",f={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},d=u.boundingBox({includeLabels:h,includeOverlays:!1,useCache:!1}),p=l.position;(d.w===0||d.h===0)&&(d={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},d.x1=p.x-d.w/2,d.x2=p.x+d.w/2,d.y1=p.y-d.h/2,d.y2=p.y+d.h/2);function m(_,I,D){var k=0,L=0,R=I+D;return _>0&&R>0&&(k=I/R*_,L=D/R*_),{biasDiff:k,biasComplementDiff:L}}o(m,"computeBiasValues");function g(_,I,D,k){if(D.units==="%")switch(k){case"width":return _>0?D.pfValue*_:0;case"height":return I>0?D.pfValue*I:0;case"average":return _>0&&I>0?D.pfValue*(_+I)/2:0;case"min":return _>0&&I>0?_>I?D.pfValue*I:D.pfValue*_:0;case"max":return _>0&&I>0?_>I?D.pfValue*_:D.pfValue*I:0;default:return 0}else return D.units==="px"?D.pfValue:0}o(g,"computePaddingValues");var y=f.width.left.value;f.width.left.units==="px"&&f.width.val>0&&(y=y*100/f.width.val);var v=f.width.right.value;f.width.right.units==="px"&&f.width.val>0&&(v=v*100/f.width.val);var x=f.height.top.value;f.height.top.units==="px"&&f.height.val>0&&(x=x*100/f.height.val);var b=f.height.bottom.value;f.height.bottom.units==="px"&&f.height.val>0&&(b=b*100/f.height.val);var w=m(f.width.val-d.w,y,v),C=w.biasDiff,T=w.biasComplementDiff,E=m(f.height.val-d.h,x,b),A=E.biasDiff,S=E.biasComplementDiff;l.autoPadding=g(d.w,d.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),l.autoWidth=Math.max(d.w,f.width.val),p.x=(-C+d.x1+d.x2+T)/2,l.autoHeight=Math.max(d.h,f.height.val),p.y=(-A+d.y1+d.y2+S)/2}o(r,"update");for(var n=0;ne.x2?i:e.x2,e.y1=ne.y2?a:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},"updateBounds"),Ip=o(function(e,r){return r==null?e:Gl(e,r.x1,r.y1,r.x2,r.y2)},"updateBoundsFromBox"),gb=o(function(e,r,n){return $l(e,r,n)},"prefixedProperty"),$6=o(function(e,r,n){if(!r.cy().headless()){var i=r._private,a=i.rstyle,s=a.arrowWidth/2,l=r.pstyle(n+"-arrow-shape").value,u,h;if(l!=="none"){n==="source"?(u=a.srcX,h=a.srcY):n==="target"?(u=a.tgtX,h=a.tgtY):(u=a.midX,h=a.midY);var f=i.arrowBounds=i.arrowBounds||{},d=f[n]=f[n]||{};d.x1=u-s,d.y1=h-s,d.x2=u+s,d.y2=h+s,d.w=d.x2-d.x1,d.h=d.y2-d.y1,j6(d,1),Gl(e,d.x1,d.y1,d.x2,d.y2)}}},"updateBoundsFromArrow"),pP=o(function(e,r,n){if(!r.cy().headless()){var i;n?i=n+"-":i="";var a=r._private,s=a.rstyle,l=r.pstyle(i+"label").strValue;if(l){var u=r.pstyle("text-halign"),h=r.pstyle("text-valign"),f=gb(s,"labelWidth",n),d=gb(s,"labelHeight",n),p=gb(s,"labelX",n),m=gb(s,"labelY",n),g=r.pstyle(i+"text-margin-x").pfValue,y=r.pstyle(i+"text-margin-y").pfValue,v=r.isEdge(),x=r.pstyle(i+"text-rotation"),b=r.pstyle("text-outline-width").pfValue,w=r.pstyle("text-border-width").pfValue,C=w/2,T=r.pstyle("text-background-padding").pfValue,E=2,A=d,S=f,_=S/2,I=A/2,D,k,L,R;if(v)D=p-_,k=p+_,L=m-I,R=m+I;else{switch(u.value){case"left":D=p-S,k=p;break;case"center":D=p-_,k=p+_;break;case"right":D=p,k=p+S;break}switch(h.value){case"top":L=m-A,R=m;break;case"center":L=m-I,R=m+I;break;case"bottom":L=m,R=m+A;break}}var O=g-Math.max(b,C)-T-E,N=g+Math.max(b,C)+T+E,B=y-Math.max(b,C)-T-E,F=y+Math.max(b,C)+T+E;D+=O,k+=N,L+=B,R+=F;var P=n||"main",G=a.labelBounds,z=G[P]=G[P]||{};z.x1=D,z.y1=L,z.x2=k,z.y2=R,z.w=k-D,z.h=R-L,z.leftPad=O,z.rightPad=N,z.topPad=B,z.botPad=F;var H=v&&x.strValue==="autorotate",Q=x.pfValue!=null&&x.pfValue!==0;if(H||Q){var j=H?gb(a.rstyle,"labelAngle",n):x.pfValue,ie=Math.cos(j),ne=Math.sin(j),le=(D+k)/2,he=(L+R)/2;if(!v){switch(u.value){case"left":le=k;break;case"right":le=D;break}switch(h.value){case"top":he=R;break;case"bottom":he=L;break}}var K=o(function(ce,ae){return ce=ce-le,ae=ae-he,{x:ce*ie-ae*ne+le,y:ce*ne+ae*ie+he}},"rotate"),X=K(D,L),te=K(D,R),J=K(k,L),se=K(k,R);D=Math.min(X.x,te.x,J.x,se.x),k=Math.max(X.x,te.x,J.x,se.x),L=Math.min(X.y,te.y,J.y,se.y),R=Math.max(X.y,te.y,J.y,se.y)}var ue=P+"Rot",Z=G[ue]=G[ue]||{};Z.x1=D,Z.y1=L,Z.x2=k,Z.y2=R,Z.w=k-D,Z.h=R-L,Gl(e,D,L,k,R),Gl(a.labelBounds.all,D,L,k,R)}return e}},"updateBoundsFromLabel"),zje=o(function(e,r){if(!r.cy().headless()){var n=r.pstyle("outline-opacity").value,i=r.pstyle("outline-width").value;if(n>0&&i>0){var a=r.pstyle("outline-offset").value,s=r.pstyle("shape").value,l=i+a,u=(e.w+l*2)/e.w,h=(e.h+l*2)/e.h,f=0,d=0;["diamond","pentagon","round-triangle"].includes(s)?(u=(e.w+l*2.4)/e.w,d=-l/3.6):["concave-hexagon","rhomboid","right-rhomboid"].includes(s)?u=(e.w+l*2.4)/e.w:s==="star"?(u=(e.w+l*2.8)/e.w,h=(e.h+l*2.6)/e.h,d=-l/3.8):s==="triangle"?(u=(e.w+l*2.8)/e.w,h=(e.h+l*2.4)/e.h,d=-l/1.4):s==="vee"&&(u=(e.w+l*4.4)/e.w,h=(e.h+l*3.8)/e.h,d=-l*.5);var p=e.h*h-e.h,m=e.w*u-e.w;if(K6(e,[Math.ceil(p/2),Math.ceil(m/2)]),f!=0||d!==0){var g=sqe(e,f,d);eme(e,g)}}}},"updateBoundsFromOutline"),Gje=o(function(e,r){var n=e._private.cy,i=n.styleEnabled(),a=n.headless(),s=zs(),l=e._private,u=e.isNode(),h=e.isEdge(),f,d,p,m,g,y,v=l.rstyle,x=u&&i?e.pstyle("bounds-expansion").pfValue:[0],b=o(function(Se){return Se.pstyle("display").value!=="none"},"isDisplayed"),w=!i||b(e)&&(!h||b(e.source())&&b(e.target()));if(w){var C=0,T=0;i&&r.includeOverlays&&(C=e.pstyle("overlay-opacity").value,C!==0&&(T=e.pstyle("overlay-padding").value));var E=0,A=0;i&&r.includeUnderlays&&(E=e.pstyle("underlay-opacity").value,E!==0&&(A=e.pstyle("underlay-padding").value));var S=Math.max(T,A),_=0,I=0;if(i&&(_=e.pstyle("width").pfValue,I=_/2),u&&r.includeNodes){var D=e.position();g=D.x,y=D.y;var k=e.outerWidth(),L=k/2,R=e.outerHeight(),O=R/2;f=g-L,d=g+L,p=y-O,m=y+O,Gl(s,f,p,d,m),i&&r.includeOutlines&&zje(s,e)}else if(h&&r.includeEdges)if(i&&!a){var N=e.pstyle("curve-style").strValue;if(f=Math.min(v.srcX,v.midX,v.tgtX),d=Math.max(v.srcX,v.midX,v.tgtX),p=Math.min(v.srcY,v.midY,v.tgtY),m=Math.max(v.srcY,v.midY,v.tgtY),f-=I,d+=I,p-=I,m+=I,Gl(s,f,p,d,m),N==="haystack"){var B=v.haystackPts;if(B&&B.length===2){if(f=B[0].x,p=B[0].y,d=B[1].x,m=B[1].y,f>d){var F=f;f=d,d=F}if(p>m){var P=p;p=m,m=P}Gl(s,f-I,p-I,d+I,m+I)}}else if(N==="bezier"||N==="unbundled-bezier"||N.endsWith("segments")||N.endsWith("taxi")){var G;switch(N){case"bezier":case"unbundled-bezier":G=v.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":G=v.linePts;break}if(G!=null)for(var z=0;zd){var le=f;f=d,d=le}if(p>m){var he=p;p=m,m=he}f-=I,d+=I,p-=I,m+=I,Gl(s,f,p,d,m)}if(i&&r.includeEdges&&h&&($6(s,e,"mid-source"),$6(s,e,"mid-target"),$6(s,e,"source"),$6(s,e,"target")),i){var K=e.pstyle("ghost").value==="yes";if(K){var X=e.pstyle("ghost-offset-x").pfValue,te=e.pstyle("ghost-offset-y").pfValue;Gl(s,s.x1+X,s.y1+te,s.x2+X,s.y2+te)}}var J=l.bodyBounds=l.bodyBounds||{};Tpe(J,s),K6(J,x),j6(J,1),i&&(f=s.x1,d=s.x2,p=s.y1,m=s.y2,Gl(s,f-S,p-S,d+S,m+S));var se=l.overlayBounds=l.overlayBounds||{};Tpe(se,s),K6(se,x),j6(se,1);var ue=l.labelBounds=l.labelBounds||{};ue.all!=null?aqe(ue.all):ue.all=zs(),i&&r.includeLabels&&(r.includeMainLabels&&pP(s,e,null),h&&(r.includeSourceLabels&&pP(s,e,"source"),r.includeTargetLabels&&pP(s,e,"target")))}return s.x1=Qo(s.x1),s.y1=Qo(s.y1),s.x2=Qo(s.x2),s.y2=Qo(s.y2),s.w=Qo(s.x2-s.x1),s.h=Qo(s.y2-s.y1),s.w>0&&s.h>0&&w&&(K6(s,x),j6(s,1)),s},"boundingBoxImpl"),Ame=o(function(e){var r=0,n=o(function(s){return(s?1:0)<=0;l--)s(l);return this};Df.removeAllListeners=function(){return this.removeListener("*")};Df.emit=Df.trigger=function(t,e,r){var n=this.listeners,i=n.length;return this.emitting++,En(e)||(e=[e]),rKe(this,function(a,s){r!=null&&(n=[{event:s.event,type:s.type,namespace:s.namespace,callback:r}],i=n.length);for(var l=o(function(f){var d=n[f];if(d.type===s.type&&(!d.namespace||d.namespace===s.namespace||d.namespace===eKe)&&a.eventMatches(a.context,d,s)){var p=[s];e!=null&&MWe(p,e),a.beforeEmit(a.context,d,s),d.conf&&d.conf.one&&(a.listeners=a.listeners.filter(function(y){return y!==d}));var m=a.callbackContext(a.context,d,s),g=d.callback.apply(m,p);a.afterEmit(a.context,d,s),g===!1&&(s.stopPropagation(),s.preventDefault())}},"_loop2"),u=0;u1&&!s){var l=this.length-1,u=this[l],h=u._private.data.id;this[l]=void 0,this[e]=u,a.set(h,{ele:u,index:e})}return this.length--,this},"unmergeAt"),unmergeOne:o(function(e){e=e[0];var r=this._private,n=e._private.data.id,i=r.map,a=i.get(n);if(!a)return this;var s=a.index;return this.unmergeAt(s),this},"unmergeOne"),unmerge:o(function(e){var r=this._private.cy;if(!e)return this;if(e&&Zt(e)){var n=e;e=r.mutableElements().filter(n)}for(var i=0;i=0;r--){var n=this[r];e(n)&&this.unmergeAt(r)}return this},"unmergeBy"),map:o(function(e,r){for(var n=[],i=this,a=0;an&&(n=u,i=l)}return{value:n,ele:i}},"max"),min:o(function(e,r){for(var n=1/0,i,a=this,s=0;s=0&&a"u"?"undefined":Hi(Symbol))!=e&&Hi(Symbol.iterator)!=e;r&&(uS[Symbol.iterator]=function(){var n=this,i={value:void 0,done:!1},a=0,s=this.length;return N0e({next:o(function(){return a1&&arguments[1]!==void 0?arguments[1]:!0,n=this[0],i=n.cy();if(i.styleEnabled()&&n){n._private.styleDirty&&(n._private.styleDirty=!1,i.style().apply(n));var a=n._private.style[e];return a??(r?i.style().getDefaultProperty(e):null)}},"parsedStyle"),numericStyle:o(function(e){var r=this[0];if(r.cy().styleEnabled()&&r){var n=r.pstyle(e);return n.pfValue!==void 0?n.pfValue:n.value}},"numericStyle"),numericStyleUnits:o(function(e){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(e).units},"numericStyleUnits"),renderedStyle:o(function(e){var r=this.cy();if(!r.styleEnabled())return this;var n=this[0];if(n)return r.style().getRenderedStyle(n,e)},"renderedStyle"),style:o(function(e,r){var n=this.cy();if(!n.styleEnabled())return this;var i=!1,a=n.style();if(Vr(e)){var s=e;a.applyBypass(this,s,i),this.emitAndNotify("style")}else if(Zt(e))if(r===void 0){var l=this[0];return l?a.getStylePropertyValue(l,e):void 0}else a.applyBypass(this,e,r,i),this.emitAndNotify("style");else if(e===void 0){var u=this[0];return u?a.getRawStyle(u):void 0}return this},"style"),removeStyle:o(function(e){var r=this.cy();if(!r.styleEnabled())return this;var n=!1,i=r.style(),a=this;if(e===void 0)for(var s=0;s0&&e.push(f[0]),e.push(l[0])}return this.spawn(e,!0).filter(t)},"neighborhood"),closedNeighborhood:o(function(e){return this.neighborhood().add(this).filter(e)},"closedNeighborhood"),openNeighborhood:o(function(e){return this.neighborhood(e)},"openNeighborhood")});Fa.neighbourhood=Fa.neighborhood;Fa.closedNeighbourhood=Fa.closedNeighborhood;Fa.openNeighbourhood=Fa.openNeighborhood;rr(Fa,{source:Zo(o(function(e){var r=this[0],n;return r&&(n=r._private.source||r.cy().collection()),n&&e?n.filter(e):n},"sourceImpl"),"source"),target:Zo(o(function(e){var r=this[0],n;return r&&(n=r._private.target||r.cy().collection()),n&&e?n.filter(e):n},"targetImpl"),"target"),sources:e0e({attr:"source"}),targets:e0e({attr:"target"})});o(e0e,"defineSourceFunction");rr(Fa,{edgesWith:Zo(t0e(),"edgesWith"),edgesTo:Zo(t0e({thisIsSrc:!0}),"edgesTo")});o(t0e,"defineEdgesWithFunction");rr(Fa,{connectedEdges:Zo(function(t){for(var e=[],r=this,n=0;n0);return s},"components"),component:o(function(){var e=this[0];return e.cy().mutableElements().components(e)[0]},"component")});Fa.componentsOf=Fa.components;ba=o(function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===void 0){ai("A collection must have a reference to the core");return}var a=new Wc,s=!1;if(!r)r=[];else if(r.length>0&&Vr(r[0])&&!Vb(r[0])){s=!0;for(var l=[],u=new X1,h=0,f=r.length;h0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=r.cy(),i=n._private,a=[],s=[],l,u=0,h=r.length;u0){for(var P=l.length===r.length?r:new ba(n,l),G=0;G0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=[],i={},a=r._private.cy;function s(R){for(var O=R._private.edges,N=0;N0&&(t?D.emitAndNotify("remove"):e&&D.emit("remove"));for(var k=0;kf&&Math.abs(g.v)>f;);return p?function(y){return u[y*(u.length-1)|0]}:h},"springRK4Factory")}(),Nn=o(function(e,r,n,i){var a=fKe(e,r,n,i);return function(s,l,u){return s+(l-s)*a(u)}},"cubicBezier"),J6={linear:o(function(e,r,n){return e+(r-e)*n},"linear"),ease:Nn(.25,.1,.25,1),"ease-in":Nn(.42,0,1,1),"ease-out":Nn(0,0,.58,1),"ease-in-out":Nn(.42,0,.58,1),"ease-in-sine":Nn(.47,0,.745,.715),"ease-out-sine":Nn(.39,.575,.565,1),"ease-in-out-sine":Nn(.445,.05,.55,.95),"ease-in-quad":Nn(.55,.085,.68,.53),"ease-out-quad":Nn(.25,.46,.45,.94),"ease-in-out-quad":Nn(.455,.03,.515,.955),"ease-in-cubic":Nn(.55,.055,.675,.19),"ease-out-cubic":Nn(.215,.61,.355,1),"ease-in-out-cubic":Nn(.645,.045,.355,1),"ease-in-quart":Nn(.895,.03,.685,.22),"ease-out-quart":Nn(.165,.84,.44,1),"ease-in-out-quart":Nn(.77,0,.175,1),"ease-in-quint":Nn(.755,.05,.855,.06),"ease-out-quint":Nn(.23,1,.32,1),"ease-in-out-quint":Nn(.86,0,.07,1),"ease-in-expo":Nn(.95,.05,.795,.035),"ease-out-expo":Nn(.19,1,.22,1),"ease-in-out-expo":Nn(1,0,0,1),"ease-in-circ":Nn(.6,.04,.98,.335),"ease-out-circ":Nn(.075,.82,.165,1),"ease-in-out-circ":Nn(.785,.135,.15,.86),spring:o(function(e,r,n){if(n===0)return J6.linear;var i=dKe(e,r,n);return function(a,s,l){return a+(s-a)*i(l)}},"spring"),"cubic-bezier":Nn};o(n0e,"getEasedValue");o(i0e,"getValue");o(I1,"ease");o(pKe,"step$1");o(vb,"valid");o(mKe,"startAnimation");o(a0e,"stepAll");gKe={animate:cn.animate(),animation:cn.animation(),animated:cn.animated(),clearQueue:cn.clearQueue(),delay:cn.delay(),delayAnimation:cn.delayAnimation(),stop:cn.stop(),addToAnimationPool:o(function(e){var r=this;r.styleEnabled()&&r._private.aniEles.merge(e)},"addToAnimationPool"),stopAnimationLoop:o(function(){this._private.animationsRunning=!1},"stopAnimationLoop"),startAnimationLoop:o(function(){var e=this;if(e._private.animationsRunning=!0,!e.styleEnabled())return;function r(){e._private.animationsRunning&&aS(o(function(a){a0e(a,e),r()},"animationStep"))}o(r,"headlessStep");var n=e.renderer();n&&n.beforeRender?n.beforeRender(o(function(a,s){a0e(s,e)},"rendererAnimationStep"),n.beforeRenderPriorities.animations):r()},"startAnimationLoop")},yKe={qualifierCompare:o(function(e,r){return e==null||r==null?e==null&&r==null:e.sameText(r)},"qualifierCompare"),eventMatches:o(function(e,r,n){var i=r.qualifier;return i!=null?e!==n.target&&Vb(n.target)&&i.matches(n.target):!0},"eventMatches"),addEventFields:o(function(e,r){r.cy=e,r.target=e},"addEventFields"),callbackContext:o(function(e,r,n){return r.qualifier!=null?n.target:e},"callbackContext")},H6=o(function(e){return Zt(e)?new Af(e):e},"argSelector"),Fme={createEmitter:o(function(){var e=this._private;return e.emitter||(e.emitter=new SS(yKe,this)),this},"createEmitter"),emitter:o(function(){return this._private.emitter},"emitter"),on:o(function(e,r,n){return this.emitter().on(e,H6(r),n),this},"on"),removeListener:o(function(e,r,n){return this.emitter().removeListener(e,H6(r),n),this},"removeListener"),removeAllListeners:o(function(){return this.emitter().removeAllListeners(),this},"removeAllListeners"),one:o(function(e,r,n){return this.emitter().one(e,H6(r),n),this},"one"),once:o(function(e,r,n){return this.emitter().one(e,H6(r),n),this},"once"),emit:o(function(e,r){return this.emitter().emit(e,r),this},"emit"),emitAndNotify:o(function(e,r){return this.emit(e),this.notify(e,r),this},"emitAndNotify")};cn.eventAliasesOn(Fme);LP={png:o(function(e){var r=this._private.renderer;return e=e||{},r.png(e)},"png"),jpg:o(function(e){var r=this._private.renderer;return e=e||{},e.bg=e.bg||"#fff",r.jpg(e)},"jpg")};LP.jpeg=LP.jpg;eS={layout:o(function(e){var r=this;if(e==null){ai("Layout options must be specified to make a layout");return}if(e.name==null){ai("A `name` must be specified to make a layout");return}var n=e.name,i=r.extension("layout",n);if(i==null){ai("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var a;Zt(e.eles)?a=r.$(e.eles):a=e.eles!=null?e.eles:r.$();var s=new i(rr({},e,{cy:r,eles:a}));return s},"layout")};eS.createLayout=eS.makeLayout=eS.layout;vKe={notify:o(function(e,r){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var i=n.batchNotifications[e]=n.batchNotifications[e]||this.collection();r!=null&&i.merge(r);return}if(n.notificationsEnabled){var a=this.renderer();this.destroyed()||!a||a.notify(e,r)}},"notify"),notifications:o(function(e){var r=this._private;return e===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!e,this)},"notifications"),noNotifications:o(function(e){this.notifications(!1),e(),this.notifications(!0)},"noNotifications"),batching:o(function(){return this._private.batchCount>0},"batching"),startBatch:o(function(){var e=this._private;return e.batchCount==null&&(e.batchCount=0),e.batchCount===0&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},"startBatch"),endBatch:o(function(){var e=this._private;if(e.batchCount===0)return this;if(e.batchCount--,e.batchCount===0){e.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(e.batchNotifications).forEach(function(n){var i=e.batchNotifications[n];i.empty()?r.notify(n):r.notify(n,i)})}return this},"endBatch"),batch:o(function(e){return this.startBatch(),e(),this.endBatch(),this},"batch"),batchData:o(function(e){var r=this;return this.batch(function(){for(var n=Object.keys(e),i=0;i0;)r.removeChild(r.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(n){var i=n._private;i.rscratch={},i.rstyle={},i.animation.current=[],i.animation.queue=[]})},"destroyRenderer"),onRender:o(function(e){return this.on("render",e)},"onRender"),offRender:o(function(e){return this.off("render",e)},"offRender")};RP.invalidateDimensions=RP.resize;tS={collection:o(function(e,r){return Zt(e)?this.$(e):ho(e)?e.collection():En(e)?(r||(r={}),new ba(this,e,r.unique,r.removed)):new ba(this)},"collection"),nodes:o(function(e){var r=this.$(function(n){return n.isNode()});return e?r.filter(e):r},"nodes"),edges:o(function(e){var r=this.$(function(n){return n.isEdge()});return e?r.filter(e):r},"edges"),$:o(function(e){var r=this._private.elements;return e?r.filter(e):r.spawnSelf()},"$"),mutableElements:o(function(){return this._private.elements},"mutableElements")};tS.elements=tS.filter=tS.$;Ga={},Cb="t",bKe="f";Ga.apply=function(t){for(var e=this,r=e._private,n=r.cy,i=n.collection(),a=0;a0;if(p||d&&m){var g=void 0;p&&m||p?g=h.properties:m&&(g=h.mappedProperties);for(var y=0;y1&&(C=1),l.color){var E=n.valueMin[0],A=n.valueMax[0],S=n.valueMin[1],_=n.valueMax[1],I=n.valueMin[2],D=n.valueMax[2],k=n.valueMin[3]==null?1:n.valueMin[3],L=n.valueMax[3]==null?1:n.valueMax[3],R=[Math.round(E+(A-E)*C),Math.round(S+(_-S)*C),Math.round(I+(D-I)*C),Math.round(k+(L-k)*C)];a={bypass:n.bypass,name:n.name,value:R,strValue:"rgb("+R[0]+", "+R[1]+", "+R[2]+")"}}else if(l.number){var O=n.valueMin+(n.valueMax-n.valueMin)*C;a=this.parse(n.name,O,n.bypass,p)}else return!1;if(!a)return y(),!1;a.mapping=n,n=a;break}case s.data:{for(var N=n.field.split("."),B=d.data,F=0;F0&&a>0){for(var l={},u=!1,h=0;h0?t.delayAnimation(s).play().promise().then(w):w()}).then(function(){return t.animation({style:l,duration:a,easing:t.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(t,i),t.emitAndNotify("style"),n.transitioning=!1})}else n.transitioning&&(this.removeBypasses(t,i),t.emitAndNotify("style"),n.transitioning=!1)};Ga.checkTrigger=function(t,e,r,n,i,a){var s=this.properties[e],l=i(s);l!=null&&l(r,n)&&a(s)};Ga.checkZOrderTrigger=function(t,e,r,n){var i=this;this.checkTrigger(t,e,r,n,function(a){return a.triggersZOrder},function(){i._private.cy.notify("zorder",t)})};Ga.checkBoundsTrigger=function(t,e,r,n){this.checkTrigger(t,e,r,n,function(i){return i.triggersBounds},function(i){t.dirtyCompoundBoundsCache(),t.dirtyBoundingBoxCache(),i.triggersBoundsOfParallelBeziers&&e==="curve-style"&&(r==="bezier"||n==="bezier")&&t.parallelEdges().forEach(function(a){a.dirtyBoundingBoxCache()}),i.triggersBoundsOfConnectedEdges&&e==="display"&&(r==="none"||n==="none")&&t.connectedEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};Ga.checkTriggers=function(t,e,r,n){t.dirtyStyleCache(),this.checkZOrderTrigger(t,e,r,n),this.checkBoundsTrigger(t,e,r,n)};Yb={};Yb.applyBypass=function(t,e,r,n){var i=this,a=[],s=!0;if(e==="*"||e==="**"){if(r!==void 0)for(var l=0;li.length?n=n.substr(i.length):n=""}o(l,"removeSelAndBlockFromRemaining");function u(){a.length>s.length?a=a.substr(s.length):a=""}for(o(u,"removePropAndValFromRem");;){var h=n.match(/^\s*$/);if(h)break;var f=n.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!f){un("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+n);break}i=f[0];var d=f[1];if(d!=="core"){var p=new Af(d);if(p.invalid){un("Skipping parsing of block: Invalid selector found in string stylesheet: "+d),l();continue}}var m=f[2],g=!1;a=m;for(var y=[];;){var v=a.match(/^\s*$/);if(v)break;var x=a.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!x){un("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+m),g=!0;break}s=x[0];var b=x[1],w=x[2],C=e.properties[b];if(!C){un("Skipping property: Invalid property name in: "+s),u();continue}var T=r.parse(b,w);if(!T){un("Skipping property: Invalid property definition in: "+s),u();continue}y.push({name:b,val:w}),u()}if(g){l();break}r.selector(d);for(var E=0;E=7&&e[0]==="d"&&(f=new RegExp(l.data.regex).exec(e))){if(r)return!1;var p=l.data;return{name:t,value:f,strValue:""+e,mapped:p,field:f[1],bypass:r}}else if(e.length>=10&&e[0]==="m"&&(d=new RegExp(l.mapData.regex).exec(e))){if(r||h.multiple)return!1;var m=l.mapData;if(!(h.color||h.number))return!1;var g=this.parse(t,d[4]);if(!g||g.mapped)return!1;var y=this.parse(t,d[5]);if(!y||y.mapped)return!1;if(g.pfValue===y.pfValue||g.strValue===y.strValue)return un("`"+t+": "+e+"` is not a valid mapper because the output range is zero; converting to `"+t+": "+g.strValue+"`"),this.parse(t,g.strValue);if(h.color){var v=g.value,x=y.value,b=v[0]===x[0]&&v[1]===x[1]&&v[2]===x[2]&&(v[3]===x[3]||(v[3]==null||v[3]===1)&&(x[3]==null||x[3]===1));if(b)return!1}return{name:t,value:d,strValue:""+e,mapped:m,field:d[1],fieldMin:parseFloat(d[2]),fieldMax:parseFloat(d[3]),valueMin:g.value,valueMax:y.value,bypass:r}}}if(h.multiple&&n!=="multiple"){var w;if(u?w=e.split(/\s+/):En(e)?w=e:w=[e],h.evenMultiple&&w.length%2!==0)return null;for(var C=[],T=[],E=[],A="",S=!1,_=0;_0?" ":"")+I.strValue}return h.validate&&!h.validate(C,T)?null:h.singleEnum&&S?C.length===1&&Zt(C[0])?{name:t,value:C[0],strValue:C[0],bypass:r}:null:{name:t,value:C,pfValue:E,strValue:A,bypass:r,units:T}}var D=o(function(){for(var K=0;Kh.max||h.strictMax&&e===h.max))return null;var N={name:t,value:e,strValue:""+e+(k||""),units:k,bypass:r};return h.unitless||k!=="px"&&k!=="em"?N.pfValue=e:N.pfValue=k==="px"||!k?e:this.getEmSizeInPixels()*e,(k==="ms"||k==="s")&&(N.pfValue=k==="ms"?e:1e3*e),(k==="deg"||k==="rad")&&(N.pfValue=k==="rad"?e:tqe(e)),k==="%"&&(N.pfValue=e/100),N}else if(h.propList){var B=[],F=""+e;if(F!=="none"){for(var P=F.split(/\s*,\s*|\s+/),G=0;G0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0){u=Math.min((s-2*r)/n.w,(l-2*r)/n.h),u=u>this._private.maxZoom?this._private.maxZoom:u,u=u=n.minZoom&&(n.maxZoom=r),this},"zoomRange"),minZoom:o(function(e){return e===void 0?this._private.minZoom:this.zoomRange({min:e})},"minZoom"),maxZoom:o(function(e){return e===void 0?this._private.maxZoom:this.zoomRange({max:e})},"maxZoom"),getZoomedViewport:o(function(e){var r=this._private,n=r.pan,i=r.zoom,a,s,l=!1;if(r.zoomingEnabled||(l=!0),Ct(e)?s=e:Vr(e)&&(s=e.level,e.position!=null?a=xS(e.position,i,n):e.renderedPosition!=null&&(a=e.renderedPosition),a!=null&&!r.panningEnabled&&(l=!0)),s=s>r.maxZoom?r.maxZoom:s,s=sr.maxZoom||!r.zoomingEnabled?s=!0:(r.zoom=u,a.push("zoom"))}if(i&&(!s||!e.cancelOnFailedZoom)&&r.panningEnabled){var h=e.pan;Ct(h.x)&&(r.pan.x=h.x,l=!1),Ct(h.y)&&(r.pan.y=h.y,l=!1),l||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},"viewport"),center:o(function(e){var r=this.getCenterPan(e);return r&&(this._private.pan=r,this.emit("pan viewport"),this.notify("viewport")),this},"center"),getCenterPan:o(function(e,r){if(this._private.panningEnabled){if(Zt(e)){var n=e;e=this.mutableElements().filter(n)}else ho(e)||(e=this.mutableElements());if(e.length!==0){var i=e.boundingBox(),a=this.width(),s=this.height();r=r===void 0?this._private.zoom:r;var l={x:(a-r*(i.x1+i.x2))/2,y:(s-r*(i.y1+i.y2))/2};return l}}},"getCenterPan"),reset:o(function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},"reset"),invalidateSize:o(function(){this._private.sizeCache=null},"invalidateSize"),size:o(function(){var e=this._private,r=e.container,n=this;return e.sizeCache=e.sizeCache||(r?function(){var i=n.window().getComputedStyle(r),a=o(function(l){return parseFloat(i.getPropertyValue(l))},"val");return{width:r.clientWidth-a("padding-left")-a("padding-right"),height:r.clientHeight-a("padding-top")-a("padding-bottom")}}():{width:1,height:1})},"size"),width:o(function(){return this.size().width},"width"),height:o(function(){return this.size().height},"height"),extent:o(function(){var e=this._private.pan,r=this._private.zoom,n=this.renderedExtent(),i={x1:(n.x1-e.x)/r,x2:(n.x2-e.x)/r,y1:(n.y1-e.y)/r,y2:(n.y2-e.y)/r};return i.w=i.x2-i.x1,i.h=i.y2-i.y1,i},"extent"),renderedExtent:o(function(){var e=this.width(),r=this.height();return{x1:0,y1:0,x2:e,y2:r,w:e,h:r}},"renderedExtent"),multiClickDebounceTime:o(function(e){if(e)this._private.multiClickDebounceTime=e;else return this._private.multiClickDebounceTime;return this},"multiClickDebounceTime")};Vp.centre=Vp.center;Vp.autolockNodes=Vp.autolock;Vp.autoungrabifyNodes=Vp.autoungrabify;zb={data:cn.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:cn.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:cn.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:cn.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};zb.attr=zb.data;zb.removeAttr=zb.removeData;Gb=o(function(e){var r=this;e=rr({},e);var n=e.container;n&&!iS(n)&&iS(n[0])&&(n=n[0]);var i=n?n._cyreg:null;i=i||{},i&&i.cy&&(i.cy.destroy(),i={});var a=i.readies=i.readies||[];n&&(n._cyreg=i),i.cy=r;var s=Vi!==void 0&&n!==void 0&&!e.headless,l=e;l.layout=rr({name:s?"grid":"null"},l.layout),l.renderer=rr({name:s?"canvas":"null"},l.renderer);var u=o(function(g,y,v){return y!==void 0?y:v!==void 0?v:g},"defVal"),h=this._private={container:n,ready:!1,options:l,elements:new ba(this),listeners:[],aniEles:new ba(this),data:l.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:u(!0,l.zoomingEnabled),userZoomingEnabled:u(!0,l.userZoomingEnabled),panningEnabled:u(!0,l.panningEnabled),userPanningEnabled:u(!0,l.userPanningEnabled),boxSelectionEnabled:u(!0,l.boxSelectionEnabled),autolock:u(!1,l.autolock,l.autolockNodes),autoungrabify:u(!1,l.autoungrabify,l.autoungrabifyNodes),autounselectify:u(!1,l.autounselectify),styleEnabled:l.styleEnabled===void 0?s:l.styleEnabled,zoom:Ct(l.zoom)?l.zoom:1,pan:{x:Vr(l.pan)&&Ct(l.pan.x)?l.pan.x:0,y:Vr(l.pan)&&Ct(l.pan.y)?l.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:u(250,l.multiClickDebounceTime)};this.createEmitter(),this.selectionType(l.selectionType),this.zoomRange({min:l.minZoom,max:l.maxZoom});var f=o(function(g,y){var v=g.some(CHe);if(v)return j1.all(g).then(y);y(g)},"loadExtData");h.styleEnabled&&r.setStyle([]);var d=rr({},l,l.renderer);r.initRenderer(d);var p=o(function(g,y,v){r.notifications(!1);var x=r.mutableElements();x.length>0&&x.remove(),g!=null&&(Vr(g)||En(g))&&r.add(g),r.one("layoutready",function(w){r.notifications(!0),r.emit(w),r.one("load",y),r.emitAndNotify("load")}).one("layoutstop",function(){r.one("done",v),r.emit("done")});var b=rr({},r._private.options.layout);b.eles=r.elements(),r.layout(b).run()},"setElesAndLayout");f([l.style,l.elements],function(m){var g=m[0],y=m[1];h.styleEnabled&&r.style().append(g),p(y,function(){r.startAnimationLoop(),h.ready=!0,si(l.ready)&&r.on("ready",l.ready);for(var v=0;v0,l=!!t.boundingBox,u=e.extent(),h=zs(l?t.boundingBox:{x1:u.x1,y1:u.y1,w:u.w,h:u.h}),f;if(ho(t.roots))f=t.roots;else if(En(t.roots)){for(var d=[],p=0;p0;){var O=R(),N=I(O,k);if(N)O.outgoers().filter(function(ae){return ae.isNode()&&r.has(ae)}).forEach(L);else if(N===null){un("Detected double maximal shift for node `"+O.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var B=0;if(t.avoidOverlap)for(var F=0;F0&&b[0].length<=3?ze/2:0),Ie=2*Math.PI/b[Ge].length*He;return Ge===0&&b[0].length===1&&(Re=1),{x:se.x+Re*Math.cos(Ie),y:se.y+Re*Math.sin(Ie)}}else{var be=b[Ge].length,W=Math.max(be===1?0:l?(h.w-t.padding*2-ue.w)/((t.grid?Se:be)-1):(h.w-t.padding*2-ue.w)/((t.grid?Se:be)+1),B),de={x:se.x+(He+1-(be+1)/2)*W,y:se.y+(Ge+1-(ne+1)/2)*Z};return de}},"getPosition");return r.nodes().layoutPositions(this,t,ce),this};SKe={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(Gme,"CircleLayout");Gme.prototype.run=function(){var t=this.options,e=t,r=t.cy,n=e.eles,i=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,a=n.nodes().not(":parent");e.sort&&(a=a.sort(e.sort));for(var s=zs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=e.sweep===void 0?2*Math.PI-2*Math.PI/a.length:e.sweep,h=u/Math.max(1,a.length-1),f,d=0,p=0;p1&&e.avoidOverlap){d*=1.75;var x=Math.cos(h)-Math.cos(0),b=Math.sin(h)-Math.sin(0),w=Math.sqrt(d*d/(x*x+b*b));f=Math.max(w,f)}var C=o(function(E,A){var S=e.startAngle+A*h*(i?1:-1),_=f*Math.cos(S),I=f*Math.sin(S),D={x:l.x+_,y:l.y+I};return D},"getPos");return n.nodes().layoutPositions(this,e,C),this};CKe={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:o(function(e){return e.degree()},"concentric"),levelWidth:o(function(e){return e.maxDegree()/4},"levelWidth"),animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o($me,"ConcentricLayout");$me.prototype.run=function(){for(var t=this.options,e=t,r=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,n=t.cy,i=e.eles,a=i.nodes().not(":parent"),s=zs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=[],h=0,f=0;f0){var T=Math.abs(b[0].value-C.value);T>=v&&(b=[],x.push(b))}b.push(C)}var E=h+e.minNodeSpacing;if(!e.avoidOverlap){var A=x.length>0&&x[0].length>1,S=Math.min(s.w,s.h)/2-E,_=S/(x.length+A?1:0);E=Math.min(E,_)}for(var I=0,D=0;D1&&e.avoidOverlap){var O=Math.cos(R)-Math.cos(0),N=Math.sin(R)-Math.sin(0),B=Math.sqrt(E*E/(O*O+N*N));I=Math.max(B,I)}k.r=I,I+=E}if(e.equidistant){for(var F=0,P=0,G=0;G=t.numIter||(IKe(n,t),n.temperature=n.temperature*t.coolingFactor,n.temperature=t.animationThreshold&&a(),aS(d)}},"frame");f()}else{for(;h;)h=s(u),u++;l0e(n,t),l()}return this};LS.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this};LS.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};_Ke=o(function(e,r,n){for(var i=n.eles.edges(),a=n.eles.nodes(),s=zs(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),l={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:i.size(),temperature:n.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},u=n.eles.components(),h={},f=0;f0){l.graphSet.push(S);for(var f=0;fi.count?0:i.graph},"findLCA"),LKe=o(function t(e,r,n,i){var a=i.graphSet[n];if(-10)var d=i.nodeOverlap*f,p=Math.sqrt(l*l+u*u),m=d*l/p,g=d*u/p;else var y=fS(e,l,u),v=fS(r,-1*l,-1*u),x=v.x-y.x,b=v.y-y.y,w=x*x+b*b,p=Math.sqrt(w),d=(e.nodeRepulsion+r.nodeRepulsion)/w,m=d*x/p,g=d*b/p;e.isLocked||(e.offsetX-=m,e.offsetY-=g),r.isLocked||(r.offsetX+=m,r.offsetY+=g)}},"nodeRepulsion"),BKe=o(function(e,r,n,i){if(n>0)var a=e.maxX-r.minX;else var a=r.maxX-e.minX;if(i>0)var s=e.maxY-r.minY;else var s=r.maxY-e.minY;return a>=0&&s>=0?Math.sqrt(a*a+s*s):0},"nodesOverlap"),fS=o(function(e,r,n){var i=e.positionX,a=e.positionY,s=e.height||1,l=e.width||1,u=n/r,h=s/l,f={};return r===0&&0n?(f.x=i,f.y=a+s/2,f):0r&&-1*h<=u&&u<=h?(f.x=i-l/2,f.y=a-l*n/2/r,f):0=h)?(f.x=i+s*r/2/n,f.y=a+s/2,f):(0>n&&(u<=-1*h||u>=h)&&(f.x=i-s*r/2/n,f.y=a-s/2),f)},"findClippingPoint"),FKe=o(function(e,r){for(var n=0;nn){var v=r.gravity*m/y,x=r.gravity*g/y;p.offsetX+=v,p.offsetY+=x}}}}},"calculateGravityForces"),GKe=o(function(e,r){var n=[],i=0,a=-1;for(n.push.apply(n,e.graphSet[0]),a+=e.graphSet[0].length;i<=a;){var s=n[i++],l=e.idToIndex[s],u=e.layoutNodes[l],h=u.children;if(0n)var a={x:n*e/i,y:n*r/i};else var a={x:e,y:r};return a},"limitForce"),UKe=o(function t(e,r){var n=e.parentId;if(n!=null){var i=r.layoutNodes[r.idToIndex[n]],a=!1;if((i.maxX==null||e.maxX+i.padRight>i.maxX)&&(i.maxX=e.maxX+i.padRight,a=!0),(i.minX==null||e.minX-i.padLefti.maxY)&&(i.maxY=e.maxY+i.padBottom,a=!0),(i.minY==null||e.minY-i.padTopx&&(g+=v+r.componentSpacing,m=0,y=0,v=0)}}},"separateComponents"),HKe={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:o(function(e){},"position"),sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(Ume,"GridLayout");Ume.prototype.run=function(){var t=this.options,e=t,r=t.cy,n=e.eles,i=n.nodes().not(":parent");e.sort&&(i=i.sort(e.sort));var a=zs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(a.h===0||a.w===0)n.nodes().layoutPositions(this,e,function(Q){return{x:a.x1,y:a.y1}});else{var s=i.size(),l=Math.sqrt(s*a.h/a.w),u=Math.round(l),h=Math.round(a.w/a.h*l),f=o(function(j){if(j==null)return Math.min(u,h);var ie=Math.min(u,h);ie==u?u=j:h=j},"small"),d=o(function(j){if(j==null)return Math.max(u,h);var ie=Math.max(u,h);ie==u?u=j:h=j},"large"),p=e.rows,m=e.cols!=null?e.cols:e.columns;if(p!=null&&m!=null)u=p,h=m;else if(p!=null&&m==null)u=p,h=Math.ceil(s/u);else if(p==null&&m!=null)h=m,u=Math.ceil(s/h);else if(h*u>s){var g=f(),y=d();(g-1)*y>=s?f(g-1):(y-1)*g>=s&&d(y-1)}else for(;h*u=s?d(x+1):f(v+1)}var b=a.w/h,w=a.h/u;if(e.condense&&(b=0,w=0),e.avoidOverlap)for(var C=0;C=h&&(O=0,R++)},"moveToNextCell"),B={},F=0;F(O=pqe(t,e,N[B],N[B+1],N[B+2],N[B+3])))return v(A,O),!0}else if(_.edgeType==="bezier"||_.edgeType==="multibezier"||_.edgeType==="self"||_.edgeType==="compound"){for(var N=_.allpts,B=0;B+5<_.allpts.length;B+=4)if(uqe(t,e,N[B],N[B+1],N[B+2],N[B+3],N[B+4],N[B+5],R)&&L>(O=dqe(t,e,N[B],N[B+1],N[B+2],N[B+3],N[B+4],N[B+5])))return v(A,O),!0}for(var F=F||S.source,P=P||S.target,G=i.getArrowWidth(I,D),z=[{name:"source",x:_.arrowStartX,y:_.arrowStartY,angle:_.srcArrowAngle},{name:"target",x:_.arrowEndX,y:_.arrowEndY,angle:_.tgtArrowAngle},{name:"mid-source",x:_.midX,y:_.midY,angle:_.midsrcArrowAngle},{name:"mid-target",x:_.midX,y:_.midY,angle:_.midtgtArrowAngle}],B=0;B0&&(x(F),x(P))}o(b,"checkEdge");function w(A,S,_){return $l(A,S,_)}o(w,"preprop");function C(A,S){var _=A._private,I=p,D;S?D=S+"-":D="",A.boundingBox();var k=_.labelBounds[S||"main"],L=A.pstyle(D+"label").value,R=A.pstyle("text-events").strValue==="yes";if(!(!R||!L)){var O=w(_.rscratch,"labelX",S),N=w(_.rscratch,"labelY",S),B=w(_.rscratch,"labelAngle",S),F=A.pstyle(D+"text-margin-x").pfValue,P=A.pstyle(D+"text-margin-y").pfValue,G=k.x1-I-F,z=k.x2+I-F,H=k.y1-I-P,Q=k.y2+I-P;if(B){var j=Math.cos(B),ie=Math.sin(B),ne=o(function(se,ue){return se=se-O,ue=ue-N,{x:se*j-ue*ie+O,y:se*ie+ue*j+N}},"rotate"),le=ne(G,H),he=ne(G,Q),K=ne(z,H),X=ne(z,Q),te=[le.x+F,le.y+P,K.x+F,K.y+P,X.x+F,X.y+P,he.x+F,he.y+P];if(Fs(t,e,te))return v(A),!0}else if(W1(k,t,e))return v(A),!0}}o(C,"checkLabel");for(var T=s.length-1;T>=0;T--){var E=s[T];E.isNode()?x(E)||C(E):b(E)||C(E)||C(E,"source")||C(E,"target")}return l};Hp.getAllInBox=function(t,e,r,n){var i=this.getCachedZSortedEles().interactive,a=[],s=Math.min(t,r),l=Math.max(t,r),u=Math.min(e,n),h=Math.max(e,n);t=s,r=l,e=u,n=h;for(var f=zs({x1:t,y1:e,x2:r,y2:n}),d=0;d0?-(Math.PI-e.ang):Math.PI+e.ang},"invertVec"),KKe=o(function(e,r,n,i,a){if(e!==d0e?p0e(r,e,Uc):jKe(Ko,Uc),p0e(r,n,Ko),h0e=Uc.nx*Ko.ny-Uc.ny*Ko.nx,f0e=Uc.nx*Ko.nx-Uc.ny*-Ko.ny,Yu=Math.asin(Math.max(-1,Math.min(1,h0e))),Math.abs(Yu)<1e-6){NP=r.x,MP=r.y,Op=P1=0;return}Pp=1,rS=!1,f0e<0?Yu<0?Yu=Math.PI+Yu:(Yu=Math.PI-Yu,Pp=-1,rS=!0):Yu>0&&(Pp=-1,rS=!0),r.radius!==void 0?P1=r.radius:P1=i,Rp=Yu/2,W6=Math.min(Uc.len/2,Ko.len/2),a?(Vc=Math.abs(Math.cos(Rp)*P1/Math.sin(Rp)),Vc>W6?(Vc=W6,Op=Math.abs(Vc*Math.sin(Rp)/Math.cos(Rp))):Op=P1):(Vc=Math.min(W6,P1),Op=Math.abs(Vc*Math.sin(Rp)/Math.cos(Rp))),IP=r.x+Ko.nx*Vc,OP=r.y+Ko.ny*Vc,NP=IP-Ko.ny*Op*Pp,MP=OP+Ko.nx*Op*Pp,Yme=r.x+Uc.nx*Vc,Xme=r.y+Uc.ny*Vc,d0e=r},"calcCornerArc");o(jme,"drawPreparedRoundCorner");o(sB,"getRoundCorner");$a={};$a.findMidptPtsEtc=function(t,e){var r=e.posPts,n=e.intersectionPts,i=e.vectorNormInverse,a,s=t.pstyle("source-endpoint"),l=t.pstyle("target-endpoint"),u=s.units!=null&&l.units!=null,h=o(function(T,E,A,S){var _=S-E,I=A-T,D=Math.sqrt(I*I+_*_);return{x:-_/D,y:I/D}},"recalcVectorNormInverse"),f=t.pstyle("edge-distances").value;switch(f){case"node-position":a=r;break;case"intersection":a=n;break;case"endpoints":{if(u){var d=this.manualEndptToPx(t.source()[0],s),p=Ai(d,2),m=p[0],g=p[1],y=this.manualEndptToPx(t.target()[0],l),v=Ai(y,2),x=v[0],b=v[1],w={x1:m,y1:g,x2:x,y2:b};i=h(m,g,x,b),a=w}else un("Edge ".concat(t.id()," has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).")),a=n;break}}return{midptPts:a,vectorNormInverse:i}};$a.findHaystackPoints=function(t){for(var e=0;e0?Math.max(q-pe,0):Math.min(q+pe,0)},"subDWH"),L=k(I,S),R=k(D,_),O=!1;b===h?x=Math.abs(L)>Math.abs(R)?i:n:b===u||b===l?(x=n,O=!0):(b===a||b===s)&&(x=i,O=!0);var N=x===n,B=N?R:L,F=N?D:I,P=J0e(F),G=!1;!(O&&(C||E))&&(b===l&&F<0||b===u&&F>0||b===a&&F>0||b===s&&F<0)&&(P*=-1,B=P*Math.abs(B),G=!0);var z;if(C){var H=T<0?1+T:T;z=H*B}else{var Q=T<0?B:0;z=Q+T*P}var j=o(function(q){return Math.abs(q)=Math.abs(B)},"getIsTooClose"),ie=j(z),ne=j(Math.abs(B)-Math.abs(z)),le=ie||ne;if(le&&!G)if(N){var he=Math.abs(F)<=p/2,K=Math.abs(I)<=m/2;if(he){var X=(f.x1+f.x2)/2,te=f.y1,J=f.y2;r.segpts=[X,te,X,J]}else if(K){var se=(f.y1+f.y2)/2,ue=f.x1,Z=f.x2;r.segpts=[ue,se,Z,se]}else r.segpts=[f.x1,f.y2]}else{var Se=Math.abs(F)<=d/2,ce=Math.abs(D)<=g/2;if(Se){var ae=(f.y1+f.y2)/2,Oe=f.x1,ge=f.x2;r.segpts=[Oe,ae,ge,ae]}else if(ce){var Ge=(f.x1+f.x2)/2,He=f.y1,ze=f.y2;r.segpts=[Ge,He,Ge,ze]}else r.segpts=[f.x2,f.y1]}else if(N){var Re=f.y1+z+(v?p/2*P:0),Ie=f.x1,be=f.x2;r.segpts=[Ie,Re,be,Re]}else{var W=f.x1+z+(v?d/2*P:0),de=f.y1,re=f.y2;r.segpts=[W,de,W,re]}if(r.isRound){var oe=t.pstyle("taxi-radius").value,V=t.pstyle("radius-type").value[0]==="arc-radius";r.radii=new Array(r.segpts.length/2).fill(oe),r.isArcRadius=new Array(r.segpts.length/2).fill(V)}};$a.tryToCorrectInvalidPoints=function(t,e){var r=t._private.rscratch;if(r.edgeType==="bezier"){var n=e.srcPos,i=e.tgtPos,a=e.srcW,s=e.srcH,l=e.tgtW,u=e.tgtH,h=e.srcShape,f=e.tgtShape,d=e.srcCornerRadius,p=e.tgtCornerRadius,m=e.srcRs,g=e.tgtRs,y=!Ct(r.startX)||!Ct(r.startY),v=!Ct(r.arrowStartX)||!Ct(r.arrowStartY),x=!Ct(r.endX)||!Ct(r.endY),b=!Ct(r.arrowEndX)||!Ct(r.arrowEndY),w=3,C=this.getArrowWidth(t.pstyle("width").pfValue,t.pstyle("arrow-scale").value)*this.arrowShapeWidth,T=w*C,E=zp({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),A=ER.poolIndex()){var O=L;L=R,R=O}var N=_.srcPos=L.position(),B=_.tgtPos=R.position(),F=_.srcW=L.outerWidth(),P=_.srcH=L.outerHeight(),G=_.tgtW=R.outerWidth(),z=_.tgtH=R.outerHeight(),H=_.srcShape=r.nodeShapes[e.getNodeShape(L)],Q=_.tgtShape=r.nodeShapes[e.getNodeShape(R)],j=_.srcCornerRadius=L.pstyle("corner-radius").value==="auto"?"auto":L.pstyle("corner-radius").pfValue,ie=_.tgtCornerRadius=R.pstyle("corner-radius").value==="auto"?"auto":R.pstyle("corner-radius").pfValue,ne=_.tgtRs=R._private.rscratch,le=_.srcRs=L._private.rscratch;_.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var he=0;he<_.eles.length;he++){var K=_.eles[he],X=K[0]._private.rscratch,te=K.pstyle("curve-style").value,J=te==="unbundled-bezier"||te.endsWith("segments")||te.endsWith("taxi"),se=!L.same(K.source());if(!_.calculatedIntersection&&L!==R&&(_.hasBezier||_.hasUnbundled)){_.calculatedIntersection=!0;var ue=H.intersectLine(N.x,N.y,F,P,B.x,B.y,0,j,le),Z=_.srcIntn=ue,Se=Q.intersectLine(B.x,B.y,G,z,N.x,N.y,0,ie,ne),ce=_.tgtIntn=Se,ae=_.intersectionPts={x1:ue[0],x2:Se[0],y1:ue[1],y2:Se[1]},Oe=_.posPts={x1:N.x,x2:B.x,y1:N.y,y2:B.y},ge=Se[1]-ue[1],Ge=Se[0]-ue[0],He=Math.sqrt(Ge*Ge+ge*ge),ze=_.vector={x:Ge,y:ge},Re=_.vectorNorm={x:ze.x/He,y:ze.y/He},Ie={x:-Re.y,y:Re.x};_.nodesOverlap=!Ct(He)||Q.checkPoint(ue[0],ue[1],0,G,z,B.x,B.y,ie,ne)||H.checkPoint(Se[0],Se[1],0,F,P,N.x,N.y,j,le),_.vectorNormInverse=Ie,I={nodesOverlap:_.nodesOverlap,dirCounts:_.dirCounts,calculatedIntersection:!0,hasBezier:_.hasBezier,hasUnbundled:_.hasUnbundled,eles:_.eles,srcPos:B,srcRs:ne,tgtPos:N,tgtRs:le,srcW:G,srcH:z,tgtW:F,tgtH:P,srcIntn:ce,tgtIntn:Z,srcShape:Q,tgtShape:H,posPts:{x1:Oe.x2,y1:Oe.y2,x2:Oe.x1,y2:Oe.y1},intersectionPts:{x1:ae.x2,y1:ae.y2,x2:ae.x1,y2:ae.y1},vector:{x:-ze.x,y:-ze.y},vectorNorm:{x:-Re.x,y:-Re.y},vectorNormInverse:{x:-Ie.x,y:-Ie.y}}}var be=se?I:_;X.nodesOverlap=be.nodesOverlap,X.srcIntn=be.srcIntn,X.tgtIntn=be.tgtIntn,X.isRound=te.startsWith("round"),i&&(L.isParent()||L.isChild()||R.isParent()||R.isChild())&&(L.parents().anySame(R)||R.parents().anySame(L)||L.same(R)&&L.isParent())?e.findCompoundLoopPoints(K,be,he,J):L===R?e.findLoopPoints(K,be,he,J):te.endsWith("segments")?e.findSegmentsPoints(K,be):te.endsWith("taxi")?e.findTaxiPoints(K,be):te==="straight"||!J&&_.eles.length%2===1&&he===Math.floor(_.eles.length/2)?e.findStraightEdgePoints(K):e.findBezierPoints(K,be,he,J,se),e.findEndpoints(K),e.tryToCorrectInvalidPoints(K,be),e.checkForInvalidEdgeWarning(K),e.storeAllpts(K),e.storeEdgeProjections(K),e.calculateArrowAngles(K),e.recalculateEdgeLabelProjections(K),e.calculateLabelAngles(K)}},"_loop"),T=0;T0){var J=a,se=Mp(J,F1(r)),ue=Mp(J,F1(te)),Z=se;if(ue2){var Se=Mp(J,{x:te[2],y:te[3]});Se0){var re=s,oe=Mp(re,F1(r)),V=Mp(re,F1(de)),xe=oe;if(V2){var q=Mp(re,{x:de[2],y:de[3]});q=g||A){v={cp:C,segment:E};break}}if(v)break}var S=v.cp,_=v.segment,I=(g-x)/_.length,D=_.t1-_.t0,k=m?_.t0+D*I:_.t1-D*I;k=Ib(0,k,1),e=G1(S.p0,S.p1,S.p2,k),p=ZKe(S.p0,S.p1,S.p2,k);break}case"straight":case"segments":case"haystack":{for(var L=0,R,O,N,B,F=n.allpts.length,P=0;P+3=g));P+=2);var G=g-O,z=G/R;z=Ib(0,z,1),e=nqe(N,B,z),p=Zme(N,B);break}}s("labelX",d,e.x),s("labelY",d,e.y),s("labelAutoAngle",d,p)}},"calculateEndProjection");h("source"),h("target"),this.applyLabelDimensions(t)}};Yc.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,"source"),this.applyPrefixedLabelDimensions(t,"target"))};Yc.applyPrefixedLabelDimensions=function(t,e){var r=t._private,n=this.getLabelText(t,e),i=this.calculateLabelDimensions(t,n),a=t.pstyle("line-height").pfValue,s=t.pstyle("text-wrap").strValue,l=$l(r.rscratch,"labelWrapCachedLines",e)||[],u=s!=="wrap"?1:Math.max(l.length,1),h=i.height/u,f=h*a,d=i.width,p=i.height+(u-1)*(a-1)*h;bf(r.rstyle,"labelWidth",e,d),bf(r.rscratch,"labelWidth",e,d),bf(r.rstyle,"labelHeight",e,p),bf(r.rscratch,"labelHeight",e,p),bf(r.rscratch,"labelLineHeight",e,f)};Yc.getLabelText=function(t,e){var r=t._private,n=e?e+"-":"",i=t.pstyle(n+"label").strValue,a=t.pstyle("text-transform").value,s=o(function(Q,j){return j?(bf(r.rscratch,Q,e,j),j):$l(r.rscratch,Q,e)},"rscratch");if(!i)return"";a=="none"||(a=="uppercase"?i=i.toUpperCase():a=="lowercase"&&(i=i.toLowerCase()));var l=t.pstyle("text-wrap").value;if(l==="wrap"){var u=s("labelKey");if(u!=null&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var h="\u200B",f=i.split(` +`),d=t.pstyle("text-max-width").pfValue,p=t.pstyle("text-overflow-wrap").value,m=p==="anywhere",g=[],y=/[\s\u200b]+|$/g,v=0;vd){var T=x.matchAll(y),E="",A=0,S=uo(T),_;try{for(S.s();!(_=S.n()).done;){var I=_.value,D=I[0],k=x.substring(A,I.index);A=I.index+D.length;var L=E.length===0?k:E+k+D,R=this.calculateLabelDimensions(t,L),O=R.width;O<=d?E+=k+D:(E&&g.push(E),E=k+D)}}catch(H){S.e(H)}finally{S.f()}E.match(/^[\s\u200b]+$/)||g.push(E)}else g.push(x)}s("labelWrapCachedLines",g),i=s("labelWrapCachedText",g.join(` +`)),s("labelWrapKey",u)}else if(l==="ellipsis"){var N=t.pstyle("text-max-width").pfValue,B="",F="\u2026",P=!1;if(this.calculateLabelDimensions(t,i).widthN)break;B+=i[G],G===i.length-1&&(P=!0)}return P||(B+=F),B}return i};Yc.getLabelJustification=function(t){var e=t.pstyle("text-justification").strValue,r=t.pstyle("text-halign").strValue;if(e==="auto")if(t.isNode())switch(r){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return e};Yc.calculateLabelDimensions=function(t,e){var r=this,n=r.cy.window(),i=n.document,a=Sf(e,t._private.labelDimsKey),s=r.labelDimCache||(r.labelDimCache=[]),l=s[a];if(l!=null)return l;var u=0,h=t.pstyle("font-style").strValue,f=t.pstyle("font-size").pfValue,d=t.pstyle("font-family").strValue,p=t.pstyle("font-weight").strValue,m=this.labelCalcCanvas,g=this.labelCalcCanvasContext;if(!m){m=this.labelCalcCanvas=i.createElement("canvas"),g=this.labelCalcCanvasContext=m.getContext("2d");var y=m.style;y.position="absolute",y.left="-9999px",y.top="-9999px",y.zIndex="-1",y.visibility="hidden",y.pointerEvents="none"}g.font="".concat(h," ").concat(p," ").concat(f,"px ").concat(d);for(var v=0,x=0,b=e.split(` +`),w=0;w1&&arguments[1]!==void 0?arguments[1]:!0;if(e.merge(s),l)for(var u=0;u=t.desktopTapThreshold2}var ot=a(W);at&&(t.hoverData.tapholdCancelled=!0);var Yt=o(function(){var Tt=t.hoverData.dragDelta=t.hoverData.dragDelta||[];Tt.length===0?(Tt.push(De[0]),Tt.push(De[1])):(Tt[0]+=De[0],Tt[1]+=De[1])},"updateDragDelta");re=!0,i(_e,["mousemove","vmousemove","tapdrag"],W,{x:q[0],y:q[1]});var bt=o(function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||oe.emit({originalEvent:W,type:"boxstart",position:{x:q[0],y:q[1]}}),Pe[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()},"goIntoBoxMode");if(t.hoverData.which===3){if(at){var Nt={originalEvent:W,type:"cxtdrag",position:{x:q[0],y:q[1]}};Ve?Ve.emit(Nt):oe.emit(Nt),t.hoverData.cxtDragged=!0,(!t.hoverData.cxtOver||_e!==t.hoverData.cxtOver)&&(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit({originalEvent:W,type:"cxtdragout",position:{x:q[0],y:q[1]}}),t.hoverData.cxtOver=_e,_e&&_e.emit({originalEvent:W,type:"cxtdragover",position:{x:q[0],y:q[1]}}))}}else if(t.hoverData.dragging){if(re=!0,oe.panningEnabled()&&oe.userPanningEnabled()){var xt;if(t.hoverData.justStartedPan){var ut=t.hoverData.mdownPos;xt={x:(q[0]-ut[0])*V,y:(q[1]-ut[1])*V},t.hoverData.justStartedPan=!1}else xt={x:De[0]*V,y:De[1]*V};oe.panBy(xt),oe.emit("dragpan"),t.hoverData.dragged=!0}q=t.projectIntoViewport(W.clientX,W.clientY)}else if(Pe[4]==1&&(Ve==null||Ve.pannable())){if(at){if(!t.hoverData.dragging&&oe.boxSelectionEnabled()&&(ot||!oe.panningEnabled()||!oe.userPanningEnabled()))bt();else if(!t.hoverData.selecting&&oe.panningEnabled()&&oe.userPanningEnabled()){var Et=s(Ve,t.hoverData.downs);Et&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,Pe[4]=0,t.data.bgActivePosistion=F1(pe),t.redrawHint("select",!0),t.redraw())}Ve&&Ve.pannable()&&Ve.active()&&Ve.unactivate()}}else{if(Ve&&Ve.pannable()&&Ve.active()&&Ve.unactivate(),(!Ve||!Ve.grabbed())&&_e!=we&&(we&&i(we,["mouseout","tapdragout"],W,{x:q[0],y:q[1]}),_e&&i(_e,["mouseover","tapdragover"],W,{x:q[0],y:q[1]}),t.hoverData.last=_e),Ve)if(at){if(oe.boxSelectionEnabled()&&ot)Ve&&Ve.grabbed()&&(x(qe),Ve.emit("freeon"),qe.emit("free"),t.dragData.didDrag&&(Ve.emit("dragfreeon"),qe.emit("dragfree"))),bt();else if(Ve&&Ve.grabbed()&&t.nodeIsDraggable(Ve)){var ft=!t.dragData.didDrag;ft&&t.redrawHint("eles",!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||y(qe,{inDragLayer:!0});var yt={x:0,y:0};if(Ct(De[0])&&Ct(De[1])&&(yt.x+=De[0],yt.y+=De[1],ft)){var nt=t.hoverData.dragDelta;nt&&Ct(nt[0])&&Ct(nt[1])&&(yt.x+=nt[0],yt.y+=nt[1])}t.hoverData.draggingEles=!0,qe.silentShift(yt).emit("position drag"),t.redrawHint("drag",!0),t.redraw()}}else Yt();re=!0}if(Pe[2]=q[0],Pe[3]=q[1],re)return W.stopPropagation&&W.stopPropagation(),W.preventDefault&&W.preventDefault(),!1}},"mousemoveHandler"),!1);var k,L,R;t.registerBinding(e,"mouseup",o(function(W){if(!(t.hoverData.which===1&&W.which!==1&&t.hoverData.capture)){var de=t.hoverData.capture;if(de){t.hoverData.capture=!1;var re=t.cy,oe=t.projectIntoViewport(W.clientX,W.clientY),V=t.selection,xe=t.findNearestElement(oe[0],oe[1],!0,!1),q=t.dragData.possibleDragElements,pe=t.hoverData.down,ve=a(W);if(t.data.bgActivePosistion&&(t.redrawHint("select",!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,pe&&pe.unactivate(),t.hoverData.which===3){var Pe={originalEvent:W,type:"cxttapend",position:{x:oe[0],y:oe[1]}};if(pe?pe.emit(Pe):re.emit(Pe),!t.hoverData.cxtDragged){var _e={originalEvent:W,type:"cxttap",position:{x:oe[0],y:oe[1]}};pe?pe.emit(_e):re.emit(_e)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(t.hoverData.which===1){if(i(xe,["mouseup","tapend","vmouseup"],W,{x:oe[0],y:oe[1]}),!t.dragData.didDrag&&!t.hoverData.dragged&&!t.hoverData.selecting&&!t.hoverData.isOverThresholdDrag&&(i(pe,["click","tap","vclick"],W,{x:oe[0],y:oe[1]}),L=!1,W.timeStamp-R<=re.multiClickDebounceTime()?(k&&clearTimeout(k),L=!0,R=null,i(pe,["dblclick","dbltap","vdblclick"],W,{x:oe[0],y:oe[1]})):(k=setTimeout(function(){L||i(pe,["oneclick","onetap","voneclick"],W,{x:oe[0],y:oe[1]})},re.multiClickDebounceTime()),R=W.timeStamp)),pe==null&&!t.dragData.didDrag&&!t.hoverData.selecting&&!t.hoverData.dragged&&!a(W)&&(re.$(r).unselect(["tapunselect"]),q.length>0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=q=re.collection()),xe==pe&&!t.dragData.didDrag&&!t.hoverData.selecting&&xe!=null&&xe._private.selectable&&(t.hoverData.dragging||(re.selectionType()==="additive"||ve?xe.selected()?xe.unselect(["tapunselect"]):xe.select(["tapselect"]):ve||(re.$(r).unmerge(xe).unselect(["tapunselect"]),xe.select(["tapselect"]))),t.redrawHint("eles",!0)),t.hoverData.selecting){var we=re.collection(t.getAllInBox(V[0],V[1],V[2],V[3]));t.redrawHint("select",!0),we.length>0&&t.redrawHint("eles",!0),re.emit({type:"boxend",originalEvent:W,position:{x:oe[0],y:oe[1]}});var Ve=o(function(at){return at.selectable()&&!at.selected()},"eleWouldBeSelected");re.selectionType()==="additive"||ve||re.$(r).unmerge(we).unselect(),we.emit("box").stdFilter(Ve).select().emit("boxselect"),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!V[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var De=pe&&pe.grabbed();x(q),De&&(pe.emit("freeon"),q.emit("free"),t.dragData.didDrag&&(pe.emit("dragfreeon"),q.emit("dragfree")))}}V[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null,t.hoverData.which=null}}},"mouseupHandler"),!1);var O=o(function(W){if(!t.scrollingPage){var de=t.cy,re=de.zoom(),oe=de.pan(),V=t.projectIntoViewport(W.clientX,W.clientY),xe=[V[0]*re+oe.x,V[1]*re+oe.y];if(t.hoverData.draggingEles||t.hoverData.dragging||t.hoverData.cxtStarted||_()){W.preventDefault();return}if(de.panningEnabled()&&de.userPanningEnabled()&&de.zoomingEnabled()&&de.userZoomingEnabled()){W.preventDefault(),t.data.wheelZooming=!0,clearTimeout(t.data.wheelTimeout),t.data.wheelTimeout=setTimeout(function(){t.data.wheelZooming=!1,t.redrawHint("eles",!0),t.redraw()},150);var q;W.deltaY!=null?q=W.deltaY/-250:W.wheelDeltaY!=null?q=W.wheelDeltaY/1e3:q=W.wheelDelta/1e3,q=q*t.wheelSensitivity;var pe=W.deltaMode===1;pe&&(q*=33);var ve=de.zoom()*Math.pow(10,q);W.type==="gesturechange"&&(ve=t.gestureStartZoom*W.scale),de.zoom({level:ve,renderedPosition:{x:xe[0],y:xe[1]}}),de.emit(W.type==="gesturechange"?"pinchzoom":"scrollzoom")}}},"wheelHandler");t.registerBinding(t.container,"wheel",O,!0),t.registerBinding(e,"scroll",o(function(W){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},"scrollHandler"),!0),t.registerBinding(t.container,"gesturestart",o(function(W){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||W.preventDefault()},"gestureStartHandler"),!0),t.registerBinding(t.container,"gesturechange",function(be){t.hasTouchStarted||O(be)},!0),t.registerBinding(t.container,"mouseout",o(function(W){var de=t.projectIntoViewport(W.clientX,W.clientY);t.cy.emit({originalEvent:W,type:"mouseout",position:{x:de[0],y:de[1]}})},"mouseOutHandler"),!1),t.registerBinding(t.container,"mouseover",o(function(W){var de=t.projectIntoViewport(W.clientX,W.clientY);t.cy.emit({originalEvent:W,type:"mouseover",position:{x:de[0],y:de[1]}})},"mouseOverHandler"),!1);var N,B,F,P,G,z,H,Q,j,ie,ne,le,he,K=o(function(W,de,re,oe){return Math.sqrt((re-W)*(re-W)+(oe-de)*(oe-de))},"distance"),X=o(function(W,de,re,oe){return(re-W)*(re-W)+(oe-de)*(oe-de)},"distanceSq"),te;t.registerBinding(t.container,"touchstart",te=o(function(W){if(t.hasTouchStarted=!0,!!I(W)){w(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var de=t.cy,re=t.touchData.now,oe=t.touchData.earlier;if(W.touches[0]){var V=t.projectIntoViewport(W.touches[0].clientX,W.touches[0].clientY);re[0]=V[0],re[1]=V[1]}if(W.touches[1]){var V=t.projectIntoViewport(W.touches[1].clientX,W.touches[1].clientY);re[2]=V[0],re[3]=V[1]}if(W.touches[2]){var V=t.projectIntoViewport(W.touches[2].clientX,W.touches[2].clientY);re[4]=V[0],re[5]=V[1]}if(W.touches[1]){t.touchData.singleTouchMoved=!0,x(t.dragData.touchDragEles);var xe=t.findContainerClientCoords();j=xe[0],ie=xe[1],ne=xe[2],le=xe[3],N=W.touches[0].clientX-j,B=W.touches[0].clientY-ie,F=W.touches[1].clientX-j,P=W.touches[1].clientY-ie,he=0<=N&&N<=ne&&0<=F&&F<=ne&&0<=B&&B<=le&&0<=P&&P<=le;var q=de.pan(),pe=de.zoom();G=K(N,B,F,P),z=X(N,B,F,P),H=[(N+F)/2,(B+P)/2],Q=[(H[0]-q.x)/pe,(H[1]-q.y)/pe];var ve=200,Pe=ve*ve;if(z=1){for(var st=t.touchData.startPosition=[null,null,null,null,null,null],Ue=0;Ue=t.touchTapThreshold2}if(de&&t.touchData.cxt){W.preventDefault();var st=W.touches[0].clientX-j,Ue=W.touches[0].clientY-ie,ct=W.touches[1].clientX-j,We=W.touches[1].clientY-ie,ot=X(st,Ue,ct,We),Yt=ot/z,bt=150,Nt=bt*bt,xt=1.5,ut=xt*xt;if(Yt>=ut||ot>=Nt){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Et={originalEvent:W,type:"cxttapend",position:{x:V[0],y:V[1]}};t.touchData.start?(t.touchData.start.unactivate().emit(Et),t.touchData.start=null):oe.emit(Et)}}if(de&&t.touchData.cxt){var Et={originalEvent:W,type:"cxtdrag",position:{x:V[0],y:V[1]}};t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(Et):oe.emit(Et),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var ft=t.findNearestElement(V[0],V[1],!0,!0);(!t.touchData.cxtOver||ft!==t.touchData.cxtOver)&&(t.touchData.cxtOver&&t.touchData.cxtOver.emit({originalEvent:W,type:"cxtdragout",position:{x:V[0],y:V[1]}}),t.touchData.cxtOver=ft,ft&&ft.emit({originalEvent:W,type:"cxtdragover",position:{x:V[0],y:V[1]}}))}else if(de&&W.touches[2]&&oe.boxSelectionEnabled())W.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||oe.emit({originalEvent:W,type:"boxstart",position:{x:V[0],y:V[1]}}),t.touchData.selecting=!0,t.touchData.didSelect=!0,re[4]=1,!re||re.length===0||re[0]===void 0?(re[0]=(V[0]+V[2]+V[4])/3,re[1]=(V[1]+V[3]+V[5])/3,re[2]=(V[0]+V[2]+V[4])/3+1,re[3]=(V[1]+V[3]+V[5])/3+1):(re[2]=(V[0]+V[2]+V[4])/3,re[3]=(V[1]+V[3]+V[5])/3),t.redrawHint("select",!0),t.redraw();else if(de&&W.touches[1]&&!t.touchData.didSelect&&oe.zoomingEnabled()&&oe.panningEnabled()&&oe.userZoomingEnabled()&&oe.userPanningEnabled()){W.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var yt=t.dragData.touchDragEles;if(yt){t.redrawHint("drag",!0);for(var nt=0;nt0&&!t.hoverData.draggingEles&&!t.swipePanning&&t.data.bgActivePosistion!=null&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},"touchmoveHandler"),!1);var se;t.registerBinding(e,"touchcancel",se=o(function(W){var de=t.touchData.start;t.touchData.capture=!1,de&&de.unactivate()},"touchcancelHandler"));var ue,Z,Se,ce;if(t.registerBinding(e,"touchend",ue=o(function(W){var de=t.touchData.start,re=t.touchData.capture;if(re)W.touches.length===0&&(t.touchData.capture=!1),W.preventDefault();else return;var oe=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var V=t.cy,xe=V.zoom(),q=t.touchData.now,pe=t.touchData.earlier;if(W.touches[0]){var ve=t.projectIntoViewport(W.touches[0].clientX,W.touches[0].clientY);q[0]=ve[0],q[1]=ve[1]}if(W.touches[1]){var ve=t.projectIntoViewport(W.touches[1].clientX,W.touches[1].clientY);q[2]=ve[0],q[3]=ve[1]}if(W.touches[2]){var ve=t.projectIntoViewport(W.touches[2].clientX,W.touches[2].clientY);q[4]=ve[0],q[5]=ve[1]}de&&de.unactivate();var Pe;if(t.touchData.cxt){if(Pe={originalEvent:W,type:"cxttapend",position:{x:q[0],y:q[1]}},de?de.emit(Pe):V.emit(Pe),!t.touchData.cxtDragged){var _e={originalEvent:W,type:"cxttap",position:{x:q[0],y:q[1]}};de?de.emit(_e):V.emit(_e)}t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,t.redraw();return}if(!W.touches[2]&&V.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var we=V.collection(t.getAllInBox(oe[0],oe[1],oe[2],oe[3]));oe[0]=void 0,oe[1]=void 0,oe[2]=void 0,oe[3]=void 0,oe[4]=0,t.redrawHint("select",!0),V.emit({type:"boxend",originalEvent:W,position:{x:q[0],y:q[1]}});var Ve=o(function(Nt){return Nt.selectable()&&!Nt.selected()},"eleWouldBeSelected");we.emit("box").stdFilter(Ve).select().emit("boxselect"),we.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if(de?.unactivate(),W.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(!W.touches[1]){if(!W.touches[0]){if(!W.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var De=t.dragData.touchDragEles;if(de!=null){var qe=de._private.grabbed;x(De),t.redrawHint("drag",!0),t.redrawHint("eles",!0),qe&&(de.emit("freeon"),De.emit("free"),t.dragData.didDrag&&(de.emit("dragfreeon"),De.emit("dragfree"))),i(de,["touchend","tapend","vmouseup","tapdragout"],W,{x:q[0],y:q[1]}),de.unactivate(),t.touchData.start=null}else{var at=t.findNearestElement(q[0],q[1],!0,!0);i(at,["touchend","tapend","vmouseup","tapdragout"],W,{x:q[0],y:q[1]})}var Lt=t.touchData.startPosition[0]-q[0],st=Lt*Lt,Ue=t.touchData.startPosition[1]-q[1],ct=Ue*Ue,We=st+ct,ot=We*xe*xe;t.touchData.singleTouchMoved||(de||V.$(":selected").unselect(["tapunselect"]),i(de,["tap","vclick"],W,{x:q[0],y:q[1]}),Z=!1,W.timeStamp-ce<=V.multiClickDebounceTime()?(Se&&clearTimeout(Se),Z=!0,ce=null,i(de,["dbltap","vdblclick"],W,{x:q[0],y:q[1]})):(Se=setTimeout(function(){Z||i(de,["onetap","voneclick"],W,{x:q[0],y:q[1]})},V.multiClickDebounceTime()),ce=W.timeStamp)),de!=null&&!t.dragData.didDrag&&de._private.selectable&&ot"u"){var ae=[],Oe=o(function(W){return{clientX:W.clientX,clientY:W.clientY,force:1,identifier:W.pointerId,pageX:W.pageX,pageY:W.pageY,radiusX:W.width/2,radiusY:W.height/2,screenX:W.screenX,screenY:W.screenY,target:W.target}},"makeTouch"),ge=o(function(W){return{event:W,touch:Oe(W)}},"makePointer"),Ge=o(function(W){ae.push(ge(W))},"addPointer"),He=o(function(W){for(var de=0;de0)return H[0]}return null},"getCurveT"),g=Object.keys(p),y=0;y0?m:rme(a,s,e,r,n,i,l,u)},"intersectLine"),checkPoint:o(function(e,r,n,i,a,s,l,u){u=u==="auto"?Gp(i,a):u;var h=2*u;if(ju(e,r,this.points,s,l,i,a-h,[0,-1],n)||ju(e,r,this.points,s,l,i-h,a,[0,-1],n))return!0;var f=i/2+2*n,d=a/2+2*n,p=[s-f,l-d,s-f,l,s+f,l,s+f,l-d];return!!(Fs(e,r,p)||Bp(e,r,h,h,s+i/2-u,l+a/2-u,n)||Bp(e,r,h,h,s-i/2+u,l+a/2-u,n))},"checkPoint")}};Qu.registerNodeShapes=function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",hs(3,0)),this.generateRoundPolygon("round-triangle",hs(3,0)),this.generatePolygon("rectangle",hs(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",r),this.generateRoundPolygon("round-diamond",r)}this.generatePolygon("pentagon",hs(5,0)),this.generateRoundPolygon("round-pentagon",hs(5,0)),this.generatePolygon("hexagon",hs(6,0)),this.generateRoundPolygon("round-hexagon",hs(6,0)),this.generatePolygon("heptagon",hs(7,0)),this.generateRoundPolygon("round-heptagon",hs(7,0)),this.generatePolygon("octagon",hs(8,0)),this.generateRoundPolygon("round-octagon",hs(8,0));var n=new Array(20);{var i=EP(5,0),a=EP(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var l=0;l=e.deqFastCost*C)break}else if(h){if(b>=e.deqCost*m||b>=e.deqAvgCost*p)break}else if(w>=e.deqNoDrawCost*yP)break;var T=e.deq(n,v,y);if(T.length>0)for(var E=0;E0&&(e.onDeqd(n,g),!h&&e.shouldRedraw(n,g,v,y)&&a())},"dequeue"),l=e.priority||HP;i.beforeRender(s,l(n))}},"setupDequeueingImpl")},"setupDequeueing")},eQe=function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:sS;Lf(this,t),this.idsByKey=new Wc,this.keyForId=new Wc,this.cachesByLvl=new Wc,this.lvls=[],this.getKey=e,this.doesEleInvalidateKey=r}return o(t,"ElementTextureCacheLookup"),Rf(t,[{key:"getIdsFor",value:o(function(r){r==null&&ai("Can not get id list for null key");var n=this.idsByKey,i=this.idsByKey.get(r);return i||(i=new X1,n.set(r,i)),i},"getIdsFor")},{key:"addIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).add(n)},"addIdForKey")},{key:"deleteIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).delete(n)},"deleteIdForKey")},{key:"getNumberOfIdsForKey",value:o(function(r){return r==null?0:this.getIdsFor(r).size},"getNumberOfIdsForKey")},{key:"updateKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);this.deleteIdForKey(i,n),this.addIdForKey(a,n),this.keyForId.set(n,a)},"updateKeyMappingFor")},{key:"deleteKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteIdForKey(i,n),this.keyForId.delete(n)},"deleteKeyMappingFor")},{key:"keyHasChangedFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);return i!==a},"keyHasChangedFor")},{key:"isInvalid",value:o(function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)},"isInvalid")},{key:"getCachesAt",value:o(function(r){var n=this.cachesByLvl,i=this.lvls,a=n.get(r);return a||(a=new Wc,n.set(r,a),i.push(r)),a},"getCachesAt")},{key:"getCache",value:o(function(r,n){return this.getCachesAt(n).get(r)},"getCache")},{key:"get",value:o(function(r,n){var i=this.getKey(r),a=this.getCache(i,n);return a!=null&&this.updateKeyMappingFor(r),a},"get")},{key:"getForCachedKey",value:o(function(r,n){var i=this.keyForId.get(r.id()),a=this.getCache(i,n);return a},"getForCachedKey")},{key:"hasCache",value:o(function(r,n){return this.getCachesAt(n).has(r)},"hasCache")},{key:"has",value:o(function(r,n){var i=this.getKey(r);return this.hasCache(i,n)},"has")},{key:"setCache",value:o(function(r,n,i){i.key=r,this.getCachesAt(n).set(r,i)},"setCache")},{key:"set",value:o(function(r,n,i){var a=this.getKey(r);this.setCache(a,n,i),this.updateKeyMappingFor(r)},"set")},{key:"deleteCache",value:o(function(r,n){this.getCachesAt(n).delete(r)},"deleteCache")},{key:"delete",value:o(function(r,n){var i=this.getKey(r);this.deleteCache(i,n)},"_delete")},{key:"invalidateKey",value:o(function(r){var n=this;this.lvls.forEach(function(i){return n.deleteCache(r,i)})},"invalidateKey")},{key:"invalidate",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteKeyMappingFor(r);var a=this.doesEleInvalidateKey(r);return a&&this.invalidateKey(i),a||this.getNumberOfIdsForKey(i)===0},"invalidate")}]),t}(),v0e=25,q6=50,nS=-4,PP=3,ige=7.99,tQe=8,rQe=1024,nQe=1024,iQe=1024,aQe=.2,sQe=.8,oQe=10,lQe=.15,cQe=.1,uQe=.9,hQe=.9,fQe=100,dQe=1,z1={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},pQe=aa({getKey:null,doesEleInvalidateKey:sS,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:X0e,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),Sb=o(function(e,r){var n=this;n.renderer=e,n.onDequeues=[];var i=pQe(r);rr(n,i),n.lookup=new eQe(i.getKey,i.doesEleInvalidateKey),n.setupDequeueing()},"ElementTextureCache"),Wi=Sb.prototype;Wi.reasons=z1;Wi.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]};Wi.getRetiredTextureQueue=function(t){var e=this,r=e.eleImgCaches.retired=e.eleImgCaches.retired||{},n=r[t]=r[t]||[];return n};Wi.getElementQueue=function(){var t=this,e=t.eleCacheQueue=t.eleCacheQueue||new Wb(function(r,n){return n.reqs-r.reqs});return e};Wi.getElementKeyToQueue=function(){var t=this,e=t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{};return e};Wi.getElement=function(t,e,r,n,i){var a=this,s=this.renderer,l=s.cy.zoom(),u=this.lookup;if(!e||e.w===0||e.h===0||isNaN(e.w)||isNaN(e.h)||!t.visible()||t.removed()||!a.allowEdgeTxrCaching&&t.isEdge()||!a.allowParentTxrCaching&&t.isParent())return null;if(n==null&&(n=Math.ceil(qP(l*r))),n=ige||n>PP)return null;var h=Math.pow(2,n),f=e.h*h,d=e.w*h,p=s.eleTextBiggerThanMin(t,h);if(!this.isVisible(t,p))return null;var m=u.get(t,n);if(m&&m.invalidated&&(m.invalidated=!1,m.texture.invalidatedWidth-=m.width),m)return m;var g;if(f<=v0e?g=v0e:f<=q6?g=q6:g=Math.ceil(f/q6)*q6,f>iQe||d>nQe)return null;var y=a.getTextureQueue(g),v=y[y.length-2],x=o(function(){return a.recycleTexture(g,d)||a.addTexture(g,d)},"addNewTxr");v||(v=y[y.length-1]),v||(v=x()),v.width-v.usedWidthn;D--)_=a.getElement(t,e,r,D,z1.downscale);I()}else return a.queueElement(t,E.level-1),E;else{var k;if(!w&&!C&&!T)for(var L=n-1;L>=nS;L--){var R=u.get(t,L);if(R){k=R;break}}if(b(k))return a.queueElement(t,n),k;v.context.translate(v.usedWidth,0),v.context.scale(h,h),this.drawElement(v.context,t,e,p,!1),v.context.scale(1/h,1/h),v.context.translate(-v.usedWidth,0)}return m={x:v.usedWidth,texture:v,level:n,scale:h,width:d,height:f,scaledLabelShown:p},v.usedWidth+=Math.ceil(d+tQe),v.eleCaches.push(m),u.set(t,n,m),a.checkTextureFullness(v),m};Wi.invalidateElements=function(t){for(var e=0;e=aQe*t.width&&this.retireTexture(t)};Wi.checkTextureFullness=function(t){var e=this,r=e.getTextureQueue(t.height);t.usedWidth/t.width>sQe&&t.fullnessChecks>=oQe?Cf(r,t):t.fullnessChecks++};Wi.retireTexture=function(t){var e=this,r=t.height,n=e.getTextureQueue(r),i=this.lookup;Cf(n,t),t.retired=!0;for(var a=t.eleCaches,s=0;s=e)return s.retired=!1,s.usedWidth=0,s.invalidatedWidth=0,s.fullnessChecks=0,WP(s.eleCaches),s.context.setTransform(1,0,0,1,0,0),s.context.clearRect(0,0,s.width,s.height),Cf(i,s),n.push(s),s}};Wi.queueElement=function(t,e){var r=this,n=r.getElementQueue(),i=r.getElementKeyToQueue(),a=this.getKey(t),s=i[a];if(s)s.level=Math.max(s.level,e),s.eles.merge(t),s.reqs++,n.updateItem(s);else{var l={eles:t.spawn().merge(t),level:e,reqs:1,key:a};n.push(l),i[a]=l}};Wi.dequeue=function(t){for(var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),i=[],a=e.lookup,s=0;s0;s++){var l=r.pop(),u=l.key,h=l.eles[0],f=a.hasCache(h,l.level);if(n[u]=null,f)continue;i.push(l);var d=e.getBoundingBox(h);e.getElement(h,d,t,l.level,z1.dequeue)}return i};Wi.removeFromQueue=function(t){var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),i=this.getKey(t),a=n[i];a!=null&&(a.eles.length===1?(a.reqs=UP,r.updateItem(a),r.pop(),n[i]=null):a.eles.unmerge(t))};Wi.onDequeue=function(t){this.onDequeues.push(t)};Wi.offDequeue=function(t){Cf(this.onDequeues,t)};Wi.setupDequeueing=nge.setupDequeueing({deqRedrawThreshold:fQe,deqCost:lQe,deqAvgCost:cQe,deqNoDrawCost:uQe,deqFastCost:hQe,deq:o(function(e,r,n){return e.dequeue(r,n)},"deq"),onDeqd:o(function(e,r){for(var n=0;n=gQe||r>pS)return null}n.validateLayersElesOrdering(r,t);var u=n.layersByLevel,h=Math.pow(2,r),f=u[r]=u[r]||[],d,p=n.levelIsComplete(r,t),m,g=o(function(){var I=o(function(O){if(n.validateLayersElesOrdering(O,t),n.levelIsComplete(O,t))return m=u[O],!0},"canUseAsTmpLvl"),D=o(function(O){if(!m)for(var N=r+O;Ab<=N&&N<=pS&&!I(N);N+=O);},"checkLvls");D(1),D(-1);for(var k=f.length-1;k>=0;k--){var L=f[k];L.invalid&&Cf(f,L)}},"checkTempLevels");if(!p)g();else return f;var y=o(function(){if(!d){d=zs();for(var I=0;Ib0e||L>b0e)return null;var R=k*L;if(R>EQe)return null;var O=n.makeLayer(d,r);if(D!=null){var N=f.indexOf(D)+1;f.splice(N,0,O)}else(I.insert===void 0||I.insert)&&f.unshift(O);return O},"makeLayer");if(n.skipping&&!l)return null;for(var x=null,b=t.length/mQe,w=!l,C=0;C=b||!tme(x.bb,T.boundingBox()))&&(x=v({insert:!0,after:x}),!x))return null;m||w?n.queueLayer(x,T):n.drawEleInLayer(x,T,r,e),x.eles.push(T),A[r]=x}return m||(w?null:f)};wa.getEleLevelForLayerLevel=function(t,e){return t};wa.drawEleInLayer=function(t,e,r,n){var i=this,a=this.renderer,s=t.context,l=e.boundingBox();l.w===0||l.h===0||!e.visible()||(r=i.getEleLevelForLayerLevel(r,n),a.setImgSmoothing(s,!1),a.drawCachedElement(s,e,null,null,r,SQe),a.setImgSmoothing(s,!0))};wa.levelIsComplete=function(t,e){var r=this,n=r.layersByLevel[t];if(!n||n.length===0)return!1;for(var i=0,a=0;a0||s.invalid)return!1;i+=s.eles.length}return i===e.length};wa.validateLayersElesOrdering=function(t,e){var r=this.layersByLevel[t];if(r)for(var n=0;n0){e=!0;break}}return e};wa.invalidateElements=function(t){var e=this;t.length!==0&&(e.lastInvalidationTime=Xu(),!(t.length===0||!e.haveLayers())&&e.updateElementsInLayers(t,o(function(n,i,a){e.invalidateLayer(n)},"invalAssocLayers")))};wa.invalidateLayer=function(t){if(this.lastInvalidationTime=Xu(),!t.invalid){var e=t.level,r=t.eles,n=this.layersByLevel[e];Cf(n,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var i=0;i3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l=e._private.rscratch;if(!(a&&!e.visible())&&!(l.badLine||l.allpts==null||isNaN(l.allpts[0]))){var u;r&&(u=r,t.translate(-u.x1,-u.y1));var h=a?e.pstyle("opacity").value:1,f=a?e.pstyle("line-opacity").value:1,d=e.pstyle("curve-style").value,p=e.pstyle("line-style").value,m=e.pstyle("width").pfValue,g=e.pstyle("line-cap").value,y=e.pstyle("line-outline-width").value,v=e.pstyle("line-outline-color").value,x=h*f,b=h*f,w=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;d==="straight-triangle"?(s.eleStrokeStyle(t,e,O),s.drawEdgeTrianglePath(e,t,l.allpts)):(t.lineWidth=m,t.lineCap=g,s.eleStrokeStyle(t,e,O),s.drawEdgePath(e,t,l.allpts,p),t.lineCap="butt")},"drawLine"),C=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;if(t.lineWidth=m+y,t.lineCap=g,y>0)s.colorStrokeStyle(t,v[0],v[1],v[2],O);else{t.lineCap="butt";return}d==="straight-triangle"?s.drawEdgeTrianglePath(e,t,l.allpts):(s.drawEdgePath(e,t,l.allpts,p),t.lineCap="butt")},"drawLineOutline"),T=o(function(){i&&s.drawEdgeOverlay(t,e)},"drawOverlay"),E=o(function(){i&&s.drawEdgeUnderlay(t,e)},"drawUnderlay"),A=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:b;s.drawArrowheads(t,e,O)},"drawArrows"),S=o(function(){s.drawElementText(t,e,null,n)},"drawText");t.lineJoin="round";var _=e.pstyle("ghost").value==="yes";if(_){var I=e.pstyle("ghost-offset-x").pfValue,D=e.pstyle("ghost-offset-y").pfValue,k=e.pstyle("ghost-opacity").value,L=x*k;t.translate(I,D),w(L),A(L),t.translate(-I,-D)}else C();E(),w(),A(),T(),S(),r&&t.translate(u.x1,u.y1)}};oge=o(function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,n){if(n.visible()){var i=n.pstyle("".concat(e,"-opacity")).value;if(i!==0){var a=this,s=a.usePaths(),l=n._private.rscratch,u=n.pstyle("".concat(e,"-padding")).pfValue,h=2*u,f=n.pstyle("".concat(e,"-color")).value;r.lineWidth=h,l.edgeType==="self"&&!s?r.lineCap="butt":r.lineCap="round",a.colorStrokeStyle(r,f[0],f[1],f[2],i),a.drawEdgePath(n,r,l.allpts,"solid")}}}},"drawEdgeOverlayUnderlay");Zu.drawEdgeOverlay=oge("overlay");Zu.drawEdgeUnderlay=oge("underlay");Zu.drawEdgePath=function(t,e,r,n){var i=t._private.rscratch,a=e,s,l=!1,u=this.usePaths(),h=t.pstyle("line-dash-pattern").pfValue,f=t.pstyle("line-dash-offset").pfValue;if(u){var d=r.join("$"),p=i.pathCacheKey&&i.pathCacheKey===d;p?(s=e=i.pathCache,l=!0):(s=e=new Path2D,i.pathCacheKey=d,i.pathCache=s)}if(a.setLineDash)switch(n){case"dotted":a.setLineDash([1,1]);break;case"dashed":a.setLineDash(h),a.lineDashOffset=f;break;case"solid":a.setLineDash([]);break}if(!l&&!i.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(r[0],r[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var m=2;m+35&&arguments[5]!==void 0?arguments[5]:!0,s=this;if(n==null){if(a&&!s.eleTextBiggerThanMin(e))return}else if(n===!1)return;if(e.isNode()){var l=e.pstyle("label");if(!l||!l.value)return;var u=s.getLabelJustification(e);t.textAlign=u,t.textBaseline="bottom"}else{var h=e.element()._private.rscratch.badLine,f=e.pstyle("label"),d=e.pstyle("source-label"),p=e.pstyle("target-label");if(h||(!f||!f.value)&&(!d||!d.value)&&(!p||!p.value))return;t.textAlign="center",t.textBaseline="bottom"}var m=!r,g;r&&(g=r,t.translate(-g.x1,-g.y1)),i==null?(s.drawText(t,e,null,m,a),e.isEdge()&&(s.drawText(t,e,"source",m,a),s.drawText(t,e,"target",m,a))):s.drawText(t,e,i,m,a),r&&t.translate(g.x1,g.y1)};Wp.getFontCache=function(t){var e;this.fontCaches=this.fontCaches||[];for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!0,n=e.pstyle("font-style").strValue,i=e.pstyle("font-size").pfValue+"px",a=e.pstyle("font-family").strValue,s=e.pstyle("font-weight").strValue,l=r?e.effectiveOpacity()*e.pstyle("text-opacity").value:1,u=e.pstyle("text-outline-opacity").value*l,h=e.pstyle("color").value,f=e.pstyle("text-outline-color").value;t.font=n+" "+s+" "+i+" "+a,t.lineJoin="round",this.colorFillStyle(t,h[0],h[1],h[2],l),this.colorStrokeStyle(t,f[0],f[1],f[2],u)};o(xP,"roundRect");Wp.getTextAngle=function(t,e){var r,n=t._private,i=n.rscratch,a=e?e+"-":"",s=t.pstyle(a+"text-rotation");if(s.strValue==="autorotate"){var l=$l(i,"labelAngle",e);r=t.isEdge()?l:0}else s.strValue==="none"?r=0:r=s.pfValue;return r};Wp.drawText=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=e._private,s=a.rscratch,l=i?e.effectiveOpacity():1;if(!(i&&(l===0||e.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var u=$l(s,"labelX",r),h=$l(s,"labelY",r),f,d,p=this.getLabelText(e,r);if(p!=null&&p!==""&&!isNaN(u)&&!isNaN(h)){this.setupTextStyle(t,e,i);var m=r?r+"-":"",g=$l(s,"labelWidth",r),y=$l(s,"labelHeight",r),v=e.pstyle(m+"text-margin-x").pfValue,x=e.pstyle(m+"text-margin-y").pfValue,b=e.isEdge(),w=e.pstyle("text-halign").value,C=e.pstyle("text-valign").value;b&&(w="center",C="center"),u+=v,h+=x;var T;switch(n?T=this.getTextAngle(e,r):T=0,T!==0&&(f=u,d=h,t.translate(f,d),t.rotate(T),u=0,h=0),C){case"top":break;case"center":h+=y/2;break;case"bottom":h+=y;break}var E=e.pstyle("text-background-opacity").value,A=e.pstyle("text-border-opacity").value,S=e.pstyle("text-border-width").pfValue,_=e.pstyle("text-background-padding").pfValue,I=e.pstyle("text-background-shape").strValue,D=I.indexOf("round")===0,k=2;if(E>0||S>0&&A>0){var L=u-_;switch(w){case"left":L-=g;break;case"center":L-=g/2;break}var R=h-y-_,O=g+2*_,N=y+2*_;if(E>0){var B=t.fillStyle,F=e.pstyle("text-background-color").value;t.fillStyle="rgba("+F[0]+","+F[1]+","+F[2]+","+E*l+")",D?xP(t,L,R,O,N,k):t.fillRect(L,R,O,N),t.fillStyle=B}if(S>0&&A>0){var P=t.strokeStyle,G=t.lineWidth,z=e.pstyle("text-border-color").value,H=e.pstyle("text-border-style").value;if(t.strokeStyle="rgba("+z[0]+","+z[1]+","+z[2]+","+A*l+")",t.lineWidth=S,t.setLineDash)switch(H){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=S/4,t.setLineDash([]);break;case"solid":t.setLineDash([]);break}if(D?xP(t,L,R,O,N,k,"stroke"):t.strokeRect(L,R,O,N),H==="double"){var Q=S/2;D?xP(t,L+Q,R+Q,O-Q*2,N-Q*2,k,"stroke"):t.strokeRect(L+Q,R+Q,O-Q*2,N-Q*2)}t.setLineDash&&t.setLineDash([]),t.lineWidth=G,t.strokeStyle=P}}var j=2*e.pstyle("text-outline-width").pfValue;if(j>0&&(t.lineWidth=j),e.pstyle("text-wrap").value==="wrap"){var ie=$l(s,"labelWrapCachedLines",r),ne=$l(s,"labelLineHeight",r),le=g/2,he=this.getLabelJustification(e);switch(he==="auto"||(w==="left"?he==="left"?u+=-g:he==="center"&&(u+=-le):w==="center"?he==="left"?u+=-le:he==="right"&&(u+=le):w==="right"&&(he==="center"?u+=le:he==="right"&&(u+=g))),C){case"top":h-=(ie.length-1)*ne;break;case"center":case"bottom":h-=(ie.length-1)*ne;break}for(var K=0;K0&&t.strokeText(ie[K],u,h),t.fillText(ie[K],u,h),h+=ne}else j>0&&t.strokeText(p,u,h),t.fillText(p,u,h);T!==0&&(t.rotate(-T),t.translate(-f,-d))}}};ny={};ny.drawNode=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l,u,h=e._private,f=h.rscratch,d=e.position();if(!(!Ct(d.x)||!Ct(d.y))&&!(a&&!e.visible())){var p=a?e.effectiveOpacity():1,m=s.usePaths(),g,y=!1,v=e.padding();l=e.width()+2*v,u=e.height()+2*v;var x;r&&(x=r,t.translate(-x.x1,-x.y1));for(var b=e.pstyle("background-image"),w=b.value,C=new Array(w.length),T=new Array(w.length),E=0,A=0;A0&&arguments[0]!==void 0?arguments[0]:L;s.eleFillStyle(t,e,oe)},"setupShapeColor"),K=o(function(){var oe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:z;s.colorStrokeStyle(t,R[0],R[1],R[2],oe)},"setupBorderColor"),X=o(function(){var oe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ie;s.colorStrokeStyle(t,Q[0],Q[1],Q[2],oe)},"setupOutlineColor"),te=o(function(oe,V,xe,q){var pe=s.nodePathCache=s.nodePathCache||[],ve=Y0e(xe==="polygon"?xe+","+q.join(","):xe,""+V,""+oe,""+le),Pe=pe[ve],_e,we=!1;return Pe!=null?(_e=Pe,we=!0,f.pathCache=_e):(_e=new Path2D,pe[ve]=f.pathCache=_e),{path:_e,cacheHit:we}},"getPath"),J=e.pstyle("shape").strValue,se=e.pstyle("shape-polygon-points").pfValue;if(m){t.translate(d.x,d.y);var ue=te(l,u,J,se);g=ue.path,y=ue.cacheHit}var Z=o(function(){if(!y){var oe=d;m&&(oe={x:0,y:0}),s.nodeShapes[s.getNodeShape(e)].draw(g||t,oe.x,oe.y,l,u,le,f)}m?t.fill(g):t.fill()},"drawShape"),Se=o(function(){for(var oe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,xe=h.backgrounding,q=0,pe=0;pe0&&arguments[0]!==void 0?arguments[0]:!1,V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasPie(e)&&(s.drawPie(t,e,V),oe&&(m||s.nodeShapes[s.getNodeShape(e)].draw(t,d.x,d.y,l,u,le,f)))},"drawPie"),ae=o(function(){var oe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,V=(D>0?D:-D)*oe,xe=D>0?0:255;D!==0&&(s.colorFillStyle(t,xe,xe,xe,V),m?t.fill(g):t.fill())},"darken"),Oe=o(function(){if(k>0){if(t.lineWidth=k,t.lineCap=B,t.lineJoin=N,t.setLineDash)switch(O){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash(P),t.lineDashOffset=G;break;case"solid":case"double":t.setLineDash([]);break}if(F!=="center"){if(t.save(),t.lineWidth*=2,F==="inside")m?t.clip(g):t.clip();else{var oe=new Path2D;oe.rect(-l/2-k,-u/2-k,l+2*k,u+2*k),oe.addPath(g),t.clip(oe,"evenodd")}m?t.stroke(g):t.stroke(),t.restore()}else m?t.stroke(g):t.stroke();if(O==="double"){t.lineWidth=k/3;var V=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",m?t.stroke(g):t.stroke(),t.globalCompositeOperation=V}t.setLineDash&&t.setLineDash([])}},"drawBorder"),ge=o(function(){if(H>0){if(t.lineWidth=H,t.lineCap="butt",t.setLineDash)switch(j){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([]);break}var oe=d;m&&(oe={x:0,y:0});var V=s.getNodeShape(e),xe=k;F==="inside"&&(xe=0),F==="outside"&&(xe*=2);var q=(l+xe+(H+ne))/l,pe=(u+xe+(H+ne))/u,ve=l*q,Pe=u*pe,_e=s.nodeShapes[V].points,we;if(m){var Ve=te(ve,Pe,V,_e);we=Ve.path}if(V==="ellipse")s.drawEllipsePath(we||t,oe.x,oe.y,ve,Pe);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(V)){var De=0,qe=0,at=0;V==="round-diamond"?De=(xe+ne+H)*1.4:V==="round-heptagon"?(De=(xe+ne+H)*1.075,at=-(xe/2+ne+H)/35):V==="round-hexagon"?De=(xe+ne+H)*1.12:V==="round-pentagon"?(De=(xe+ne+H)*1.13,at=-(xe/2+ne+H)/15):V==="round-tag"?(De=(xe+ne+H)*1.12,qe=(xe/2+H+ne)*.07):V==="round-triangle"&&(De=(xe+ne+H)*(Math.PI/2),at=-(xe+ne/2+H)/Math.PI),De!==0&&(q=(l+De)/l,ve=l*q,["round-hexagon","round-tag"].includes(V)||(pe=(u+De)/u,Pe=u*pe)),le=le==="auto"?ime(ve,Pe):le;for(var Lt=ve/2,st=Pe/2,Ue=le+(xe+H+ne)/2,ct=new Array(_e.length/2),We=new Array(_e.length/2),ot=0;ot<_e.length/2;ot++)ct[ot]={x:oe.x+qe+Lt*_e[ot*2],y:oe.y+at+st*_e[ot*2+1]};var Yt,bt,Nt,xt,ut=ct.length;for(bt=ct[ut-1],Yt=0;Yt0){if(i=i||n.position(),a==null||s==null){var m=n.padding();a=n.width()+2*m,s=n.height()+2*m}l.colorFillStyle(r,f[0],f[1],f[2],h),l.nodeShapes[d].draw(r,i.x,i.y,a+u*2,s+u*2,p),r.fill()}}}},"drawNodeOverlayUnderlay");ny.drawNodeOverlay=lge("overlay");ny.drawNodeUnderlay=lge("underlay");ny.hasPie=function(t){return t=t[0],t._private.hasPie};ny.drawPie=function(t,e,r,n){e=e[0],n=n||e.position();var i=e.cy().style(),a=e.pstyle("pie-size"),s=n.x,l=n.y,u=e.width(),h=e.height(),f=Math.min(u,h)/2,d=0,p=this.usePaths();p&&(s=0,l=0),a.units==="%"?f=f*a.pfValue:a.pfValue!==void 0&&(f=a.pfValue/2);for(var m=1;m<=i.pieBackgroundN;m++){var g=e.pstyle("pie-"+m+"-background-size").value,y=e.pstyle("pie-"+m+"-background-color").value,v=e.pstyle("pie-"+m+"-background-opacity").value*r,x=g/100;x+d>1&&(x=1-d);var b=1.5*Math.PI+2*Math.PI*d,w=2*Math.PI*x,C=b+w;g===0||d>=1||d+x>1||(t.beginPath(),t.moveTo(s,l),t.arc(s,l,f,b,C),t.closePath(),this.colorFillStyle(t,y[0],y[1],y[2],v),t.fill(),d+=x)}};fs={},PQe=100;fs.getPixelRatio=function(){var t=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var e=this.cy.window(),r=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(e.devicePixelRatio||1)/r};fs.paintCache=function(t){for(var e=this.paintCaches=this.paintCaches||[],r=!0,n,i=0;ie.minMbLowQualFrames&&(e.motionBlurPxRatio=e.mbPxRBlurry)),e.clearingMotionBlur&&(e.motionBlurPxRatio=1),e.textureDrawLastFrame&&!d&&(f[e.NODE]=!0,f[e.SELECT_BOX]=!0);var b=r.style(),w=r.zoom(),C=s!==void 0?s:w,T=r.pan(),E={x:T.x,y:T.y},A={zoom:w,pan:{x:T.x,y:T.y}},S=e.prevViewport,_=S===void 0||A.zoom!==S.zoom||A.pan.x!==S.pan.x||A.pan.y!==S.pan.y;!_&&!(y&&!g)&&(e.motionBlurPxRatio=1),l&&(E=l),C*=u,E.x*=u,E.y*=u;var I=e.getCachedZSortedEles();function D(K,X,te,J,se){var ue=K.globalCompositeOperation;K.globalCompositeOperation="destination-out",e.colorFillStyle(K,255,255,255,e.motionBlurTransparency),K.fillRect(X,te,J,se),K.globalCompositeOperation=ue}o(D,"mbclear");function k(K,X){var te,J,se,ue;!e.clearingMotionBlur&&(K===h.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]||K===h.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG])?(te={x:T.x*m,y:T.y*m},J=w*m,se=e.canvasWidth*m,ue=e.canvasHeight*m):(te=E,J=C,se=e.canvasWidth,ue=e.canvasHeight),K.setTransform(1,0,0,1,0,0),X==="motionBlur"?D(K,0,0,se,ue):!n&&(X===void 0||X)&&K.clearRect(0,0,se,ue),i||(K.translate(te.x,te.y),K.scale(J,J)),l&&K.translate(l.x,l.y),s&&K.scale(s,s)}if(o(k,"setContextTransform"),d||(e.textureDrawLastFrame=!1),d){if(e.textureDrawLastFrame=!0,!e.textureCache){e.textureCache={},e.textureCache.bb=r.mutableElements().boundingBox(),e.textureCache.texture=e.data.bufferCanvases[e.TEXTURE_BUFFER];var L=e.data.bufferContexts[e.TEXTURE_BUFFER];L.setTransform(1,0,0,1,0,0),L.clearRect(0,0,e.canvasWidth*e.textureMult,e.canvasHeight*e.textureMult),e.render({forcedContext:L,drawOnlyNodeLayer:!0,forcedPxRatio:u*e.textureMult});var A=e.textureCache.viewport={zoom:r.zoom(),pan:r.pan(),width:e.canvasWidth,height:e.canvasHeight};A.mpan={x:(0-A.pan.x)/A.zoom,y:(0-A.pan.y)/A.zoom}}f[e.DRAG]=!1,f[e.NODE]=!1;var R=h.contexts[e.NODE],O=e.textureCache.texture,A=e.textureCache.viewport;R.setTransform(1,0,0,1,0,0),p?D(R,0,0,A.width,A.height):R.clearRect(0,0,A.width,A.height);var N=b.core("outside-texture-bg-color").value,B=b.core("outside-texture-bg-opacity").value;e.colorFillStyle(R,N[0],N[1],N[2],B),R.fillRect(0,0,A.width,A.height);var w=r.zoom();k(R,!1),R.clearRect(A.mpan.x,A.mpan.y,A.width/A.zoom/u,A.height/A.zoom/u),R.drawImage(O,A.mpan.x,A.mpan.y,A.width/A.zoom/u,A.height/A.zoom/u)}else e.textureOnViewport&&!n&&(e.textureCache=null);var F=r.extent(),P=e.pinching||e.hoverData.dragging||e.swipePanning||e.data.wheelZooming||e.hoverData.draggingEles||e.cy.animated(),G=e.hideEdgesOnViewport&&P,z=[];if(z[e.NODE]=!f[e.NODE]&&p&&!e.clearedForMotionBlur[e.NODE]||e.clearingMotionBlur,z[e.NODE]&&(e.clearedForMotionBlur[e.NODE]=!0),z[e.DRAG]=!f[e.DRAG]&&p&&!e.clearedForMotionBlur[e.DRAG]||e.clearingMotionBlur,z[e.DRAG]&&(e.clearedForMotionBlur[e.DRAG]=!0),f[e.NODE]||i||a||z[e.NODE]){var H=p&&!z[e.NODE]&&m!==1,R=n||(H?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]:h.contexts[e.NODE]),Q=p&&!H?"motionBlur":void 0;k(R,Q),G?e.drawCachedNodes(R,I.nondrag,u,F):e.drawLayeredElements(R,I.nondrag,u,F),e.debug&&e.drawDebugPoints(R,I.nondrag),!i&&!p&&(f[e.NODE]=!1)}if(!a&&(f[e.DRAG]||i||z[e.DRAG])){var H=p&&!z[e.DRAG]&&m!==1,R=n||(H?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG]:h.contexts[e.DRAG]);k(R,p&&!H?"motionBlur":void 0),G?e.drawCachedNodes(R,I.drag,u,F):e.drawCachedElements(R,I.drag,u,F),e.debug&&e.drawDebugPoints(R,I.drag),!i&&!p&&(f[e.DRAG]=!1)}if(this.drawSelectionRectangle(t,k),p&&m!==1){var j=h.contexts[e.NODE],ie=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_NODE],ne=h.contexts[e.DRAG],le=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_DRAG],he=o(function(X,te,J){X.setTransform(1,0,0,1,0,0),J||!x?X.clearRect(0,0,e.canvasWidth,e.canvasHeight):D(X,0,0,e.canvasWidth,e.canvasHeight);var se=m;X.drawImage(te,0,0,e.canvasWidth*se,e.canvasHeight*se,0,0,e.canvasWidth,e.canvasHeight)},"drawMotionBlur");(f[e.NODE]||z[e.NODE])&&(he(j,ie,z[e.NODE]),f[e.NODE]=!1),(f[e.DRAG]||z[e.DRAG])&&(he(ne,le,z[e.DRAG]),f[e.DRAG]=!1)}e.prevViewport=A,e.clearingMotionBlur&&(e.clearingMotionBlur=!1,e.motionBlurCleared=!0,e.motionBlur=!0),p&&(e.motionBlurTimeout=setTimeout(function(){e.motionBlurTimeout=null,e.clearedForMotionBlur[e.NODE]=!1,e.clearedForMotionBlur[e.DRAG]=!1,e.motionBlur=!1,e.clearingMotionBlur=!d,e.mbFrames=0,f[e.NODE]=!0,f[e.DRAG]=!0,e.redraw()},PQe)),n||r.emit("render")};fs.drawSelectionRectangle=function(t,e){var r=this,n=r.cy,i=r.data,a=n.style(),s=t.drawOnlyNodeLayer,l=t.drawAllLayers,u=i.canvasNeedsRedraw,h=t.forcedContext;if(r.showFps||!s&&u[r.SELECT_BOX]&&!l){var f=h||i.contexts[r.SELECT_BOX];if(e(f),r.selection[4]==1&&(r.hoverData.selecting||r.touchData.selecting)){var d=r.cy.zoom(),p=a.core("selection-box-border-width").value/d;f.lineWidth=p,f.fillStyle="rgba("+a.core("selection-box-color").value[0]+","+a.core("selection-box-color").value[1]+","+a.core("selection-box-color").value[2]+","+a.core("selection-box-opacity").value+")",f.fillRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]),p>0&&(f.strokeStyle="rgba("+a.core("selection-box-border-color").value[0]+","+a.core("selection-box-border-color").value[1]+","+a.core("selection-box-border-color").value[2]+","+a.core("selection-box-opacity").value+")",f.strokeRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]))}if(i.bgActivePosistion&&!r.hoverData.selecting){var d=r.cy.zoom(),m=i.bgActivePosistion;f.fillStyle="rgba("+a.core("active-bg-color").value[0]+","+a.core("active-bg-color").value[1]+","+a.core("active-bg-color").value[2]+","+a.core("active-bg-opacity").value+")",f.beginPath(),f.arc(m.x,m.y,a.core("active-bg-size").pfValue/d,0,2*Math.PI),f.fill()}var g=r.lastRedrawTime;if(r.showFps&&g){g=Math.round(g);var y=Math.round(1e3/g),v="1 frame = "+g+" ms = "+y+" fps";if(f.setTransform(1,0,0,1,0,0),f.fillStyle="rgba(255, 0, 0, 0.75)",f.strokeStyle="rgba(255, 0, 0, 0.75)",f.font="30px Arial",!xb){var x=f.measureText(v);xb=x.actualBoundingBoxAscent}f.fillText(v,0,xb);var b=60;f.strokeRect(0,xb+10,250,20),f.fillRect(0,xb+10,250*Math.min(y/b,1),20)}l||(u[r.SELECT_BOX]=!1)}};o(E0e,"compileShader");o(BQe,"createProgram");o(FQe,"createTextureCanvas");o(cB,"getEffectivePanZoom");o(bP,"modelToRenderedPosition");o(Y6,"toWebGLColor");o(X6,"indexToVec4");o(zQe,"vec4ToIndex");o(GQe,"createTexture");o(cge,"getTypeInfo");o(uge,"createTypedArray");o($Qe,"createTypedArrayView");o(VQe,"createBufferStaticDraw");o(co,"createBufferDynamicDraw");o(UQe,"createPickingFrameBuffer");S0e=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});o(_b,"create");o(hge,"identity");o(HQe,"multiply");o(mS,"translate");o(fge,"rotate");o(uB,"scale");o(WQe,"projection");Db={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},bb=aa({getKey:null,drawElement:null,getBoundingBox:null,getRotation:null,getRotationPoint:null,getRotationOffset:null,isVisible:null,getPadding:null}),qQe=function(){function t(e,r){Lf(this,t),this.debugID=Math.floor(Math.random()*1e4),this.r=e,this.atlasSize=r.webglTexSize,this.rows=r.webglTexRows,this.enableWrapping=r.enableWrapping,this.texHeight=Math.floor(this.atlasSize/this.rows),this.maxTexWidth=this.atlasSize,this.texture=null,this.canvas=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=r.createTextureCanvas(e,this.atlasSize,this.atlasSize),this.scratch=r.createTextureCanvas(e,this.atlasSize,this.texHeight,"scratch")}return o(t,"Atlas"),Rf(t,[{key:"getKeys",value:o(function(){return new Set(this.keyToLocation.keys())},"getKeys")},{key:"getScale",value:o(function(r){var n=r.w,i=r.h,a=this.texHeight,s=this.maxTexWidth,l=a/i,u=n*l,h=i*l;return u>s&&(l=s/n,u=n*l,h=i*l),{scale:l,texW:u,texH:h}},"getScale")},{key:"draw",value:o(function(r,n,i){var a=this,s=this.atlasSize,l=this.rows,u=this.texHeight,h=this.getScale(n),f=h.scale,d=h.texW,p=h.texH,m=[null,null],g=o(function(w,C){if(i&&C){var T=C.context,E=w.x,A=w.row,S=E,_=u*A;T.save(),T.translate(S,_),T.scale(f,f),i(T,n),T.restore()}},"drawAt"),y=o(function(){g(a.freePointer,a.canvas),m[0]={x:a.freePointer.x,y:a.freePointer.row*u,w:d,h:p},m[1]={x:a.freePointer.x+d,y:a.freePointer.row*u,w:0,h:p},a.freePointer.x+=d,a.freePointer.x==s&&(a.freePointer.x=0,a.freePointer.row++)},"drawNormal"),v=o(function(){var w=a.scratch,C=a.canvas;w.clear(),g({x:0,row:0},w);var T=s-a.freePointer.x,E=d-T,A=u;{var S=a.freePointer.x,_=a.freePointer.row*u,I=T;C.context.drawImage(w,0,0,I,A,S,_,I,A),m[0]={x:S,y:_,w:I,h:p}}{var D=T,k=(a.freePointer.row+1)*u,L=E;C&&C.context.drawImage(w,D,0,L,A,0,k,L,A),m[1]={x:0,y:k,w:L,h:p}}a.freePointer.x=E,a.freePointer.row++},"drawWrapped"),x=o(function(){a.freePointer.x=0,a.freePointer.row++},"moveToStartOfNextRow");if(this.freePointer.x+d<=s)y();else{if(this.freePointer.row>=l-1)return!1;this.freePointer.x===s?(x(),y()):this.enableWrapping?v():(x(),y())}return this.keyToLocation.set(r,m),this.needsBuffer=!0,m},"draw")},{key:"getOffsets",value:o(function(r){return this.keyToLocation.get(r)},"getOffsets")},{key:"isEmpty",value:o(function(){return this.freePointer.x===0&&this.freePointer.row===0},"isEmpty")},{key:"canFit",value:o(function(r){var n=this.atlasSize,i=this.rows,a=this.getScale(r),s=a.texW;return this.freePointer.x+s>n?this.freePointer.row1&&arguments[1]!==void 0?arguments[1]:{},i=n.forceRedraw,a=i===void 0?!1:i,s=n.filterEle,l=s===void 0?function(){return!0}:s,u=n.filterType,h=u===void 0?function(){return!0}:u,f=!1,d=uo(r),p;try{for(d.s();!(p=d.n()).done;){var m=p.value;if(l(m)){var g=m.id(),y=uo(this.getRenderTypes()),v;try{for(y.s();!(v=y.n()).done;){var x=v.value;if(h(x.type)){var b=x.getKey(m);a?(x.atlasCollection.deleteKey(g,b),x.atlasCollection.styleKeyNeedsRedraw.add(b),f=!0):f|=x.atlasCollection.checkKeyIsInvalid(g,b)}}}catch(w){y.e(w)}finally{y.f()}}}}catch(w){d.e(w)}finally{d.f()}return f},"invalidate")},{key:"gc",value:o(function(){var r=uo(this.getRenderTypes()),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;i.atlasCollection.gc()}}catch(a){r.e(a)}finally{r.f()}},"gc")},{key:"isRenderable",value:o(function(r,n){var i=this.getRenderTypeOpts(n);return i&&i.isVisible(r)},"isRenderable")},{key:"startBatch",value:o(function(){this.batchAtlases=[]},"startBatch")},{key:"getAtlasCount",value:o(function(){return this.batchAtlases.length},"getAtlasCount")},{key:"getAtlases",value:o(function(){return this.batchAtlases},"getAtlases")},{key:"getOrCreateAtlas",value:o(function(r,n,i){var a=this.renderTypes.get(i),s=a.getKey(r),l=r.id();return a.atlasCollection.draw(l,s,n,function(u){a.drawElement(u,r,n,!0,!0)})},"getOrCreateAtlas")},{key:"getAtlasIndexForBatch",value:o(function(r){var n=this.batchAtlases.indexOf(r);if(n<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)return;this.batchAtlases.push(r),n=this.batchAtlases.length-1}return n},"getAtlasIndexForBatch")},{key:"getIndexArray",value:o(function(){return Array.from({length:this.maxAtlases},function(r,n){return n})},"getIndexArray")},{key:"getAtlasInfo",value:o(function(r,n){var i=this.renderTypes.get(n),a=i.getBoundingBox(r),s=this.getOrCreateAtlas(r,a,n),l=this.getAtlasIndexForBatch(s);if(l!==void 0){var u=i.getKey(r),h=s.getOffsets(u),f=Ai(h,2),d=f[0],p=f[1];return{atlasID:l,tex:d,tex1:d,tex2:p,bb:a,type:n,styleKey:u}}},"getAtlasInfo")},{key:"canAddToCurrentBatch",value:o(function(r,n){if(this.batchAtlases.length===this.maxAtlasesPerBatch){var i=this.renderTypes.get(n),a=i.getKey(r),s=i.atlasCollection.getAtlas(a);return s&&this.batchAtlases.includes(s)}return!0},"canAddToCurrentBatch")},{key:"setTransformMatrix",value:o(function(r,n,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,s=n.bb,l=n.type,u=n.tex1,h=n.tex2,f=this.getRenderTypeOpts(l),d=f.getPadding?f.getPadding(i):0,p=u.w/(u.w+h.w);a||(p=1-p);var m=this.getAdjustedBB(s,d,a,p),g,y;hge(r);var v=f.getRotation?f.getRotation(i):0;if(v!==0){var x=f.getRotationPoint(i),b=x.x,w=x.y;mS(r,r,[b,w]),fge(r,r,v);var C=f.getRotationOffset(i);g=C.x+m.xOffset,y=C.y}else g=m.x1,y=m.y1;mS(r,r,[g,y]),uB(r,r,[m.w,m.h])},"setTransformMatrix")},{key:"getTransformMatrix",value:o(function(r,n){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=_b();return this.setTransformMatrix(a,r,n,i),a},"getTransformMatrix")},{key:"getAdjustedBB",value:o(function(r,n,i,a){var s=r.x1,l=r.y1,u=r.w,h=r.h;n&&(s-=n,l-=n,u+=2*n,h+=2*n);var f=0,d=u*a;return i&&a<1?u=d:!i&&a<1&&(f=u-d,s+=f,u=d),{x1:s,y1:l,w:u,h,xOffset:f}},"getAdjustedBB")},{key:"getDebugInfo",value:o(function(){var r=[],n=uo(this.renderTypes),i;try{for(n.s();!(i=n.n()).done;){var a=Ai(i.value,2),s=a[0],l=a[1],u=l.atlasCollection.getCounts(),h=u.keyCount,f=u.atlasCount;r.push({type:s,keyCount:h,atlasCount:f})}}catch(d){n.e(d)}finally{n.f()}return r},"getDebugInfo")}]),t}(),wP=0,C0e=1,A0e=2,TP=3,KQe=function(){function t(e,r,n){Lf(this,t),this.r=e,this.gl=r,this.maxInstances=n.webglBatchSize,this.maxAtlases=n.webglTexPerBatch,this.atlasSize=n.webglTexSize,this.bgColor=n.bgColor,n.enableWrapping=!0,n.createTextureCanvas=FQe,this.atlasManager=new jQe(e,n),this.program=this.createShaderProgram(Db.SCREEN),this.pickingProgram=this.createShaderProgram(Db.PICKING),this.vao=this.createVAO(),this.debugInfo=[]}return o(t,"ElementDrawingWebGL"),Rf(t,[{key:"addTextureRenderType",value:o(function(r,n){this.atlasManager.addRenderType(r,n)},"addTextureRenderType")},{key:"invalidate",value:o(function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=n.type,a=this.atlasManager;return i?a.invalidate(r,{filterType:o(function(l){return l===i},"filterType"),forceRedraw:!0}):a.invalidate(r)},"invalidate")},{key:"gc",value:o(function(){this.atlasManager.gc()},"gc")},{key:"createShaderProgram",value:o(function(r){var n=this.gl,i=`#version 300 es + precision highp float; + + uniform mat3 uPanZoomMatrix; + uniform int uAtlasSize; + + // instanced + in vec2 aPosition; + + // what are we rendering? + in int aVertType; + + // for picking + in vec4 aIndex; + + // For textures + in int aAtlasId; // which shader unit/atlas to use + in vec4 aTex1; // x/y/w/h of texture in atlas + in vec4 aTex2; + + // for any transforms that are needed + in vec4 aScaleRotate1; // vectors use fewer attributes than matrices + in vec2 aTranslate1; + in vec4 aScaleRotate2; + in vec2 aTranslate2; + + // for edges + in vec4 aPointAPointB; + in vec4 aPointCPointD; + in float aLineWidth; + in vec4 aEdgeColor; + + out vec2 vTexCoord; + out vec4 vEdgeColor; + flat out int vAtlasId; + flat out vec4 vIndex; + flat out int vVertType; + + void main(void) { + int vid = gl_VertexID; + vec2 position = aPosition; + + if(aVertType == `.concat(wP,`) { + float texX; + float texY; + float texW; + float texH; + mat3 texMatrix; + + int vid = gl_VertexID; + if(vid <= 5) { + texX = aTex1.x; + texY = aTex1.y; + texW = aTex1.z; + texH = aTex1.w; + texMatrix = mat3( + vec3(aScaleRotate1.xy, 0.0), + vec3(aScaleRotate2.zw, 0.0), + vec3(aTranslate1, 1.0) + ); + } else { + texX = aTex2.x; + texY = aTex2.y; + texW = aTex2.z; + texH = aTex2.w; + texMatrix = mat3( + vec3(aScaleRotate2.xy, 0.0), + vec3(aScaleRotate2.zw, 0.0), + vec3(aTranslate2, 1.0) + ); + } + + if(vid == 1 || vid == 2 || vid == 4 || vid == 7 || vid == 8 || vid == 10) { + texX += texW; + } + if(vid == 2 || vid == 4 || vid == 5 || vid == 8 || vid == 10 || vid == 11) { + texY += texH; + } + + float d = float(uAtlasSize); + vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1 + + gl_Position = vec4(uPanZoomMatrix * texMatrix * vec3(position, 1.0), 1.0); + } + else if(aVertType == `).concat(C0e,` && vid < 6) { + vec2 source = aPointAPointB.xy; + vec2 target = aPointAPointB.zw; + + // adjust the geometry so that the line is centered on the edge + position.y = position.y - 0.5; + + vec2 xBasis = target - source; + vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x)); + vec2 point = source + xBasis * position.x + yBasis * aLineWidth * position.y; + + gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0); + vEdgeColor = aEdgeColor; + } + else if(aVertType == `).concat(A0e,` && vid < 6) { + vec2 pointA = aPointAPointB.xy; + vec2 pointB = aPointAPointB.zw; + vec2 pointC = aPointCPointD.xy; + vec2 pointD = aPointCPointD.zw; + + // adjust the geometry so that the line is centered on the edge + position.y = position.y - 0.5; + + vec2 p0 = pointA; + vec2 p1 = pointB; + vec2 p2 = pointC; + vec2 pos = position; + if(position.x == 1.0) { + p0 = pointD; + p1 = pointC; + p2 = pointB; + pos = vec2(0.0, -position.y); + } + + vec2 p01 = p1 - p0; + vec2 p12 = p2 - p1; + vec2 p21 = p1 - p2; + + // Find the normal vector. + vec2 tangent = normalize(normalize(p12) + normalize(p01)); + vec2 normal = vec2(-tangent.y, tangent.x); + + // Find the vector perpendicular to p0 -> p1. + vec2 p01Norm = normalize(vec2(-p01.y, p01.x)); + + // Determine the bend direction. + float sigma = sign(dot(p01 + p21, normal)); + float width = aLineWidth; + + if(sign(pos.y) == -sigma) { + // This is an intersecting vertex. Adjust the position so that there's no overlap. + vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm); + gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); + } else { + // This is a non-intersecting vertex. Treat it like a mitre join. + vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm); + gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); + } + + vEdgeColor = aEdgeColor; + } + else if(aVertType == `).concat(TP,` && vid < 3) { + // massage the first triangle into an edge arrow + if(vid == 0) + position = vec2(-0.15, -0.3); + if(vid == 1) + position = vec2( 0.0, 0.0); + if(vid == 2) + position = vec2( 0.15, -0.3); + + mat3 transform = mat3( + vec3(aScaleRotate1.xy, 0.0), + vec3(aScaleRotate1.zw, 0.0), + vec3(aTranslate1, 1.0) + ); + gl_Position = vec4(uPanZoomMatrix * transform * vec3(position, 1.0), 1.0); + vEdgeColor = aEdgeColor; + } else { + gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space + } + + vAtlasId = aAtlasId; + vIndex = aIndex; + vVertType = aVertType; + } + `),a=this.atlasManager.getIndexArray(),s=`#version 300 es + precision highp float; + + // define texture unit for each node in the batch + `.concat(a.map(function(h){return"uniform sampler2D uTexture".concat(h,";")}).join(` + `),` + + uniform vec4 uBGColor; + + in vec2 vTexCoord; + in vec4 vEdgeColor; + flat in int vAtlasId; + flat in vec4 vIndex; + flat in int vVertType; + + out vec4 outColor; + + void main(void) { + if(vVertType == `).concat(wP,`) { + `).concat(a.map(function(h){return"if(vAtlasId == ".concat(h,") outColor = texture(uTexture").concat(h,", vTexCoord);")}).join(` + else `),` + } else if(vVertType == `).concat(TP,`) { + // blend arrow color with background (using premultiplied alpha) + outColor.rgb = vEdgeColor.rgb + (uBGColor.rgb * (1.0 - vEdgeColor.a)); + outColor.a = 1.0; // make opaque, masks out line under arrow + } else { + outColor = vEdgeColor; + } + + `).concat(r.picking?`if(outColor.a == 0.0) discard; + else outColor = vIndex;`:"",` + } + `),l=BQe(n,i,s);l.aPosition=n.getAttribLocation(l,"aPosition"),l.aIndex=n.getAttribLocation(l,"aIndex"),l.aVertType=n.getAttribLocation(l,"aVertType"),l.aAtlasId=n.getAttribLocation(l,"aAtlasId"),l.aTex1=n.getAttribLocation(l,"aTex1"),l.aTex2=n.getAttribLocation(l,"aTex2"),l.aScaleRotate1=n.getAttribLocation(l,"aScaleRotate1"),l.aTranslate1=n.getAttribLocation(l,"aTranslate1"),l.aScaleRotate2=n.getAttribLocation(l,"aScaleRotate2"),l.aTranslate2=n.getAttribLocation(l,"aTranslate2"),l.aPointAPointB=n.getAttribLocation(l,"aPointAPointB"),l.aPointCPointD=n.getAttribLocation(l,"aPointCPointD"),l.aLineWidth=n.getAttribLocation(l,"aLineWidth"),l.aEdgeColor=n.getAttribLocation(l,"aEdgeColor"),l.uPanZoomMatrix=n.getUniformLocation(l,"uPanZoomMatrix"),l.uAtlasSize=n.getUniformLocation(l,"uAtlasSize"),l.uBGColor=n.getUniformLocation(l,"uBGColor"),l.uTextures=[];for(var u=0;u2&&arguments[2]!==void 0?arguments[2]:Db.SCREEN;this.panZoomMatrix=r,this.debugInfo=n,this.renderTarget=i,this.startBatch()},"startFrame")},{key:"startBatch",value:o(function(){this.instanceCount=0,this.atlasManager.startBatch()},"startBatch")},{key:"endFrame",value:o(function(){this.endBatch()},"endFrame")},{key:"getTempMatrix",value:o(function(){return this.tempMatrix=this.tempMatrix||_b()},"getTempMatrix")},{key:"drawTexture",value:o(function(r,n,i){var a=this.atlasManager;if(a.isRenderable(r,i)){a.canAddToCurrentBatch(r,i)||this.endBatch();var s=this.instanceCount;this.vertTypeBuffer.getView(s)[0]=wP;var l=this.indexBuffer.getView(s);X6(n,l);var u=a.getAtlasInfo(r,i,u),h=u.atlasID,f=u.tex1,d=u.tex2,p=this.atlasIdBuffer.getView(s);p[0]=h;var m=this.tex1Buffer.getView(s);m[0]=f.x,m[1]=f.y,m[2]=f.w,m[3]=f.h;var g=this.tex2Buffer.getView(s);g[0]=d.x,g[1]=d.y,g[2]=d.w,g[3]=d.h;for(var y=this.getTempMatrix(),v=0,x=[1,2];v=this.maxInstances&&this.endBatch()}},"drawTexture")},{key:"drawEdgeArrow",value:o(function(r,n,i){var a=r._private.rscratch,s,l,u;if(i==="source"?(s=a.arrowStartX,l=a.arrowStartY,u=a.srcArrowAngle):(s=a.arrowEndX,l=a.arrowEndY,u=a.tgtArrowAngle),!(isNaN(s)||s==null||isNaN(l)||l==null||isNaN(u)||u==null)){var h=r.pstyle(i+"-arrow-shape").value;if(h!=="none"){var f=r.pstyle(i+"-arrow-color").value,d=r.pstyle("opacity").value,p=r.pstyle("line-opacity").value,m=d*p,g=r.pstyle("width").pfValue,y=r.pstyle("arrow-scale").value,v=this.r.getArrowWidth(g,y),x=this.getTempMatrix();hge(x),mS(x,x,[s,l]),uB(x,x,[v,v]),fge(x,x,u);var b=this.instanceCount;this.vertTypeBuffer.getView(b)[0]=TP;var w=this.indexBuffer.getView(b);X6(n,w);var C=this.edgeColorBuffer.getView(b);Y6(f,m,C);var T=this.scaleRotate1Buffer.getView(b);T[0]=x[0],T[1]=x[1],T[2]=x[3],T[3]=x[4];var E=this.translate1Buffer.getView(b);E[0]=x[6],E[1]=x[7],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}},"drawEdgeArrow")},{key:"drawEdgeLine",value:o(function(r,n){var i=r.pstyle("opacity").value,a=r.pstyle("line-opacity").value,s=r.pstyle("width").pfValue,l=r.pstyle("line-color").value,u=i*a,h=this.getEdgePoints(r);if(h.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),h.length==4){var f=this.instanceCount;this.vertTypeBuffer.getView(f)[0]=C0e;var d=this.indexBuffer.getView(f);X6(n,d);var p=this.edgeColorBuffer.getView(f);Y6(l,u,p);var m=this.lineWidthBuffer.getView(f);m[0]=s;var g=this.pointAPointBBuffer.getView(f);g[0]=h[0],g[1]=h[1],g[2]=h[2],g[3]=h[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var y=0;y=this.maxInstances&&this.endBatch()}},"drawEdgeLine")},{key:"getEdgePoints",value:o(function(r){var n=r._private.rscratch,i=n.allpts;if(i.length==4)return i;var a=this.getNumSegments(r);return this.getCurveSegmentPoints(i,a)},"getEdgePoints")},{key:"getNumSegments",value:o(function(r){var n=15;return Math.min(Math.max(n,5),this.maxInstances)},"getNumSegments")},{key:"getCurveSegmentPoints",value:o(function(r,n){if(r.length==4)return r;for(var i=Array((n+1)*2),a=0;a<=n;a++)if(a==0)i[0]=r[0],i[1]=r[1];else if(a==n)i[a*2]=r[r.length-2],i[a*2+1]=r[r.length-1];else{var s=a/n;this.setCurvePoint(r,s,i,a*2)}return i},"getCurveSegmentPoints")},{key:"setCurvePoint",value:o(function(r,n,i,a){if(r.length<=2)i[a]=r[0],i[a+1]=r[1];else{for(var s=Array(r.length-2),l=0;l0},"isVisible")},{key:"getStyle",value:o(function(r,n){var i=n.pstyle("".concat(r,"-opacity")).value,a=n.pstyle("".concat(r,"-color")).value,s=n.pstyle("".concat(r,"-shape")).value;return{opacity:i,color:a,shape:s}},"getStyle")},{key:"getPadding",value:o(function(r,n){return n.pstyle("".concat(r,"-padding")).pfValue},"getPadding")},{key:"draw",value:o(function(r,n,i,a){if(this.isVisible(r,i)){var s=this.r,l=a.w,u=a.h,h=l/2,f=u/2,d=this.getStyle(r,i),p=d.shape,m=d.color,g=d.opacity;n.save(),n.fillStyle=_0e(m,g),p==="round-rectangle"||p==="roundrectangle"?s.drawRoundRectanglePath(n,h,f,l,u,"auto"):p==="ellipse"&&s.drawEllipsePath(n,h,f,l,u),n.fill(),n.restore()}},"draw")}]),t}();o(ZQe,"getBGColor");dge={};dge.initWebgl=function(t,e){var r=this,n=r.data.contexts[r.WEBGL],i=t.cy.container();t.bgColor=ZQe(i),t.webglTexSize=Math.min(t.webglTexSize,n.getParameter(n.MAX_TEXTURE_SIZE)),t.webglTexRows=Math.min(t.webglTexRows,54),t.webglBatchSize=Math.min(t.webglBatchSize,16384),t.webglTexPerBatch=Math.min(t.webglTexPerBatch,n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS)),r.webglDebug=t.webglDebug,r.webglDebugShowAtlases=t.webglDebugShowAtlases,console.log("max texture units",n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS)),console.log("max texture size",n.getParameter(n.MAX_TEXTURE_SIZE)),console.log("webgl options",t),r.pickingFrameBuffer=UQe(n),r.pickingFrameBuffer.needsDraw=!0;var a=o(function(f){return r.getTextAngle(f,null)},"getLabelRotation"),s=o(function(f){var d=f.pstyle("label");return d&&d.value},"isLabelVisible");r.eleDrawing=new KQe(r,n,t);var l=new QQe(r);r.eleDrawing.addTextureRenderType("node-body",bb({getKey:e.getStyleKey,getBoundingBox:e.getElementBox,drawElement:e.drawElement,isVisible:o(function(f){return f.visible()},"isVisible")})),r.eleDrawing.addTextureRenderType("node-label",bb({getKey:e.getLabelKey,getBoundingBox:e.getLabelBox,drawElement:e.drawLabel,getRotation:a,getRotationPoint:e.getLabelRotationPoint,getRotationOffset:e.getLabelRotationOffset,isVisible:s})),r.eleDrawing.addTextureRenderType("node-overlay",bb({getBoundingBox:e.getElementBox,getKey:o(function(f){return l.getStyleKey("overlay",f)},"getKey"),drawElement:o(function(f,d,p){return l.draw("overlay",f,d,p)},"drawElement"),isVisible:o(function(f){return l.isVisible("overlay",f)},"isVisible"),getPadding:o(function(f){return l.getPadding("overlay",f)},"getPadding")})),r.eleDrawing.addTextureRenderType("node-underlay",bb({getBoundingBox:e.getElementBox,getKey:o(function(f){return l.getStyleKey("underlay",f)},"getKey"),drawElement:o(function(f,d,p){return l.draw("underlay",f,d,p)},"drawElement"),isVisible:o(function(f){return l.isVisible("underlay",f)},"isVisible"),getPadding:o(function(f){return l.getPadding("underlay",f)},"getPadding")})),r.eleDrawing.addTextureRenderType("edge-label",bb({getKey:e.getLabelKey,getBoundingBox:e.getLabelBox,drawElement:e.drawLabel,getRotation:a,getRotationPoint:e.getLabelRotationPoint,getRotationOffset:e.getLabelRotationOffset,isVisible:s}));var u=Hb(function(){console.log("garbage collect flag set"),r.data.gc=!0},1e4);r.onUpdateEleCalcs(function(h,f){var d=!1;f&&f.length>0&&(d|=r.eleDrawing.invalidate(f)),d&&u()}),JQe(r)};o(JQe,"overrideCanvasRendererFunctions");o(eZe,"clearWebgl");o(tZe,"clearCanvas");o(rZe,"createPanZoomMatrix");o(pge,"setContextTransform");o(nZe,"drawSelectionRectangle");o(iZe,"drawAxes");o(aZe,"drawAtlases");o(sZe,"getPickingIndexes");o(oZe,"findNearestElementsWebgl");o(mge,"renderWebgl");Mf={};Mf.drawPolygonPath=function(t,e,r,n,i,a){var s=n/2,l=i/2;t.beginPath&&t.beginPath(),t.moveTo(e+s*a[0],r+l*a[1]);for(var u=1;u0&&s>0){m.clearRect(0,0,a,s),m.globalCompositeOperation="source-over";var g=this.getCachedZSortedEles();if(t.full)m.translate(-n.x1*h,-n.y1*h),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(n.x1*h,n.y1*h);else{var y=e.pan(),v={x:y.x*h,y:y.y*h};h*=e.zoom(),m.translate(v.x,v.y),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(-v.x,-v.y)}t.bg&&(m.globalCompositeOperation="destination-over",m.fillStyle=t.bg,m.rect(0,0,a,s),m.fill())}return p};o(lZe,"b64ToBlob");o(R0e,"b64UriToB64");o(yge,"output");Kb.png=function(t){return yge(t,this.bufferCanvasImage(t),"image/png")};Kb.jpg=function(t){return yge(t,this.bufferCanvasImage(t),"image/jpeg")};vge={};vge.nodeShapeImpl=function(t,e,r,n,i,a,s,l){switch(t){case"ellipse":return this.drawEllipsePath(e,r,n,i,a);case"polygon":return this.drawPolygonPath(e,r,n,i,a,s);case"round-polygon":return this.drawRoundPolygonPath(e,r,n,i,a,s,l);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(e,r,n,i,a,l);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(e,r,n,i,a,s,l);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(e,r,n,i,a,l);case"barrel":return this.drawBarrelPath(e,r,n,i,a)}};cZe=xge,Er=xge.prototype;Er.CANVAS_LAYERS=3;Er.SELECT_BOX=0;Er.DRAG=1;Er.NODE=2;Er.WEBGL=3;Er.CANVAS_TYPES=["2d","2d","2d","webgl2"];Er.BUFFER_COUNT=3;Er.TEXTURE_BUFFER=0;Er.MOTIONBLUR_BUFFER_NODE=1;Er.MOTIONBLUR_BUFFER_DRAG=2;o(xge,"CanvasRenderer");Er.redrawHint=function(t,e){var r=this;switch(t){case"eles":r.data.canvasNeedsRedraw[Er.NODE]=e;break;case"drag":r.data.canvasNeedsRedraw[Er.DRAG]=e;break;case"select":r.data.canvasNeedsRedraw[Er.SELECT_BOX]=e;break;case"gc":r.data.gc=!0;break}};uZe=typeof Path2D<"u";Er.path2dEnabled=function(t){if(t===void 0)return this.pathsEnabled;this.pathsEnabled=!!t};Er.usePaths=function(){return uZe&&this.pathsEnabled};Er.setImgSmoothing=function(t,e){t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled=e:(t.webkitImageSmoothingEnabled=e,t.mozImageSmoothingEnabled=e,t.msImageSmoothingEnabled=e)};Er.getImgSmoothing=function(t){return t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled:t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled};Er.makeOffscreenCanvas=function(t,e){var r;if((typeof OffscreenCanvas>"u"?"undefined":Hi(OffscreenCanvas))!=="undefined")r=new OffscreenCanvas(t,e);else{var n=this.cy.window(),i=n.document;r=i.createElement("canvas"),r.width=t,r.height=e}return r};[sge,Xc,Zu,lB,Wp,ny,fs,dge,Mf,Kb,vge].forEach(function(t){rr(Er,t)});hZe=[{name:"null",impl:qme},{name:"base",impl:rge},{name:"canvas",impl:cZe}],fZe=[{type:"layout",extensions:XKe},{type:"renderer",extensions:hZe}],bge={},wge={};o(Tge,"setExtension");o(kge,"getExtension");o(dZe,"setModule");o(pZe,"getModule");zP=o(function(){if(arguments.length===2)return kge.apply(null,arguments);if(arguments.length===3)return Tge.apply(null,arguments);if(arguments.length===4)return pZe.apply(null,arguments);if(arguments.length===5)return dZe.apply(null,arguments);ai("Invalid extension access syntax")},"extension");Gb.prototype.extension=zP;fZe.forEach(function(t){t.extensions.forEach(function(e){Tge(t.type,e.name,e.impl)})});Ege=o(function t(){if(!(this instanceof t))return new t;this.length=0},"Stylesheet"),Up=Ege.prototype;Up.instanceString=function(){return"stylesheet"};Up.selector=function(t){var e=this.length++;return this[e]={selector:t,properties:[]},this};Up.css=function(t,e){var r=this.length-1;if(Zt(t))this[r].properties.push({name:t,value:e});else if(Vr(t))for(var n=t,i=Object.keys(n),a=0;a{"use strict";o(function(e,r){typeof Qb=="object"&&typeof fB=="object"?fB.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Qb=="object"?Qb.layoutBase=r():e.layoutBase=r()},"webpackUniversalModuleDefinition")(Qb,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=t,r.c=e,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=26)}([function(t,e,r){"use strict";function n(){}o(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,f){n.call(this,f),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=f,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var f=this.getOtherEnd(u),d=h.getGraphManager().getRoot();;){if(f.getOwner()==h)return f;if(f.getOwner()==d)break;f=f.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(4);function h(d,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),d.graphManager!=null&&(d=d.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=d,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var f in n)h[f]=n[f];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(d){this.rect.width=d},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(d){this.rect.height=d},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(d,p){this.rect.x=d.x,this.rect.y=d.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(d,p){this.rect.x=d-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(d,p){this.rect.x=d,this.rect.y=p},h.prototype.moveBy=function(d,p){this.rect.x+=d,this.rect.y+=p},h.prototype.getEdgeListToNode=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==d){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==d||y.source==d)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var d=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)d.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";d.add(m.source)}}),d},h.prototype.withChildren=function(){var d=new Set,p,m;if(d.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp&&(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)),this.labelHeight>m&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-m)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-m),this.setHeight(this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(d){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=d.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},t.exports=h},function(t,e,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(6),l=r(3),u=r(1),h=r(13),f=r(12),d=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,w=0;w-1&&E>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(T,1),x.target!=x.source&&x.target.edges.splice(E,1);var C=x.source.owner.getEdges().indexOf(x);if(C==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(C,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,w=this.getNodes(),C=w.length,T=0;Tv&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(w[0].getParent().paddingLeft!=null?b=w[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new f(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,w,C,T,E,A,S=this.nodes,_=S.length,I=0;I<_;I++){var D=S[I];g&&D.child!=null&&D.updateBounds(),w=D.getLeft(),C=D.getRight(),T=D.getTop(),E=D.getBottom(),y>w&&(y=w),vT&&(x=T),bw&&(y=w),vT&&(x=T),b=this.nodes.length){var _=0;v.forEach(function(I){I.owner==g&&_++}),_==this.nodes.length&&(this.isConnected=!0)}},t.exports=p},function(t,e,r){"use strict";var n,i=r(1);function a(s){n=r(5),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,f){if(u==null&&h==null&&f==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{f=u,h=l,u=s;var d=h.getOwner(),p=f.getOwner();if(!(d!=null&&d.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(d==p)return u.isInterGraph=!1,d.add(u,h,f);if(u.isInterGraph=!0,u.source=h,u.target=f,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,f=u.length,d=0;d=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var f=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(f=1);var d=f*l[0],p=l[1]/f;l[0]d)return l[0]=u,l[1]=m,l[2]=f,l[3]=S,!1;if(hf)return l[0]=p,l[1]=h,l[2]=E,l[3]=d,!1;if(uf?(l[0]=y,l[1]=v,k=!0):(l[0]=g,l[1]=m,k=!0):R===N&&(u>f?(l[0]=p,l[1]=m,k=!0):(l[0]=x,l[1]=v,k=!0)),-O===N?f>u?(l[2]=A,l[3]=S,L=!0):(l[2]=E,l[3]=T,L=!0):O===N&&(f>u?(l[2]=C,l[3]=T,L=!0):(l[2]=_,l[3]=S,L=!0)),k&&L)return!1;if(u>f?h>d?(B=this.getCardinalDirection(R,N,4),F=this.getCardinalDirection(O,N,2)):(B=this.getCardinalDirection(-R,N,3),F=this.getCardinalDirection(-O,N,1)):h>d?(B=this.getCardinalDirection(-R,N,1),F=this.getCardinalDirection(-O,N,3)):(B=this.getCardinalDirection(R,N,2),F=this.getCardinalDirection(O,N,4)),!k)switch(B){case 1:G=m,P=u+-w/N,l[0]=P,l[1]=G;break;case 2:P=x,G=h+b*N,l[0]=P,l[1]=G;break;case 3:G=v,P=u+w/N,l[0]=P,l[1]=G;break;case 4:P=y,G=h+-b*N,l[0]=P,l[1]=G;break}if(!L)switch(F){case 1:H=T,z=f+-D/N,l[2]=z,l[3]=H;break;case 2:z=_,H=d+I*N,l[2]=z,l[3]=H;break;case 3:H=S,z=f+D/N,l[2]=z,l[3]=H;break;case 4:z=A,H=d+-I*N,l[2]=z,l[3]=H;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,f=a.y,d=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,w=void 0,C=void 0,T=void 0,E=void 0,A=void 0,S=void 0,_=void 0;return w=p-f,T=h-d,A=d*f-h*p,C=v-g,E=m-y,S=y*g-m*v,_=w*E-C*T,_===0?null:(x=(T*S-E*A)/_,b=(C*A-w*S)/_,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},t.exports=n},function(t,e,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n},function(t,e,r){"use strict";var n=function(){function h(f,d){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},t.exports=i},function(t,e,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(w.push(T[0]);w.length>0&&g;){var E=w[0];w.splice(0,1),b.add(E);for(var A=E.getEdges(),x=0;x-1&&T.splice(D,1)}b=new Set,C=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(S,1);var _=C.getNeighborsList();_.forEach(function(k){if(y.indexOf(k)<0){var L=v.get(k),R=L-1;R==1&&E.push(k),v.set(k,R)}})}y=y.concat(E),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},t.exports=p},function(t,e,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},t.exports=n},function(t,e,r){"use strict";var n=r(4);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},t.exports=i},function(t,e,r){"use strict";function n(d){if(Array.isArray(d)){for(var p=0,m=Array(d.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(d>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var d=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&d&&this.updateGrid(),b=new Set,m=0;mw||b>w)&&(d.gravitationForceX=-this.gravityConstant*y,d.gravitationForceY=-this.gravityConstant*v)):(w=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>w||b>w)&&(d.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,d.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var d,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),d=this.totalDisplacement=x.length||w>=x[0].length)){for(var C=0;Ch},"_defaultCompareFunction")}]),l}();t.exports=s},function(t,e,r){"use strict";var n=function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=f,this.gap_penalty=d,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o(function(e,r){typeof Zb=="object"&&typeof pB=="object"?pB.exports=r(dB()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof Zb=="object"?Zb.coseBase=r(dB()):e.coseBase=r(e.layoutBase)},"webpackUniversalModuleDefinition")(Zb,function(t){return function(e){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=e,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=7)}([function(e,r){e.exports=t},function(e,r,n){"use strict";var i=n(0).FDLayoutConstants;function a(){}o(a,"CoSEConstants");for(var s in i)a[s]=i[s];a.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,a.DEFAULT_RADIAL_SEPARATION=i.DEFAULT_EDGE_LENGTH,a.DEFAULT_COMPONENT_SEPERATION=60,a.TILE=!0,a.TILING_PADDING_VERTICAL=10,a.TILING_PADDING_HORIZONTAL=10,a.TREE_REDUCTION_ON_INCREMENTAL=!1,e.exports=a},function(e,r,n){"use strict";var i=n(0).FDLayoutEdge;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEEdge"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a},function(e,r,n){"use strict";var i=n(0).LGraph;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEGraph"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a},function(e,r,n){"use strict";var i=n(0).LGraphManager;function a(l){i.call(this,l)}o(a,"CoSEGraphManager"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a},function(e,r,n){"use strict";var i=n(0).FDLayoutNode,a=n(0).IMath;function s(u,h,f,d){i.call(this,u,h,f,d)}o(s,"CoSENode"),s.prototype=Object.create(i.prototype);for(var l in i)s[l]=i[l];s.prototype.move=function(){var u=this.graphManager.getLayout();this.displacementX=u.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=u.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementX=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementX)),Math.abs(this.displacementY)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementY=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),u.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},s.prototype.propogateDisplacementToChildren=function(u,h){for(var f=this.getChild().getNodes(),d,p=0;p0)this.positionNodesRadially(T);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var E=new Set(this.getAllNodes()),A=this.nodesWithGravity.filter(function(S){return E.has(S)});this.graphManager.setAllNodesToApplyGravitation(A),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},w.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%f.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var T=new Set(this.getAllNodes()),E=this.nodesWithGravity.filter(function(_){return T.has(_)});this.graphManager.setAllNodesToApplyGravitation(E),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=f.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=f.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var A=!this.isTreeGrowing&&!this.isGrowthFinished,S=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(A,S),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},w.prototype.getPositionsData=function(){for(var T=this.graphManager.getAllNodes(),E={},A=0;A1){var k;for(k=0;kS&&(S=Math.floor(D.y)),I=Math.floor(D.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new m(d.WORLD_CENTER_X-D.x/2,d.WORLD_CENTER_Y-D.y/2))},w.radialLayout=function(T,E,A){var S=Math.max(this.maxDiagonalInTree(T),h.DEFAULT_RADIAL_SEPARATION);w.branchRadialLayout(E,null,0,359,0,S);var _=x.calculateBounds(T),I=new b;I.setDeviceOrgX(_.getMinX()),I.setDeviceOrgY(_.getMinY()),I.setWorldOrgX(A.x),I.setWorldOrgY(A.y);for(var D=0;D1;){var Q=H[0];H.splice(0,1);var j=B.indexOf(Q);j>=0&&B.splice(j,1),G--,F--}E!=null?z=(B.indexOf(H[0])+1)%G:z=0;for(var ie=Math.abs(S-A)/F,ne=z;P!=F;ne=++ne%G){var le=B[ne].getOtherEnd(T);if(le!=E){var he=(A+P*ie)%360,K=(he+ie)%360;w.branchRadialLayout(le,T,he,K,_+I,I),P++}}},w.maxDiagonalInTree=function(T){for(var E=y.MIN_VALUE,A=0;AE&&(E=_)}return E},w.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},w.prototype.groupZeroDegreeMembers=function(){var T=this,E={};this.memberGroups={},this.idToDummyNode={};for(var A=[],S=this.graphManager.getAllNodes(),_=0;_"u"&&(E[k]=[]),E[k]=E[k].concat(I)}Object.keys(E).forEach(function(L){if(E[L].length>1){var R="DummyCompound_"+L;T.memberGroups[R]=E[L];var O=E[L][0].getParent(),N=new l(T.graphManager);N.id=R,N.paddingLeft=O.paddingLeft||0,N.paddingRight=O.paddingRight||0,N.paddingBottom=O.paddingBottom||0,N.paddingTop=O.paddingTop||0,T.idToDummyNode[R]=N;var B=T.getGraphManager().add(T.newGraph(),N),F=O.getChild();F.add(N);for(var P=0;P=0;T--){var E=this.compoundOrder[T],A=E.id,S=E.paddingLeft,_=E.paddingTop;this.adjustLocations(this.tiledMemberPack[A],E.rect.x,E.rect.y,S,_)}},w.prototype.repopulateZeroDegreeMembers=function(){var T=this,E=this.tiledZeroDegreePack;Object.keys(E).forEach(function(A){var S=T.idToDummyNode[A],_=S.paddingLeft,I=S.paddingTop;T.adjustLocations(E[A],S.rect.x,S.rect.y,_,I)})},w.prototype.getToBeTiled=function(T){var E=T.id;if(this.toBeTiled[E]!=null)return this.toBeTiled[E];var A=T.getChild();if(A==null)return this.toBeTiled[E]=!1,!1;for(var S=A.getNodes(),_=0;_0)return this.toBeTiled[E]=!1,!1;if(I.getChild()==null){this.toBeTiled[I.id]=!1;continue}if(!this.getToBeTiled(I))return this.toBeTiled[E]=!1,!1}return this.toBeTiled[E]=!0,!0},w.prototype.getNodeDegree=function(T){for(var E=T.id,A=T.getEdges(),S=0,_=0;_L&&(L=O.rect.height)}A+=L+T.verticalPadding}},w.prototype.tileCompoundMembers=function(T,E){var A=this;this.tiledMemberPack=[],Object.keys(T).forEach(function(S){var _=E[S];A.tiledMemberPack[S]=A.tileNodes(T[S],_.paddingLeft+_.paddingRight),_.rect.width=A.tiledMemberPack[S].width,_.rect.height=A.tiledMemberPack[S].height})},w.prototype.tileNodes=function(T,E){var A=h.TILING_PADDING_VERTICAL,S=h.TILING_PADDING_HORIZONTAL,_={rows:[],rowWidth:[],rowHeight:[],width:0,height:E,verticalPadding:A,horizontalPadding:S};T.sort(function(k,L){return k.rect.width*k.rect.height>L.rect.width*L.rect.height?-1:k.rect.width*k.rect.height0&&(D+=T.horizontalPadding),T.rowWidth[A]=D,T.width0&&(k+=T.verticalPadding);var L=0;k>T.rowHeight[A]&&(L=T.rowHeight[A],T.rowHeight[A]=k,L=T.rowHeight[A]-L),T.height+=L,T.rows[A].push(E)},w.prototype.getShortestRowIndex=function(T){for(var E=-1,A=Number.MAX_VALUE,S=0;SA&&(E=S,A=T.rowWidth[S]);return E},w.prototype.canAddHorizontal=function(T,E,A){var S=this.getShortestRowIndex(T);if(S<0)return!0;var _=T.rowWidth[S];if(_+T.horizontalPadding+E<=T.width)return!0;var I=0;T.rowHeight[S]0&&(I=A+T.verticalPadding-T.rowHeight[S]);var D;T.width-_>=E+T.horizontalPadding?D=(T.height+I)/(_+E+T.horizontalPadding):D=(T.height+I)/T.width,I=A+T.verticalPadding;var k;return T.widthI&&E!=A){S.splice(-1,1),T.rows[A].push(_),T.rowWidth[E]=T.rowWidth[E]-I,T.rowWidth[A]=T.rowWidth[A]+I,T.width=T.rowWidth[instance.getLongestRowIndex(T)];for(var D=Number.MIN_VALUE,k=0;kD&&(D=S[k].height);E>0&&(D+=T.verticalPadding);var L=T.rowHeight[E]+T.rowHeight[A];T.rowHeight[E]=D,T.rowHeight[A]<_.height+T.verticalPadding&&(T.rowHeight[A]=_.height+T.verticalPadding);var R=T.rowHeight[E]+T.rowHeight[A];T.height+=R-L,this.shiftToLastRow(T)}},w.prototype.tilingPreLayout=function(){h.TILE&&(this.groupZeroDegreeMembers(),this.clearCompounds(),this.clearZeroDegreeMembers())},w.prototype.tilingPostLayout=function(){h.TILE&&(this.repopulateZeroDegreeMembers(),this.repopulateCompounds())},w.prototype.reduceTrees=function(){for(var T=[],E=!0,A;E;){var S=this.graphManager.getAllNodes(),_=[];E=!1;for(var I=0;I0)for(var F=_;F<=I;F++)B[0]+=this.grid[F][D-1].length+this.grid[F][D].length-1;if(I0)for(var F=D;F<=k;F++)B[3]+=this.grid[_-1][F].length+this.grid[_][F].length-1;for(var P=y.MAX_VALUE,G,z,H=0;H{"use strict";o(function(e,r){typeof Jb=="object"&&typeof gB=="object"?gB.exports=r(mB()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof Jb=="object"?Jb.cytoscapeCoseBilkent=r(mB()):e.cytoscapeCoseBilkent=r(e.coseBase)},"webpackUniversalModuleDefinition")(Jb,function(t){return function(e){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=e,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=1)}([function(e,r){e.exports=t},function(e,r,n){"use strict";var i=n(0).layoutBase.LayoutConstants,a=n(0).layoutBase.FDLayoutConstants,s=n(0).CoSEConstants,l=n(0).CoSELayout,u=n(0).CoSENode,h=n(0).layoutBase.PointD,f=n(0).layoutBase.DimensionD,d={ready:o(function(){},"ready"),stop:o(function(){},"stop"),quality:"default",nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:"end",animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function p(v,x){var b={};for(var w in v)b[w]=v[w];for(var w in x)b[w]=x[w];return b}o(p,"extend");function m(v){this.options=p(d,v),g(this.options)}o(m,"_CoSELayout");var g=o(function(x){x.nodeRepulsion!=null&&(s.DEFAULT_REPULSION_STRENGTH=a.DEFAULT_REPULSION_STRENGTH=x.nodeRepulsion),x.idealEdgeLength!=null&&(s.DEFAULT_EDGE_LENGTH=a.DEFAULT_EDGE_LENGTH=x.idealEdgeLength),x.edgeElasticity!=null&&(s.DEFAULT_SPRING_STRENGTH=a.DEFAULT_SPRING_STRENGTH=x.edgeElasticity),x.nestingFactor!=null&&(s.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=x.nestingFactor),x.gravity!=null&&(s.DEFAULT_GRAVITY_STRENGTH=a.DEFAULT_GRAVITY_STRENGTH=x.gravity),x.numIter!=null&&(s.MAX_ITERATIONS=a.MAX_ITERATIONS=x.numIter),x.gravityRange!=null&&(s.DEFAULT_GRAVITY_RANGE_FACTOR=a.DEFAULT_GRAVITY_RANGE_FACTOR=x.gravityRange),x.gravityCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_STRENGTH=a.DEFAULT_COMPOUND_GRAVITY_STRENGTH=x.gravityCompound),x.gravityRangeCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=x.gravityRangeCompound),x.initialEnergyOnIncremental!=null&&(s.DEFAULT_COOLING_FACTOR_INCREMENTAL=a.DEFAULT_COOLING_FACTOR_INCREMENTAL=x.initialEnergyOnIncremental),x.quality=="draft"?i.QUALITY=0:x.quality=="proof"?i.QUALITY=2:i.QUALITY=1,s.NODE_DIMENSIONS_INCLUDE_LABELS=a.NODE_DIMENSIONS_INCLUDE_LABELS=i.NODE_DIMENSIONS_INCLUDE_LABELS=x.nodeDimensionsIncludeLabels,s.DEFAULT_INCREMENTAL=a.DEFAULT_INCREMENTAL=i.DEFAULT_INCREMENTAL=!x.randomize,s.ANIMATE=a.ANIMATE=i.ANIMATE=x.animate,s.TILE=x.tile,s.TILING_PADDING_VERTICAL=typeof x.tilingPaddingVertical=="function"?x.tilingPaddingVertical.call():x.tilingPaddingVertical,s.TILING_PADDING_HORIZONTAL=typeof x.tilingPaddingHorizontal=="function"?x.tilingPaddingHorizontal.call():x.tilingPaddingHorizontal},"getUserOptions");m.prototype.run=function(){var v,x,b=this.options,w=this.idToLNode={},C=this.layout=new l,T=this;T.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this});var E=C.newGraphManager();this.gm=E;var A=this.options.eles.nodes(),S=this.options.eles.edges();this.root=E.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(A),C);for(var _=0;_0){var k;k=b.getGraphManager().add(b.newGraph(),A),this.processChildrenList(k,E,b)}}},m.prototype.stop=function(){return this.stopped=!0,this};var y=o(function(x){x("layout","cose-bilkent",m)},"register");typeof cytoscape<"u"&&y(cytoscape),e.exports=y}])})});function TZe(t,e,r,n,i){return t.insert("polygon",":first-child").attr("points",n.map(function(a){return a.x+","+a.y}).join(" ")).attr("transform","translate("+(i.width-e)/2+", "+r+")")}var gZe,yZe,vZe,xZe,bZe,wZe,kZe,EZe,Cge,Age,_ge=M(()=>{"use strict";Ks();sr();gZe=12,yZe=o(function(t,e,r,n){e.append("path").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("d",`M0 ${r.height-5} v${-r.height+2*5} q0,-5 5,-5 h${r.width-2*5} q5,0 5,5 v${r.height-5} H0 Z`),e.append("line").attr("class","node-line-"+n).attr("x1",0).attr("y1",r.height).attr("x2",r.width).attr("y2",r.height)},"defaultBkg"),vZe=o(function(t,e,r){e.append("rect").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("height",r.height).attr("width",r.width)},"rectBkg"),xZe=o(function(t,e,r){let n=r.width,i=r.height,a=.15*n,s=.25*n,l=.35*n,u=.2*n;e.append("path").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("d",`M0 0 a${a},${a} 0 0,1 ${n*.25},${-1*n*.1} a${l},${l} 1 0,1 ${n*.4},${-1*n*.1} a${s},${s} 1 0,1 ${n*.35},${1*n*.2} @@ -1915,7 +2164,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho a${a},${a} 1 0,1 ${-1*n*.1},${-1*i*.35} a${u},${u} 1 0,1 ${n*.1},${-1*i*.65} - H0 V0 Z`)},"cloudBkg"),Ctt=o(function(t,e,r){let n=r.width,i=r.height,a=.15*n;e.append("path").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("d",`M0 0 a${a},${a} 1 0,0 ${n*.25},${-1*i*.1} + H0 V0 Z`)},"cloudBkg"),bZe=o(function(t,e,r){let n=r.width,i=r.height,a=.15*n;e.append("path").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("d",`M0 0 a${a},${a} 1 0,0 ${n*.25},${-1*i*.1} a${a},${a} 1 0,0 ${n*.25},0 a${a},${a} 1 0,0 ${n*.25},0 a${a},${a} 1 0,0 ${n*.25},${1*i*.1} @@ -1933,9 +2182,9 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho a${a*.8},${a*.8} 1 0,0 0,${-1*i*.34} a${a},${a} 1 0,0 ${n*.1},${-1*i*.33} - H0 V0 Z`)},"bangBkg"),Att=o(function(t,e,r){e.append("circle").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("r",r.width/2)},"circleBkg");o(_tt,"insertPolygonShape");Ltt=o(function(t,e,r){let n=r.height,a=n/4,s=r.width-r.padding+2*a,l=[{x:a,y:0},{x:s-a,y:0},{x:s,y:-n/2},{x:s-a,y:-n},{x:a,y:-n},{x:0,y:-n/2}];_tt(e,s,n,l,r)},"hexagonBkg"),Dtt=o(function(t,e,r){e.append("rect").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("height",r.height).attr("rx",r.padding).attr("ry",r.padding).attr("width",r.width)},"roundedRectBkg"),D1e=o(async function(t,e,r,n,i){let a=i.htmlLabels,s=n%(Ttt-1),l=e.append("g");r.section=s;let u="section-"+s;s<0&&(u+=" section-root"),l.attr("class",(r.class?r.class+" ":"")+"mindmap-node "+u);let h=l.append("g"),f=l.append("g"),d=r.descr.replace(/()/g,` -`);await Si(f,d,{useHtmlLabels:a,width:r.width,classes:"mindmap-node-label"},i),a||f.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");let p=f.node().getBBox(),[m]=Fo(i.fontSize);if(r.height=p.height+m*1.1*.5+r.padding,r.width=p.width+2*r.padding,r.icon)if(r.type===t.nodeType.CIRCLE)r.height+=50,r.width+=50,l.append("foreignObject").attr("height","50px").attr("width",r.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+s+" "+r.icon),f.attr("transform","translate("+r.width/2+", "+(r.height/2-1.5*r.padding)+")");else{r.width+=50;let g=r.height;r.height=Math.max(g,60);let y=Math.abs(r.height-g);l.append("foreignObject").attr("width","60px").attr("height",r.height).attr("style","text-align: center;margin-top:"+y/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+s+" "+r.icon),f.attr("transform","translate("+(25+r.width/2)+", "+(y/2+r.padding/2)+")")}else if(a){let g=(r.width-p.width)/2,y=(r.height-p.height)/2;f.attr("transform","translate("+g+", "+y+")")}else{let g=r.width/2,y=r.padding/2;f.attr("transform","translate("+g+", "+y+")")}switch(r.type){case t.nodeType.DEFAULT:ktt(t,h,r,s);break;case t.nodeType.ROUNDED_RECT:Dtt(t,h,r,s);break;case t.nodeType.RECT:Ett(t,h,r,s);break;case t.nodeType.CIRCLE:h.attr("transform","translate("+r.width/2+", "+ +r.height/2+")"),Att(t,h,r,s);break;case t.nodeType.CLOUD:Stt(t,h,r,s);break;case t.nodeType.BANG:Ctt(t,h,r,s);break;case t.nodeType.HEXAGON:Ltt(t,h,r,s);break}return t.setElementForId(r.id,l),r.height},"drawNode"),N1e=o(function(t,e){let r=t.getElementById(e.id),n=e.x||0,i=e.y||0;r.attr("transform","translate("+n+","+i+")")},"positionNode")});async function I1e(t,e,r,n,i){await D1e(t,e,r,n,i),r.children&&await Promise.all(r.children.map((a,s)=>I1e(t,e,a,n<0?s:n,i)))}function Ntt(t,e){e.edges().map((r,n)=>{let i=r.data();if(r[0]._private.bodyBounds){let a=r[0]._private.rscratch;Y.trace("Edge: ",n,i),t.insert("path").attr("d",`M ${a.startX},${a.startY} L ${a.midX},${a.midY} L${a.endX},${a.endY} `).attr("class","edge section-edge-"+i.section+" edge-depth-"+i.depth)}})}function O1e(t,e,r,n){e.add({group:"nodes",data:{id:t.id.toString(),labelText:t.descr,height:t.height,width:t.width,level:n,nodeId:t.id,padding:t.padding,type:t.type},position:{x:t.x,y:t.y}}),t.children&&t.children.forEach(i=>{O1e(i,e,r,n+1),e.add({group:"edges",data:{id:`${t.id}_${i.id}`,source:t.id,target:i.id,depth:n,section:i.section}})})}function Rtt(t,e){return new Promise(r=>{let n=ze("body").append("div").attr("id","cy").attr("style","display:none"),i=sl({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});n.remove(),O1e(t,i,e,0),i.nodes().forEach(function(a){a.layoutDimensions=()=>{let s=a.data();return{w:s.width,h:s.height}}}),i.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),i.ready(a=>{Y.info("Ready",a),r(i)})})}function Mtt(t,e){e.nodes().map((r,n)=>{let i=r.data();i.x=r.position().x,i.y=r.position().y,N1e(t,i);let a=t.getElementById(i.nodeId);Y.info("Id:",n,"Position: (",r.position().x,", ",r.position().y,")",i),a.attr("transform",`translate(${r.position().x-i.width/2}, ${r.position().y-i.height/2})`),a.attr("attr",`apa-${n})`)})}var M1e,Itt,P1e,B1e=M(()=>{"use strict";kB();M1e=ka(L1e(),1);mr();Vt();ht();Hu();ni();R1e();hs();sl.use(M1e.default);o(I1e,"drawNodes");o(Ntt,"drawEdges");o(O1e,"addNodes");o(Rtt,"layoutMindmap");o(Mtt,"positionNodes");Itt=o(async(t,e,r,n)=>{Y.debug(`Rendering mindmap diagram -`+t);let i=n.db,a=i.getMindmap();if(!a)return;let s=de();s.htmlLabels=!1;let l=Oa(e),u=l.append("g");u.attr("class","mindmap-edges");let h=l.append("g");h.attr("class","mindmap-nodes"),await I1e(i,h,a,-1,s);let f=await Rtt(a,s);Ntt(u,f),Mtt(i,f),_o(void 0,l,s.mindmap?.padding??ur.mindmap.padding,s.mindmap?.useMaxWidth??ur.mindmap.useMaxWidth)},"draw"),P1e={draw:Itt}});var Ott,Ptt,F1e,z1e=M(()=>{"use strict";To();Ott=o(t=>{let e="";for(let r=0;r)/g,` +`);await Hn(f,d,{useHtmlLabels:a,width:r.width,classes:"mindmap-node-label"},i),a||f.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");let p=f.node().getBBox(),[m]=Mo(i.fontSize);if(r.height=p.height+m*1.1*.5+r.padding,r.width=p.width+2*r.padding,r.icon)if(r.type===t.nodeType.CIRCLE)r.height+=50,r.width+=50,l.append("foreignObject").attr("height","50px").attr("width",r.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+s+" "+r.icon),f.attr("transform","translate("+r.width/2+", "+(r.height/2-1.5*r.padding)+")");else{r.width+=50;let g=r.height;r.height=Math.max(g,60);let y=Math.abs(r.height-g);l.append("foreignObject").attr("width","60px").attr("height",r.height).attr("style","text-align: center;margin-top:"+y/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+s+" "+r.icon),f.attr("transform","translate("+(25+r.width/2)+", "+(y/2+r.padding/2)+")")}else if(a){let g=(r.width-p.width)/2,y=(r.height-p.height)/2;f.attr("transform","translate("+g+", "+y+")")}else{let g=r.width/2,y=r.padding/2;f.attr("transform","translate("+g+", "+y+")")}switch(r.type){case t.nodeType.DEFAULT:yZe(t,h,r,s);break;case t.nodeType.ROUNDED_RECT:EZe(t,h,r,s);break;case t.nodeType.RECT:vZe(t,h,r,s);break;case t.nodeType.CIRCLE:h.attr("transform","translate("+r.width/2+", "+ +r.height/2+")"),wZe(t,h,r,s);break;case t.nodeType.CLOUD:xZe(t,h,r,s);break;case t.nodeType.BANG:bZe(t,h,r,s);break;case t.nodeType.HEXAGON:kZe(t,h,r,s);break}return t.setElementForId(r.id,l),r.height},"drawNode"),Age=o(function(t,e){let r=t.getElementById(e.id),n=e.x||0,i=e.y||0;r.attr("transform","translate("+n+","+i+")")},"positionNode")});async function Lge(t,e,r,n,i){await Cge(t,e,r,n,i),r.children&&await Promise.all(r.children.map((a,s)=>Lge(t,e,a,n<0?s:n,i)))}function SZe(t,e){e.edges().map((r,n)=>{let i=r.data();if(r[0]._private.bodyBounds){let a=r[0]._private.rscratch;Y.trace("Edge: ",n,i),t.insert("path").attr("d",`M ${a.startX},${a.startY} L ${a.midX},${a.midY} L${a.endX},${a.endY} `).attr("class","edge section-edge-"+i.section+" edge-depth-"+i.depth)}})}function Rge(t,e,r,n){e.add({group:"nodes",data:{id:t.id.toString(),labelText:t.descr,height:t.height,width:t.width,level:n,nodeId:t.id,padding:t.padding,type:t.type},position:{x:t.x,y:t.y}}),t.children&&t.children.forEach(i=>{Rge(i,e,r,n+1),e.add({group:"edges",data:{id:`${t.id}_${i.id}`,source:t.id,target:i.id,depth:n,section:i.section}})})}function CZe(t,e){return new Promise(r=>{let n=$e("body").append("div").attr("id","cy").attr("style","display:none"),i=Jo({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});n.remove(),Rge(t,i,e,0),i.nodes().forEach(function(a){a.layoutDimensions=()=>{let s=a.data();return{w:s.width,h:s.height}}}),i.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),i.ready(a=>{Y.info("Ready",a),r(i)})})}function AZe(t,e){e.nodes().map((r,n)=>{let i=r.data();i.x=r.position().x,i.y=r.position().y,Age(t,i);let a=t.getElementById(i.nodeId);Y.info("Id:",n,"Position: (",r.position().x,", ",r.position().y,")",i),a.attr("transform",`translate(${r.position().x-i.width/2}, ${r.position().y-i.height/2})`),a.attr("attr",`apa-${n})`)})}var Dge,_Ze,Nge,Mge=M(()=>{"use strict";hB();Dge=Ta(Sge(),1);hr();Gt();vt();Hu();Ti();_ge();ps();Jo.use(Dge.default);o(Lge,"drawNodes");o(SZe,"drawEdges");o(Rge,"addNodes");o(CZe,"layoutMindmap");o(AZe,"positionNodes");_Ze=o(async(t,e,r,n)=>{Y.debug(`Rendering mindmap diagram +`+t);let i=n.db,a=i.getMindmap();if(!a)return;let s=me();s.htmlLabels=!1;let l=Pa(e),u=l.append("g");u.attr("class","mindmap-edges");let h=l.append("g");h.attr("class","mindmap-nodes"),await Lge(i,h,a,-1,s);let f=await CZe(a,s);SZe(u,f),AZe(i,f),ko(void 0,l,s.mindmap?.padding??cr.mindmap.padding,s.mindmap?.useMaxWidth??cr.mindmap.useMaxWidth)},"draw"),Nge={draw:_Ze}});var DZe,LZe,Ige,Oge=M(()=>{"use strict";Vs();DZe=o(t=>{let e="";for(let r=0;r` + `}return e},"genSections"),LZe=o(t=>` .edge { stroke-width: 3; } - ${Ott(t)} + ${DZe(t)} .section-root rect, .section-root path, .section-root circle, .section-root polygon { fill: ${t.git0}; } @@ -1990,17 +2239,17 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho dominant-baseline: middle; text-align: center; } -`,"getStyles"),F1e=Ptt});var G1e={};vr(G1e,{diagram:()=>Btt});var Btt,$1e=M(()=>{"use strict";Cpe();Lpe();B1e();z1e();Btt={db:_pe,renderer:P1e,parser:Spe,styles:F1e}});var LB,H1e,W1e=M(()=>{"use strict";LB=function(){var t=o(function(L,C,A,I){for(A=A||{},I=L.length;I--;A[L[I]]=C);return A},"o"),e=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],f=[1,24],d=[1,25],p=[6,7,11],m=[1,31],g=[6,7,11,24],y=[1,6,13,16,17,20,23],v=[1,35],x=[1,36],b=[1,6,7,11,13,16,17,20,23],w=[1,38],_={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:o(function(C,A,I,D,k,R,S){var O=R.length-1;switch(k){case 6:case 7:return D;case 8:D.getLogger().trace("Stop NL ");break;case 9:D.getLogger().trace("Stop EOF ");break;case 11:D.getLogger().trace("Stop NL2 ");break;case 12:D.getLogger().trace("Stop EOF2 ");break;case 15:D.getLogger().info("Node: ",R[O-1].id),D.addNode(R[O-2].length,R[O-1].id,R[O-1].descr,R[O-1].type,R[O]);break;case 16:D.getLogger().info("Node: ",R[O].id),D.addNode(R[O-1].length,R[O].id,R[O].descr,R[O].type);break;case 17:D.getLogger().trace("Icon: ",R[O]),D.decorateNode({icon:R[O]});break;case 18:case 23:D.decorateNode({class:R[O]});break;case 19:D.getLogger().trace("SPACELIST");break;case 20:D.getLogger().trace("Node: ",R[O-1].id),D.addNode(0,R[O-1].id,R[O-1].descr,R[O-1].type,R[O]);break;case 21:D.getLogger().trace("Node: ",R[O].id),D.addNode(0,R[O].id,R[O].descr,R[O].type);break;case 22:D.decorateNode({icon:R[O]});break;case 27:D.getLogger().trace("node found ..",R[O-2]),this.$={id:R[O-1],descr:R[O-1],type:D.getType(R[O-2],R[O])};break;case 28:this.$={id:R[O],descr:R[O],type:0};break;case 29:D.getLogger().trace("node found ..",R[O-3]),this.$={id:R[O-3],descr:R[O-1],type:D.getType(R[O-2],R[O])};break;case 30:this.$=R[O-1]+R[O];break;case 31:this.$=R[O];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:r,7:[1,10],9:9,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},t(u,[2,3]),{1:[2,2]},t(u,[2,4]),t(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:r,9:22,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:h,7:f,10:23,11:d},t(p,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:s,23:l}),t(p,[2,19]),t(p,[2,21],{15:30,24:m}),t(p,[2,22]),t(p,[2,23]),t(g,[2,25]),t(g,[2,26]),t(g,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:f,10:34,11:d},{1:[2,7],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},t(y,[2,14],{7:v,11:x}),t(b,[2,8]),t(b,[2,9]),t(b,[2,10]),t(p,[2,16],{15:37,24:m}),t(p,[2,17]),t(p,[2,18]),t(p,[2,20],{24:w}),t(g,[2,31]),{21:[1,39]},{22:[1,40]},t(y,[2,13],{7:v,11:x}),t(b,[2,11]),t(b,[2,12]),t(p,[2,15],{24:w}),t(g,[2,30]),{22:[1,41]},t(g,[2,27]),t(g,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(C,A){if(A.recoverable)this.trace(C);else{var I=new Error(C);throw I.hash=A,I}},"parseError"),parse:o(function(C){var A=this,I=[0],D=[],k=[null],R=[],S=this.table,O="",N=0,P=0,F=0,B=2,$=1,z=R.slice.call(arguments,1),W=Object.create(this.lexer),j={yy:{}};for(var K in this.yy)Object.prototype.hasOwnProperty.call(this.yy,K)&&(j.yy[K]=this.yy[K]);W.setInput(C,j.yy),j.yy.lexer=W,j.yy.parser=this,typeof W.yylloc>"u"&&(W.yylloc={});var ie=W.yylloc;R.push(ie);var Q=W.options&&W.options.ranges;typeof j.yy.parseError=="function"?this.parseError=j.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ee(Ve){I.length=I.length-2*Ve,k.length=k.length-Ve,R.length=R.length-Ve}o(ee,"popStack");function J(){var Ve;return Ve=D.pop()||W.lex()||$,typeof Ve!="number"&&(Ve instanceof Array&&(D=Ve,Ve=D.pop()),Ve=A.symbols_[Ve]||Ve),Ve}o(J,"lex");for(var H,q,Z,ae,ue,ce,te={},De,oe,ke,Fe;;){if(Z=I[I.length-1],this.defaultActions[Z]?ae=this.defaultActions[Z]:((H===null||typeof H>"u")&&(H=J()),ae=S[Z]&&S[Z][H]),typeof ae>"u"||!ae.length||!ae[0]){var Be="";Fe=[];for(De in S[Z])this.terminals_[De]&&De>B&&Fe.push("'"+this.terminals_[De]+"'");W.showPosition?Be="Parse error on line "+(N+1)+`: -`+W.showPosition()+` -Expecting `+Fe.join(", ")+", got '"+(this.terminals_[H]||H)+"'":Be="Parse error on line "+(N+1)+": Unexpected "+(H==$?"end of input":"'"+(this.terminals_[H]||H)+"'"),this.parseError(Be,{text:W.match,token:this.terminals_[H]||H,line:W.yylineno,loc:ie,expected:Fe})}if(ae[0]instanceof Array&&ae.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Z+", token: "+H);switch(ae[0]){case 1:I.push(H),k.push(W.yytext),R.push(W.yylloc),I.push(ae[1]),H=null,q?(H=q,q=null):(P=W.yyleng,O=W.yytext,N=W.yylineno,ie=W.yylloc,F>0&&F--);break;case 2:if(oe=this.productions_[ae[1]][1],te.$=k[k.length-oe],te._$={first_line:R[R.length-(oe||1)].first_line,last_line:R[R.length-1].last_line,first_column:R[R.length-(oe||1)].first_column,last_column:R[R.length-1].last_column},Q&&(te._$.range=[R[R.length-(oe||1)].range[0],R[R.length-1].range[1]]),ce=this.performAction.apply(te,[O,P,N,j.yy,ae[1],k,R].concat(z)),typeof ce<"u")return ce;oe&&(I=I.slice(0,-1*oe*2),k=k.slice(0,-1*oe),R=R.slice(0,-1*oe)),I.push(this.productions_[ae[1]][0]),k.push(te.$),R.push(te._$),ke=S[I[I.length-2]][I[I.length-1]],I.push(ke);break;case 3:return!0}}return!0},"parse")},T=function(){var L={EOF:1,parseError:o(function(A,I){if(this.yy.parser)this.yy.parser.parseError(A,I);else throw new Error(A)},"parseError"),setInput:o(function(C,A){return this.yy=A||this.yy||{},this._input=C,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var C=this._input[0];this.yytext+=C,this.yyleng++,this.offset++,this.match+=C,this.matched+=C;var A=C.match(/(?:\r\n?|\n).*/g);return A?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),C},"input"),unput:o(function(C){var A=C.length,I=C.split(/(?:\r\n?|\n)/g);this._input=C+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-A),this.offset-=A;var D=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),I.length-1&&(this.yylineno-=I.length-1);var k=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:I?(I.length===D.length?this.yylloc.first_column:0)+D[D.length-I.length].length-I[0].length:this.yylloc.first_column-A},this.options.ranges&&(this.yylloc.range=[k[0],k[0]+this.yyleng-A]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(C){this.unput(this.match.slice(C))},"less"),pastInput:o(function(){var C=this.matched.substr(0,this.matched.length-this.match.length);return(C.length>20?"...":"")+C.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var C=this.match;return C.length<20&&(C+=this._input.substr(0,20-C.length)),(C.substr(0,20)+(C.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var C=this.pastInput(),A=new Array(C.length+1).join("-");return C+this.upcomingInput()+` -`+A+"^"},"showPosition"),test_match:o(function(C,A){var I,D,k;if(this.options.backtrack_lexer&&(k={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(k.yylloc.range=this.yylloc.range.slice(0))),D=C[0].match(/(?:\r\n?|\n).*/g),D&&(this.yylineno+=D.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:D?D[D.length-1].length-D[D.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+C[0].length},this.yytext+=C[0],this.match+=C[0],this.matches=C,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(C[0].length),this.matched+=C[0],I=this.performAction.call(this,this.yy,this,A,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),I)return I;if(this._backtrack){for(var R in k)this[R]=k[R];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var C,A,I,D;this._more||(this.yytext="",this.match="");for(var k=this._currentRules(),R=0;RA[0].length)){if(A=I,D=R,this.options.backtrack_lexer){if(C=this.test_match(I,k[R]),C!==!1)return C;if(this._backtrack){A=!1;continue}else return!1}else if(!this.options.flex)break}return A?(C=this.test_match(A,k[D]),C!==!1?C:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var A=this.next();return A||this.lex()},"lex"),begin:o(function(A){this.conditionStack.push(A)},"begin"),popState:o(function(){var A=this.conditionStack.length-1;return A>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(A){return A=this.conditionStack.length-1-Math.abs(A||0),A>=0?this.conditionStack[A]:"INITIAL"},"topState"),pushState:o(function(A){this.begin(A)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(A,I,D,k){var R=k;switch(D){case 0:return this.pushState("shapeData"),I.yytext="",24;break;case 1:return this.pushState("shapeDataStr"),24;break;case 2:return this.popState(),24;break;case 3:let S=/\n\s*/g;return I.yytext=I.yytext.replace(S,"
    "),24;break;case 4:return 24;case 5:this.popState();break;case 6:return A.getLogger().trace("Found comment",I.yytext),6;break;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;break;case 10:this.popState();break;case 11:A.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return A.getLogger().trace("SPACELINE"),6;break;case 13:return 7;case 14:return 16;case 15:A.getLogger().trace("end icon"),this.popState();break;case 16:return A.getLogger().trace("Exploding node"),this.begin("NODE"),20;break;case 17:return A.getLogger().trace("Cloud"),this.begin("NODE"),20;break;case 18:return A.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;break;case 19:return A.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;break;case 20:return this.begin("NODE"),20;break;case 21:return this.begin("NODE"),20;break;case 22:return this.begin("NODE"),20;break;case 23:return this.begin("NODE"),20;break;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 29:this.popState();break;case 30:A.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return A.getLogger().trace("description:",I.yytext),"NODE_DESCR";break;case 32:this.popState();break;case 33:return this.popState(),A.getLogger().trace("node end ))"),"NODE_DEND";break;case 34:return this.popState(),A.getLogger().trace("node end )"),"NODE_DEND";break;case 35:return this.popState(),A.getLogger().trace("node end ...",I.yytext),"NODE_DEND";break;case 36:return this.popState(),A.getLogger().trace("node end (("),"NODE_DEND";break;case 37:return this.popState(),A.getLogger().trace("node end (-"),"NODE_DEND";break;case 38:return this.popState(),A.getLogger().trace("node end (-"),"NODE_DEND";break;case 39:return this.popState(),A.getLogger().trace("node end (("),"NODE_DEND";break;case 40:return this.popState(),A.getLogger().trace("node end (("),"NODE_DEND";break;case 41:return A.getLogger().trace("Long description:",I.yytext),21;break;case 42:return A.getLogger().trace("Long description:",I.yytext),21;break}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}};return L}();_.lexer=T;function E(){this.yy={}}return o(E,"Parser"),E.prototype=_,_.Parser=E,new E}();LB.parser=LB;H1e=LB});var ol,NB,DB,RB,$tt,Vtt,Y1e,Utt,Htt,Xi,Wtt,Ytt,qtt,Xtt,jtt,Ktt,Qtt,q1e,X1e=M(()=>{"use strict";Vt();fr();ht();hs();V5();ol=[],NB=[],DB=0,RB={},$tt=o(()=>{ol=[],NB=[],DB=0,RB={}},"clear"),Vtt=o(t=>{if(ol.length===0)return null;let e=ol[0].level,r=null;for(let n=ol.length-1;n>=0;n--)if(ol[n].level===e&&!r&&(r=ol[n]),ol[n].levell.parentId===i.id);for(let l of s){let u={id:l.id,parentId:i.id,label:Tr(l.label??"",n),isGroup:!1,ticket:l?.ticket,priority:l?.priority,assigned:l?.assigned,icon:l?.icon,shape:"kanbanItem",level:l.level,rx:5,ry:5,cssStyles:["text-align: left"]};e.push(u)}}return{nodes:e,edges:t,other:{},config:de()}},"getData"),Htt=o((t,e,r,n,i)=>{let a=de(),s=a.mindmap?.padding??ur.mindmap.padding;switch(n){case Xi.ROUNDED_RECT:case Xi.RECT:case Xi.HEXAGON:s*=2}let l={id:Tr(e,a)||"kbn"+DB++,level:t,label:Tr(r,a),width:a.mindmap?.maxNodeWidth??ur.mindmap.maxNodeWidth,padding:s,isGroup:!1};if(i!==void 0){let h;i.includes(` +`,"getStyles"),Ige=LZe});var Pge={};pr(Pge,{diagram:()=>RZe});var RZe,Bge=M(()=>{"use strict";cpe();fpe();Mge();Oge();RZe={db:hpe,renderer:Nge,parser:lpe,styles:Ige}});var yB,Gge,$ge=M(()=>{"use strict";yB=function(){var t=o(function(A,S,_,I){for(_=_||{},I=A.length;I--;_[A[I]]=S);return _},"o"),e=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],f=[1,24],d=[1,25],p=[6,7,11],m=[1,31],g=[6,7,11,24],y=[1,6,13,16,17,20,23],v=[1,35],x=[1,36],b=[1,6,7,11,13,16,17,20,23],w=[1,38],C={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:o(function(S,_,I,D,k,L,R){var O=L.length-1;switch(k){case 6:case 7:return D;case 8:D.getLogger().trace("Stop NL ");break;case 9:D.getLogger().trace("Stop EOF ");break;case 11:D.getLogger().trace("Stop NL2 ");break;case 12:D.getLogger().trace("Stop EOF2 ");break;case 15:D.getLogger().info("Node: ",L[O-1].id),D.addNode(L[O-2].length,L[O-1].id,L[O-1].descr,L[O-1].type,L[O]);break;case 16:D.getLogger().info("Node: ",L[O].id),D.addNode(L[O-1].length,L[O].id,L[O].descr,L[O].type);break;case 17:D.getLogger().trace("Icon: ",L[O]),D.decorateNode({icon:L[O]});break;case 18:case 23:D.decorateNode({class:L[O]});break;case 19:D.getLogger().trace("SPACELIST");break;case 20:D.getLogger().trace("Node: ",L[O-1].id),D.addNode(0,L[O-1].id,L[O-1].descr,L[O-1].type,L[O]);break;case 21:D.getLogger().trace("Node: ",L[O].id),D.addNode(0,L[O].id,L[O].descr,L[O].type);break;case 22:D.decorateNode({icon:L[O]});break;case 27:D.getLogger().trace("node found ..",L[O-2]),this.$={id:L[O-1],descr:L[O-1],type:D.getType(L[O-2],L[O])};break;case 28:this.$={id:L[O],descr:L[O],type:0};break;case 29:D.getLogger().trace("node found ..",L[O-3]),this.$={id:L[O-3],descr:L[O-1],type:D.getType(L[O-2],L[O])};break;case 30:this.$=L[O-1]+L[O];break;case 31:this.$=L[O];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:r,7:[1,10],9:9,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},t(u,[2,3]),{1:[2,2]},t(u,[2,4]),t(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:r,9:22,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:h,7:f,10:23,11:d},t(p,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:s,23:l}),t(p,[2,19]),t(p,[2,21],{15:30,24:m}),t(p,[2,22]),t(p,[2,23]),t(g,[2,25]),t(g,[2,26]),t(g,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:f,10:34,11:d},{1:[2,7],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},t(y,[2,14],{7:v,11:x}),t(b,[2,8]),t(b,[2,9]),t(b,[2,10]),t(p,[2,16],{15:37,24:m}),t(p,[2,17]),t(p,[2,18]),t(p,[2,20],{24:w}),t(g,[2,31]),{21:[1,39]},{22:[1,40]},t(y,[2,13],{7:v,11:x}),t(b,[2,11]),t(b,[2,12]),t(p,[2,15],{24:w}),t(g,[2,30]),{22:[1,41]},t(g,[2,27]),t(g,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(S,_){if(_.recoverable)this.trace(S);else{var I=new Error(S);throw I.hash=_,I}},"parseError"),parse:o(function(S){var _=this,I=[0],D=[],k=[null],L=[],R=this.table,O="",N=0,B=0,F=0,P=2,G=1,z=L.slice.call(arguments,1),H=Object.create(this.lexer),Q={yy:{}};for(var j in this.yy)Object.prototype.hasOwnProperty.call(this.yy,j)&&(Q.yy[j]=this.yy[j]);H.setInput(S,Q.yy),Q.yy.lexer=H,Q.yy.parser=this,typeof H.yylloc>"u"&&(H.yylloc={});var ie=H.yylloc;L.push(ie);var ne=H.options&&H.options.ranges;typeof Q.yy.parseError=="function"?this.parseError=Q.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function le(Ge){I.length=I.length-2*Ge,k.length=k.length-Ge,L.length=L.length-Ge}o(le,"popStack");function he(){var Ge;return Ge=D.pop()||H.lex()||G,typeof Ge!="number"&&(Ge instanceof Array&&(D=Ge,Ge=D.pop()),Ge=_.symbols_[Ge]||Ge),Ge}o(he,"lex");for(var K,X,te,J,se,ue,Z={},Se,ce,ae,Oe;;){if(te=I[I.length-1],this.defaultActions[te]?J=this.defaultActions[te]:((K===null||typeof K>"u")&&(K=he()),J=R[te]&&R[te][K]),typeof J>"u"||!J.length||!J[0]){var ge="";Oe=[];for(Se in R[te])this.terminals_[Se]&&Se>P&&Oe.push("'"+this.terminals_[Se]+"'");H.showPosition?ge="Parse error on line "+(N+1)+`: +`+H.showPosition()+` +Expecting `+Oe.join(", ")+", got '"+(this.terminals_[K]||K)+"'":ge="Parse error on line "+(N+1)+": Unexpected "+(K==G?"end of input":"'"+(this.terminals_[K]||K)+"'"),this.parseError(ge,{text:H.match,token:this.terminals_[K]||K,line:H.yylineno,loc:ie,expected:Oe})}if(J[0]instanceof Array&&J.length>1)throw new Error("Parse Error: multiple actions possible at state: "+te+", token: "+K);switch(J[0]){case 1:I.push(K),k.push(H.yytext),L.push(H.yylloc),I.push(J[1]),K=null,X?(K=X,X=null):(B=H.yyleng,O=H.yytext,N=H.yylineno,ie=H.yylloc,F>0&&F--);break;case 2:if(ce=this.productions_[J[1]][1],Z.$=k[k.length-ce],Z._$={first_line:L[L.length-(ce||1)].first_line,last_line:L[L.length-1].last_line,first_column:L[L.length-(ce||1)].first_column,last_column:L[L.length-1].last_column},ne&&(Z._$.range=[L[L.length-(ce||1)].range[0],L[L.length-1].range[1]]),ue=this.performAction.apply(Z,[O,B,N,Q.yy,J[1],k,L].concat(z)),typeof ue<"u")return ue;ce&&(I=I.slice(0,-1*ce*2),k=k.slice(0,-1*ce),L=L.slice(0,-1*ce)),I.push(this.productions_[J[1]][0]),k.push(Z.$),L.push(Z._$),ae=R[I[I.length-2]][I[I.length-1]],I.push(ae);break;case 3:return!0}}return!0},"parse")},T=function(){var A={EOF:1,parseError:o(function(_,I){if(this.yy.parser)this.yy.parser.parseError(_,I);else throw new Error(_)},"parseError"),setInput:o(function(S,_){return this.yy=_||this.yy||{},this._input=S,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var S=this._input[0];this.yytext+=S,this.yyleng++,this.offset++,this.match+=S,this.matched+=S;var _=S.match(/(?:\r\n?|\n).*/g);return _?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),S},"input"),unput:o(function(S){var _=S.length,I=S.split(/(?:\r\n?|\n)/g);this._input=S+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-_),this.offset-=_;var D=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),I.length-1&&(this.yylineno-=I.length-1);var k=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:I?(I.length===D.length?this.yylloc.first_column:0)+D[D.length-I.length].length-I[0].length:this.yylloc.first_column-_},this.options.ranges&&(this.yylloc.range=[k[0],k[0]+this.yyleng-_]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(S){this.unput(this.match.slice(S))},"less"),pastInput:o(function(){var S=this.matched.substr(0,this.matched.length-this.match.length);return(S.length>20?"...":"")+S.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var S=this.match;return S.length<20&&(S+=this._input.substr(0,20-S.length)),(S.substr(0,20)+(S.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var S=this.pastInput(),_=new Array(S.length+1).join("-");return S+this.upcomingInput()+` +`+_+"^"},"showPosition"),test_match:o(function(S,_){var I,D,k;if(this.options.backtrack_lexer&&(k={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(k.yylloc.range=this.yylloc.range.slice(0))),D=S[0].match(/(?:\r\n?|\n).*/g),D&&(this.yylineno+=D.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:D?D[D.length-1].length-D[D.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+S[0].length},this.yytext+=S[0],this.match+=S[0],this.matches=S,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(S[0].length),this.matched+=S[0],I=this.performAction.call(this,this.yy,this,_,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),I)return I;if(this._backtrack){for(var L in k)this[L]=k[L];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var S,_,I,D;this._more||(this.yytext="",this.match="");for(var k=this._currentRules(),L=0;L_[0].length)){if(_=I,D=L,this.options.backtrack_lexer){if(S=this.test_match(I,k[L]),S!==!1)return S;if(this._backtrack){_=!1;continue}else return!1}else if(!this.options.flex)break}return _?(S=this.test_match(_,k[D]),S!==!1?S:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var _=this.next();return _||this.lex()},"lex"),begin:o(function(_){this.conditionStack.push(_)},"begin"),popState:o(function(){var _=this.conditionStack.length-1;return _>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(_){return _=this.conditionStack.length-1-Math.abs(_||0),_>=0?this.conditionStack[_]:"INITIAL"},"topState"),pushState:o(function(_){this.begin(_)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(_,I,D,k){var L=k;switch(D){case 0:return this.pushState("shapeData"),I.yytext="",24;break;case 1:return this.pushState("shapeDataStr"),24;break;case 2:return this.popState(),24;break;case 3:let R=/\n\s*/g;return I.yytext=I.yytext.replace(R,"
    "),24;break;case 4:return 24;case 5:this.popState();break;case 6:return _.getLogger().trace("Found comment",I.yytext),6;break;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;break;case 10:this.popState();break;case 11:_.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return _.getLogger().trace("SPACELINE"),6;break;case 13:return 7;case 14:return 16;case 15:_.getLogger().trace("end icon"),this.popState();break;case 16:return _.getLogger().trace("Exploding node"),this.begin("NODE"),20;break;case 17:return _.getLogger().trace("Cloud"),this.begin("NODE"),20;break;case 18:return _.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;break;case 19:return _.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;break;case 20:return this.begin("NODE"),20;break;case 21:return this.begin("NODE"),20;break;case 22:return this.begin("NODE"),20;break;case 23:return this.begin("NODE"),20;break;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 29:this.popState();break;case 30:_.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return _.getLogger().trace("description:",I.yytext),"NODE_DESCR";break;case 32:this.popState();break;case 33:return this.popState(),_.getLogger().trace("node end ))"),"NODE_DEND";break;case 34:return this.popState(),_.getLogger().trace("node end )"),"NODE_DEND";break;case 35:return this.popState(),_.getLogger().trace("node end ...",I.yytext),"NODE_DEND";break;case 36:return this.popState(),_.getLogger().trace("node end (("),"NODE_DEND";break;case 37:return this.popState(),_.getLogger().trace("node end (-"),"NODE_DEND";break;case 38:return this.popState(),_.getLogger().trace("node end (-"),"NODE_DEND";break;case 39:return this.popState(),_.getLogger().trace("node end (("),"NODE_DEND";break;case 40:return this.popState(),_.getLogger().trace("node end (("),"NODE_DEND";break;case 41:return _.getLogger().trace("Long description:",I.yytext),21;break;case 42:return _.getLogger().trace("Long description:",I.yytext),21;break}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}};return A}();C.lexer=T;function E(){this.yy={}}return o(E,"Parser"),E.prototype=C,C.Parser=E,new E}();yB.parser=yB;Gge=yB});var el,xB,vB,bB,OZe,PZe,Vge,BZe,FZe,qi,zZe,GZe,$Ze,VZe,UZe,HZe,WZe,Uge,Hge=M(()=>{"use strict";Gt();gr();vt();ps();pw();el=[],xB=[],vB=0,bB={},OZe=o(()=>{el=[],xB=[],vB=0,bB={}},"clear"),PZe=o(t=>{if(el.length===0)return null;let e=el[0].level,r=null;for(let n=el.length-1;n>=0;n--)if(el[n].level===e&&!r&&(r=el[n]),el[n].levell.parentId===i.id);for(let l of s){let u={id:l.id,parentId:i.id,label:Tr(l.label??"",n),isGroup:!1,ticket:l?.ticket,priority:l?.priority,assigned:l?.assigned,icon:l?.icon,shape:"kanbanItem",level:l.level,rx:5,ry:5,cssStyles:["text-align: left"]};e.push(u)}}return{nodes:e,edges:t,other:{},config:me()}},"getData"),FZe=o((t,e,r,n,i)=>{let a=me(),s=a.mindmap?.padding??cr.mindmap.padding;switch(n){case qi.ROUNDED_RECT:case qi.RECT:case qi.HEXAGON:s*=2}let l={id:Tr(e,a)||"kbn"+vB++,level:t,label:Tr(r,a),width:a.mindmap?.maxNodeWidth??cr.mindmap.maxNodeWidth,padding:s,isGroup:!1};if(i!==void 0){let h;i.includes(` `)?h=i+` `:h=`{ `+i+` -}`;let f=fm(h,{schema:hm});if(f.shape&&(f.shape!==f.shape.toLowerCase()||f.shape.includes("_")))throw new Error(`No such shape: ${f.shape}. Shape names should be lowercase.`);f?.shape&&f.shape==="kanbanItem"&&(l.shape=f?.shape),f?.label&&(l.label=f?.label),f?.icon&&(l.icon=f?.icon.toString()),f?.assigned&&(l.assigned=f?.assigned.toString()),f?.ticket&&(l.ticket=f?.ticket.toString()),f?.priority&&(l.priority=f?.priority)}let u=Vtt(t);u?l.parentId=u.id||"kbn"+DB++:NB.push(l),ol.push(l)},"addNode"),Xi={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},Wtt=o((t,e)=>{switch(Y.debug("In get type",t,e),t){case"[":return Xi.RECT;case"(":return e===")"?Xi.ROUNDED_RECT:Xi.CLOUD;case"((":return Xi.CIRCLE;case")":return Xi.CLOUD;case"))":return Xi.BANG;case"{{":return Xi.HEXAGON;default:return Xi.DEFAULT}},"getType"),Ytt=o((t,e)=>{RB[t]=e},"setElementForId"),qtt=o(t=>{if(!t)return;let e=de(),r=ol[ol.length-1];t.icon&&(r.icon=Tr(t.icon,e)),t.class&&(r.cssClasses=Tr(t.class,e))},"decorateNode"),Xtt=o(t=>{switch(t){case Xi.DEFAULT:return"no-border";case Xi.RECT:return"rect";case Xi.ROUNDED_RECT:return"rounded-rect";case Xi.CIRCLE:return"circle";case Xi.CLOUD:return"cloud";case Xi.BANG:return"bang";case Xi.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),jtt=o(()=>Y,"getLogger"),Ktt=o(t=>RB[t],"getElementById"),Qtt={clear:$tt,addNode:Htt,getSections:Y1e,getData:Utt,nodeType:Xi,getType:Wtt,setElementForId:Ytt,decorateNode:qtt,type2Str:Xtt,getLogger:jtt,getElementById:Ktt},q1e=Qtt});var Ztt,j1e,K1e=M(()=>{"use strict";Vt();ht();Hu();ni();hs();K5();sw();Ztt=o(async(t,e,r,n)=>{Y.debug(`Rendering kanban diagram -`+t);let a=n.db.getData(),s=de();s.htmlLabels=!1;let l=Oa(e),u=l.append("g");u.attr("class","sections");let h=l.append("g");h.attr("class","items");let f=a.nodes.filter(v=>v.isGroup),d=0,p=10,m=[],g=25;for(let v of f){let x=s?.kanban?.sectionWidth||200;d=d+1,v.x=x*d+(d-1)*p/2,v.width=x,v.y=0,v.height=x*3,v.rx=5,v.ry=5,v.cssClasses=v.cssClasses+" section-"+d;let b=await mm(u,v);g=Math.max(g,b?.labelBBox?.height),m.push(b)}let y=0;for(let v of f){let x=m[y];y=y+1;let b=s?.kanban?.sectionWidth||200,w=-b*3/2+g,_=w,T=a.nodes.filter(C=>C.parentId===v.id);for(let C of T){if(C.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");C.x=v.x,C.width=b-1.5*p;let I=(await gm(h,C,{config:s})).node().getBBox();C.y=_+I.height/2,await _v(C),_=C.y+I.height/2+p/2}let E=x.cluster.select("rect"),L=Math.max(_-w+3*p,50)+(g-25);E.attr("height",L)}_o(void 0,l,s.mindmap?.padding??ur.kanban.padding,s.mindmap?.useMaxWidth??ur.kanban.useMaxWidth)},"draw"),j1e={draw:Ztt}});var Jtt,ert,Q1e,Z1e=M(()=>{"use strict";To();Jtt=o(t=>{let e="";for(let n=0;nt.darkMode?Bt(n,i):Dt(n,i),"adjuster");for(let n=0;n{switch(Y.debug("In get type",t,e),t){case"[":return qi.RECT;case"(":return e===")"?qi.ROUNDED_RECT:qi.CLOUD;case"((":return qi.CIRCLE;case")":return qi.CLOUD;case"))":return qi.BANG;case"{{":return qi.HEXAGON;default:return qi.DEFAULT}},"getType"),GZe=o((t,e)=>{bB[t]=e},"setElementForId"),$Ze=o(t=>{if(!t)return;let e=me(),r=el[el.length-1];t.icon&&(r.icon=Tr(t.icon,e)),t.class&&(r.cssClasses=Tr(t.class,e))},"decorateNode"),VZe=o(t=>{switch(t){case qi.DEFAULT:return"no-border";case qi.RECT:return"rect";case qi.ROUNDED_RECT:return"rounded-rect";case qi.CIRCLE:return"circle";case qi.CLOUD:return"cloud";case qi.BANG:return"bang";case qi.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),UZe=o(()=>Y,"getLogger"),HZe=o(t=>bB[t],"getElementById"),WZe={clear:OZe,addNode:FZe,getSections:Vge,getData:BZe,nodeType:qi,getType:zZe,setElementForId:GZe,decorateNode:$Ze,type2Str:VZe,getLogger:UZe,getElementById:HZe},Uge=WZe});var qZe,Wge,qge=M(()=>{"use strict";Gt();vt();Hu();Ti();ps();Iw();Hw();qZe=o(async(t,e,r,n)=>{Y.debug(`Rendering kanban diagram +`+t);let a=n.db.getData(),s=me();s.htmlLabels=!1;let l=Pa(e),u=l.append("g");u.attr("class","sections");let h=l.append("g");h.attr("class","items");let f=a.nodes.filter(v=>v.isGroup),d=0,p=10,m=[],g=25;for(let v of f){let x=s?.kanban?.sectionWidth||200;d=d+1,v.x=x*d+(d-1)*p/2,v.width=x,v.y=0,v.height=x*3,v.rx=5,v.ry=5,v.cssClasses=v.cssClasses+" section-"+d;let b=await fm(u,v);g=Math.max(g,b?.labelBBox?.height),m.push(b)}let y=0;for(let v of f){let x=m[y];y=y+1;let b=s?.kanban?.sectionWidth||200,w=-b*3/2+g,C=w,T=a.nodes.filter(S=>S.parentId===v.id);for(let S of T){if(S.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");S.x=v.x,S.width=b-1.5*p;let I=(await dm(h,S,{config:s})).node().getBBox();S.y=C+I.height/2,await c2(S),C=S.y+I.height/2+p/2}let E=x.cluster.select("rect"),A=Math.max(C-w+3*p,50)+(g-25);E.attr("height",A)}ko(void 0,l,s.mindmap?.padding??cr.kanban.padding,s.mindmap?.useMaxWidth??cr.kanban.useMaxWidth)},"draw"),Wge={draw:qZe}});var YZe,XZe,Yge,Xge=M(()=>{"use strict";Vs();YZe=o(t=>{let e="";for(let n=0;nt.darkMode?It(n,i):Dt(n,i),"adjuster");for(let n=0;n` + `}return e},"genSections"),XZe=o(t=>` .edge { stroke-width: 3; } - ${Jtt(t)} + ${YZe(t)} .section-root rect, .section-root path, .section-root circle, .section-root polygon { fill: ${t.git0}; } @@ -2077,14 +2326,16 @@ Expecting `+Fe.join(", ")+", got '"+(this.terminals_[H]||H)+"'":Be="Parse error dominant-baseline: middle; text-align: center; } -`,"getStyles"),Q1e=ert});var J1e={};vr(J1e,{diagram:()=>trt});var trt,eye=M(()=>{"use strict";W1e();X1e();K1e();Z1e();trt={db:q1e,renderer:j1e,parser:H1e,styles:Q1e}});var MB,ub,nye=M(()=>{"use strict";MB=function(){var t=o(function(l,u,h,f){for(h=h||{},f=l.length;f--;h[l[f]]=u);return h},"o"),e=[1,9],r=[1,10],n=[1,5,10,12],i={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:o(function(u,h,f,d,p,m,g){var y=m.length-1;switch(p){case 7:let v=d.findOrCreateNode(m[y-4].trim().replaceAll('""','"')),x=d.findOrCreateNode(m[y-2].trim().replaceAll('""','"')),b=parseFloat(m[y].trim());d.addLink(v,x,b);break;case 8:case 9:case 11:this.$=m[y];break;case 10:this.$=m[y-1];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:e,20:r},{1:[2,6],7:11,10:[1,12]},t(r,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(n,[2,8]),t(n,[2,9]),{19:[1,16]},t(n,[2,11]),{1:[2,1]},{1:[2,5]},t(r,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:e,20:r},{15:18,16:7,17:8,18:e,20:r},{18:[1,19]},t(r,[2,3]),{12:[1,20]},t(n,[2,10]),{15:21,16:7,17:8,18:e,20:r},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:o(function(u,h){if(h.recoverable)this.trace(u);else{var f=new Error(u);throw f.hash=h,f}},"parseError"),parse:o(function(u){var h=this,f=[0],d=[],p=[null],m=[],g=this.table,y="",v=0,x=0,b=0,w=2,_=1,T=m.slice.call(arguments,1),E=Object.create(this.lexer),L={yy:{}};for(var C in this.yy)Object.prototype.hasOwnProperty.call(this.yy,C)&&(L.yy[C]=this.yy[C]);E.setInput(u,L.yy),L.yy.lexer=E,L.yy.parser=this,typeof E.yylloc>"u"&&(E.yylloc={});var A=E.yylloc;m.push(A);var I=E.options&&E.options.ranges;typeof L.yy.parseError=="function"?this.parseError=L.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function D(ie){f.length=f.length-2*ie,p.length=p.length-ie,m.length=m.length-ie}o(D,"popStack");function k(){var ie;return ie=d.pop()||E.lex()||_,typeof ie!="number"&&(ie instanceof Array&&(d=ie,ie=d.pop()),ie=h.symbols_[ie]||ie),ie}o(k,"lex");for(var R,S,O,N,P,F,B={},$,z,W,j;;){if(O=f[f.length-1],this.defaultActions[O]?N=this.defaultActions[O]:((R===null||typeof R>"u")&&(R=k()),N=g[O]&&g[O][R]),typeof N>"u"||!N.length||!N[0]){var K="";j=[];for($ in g[O])this.terminals_[$]&&$>w&&j.push("'"+this.terminals_[$]+"'");E.showPosition?K="Parse error on line "+(v+1)+`: +`,"getStyles"),Yge=XZe});var jge={};pr(jge,{diagram:()=>jZe});var jZe,Kge=M(()=>{"use strict";$ge();Hge();qge();Xge();jZe={db:Uge,renderer:Wge,parser:Gge,styles:Yge}});var wB,e4,Jge=M(()=>{"use strict";wB=function(){var t=o(function(l,u,h,f){for(h=h||{},f=l.length;f--;h[l[f]]=u);return h},"o"),e=[1,9],r=[1,10],n=[1,5,10,12],i={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:o(function(u,h,f,d,p,m,g){var y=m.length-1;switch(p){case 7:let v=d.findOrCreateNode(m[y-4].trim().replaceAll('""','"')),x=d.findOrCreateNode(m[y-2].trim().replaceAll('""','"')),b=parseFloat(m[y].trim());d.addLink(v,x,b);break;case 8:case 9:case 11:this.$=m[y];break;case 10:this.$=m[y-1];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:e,20:r},{1:[2,6],7:11,10:[1,12]},t(r,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(n,[2,8]),t(n,[2,9]),{19:[1,16]},t(n,[2,11]),{1:[2,1]},{1:[2,5]},t(r,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:e,20:r},{15:18,16:7,17:8,18:e,20:r},{18:[1,19]},t(r,[2,3]),{12:[1,20]},t(n,[2,10]),{15:21,16:7,17:8,18:e,20:r},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:o(function(u,h){if(h.recoverable)this.trace(u);else{var f=new Error(u);throw f.hash=h,f}},"parseError"),parse:o(function(u){var h=this,f=[0],d=[],p=[null],m=[],g=this.table,y="",v=0,x=0,b=0,w=2,C=1,T=m.slice.call(arguments,1),E=Object.create(this.lexer),A={yy:{}};for(var S in this.yy)Object.prototype.hasOwnProperty.call(this.yy,S)&&(A.yy[S]=this.yy[S]);E.setInput(u,A.yy),A.yy.lexer=E,A.yy.parser=this,typeof E.yylloc>"u"&&(E.yylloc={});var _=E.yylloc;m.push(_);var I=E.options&&E.options.ranges;typeof A.yy.parseError=="function"?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function D(ie){f.length=f.length-2*ie,p.length=p.length-ie,m.length=m.length-ie}o(D,"popStack");function k(){var ie;return ie=d.pop()||E.lex()||C,typeof ie!="number"&&(ie instanceof Array&&(d=ie,ie=d.pop()),ie=h.symbols_[ie]||ie),ie}o(k,"lex");for(var L,R,O,N,B,F,P={},G,z,H,Q;;){if(O=f[f.length-1],this.defaultActions[O]?N=this.defaultActions[O]:((L===null||typeof L>"u")&&(L=k()),N=g[O]&&g[O][L]),typeof N>"u"||!N.length||!N[0]){var j="";Q=[];for(G in g[O])this.terminals_[G]&&G>w&&Q.push("'"+this.terminals_[G]+"'");E.showPosition?j="Parse error on line "+(v+1)+`: `+E.showPosition()+` -Expecting `+j.join(", ")+", got '"+(this.terminals_[R]||R)+"'":K="Parse error on line "+(v+1)+": Unexpected "+(R==_?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(K,{text:E.match,token:this.terminals_[R]||R,line:E.yylineno,loc:A,expected:j})}if(N[0]instanceof Array&&N.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+R);switch(N[0]){case 1:f.push(R),p.push(E.yytext),m.push(E.yylloc),f.push(N[1]),R=null,S?(R=S,S=null):(x=E.yyleng,y=E.yytext,v=E.yylineno,A=E.yylloc,b>0&&b--);break;case 2:if(z=this.productions_[N[1]][1],B.$=p[p.length-z],B._$={first_line:m[m.length-(z||1)].first_line,last_line:m[m.length-1].last_line,first_column:m[m.length-(z||1)].first_column,last_column:m[m.length-1].last_column},I&&(B._$.range=[m[m.length-(z||1)].range[0],m[m.length-1].range[1]]),F=this.performAction.apply(B,[y,x,v,L.yy,N[1],p,m].concat(T)),typeof F<"u")return F;z&&(f=f.slice(0,-1*z*2),p=p.slice(0,-1*z),m=m.slice(0,-1*z)),f.push(this.productions_[N[1]][0]),p.push(B.$),m.push(B._$),W=g[f[f.length-2]][f[f.length-1]],f.push(W);break;case 3:return!0}}return!0},"parse")},a=function(){var l={EOF:1,parseError:o(function(h,f){if(this.yy.parser)this.yy.parser.parseError(h,f);else throw new Error(h)},"parseError"),setInput:o(function(u,h){return this.yy=h||this.yy||{},this._input=u,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var u=this._input[0];this.yytext+=u,this.yyleng++,this.offset++,this.match+=u,this.matched+=u;var h=u.match(/(?:\r\n?|\n).*/g);return h?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),u},"input"),unput:o(function(u){var h=u.length,f=u.split(/(?:\r\n?|\n)/g);this._input=u+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-h),this.offset-=h;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),f.length-1&&(this.yylineno-=f.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:f?(f.length===d.length?this.yylloc.first_column:0)+d[d.length-f.length].length-f[0].length:this.yylloc.first_column-h},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-h]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +Expecting `+Q.join(", ")+", got '"+(this.terminals_[L]||L)+"'":j="Parse error on line "+(v+1)+": Unexpected "+(L==C?"end of input":"'"+(this.terminals_[L]||L)+"'"),this.parseError(j,{text:E.match,token:this.terminals_[L]||L,line:E.yylineno,loc:_,expected:Q})}if(N[0]instanceof Array&&N.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+L);switch(N[0]){case 1:f.push(L),p.push(E.yytext),m.push(E.yylloc),f.push(N[1]),L=null,R?(L=R,R=null):(x=E.yyleng,y=E.yytext,v=E.yylineno,_=E.yylloc,b>0&&b--);break;case 2:if(z=this.productions_[N[1]][1],P.$=p[p.length-z],P._$={first_line:m[m.length-(z||1)].first_line,last_line:m[m.length-1].last_line,first_column:m[m.length-(z||1)].first_column,last_column:m[m.length-1].last_column},I&&(P._$.range=[m[m.length-(z||1)].range[0],m[m.length-1].range[1]]),F=this.performAction.apply(P,[y,x,v,A.yy,N[1],p,m].concat(T)),typeof F<"u")return F;z&&(f=f.slice(0,-1*z*2),p=p.slice(0,-1*z),m=m.slice(0,-1*z)),f.push(this.productions_[N[1]][0]),p.push(P.$),m.push(P._$),H=g[f[f.length-2]][f[f.length-1]],f.push(H);break;case 3:return!0}}return!0},"parse")},a=function(){var l={EOF:1,parseError:o(function(h,f){if(this.yy.parser)this.yy.parser.parseError(h,f);else throw new Error(h)},"parseError"),setInput:o(function(u,h){return this.yy=h||this.yy||{},this._input=u,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var u=this._input[0];this.yytext+=u,this.yyleng++,this.offset++,this.match+=u,this.matched+=u;var h=u.match(/(?:\r\n?|\n).*/g);return h?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),u},"input"),unput:o(function(u){var h=u.length,f=u.split(/(?:\r\n?|\n)/g);this._input=u+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-h),this.offset-=h;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),f.length-1&&(this.yylineno-=f.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:f?(f.length===d.length?this.yylloc.first_column:0)+d[d.length-f.length].length-f[0].length:this.yylloc.first_column-h},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-h]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(u){this.unput(this.match.slice(u))},"less"),pastInput:o(function(){var u=this.matched.substr(0,this.matched.length-this.match.length);return(u.length>20?"...":"")+u.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var u=this.match;return u.length<20&&(u+=this._input.substr(0,20-u.length)),(u.substr(0,20)+(u.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var u=this.pastInput(),h=new Array(u.length+1).join("-");return u+this.upcomingInput()+` `+h+"^"},"showPosition"),test_match:o(function(u,h){var f,d,p;if(this.options.backtrack_lexer&&(p={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(p.yylloc.range=this.yylloc.range.slice(0))),d=u[0].match(/(?:\r\n?|\n).*/g),d&&(this.yylineno+=d.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:d?d[d.length-1].length-d[d.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+u[0].length},this.yytext+=u[0],this.match+=u[0],this.matches=u,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(u[0].length),this.matched+=u[0],f=this.performAction.call(this,this.yy,this,h,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),f)return f;if(this._backtrack){for(var m in p)this[m]=p[m];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var u,h,f,d;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),m=0;mh[0].length)){if(h=f,d=m,this.options.backtrack_lexer){if(u=this.test_match(f,p[m]),u!==!1)return u;if(this._backtrack){h=!1;continue}else return!1}else if(!this.options.flex)break}return h?(u=this.test_match(h,p[d]),u!==!1?u:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var h=this.next();return h||this.lex()},"lex"),begin:o(function(h){this.conditionStack.push(h)},"begin"),popState:o(function(){var h=this.conditionStack.length-1;return h>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(h){return h=this.conditionStack.length-1-Math.abs(h||0),h>=0?this.conditionStack[h]:"INITIAL"},"topState"),pushState:o(function(h){this.begin(h)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(h,f,d,p){var m=p;switch(d){case 0:return this.pushState("csv"),4;break;case 1:return 10;case 2:return 5;case 3:return 12;case 4:return this.pushState("escaped_text"),18;break;case 5:return 20;case 6:return this.popState("escaped_text"),18;break;case 7:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[1,2,3,4,5,6,7],inclusive:!1},escaped_text:{rules:[6,7],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return l}();i.lexer=a;function s(){this.yy={}}return o(s,"Parser"),s.prototype=i,i.Parser=s,new s}();MB.parser=MB;ub=MB});var H6,W6,U6,art,IB,srt,OB,ort,lrt,crt,urt,iye,aye=M(()=>{"use strict";Vt();fr();ki();H6=[],W6=[],U6=new Map,art=o(()=>{H6=[],W6=[],U6=new Map,_r()},"clear"),IB=class{constructor(e,r,n=0){this.source=e;this.target=r;this.value=n}static{o(this,"SankeyLink")}},srt=o((t,e,r)=>{H6.push(new IB(t,e,r))},"addLink"),OB=class{constructor(e){this.ID=e}static{o(this,"SankeyNode")}},ort=o(t=>{t=je.sanitizeText(t,de());let e=U6.get(t);return e===void 0&&(e=new OB(t),U6.set(t,e),W6.push(e)),e},"findOrCreateNode"),lrt=o(()=>W6,"getNodes"),crt=o(()=>H6,"getLinks"),urt=o(()=>({nodes:W6.map(t=>({id:t.ID})),links:H6.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),"getGraph"),iye={nodesMap:U6,getConfig:o(()=>de().sankey,"getConfig"),getNodes:lrt,getLinks:crt,getGraph:urt,addLink:srt,findOrCreateNode:ort,getAccTitle:Pr,setAccTitle:Rr,getAccDescription:Fr,setAccDescription:Br,getDiagramTitle:Jr,setDiagramTitle:ln,clear:art}});function hb(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r=i)&&(r=i)}return r}var sye=M(()=>{"use strict";o(hb,"max")});function T1(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var oye=M(()=>{"use strict";o(T1,"min")});function k1(t,e){let r=0;if(e===void 0)for(let n of t)(n=+n)&&(r+=n);else{let n=-1;for(let i of t)(i=+e(i,++n,t))&&(r+=i)}return r}var lye=M(()=>{"use strict";o(k1,"sum")});var PB=M(()=>{"use strict";sye();oye();lye()});function hrt(t){return t.target.depth}function BB(t){return t.depth}function FB(t,e){return e-1-t.height}function fb(t,e){return t.sourceLinks.length?t.depth:e-1}function zB(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?T1(t.sourceLinks,hrt)-1:0}var GB=M(()=>{"use strict";PB();o(hrt,"targetDepth");o(BB,"left");o(FB,"right");o(fb,"justify");o(zB,"center")});function E1(t){return function(){return t}}var cye=M(()=>{"use strict";o(E1,"constant")});function uye(t,e){return Y6(t.source,e.source)||t.index-e.index}function hye(t,e){return Y6(t.target,e.target)||t.index-e.index}function Y6(t,e){return t.y0-e.y0}function $B(t){return t.value}function frt(t){return t.index}function drt(t){return t.nodes}function prt(t){return t.links}function fye(t,e){let r=t.get(e);if(!r)throw new Error("missing: "+e);return r}function dye({nodes:t}){for(let e of t){let r=e.y0,n=r;for(let i of e.sourceLinks)i.y0=r+i.width/2,r+=i.width;for(let i of e.targetLinks)i.y1=n+i.width/2,n+=i.width}}function q6(){let t=0,e=0,r=1,n=1,i=24,a=8,s,l=frt,u=fb,h,f,d=drt,p=prt,m=6;function g(){let O={nodes:d.apply(null,arguments),links:p.apply(null,arguments)};return y(O),v(O),x(O),b(O),T(O),dye(O),O}o(g,"sankey"),g.update=function(O){return dye(O),O},g.nodeId=function(O){return arguments.length?(l=typeof O=="function"?O:E1(O),g):l},g.nodeAlign=function(O){return arguments.length?(u=typeof O=="function"?O:E1(O),g):u},g.nodeSort=function(O){return arguments.length?(h=O,g):h},g.nodeWidth=function(O){return arguments.length?(i=+O,g):i},g.nodePadding=function(O){return arguments.length?(a=s=+O,g):a},g.nodes=function(O){return arguments.length?(d=typeof O=="function"?O:E1(O),g):d},g.links=function(O){return arguments.length?(p=typeof O=="function"?O:E1(O),g):p},g.linkSort=function(O){return arguments.length?(f=O,g):f},g.size=function(O){return arguments.length?(t=e=0,r=+O[0],n=+O[1],g):[r-t,n-e]},g.extent=function(O){return arguments.length?(t=+O[0][0],r=+O[1][0],e=+O[0][1],n=+O[1][1],g):[[t,e],[r,n]]},g.iterations=function(O){return arguments.length?(m=+O,g):m};function y({nodes:O,links:N}){for(let[F,B]of O.entries())B.index=F,B.sourceLinks=[],B.targetLinks=[];let P=new Map(O.map((F,B)=>[l(F,B,O),F]));for(let[F,B]of N.entries()){B.index=F;let{source:$,target:z}=B;typeof $!="object"&&($=B.source=fye(P,$)),typeof z!="object"&&(z=B.target=fye(P,z)),$.sourceLinks.push(B),z.targetLinks.push(B)}if(f!=null)for(let{sourceLinks:F,targetLinks:B}of O)F.sort(f),B.sort(f)}o(y,"computeNodeLinks");function v({nodes:O}){for(let N of O)N.value=N.fixedValue===void 0?Math.max(k1(N.sourceLinks,$B),k1(N.targetLinks,$B)):N.fixedValue}o(v,"computeNodeValues");function x({nodes:O}){let N=O.length,P=new Set(O),F=new Set,B=0;for(;P.size;){for(let $ of P){$.depth=B;for(let{target:z}of $.sourceLinks)F.add(z)}if(++B>N)throw new Error("circular link");P=F,F=new Set}}o(x,"computeNodeDepths");function b({nodes:O}){let N=O.length,P=new Set(O),F=new Set,B=0;for(;P.size;){for(let $ of P){$.height=B;for(let{source:z}of $.targetLinks)F.add(z)}if(++B>N)throw new Error("circular link");P=F,F=new Set}}o(b,"computeNodeHeights");function w({nodes:O}){let N=hb(O,B=>B.depth)+1,P=(r-t-i)/(N-1),F=new Array(N);for(let B of O){let $=Math.max(0,Math.min(N-1,Math.floor(u.call(null,B,N))));B.layer=$,B.x0=t+$*P,B.x1=B.x0+i,F[$]?F[$].push(B):F[$]=[B]}if(h)for(let B of F)B.sort(h);return F}o(w,"computeNodeLayers");function _(O){let N=T1(O,P=>(n-e-(P.length-1)*s)/k1(P,$B));for(let P of O){let F=e;for(let B of P){B.y0=F,B.y1=F+B.value*N,F=B.y1+s;for(let $ of B.sourceLinks)$.width=$.value*N}F=(n-F+s)/(P.length+1);for(let B=0;BP.length)-1)),_(N);for(let P=0;P0))continue;let K=(W/j-z.y0)*N;z.y0+=K,z.y1+=K,D(z)}h===void 0&&$.sort(Y6),C($,P)}}o(E,"relaxLeftToRight");function L(O,N,P){for(let F=O.length,B=F-2;B>=0;--B){let $=O[B];for(let z of $){let W=0,j=0;for(let{target:ie,value:Q}of z.sourceLinks){let ee=Q*(ie.layer-z.layer);W+=S(z,ie)*ee,j+=ee}if(!(j>0))continue;let K=(W/j-z.y0)*N;z.y0+=K,z.y1+=K,D(z)}h===void 0&&$.sort(Y6),C($,P)}}o(L,"relaxRightToLeft");function C(O,N){let P=O.length>>1,F=O[P];I(O,F.y0-s,P-1,N),A(O,F.y1+s,P+1,N),I(O,n,O.length-1,N),A(O,e,0,N)}o(C,"resolveCollisions");function A(O,N,P,F){for(;P1e-6&&(B.y0+=$,B.y1+=$),N=B.y1+s}}o(A,"resolveCollisionsTopToBottom");function I(O,N,P,F){for(;P>=0;--P){let B=O[P],$=(B.y1-N)*F;$>1e-6&&(B.y0-=$,B.y1-=$),N=B.y0-s}}o(I,"resolveCollisionsBottomToTop");function D({sourceLinks:O,targetLinks:N}){if(f===void 0){for(let{source:{sourceLinks:P}}of N)P.sort(hye);for(let{target:{targetLinks:P}}of O)P.sort(uye)}}o(D,"reorderNodeLinks");function k(O){if(f===void 0)for(let{sourceLinks:N,targetLinks:P}of O)N.sort(hye),P.sort(uye)}o(k,"reorderLinks");function R(O,N){let P=O.y0-(O.sourceLinks.length-1)*s/2;for(let{target:F,width:B}of O.sourceLinks){if(F===N)break;P+=B+s}for(let{source:F,width:B}of N.targetLinks){if(F===O)break;P-=B}return P}o(R,"targetTop");function S(O,N){let P=N.y0-(N.targetLinks.length-1)*s/2;for(let{source:F,width:B}of N.targetLinks){if(F===O)break;P+=B+s}for(let{target:F,width:B}of O.sourceLinks){if(F===N)break;P-=B}return P}return o(S,"sourceTop"),g}var pye=M(()=>{"use strict";PB();GB();cye();o(uye,"ascendingSourceBreadth");o(hye,"ascendingTargetBreadth");o(Y6,"ascendingBreadth");o($B,"value");o(frt,"defaultId");o(drt,"defaultNodes");o(prt,"defaultLinks");o(fye,"find");o(dye,"computeLinkBreadths");o(q6,"Sankey")});function HB(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function mye(){return new HB}var VB,UB,q0,mrt,WB,gye=M(()=>{"use strict";VB=Math.PI,UB=2*VB,q0=1e-6,mrt=UB-q0;o(HB,"Path");o(mye,"path");HB.prototype=mye.prototype={constructor:HB,moveTo:o(function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},"moveTo"),closePath:o(function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},"closePath"),lineTo:o(function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},"lineTo"),quadraticCurveTo:o(function(t,e,r,n){this._+="Q"+ +t+","+ +e+","+(this._x1=+r)+","+(this._y1=+n)},"quadraticCurveTo"),bezierCurveTo:o(function(t,e,r,n,i,a){this._+="C"+ +t+","+ +e+","+ +r+","+ +n+","+(this._x1=+i)+","+(this._y1=+a)},"bezierCurveTo"),arcTo:o(function(t,e,r,n,i){t=+t,e=+e,r=+r,n=+n,i=+i;var a=this._x1,s=this._y1,l=r-t,u=n-e,h=a-t,f=s-e,d=h*h+f*f;if(i<0)throw new Error("negative radius: "+i);if(this._x1===null)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(d>q0)if(!(Math.abs(f*l-u*h)>q0)||!i)this._+="L"+(this._x1=t)+","+(this._y1=e);else{var p=r-a,m=n-s,g=l*l+u*u,y=p*p+m*m,v=Math.sqrt(g),x=Math.sqrt(d),b=i*Math.tan((VB-Math.acos((g+d-y)/(2*v*x)))/2),w=b/x,_=b/v;Math.abs(w-1)>q0&&(this._+="L"+(t+w*h)+","+(e+w*f)),this._+="A"+i+","+i+",0,0,"+ +(f*p>h*m)+","+(this._x1=t+_*l)+","+(this._y1=e+_*u)}},"arcTo"),arc:o(function(t,e,r,n,i,a){t=+t,e=+e,r=+r,a=!!a;var s=r*Math.cos(n),l=r*Math.sin(n),u=t+s,h=e+l,f=1^a,d=a?n-i:i-n;if(r<0)throw new Error("negative radius: "+r);this._x1===null?this._+="M"+u+","+h:(Math.abs(this._x1-u)>q0||Math.abs(this._y1-h)>q0)&&(this._+="L"+u+","+h),r&&(d<0&&(d=d%UB+UB),d>mrt?this._+="A"+r+","+r+",0,1,"+f+","+(t-s)+","+(e-l)+"A"+r+","+r+",0,1,"+f+","+(this._x1=u)+","+(this._y1=h):d>q0&&(this._+="A"+r+","+r+",0,"+ +(d>=VB)+","+f+","+(this._x1=t+r*Math.cos(i))+","+(this._y1=e+r*Math.sin(i))))},"arc"),rect:o(function(t,e,r,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +r+"v"+ +n+"h"+-r+"Z"},"rect"),toString:o(function(){return this._},"toString")};WB=mye});var yye=M(()=>{"use strict";gye()});function X6(t){return o(function(){return t},"constant")}var vye=M(()=>{"use strict";o(X6,"default")});function xye(t){return t[0]}function bye(t){return t[1]}var wye=M(()=>{"use strict";o(xye,"x");o(bye,"y")});var Tye,kye=M(()=>{"use strict";Tye=Array.prototype.slice});function grt(t){return t.source}function yrt(t){return t.target}function vrt(t){var e=grt,r=yrt,n=xye,i=bye,a=null;function s(){var l,u=Tye.call(arguments),h=e.apply(this,u),f=r.apply(this,u);if(a||(a=l=WB()),t(a,+n.apply(this,(u[0]=h,u)),+i.apply(this,u),+n.apply(this,(u[0]=f,u)),+i.apply(this,u)),l)return a=null,l+""||null}return o(s,"link"),s.source=function(l){return arguments.length?(e=l,s):e},s.target=function(l){return arguments.length?(r=l,s):r},s.x=function(l){return arguments.length?(n=typeof l=="function"?l:X6(+l),s):n},s.y=function(l){return arguments.length?(i=typeof l=="function"?l:X6(+l),s):i},s.context=function(l){return arguments.length?(a=l??null,s):a},s}function xrt(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function YB(){return vrt(xrt)}var Eye=M(()=>{"use strict";yye();kye();vye();wye();o(grt,"linkSource");o(yrt,"linkTarget");o(vrt,"link");o(xrt,"curveHorizontal");o(YB,"linkHorizontal")});var Sye=M(()=>{"use strict";Eye()});function brt(t){return[t.source.x1,t.y0]}function wrt(t){return[t.target.x0,t.y1]}function j6(){return YB().source(brt).target(wrt)}var Cye=M(()=>{"use strict";Sye();o(brt,"horizontalSource");o(wrt,"horizontalTarget");o(j6,"default")});var Aye=M(()=>{"use strict";pye();GB();Cye()});var db,_ye=M(()=>{"use strict";db=class t{static{o(this,"Uid")}static{this.count=0}static next(e){return new t(e+ ++t.count)}constructor(e){this.id=e,this.href=`#${e}`}toString(){return"url("+this.href+")"}}});var Trt,krt,Lye,Dye=M(()=>{"use strict";Vt();mr();Aye();ni();_ye();Trt={left:BB,right:FB,center:zB,justify:fb},krt=o(function(t,e,r,n){let{securityLevel:i,sankey:a}=de(),s=S4.sankey,l;i==="sandbox"&&(l=ze("#i"+e));let u=i==="sandbox"?ze(l.nodes()[0].contentDocument.body):ze("body"),h=i==="sandbox"?u.select(`[id="${e}"]`):ze(`[id="${e}"]`),f=a?.width??s.width,d=a?.height??s.width,p=a?.useMaxWidth??s.useMaxWidth,m=a?.nodeAlignment??s.nodeAlignment,g=a?.prefix??s.prefix,y=a?.suffix??s.suffix,v=a?.showValues??s.showValues,x=n.db.getGraph(),b=Trt[m];q6().nodeId(I=>I.id).nodeWidth(10).nodePadding(10+(v?15:0)).nodeAlign(b).extent([[0,0],[f,d]])(x);let T=du(Z8);h.append("g").attr("class","nodes").selectAll(".node").data(x.nodes).join("g").attr("class","node").attr("id",I=>(I.uid=db.next("node-")).id).attr("transform",function(I){return"translate("+I.x0+","+I.y0+")"}).attr("x",I=>I.x0).attr("y",I=>I.y0).append("rect").attr("height",I=>I.y1-I.y0).attr("width",I=>I.x1-I.x0).attr("fill",I=>T(I.id));let E=o(({id:I,value:D})=>v?`${I} -${g}${Math.round(D*100)/100}${y}`:I,"getText");h.append("g").attr("class","node-labels").attr("font-family","sans-serif").attr("font-size",14).selectAll("text").data(x.nodes).join("text").attr("x",I=>I.x0(I.y1+I.y0)/2).attr("dy",`${v?"0":"0.35"}em`).attr("text-anchor",I=>I.x0(D.uid=db.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",D=>D.source.x1).attr("x2",D=>D.target.x0);I.append("stop").attr("offset","0%").attr("stop-color",D=>T(D.source.id)),I.append("stop").attr("offset","100%").attr("stop-color",D=>T(D.target.id))}let A;switch(C){case"gradient":A=o(I=>I.uid,"coloring");break;case"source":A=o(I=>T(I.source.id),"coloring");break;case"target":A=o(I=>T(I.target.id),"coloring");break;default:A=C}L.append("path").attr("d",j6()).attr("stroke",A).attr("stroke-width",I=>Math.max(1,I.width)),_o(void 0,h,0,p)},"draw"),Lye={draw:krt}});var Nye,Rye=M(()=>{"use strict";Nye=o(t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` -`).trim(),"prepareTextForParsing")});var Mye={};vr(Mye,{diagram:()=>Srt});var Ert,Srt,Iye=M(()=>{"use strict";nye();aye();Dye();Rye();Ert=ub.parse.bind(ub);ub.parse=t=>Ert(Nye(t));Srt={parser:ub,db:iye,renderer:Lye}});var Bye,qB,Lrt,Drt,Nrt,Rrt,Mrt,Rf,XB=M(()=>{"use strict";Ua();hs();hr();ki();Bye={packet:[]},qB=structuredClone(Bye),Lrt=ur.packet,Drt=o(()=>{let t=ws({...Lrt,...Sr().packet});return t.showBits&&(t.paddingY+=10),t},"getConfig"),Nrt=o(()=>qB.packet,"getPacket"),Rrt=o(t=>{t.length>0&&qB.packet.push(t)},"pushWord"),Mrt=o(()=>{_r(),qB=structuredClone(Bye)},"clear"),Rf={pushWord:Rrt,getPacket:Nrt,getConfig:Drt,clear:Mrt,setAccTitle:Rr,getAccTitle:Pr,setDiagramTitle:ln,getDiagramTitle:Jr,getAccDescription:Fr,setAccDescription:Br}});var Irt,Ort,Prt,Fye,zye=M(()=>{"use strict";Ng();ht();ox();XB();Irt=1e4,Ort=o(t=>{lf(t,Rf);let e=-1,r=[],n=1,{bitsPerRow:i}=Rf.getConfig();for(let{start:a,end:s,label:l}of t.blocks){if(s&&s{if(t.end===void 0&&(t.end=t.start),t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);return t.end+1<=e*r?[t,void 0]:[{start:t.start,end:e*r-1,label:t.label},{start:e*r,end:t.end,label:t.label}]},"getNextFittingBlock"),Fye={parse:o(async t=>{let e=await Gl("packet",t);Y.debug(e),Ort(e)},"parse")}});var Brt,Frt,Gye,$ye=M(()=>{"use strict";Hu();ni();Brt=o((t,e,r,n)=>{let i=n.db,a=i.getConfig(),{rowHeight:s,paddingY:l,bitWidth:u,bitsPerRow:h}=a,f=i.getPacket(),d=i.getDiagramTitle(),p=s+l,m=p*(f.length+1)-(d?0:s),g=u*h+2,y=Oa(e);y.attr("viewbox",`0 0 ${g} ${m}`),Zr(y,m,g,a.useMaxWidth);for(let[v,x]of f.entries())Frt(y,x,v,a);y.append("text").text(d).attr("x",g/2).attr("y",m-p/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),Frt=o((t,e,r,{rowHeight:n,paddingX:i,paddingY:a,bitWidth:s,bitsPerRow:l,showBits:u})=>{let h=t.append("g"),f=r*(n+a)+a;for(let d of e){let p=d.start%l*s+1,m=(d.end-d.start+1)*s-i;if(h.append("rect").attr("x",p).attr("y",f).attr("width",m).attr("height",n).attr("class","packetBlock"),h.append("text").attr("x",p+m/2).attr("y",f+n/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(d.label),!u)continue;let g=d.end===d.start,y=f-2;h.append("text").attr("x",p+(g?m/2:0)).attr("y",y).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",g?"middle":"start").text(d.start),g||h.append("text").attr("x",p+m).attr("y",y).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(d.end)}},"drawWord"),Gye={draw:Brt}});var zrt,Vye,Uye=M(()=>{"use strict";hr();zrt={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},Vye=o(({packet:t}={})=>{let e=ws(zrt,t);return` +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var h=this.next();return h||this.lex()},"lex"),begin:o(function(h){this.conditionStack.push(h)},"begin"),popState:o(function(){var h=this.conditionStack.length-1;return h>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(h){return h=this.conditionStack.length-1-Math.abs(h||0),h>=0?this.conditionStack[h]:"INITIAL"},"topState"),pushState:o(function(h){this.begin(h)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(h,f,d,p){var m=p;switch(d){case 0:return this.pushState("csv"),4;break;case 1:return 10;case 2:return 5;case 3:return 12;case 4:return this.pushState("escaped_text"),18;break;case 5:return 20;case 6:return this.popState("escaped_text"),18;break;case 7:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[1,2,3,4,5,6,7],inclusive:!1},escaped_text:{rules:[6,7],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return l}();i.lexer=a;function s(){this.yy={}}return o(s,"Parser"),s.prototype=i,i.Parser=s,new s}();wB.parser=wB;e4=wB});var IS,OS,MS,JZe,TB,eJe,kB,tJe,rJe,nJe,iJe,e1e,t1e=M(()=>{"use strict";Gt();gr();ki();IS=[],OS=[],MS=new Map,JZe=o(()=>{IS=[],OS=[],MS=new Map,Dr()},"clear"),TB=class{constructor(e,r,n=0){this.source=e;this.target=r;this.value=n}static{o(this,"SankeyLink")}},eJe=o((t,e,r)=>{IS.push(new TB(t,e,r))},"addLink"),kB=class{constructor(e){this.ID=e}static{o(this,"SankeyNode")}},tJe=o(t=>{t=Ze.sanitizeText(t,me());let e=MS.get(t);return e===void 0&&(e=new kB(t),MS.set(t,e),OS.push(e)),e},"findOrCreateNode"),rJe=o(()=>OS,"getNodes"),nJe=o(()=>IS,"getLinks"),iJe=o(()=>({nodes:OS.map(t=>({id:t.ID})),links:IS.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),"getGraph"),e1e={nodesMap:MS,getConfig:o(()=>me().sankey,"getConfig"),getNodes:rJe,getLinks:nJe,getGraph:iJe,addLink:eJe,findOrCreateNode:tJe,getAccTitle:Or,setAccTitle:Mr,getAccDescription:Br,setAccDescription:Pr,getDiagramTitle:Fr,setDiagramTitle:Zr,clear:JZe}});function t4(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r=i)&&(r=i)}return r}var r1e=M(()=>{"use strict";o(t4,"max")});function iy(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var n1e=M(()=>{"use strict";o(iy,"min")});function ay(t,e){let r=0;if(e===void 0)for(let n of t)(n=+n)&&(r+=n);else{let n=-1;for(let i of t)(i=+e(i,++n,t))&&(r+=i)}return r}var i1e=M(()=>{"use strict";o(ay,"sum")});var EB=M(()=>{"use strict";r1e();n1e();i1e()});function aJe(t){return t.target.depth}function SB(t){return t.depth}function CB(t,e){return e-1-t.height}function r4(t,e){return t.sourceLinks.length?t.depth:e-1}function AB(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?iy(t.sourceLinks,aJe)-1:0}var _B=M(()=>{"use strict";EB();o(aJe,"targetDepth");o(SB,"left");o(CB,"right");o(r4,"justify");o(AB,"center")});function sy(t){return function(){return t}}var a1e=M(()=>{"use strict";o(sy,"constant")});function s1e(t,e){return PS(t.source,e.source)||t.index-e.index}function o1e(t,e){return PS(t.target,e.target)||t.index-e.index}function PS(t,e){return t.y0-e.y0}function DB(t){return t.value}function sJe(t){return t.index}function oJe(t){return t.nodes}function lJe(t){return t.links}function l1e(t,e){let r=t.get(e);if(!r)throw new Error("missing: "+e);return r}function c1e({nodes:t}){for(let e of t){let r=e.y0,n=r;for(let i of e.sourceLinks)i.y0=r+i.width/2,r+=i.width;for(let i of e.targetLinks)i.y1=n+i.width/2,n+=i.width}}function BS(){let t=0,e=0,r=1,n=1,i=24,a=8,s,l=sJe,u=r4,h,f,d=oJe,p=lJe,m=6;function g(){let O={nodes:d.apply(null,arguments),links:p.apply(null,arguments)};return y(O),v(O),x(O),b(O),T(O),c1e(O),O}o(g,"sankey"),g.update=function(O){return c1e(O),O},g.nodeId=function(O){return arguments.length?(l=typeof O=="function"?O:sy(O),g):l},g.nodeAlign=function(O){return arguments.length?(u=typeof O=="function"?O:sy(O),g):u},g.nodeSort=function(O){return arguments.length?(h=O,g):h},g.nodeWidth=function(O){return arguments.length?(i=+O,g):i},g.nodePadding=function(O){return arguments.length?(a=s=+O,g):a},g.nodes=function(O){return arguments.length?(d=typeof O=="function"?O:sy(O),g):d},g.links=function(O){return arguments.length?(p=typeof O=="function"?O:sy(O),g):p},g.linkSort=function(O){return arguments.length?(f=O,g):f},g.size=function(O){return arguments.length?(t=e=0,r=+O[0],n=+O[1],g):[r-t,n-e]},g.extent=function(O){return arguments.length?(t=+O[0][0],r=+O[1][0],e=+O[0][1],n=+O[1][1],g):[[t,e],[r,n]]},g.iterations=function(O){return arguments.length?(m=+O,g):m};function y({nodes:O,links:N}){for(let[F,P]of O.entries())P.index=F,P.sourceLinks=[],P.targetLinks=[];let B=new Map(O.map((F,P)=>[l(F,P,O),F]));for(let[F,P]of N.entries()){P.index=F;let{source:G,target:z}=P;typeof G!="object"&&(G=P.source=l1e(B,G)),typeof z!="object"&&(z=P.target=l1e(B,z)),G.sourceLinks.push(P),z.targetLinks.push(P)}if(f!=null)for(let{sourceLinks:F,targetLinks:P}of O)F.sort(f),P.sort(f)}o(y,"computeNodeLinks");function v({nodes:O}){for(let N of O)N.value=N.fixedValue===void 0?Math.max(ay(N.sourceLinks,DB),ay(N.targetLinks,DB)):N.fixedValue}o(v,"computeNodeValues");function x({nodes:O}){let N=O.length,B=new Set(O),F=new Set,P=0;for(;B.size;){for(let G of B){G.depth=P;for(let{target:z}of G.sourceLinks)F.add(z)}if(++P>N)throw new Error("circular link");B=F,F=new Set}}o(x,"computeNodeDepths");function b({nodes:O}){let N=O.length,B=new Set(O),F=new Set,P=0;for(;B.size;){for(let G of B){G.height=P;for(let{source:z}of G.targetLinks)F.add(z)}if(++P>N)throw new Error("circular link");B=F,F=new Set}}o(b,"computeNodeHeights");function w({nodes:O}){let N=t4(O,P=>P.depth)+1,B=(r-t-i)/(N-1),F=new Array(N);for(let P of O){let G=Math.max(0,Math.min(N-1,Math.floor(u.call(null,P,N))));P.layer=G,P.x0=t+G*B,P.x1=P.x0+i,F[G]?F[G].push(P):F[G]=[P]}if(h)for(let P of F)P.sort(h);return F}o(w,"computeNodeLayers");function C(O){let N=iy(O,B=>(n-e-(B.length-1)*s)/ay(B,DB));for(let B of O){let F=e;for(let P of B){P.y0=F,P.y1=F+P.value*N,F=P.y1+s;for(let G of P.sourceLinks)G.width=G.value*N}F=(n-F+s)/(B.length+1);for(let P=0;PB.length)-1)),C(N);for(let B=0;B0))continue;let j=(H/Q-z.y0)*N;z.y0+=j,z.y1+=j,D(z)}h===void 0&&G.sort(PS),S(G,B)}}o(E,"relaxLeftToRight");function A(O,N,B){for(let F=O.length,P=F-2;P>=0;--P){let G=O[P];for(let z of G){let H=0,Q=0;for(let{target:ie,value:ne}of z.sourceLinks){let le=ne*(ie.layer-z.layer);H+=R(z,ie)*le,Q+=le}if(!(Q>0))continue;let j=(H/Q-z.y0)*N;z.y0+=j,z.y1+=j,D(z)}h===void 0&&G.sort(PS),S(G,B)}}o(A,"relaxRightToLeft");function S(O,N){let B=O.length>>1,F=O[B];I(O,F.y0-s,B-1,N),_(O,F.y1+s,B+1,N),I(O,n,O.length-1,N),_(O,e,0,N)}o(S,"resolveCollisions");function _(O,N,B,F){for(;B1e-6&&(P.y0+=G,P.y1+=G),N=P.y1+s}}o(_,"resolveCollisionsTopToBottom");function I(O,N,B,F){for(;B>=0;--B){let P=O[B],G=(P.y1-N)*F;G>1e-6&&(P.y0-=G,P.y1-=G),N=P.y0-s}}o(I,"resolveCollisionsBottomToTop");function D({sourceLinks:O,targetLinks:N}){if(f===void 0){for(let{source:{sourceLinks:B}}of N)B.sort(o1e);for(let{target:{targetLinks:B}}of O)B.sort(s1e)}}o(D,"reorderNodeLinks");function k(O){if(f===void 0)for(let{sourceLinks:N,targetLinks:B}of O)N.sort(o1e),B.sort(s1e)}o(k,"reorderLinks");function L(O,N){let B=O.y0-(O.sourceLinks.length-1)*s/2;for(let{target:F,width:P}of O.sourceLinks){if(F===N)break;B+=P+s}for(let{source:F,width:P}of N.targetLinks){if(F===O)break;B-=P}return B}o(L,"targetTop");function R(O,N){let B=N.y0-(N.targetLinks.length-1)*s/2;for(let{source:F,width:P}of N.targetLinks){if(F===O)break;B+=P+s}for(let{target:F,width:P}of O.sourceLinks){if(F===N)break;B-=P}return B}return o(R,"sourceTop"),g}var u1e=M(()=>{"use strict";EB();_B();a1e();o(s1e,"ascendingSourceBreadth");o(o1e,"ascendingTargetBreadth");o(PS,"ascendingBreadth");o(DB,"value");o(sJe,"defaultId");o(oJe,"defaultNodes");o(lJe,"defaultLinks");o(l1e,"find");o(c1e,"computeLinkBreadths");o(BS,"Sankey")});function NB(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function h1e(){return new NB}var LB,RB,qp,cJe,MB,f1e=M(()=>{"use strict";LB=Math.PI,RB=2*LB,qp=1e-6,cJe=RB-qp;o(NB,"Path");o(h1e,"path");NB.prototype=h1e.prototype={constructor:NB,moveTo:o(function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},"moveTo"),closePath:o(function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},"closePath"),lineTo:o(function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},"lineTo"),quadraticCurveTo:o(function(t,e,r,n){this._+="Q"+ +t+","+ +e+","+(this._x1=+r)+","+(this._y1=+n)},"quadraticCurveTo"),bezierCurveTo:o(function(t,e,r,n,i,a){this._+="C"+ +t+","+ +e+","+ +r+","+ +n+","+(this._x1=+i)+","+(this._y1=+a)},"bezierCurveTo"),arcTo:o(function(t,e,r,n,i){t=+t,e=+e,r=+r,n=+n,i=+i;var a=this._x1,s=this._y1,l=r-t,u=n-e,h=a-t,f=s-e,d=h*h+f*f;if(i<0)throw new Error("negative radius: "+i);if(this._x1===null)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(d>qp)if(!(Math.abs(f*l-u*h)>qp)||!i)this._+="L"+(this._x1=t)+","+(this._y1=e);else{var p=r-a,m=n-s,g=l*l+u*u,y=p*p+m*m,v=Math.sqrt(g),x=Math.sqrt(d),b=i*Math.tan((LB-Math.acos((g+d-y)/(2*v*x)))/2),w=b/x,C=b/v;Math.abs(w-1)>qp&&(this._+="L"+(t+w*h)+","+(e+w*f)),this._+="A"+i+","+i+",0,0,"+ +(f*p>h*m)+","+(this._x1=t+C*l)+","+(this._y1=e+C*u)}},"arcTo"),arc:o(function(t,e,r,n,i,a){t=+t,e=+e,r=+r,a=!!a;var s=r*Math.cos(n),l=r*Math.sin(n),u=t+s,h=e+l,f=1^a,d=a?n-i:i-n;if(r<0)throw new Error("negative radius: "+r);this._x1===null?this._+="M"+u+","+h:(Math.abs(this._x1-u)>qp||Math.abs(this._y1-h)>qp)&&(this._+="L"+u+","+h),r&&(d<0&&(d=d%RB+RB),d>cJe?this._+="A"+r+","+r+",0,1,"+f+","+(t-s)+","+(e-l)+"A"+r+","+r+",0,1,"+f+","+(this._x1=u)+","+(this._y1=h):d>qp&&(this._+="A"+r+","+r+",0,"+ +(d>=LB)+","+f+","+(this._x1=t+r*Math.cos(i))+","+(this._y1=e+r*Math.sin(i))))},"arc"),rect:o(function(t,e,r,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +r+"v"+ +n+"h"+-r+"Z"},"rect"),toString:o(function(){return this._},"toString")};MB=h1e});var d1e=M(()=>{"use strict";f1e()});function FS(t){return o(function(){return t},"constant")}var p1e=M(()=>{"use strict";o(FS,"default")});function m1e(t){return t[0]}function g1e(t){return t[1]}var y1e=M(()=>{"use strict";o(m1e,"x");o(g1e,"y")});var v1e,x1e=M(()=>{"use strict";v1e=Array.prototype.slice});function uJe(t){return t.source}function hJe(t){return t.target}function fJe(t){var e=uJe,r=hJe,n=m1e,i=g1e,a=null;function s(){var l,u=v1e.call(arguments),h=e.apply(this,u),f=r.apply(this,u);if(a||(a=l=MB()),t(a,+n.apply(this,(u[0]=h,u)),+i.apply(this,u),+n.apply(this,(u[0]=f,u)),+i.apply(this,u)),l)return a=null,l+""||null}return o(s,"link"),s.source=function(l){return arguments.length?(e=l,s):e},s.target=function(l){return arguments.length?(r=l,s):r},s.x=function(l){return arguments.length?(n=typeof l=="function"?l:FS(+l),s):n},s.y=function(l){return arguments.length?(i=typeof l=="function"?l:FS(+l),s):i},s.context=function(l){return arguments.length?(a=l??null,s):a},s}function dJe(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function IB(){return fJe(dJe)}var b1e=M(()=>{"use strict";d1e();x1e();p1e();y1e();o(uJe,"linkSource");o(hJe,"linkTarget");o(fJe,"link");o(dJe,"curveHorizontal");o(IB,"linkHorizontal")});var w1e=M(()=>{"use strict";b1e()});function pJe(t){return[t.source.x1,t.y0]}function mJe(t){return[t.target.x0,t.y1]}function zS(){return IB().source(pJe).target(mJe)}var T1e=M(()=>{"use strict";w1e();o(pJe,"horizontalSource");o(mJe,"horizontalTarget");o(zS,"default")});var k1e=M(()=>{"use strict";u1e();_B();T1e()});var n4,E1e=M(()=>{"use strict";n4=class t{static{o(this,"Uid")}static{this.count=0}static next(e){return new t(e+ ++t.count)}constructor(e){this.id=e,this.href=`#${e}`}toString(){return"url("+this.href+")"}}});var gJe,yJe,S1e,C1e=M(()=>{"use strict";Gt();hr();k1e();Ti();E1e();gJe={left:SB,right:CB,center:AB,justify:r4},yJe=o(function(t,e,r,n){let{securityLevel:i,sankey:a}=me(),s=m3.sankey,l;i==="sandbox"&&(l=$e("#i"+e));let u=i==="sandbox"?$e(l.nodes()[0].contentDocument.body):$e("body"),h=i==="sandbox"?u.select(`[id="${e}"]`):$e(`[id="${e}"]`),f=a?.width??s.width,d=a?.height??s.width,p=a?.useMaxWidth??s.useMaxWidth,m=a?.nodeAlignment??s.nodeAlignment,g=a?.prefix??s.prefix,y=a?.suffix??s.suffix,v=a?.showValues??s.showValues,x=n.db.getGraph(),b=gJe[m];BS().nodeId(I=>I.id).nodeWidth(10).nodePadding(10+(v?15:0)).nodeAlign(b).extent([[0,0],[f,d]])(x);let T=pu(G_);h.append("g").attr("class","nodes").selectAll(".node").data(x.nodes).join("g").attr("class","node").attr("id",I=>(I.uid=n4.next("node-")).id).attr("transform",function(I){return"translate("+I.x0+","+I.y0+")"}).attr("x",I=>I.x0).attr("y",I=>I.y0).append("rect").attr("height",I=>I.y1-I.y0).attr("width",I=>I.x1-I.x0).attr("fill",I=>T(I.id));let E=o(({id:I,value:D})=>v?`${I} +${g}${Math.round(D*100)/100}${y}`:I,"getText");h.append("g").attr("class","node-labels").attr("font-size",14).selectAll("text").data(x.nodes).join("text").attr("x",I=>I.x0(I.y1+I.y0)/2).attr("dy",`${v?"0":"0.35"}em`).attr("text-anchor",I=>I.x0(D.uid=n4.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",D=>D.source.x1).attr("x2",D=>D.target.x0);I.append("stop").attr("offset","0%").attr("stop-color",D=>T(D.source.id)),I.append("stop").attr("offset","100%").attr("stop-color",D=>T(D.target.id))}let _;switch(S){case"gradient":_=o(I=>I.uid,"coloring");break;case"source":_=o(I=>T(I.source.id),"coloring");break;case"target":_=o(I=>T(I.target.id),"coloring");break;default:_=S}A.append("path").attr("d",zS()).attr("stroke",_).attr("stroke-width",I=>Math.max(1,I.width)),ko(void 0,h,0,p)},"draw"),S1e={draw:yJe}});var A1e,_1e=M(()=>{"use strict";A1e=o(t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` +`).trim(),"prepareTextForParsing")});var vJe,D1e,L1e=M(()=>{"use strict";vJe=o(t=>`.label { + font-family: ${t.fontFamily}; + }`,"getStyles"),D1e=vJe});var R1e={};pr(R1e,{diagram:()=>bJe});var xJe,bJe,N1e=M(()=>{"use strict";Jge();t1e();C1e();_1e();L1e();xJe=e4.parse.bind(e4);e4.parse=t=>xJe(A1e(t));bJe={styles:D1e,parser:e4,db:e1e,renderer:S1e}});var O1e,OB,EJe,SJe,CJe,AJe,_Je,If,PB=M(()=>{"use strict";ka();ps();sr();ki();O1e={packet:[]},OB=structuredClone(O1e),EJe=cr.packet,SJe=o(()=>{let t=Es({...EJe,...mr().packet});return t.showBits&&(t.paddingY+=10),t},"getConfig"),CJe=o(()=>OB.packet,"getPacket"),AJe=o(t=>{t.length>0&&OB.packet.push(t)},"pushWord"),_Je=o(()=>{Dr(),OB=structuredClone(O1e)},"clear"),If={pushWord:AJe,getPacket:CJe,getConfig:SJe,clear:_Je,setAccTitle:Mr,getAccTitle:Or,setDiagramTitle:Zr,getDiagramTitle:Fr,getAccDescription:Br,setAccDescription:Pr}});var DJe,LJe,RJe,P1e,B1e=M(()=>{"use strict";y1();vt();Jx();PB();DJe=1e4,LJe=o(t=>{uf(t,If);let e=-1,r=[],n=1,{bitsPerRow:i}=If.getConfig();for(let{start:a,end:s,label:l}of t.blocks){if(s&&s{if(t.end===void 0&&(t.end=t.start),t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);return t.end+1<=e*r?[t,void 0]:[{start:t.start,end:e*r-1,label:t.label},{start:e*r,end:t.end,label:t.label}]},"getNextFittingBlock"),P1e={parse:o(async t=>{let e=await Fl("packet",t);Y.debug(e),LJe(e)},"parse")}});var NJe,MJe,F1e,z1e=M(()=>{"use strict";Hu();Ti();NJe=o((t,e,r,n)=>{let i=n.db,a=i.getConfig(),{rowHeight:s,paddingY:l,bitWidth:u,bitsPerRow:h}=a,f=i.getPacket(),d=i.getDiagramTitle(),p=s+l,m=p*(f.length+1)-(d?0:s),g=u*h+2,y=Pa(e);y.attr("viewbox",`0 0 ${g} ${m}`),vn(y,m,g,a.useMaxWidth);for(let[v,x]of f.entries())MJe(y,x,v,a);y.append("text").text(d).attr("x",g/2).attr("y",m-p/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),MJe=o((t,e,r,{rowHeight:n,paddingX:i,paddingY:a,bitWidth:s,bitsPerRow:l,showBits:u})=>{let h=t.append("g"),f=r*(n+a)+a;for(let d of e){let p=d.start%l*s+1,m=(d.end-d.start+1)*s-i;if(h.append("rect").attr("x",p).attr("y",f).attr("width",m).attr("height",n).attr("class","packetBlock"),h.append("text").attr("x",p+m/2).attr("y",f+n/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(d.label),!u)continue;let g=d.end===d.start,y=f-2;h.append("text").attr("x",p+(g?m/2:0)).attr("y",y).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",g?"middle":"start").text(d.start),g||h.append("text").attr("x",p+m).attr("y",y).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(d.end)}},"drawWord"),F1e={draw:NJe}});var IJe,G1e,$1e=M(()=>{"use strict";sr();IJe={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},G1e=o(({packet:t}={})=>{let e=Es(IJe,t);return` .packetByte { font-size: ${e.byteFontSize}; } @@ -2107,12 +2358,12 @@ ${g}${Math.round(D*100)/100}${y}`:I,"getText");h.append("g").attr("class","node- stroke-width: ${e.blockStrokeWidth}; fill: ${e.blockFillColor}; } - `},"styles")});var Hye={};vr(Hye,{diagram:()=>Grt});var Grt,Wye=M(()=>{"use strict";XB();zye();$ye();Uye();Grt={parser:Fye,db:Rf,renderer:Gye,styles:Vye}});var jB,Xye,jye=M(()=>{"use strict";jB=function(){var t=o(function(w,_,T,E){for(T=T||{},E=w.length;E--;T[w[E]]=_);return T},"o"),e=[1,7],r=[1,13],n=[1,14],i=[1,15],a=[1,19],s=[1,16],l=[1,17],u=[1,18],h=[8,30],f=[8,21,28,29,30,31,32,40,44,47],d=[1,23],p=[1,24],m=[8,15,16,21,28,29,30,31,32,40,44,47],g=[8,15,16,21,27,28,29,30,31,32,40,44,47],y=[1,49],v={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,block:31,NODE_ID:32,nodeShapeNLabel:33,dirList:34,DIR:35,NODE_DSTART:36,NODE_DEND:37,BLOCK_ARROW_START:38,BLOCK_ARROW_END:39,classDef:40,CLASSDEF_ID:41,CLASSDEF_STYLEOPTS:42,DEFAULT:43,class:44,CLASSENTITY_IDS:45,STYLECLASS:46,style:47,STYLE_ENTITY_IDS:48,STYLE_DEFINITION_DATA:49,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"block",32:"NODE_ID",35:"DIR",36:"NODE_DSTART",37:"NODE_DEND",38:"BLOCK_ARROW_START",39:"BLOCK_ARROW_END",40:"classDef",41:"CLASSDEF_ID",42:"CLASSDEF_STYLEOPTS",43:"DEFAULT",44:"class",45:"CLASSENTITY_IDS",46:"STYLECLASS",47:"style",48:"STYLE_ENTITY_IDS",49:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[34,1],[34,2],[33,3],[33,4],[23,3],[23,3],[24,3],[25,3]],performAction:o(function(_,T,E,L,C,A,I){var D=A.length-1;switch(C){case 4:L.getLogger().debug("Rule: separator (NL) ");break;case 5:L.getLogger().debug("Rule: separator (Space) ");break;case 6:L.getLogger().debug("Rule: separator (EOF) ");break;case 7:L.getLogger().debug("Rule: hierarchy: ",A[D-1]),L.setHierarchy(A[D-1]);break;case 8:L.getLogger().debug("Stop NL ");break;case 9:L.getLogger().debug("Stop EOF ");break;case 10:L.getLogger().debug("Stop NL2 ");break;case 11:L.getLogger().debug("Stop EOF2 ");break;case 12:L.getLogger().debug("Rule: statement: ",A[D]),typeof A[D].length=="number"?this.$=A[D]:this.$=[A[D]];break;case 13:L.getLogger().debug("Rule: statement #2: ",A[D-1]),this.$=[A[D-1]].concat(A[D]);break;case 14:L.getLogger().debug("Rule: link: ",A[D],_),this.$={edgeTypeStr:A[D],label:""};break;case 15:L.getLogger().debug("Rule: LABEL link: ",A[D-3],A[D-1],A[D]),this.$={edgeTypeStr:A[D],label:A[D-1]};break;case 18:let k=parseInt(A[D]),R=L.generateId();this.$={id:R,type:"space",label:"",width:k,children:[]};break;case 23:L.getLogger().debug("Rule: (nodeStatement link node) ",A[D-2],A[D-1],A[D]," typestr: ",A[D-1].edgeTypeStr);let S=L.edgeStrToEdgeData(A[D-1].edgeTypeStr);this.$=[{id:A[D-2].id,label:A[D-2].label,type:A[D-2].type,directions:A[D-2].directions},{id:A[D-2].id+"-"+A[D].id,start:A[D-2].id,end:A[D].id,label:A[D-1].label,type:"edge",directions:A[D].directions,arrowTypeEnd:S,arrowTypeStart:"arrow_open"},{id:A[D].id,label:A[D].label,type:L.typeStr2Type(A[D].typeStr),directions:A[D].directions}];break;case 24:L.getLogger().debug("Rule: nodeStatement (abc88 node size) ",A[D-1],A[D]),this.$={id:A[D-1].id,label:A[D-1].label,type:L.typeStr2Type(A[D-1].typeStr),directions:A[D-1].directions,widthInColumns:parseInt(A[D],10)};break;case 25:L.getLogger().debug("Rule: nodeStatement (node) ",A[D]),this.$={id:A[D].id,label:A[D].label,type:L.typeStr2Type(A[D].typeStr),directions:A[D].directions,widthInColumns:1};break;case 26:L.getLogger().debug("APA123",this?this:"na"),L.getLogger().debug("COLUMNS: ",A[D]),this.$={type:"column-setting",columns:A[D]==="auto"?-1:parseInt(A[D])};break;case 27:L.getLogger().debug("Rule: id-block statement : ",A[D-2],A[D-1]);let O=L.generateId();this.$={...A[D-2],type:"composite",children:A[D-1]};break;case 28:L.getLogger().debug("Rule: blockStatement : ",A[D-2],A[D-1],A[D]);let N=L.generateId();this.$={id:N,type:"composite",label:"",children:A[D-1]};break;case 29:L.getLogger().debug("Rule: node (NODE_ID separator): ",A[D]),this.$={id:A[D]};break;case 30:L.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",A[D-1],A[D]),this.$={id:A[D-1],label:A[D].label,typeStr:A[D].typeStr,directions:A[D].directions};break;case 31:L.getLogger().debug("Rule: dirList: ",A[D]),this.$=[A[D]];break;case 32:L.getLogger().debug("Rule: dirList: ",A[D-1],A[D]),this.$=[A[D-1]].concat(A[D]);break;case 33:L.getLogger().debug("Rule: nodeShapeNLabel: ",A[D-2],A[D-1],A[D]),this.$={typeStr:A[D-2]+A[D],label:A[D-1]};break;case 34:L.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",A[D-3],A[D-2]," #3:",A[D-1],A[D]),this.$={typeStr:A[D-3]+A[D],label:A[D-2],directions:A[D-1]};break;case 35:case 36:this.$={type:"classDef",id:A[D-1].trim(),css:A[D].trim()};break;case 37:this.$={type:"applyClass",id:A[D-1].trim(),styleClass:A[D].trim()};break;case 38:this.$={type:"applyStyles",id:A[D-1].trim(),stylesStr:A[D].trim()};break}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{11:3,13:4,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:n,31:i,32:a,40:s,44:l,47:u},{8:[1,20]},t(h,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,21:e,28:r,29:n,31:i,32:a,40:s,44:l,47:u}),t(f,[2,16],{14:22,15:d,16:p}),t(f,[2,17]),t(f,[2,18]),t(f,[2,19]),t(f,[2,20]),t(f,[2,21]),t(f,[2,22]),t(m,[2,25],{27:[1,25]}),t(f,[2,26]),{19:26,26:12,32:a},{11:27,13:4,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:n,31:i,32:a,40:s,44:l,47:u},{41:[1,28],43:[1,29]},{45:[1,30]},{48:[1,31]},t(g,[2,29],{33:32,36:[1,33],38:[1,34]}),{1:[2,7]},t(h,[2,13]),{26:35,32:a},{32:[2,14]},{17:[1,36]},t(m,[2,24]),{11:37,13:4,14:22,15:d,16:p,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:n,31:i,32:a,40:s,44:l,47:u},{30:[1,38]},{42:[1,39]},{42:[1,40]},{46:[1,41]},{49:[1,42]},t(g,[2,30]),{18:[1,43]},{18:[1,44]},t(m,[2,23]),{18:[1,45]},{30:[1,46]},t(f,[2,28]),t(f,[2,35]),t(f,[2,36]),t(f,[2,37]),t(f,[2,38]),{37:[1,47]},{34:48,35:y},{15:[1,50]},t(f,[2,27]),t(g,[2,33]),{39:[1,51]},{34:52,35:y,39:[2,31]},{32:[2,15]},t(g,[2,34]),{39:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:o(function(_,T){if(T.recoverable)this.trace(_);else{var E=new Error(_);throw E.hash=T,E}},"parseError"),parse:o(function(_){var T=this,E=[0],L=[],C=[null],A=[],I=this.table,D="",k=0,R=0,S=0,O=2,N=1,P=A.slice.call(arguments,1),F=Object.create(this.lexer),B={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(B.yy[$]=this.yy[$]);F.setInput(_,B.yy),B.yy.lexer=F,B.yy.parser=this,typeof F.yylloc>"u"&&(F.yylloc={});var z=F.yylloc;A.push(z);var W=F.options&&F.options.ranges;typeof B.yy.parseError=="function"?this.parseError=B.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function j(oe){E.length=E.length-2*oe,C.length=C.length-oe,A.length=A.length-oe}o(j,"popStack");function K(){var oe;return oe=L.pop()||F.lex()||N,typeof oe!="number"&&(oe instanceof Array&&(L=oe,oe=L.pop()),oe=T.symbols_[oe]||oe),oe}o(K,"lex");for(var ie,Q,ee,J,H,q,Z={},ae,ue,ce,te;;){if(ee=E[E.length-1],this.defaultActions[ee]?J=this.defaultActions[ee]:((ie===null||typeof ie>"u")&&(ie=K()),J=I[ee]&&I[ee][ie]),typeof J>"u"||!J.length||!J[0]){var De="";te=[];for(ae in I[ee])this.terminals_[ae]&&ae>O&&te.push("'"+this.terminals_[ae]+"'");F.showPosition?De="Parse error on line "+(k+1)+`: + `},"styles")});var V1e={};pr(V1e,{diagram:()=>OJe});var OJe,U1e=M(()=>{"use strict";PB();B1e();z1e();$1e();OJe={parser:P1e,db:If,renderer:F1e,styles:G1e}});var BB,q1e,Y1e=M(()=>{"use strict";BB=function(){var t=o(function(w,C,T,E){for(T=T||{},E=w.length;E--;T[w[E]]=C);return T},"o"),e=[1,7],r=[1,13],n=[1,14],i=[1,15],a=[1,19],s=[1,16],l=[1,17],u=[1,18],h=[8,30],f=[8,21,28,29,30,31,32,40,44,47],d=[1,23],p=[1,24],m=[8,15,16,21,28,29,30,31,32,40,44,47],g=[8,15,16,21,27,28,29,30,31,32,40,44,47],y=[1,49],v={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,block:31,NODE_ID:32,nodeShapeNLabel:33,dirList:34,DIR:35,NODE_DSTART:36,NODE_DEND:37,BLOCK_ARROW_START:38,BLOCK_ARROW_END:39,classDef:40,CLASSDEF_ID:41,CLASSDEF_STYLEOPTS:42,DEFAULT:43,class:44,CLASSENTITY_IDS:45,STYLECLASS:46,style:47,STYLE_ENTITY_IDS:48,STYLE_DEFINITION_DATA:49,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"block",32:"NODE_ID",35:"DIR",36:"NODE_DSTART",37:"NODE_DEND",38:"BLOCK_ARROW_START",39:"BLOCK_ARROW_END",40:"classDef",41:"CLASSDEF_ID",42:"CLASSDEF_STYLEOPTS",43:"DEFAULT",44:"class",45:"CLASSENTITY_IDS",46:"STYLECLASS",47:"style",48:"STYLE_ENTITY_IDS",49:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[34,1],[34,2],[33,3],[33,4],[23,3],[23,3],[24,3],[25,3]],performAction:o(function(C,T,E,A,S,_,I){var D=_.length-1;switch(S){case 4:A.getLogger().debug("Rule: separator (NL) ");break;case 5:A.getLogger().debug("Rule: separator (Space) ");break;case 6:A.getLogger().debug("Rule: separator (EOF) ");break;case 7:A.getLogger().debug("Rule: hierarchy: ",_[D-1]),A.setHierarchy(_[D-1]);break;case 8:A.getLogger().debug("Stop NL ");break;case 9:A.getLogger().debug("Stop EOF ");break;case 10:A.getLogger().debug("Stop NL2 ");break;case 11:A.getLogger().debug("Stop EOF2 ");break;case 12:A.getLogger().debug("Rule: statement: ",_[D]),typeof _[D].length=="number"?this.$=_[D]:this.$=[_[D]];break;case 13:A.getLogger().debug("Rule: statement #2: ",_[D-1]),this.$=[_[D-1]].concat(_[D]);break;case 14:A.getLogger().debug("Rule: link: ",_[D],C),this.$={edgeTypeStr:_[D],label:""};break;case 15:A.getLogger().debug("Rule: LABEL link: ",_[D-3],_[D-1],_[D]),this.$={edgeTypeStr:_[D],label:_[D-1]};break;case 18:let k=parseInt(_[D]),L=A.generateId();this.$={id:L,type:"space",label:"",width:k,children:[]};break;case 23:A.getLogger().debug("Rule: (nodeStatement link node) ",_[D-2],_[D-1],_[D]," typestr: ",_[D-1].edgeTypeStr);let R=A.edgeStrToEdgeData(_[D-1].edgeTypeStr);this.$=[{id:_[D-2].id,label:_[D-2].label,type:_[D-2].type,directions:_[D-2].directions},{id:_[D-2].id+"-"+_[D].id,start:_[D-2].id,end:_[D].id,label:_[D-1].label,type:"edge",directions:_[D].directions,arrowTypeEnd:R,arrowTypeStart:"arrow_open"},{id:_[D].id,label:_[D].label,type:A.typeStr2Type(_[D].typeStr),directions:_[D].directions}];break;case 24:A.getLogger().debug("Rule: nodeStatement (abc88 node size) ",_[D-1],_[D]),this.$={id:_[D-1].id,label:_[D-1].label,type:A.typeStr2Type(_[D-1].typeStr),directions:_[D-1].directions,widthInColumns:parseInt(_[D],10)};break;case 25:A.getLogger().debug("Rule: nodeStatement (node) ",_[D]),this.$={id:_[D].id,label:_[D].label,type:A.typeStr2Type(_[D].typeStr),directions:_[D].directions,widthInColumns:1};break;case 26:A.getLogger().debug("APA123",this?this:"na"),A.getLogger().debug("COLUMNS: ",_[D]),this.$={type:"column-setting",columns:_[D]==="auto"?-1:parseInt(_[D])};break;case 27:A.getLogger().debug("Rule: id-block statement : ",_[D-2],_[D-1]);let O=A.generateId();this.$={..._[D-2],type:"composite",children:_[D-1]};break;case 28:A.getLogger().debug("Rule: blockStatement : ",_[D-2],_[D-1],_[D]);let N=A.generateId();this.$={id:N,type:"composite",label:"",children:_[D-1]};break;case 29:A.getLogger().debug("Rule: node (NODE_ID separator): ",_[D]),this.$={id:_[D]};break;case 30:A.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",_[D-1],_[D]),this.$={id:_[D-1],label:_[D].label,typeStr:_[D].typeStr,directions:_[D].directions};break;case 31:A.getLogger().debug("Rule: dirList: ",_[D]),this.$=[_[D]];break;case 32:A.getLogger().debug("Rule: dirList: ",_[D-1],_[D]),this.$=[_[D-1]].concat(_[D]);break;case 33:A.getLogger().debug("Rule: nodeShapeNLabel: ",_[D-2],_[D-1],_[D]),this.$={typeStr:_[D-2]+_[D],label:_[D-1]};break;case 34:A.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",_[D-3],_[D-2]," #3:",_[D-1],_[D]),this.$={typeStr:_[D-3]+_[D],label:_[D-2],directions:_[D-1]};break;case 35:case 36:this.$={type:"classDef",id:_[D-1].trim(),css:_[D].trim()};break;case 37:this.$={type:"applyClass",id:_[D-1].trim(),styleClass:_[D].trim()};break;case 38:this.$={type:"applyStyles",id:_[D-1].trim(),stylesStr:_[D].trim()};break}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{11:3,13:4,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:n,31:i,32:a,40:s,44:l,47:u},{8:[1,20]},t(h,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,21:e,28:r,29:n,31:i,32:a,40:s,44:l,47:u}),t(f,[2,16],{14:22,15:d,16:p}),t(f,[2,17]),t(f,[2,18]),t(f,[2,19]),t(f,[2,20]),t(f,[2,21]),t(f,[2,22]),t(m,[2,25],{27:[1,25]}),t(f,[2,26]),{19:26,26:12,32:a},{11:27,13:4,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:n,31:i,32:a,40:s,44:l,47:u},{41:[1,28],43:[1,29]},{45:[1,30]},{48:[1,31]},t(g,[2,29],{33:32,36:[1,33],38:[1,34]}),{1:[2,7]},t(h,[2,13]),{26:35,32:a},{32:[2,14]},{17:[1,36]},t(m,[2,24]),{11:37,13:4,14:22,15:d,16:p,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:n,31:i,32:a,40:s,44:l,47:u},{30:[1,38]},{42:[1,39]},{42:[1,40]},{46:[1,41]},{49:[1,42]},t(g,[2,30]),{18:[1,43]},{18:[1,44]},t(m,[2,23]),{18:[1,45]},{30:[1,46]},t(f,[2,28]),t(f,[2,35]),t(f,[2,36]),t(f,[2,37]),t(f,[2,38]),{37:[1,47]},{34:48,35:y},{15:[1,50]},t(f,[2,27]),t(g,[2,33]),{39:[1,51]},{34:52,35:y,39:[2,31]},{32:[2,15]},t(g,[2,34]),{39:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:o(function(C,T){if(T.recoverable)this.trace(C);else{var E=new Error(C);throw E.hash=T,E}},"parseError"),parse:o(function(C){var T=this,E=[0],A=[],S=[null],_=[],I=this.table,D="",k=0,L=0,R=0,O=2,N=1,B=_.slice.call(arguments,1),F=Object.create(this.lexer),P={yy:{}};for(var G in this.yy)Object.prototype.hasOwnProperty.call(this.yy,G)&&(P.yy[G]=this.yy[G]);F.setInput(C,P.yy),P.yy.lexer=F,P.yy.parser=this,typeof F.yylloc>"u"&&(F.yylloc={});var z=F.yylloc;_.push(z);var H=F.options&&F.options.ranges;typeof P.yy.parseError=="function"?this.parseError=P.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Q(ce){E.length=E.length-2*ce,S.length=S.length-ce,_.length=_.length-ce}o(Q,"popStack");function j(){var ce;return ce=A.pop()||F.lex()||N,typeof ce!="number"&&(ce instanceof Array&&(A=ce,ce=A.pop()),ce=T.symbols_[ce]||ce),ce}o(j,"lex");for(var ie,ne,le,he,K,X,te={},J,se,ue,Z;;){if(le=E[E.length-1],this.defaultActions[le]?he=this.defaultActions[le]:((ie===null||typeof ie>"u")&&(ie=j()),he=I[le]&&I[le][ie]),typeof he>"u"||!he.length||!he[0]){var Se="";Z=[];for(J in I[le])this.terminals_[J]&&J>O&&Z.push("'"+this.terminals_[J]+"'");F.showPosition?Se="Parse error on line "+(k+1)+`: `+F.showPosition()+` -Expecting `+te.join(", ")+", got '"+(this.terminals_[ie]||ie)+"'":De="Parse error on line "+(k+1)+": Unexpected "+(ie==N?"end of input":"'"+(this.terminals_[ie]||ie)+"'"),this.parseError(De,{text:F.match,token:this.terminals_[ie]||ie,line:F.yylineno,loc:z,expected:te})}if(J[0]instanceof Array&&J.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ee+", token: "+ie);switch(J[0]){case 1:E.push(ie),C.push(F.yytext),A.push(F.yylloc),E.push(J[1]),ie=null,Q?(ie=Q,Q=null):(R=F.yyleng,D=F.yytext,k=F.yylineno,z=F.yylloc,S>0&&S--);break;case 2:if(ue=this.productions_[J[1]][1],Z.$=C[C.length-ue],Z._$={first_line:A[A.length-(ue||1)].first_line,last_line:A[A.length-1].last_line,first_column:A[A.length-(ue||1)].first_column,last_column:A[A.length-1].last_column},W&&(Z._$.range=[A[A.length-(ue||1)].range[0],A[A.length-1].range[1]]),q=this.performAction.apply(Z,[D,R,k,B.yy,J[1],C,A].concat(P)),typeof q<"u")return q;ue&&(E=E.slice(0,-1*ue*2),C=C.slice(0,-1*ue),A=A.slice(0,-1*ue)),E.push(this.productions_[J[1]][0]),C.push(Z.$),A.push(Z._$),ce=I[E[E.length-2]][E[E.length-1]],E.push(ce);break;case 3:return!0}}return!0},"parse")},x=function(){var w={EOF:1,parseError:o(function(T,E){if(this.yy.parser)this.yy.parser.parseError(T,E);else throw new Error(T)},"parseError"),setInput:o(function(_,T){return this.yy=T||this.yy||{},this._input=_,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var _=this._input[0];this.yytext+=_,this.yyleng++,this.offset++,this.match+=_,this.matched+=_;var T=_.match(/(?:\r\n?|\n).*/g);return T?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),_},"input"),unput:o(function(_){var T=_.length,E=_.split(/(?:\r\n?|\n)/g);this._input=_+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-T),this.offset-=T;var L=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),E.length-1&&(this.yylineno-=E.length-1);var C=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:E?(E.length===L.length?this.yylloc.first_column:0)+L[L.length-E.length].length-E[0].length:this.yylloc.first_column-T},this.options.ranges&&(this.yylloc.range=[C[0],C[0]+this.yyleng-T]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(_){this.unput(this.match.slice(_))},"less"),pastInput:o(function(){var _=this.matched.substr(0,this.matched.length-this.match.length);return(_.length>20?"...":"")+_.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var _=this.match;return _.length<20&&(_+=this._input.substr(0,20-_.length)),(_.substr(0,20)+(_.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var _=this.pastInput(),T=new Array(_.length+1).join("-");return _+this.upcomingInput()+` -`+T+"^"},"showPosition"),test_match:o(function(_,T){var E,L,C;if(this.options.backtrack_lexer&&(C={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(C.yylloc.range=this.yylloc.range.slice(0))),L=_[0].match(/(?:\r\n?|\n).*/g),L&&(this.yylineno+=L.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:L?L[L.length-1].length-L[L.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+_[0].length},this.yytext+=_[0],this.match+=_[0],this.matches=_,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(_[0].length),this.matched+=_[0],E=this.performAction.call(this,this.yy,this,T,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),E)return E;if(this._backtrack){for(var A in C)this[A]=C[A];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var _,T,E,L;this._more||(this.yytext="",this.match="");for(var C=this._currentRules(),A=0;AT[0].length)){if(T=E,L=A,this.options.backtrack_lexer){if(_=this.test_match(E,C[A]),_!==!1)return _;if(this._backtrack){T=!1;continue}else return!1}else if(!this.options.flex)break}return T?(_=this.test_match(T,C[L]),_!==!1?_:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var T=this.next();return T||this.lex()},"lex"),begin:o(function(T){this.conditionStack.push(T)},"begin"),popState:o(function(){var T=this.conditionStack.length-1;return T>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(T){return T=this.conditionStack.length-1-Math.abs(T||0),T>=0?this.conditionStack[T]:"INITIAL"},"topState"),pushState:o(function(T){this.begin(T)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(T,E,L,C){var A=C;switch(L){case 0:return 10;case 1:return T.getLogger().debug("Found space-block"),31;break;case 2:return T.getLogger().debug("Found nl-block"),31;break;case 3:return T.getLogger().debug("Found space-block"),29;break;case 4:T.getLogger().debug(".",E.yytext);break;case 5:T.getLogger().debug("_",E.yytext);break;case 6:return 5;case 7:return E.yytext=-1,28;break;case 8:return E.yytext=E.yytext.replace(/columns\s+/,""),T.getLogger().debug("COLUMNS (LEX)",E.yytext),28;break;case 9:this.pushState("md_string");break;case 10:return"MD_STR";case 11:this.popState();break;case 12:this.pushState("string");break;case 13:T.getLogger().debug("LEX: POPPING STR:",E.yytext),this.popState();break;case 14:return T.getLogger().debug("LEX: STR end:",E.yytext),"STR";break;case 15:return E.yytext=E.yytext.replace(/space\:/,""),T.getLogger().debug("SPACE NUM (LEX)",E.yytext),21;break;case 16:return E.yytext="1",T.getLogger().debug("COLUMNS (LEX)",E.yytext),21;break;case 17:return 43;case 18:return"LINKSTYLE";case 19:return"INTERPOLATE";case 20:return this.pushState("CLASSDEF"),40;break;case 21:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 22:return this.popState(),this.pushState("CLASSDEFID"),41;break;case 23:return this.popState(),42;break;case 24:return this.pushState("CLASS"),44;break;case 25:return this.popState(),this.pushState("CLASS_STYLE"),45;break;case 26:return this.popState(),46;break;case 27:return this.pushState("STYLE_STMNT"),47;break;case 28:return this.popState(),this.pushState("STYLE_DEFINITION"),48;break;case 29:return this.popState(),49;break;case 30:return this.pushState("acc_title"),"acc_title";break;case 31:return this.popState(),"acc_title_value";break;case 32:return this.pushState("acc_descr"),"acc_descr";break;case 33:return this.popState(),"acc_descr_value";break;case 34:this.pushState("acc_descr_multiline");break;case 35:this.popState();break;case 36:return"acc_descr_multiline_value";case 37:return 30;case 38:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 39:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 40:return this.popState(),T.getLogger().debug("Lex: ))"),"NODE_DEND";break;case 41:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 42:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 43:return this.popState(),T.getLogger().debug("Lex: (-"),"NODE_DEND";break;case 44:return this.popState(),T.getLogger().debug("Lex: -)"),"NODE_DEND";break;case 45:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 46:return this.popState(),T.getLogger().debug("Lex: ]]"),"NODE_DEND";break;case 47:return this.popState(),T.getLogger().debug("Lex: ("),"NODE_DEND";break;case 48:return this.popState(),T.getLogger().debug("Lex: ])"),"NODE_DEND";break;case 49:return this.popState(),T.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 50:return this.popState(),T.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 51:return this.popState(),T.getLogger().debug("Lex: )]"),"NODE_DEND";break;case 52:return this.popState(),T.getLogger().debug("Lex: )"),"NODE_DEND";break;case 53:return this.popState(),T.getLogger().debug("Lex: ]>"),"NODE_DEND";break;case 54:return this.popState(),T.getLogger().debug("Lex: ]"),"NODE_DEND";break;case 55:return T.getLogger().debug("Lexa: -)"),this.pushState("NODE"),36;break;case 56:return T.getLogger().debug("Lexa: (-"),this.pushState("NODE"),36;break;case 57:return T.getLogger().debug("Lexa: ))"),this.pushState("NODE"),36;break;case 58:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 59:return T.getLogger().debug("Lex: ((("),this.pushState("NODE"),36;break;case 60:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 61:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 62:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 63:return T.getLogger().debug("Lexc: >"),this.pushState("NODE"),36;break;case 64:return T.getLogger().debug("Lexa: (["),this.pushState("NODE"),36;break;case 65:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 66:return this.pushState("NODE"),36;break;case 67:return this.pushState("NODE"),36;break;case 68:return this.pushState("NODE"),36;break;case 69:return this.pushState("NODE"),36;break;case 70:return this.pushState("NODE"),36;break;case 71:return this.pushState("NODE"),36;break;case 72:return this.pushState("NODE"),36;break;case 73:return T.getLogger().debug("Lexa: ["),this.pushState("NODE"),36;break;case 74:return this.pushState("BLOCK_ARROW"),T.getLogger().debug("LEX ARR START"),38;break;case 75:return T.getLogger().debug("Lex: NODE_ID",E.yytext),32;break;case 76:return T.getLogger().debug("Lex: EOF",E.yytext),8;break;case 77:this.pushState("md_string");break;case 78:this.pushState("md_string");break;case 79:return"NODE_DESCR";case 80:this.popState();break;case 81:T.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 82:T.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 83:return T.getLogger().debug("LEX: NODE_DESCR:",E.yytext),"NODE_DESCR";break;case 84:T.getLogger().debug("LEX POPPING"),this.popState();break;case 85:T.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 86:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (right): dir:",E.yytext),"DIR";break;case 87:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (left):",E.yytext),"DIR";break;case 88:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (x):",E.yytext),"DIR";break;case 89:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (y):",E.yytext),"DIR";break;case 90:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (up):",E.yytext),"DIR";break;case 91:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (down):",E.yytext),"DIR";break;case 92:return E.yytext="]>",T.getLogger().debug("Lex (ARROW_DIR end):",E.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";break;case 93:return T.getLogger().debug("Lex: LINK","#"+E.yytext+"#"),15;break;case 94:return T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 95:return T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 96:return T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 97:return T.getLogger().debug("Lex: START_LINK",E.yytext),this.pushState("LLABEL"),16;break;case 98:return T.getLogger().debug("Lex: START_LINK",E.yytext),this.pushState("LLABEL"),16;break;case 99:return T.getLogger().debug("Lex: START_LINK",E.yytext),this.pushState("LLABEL"),16;break;case 100:this.pushState("md_string");break;case 101:return T.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";break;case 102:return this.popState(),T.getLogger().debug("Lex: LINK","#"+E.yytext+"#"),15;break;case 103:return this.popState(),T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 104:return this.popState(),T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 105:return T.getLogger().debug("Lex: COLON",E.yytext),E.yytext=E.yytext.slice(1),27;break}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block\s+)/,/^(?:block\n+)/,/^(?:block:)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[29],inclusive:!1},STYLE_STMNT:{rules:[28],inclusive:!1},CLASSDEFID:{rules:[23],inclusive:!1},CLASSDEF:{rules:[21,22],inclusive:!1},CLASS_STYLE:{rules:[26],inclusive:!1},CLASS:{rules:[25],inclusive:!1},LLABEL:{rules:[100,101,102,103,104],inclusive:!1},ARROW_DIR:{rules:[86,87,88,89,90,91,92],inclusive:!1},BLOCK_ARROW:{rules:[77,82,85],inclusive:!1},NODE:{rules:[38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,78,81],inclusive:!1},md_string:{rules:[10,11,79,80],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[13,14,83,84],inclusive:!1},acc_descr_multiline:{rules:[35,36],inclusive:!1},acc_descr:{rules:[33],inclusive:!1},acc_title:{rules:[31],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,12,15,16,17,18,19,20,24,27,30,32,34,37,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,93,94,95,96,97,98,99,105],inclusive:!0}}};return w}();v.lexer=x;function b(){this.yy={}}return o(b,"Parser"),b.prototype=v,v.Parser=b,new b}();jB.parser=jB;Xye=jB});function Krt(t){switch(Y.debug("typeStr2Type",t),t){case"[]":return"square";case"()":return Y.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function Qrt(t){switch(Y.debug("typeStr2Type",t),t){case"==":return"thick";default:return"normal"}}function Zrt(t){switch(t.trim()){case"--x":return"arrow_cross";case"--o":return"arrow_circle";default:return"arrow_point"}}var ql,QB,KB,Kye,Qye,Urt,Jye,Hrt,K6,Wrt,Yrt,qrt,Xrt,eve,ZB,pb,jrt,Zye,Jrt,ent,tnt,rnt,nnt,int,ant,snt,ont,lnt,cnt,tve,rve=M(()=>{"use strict";SL();Ua();Vt();ht();fr();ki();ql=new Map,QB=[],KB=new Map,Kye="color",Qye="fill",Urt="bgFill",Jye=",",Hrt=de(),K6=new Map,Wrt=o(t=>je.sanitizeText(t,Hrt),"sanitizeText"),Yrt=o(function(t,e=""){let r=K6.get(t);r||(r={id:t,styles:[],textStyles:[]},K6.set(t,r)),e?.split(Jye).forEach(n=>{let i=n.replace(/([^;]*);/,"$1").trim();if(RegExp(Kye).exec(n)){let s=i.replace(Qye,Urt).replace(Kye,Qye);r.textStyles.push(s)}r.styles.push(i)})},"addStyleClass"),qrt=o(function(t,e=""){let r=ql.get(t);e!=null&&(r.styles=e.split(Jye))},"addStyle2Node"),Xrt=o(function(t,e){t.split(",").forEach(function(r){let n=ql.get(r);if(n===void 0){let i=r.trim();n={id:i,type:"na",children:[]},ql.set(i,n)}n.classes||(n.classes=[]),n.classes.push(e)})},"setCssClass"),eve=o((t,e)=>{let r=t.flat(),n=[];for(let i of r){if(i.label&&(i.label=Wrt(i.label)),i.type==="classDef"){Yrt(i.id,i.css);continue}if(i.type==="applyClass"){Xrt(i.id,i?.styleClass??"");continue}if(i.type==="applyStyles"){i?.stylesStr&&qrt(i.id,i?.stylesStr);continue}if(i.type==="column-setting")e.columns=i.columns??-1;else if(i.type==="edge"){let a=(KB.get(i.id)??0)+1;KB.set(i.id,a),i.id=a+"-"+i.id,QB.push(i)}else{i.label||(i.type==="composite"?i.label="":i.label=i.id);let a=ql.get(i.id);if(a===void 0?ql.set(i.id,i):(i.type!=="na"&&(a.type=i.type),i.label!==i.id&&(a.label=i.label)),i.children&&eve(i.children,i),i.type==="space"){let s=i.width??1;for(let l=0;l{Y.debug("Clear called"),_r(),pb={id:"root",type:"composite",children:[],columns:-1},ql=new Map([["root",pb]]),ZB=[],K6=new Map,QB=[],KB=new Map},"clear");o(Krt,"typeStr2Type");o(Qrt,"edgeTypeStr2Type");o(Zrt,"edgeStrToEdgeData");Zye=0,Jrt=o(()=>(Zye++,"id-"+Math.random().toString(36).substr(2,12)+"-"+Zye),"generateId"),ent=o(t=>{pb.children=t,eve(t,pb),ZB=pb.children},"setHierarchy"),tnt=o(t=>{let e=ql.get(t);return e?e.columns?e.columns:e.children?e.children.length:-1:-1},"getColumns"),rnt=o(()=>[...ql.values()],"getBlocksFlat"),nnt=o(()=>ZB||[],"getBlocks"),int=o(()=>QB,"getEdges"),ant=o(t=>ql.get(t),"getBlock"),snt=o(t=>{ql.set(t.id,t)},"setBlock"),ont=o(()=>console,"getLogger"),lnt=o(function(){return K6},"getClasses"),cnt={getConfig:o(()=>Sr().block,"getConfig"),typeStr2Type:Krt,edgeTypeStr2Type:Qrt,edgeStrToEdgeData:Zrt,getLogger:ont,getBlocksFlat:rnt,getBlocks:nnt,getEdges:int,setHierarchy:ent,getBlock:ant,setBlock:snt,getColumns:tnt,getClasses:lnt,clear:jrt,generateId:Jrt},tve=cnt});var Q6,unt,nve,ive=M(()=>{"use strict";To();Q6=o((t,e)=>{let r=z1,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return Hs(n,i,a,e)},"fade"),unt=o(t=>`.label { +Expecting `+Z.join(", ")+", got '"+(this.terminals_[ie]||ie)+"'":Se="Parse error on line "+(k+1)+": Unexpected "+(ie==N?"end of input":"'"+(this.terminals_[ie]||ie)+"'"),this.parseError(Se,{text:F.match,token:this.terminals_[ie]||ie,line:F.yylineno,loc:z,expected:Z})}if(he[0]instanceof Array&&he.length>1)throw new Error("Parse Error: multiple actions possible at state: "+le+", token: "+ie);switch(he[0]){case 1:E.push(ie),S.push(F.yytext),_.push(F.yylloc),E.push(he[1]),ie=null,ne?(ie=ne,ne=null):(L=F.yyleng,D=F.yytext,k=F.yylineno,z=F.yylloc,R>0&&R--);break;case 2:if(se=this.productions_[he[1]][1],te.$=S[S.length-se],te._$={first_line:_[_.length-(se||1)].first_line,last_line:_[_.length-1].last_line,first_column:_[_.length-(se||1)].first_column,last_column:_[_.length-1].last_column},H&&(te._$.range=[_[_.length-(se||1)].range[0],_[_.length-1].range[1]]),X=this.performAction.apply(te,[D,L,k,P.yy,he[1],S,_].concat(B)),typeof X<"u")return X;se&&(E=E.slice(0,-1*se*2),S=S.slice(0,-1*se),_=_.slice(0,-1*se)),E.push(this.productions_[he[1]][0]),S.push(te.$),_.push(te._$),ue=I[E[E.length-2]][E[E.length-1]],E.push(ue);break;case 3:return!0}}return!0},"parse")},x=function(){var w={EOF:1,parseError:o(function(T,E){if(this.yy.parser)this.yy.parser.parseError(T,E);else throw new Error(T)},"parseError"),setInput:o(function(C,T){return this.yy=T||this.yy||{},this._input=C,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var C=this._input[0];this.yytext+=C,this.yyleng++,this.offset++,this.match+=C,this.matched+=C;var T=C.match(/(?:\r\n?|\n).*/g);return T?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),C},"input"),unput:o(function(C){var T=C.length,E=C.split(/(?:\r\n?|\n)/g);this._input=C+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-T),this.offset-=T;var A=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),E.length-1&&(this.yylineno-=E.length-1);var S=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:E?(E.length===A.length?this.yylloc.first_column:0)+A[A.length-E.length].length-E[0].length:this.yylloc.first_column-T},this.options.ranges&&(this.yylloc.range=[S[0],S[0]+this.yyleng-T]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(C){this.unput(this.match.slice(C))},"less"),pastInput:o(function(){var C=this.matched.substr(0,this.matched.length-this.match.length);return(C.length>20?"...":"")+C.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var C=this.match;return C.length<20&&(C+=this._input.substr(0,20-C.length)),(C.substr(0,20)+(C.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var C=this.pastInput(),T=new Array(C.length+1).join("-");return C+this.upcomingInput()+` +`+T+"^"},"showPosition"),test_match:o(function(C,T){var E,A,S;if(this.options.backtrack_lexer&&(S={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(S.yylloc.range=this.yylloc.range.slice(0))),A=C[0].match(/(?:\r\n?|\n).*/g),A&&(this.yylineno+=A.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:A?A[A.length-1].length-A[A.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+C[0].length},this.yytext+=C[0],this.match+=C[0],this.matches=C,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(C[0].length),this.matched+=C[0],E=this.performAction.call(this,this.yy,this,T,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),E)return E;if(this._backtrack){for(var _ in S)this[_]=S[_];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var C,T,E,A;this._more||(this.yytext="",this.match="");for(var S=this._currentRules(),_=0;_T[0].length)){if(T=E,A=_,this.options.backtrack_lexer){if(C=this.test_match(E,S[_]),C!==!1)return C;if(this._backtrack){T=!1;continue}else return!1}else if(!this.options.flex)break}return T?(C=this.test_match(T,S[A]),C!==!1?C:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var T=this.next();return T||this.lex()},"lex"),begin:o(function(T){this.conditionStack.push(T)},"begin"),popState:o(function(){var T=this.conditionStack.length-1;return T>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(T){return T=this.conditionStack.length-1-Math.abs(T||0),T>=0?this.conditionStack[T]:"INITIAL"},"topState"),pushState:o(function(T){this.begin(T)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(T,E,A,S){var _=S;switch(A){case 0:return 10;case 1:return T.getLogger().debug("Found space-block"),31;break;case 2:return T.getLogger().debug("Found nl-block"),31;break;case 3:return T.getLogger().debug("Found space-block"),29;break;case 4:T.getLogger().debug(".",E.yytext);break;case 5:T.getLogger().debug("_",E.yytext);break;case 6:return 5;case 7:return E.yytext=-1,28;break;case 8:return E.yytext=E.yytext.replace(/columns\s+/,""),T.getLogger().debug("COLUMNS (LEX)",E.yytext),28;break;case 9:this.pushState("md_string");break;case 10:return"MD_STR";case 11:this.popState();break;case 12:this.pushState("string");break;case 13:T.getLogger().debug("LEX: POPPING STR:",E.yytext),this.popState();break;case 14:return T.getLogger().debug("LEX: STR end:",E.yytext),"STR";break;case 15:return E.yytext=E.yytext.replace(/space\:/,""),T.getLogger().debug("SPACE NUM (LEX)",E.yytext),21;break;case 16:return E.yytext="1",T.getLogger().debug("COLUMNS (LEX)",E.yytext),21;break;case 17:return 43;case 18:return"LINKSTYLE";case 19:return"INTERPOLATE";case 20:return this.pushState("CLASSDEF"),40;break;case 21:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 22:return this.popState(),this.pushState("CLASSDEFID"),41;break;case 23:return this.popState(),42;break;case 24:return this.pushState("CLASS"),44;break;case 25:return this.popState(),this.pushState("CLASS_STYLE"),45;break;case 26:return this.popState(),46;break;case 27:return this.pushState("STYLE_STMNT"),47;break;case 28:return this.popState(),this.pushState("STYLE_DEFINITION"),48;break;case 29:return this.popState(),49;break;case 30:return this.pushState("acc_title"),"acc_title";break;case 31:return this.popState(),"acc_title_value";break;case 32:return this.pushState("acc_descr"),"acc_descr";break;case 33:return this.popState(),"acc_descr_value";break;case 34:this.pushState("acc_descr_multiline");break;case 35:this.popState();break;case 36:return"acc_descr_multiline_value";case 37:return 30;case 38:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 39:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 40:return this.popState(),T.getLogger().debug("Lex: ))"),"NODE_DEND";break;case 41:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 42:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 43:return this.popState(),T.getLogger().debug("Lex: (-"),"NODE_DEND";break;case 44:return this.popState(),T.getLogger().debug("Lex: -)"),"NODE_DEND";break;case 45:return this.popState(),T.getLogger().debug("Lex: (("),"NODE_DEND";break;case 46:return this.popState(),T.getLogger().debug("Lex: ]]"),"NODE_DEND";break;case 47:return this.popState(),T.getLogger().debug("Lex: ("),"NODE_DEND";break;case 48:return this.popState(),T.getLogger().debug("Lex: ])"),"NODE_DEND";break;case 49:return this.popState(),T.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 50:return this.popState(),T.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 51:return this.popState(),T.getLogger().debug("Lex: )]"),"NODE_DEND";break;case 52:return this.popState(),T.getLogger().debug("Lex: )"),"NODE_DEND";break;case 53:return this.popState(),T.getLogger().debug("Lex: ]>"),"NODE_DEND";break;case 54:return this.popState(),T.getLogger().debug("Lex: ]"),"NODE_DEND";break;case 55:return T.getLogger().debug("Lexa: -)"),this.pushState("NODE"),36;break;case 56:return T.getLogger().debug("Lexa: (-"),this.pushState("NODE"),36;break;case 57:return T.getLogger().debug("Lexa: ))"),this.pushState("NODE"),36;break;case 58:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 59:return T.getLogger().debug("Lex: ((("),this.pushState("NODE"),36;break;case 60:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 61:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 62:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 63:return T.getLogger().debug("Lexc: >"),this.pushState("NODE"),36;break;case 64:return T.getLogger().debug("Lexa: (["),this.pushState("NODE"),36;break;case 65:return T.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 66:return this.pushState("NODE"),36;break;case 67:return this.pushState("NODE"),36;break;case 68:return this.pushState("NODE"),36;break;case 69:return this.pushState("NODE"),36;break;case 70:return this.pushState("NODE"),36;break;case 71:return this.pushState("NODE"),36;break;case 72:return this.pushState("NODE"),36;break;case 73:return T.getLogger().debug("Lexa: ["),this.pushState("NODE"),36;break;case 74:return this.pushState("BLOCK_ARROW"),T.getLogger().debug("LEX ARR START"),38;break;case 75:return T.getLogger().debug("Lex: NODE_ID",E.yytext),32;break;case 76:return T.getLogger().debug("Lex: EOF",E.yytext),8;break;case 77:this.pushState("md_string");break;case 78:this.pushState("md_string");break;case 79:return"NODE_DESCR";case 80:this.popState();break;case 81:T.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 82:T.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 83:return T.getLogger().debug("LEX: NODE_DESCR:",E.yytext),"NODE_DESCR";break;case 84:T.getLogger().debug("LEX POPPING"),this.popState();break;case 85:T.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 86:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (right): dir:",E.yytext),"DIR";break;case 87:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (left):",E.yytext),"DIR";break;case 88:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (x):",E.yytext),"DIR";break;case 89:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (y):",E.yytext),"DIR";break;case 90:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (up):",E.yytext),"DIR";break;case 91:return E.yytext=E.yytext.replace(/^,\s*/,""),T.getLogger().debug("Lex (down):",E.yytext),"DIR";break;case 92:return E.yytext="]>",T.getLogger().debug("Lex (ARROW_DIR end):",E.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";break;case 93:return T.getLogger().debug("Lex: LINK","#"+E.yytext+"#"),15;break;case 94:return T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 95:return T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 96:return T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 97:return T.getLogger().debug("Lex: START_LINK",E.yytext),this.pushState("LLABEL"),16;break;case 98:return T.getLogger().debug("Lex: START_LINK",E.yytext),this.pushState("LLABEL"),16;break;case 99:return T.getLogger().debug("Lex: START_LINK",E.yytext),this.pushState("LLABEL"),16;break;case 100:this.pushState("md_string");break;case 101:return T.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";break;case 102:return this.popState(),T.getLogger().debug("Lex: LINK","#"+E.yytext+"#"),15;break;case 103:return this.popState(),T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 104:return this.popState(),T.getLogger().debug("Lex: LINK",E.yytext),15;break;case 105:return T.getLogger().debug("Lex: COLON",E.yytext),E.yytext=E.yytext.slice(1),27;break}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block\s+)/,/^(?:block\n+)/,/^(?:block:)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[29],inclusive:!1},STYLE_STMNT:{rules:[28],inclusive:!1},CLASSDEFID:{rules:[23],inclusive:!1},CLASSDEF:{rules:[21,22],inclusive:!1},CLASS_STYLE:{rules:[26],inclusive:!1},CLASS:{rules:[25],inclusive:!1},LLABEL:{rules:[100,101,102,103,104],inclusive:!1},ARROW_DIR:{rules:[86,87,88,89,90,91,92],inclusive:!1},BLOCK_ARROW:{rules:[77,82,85],inclusive:!1},NODE:{rules:[38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,78,81],inclusive:!1},md_string:{rules:[10,11,79,80],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[13,14,83,84],inclusive:!1},acc_descr_multiline:{rules:[35,36],inclusive:!1},acc_descr:{rules:[33],inclusive:!1},acc_title:{rules:[31],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,12,15,16,17,18,19,20,24,27,30,32,34,37,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,93,94,95,96,97,98,99,105],inclusive:!0}}};return w}();v.lexer=x;function b(){this.yy={}}return o(b,"Parser"),b.prototype=v,v.Parser=b,new b}();BB.parser=BB;q1e=BB});function WJe(t){switch(Y.debug("typeStr2Type",t),t){case"[]":return"square";case"()":return Y.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function qJe(t){switch(Y.debug("typeStr2Type",t),t){case"==":return"thick";default:return"normal"}}function YJe(t){switch(t.trim()){case"--x":return"arrow_cross";case"--o":return"arrow_circle";default:return"arrow_point"}}var Ul,zB,FB,X1e,j1e,FJe,Q1e,zJe,GS,GJe,$Je,VJe,UJe,Z1e,GB,i4,HJe,K1e,XJe,jJe,KJe,QJe,ZJe,JJe,eet,tet,ret,net,iet,J1e,eye=M(()=>{"use strict";cL();ka();Gt();vt();gr();ki();Ul=new Map,zB=[],FB=new Map,X1e="color",j1e="fill",FJe="bgFill",Q1e=",",zJe=me(),GS=new Map,GJe=o(t=>Ze.sanitizeText(t,zJe),"sanitizeText"),$Je=o(function(t,e=""){let r=GS.get(t);r||(r={id:t,styles:[],textStyles:[]},GS.set(t,r)),e?.split(Q1e).forEach(n=>{let i=n.replace(/([^;]*);/,"$1").trim();if(RegExp(X1e).exec(n)){let s=i.replace(j1e,FJe).replace(X1e,j1e);r.textStyles.push(s)}r.styles.push(i)})},"addStyleClass"),VJe=o(function(t,e=""){let r=Ul.get(t);e!=null&&(r.styles=e.split(Q1e))},"addStyle2Node"),UJe=o(function(t,e){t.split(",").forEach(function(r){let n=Ul.get(r);if(n===void 0){let i=r.trim();n={id:i,type:"na",children:[]},Ul.set(i,n)}n.classes||(n.classes=[]),n.classes.push(e)})},"setCssClass"),Z1e=o((t,e)=>{let r=t.flat(),n=[];for(let i of r){if(i.label&&(i.label=GJe(i.label)),i.type==="classDef"){$Je(i.id,i.css);continue}if(i.type==="applyClass"){UJe(i.id,i?.styleClass??"");continue}if(i.type==="applyStyles"){i?.stylesStr&&VJe(i.id,i?.stylesStr);continue}if(i.type==="column-setting")e.columns=i.columns??-1;else if(i.type==="edge"){let a=(FB.get(i.id)??0)+1;FB.set(i.id,a),i.id=a+"-"+i.id,zB.push(i)}else{i.label||(i.type==="composite"?i.label="":i.label=i.id);let a=Ul.get(i.id);if(a===void 0?Ul.set(i.id,i):(i.type!=="na"&&(a.type=i.type),i.label!==i.id&&(a.label=i.label)),i.children&&Z1e(i.children,i),i.type==="space"){let s=i.width??1;for(let l=0;l{Y.debug("Clear called"),Dr(),i4={id:"root",type:"composite",children:[],columns:-1},Ul=new Map([["root",i4]]),GB=[],GS=new Map,zB=[],FB=new Map},"clear");o(WJe,"typeStr2Type");o(qJe,"edgeTypeStr2Type");o(YJe,"edgeStrToEdgeData");K1e=0,XJe=o(()=>(K1e++,"id-"+Math.random().toString(36).substr(2,12)+"-"+K1e),"generateId"),jJe=o(t=>{i4.children=t,Z1e(t,i4),GB=i4.children},"setHierarchy"),KJe=o(t=>{let e=Ul.get(t);return e?e.columns?e.columns:e.children?e.children.length:-1:-1},"getColumns"),QJe=o(()=>[...Ul.values()],"getBlocksFlat"),ZJe=o(()=>GB||[],"getBlocks"),JJe=o(()=>zB,"getEdges"),eet=o(t=>Ul.get(t),"getBlock"),tet=o(t=>{Ul.set(t.id,t)},"setBlock"),ret=o(()=>console,"getLogger"),net=o(function(){return GS},"getClasses"),iet={getConfig:o(()=>mr().block,"getConfig"),typeStr2Type:WJe,edgeTypeStr2Type:qJe,edgeStrToEdgeData:YJe,getLogger:ret,getBlocksFlat:QJe,getBlocks:ZJe,getEdges:JJe,setHierarchy:jJe,getBlock:eet,setBlock:tet,getColumns:KJe,getClasses:net,clear:HJe,generateId:XJe},J1e=iet});var $S,aet,tye,rye=M(()=>{"use strict";Vs();$S=o((t,e)=>{let r=Yf,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return Wa(n,i,a,e)},"fade"),aet=o(t=>`.label { font-family: ${t.fontFamily}; color: ${t.nodeTextColor||t.textColor}; } @@ -2182,14 +2433,14 @@ Expecting `+te.join(", ")+", got '"+(this.terminals_[ie]||ie)+"'":De="Parse erro /* For html labels only */ .labelBkg { - background-color: ${Q6(t.edgeLabelBackground,.5)}; + background-color: ${$S(t.edgeLabelBackground,.5)}; // background-color: } .node .cluster { - // fill: ${Q6(t.mainBkg,.5)}; - fill: ${Q6(t.clusterBkg,.5)}; - stroke: ${Q6(t.clusterBorder,.2)}; + // fill: ${$S(t.mainBkg,.5)}; + fill: ${$S(t.clusterBkg,.5)}; + stroke: ${$S(t.clusterBorder,.2)}; box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; stroke-width: 1px; } @@ -2224,10 +2475,10 @@ Expecting `+te.join(", ")+", got '"+(this.terminals_[ie]||ie)+"'":De="Parse erro font-size: 18px; fill: ${t.textColor}; } -`,"getStyles"),nve=unt});var hnt,fnt,dnt,pnt,mnt,gnt,ynt,vnt,xnt,bnt,wnt,ave,sve=M(()=>{"use strict";ht();hnt=o((t,e,r,n)=>{e.forEach(i=>{wnt[i](t,r,n)})},"insertMarkers"),fnt=o((t,e,r)=>{Y.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),dnt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),pnt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),mnt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),gnt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),ynt=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),vnt=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),xnt=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),bnt=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),wnt={extension:fnt,composition:dnt,aggregation:pnt,dependency:mnt,lollipop:gnt,point:ynt,circle:vnt,cross:xnt,barb:bnt},ave=hnt});function Tnt(t,e){if(t===0||!Number.isInteger(t))throw new Error("Columns must be an integer !== 0.");if(e<0||!Number.isInteger(e))throw new Error("Position must be a non-negative integer."+e);if(t<0)return{px:e,py:0};if(t===1)return{px:0,py:e};let r=e%t,n=Math.floor(e/t);return{px:r,py:n}}function JB(t,e,r=0,n=0){Y.debug("setBlockSizes abc95 (start)",t.id,t?.size?.x,"block width =",t?.size,"sieblingWidth",r),t?.size?.width||(t.size={width:r,height:n,x:0,y:0});let i=0,a=0;if(t.children?.length>0){for(let m of t.children)JB(m,e);let s=knt(t);i=s.width,a=s.height,Y.debug("setBlockSizes abc95 maxWidth of",t.id,":s children is ",i,a);for(let m of t.children)m.size&&(Y.debug(`abc95 Setting size of children of ${t.id} id=${m.id} ${i} ${a} ${JSON.stringify(m.size)}`),m.size.width=i*(m.widthInColumns??1)+xi*((m.widthInColumns??1)-1),m.size.height=a,m.size.x=0,m.size.y=0,Y.debug(`abc95 updating size of ${t.id} children child:${m.id} maxWidth:${i} maxHeight:${a}`));for(let m of t.children)JB(m,e,i,a);let l=t.columns??-1,u=0;for(let m of t.children)u+=m.widthInColumns??1;let h=t.children.length;l>0&&l0?Math.min(t.children.length,l):t.children.length;if(m>0){let g=(d-m*xi-xi)/m;Y.debug("abc95 (growing to fit) width",t.id,d,t.size?.width,g);for(let y of t.children)y.size&&(y.size.width=g)}}t.size={width:d,height:p,x:0,y:0}}Y.debug("setBlockSizes abc94 (done)",t.id,t?.size?.x,t?.size?.width,t?.size?.y,t?.size?.height)}function ove(t,e){Y.debug(`abc85 layout blocks (=>layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`);let r=t.columns??-1;if(Y.debug("layoutBlocks columns abc95",t.id,"=>",r,t),t.children&&t.children.length>0){let n=t?.children[0]?.size?.width??0,i=t.children.length*n+(t.children.length-1)*xi;Y.debug("widthOfChildren 88",i,"posX");let a=0;Y.debug("abc91 block?.size?.x",t.id,t?.size?.x);let s=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-xi,l=0;for(let u of t.children){let h=t;if(!u.size)continue;let{width:f,height:d}=u.size,{px:p,py:m}=Tnt(r,a);if(m!=l&&(l=m,s=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-xi,Y.debug("New row in layout for block",t.id," and child ",u.id,l)),Y.debug(`abc89 layout blocks (child) id: ${u.id} Pos: ${a} (px, py) ${p},${m} (${h?.size?.x},${h?.size?.y}) parent: ${h.id} width: ${f}${xi}`),h.size){let g=f/2;u.size.x=s+xi+g,Y.debug(`abc91 layout blocks (calc) px, pyid:${u.id} startingPos=X${s} new startingPosX${u.size.x} ${g} padding=${xi} width=${f} halfWidth=${g} => x:${u.size.x} y:${u.size.y} ${u.widthInColumns} (width * (child?.w || 1)) / 2 ${f*(u?.widthInColumns??1)/2}`),s=u.size.x+g,u.size.y=h.size.y-h.size.height/2+m*(d+xi)+d/2+xi,Y.debug(`abc88 layout blocks (calc) px, pyid:${u.id}startingPosX${s}${xi}${g}=>x:${u.size.x}y:${u.size.y}${u.widthInColumns}(width * (child?.w || 1)) / 2${f*(u?.widthInColumns??1)/2}`)}u.children&&ove(u,e),a+=u?.widthInColumns??1,Y.debug("abc88 columnsPos",u,a)}}Y.debug(`layout blocks (<==layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`)}function lve(t,{minX:e,minY:r,maxX:n,maxY:i}={minX:0,minY:0,maxX:0,maxY:0}){if(t.size&&t.id!=="root"){let{x:a,y:s,width:l,height:u}=t.size;a-l/2n&&(n=a+l/2),s+u/2>i&&(i=s+u/2)}if(t.children)for(let a of t.children)({minX:e,minY:r,maxX:n,maxY:i}=lve(a,{minX:e,minY:r,maxX:n,maxY:i}));return{minX:e,minY:r,maxX:n,maxY:i}}function cve(t){let e=t.getBlock("root");if(!e)return;JB(e,t,0,0),ove(e,t),Y.debug("getBlocks",JSON.stringify(e,null,2));let{minX:r,minY:n,maxX:i,maxY:a}=lve(e),s=a-n,l=i-r;return{x:r,y:n,width:l,height:s}}var xi,knt,uve=M(()=>{"use strict";ht();Vt();xi=de()?.block?.padding??8;o(Tnt,"calculateBlockPosition");knt=o(t=>{let e=0,r=0;for(let n of t.children){let{width:i,height:a,x:s,y:l}=n.size??{width:0,height:0,x:0,y:0};Y.debug("getMaxChildSize abc95 child:",n.id,"width:",i,"height:",a,"x:",s,"y:",l,n.type),n.type!=="space"&&(i>e&&(e=i/(t.widthInColumns??1)),a>r&&(r=a))}return{width:e,height:r}},"getMaxChildSize");o(JB,"setBlockSizes");o(ove,"layoutBlocks");o(lve,"findBounds");o(cve,"layout")});function hve(t,e){e&&t.attr("style",e)}function Ent(t){let e=ze(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),n=t.label,i=t.isNode?"nodeLabel":"edgeLabel",a=r.append("span");return a.html(n),hve(a,t.labelStyle),a.attr("class",i),hve(r,t.labelStyle),r.style("display","inline-block"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}var Snt,cs,Z6=M(()=>{"use strict";mr();ht();Vt();fr();hr();Dl();o(hve,"applyStyle");o(Ent,"addHtmlLabel");Snt=o((t,e,r,n)=>{let i=t||"";if(typeof i=="object"&&(i=i[0]),xr(de().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),Y.debug("vertexText"+i);let a={isNode:n,label:x9(Ca(i)),labelStyle:e.replace("fill:","color:")};return Ent(a)}else{let a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",e.replace("color:","fill:"));let s=[];typeof i=="string"?s=i.split(/\\n|\n|/gi):Array.isArray(i)?s=i:s=[];for(let l of s){let u=document.createElementNS("http://www.w3.org/2000/svg","tspan");u.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),u.setAttribute("dy","1em"),u.setAttribute("x","0"),r?u.setAttribute("class","title-row"):u.setAttribute("class","row"),u.textContent=l.trim(),a.appendChild(u)}return a}},"createLabel"),cs=Snt});var dve,Cnt,fve,pve=M(()=>{"use strict";ht();dve=o((t,e,r,n,i)=>{e.arrowTypeStart&&fve(t,"start",e.arrowTypeStart,r,n,i),e.arrowTypeEnd&&fve(t,"end",e.arrowTypeEnd,r,n,i)},"addEdgeMarkers"),Cnt={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},fve=o((t,e,r,n,i,a)=>{let s=Cnt[r];if(!s){Y.warn(`Unknown arrow type: ${r}`);return}let l=e==="start"?"Start":"End";t.attr(`marker-${e}`,`url(${n}#${i}_${a}-${s}${l})`)},"addEdgeMarker")});function J6(t,e){de().flowchart.htmlLabels&&t&&(t.style.width=e.length*9+"px",t.style.height="12px")}var eF,$a,gve,yve,Ant,_nt,mve,vve,xve=M(()=>{"use strict";ht();Z6();Dl();mr();Vt();hr();fr();lL();Cv();pve();eF={},$a={},gve=o((t,e)=>{let r=de(),n=xr(r.flowchart.htmlLabels),i=e.labelType==="markdown"?Si(t,e.label,{style:e.labelStyle,useHtmlLabels:n,addSvgBackground:!0},r):cs(e.label,e.labelStyle),a=t.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label");s.node().appendChild(i);let l=i.getBBox();if(n){let h=i.children[0],f=ze(i);l=h.getBoundingClientRect(),f.attr("width",l.width),f.attr("height",l.height)}s.attr("transform","translate("+-l.width/2+", "+-l.height/2+")"),eF[e.id]=a,e.width=l.width,e.height=l.height;let u;if(e.startLabelLeft){let h=cs(e.startLabelLeft,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),$a[e.id]||($a[e.id]={}),$a[e.id].startLeft=f,J6(u,e.startLabelLeft)}if(e.startLabelRight){let h=cs(e.startLabelRight,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=f.node().appendChild(h),d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),$a[e.id]||($a[e.id]={}),$a[e.id].startRight=f,J6(u,e.startLabelRight)}if(e.endLabelLeft){let h=cs(e.endLabelLeft,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),$a[e.id]||($a[e.id]={}),$a[e.id].endLeft=f,J6(u,e.endLabelLeft)}if(e.endLabelRight){let h=cs(e.endLabelRight,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),$a[e.id]||($a[e.id]={}),$a[e.id].endRight=f,J6(u,e.endLabelRight)}return i},"insertEdgeLabel");o(J6,"setTerminalWidth");yve=o((t,e)=>{Y.debug("Moving label abc88 ",t.id,t.label,eF[t.id],e);let r=e.updatedPath?e.updatedPath:e.originalPath,n=de(),{subGraphTitleTotalMargin:i}=_u(n);if(t.label){let a=eF[t.id],s=t.x,l=t.y;if(r){let u=Ut.calcLabelPosition(r);Y.debug("Moving label "+t.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),e.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(t.startLabelLeft){let a=$a[t.id].startLeft,s=t.x,l=t.y;if(r){let u=Ut.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.startLabelRight){let a=$a[t.id].startRight,s=t.x,l=t.y;if(r){let u=Ut.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelLeft){let a=$a[t.id].endLeft,s=t.x,l=t.y;if(r){let u=Ut.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelRight){let a=$a[t.id].endRight,s=t.x,l=t.y;if(r){let u=Ut.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),Ant=o((t,e)=>{let r=t.x,n=t.y,i=Math.abs(e.x-r),a=Math.abs(e.y-n),s=t.width/2,l=t.height/2;return i>=s||a>=l},"outsideNode"),_nt=o((t,e,r)=>{Y.debug(`intersection calc abc89: +`,"getStyles"),tye=aet});var set,oet,cet,uet,het,fet,det,pet,met,get,yet,nye,iye=M(()=>{"use strict";vt();set=o((t,e,r,n)=>{e.forEach(i=>{yet[i](t,r,n)})},"insertMarkers"),oet=o((t,e,r)=>{Y.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),cet=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),uet=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),het=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),fet=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),det=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),pet=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),met=o((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),get=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),yet={extension:oet,composition:cet,aggregation:uet,dependency:het,lollipop:fet,point:det,circle:pet,cross:met,barb:get},nye=set});function vet(t,e){if(t===0||!Number.isInteger(t))throw new Error("Columns must be an integer !== 0.");if(e<0||!Number.isInteger(e))throw new Error("Position must be a non-negative integer."+e);if(t<0)return{px:e,py:0};if(t===1)return{px:0,py:e};let r=e%t,n=Math.floor(e/t);return{px:r,py:n}}function $B(t,e,r=0,n=0){Y.debug("setBlockSizes abc95 (start)",t.id,t?.size?.x,"block width =",t?.size,"sieblingWidth",r),t?.size?.width||(t.size={width:r,height:n,x:0,y:0});let i=0,a=0;if(t.children?.length>0){for(let m of t.children)$B(m,e);let s=xet(t);i=s.width,a=s.height,Y.debug("setBlockSizes abc95 maxWidth of",t.id,":s children is ",i,a);for(let m of t.children)m.size&&(Y.debug(`abc95 Setting size of children of ${t.id} id=${m.id} ${i} ${a} ${JSON.stringify(m.size)}`),m.size.width=i*(m.widthInColumns??1)+yi*((m.widthInColumns??1)-1),m.size.height=a,m.size.x=0,m.size.y=0,Y.debug(`abc95 updating size of ${t.id} children child:${m.id} maxWidth:${i} maxHeight:${a}`));for(let m of t.children)$B(m,e,i,a);let l=t.columns??-1,u=0;for(let m of t.children)u+=m.widthInColumns??1;let h=t.children.length;l>0&&l0?Math.min(t.children.length,l):t.children.length;if(m>0){let g=(d-m*yi-yi)/m;Y.debug("abc95 (growing to fit) width",t.id,d,t.size?.width,g);for(let y of t.children)y.size&&(y.size.width=g)}}t.size={width:d,height:p,x:0,y:0}}Y.debug("setBlockSizes abc94 (done)",t.id,t?.size?.x,t?.size?.width,t?.size?.y,t?.size?.height)}function aye(t,e){Y.debug(`abc85 layout blocks (=>layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`);let r=t.columns??-1;if(Y.debug("layoutBlocks columns abc95",t.id,"=>",r,t),t.children&&t.children.length>0){let n=t?.children[0]?.size?.width??0,i=t.children.length*n+(t.children.length-1)*yi;Y.debug("widthOfChildren 88",i,"posX");let a=0;Y.debug("abc91 block?.size?.x",t.id,t?.size?.x);let s=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-yi,l=0;for(let u of t.children){let h=t;if(!u.size)continue;let{width:f,height:d}=u.size,{px:p,py:m}=vet(r,a);if(m!=l&&(l=m,s=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-yi,Y.debug("New row in layout for block",t.id," and child ",u.id,l)),Y.debug(`abc89 layout blocks (child) id: ${u.id} Pos: ${a} (px, py) ${p},${m} (${h?.size?.x},${h?.size?.y}) parent: ${h.id} width: ${f}${yi}`),h.size){let g=f/2;u.size.x=s+yi+g,Y.debug(`abc91 layout blocks (calc) px, pyid:${u.id} startingPos=X${s} new startingPosX${u.size.x} ${g} padding=${yi} width=${f} halfWidth=${g} => x:${u.size.x} y:${u.size.y} ${u.widthInColumns} (width * (child?.w || 1)) / 2 ${f*(u?.widthInColumns??1)/2}`),s=u.size.x+g,u.size.y=h.size.y-h.size.height/2+m*(d+yi)+d/2+yi,Y.debug(`abc88 layout blocks (calc) px, pyid:${u.id}startingPosX${s}${yi}${g}=>x:${u.size.x}y:${u.size.y}${u.widthInColumns}(width * (child?.w || 1)) / 2${f*(u?.widthInColumns??1)/2}`)}u.children&&aye(u,e),a+=u?.widthInColumns??1,Y.debug("abc88 columnsPos",u,a)}}Y.debug(`layout blocks (<==layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`)}function sye(t,{minX:e,minY:r,maxX:n,maxY:i}={minX:0,minY:0,maxX:0,maxY:0}){if(t.size&&t.id!=="root"){let{x:a,y:s,width:l,height:u}=t.size;a-l/2n&&(n=a+l/2),s+u/2>i&&(i=s+u/2)}if(t.children)for(let a of t.children)({minX:e,minY:r,maxX:n,maxY:i}=sye(a,{minX:e,minY:r,maxX:n,maxY:i}));return{minX:e,minY:r,maxX:n,maxY:i}}function oye(t){let e=t.getBlock("root");if(!e)return;$B(e,t,0,0),aye(e,t),Y.debug("getBlocks",JSON.stringify(e,null,2));let{minX:r,minY:n,maxX:i,maxY:a}=sye(e),s=a-n,l=i-r;return{x:r,y:n,width:l,height:s}}var yi,xet,lye=M(()=>{"use strict";vt();Gt();yi=me()?.block?.padding??8;o(vet,"calculateBlockPosition");xet=o(t=>{let e=0,r=0;for(let n of t.children){let{width:i,height:a,x:s,y:l}=n.size??{width:0,height:0,x:0,y:0};Y.debug("getMaxChildSize abc95 child:",n.id,"width:",i,"height:",a,"x:",s,"y:",l,n.type),n.type!=="space"&&(i>e&&(e=i/(t.widthInColumns??1)),a>r&&(r=a))}return{width:e,height:r}},"getMaxChildSize");o($B,"setBlockSizes");o(aye,"layoutBlocks");o(sye,"findBounds");o(oye,"layout")});function cye(t,e){e&&t.attr("style",e)}function bet(t){let e=$e(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),n=t.label,i=t.isNode?"nodeLabel":"edgeLabel",a=r.append("span");return a.html(n),cye(a,t.labelStyle),a.attr("class",i),cye(r,t.labelStyle),r.style("display","inline-block"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}var wet,ds,VS=M(()=>{"use strict";hr();vt();Gt();gr();sr();Ks();o(cye,"applyStyle");o(bet,"addHtmlLabel");wet=o((t,e,r,n)=>{let i=t||"";if(typeof i=="object"&&(i=i[0]),ur(me().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),Y.debug("vertexText"+i);let a={isNode:n,label:TD(ta(i)),labelStyle:e.replace("fill:","color:")};return bet(a)}else{let a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",e.replace("color:","fill:"));let s=[];typeof i=="string"?s=i.split(/\\n|\n|/gi):Array.isArray(i)?s=i:s=[];for(let l of s){let u=document.createElementNS("http://www.w3.org/2000/svg","tspan");u.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),u.setAttribute("dy","1em"),u.setAttribute("x","0"),r?u.setAttribute("class","title-row"):u.setAttribute("class","row"),u.textContent=l.trim(),a.appendChild(u)}return a}},"createLabel"),ds=wet});var hye,Tet,uye,fye=M(()=>{"use strict";vt();hye=o((t,e,r,n,i)=>{e.arrowTypeStart&&uye(t,"start",e.arrowTypeStart,r,n,i),e.arrowTypeEnd&&uye(t,"end",e.arrowTypeEnd,r,n,i)},"addEdgeMarkers"),Tet={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},uye=o((t,e,r,n,i,a)=>{let s=Tet[r];if(!s){Y.warn(`Unknown arrow type: ${r}`);return}let l=e==="start"?"Start":"End";t.attr(`marker-${e}`,`url(${n}#${i}_${a}-${s}${l})`)},"addEdgeMarker")});function US(t,e){me().flowchart.htmlLabels&&t&&(t.style.width=e.length*9+"px",t.style.height="12px")}var VB,Va,pye,mye,ket,Eet,dye,gye,yye=M(()=>{"use strict";vt();VS();Ks();hr();Gt();sr();gr();qD();o2();fye();VB={},Va={},pye=o((t,e)=>{let r=me(),n=ur(r.flowchart.htmlLabels),i=e.labelType==="markdown"?Hn(t,e.label,{style:e.labelStyle,useHtmlLabels:n,addSvgBackground:!0},r):ds(e.label,e.labelStyle),a=t.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label");s.node().appendChild(i);let l=i.getBBox();if(n){let h=i.children[0],f=$e(i);l=h.getBoundingClientRect(),f.attr("width",l.width),f.attr("height",l.height)}s.attr("transform","translate("+-l.width/2+", "+-l.height/2+")"),VB[e.id]=a,e.width=l.width,e.height=l.height;let u;if(e.startLabelLeft){let h=ds(e.startLabelLeft,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),Va[e.id]||(Va[e.id]={}),Va[e.id].startLeft=f,US(u,e.startLabelLeft)}if(e.startLabelRight){let h=ds(e.startLabelRight,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=f.node().appendChild(h),d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),Va[e.id]||(Va[e.id]={}),Va[e.id].startRight=f,US(u,e.startLabelRight)}if(e.endLabelLeft){let h=ds(e.endLabelLeft,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),Va[e.id]||(Va[e.id]={}),Va[e.id].endLeft=f,US(u,e.endLabelLeft)}if(e.endLabelRight){let h=ds(e.endLabelRight,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),Va[e.id]||(Va[e.id]={}),Va[e.id].endRight=f,US(u,e.endLabelRight)}return i},"insertEdgeLabel");o(US,"setTerminalWidth");mye=o((t,e)=>{Y.debug("Moving label abc88 ",t.id,t.label,VB[t.id],e);let r=e.updatedPath?e.updatedPath:e.originalPath,n=me(),{subGraphTitleTotalMargin:i}=Du(n);if(t.label){let a=VB[t.id],s=t.x,l=t.y;if(r){let u=$t.calcLabelPosition(r);Y.debug("Moving label "+t.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),e.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(t.startLabelLeft){let a=Va[t.id].startLeft,s=t.x,l=t.y;if(r){let u=$t.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.startLabelRight){let a=Va[t.id].startRight,s=t.x,l=t.y;if(r){let u=$t.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelLeft){let a=Va[t.id].endLeft,s=t.x,l=t.y;if(r){let u=$t.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelRight){let a=Va[t.id].endRight,s=t.x,l=t.y;if(r){let u=$t.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),ket=o((t,e)=>{let r=t.x,n=t.y,i=Math.abs(e.x-r),a=Math.abs(e.y-n),s=t.width/2,l=t.height/2;return i>=s||a>=l},"outsideNode"),Eet=o((t,e,r)=>{Y.debug(`intersection calc abc89: outsidePoint: ${JSON.stringify(e)} insidePoint : ${JSON.stringify(r)} - node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);let n=t.x,i=t.y,a=Math.abs(n-r.x),s=t.width/2,l=r.xMath.abs(n-e.x)*u){let d=r.y{Y.debug("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(a=>{if(!Ant(e,a)&&!i){let s=_nt(e,n,a),l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)||r.push(s),i=!0}else n=a,i||r.push(a)}),r},"cutPathAtIntersect"),vve=o(function(t,e,r,n,i,a,s){let l=r.points;Y.debug("abc88 InsertEdge: edge=",r,"e=",e);let u=!1,h=a.node(e.v);var f=a.node(e.w);f?.intersect&&h?.intersect&&(l=l.slice(1,r.points.length-1),l.unshift(h.intersect(l[0])),l.push(f.intersect(l[l.length-1]))),r.toCluster&&(Y.debug("to cluster abc88",n[r.toCluster]),l=mve(r.points,n[r.toCluster].node),u=!0),r.fromCluster&&(Y.debug("from cluster abc88",n[r.fromCluster]),l=mve(l.reverse(),n[r.fromCluster].node).reverse(),u=!0);let d=l.filter(_=>!Number.isNaN(_.y)),p=Do;r.curve&&(i==="graph"||i==="flowchart")&&(p=r.curve);let{x:m,y:g}=Z5(r),y=Ka().x(m).y(g).curve(p),v;switch(r.thickness){case"normal":v="edge-thickness-normal";break;case"thick":v="edge-thickness-thick";break;case"invisible":v="edge-thickness-thick";break;default:v=""}switch(r.pattern){case"solid":v+=" edge-pattern-solid";break;case"dotted":v+=" edge-pattern-dotted";break;case"dashed":v+=" edge-pattern-dashed";break}let x=t.append("path").attr("d",y(d)).attr("id",r.id).attr("class"," "+v+(r.classes?" "+r.classes:"")).attr("style",r.style),b="";(de().flowchart.arrowMarkerAbsolute||de().state.arrowMarkerAbsolute)&&(b=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,b=b.replace(/\(/g,"\\("),b=b.replace(/\)/g,"\\)")),dve(x,r,b,s,i);let w={};return u&&(w.updatedPath=l),w.originalPath=r.points,w},"insertEdge")});var Lnt,bve,wve=M(()=>{"use strict";Lnt=o(t=>{let e=new Set;for(let r of t)switch(r){case"x":e.add("right"),e.add("left");break;case"y":e.add("up"),e.add("down");break;default:e.add(r);break}return e},"expandAndDeduplicateDirections"),bve=o((t,e,r)=>{let n=Lnt(t),i=2,a=e.height+2*r.padding,s=a/i,l=e.width+2*s+r.padding,u=r.padding/2;return n.has("right")&&n.has("left")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:s,y:0},{x:l/2,y:2*u},{x:l-s,y:0},{x:l,y:0},{x:l,y:-a/3},{x:l+2*u,y:-a/2},{x:l,y:-2*a/3},{x:l,y:-a},{x:l-s,y:-a},{x:l/2,y:-a-2*u},{x:s,y:-a},{x:0,y:-a},{x:0,y:-2*a/3},{x:-2*u,y:-a/2},{x:0,y:-a/3}]:n.has("right")&&n.has("left")&&n.has("up")?[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}]:n.has("right")&&n.has("left")&&n.has("down")?[{x:0,y:0},{x:s,y:-a},{x:l-s,y:-a},{x:l,y:0}]:n.has("right")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:l,y:-s},{x:l,y:-a+s},{x:0,y:-a}]:n.has("left")&&n.has("up")&&n.has("down")?[{x:l,y:0},{x:0,y:-s},{x:0,y:-a+s},{x:l,y:-a}]:n.has("right")&&n.has("left")?[{x:s,y:0},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")&&n.has("down")?[{x:l/2,y:0},{x:0,y:-u},{x:s,y:-u},{x:s,y:-a+u},{x:0,y:-a+u},{x:l/2,y:-a},{x:l,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u},{x:l,y:-u}]:n.has("right")&&n.has("up")?[{x:0,y:0},{x:l,y:-s},{x:0,y:-a}]:n.has("right")&&n.has("down")?[{x:0,y:0},{x:l,y:0},{x:0,y:-a}]:n.has("left")&&n.has("up")?[{x:l,y:0},{x:0,y:-s},{x:l,y:-a}]:n.has("left")&&n.has("down")?[{x:l,y:0},{x:0,y:0},{x:l,y:-a}]:n.has("right")?[{x:s,y:-u},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a+u}]:n.has("left")?[{x:s,y:0},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")?[{x:s,y:-u},{x:s,y:-a+u},{x:0,y:-a+u},{x:l/2,y:-a},{x:l,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u}]:n.has("down")?[{x:l/2,y:0},{x:0,y:-u},{x:s,y:-u},{x:s,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u},{x:l,y:-u}]:[{x:0,y:0}]},"getArrowPoints")});function Dnt(t,e){return t.intersect(e)}var Tve,kve=M(()=>{"use strict";o(Dnt,"intersectNode");Tve=Dnt});function Nnt(t,e,r,n){var i=t.x,a=t.y,s=i-n.x,l=a-n.y,u=Math.sqrt(e*e*l*l+r*r*s*s),h=Math.abs(e*r*s/u);n.x{"use strict";o(Nnt,"intersectEllipse");eS=Nnt});function Rnt(t,e,r){return eS(t,e,e,r)}var Eve,Sve=M(()=>{"use strict";tF();o(Rnt,"intersectCircle");Eve=Rnt});function Mnt(t,e,r,n){var i,a,s,l,u,h,f,d,p,m,g,y,v,x,b;if(i=e.y-t.y,s=t.x-e.x,u=e.x*t.y-t.x*e.y,p=i*r.x+s*r.y+u,m=i*n.x+s*n.y+u,!(p!==0&&m!==0&&Cve(p,m))&&(a=n.y-r.y,l=r.x-n.x,h=n.x*r.y-r.x*n.y,f=a*t.x+l*t.y+h,d=a*e.x+l*e.y+h,!(f!==0&&d!==0&&Cve(f,d))&&(g=i*l-a*s,g!==0)))return y=Math.abs(g/2),v=s*h-l*u,x=v<0?(v-y)/g:(v+y)/g,v=a*u-i*h,b=v<0?(v-y)/g:(v+y)/g,{x,y:b}}function Cve(t,e){return t*e>0}var Ave,_ve=M(()=>{"use strict";o(Mnt,"intersectLine");o(Cve,"sameSign");Ave=Mnt});function Int(t,e,r){var n=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof e.forEach=="function"?e.forEach(function(g){s=Math.min(s,g.x),l=Math.min(l,g.y)}):(s=Math.min(s,e.x),l=Math.min(l,e.y));for(var u=n-t.width/2-s,h=i-t.height/2-l,f=0;f1&&a.sort(function(g,y){var v=g.x-r.x,x=g.y-r.y,b=Math.sqrt(v*v+x*x),w=y.x-r.x,_=y.y-r.y,T=Math.sqrt(w*w+_*_);return b{"use strict";_ve();Lve=Int;o(Int,"intersectPolygon")});var Ont,Nve,Rve=M(()=>{"use strict";Ont=o((t,e)=>{var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),Nve=Ont});var Rn,rF=M(()=>{"use strict";kve();Sve();tF();Dve();Rve();Rn={node:Tve,circle:Eve,ellipse:eS,polygon:Lve,rect:Nve}});function Xl(t,e,r,n){return t.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}var _i,qn,nF=M(()=>{"use strict";Z6();Dl();Vt();mr();fr();hr();_i=o(async(t,e,r,n)=>{let i=de(),a,s=e.useHtmlLabels||xr(i.flowchart.htmlLabels);r?a=r:a="node default";let l=t.insert("g").attr("class",a).attr("id",e.domId||e.id),u=l.insert("g").attr("class","label").attr("style",e.labelStyle),h;e.labelText===void 0?h="":h=typeof e.labelText=="string"?e.labelText:e.labelText[0];let f=u.node(),d;e.labelType==="markdown"?d=Si(u,Tr(Ca(h),i),{useHtmlLabels:s,width:e.width||i.flowchart.wrappingWidth,classes:"markdown-node-label"},i):d=f.appendChild(cs(Tr(Ca(h),i),e.labelStyle,!1,n));let p=d.getBBox(),m=e.padding/2;if(xr(i.flowchart.htmlLabels)){let g=d.children[0],y=ze(d),v=g.getElementsByTagName("img");if(v){let x=h.replace(/]*>/g,"").trim()==="";await Promise.all([...v].map(b=>new Promise(w=>{function _(){if(b.style.display="flex",b.style.flexDirection="column",x){let T=i.fontSize?i.fontSize:window.getComputedStyle(document.body).fontSize,L=parseInt(T,10)*5+"px";b.style.minWidth=L,b.style.maxWidth=L}else b.style.width="100%";w(b)}o(_,"setupImage"),setTimeout(()=>{b.complete&&_()}),b.addEventListener("error",_),b.addEventListener("load",_)})))}p=g.getBoundingClientRect(),y.attr("width",p.width),y.attr("height",p.height)}return s?u.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"):u.attr("transform","translate(0, "+-p.height/2+")"),e.centerLabel&&u.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),u.insert("rect",":first-child"),{shapeSvg:l,bbox:p,halfPadding:m,label:u}},"labelHelper"),qn=o((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds");o(Xl,"insertPolygonShape")});var Pnt,Mve,Ive=M(()=>{"use strict";nF();ht();Vt();rF();Pnt=o(async(t,e)=>{e.useHtmlLabels||de().flowchart.htmlLabels||(e.centerLabel=!0);let{shapeSvg:n,bbox:i,halfPadding:a}=await _i(t,e,"node "+e.classes,!0);Y.info("Classes = ",e.classes);let s=n.insert("rect",":first-child");return s.attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),qn(e,s),e.intersect=function(l){return Rn.rect(e,l)},n},"note"),Mve=Pnt});function iF(t,e,r,n){let i=[],a=o(l=>{i.push(l,0)},"addBorder"),s=o(l=>{i.push(0,l)},"skipBorder");e.includes("t")?(Y.debug("add top border"),a(r)):s(r),e.includes("r")?(Y.debug("add right border"),a(n)):s(n),e.includes("b")?(Y.debug("add bottom border"),a(r)):s(r),e.includes("l")?(Y.debug("add left border"),a(n)):s(n),t.attr("stroke-dasharray",i.join(" "))}var Ove,go,Pve,Bnt,Fnt,znt,Gnt,$nt,Vnt,Unt,Hnt,Wnt,Ynt,qnt,Xnt,jnt,Knt,Qnt,Znt,Jnt,eit,tit,Bve,rit,nit,Fve,tS,aF,zve,Gve=M(()=>{"use strict";mr();Vt();fr();ht();wve();Z6();rF();Ive();nF();Ove=o(t=>t?" "+t:"","formatClass"),go=o((t,e)=>`${e||"node default"}${Ove(t.classes)} ${Ove(t.class)}`,"getClassesFromNode"),Pve=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,go(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=i+a,l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];Y.info("Question main (Circle)");let u=Xl(r,s,s,l);return u.attr("style",e.style),qn(e,u),e.intersect=function(h){return Y.warn("Intersect called"),Rn.polygon(e,l,h)},r},"question"),Bnt=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=28,i=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return r.insert("polygon",":first-child").attr("points",i.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(s){return Rn.circle(e,14,s)},r},"choice"),Fnt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,go(e,void 0),!0),i=4,a=n.height+e.padding,s=a/i,l=n.width+2*s+e.padding,u=[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}],h=Xl(r,l,a,u);return h.attr("style",e.style),qn(e,h),e.intersect=function(f){return Rn.polygon(e,u,f)},r},"hexagon"),znt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,void 0,!0),i=2,a=n.height+2*e.padding,s=a/i,l=n.width+2*s+e.padding,u=bve(e.directions,n,e),h=Xl(r,l,a,u);return h.attr("style",e.style),qn(e,h),e.intersect=function(f){return Rn.polygon(e,u,f)},r},"block_arrow"),Gnt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,go(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-a/2,y:0},{x:i,y:0},{x:i,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}];return Xl(r,i,a,s).attr("style",e.style),e.width=i+a,e.height=a,e.intersect=function(u){return Rn.polygon(e,s,u)},r},"rect_left_inv_arrow"),$nt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,go(e),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-2*a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:a/6,y:-a}],l=Xl(r,i,a,s);return l.attr("style",e.style),qn(e,l),e.intersect=function(u){return Rn.polygon(e,s,u)},r},"lean_right"),Vnt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,go(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:2*a/6,y:0},{x:i+a/6,y:0},{x:i-2*a/6,y:-a},{x:-a/6,y:-a}],l=Xl(r,i,a,s);return l.attr("style",e.style),qn(e,l),e.intersect=function(u){return Rn.polygon(e,s,u)},r},"lean_left"),Unt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,go(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-2*a/6,y:0},{x:i+2*a/6,y:0},{x:i-a/6,y:-a},{x:a/6,y:-a}],l=Xl(r,i,a,s);return l.attr("style",e.style),qn(e,l),e.intersect=function(u){return Rn.polygon(e,s,u)},r},"trapezoid"),Hnt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,go(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:-2*a/6,y:-a}],l=Xl(r,i,a,s);return l.attr("style",e.style),qn(e,l),e.intersect=function(u){return Rn.polygon(e,s,u)},r},"inv_trapezoid"),Wnt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,go(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:0,y:0},{x:i+a/2,y:0},{x:i,y:-a/2},{x:i+a/2,y:-a},{x:0,y:-a}],l=Xl(r,i,a,s);return l.attr("style",e.style),qn(e,l),e.intersect=function(u){return Rn.polygon(e,s,u)},r},"rect_right_inv_arrow"),Ynt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,go(e,void 0),!0),i=n.width+e.padding,a=i/2,s=a/(2.5+i/50),l=n.height+s+e.padding,u="M 0,"+s+" a "+a+","+s+" 0,0,0 "+i+" 0 a "+a+","+s+" 0,0,0 "+-i+" 0 l 0,"+l+" a "+a+","+s+" 0,0,0 "+i+" 0 l 0,"+-l,h=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",e.style).attr("d",u).attr("transform","translate("+-i/2+","+-(l/2+s)+")");return qn(e,h),e.intersect=function(f){let d=Rn.rect(e,f),p=d.x-e.x;if(a!=0&&(Math.abs(p)e.height/2-s)){let m=s*s*(1-p*p/(a*a));m!=0&&(m=Math.sqrt(m)),m=s-m,f.y-e.y>0&&(m=-m),d.y+=m}return d},r},"cylinder"),qnt=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await _i(t,e,"node "+e.classes+" "+e.class,!0),a=r.insert("rect",":first-child"),s=e.positioned?e.width:n.width+e.padding,l=e.positioned?e.height:n.height+e.padding,u=e.positioned?-s/2:-n.width/2-i,h=e.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),e.props){let f=new Set(Object.keys(e.props));e.props.borders&&(iF(a,e.props.borders,s,l),f.delete("borders")),f.forEach(d=>{Y.warn(`Unknown node property ${d}`)})}return qn(e,a),e.intersect=function(f){return Rn.rect(e,f)},r},"rect"),Xnt=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await _i(t,e,"node "+e.classes,!0),a=r.insert("rect",":first-child"),s=e.positioned?e.width:n.width+e.padding,l=e.positioned?e.height:n.height+e.padding,u=e.positioned?-s/2:-n.width/2-i,h=e.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic cluster composite label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),e.props){let f=new Set(Object.keys(e.props));e.props.borders&&(iF(a,e.props.borders,s,l),f.delete("borders")),f.forEach(d=>{Y.warn(`Unknown node property ${d}`)})}return qn(e,a),e.intersect=function(f){return Rn.rect(e,f)},r},"composite"),jnt=o(async(t,e)=>{let{shapeSvg:r}=await _i(t,e,"label",!0);Y.trace("Classes = ",e.class);let n=r.insert("rect",":first-child"),i=0,a=0;if(n.attr("width",i).attr("height",a),r.attr("class","label edgeLabel"),e.props){let s=new Set(Object.keys(e.props));e.props.borders&&(iF(n,e.props.borders,i,a),s.delete("borders")),s.forEach(l=>{Y.warn(`Unknown node property ${l}`)})}return qn(e,n),e.intersect=function(s){return Rn.rect(e,s)},r},"labelRect");o(iF,"applyNodePropertyBorders");Knt=o((t,e)=>{let r;e.classes?r="node "+e.classes:r="node default";let n=t.insert("g").attr("class",r).attr("id",e.domId||e.id),i=n.insert("rect",":first-child"),a=n.insert("line"),s=n.insert("g").attr("class","label"),l=e.labelText.flat?e.labelText.flat():e.labelText,u="";typeof l=="object"?u=l[0]:u=l,Y.info("Label text abc79",u,l,typeof l=="object");let h=s.node().appendChild(cs(u,e.labelStyle,!0,!0)),f={width:0,height:0};if(xr(de().flowchart.htmlLabels)){let y=h.children[0],v=ze(h);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height)}Y.info("Text 2",l);let d=l.slice(1,l.length),p=h.getBBox(),m=s.node().appendChild(cs(d.join?d.join("
    "):d,e.labelStyle,!0,!0));if(xr(de().flowchart.htmlLabels)){let y=m.children[0],v=ze(m);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height)}let g=e.padding/2;return ze(m).attr("transform","translate( "+(f.width>p.width?0:(p.width-f.width)/2)+", "+(p.height+g+5)+")"),ze(h).attr("transform","translate( "+(f.width{let{shapeSvg:r,bbox:n}=await _i(t,e,go(e,void 0),!0),i=n.height+e.padding,a=n.width+i/4+e.padding,s=r.insert("rect",":first-child").attr("style",e.style).attr("rx",i/2).attr("ry",i/2).attr("x",-a/2).attr("y",-i/2).attr("width",a).attr("height",i);return qn(e,s),e.intersect=function(l){return Rn.rect(e,l)},r},"stadium"),Znt=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await _i(t,e,go(e,void 0),!0),a=r.insert("circle",":first-child");return a.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i).attr("width",n.width+e.padding).attr("height",n.height+e.padding),Y.info("Circle main"),qn(e,a),e.intersect=function(s){return Y.info("Circle intersect",e,n.width/2+i,s),Rn.circle(e,n.width/2+i,s)},r},"circle"),Jnt=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await _i(t,e,go(e,void 0),!0),a=5,s=r.insert("g",":first-child"),l=s.insert("circle"),u=s.insert("circle");return s.attr("class",e.class),l.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i+a).attr("width",n.width+e.padding+a*2).attr("height",n.height+e.padding+a*2),u.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i).attr("width",n.width+e.padding).attr("height",n.height+e.padding),Y.info("DoubleCircle main"),qn(e,l),e.intersect=function(h){return Y.info("DoubleCircle intersect",e,n.width/2+i+a,h),Rn.circle(e,n.width/2+i+a,h)},r},"doublecircle"),eit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,go(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:0,y:0},{x:i,y:0},{x:i,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:i+8,y:0},{x:i+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],l=Xl(r,i,a,s);return l.attr("style",e.style),qn(e,l),e.intersect=function(u){return Rn.polygon(e,s,u)},r},"subroutine"),tit=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=r.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),qn(e,n),e.intersect=function(i){return Rn.circle(e,7,i)},r},"start"),Bve=o((t,e,r)=>{let n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=70,a=10;r==="LR"&&(i=10,a=70);let s=n.append("rect").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return qn(e,s),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(l){return Rn.rect(e,l)},n},"forkJoin"),rit=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=r.insert("circle",":first-child"),i=r.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),qn(e,i),e.intersect=function(a){return Rn.circle(e,7,a)},r},"end"),nit=o((t,e)=>{let r=e.padding/2,n=4,i=8,a;e.classes?a="node "+e.classes:a="node default";let s=t.insert("g").attr("class",a).attr("id",e.domId||e.id),l=s.insert("rect",":first-child"),u=s.insert("line"),h=s.insert("line"),f=0,d=n,p=s.insert("g").attr("class","label"),m=0,g=e.classData.annotations?.[0],y=e.classData.annotations[0]?"\xAB"+e.classData.annotations[0]+"\xBB":"",v=p.node().appendChild(cs(y,e.labelStyle,!0,!0)),x=v.getBBox();if(xr(de().flowchart.htmlLabels)){let C=v.children[0],A=ze(v);x=C.getBoundingClientRect(),A.attr("width",x.width),A.attr("height",x.height)}e.classData.annotations[0]&&(d+=x.height+n,f+=x.width);let b=e.classData.label;e.classData.type!==void 0&&e.classData.type!==""&&(de().flowchart.htmlLabels?b+="<"+e.classData.type+">":b+="<"+e.classData.type+">");let w=p.node().appendChild(cs(b,e.labelStyle,!0,!0));ze(w).attr("class","classTitle");let _=w.getBBox();if(xr(de().flowchart.htmlLabels)){let C=w.children[0],A=ze(w);_=C.getBoundingClientRect(),A.attr("width",_.width),A.attr("height",_.height)}d+=_.height+n,_.width>f&&(f=_.width);let T=[];e.classData.members.forEach(C=>{let A=C.getDisplayDetails(),I=A.displayText;de().flowchart.htmlLabels&&(I=I.replace(//g,">"));let D=p.node().appendChild(cs(I,A.cssStyle?A.cssStyle:e.labelStyle,!0,!0)),k=D.getBBox();if(xr(de().flowchart.htmlLabels)){let R=D.children[0],S=ze(D);k=R.getBoundingClientRect(),S.attr("width",k.width),S.attr("height",k.height)}k.width>f&&(f=k.width),d+=k.height+n,T.push(D)}),d+=i;let E=[];if(e.classData.methods.forEach(C=>{let A=C.getDisplayDetails(),I=A.displayText;de().flowchart.htmlLabels&&(I=I.replace(//g,">"));let D=p.node().appendChild(cs(I,A.cssStyle?A.cssStyle:e.labelStyle,!0,!0)),k=D.getBBox();if(xr(de().flowchart.htmlLabels)){let R=D.children[0],S=ze(D);k=R.getBoundingClientRect(),S.attr("width",k.width),S.attr("height",k.height)}k.width>f&&(f=k.width),d+=k.height+n,E.push(D)}),d+=i,g){let C=(f-x.width)/2;ze(v).attr("transform","translate( "+(-1*f/2+C)+", "+-1*d/2+")"),m=x.height+n}let L=(f-_.width)/2;return ze(w).attr("transform","translate( "+(-1*f/2+L)+", "+(-1*d/2+m)+")"),m+=_.height+n,u.attr("class","divider").attr("x1",-f/2-r).attr("x2",f/2+r).attr("y1",-d/2-r+i+m).attr("y2",-d/2-r+i+m),m+=i,T.forEach(C=>{ze(C).attr("transform","translate( "+-f/2+", "+(-1*d/2+m+i/2)+")");let A=C?.getBBox();m+=(A?.height??0)+n}),m+=i,h.attr("class","divider").attr("x1",-f/2-r).attr("x2",f/2+r).attr("y1",-d/2-r+i+m).attr("y2",-d/2-r+i+m),m+=i,E.forEach(C=>{ze(C).attr("transform","translate( "+-f/2+", "+(-1*d/2+m)+")");let A=C?.getBBox();m+=(A?.height??0)+n}),l.attr("style",e.style).attr("class","outer title-state").attr("x",-f/2-r).attr("y",-(d/2)-r).attr("width",f+e.padding).attr("height",d+e.padding),qn(e,l),e.intersect=function(C){return Rn.rect(e,C)},s},"class_box"),Fve={rhombus:Pve,composite:Xnt,question:Pve,rect:qnt,labelRect:jnt,rectWithTitle:Knt,choice:Bnt,circle:Znt,doublecircle:Jnt,stadium:Qnt,hexagon:Fnt,block_arrow:znt,rect_left_inv_arrow:Gnt,lean_right:$nt,lean_left:Vnt,trapezoid:Unt,inv_trapezoid:Hnt,rect_right_inv_arrow:Wnt,cylinder:Ynt,start:tit,end:rit,note:Mve,subroutine:eit,fork:Bve,join:Bve,class_box:nit},tS={},aF=o(async(t,e,r)=>{let n,i;if(e.link){let a;de().securityLevel==="sandbox"?a="_top":e.linkTarget&&(a=e.linkTarget||"_blank"),n=t.insert("svg:a").attr("xlink:href",e.link).attr("target",a),i=await Fve[e.shape](n,e,r)}else i=await Fve[e.shape](t,e,r),n=i;return e.tooltip&&i.attr("title",e.tooltip),e.class&&i.attr("class","node default "+e.class),tS[e.id]=n,e.haveCallback&&tS[e.id].attr("class",tS[e.id].attr("class")+" clickable"),n},"insertNode"),zve=o(t=>{let e=tS[t.id];Y.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");let r=8,n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-r)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},"positionNode")});function $ve(t,e,r=!1){let n=t,i="default";(n?.classes?.length||0)>0&&(i=(n?.classes??[]).join(" ")),i=i+" flowchart-label";let a=0,s="",l;switch(n.type){case"round":a=5,s="rect";break;case"composite":a=0,s="composite",l=0;break;case"square":s="rect";break;case"diamond":s="question";break;case"hexagon":s="hexagon";break;case"block_arrow":s="block_arrow";break;case"odd":s="rect_left_inv_arrow";break;case"lean_right":s="lean_right";break;case"lean_left":s="lean_left";break;case"trapezoid":s="trapezoid";break;case"inv_trapezoid":s="inv_trapezoid";break;case"rect_left_inv_arrow":s="rect_left_inv_arrow";break;case"circle":s="circle";break;case"ellipse":s="ellipse";break;case"stadium":s="stadium";break;case"subroutine":s="subroutine";break;case"cylinder":s="cylinder";break;case"group":s="rect";break;case"doublecircle":s="doublecircle";break;default:s="rect"}let u=J_(n?.styles??[]),h=n.label,f=n.size??{width:0,height:0,x:0,y:0};return{labelStyle:u.labelStyle,shape:s,labelText:h,rx:a,ry:a,class:i,style:u.style,id:n.id,directions:n.directions,width:f.width,height:f.height,x:f.x,y:f.y,positioned:r,intersect:void 0,type:n.type,padding:l??Sr()?.block?.padding??0}}async function iit(t,e,r){let n=$ve(e,r,!1);if(n.type==="group")return;let i=Sr(),a=await aF(t,n,{config:i}),s=a.node().getBBox(),l=r.getBlock(n.id);l.size={width:s.width,height:s.height,x:0,y:0,node:a},r.setBlock(l),a.remove()}async function ait(t,e,r){let n=$ve(e,r,!0);if(r.getBlock(n.id).type!=="space"){let a=Sr();await aF(t,n,{config:a}),e.intersect=n?.intersect,zve(n)}}async function sF(t,e,r,n){for(let i of e)await n(t,i,r),i.children&&await sF(t,i.children,r,n)}async function Vve(t,e,r){await sF(t,e,r,iit)}async function Uve(t,e,r){await sF(t,e,r,ait)}async function Hve(t,e,r,n,i){let a=new Mr({multigraph:!0,compound:!0});a.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(let s of r)s.size&&a.setNode(s.id,{width:s.size.width,height:s.size.height,intersect:s.intersect});for(let s of e)if(s.start&&s.end){let l=n.getBlock(s.start),u=n.getBlock(s.end);if(l?.size&&u?.size){let h=l.size,f=u.size,d=[{x:h.x,y:h.y},{x:h.x+(f.x-h.x)/2,y:h.y+(f.y-h.y)/2},{x:f.x,y:f.y}];vve(t,{v:s.start,w:s.end,name:s.id},{...s,arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:d,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",a,i),s.label&&(await gve(t,{...s,label:s.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:d,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),yve({...s,x:d[1].x,y:d[1].y},{originalPath:d}))}}}var Wve=M(()=>{"use strict";Ns();Ua();xve();Gve();hr();o($ve,"getNodeFromBlock");o(iit,"calculateBlockSize");o(ait,"insertBlockPositioned");o(sF,"performOperations");o(Vve,"calculateBlockSizes");o(Uve,"insertBlocks");o(Hve,"insertEdges")});var sit,oit,Yve,qve=M(()=>{"use strict";mr();Ua();sve();ht();ni();uve();Wve();sit=o(function(t,e){return e.db.getClasses()},"getClasses"),oit=o(async function(t,e,r,n){let{securityLevel:i,block:a}=Sr(),s=n.db,l;i==="sandbox"&&(l=ze("#i"+e));let u=i==="sandbox"?ze(l.nodes()[0].contentDocument.body):ze("body"),h=i==="sandbox"?u.select(`[id="${e}"]`):ze(`[id="${e}"]`);ave(h,["point","circle","cross"],n.type,e);let d=s.getBlocks(),p=s.getBlocksFlat(),m=s.getEdges(),g=h.insert("g").attr("class","block");await Vve(g,d,s);let y=cve(s);if(await Uve(g,d,s),await Hve(g,m,p,s,e),y){let v=y,x=Math.max(1,Math.round(.125*(v.width/v.height))),b=v.height+x+10,w=v.width+10,{useMaxWidth:_}=a;Zr(h,b,w,!!_),Y.debug("Here Bounds",y,v),h.attr("viewBox",`${v.x-5} ${v.y-5} ${v.width+10} ${v.height+10}`)}},"draw"),Yve={draw:oit,getClasses:sit}});var Xve={};vr(Xve,{diagram:()=>lit});var lit,jve=M(()=>{"use strict";jye();rve();ive();qve();lit={parser:Xye,db:tve,renderer:Yve,styles:nve}});var oF,lF,mb,Zve,cF,us,qc,rS,Jve,fit,gb,e2e,t2e,r2e,n2e,nS,Mf,iS=M(()=>{"use strict";oF={L:"left",R:"right",T:"top",B:"bottom"},lF={L:o(t=>`${t},${t/2} 0,${t} 0,0`,"L"),R:o(t=>`0,${t/2} ${t},0 ${t},${t}`,"R"),T:o(t=>`0,0 ${t},0 ${t/2},${t}`,"T"),B:o(t=>`${t/2},0 ${t},${t} 0,${t}`,"B")},mb={L:o((t,e)=>t-e+2,"L"),R:o((t,e)=>t-2,"R"),T:o((t,e)=>t-e+2,"T"),B:o((t,e)=>t-2,"B")},Zve=o(function(t){return us(t)?t==="L"?"R":"L":t==="T"?"B":"T"},"getOppositeArchitectureDirection"),cF=o(function(t){let e=t;return e==="L"||e==="R"||e==="T"||e==="B"},"isArchitectureDirection"),us=o(function(t){let e=t;return e==="L"||e==="R"},"isArchitectureDirectionX"),qc=o(function(t){let e=t;return e==="T"||e==="B"},"isArchitectureDirectionY"),rS=o(function(t,e){let r=us(t)&&qc(e),n=qc(t)&&us(e);return r||n},"isArchitectureDirectionXY"),Jve=o(function(t){let e=t[0],r=t[1],n=us(e)&&qc(r),i=qc(e)&&us(r);return n||i},"isArchitecturePairXY"),fit=o(function(t){return t!=="LL"&&t!=="RR"&&t!=="TT"&&t!=="BB"},"isValidArchitectureDirectionPair"),gb=o(function(t,e){let r=`${t}${e}`;return fit(r)?r:void 0},"getArchitectureDirectionPair"),e2e=o(function([t,e],r){let n=r[0],i=r[1];return us(n)?qc(i)?[t+(n==="L"?-1:1),e+(i==="T"?1:-1)]:[t+(n==="L"?-1:1),e]:us(i)?[t+(i==="L"?1:-1),e+(n==="T"?1:-1)]:[t,e+(n==="T"?1:-1)]},"shiftPositionByArchitectureDirectionPair"),t2e=o(function(t){return t==="LT"||t==="TL"?[1,1]:t==="BL"||t==="LB"?[1,-1]:t==="BR"||t==="RB"?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),r2e=o(function(t){return t.type==="service"},"isArchitectureService"),n2e=o(function(t){return t.type==="junction"},"isArchitectureJunction"),nS=o(t=>t.data(),"edgeData"),Mf=o(t=>t.data(),"nodeData")});function Li(t){let e=de().architecture;return e?.[t]?e[t]:i2e[t]}var i2e,gr,dit,pit,mit,git,yit,vit,xit,bit,wit,Tit,kit,Eit,Sit,Cit,X0,yb=M(()=>{"use strict";hs();Vt();tE();ki();iS();i2e=ur.architecture,gr=new cf(()=>({nodes:{},groups:{},edges:[],registeredIds:{},config:i2e,dataStructures:void 0,elements:{}})),dit=o(()=>{gr.reset(),_r()},"clear"),pit=o(function({id:t,icon:e,in:r,title:n,iconText:i}){if(gr.records.registeredIds[t]!==void 0)throw new Error(`The service id [${t}] is already in use by another ${gr.records.registeredIds[t]}`);if(r!==void 0){if(t===r)throw new Error(`The service [${t}] cannot be placed within itself`);if(gr.records.registeredIds[r]===void 0)throw new Error(`The service [${t}]'s parent does not exist. Please make sure the parent is created before this service`);if(gr.records.registeredIds[r]==="node")throw new Error(`The service [${t}]'s parent is not a group`)}gr.records.registeredIds[t]="node",gr.records.nodes[t]={id:t,type:"service",icon:e,iconText:i,title:n,edges:[],in:r}},"addService"),mit=o(()=>Object.values(gr.records.nodes).filter(r2e),"getServices"),git=o(function({id:t,in:e}){gr.records.registeredIds[t]="node",gr.records.nodes[t]={id:t,type:"junction",edges:[],in:e}},"addJunction"),yit=o(()=>Object.values(gr.records.nodes).filter(n2e),"getJunctions"),vit=o(()=>Object.values(gr.records.nodes),"getNodes"),xit=o(t=>gr.records.nodes[t],"getNode"),bit=o(function({id:t,icon:e,in:r,title:n}){if(gr.records.registeredIds[t]!==void 0)throw new Error(`The group id [${t}] is already in use by another ${gr.records.registeredIds[t]}`);if(r!==void 0){if(t===r)throw new Error(`The group [${t}] cannot be placed within itself`);if(gr.records.registeredIds[r]===void 0)throw new Error(`The group [${t}]'s parent does not exist. Please make sure the parent is created before this group`);if(gr.records.registeredIds[r]==="node")throw new Error(`The group [${t}]'s parent is not a group`)}gr.records.registeredIds[t]="group",gr.records.groups[t]={id:t,icon:e,title:n,in:r}},"addGroup"),wit=o(()=>Object.values(gr.records.groups),"getGroups"),Tit=o(function({lhsId:t,rhsId:e,lhsDir:r,rhsDir:n,lhsInto:i,rhsInto:a,lhsGroup:s,rhsGroup:l,title:u}){if(!cF(r))throw new Error(`Invalid direction given for left hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${r}`);if(!cF(n))throw new Error(`Invalid direction given for right hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${n}`);if(gr.records.nodes[t]===void 0&&gr.records.groups[t]===void 0)throw new Error(`The left-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(gr.records.nodes[e]===void 0&&gr.records.groups[t]===void 0)throw new Error(`The right-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`);let h=gr.records.nodes[t].in,f=gr.records.nodes[e].in;if(s&&h&&f&&h==f)throw new Error(`The left-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(l&&h&&f&&h==f)throw new Error(`The right-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let d={lhsId:t,lhsDir:r,lhsInto:i,lhsGroup:s,rhsId:e,rhsDir:n,rhsInto:a,rhsGroup:l,title:u};gr.records.edges.push(d),gr.records.nodes[t]&&gr.records.nodes[e]&&(gr.records.nodes[t].edges.push(gr.records.edges[gr.records.edges.length-1]),gr.records.nodes[e].edges.push(gr.records.edges[gr.records.edges.length-1]))},"addEdge"),kit=o(()=>gr.records.edges,"getEdges"),Eit=o(()=>{if(gr.records.dataStructures===void 0){let t=Object.entries(gr.records.nodes).reduce((s,[l,u])=>(s[l]=u.edges.reduce((h,f)=>{if(f.lhsId===l){let d=gb(f.lhsDir,f.rhsDir);d&&(h[d]=f.rhsId)}else{let d=gb(f.rhsDir,f.lhsDir);d&&(h[d]=f.lhsId)}return h},{}),s),{}),e=Object.keys(t)[0],r={[e]:1},n=Object.keys(t).reduce((s,l)=>l===e?s:{...s,[l]:1},{}),i=o(s=>{let l={[s]:[0,0]},u=[s];for(;u.length>0;){let h=u.shift();if(h){r[h]=1,delete n[h];let f=t[h],[d,p]=l[h];Object.entries(f).forEach(([m,g])=>{r[g]||(l[g]=e2e([d,p],m),u.push(g))})}}return l},"BFS"),a=[i(e)];for(;Object.keys(n).length>0;)a.push(i(Object.keys(n)[0]));gr.records.dataStructures={adjList:t,spatialMaps:a}}return gr.records.dataStructures},"getDataStructures"),Sit=o((t,e)=>{gr.records.elements[t]=e},"setElementForId"),Cit=o(t=>gr.records.elements[t],"getElementById"),X0={clear:dit,setDiagramTitle:ln,getDiagramTitle:Jr,setAccTitle:Rr,getAccTitle:Pr,setAccDescription:Br,getAccDescription:Fr,addService:pit,getServices:mit,addJunction:git,getJunctions:yit,getNodes:vit,getNode:xit,addGroup:bit,getGroups:wit,addEdge:Tit,getEdges:kit,setElementForId:Sit,getElementById:Cit,getDataStructures:Eit};o(Li,"getConfigField")});var Ait,a2e,s2e=M(()=>{"use strict";Ng();ht();ox();yb();Ait=o((t,e)=>{lf(t,e),t.groups.map(e.addGroup),t.services.map(r=>e.addService({...r,type:"service"})),t.junctions.map(r=>e.addJunction({...r,type:"junction"})),t.edges.map(e.addEdge)},"populateDb"),a2e={parse:o(async t=>{let e=await Gl("architecture",t);Y.debug(e),Ait(e,X0)},"parse")}});var _it,o2e,l2e=M(()=>{"use strict";_it=o(t=>` + node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);let n=t.x,i=t.y,a=Math.abs(n-r.x),s=t.width/2,l=r.xMath.abs(n-e.x)*u){let d=r.y{Y.debug("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(a=>{if(!ket(e,a)&&!i){let s=Eet(e,n,a),l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)||r.push(s),i=!0}else n=a,i||r.push(a)}),r},"cutPathAtIntersect"),gye=o(function(t,e,r,n,i,a,s){let l=r.points;Y.debug("abc88 InsertEdge: edge=",r,"e=",e);let u=!1,h=a.node(e.v);var f=a.node(e.w);f?.intersect&&h?.intersect&&(l=l.slice(1,r.points.length-1),l.unshift(h.intersect(l[0])),l.push(f.intersect(l[l.length-1]))),r.toCluster&&(Y.debug("to cluster abc88",n[r.toCluster]),l=dye(r.points,n[r.toCluster].node),u=!0),r.fromCluster&&(Y.debug("from cluster abc88",n[r.fromCluster]),l=dye(l.reverse(),n[r.fromCluster].node).reverse(),u=!0);let d=l.filter(C=>!Number.isNaN(C.y)),p=So;r.curve&&(i==="graph"||i==="flowchart")&&(p=r.curve);let{x:m,y:g}=Pw(r),y=vl().x(m).y(g).curve(p),v;switch(r.thickness){case"normal":v="edge-thickness-normal";break;case"thick":v="edge-thickness-thick";break;case"invisible":v="edge-thickness-thick";break;default:v=""}switch(r.pattern){case"solid":v+=" edge-pattern-solid";break;case"dotted":v+=" edge-pattern-dotted";break;case"dashed":v+=" edge-pattern-dashed";break}let x=t.append("path").attr("d",y(d)).attr("id",r.id).attr("class"," "+v+(r.classes?" "+r.classes:"")).attr("style",r.style),b="";(me().flowchart.arrowMarkerAbsolute||me().state.arrowMarkerAbsolute)&&(b=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,b=b.replace(/\(/g,"\\("),b=b.replace(/\)/g,"\\)")),hye(x,r,b,s,i);let w={};return u&&(w.updatedPath=l),w.originalPath=r.points,w},"insertEdge")});var Cet,vye,xye=M(()=>{"use strict";Cet=o(t=>{let e=new Set;for(let r of t)switch(r){case"x":e.add("right"),e.add("left");break;case"y":e.add("up"),e.add("down");break;default:e.add(r);break}return e},"expandAndDeduplicateDirections"),vye=o((t,e,r)=>{let n=Cet(t),i=2,a=e.height+2*r.padding,s=a/i,l=e.width+2*s+r.padding,u=r.padding/2;return n.has("right")&&n.has("left")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:s,y:0},{x:l/2,y:2*u},{x:l-s,y:0},{x:l,y:0},{x:l,y:-a/3},{x:l+2*u,y:-a/2},{x:l,y:-2*a/3},{x:l,y:-a},{x:l-s,y:-a},{x:l/2,y:-a-2*u},{x:s,y:-a},{x:0,y:-a},{x:0,y:-2*a/3},{x:-2*u,y:-a/2},{x:0,y:-a/3}]:n.has("right")&&n.has("left")&&n.has("up")?[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}]:n.has("right")&&n.has("left")&&n.has("down")?[{x:0,y:0},{x:s,y:-a},{x:l-s,y:-a},{x:l,y:0}]:n.has("right")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:l,y:-s},{x:l,y:-a+s},{x:0,y:-a}]:n.has("left")&&n.has("up")&&n.has("down")?[{x:l,y:0},{x:0,y:-s},{x:0,y:-a+s},{x:l,y:-a}]:n.has("right")&&n.has("left")?[{x:s,y:0},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")&&n.has("down")?[{x:l/2,y:0},{x:0,y:-u},{x:s,y:-u},{x:s,y:-a+u},{x:0,y:-a+u},{x:l/2,y:-a},{x:l,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u},{x:l,y:-u}]:n.has("right")&&n.has("up")?[{x:0,y:0},{x:l,y:-s},{x:0,y:-a}]:n.has("right")&&n.has("down")?[{x:0,y:0},{x:l,y:0},{x:0,y:-a}]:n.has("left")&&n.has("up")?[{x:l,y:0},{x:0,y:-s},{x:l,y:-a}]:n.has("left")&&n.has("down")?[{x:l,y:0},{x:0,y:0},{x:l,y:-a}]:n.has("right")?[{x:s,y:-u},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a+u}]:n.has("left")?[{x:s,y:0},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")?[{x:s,y:-u},{x:s,y:-a+u},{x:0,y:-a+u},{x:l/2,y:-a},{x:l,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u}]:n.has("down")?[{x:l/2,y:0},{x:0,y:-u},{x:s,y:-u},{x:s,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u},{x:l,y:-u}]:[{x:0,y:0}]},"getArrowPoints")});function Aet(t,e){return t.intersect(e)}var bye,wye=M(()=>{"use strict";o(Aet,"intersectNode");bye=Aet});function _et(t,e,r,n){var i=t.x,a=t.y,s=i-n.x,l=a-n.y,u=Math.sqrt(e*e*l*l+r*r*s*s),h=Math.abs(e*r*s/u);n.x{"use strict";o(_et,"intersectEllipse");HS=_et});function Det(t,e,r){return HS(t,e,e,r)}var Tye,kye=M(()=>{"use strict";UB();o(Det,"intersectCircle");Tye=Det});function Let(t,e,r,n){var i,a,s,l,u,h,f,d,p,m,g,y,v,x,b;if(i=e.y-t.y,s=t.x-e.x,u=e.x*t.y-t.x*e.y,p=i*r.x+s*r.y+u,m=i*n.x+s*n.y+u,!(p!==0&&m!==0&&Eye(p,m))&&(a=n.y-r.y,l=r.x-n.x,h=n.x*r.y-r.x*n.y,f=a*t.x+l*t.y+h,d=a*e.x+l*e.y+h,!(f!==0&&d!==0&&Eye(f,d))&&(g=i*l-a*s,g!==0)))return y=Math.abs(g/2),v=s*h-l*u,x=v<0?(v-y)/g:(v+y)/g,v=a*u-i*h,b=v<0?(v-y)/g:(v+y)/g,{x,y:b}}function Eye(t,e){return t*e>0}var Sye,Cye=M(()=>{"use strict";o(Let,"intersectLine");o(Eye,"sameSign");Sye=Let});function Ret(t,e,r){var n=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof e.forEach=="function"?e.forEach(function(g){s=Math.min(s,g.x),l=Math.min(l,g.y)}):(s=Math.min(s,e.x),l=Math.min(l,e.y));for(var u=n-t.width/2-s,h=i-t.height/2-l,f=0;f1&&a.sort(function(g,y){var v=g.x-r.x,x=g.y-r.y,b=Math.sqrt(v*v+x*x),w=y.x-r.x,C=y.y-r.y,T=Math.sqrt(w*w+C*C);return b{"use strict";Cye();Aye=Ret;o(Ret,"intersectPolygon")});var Net,Dye,Lye=M(()=>{"use strict";Net=o((t,e)=>{var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),Dye=Net});var In,HB=M(()=>{"use strict";wye();kye();UB();_ye();Lye();In={node:bye,circle:Tye,ellipse:HS,polygon:Aye,rect:Dye}});function Hl(t,e,r,n){return t.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}var _i,Qn,WB=M(()=>{"use strict";VS();Ks();Gt();hr();gr();sr();_i=o(async(t,e,r,n)=>{let i=me(),a,s=e.useHtmlLabels||ur(i.flowchart.htmlLabels);r?a=r:a="node default";let l=t.insert("g").attr("class",a).attr("id",e.domId||e.id),u=l.insert("g").attr("class","label").attr("style",e.labelStyle),h;e.labelText===void 0?h="":h=typeof e.labelText=="string"?e.labelText:e.labelText[0];let f=u.node(),d;e.labelType==="markdown"?d=Hn(u,Tr(ta(h),i),{useHtmlLabels:s,width:e.width||i.flowchart.wrappingWidth,classes:"markdown-node-label"},i):d=f.appendChild(ds(Tr(ta(h),i),e.labelStyle,!1,n));let p=d.getBBox(),m=e.padding/2;if(ur(i.flowchart.htmlLabels)){let g=d.children[0],y=$e(d),v=g.getElementsByTagName("img");if(v){let x=h.replace(/]*>/g,"").trim()==="";await Promise.all([...v].map(b=>new Promise(w=>{function C(){if(b.style.display="flex",b.style.flexDirection="column",x){let T=i.fontSize?i.fontSize:window.getComputedStyle(document.body).fontSize,A=parseInt(T,10)*5+"px";b.style.minWidth=A,b.style.maxWidth=A}else b.style.width="100%";w(b)}o(C,"setupImage"),setTimeout(()=>{b.complete&&C()}),b.addEventListener("error",C),b.addEventListener("load",C)})))}p=g.getBoundingClientRect(),y.attr("width",p.width),y.attr("height",p.height)}return s?u.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"):u.attr("transform","translate(0, "+-p.height/2+")"),e.centerLabel&&u.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),u.insert("rect",":first-child"),{shapeSvg:l,bbox:p,halfPadding:m,label:u}},"labelHelper"),Qn=o((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds");o(Hl,"insertPolygonShape")});var Met,Rye,Nye=M(()=>{"use strict";WB();vt();Gt();HB();Met=o(async(t,e)=>{e.useHtmlLabels||me().flowchart.htmlLabels||(e.centerLabel=!0);let{shapeSvg:n,bbox:i,halfPadding:a}=await _i(t,e,"node "+e.classes,!0);Y.info("Classes = ",e.classes);let s=n.insert("rect",":first-child");return s.attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),Qn(e,s),e.intersect=function(l){return In.rect(e,l)},n},"note"),Rye=Met});function qB(t,e,r,n){let i=[],a=o(l=>{i.push(l,0)},"addBorder"),s=o(l=>{i.push(0,l)},"skipBorder");e.includes("t")?(Y.debug("add top border"),a(r)):s(r),e.includes("r")?(Y.debug("add right border"),a(n)):s(n),e.includes("b")?(Y.debug("add bottom border"),a(r)):s(r),e.includes("l")?(Y.debug("add left border"),a(n)):s(n),t.attr("stroke-dasharray",i.join(" "))}var Mye,fo,Iye,Iet,Oet,Pet,Bet,Fet,zet,Get,$et,Vet,Uet,Het,Wet,qet,Yet,Xet,jet,Ket,Qet,Zet,Oye,Jet,ett,Pye,WS,YB,Bye,Fye=M(()=>{"use strict";hr();Gt();gr();vt();xye();VS();HB();Nye();WB();Mye=o(t=>t?" "+t:"","formatClass"),fo=o((t,e)=>`${e||"node default"}${Mye(t.classes)} ${Mye(t.class)}`,"getClassesFromNode"),Iye=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,fo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=i+a,l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];Y.info("Question main (Circle)");let u=Hl(r,s,s,l);return u.attr("style",e.style),Qn(e,u),e.intersect=function(h){return Y.warn("Intersect called"),In.polygon(e,l,h)},r},"question"),Iet=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=28,i=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return r.insert("polygon",":first-child").attr("points",i.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(s){return In.circle(e,14,s)},r},"choice"),Oet=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,fo(e,void 0),!0),i=4,a=n.height+e.padding,s=a/i,l=n.width+2*s+e.padding,u=[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}],h=Hl(r,l,a,u);return h.attr("style",e.style),Qn(e,h),e.intersect=function(f){return In.polygon(e,u,f)},r},"hexagon"),Pet=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,void 0,!0),i=2,a=n.height+2*e.padding,s=a/i,l=n.width+2*s+e.padding,u=vye(e.directions,n,e),h=Hl(r,l,a,u);return h.attr("style",e.style),Qn(e,h),e.intersect=function(f){return In.polygon(e,u,f)},r},"block_arrow"),Bet=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,fo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-a/2,y:0},{x:i,y:0},{x:i,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}];return Hl(r,i,a,s).attr("style",e.style),e.width=i+a,e.height=a,e.intersect=function(u){return In.polygon(e,s,u)},r},"rect_left_inv_arrow"),Fet=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,fo(e),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-2*a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:a/6,y:-a}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"lean_right"),zet=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,fo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:2*a/6,y:0},{x:i+a/6,y:0},{x:i-2*a/6,y:-a},{x:-a/6,y:-a}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"lean_left"),Get=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,fo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-2*a/6,y:0},{x:i+2*a/6,y:0},{x:i-a/6,y:-a},{x:a/6,y:-a}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"trapezoid"),$et=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,fo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:-2*a/6,y:-a}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"inv_trapezoid"),Vet=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,fo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:0,y:0},{x:i+a/2,y:0},{x:i,y:-a/2},{x:i+a/2,y:-a},{x:0,y:-a}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"rect_right_inv_arrow"),Uet=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,fo(e,void 0),!0),i=n.width+e.padding,a=i/2,s=a/(2.5+i/50),l=n.height+s+e.padding,u="M 0,"+s+" a "+a+","+s+" 0,0,0 "+i+" 0 a "+a+","+s+" 0,0,0 "+-i+" 0 l 0,"+l+" a "+a+","+s+" 0,0,0 "+i+" 0 l 0,"+-l,h=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",e.style).attr("d",u).attr("transform","translate("+-i/2+","+-(l/2+s)+")");return Qn(e,h),e.intersect=function(f){let d=In.rect(e,f),p=d.x-e.x;if(a!=0&&(Math.abs(p)e.height/2-s)){let m=s*s*(1-p*p/(a*a));m!=0&&(m=Math.sqrt(m)),m=s-m,f.y-e.y>0&&(m=-m),d.y+=m}return d},r},"cylinder"),Het=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await _i(t,e,"node "+e.classes+" "+e.class,!0),a=r.insert("rect",":first-child"),s=e.positioned?e.width:n.width+e.padding,l=e.positioned?e.height:n.height+e.padding,u=e.positioned?-s/2:-n.width/2-i,h=e.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),e.props){let f=new Set(Object.keys(e.props));e.props.borders&&(qB(a,e.props.borders,s,l),f.delete("borders")),f.forEach(d=>{Y.warn(`Unknown node property ${d}`)})}return Qn(e,a),e.intersect=function(f){return In.rect(e,f)},r},"rect"),Wet=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await _i(t,e,"node "+e.classes,!0),a=r.insert("rect",":first-child"),s=e.positioned?e.width:n.width+e.padding,l=e.positioned?e.height:n.height+e.padding,u=e.positioned?-s/2:-n.width/2-i,h=e.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic cluster composite label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),e.props){let f=new Set(Object.keys(e.props));e.props.borders&&(qB(a,e.props.borders,s,l),f.delete("borders")),f.forEach(d=>{Y.warn(`Unknown node property ${d}`)})}return Qn(e,a),e.intersect=function(f){return In.rect(e,f)},r},"composite"),qet=o(async(t,e)=>{let{shapeSvg:r}=await _i(t,e,"label",!0);Y.trace("Classes = ",e.class);let n=r.insert("rect",":first-child"),i=0,a=0;if(n.attr("width",i).attr("height",a),r.attr("class","label edgeLabel"),e.props){let s=new Set(Object.keys(e.props));e.props.borders&&(qB(n,e.props.borders,i,a),s.delete("borders")),s.forEach(l=>{Y.warn(`Unknown node property ${l}`)})}return Qn(e,n),e.intersect=function(s){return In.rect(e,s)},r},"labelRect");o(qB,"applyNodePropertyBorders");Yet=o((t,e)=>{let r;e.classes?r="node "+e.classes:r="node default";let n=t.insert("g").attr("class",r).attr("id",e.domId||e.id),i=n.insert("rect",":first-child"),a=n.insert("line"),s=n.insert("g").attr("class","label"),l=e.labelText.flat?e.labelText.flat():e.labelText,u="";typeof l=="object"?u=l[0]:u=l,Y.info("Label text abc79",u,l,typeof l=="object");let h=s.node().appendChild(ds(u,e.labelStyle,!0,!0)),f={width:0,height:0};if(ur(me().flowchart.htmlLabels)){let y=h.children[0],v=$e(h);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height)}Y.info("Text 2",l);let d=l.slice(1,l.length),p=h.getBBox(),m=s.node().appendChild(ds(d.join?d.join("
    "):d,e.labelStyle,!0,!0));if(ur(me().flowchart.htmlLabels)){let y=m.children[0],v=$e(m);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height)}let g=e.padding/2;return $e(m).attr("transform","translate( "+(f.width>p.width?0:(p.width-f.width)/2)+", "+(p.height+g+5)+")"),$e(h).attr("transform","translate( "+(f.width{let{shapeSvg:r,bbox:n}=await _i(t,e,fo(e,void 0),!0),i=n.height+e.padding,a=n.width+i/4+e.padding,s=r.insert("rect",":first-child").attr("style",e.style).attr("rx",i/2).attr("ry",i/2).attr("x",-a/2).attr("y",-i/2).attr("width",a).attr("height",i);return Qn(e,s),e.intersect=function(l){return In.rect(e,l)},r},"stadium"),jet=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await _i(t,e,fo(e,void 0),!0),a=r.insert("circle",":first-child");return a.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i).attr("width",n.width+e.padding).attr("height",n.height+e.padding),Y.info("Circle main"),Qn(e,a),e.intersect=function(s){return Y.info("Circle intersect",e,n.width/2+i,s),In.circle(e,n.width/2+i,s)},r},"circle"),Ket=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await _i(t,e,fo(e,void 0),!0),a=5,s=r.insert("g",":first-child"),l=s.insert("circle"),u=s.insert("circle");return s.attr("class",e.class),l.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i+a).attr("width",n.width+e.padding+a*2).attr("height",n.height+e.padding+a*2),u.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i).attr("width",n.width+e.padding).attr("height",n.height+e.padding),Y.info("DoubleCircle main"),Qn(e,l),e.intersect=function(h){return Y.info("DoubleCircle intersect",e,n.width/2+i+a,h),In.circle(e,n.width/2+i+a,h)},r},"doublecircle"),Qet=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await _i(t,e,fo(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:0,y:0},{x:i,y:0},{x:i,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:i+8,y:0},{x:i+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],l=Hl(r,i,a,s);return l.attr("style",e.style),Qn(e,l),e.intersect=function(u){return In.polygon(e,s,u)},r},"subroutine"),Zet=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=r.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),Qn(e,n),e.intersect=function(i){return In.circle(e,7,i)},r},"start"),Oye=o((t,e,r)=>{let n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=70,a=10;r==="LR"&&(i=10,a=70);let s=n.append("rect").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return Qn(e,s),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(l){return In.rect(e,l)},n},"forkJoin"),Jet=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=r.insert("circle",":first-child"),i=r.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),Qn(e,i),e.intersect=function(a){return In.circle(e,7,a)},r},"end"),ett=o((t,e)=>{let r=e.padding/2,n=4,i=8,a;e.classes?a="node "+e.classes:a="node default";let s=t.insert("g").attr("class",a).attr("id",e.domId||e.id),l=s.insert("rect",":first-child"),u=s.insert("line"),h=s.insert("line"),f=0,d=n,p=s.insert("g").attr("class","label"),m=0,g=e.classData.annotations?.[0],y=e.classData.annotations[0]?"\xAB"+e.classData.annotations[0]+"\xBB":"",v=p.node().appendChild(ds(y,e.labelStyle,!0,!0)),x=v.getBBox();if(ur(me().flowchart.htmlLabels)){let S=v.children[0],_=$e(v);x=S.getBoundingClientRect(),_.attr("width",x.width),_.attr("height",x.height)}e.classData.annotations[0]&&(d+=x.height+n,f+=x.width);let b=e.classData.label;e.classData.type!==void 0&&e.classData.type!==""&&(me().flowchart.htmlLabels?b+="<"+e.classData.type+">":b+="<"+e.classData.type+">");let w=p.node().appendChild(ds(b,e.labelStyle,!0,!0));$e(w).attr("class","classTitle");let C=w.getBBox();if(ur(me().flowchart.htmlLabels)){let S=w.children[0],_=$e(w);C=S.getBoundingClientRect(),_.attr("width",C.width),_.attr("height",C.height)}d+=C.height+n,C.width>f&&(f=C.width);let T=[];e.classData.members.forEach(S=>{let _=S.getDisplayDetails(),I=_.displayText;me().flowchart.htmlLabels&&(I=I.replace(//g,">"));let D=p.node().appendChild(ds(I,_.cssStyle?_.cssStyle:e.labelStyle,!0,!0)),k=D.getBBox();if(ur(me().flowchart.htmlLabels)){let L=D.children[0],R=$e(D);k=L.getBoundingClientRect(),R.attr("width",k.width),R.attr("height",k.height)}k.width>f&&(f=k.width),d+=k.height+n,T.push(D)}),d+=i;let E=[];if(e.classData.methods.forEach(S=>{let _=S.getDisplayDetails(),I=_.displayText;me().flowchart.htmlLabels&&(I=I.replace(//g,">"));let D=p.node().appendChild(ds(I,_.cssStyle?_.cssStyle:e.labelStyle,!0,!0)),k=D.getBBox();if(ur(me().flowchart.htmlLabels)){let L=D.children[0],R=$e(D);k=L.getBoundingClientRect(),R.attr("width",k.width),R.attr("height",k.height)}k.width>f&&(f=k.width),d+=k.height+n,E.push(D)}),d+=i,g){let S=(f-x.width)/2;$e(v).attr("transform","translate( "+(-1*f/2+S)+", "+-1*d/2+")"),m=x.height+n}let A=(f-C.width)/2;return $e(w).attr("transform","translate( "+(-1*f/2+A)+", "+(-1*d/2+m)+")"),m+=C.height+n,u.attr("class","divider").attr("x1",-f/2-r).attr("x2",f/2+r).attr("y1",-d/2-r+i+m).attr("y2",-d/2-r+i+m),m+=i,T.forEach(S=>{$e(S).attr("transform","translate( "+-f/2+", "+(-1*d/2+m+i/2)+")");let _=S?.getBBox();m+=(_?.height??0)+n}),m+=i,h.attr("class","divider").attr("x1",-f/2-r).attr("x2",f/2+r).attr("y1",-d/2-r+i+m).attr("y2",-d/2-r+i+m),m+=i,E.forEach(S=>{$e(S).attr("transform","translate( "+-f/2+", "+(-1*d/2+m)+")");let _=S?.getBBox();m+=(_?.height??0)+n}),l.attr("style",e.style).attr("class","outer title-state").attr("x",-f/2-r).attr("y",-(d/2)-r).attr("width",f+e.padding).attr("height",d+e.padding),Qn(e,l),e.intersect=function(S){return In.rect(e,S)},s},"class_box"),Pye={rhombus:Iye,composite:Wet,question:Iye,rect:Het,labelRect:qet,rectWithTitle:Yet,choice:Iet,circle:jet,doublecircle:Ket,stadium:Xet,hexagon:Oet,block_arrow:Pet,rect_left_inv_arrow:Bet,lean_right:Fet,lean_left:zet,trapezoid:Get,inv_trapezoid:$et,rect_right_inv_arrow:Vet,cylinder:Uet,start:Zet,end:Jet,note:Rye,subroutine:Qet,fork:Oye,join:Oye,class_box:ett},WS={},YB=o(async(t,e,r)=>{let n,i;if(e.link){let a;me().securityLevel==="sandbox"?a="_top":e.linkTarget&&(a=e.linkTarget||"_blank"),n=t.insert("svg:a").attr("xlink:href",e.link).attr("target",a),i=await Pye[e.shape](n,e,r)}else i=await Pye[e.shape](t,e,r),n=i;return e.tooltip&&i.attr("title",e.tooltip),e.class&&i.attr("class","node default "+e.class),WS[e.id]=n,e.haveCallback&&WS[e.id].attr("class",WS[e.id].attr("class")+" clickable"),n},"insertNode"),Bye=o(t=>{let e=WS[t.id];Y.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");let r=8,n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-r)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},"positionNode")});function zye(t,e,r=!1){let n=t,i="default";(n?.classes?.length||0)>0&&(i=(n?.classes??[]).join(" ")),i=i+" flowchart-label";let a=0,s="",l;switch(n.type){case"round":a=5,s="rect";break;case"composite":a=0,s="composite",l=0;break;case"square":s="rect";break;case"diamond":s="question";break;case"hexagon":s="hexagon";break;case"block_arrow":s="block_arrow";break;case"odd":s="rect_left_inv_arrow";break;case"lean_right":s="lean_right";break;case"lean_left":s="lean_left";break;case"trapezoid":s="trapezoid";break;case"inv_trapezoid":s="inv_trapezoid";break;case"rect_left_inv_arrow":s="rect_left_inv_arrow";break;case"circle":s="circle";break;case"ellipse":s="ellipse";break;case"stadium":s="stadium";break;case"subroutine":s="subroutine";break;case"cylinder":s="cylinder";break;case"group":s="rect";break;case"doublecircle":s="doublecircle";break;default:s="rect"}let u=G9(n?.styles??[]),h=n.label,f=n.size??{width:0,height:0,x:0,y:0};return{labelStyle:u.labelStyle,shape:s,labelText:h,rx:a,ry:a,class:i,style:u.style,id:n.id,directions:n.directions,width:f.width,height:f.height,x:f.x,y:f.y,positioned:r,intersect:void 0,type:n.type,padding:l??mr()?.block?.padding??0}}async function ttt(t,e,r){let n=zye(e,r,!1);if(n.type==="group")return;let i=mr(),a=await YB(t,n,{config:i}),s=a.node().getBBox(),l=r.getBlock(n.id);l.size={width:s.width,height:s.height,x:0,y:0,node:a},r.setBlock(l),a.remove()}async function rtt(t,e,r){let n=zye(e,r,!0);if(r.getBlock(n.id).type!=="space"){let a=mr();await YB(t,n,{config:a}),e.intersect=n?.intersect,Bye(n)}}async function XB(t,e,r,n){for(let i of e)await n(t,i,r),i.children&&await XB(t,i.children,r,n)}async function Gye(t,e,r){await XB(t,e,r,ttt)}async function $ye(t,e,r){await XB(t,e,r,rtt)}async function Vye(t,e,r,n,i){let a=new sn({multigraph:!0,compound:!0});a.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(let s of r)s.size&&a.setNode(s.id,{width:s.size.width,height:s.size.height,intersect:s.intersect});for(let s of e)if(s.start&&s.end){let l=n.getBlock(s.start),u=n.getBlock(s.end);if(l?.size&&u?.size){let h=l.size,f=u.size,d=[{x:h.x,y:h.y},{x:h.x+(f.x-h.x)/2,y:h.y+(f.y-h.y)/2},{x:f.x,y:f.y}];gye(t,{v:s.start,w:s.end,name:s.id},{...s,arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:d,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",a,i),s.label&&(await pye(t,{...s,label:s.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:d,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),mye({...s,x:d[1].x,y:d[1].y},{originalPath:d}))}}}var Uye=M(()=>{"use strict";Fo();ka();yye();Fye();sr();o(zye,"getNodeFromBlock");o(ttt,"calculateBlockSize");o(rtt,"insertBlockPositioned");o(XB,"performOperations");o(Gye,"calculateBlockSizes");o($ye,"insertBlocks");o(Vye,"insertEdges")});var ntt,itt,Hye,Wye=M(()=>{"use strict";hr();ka();iye();vt();Ti();lye();Uye();ntt=o(function(t,e){return e.db.getClasses()},"getClasses"),itt=o(async function(t,e,r,n){let{securityLevel:i,block:a}=mr(),s=n.db,l;i==="sandbox"&&(l=$e("#i"+e));let u=i==="sandbox"?$e(l.nodes()[0].contentDocument.body):$e("body"),h=i==="sandbox"?u.select(`[id="${e}"]`):$e(`[id="${e}"]`);nye(h,["point","circle","cross"],n.type,e);let d=s.getBlocks(),p=s.getBlocksFlat(),m=s.getEdges(),g=h.insert("g").attr("class","block");await Gye(g,d,s);let y=oye(s);if(await $ye(g,d,s),await Vye(g,m,p,s,e),y){let v=y,x=Math.max(1,Math.round(.125*(v.width/v.height))),b=v.height+x+10,w=v.width+10,{useMaxWidth:C}=a;vn(h,b,w,!!C),Y.debug("Here Bounds",y,v),h.attr("viewBox",`${v.x-5} ${v.y-5} ${v.width+10} ${v.height+10}`)}},"draw"),Hye={draw:itt,getClasses:ntt}});var qye={};pr(qye,{diagram:()=>att});var att,Yye=M(()=>{"use strict";Y1e();eye();rye();Wye();att={parser:q1e,db:J1e,renderer:Hye,styles:tye}});var jB,KB,a4,Kye,QB,Ua,jc,s4,Qye,ctt,o4,Zye,Jye,eve,tve,rve,qS,Of,YS=M(()=>{"use strict";jB={L:"left",R:"right",T:"top",B:"bottom"},KB={L:o(t=>`${t},${t/2} 0,${t} 0,0`,"L"),R:o(t=>`0,${t/2} ${t},0 ${t},${t}`,"R"),T:o(t=>`0,0 ${t},0 ${t/2},${t}`,"T"),B:o(t=>`${t/2},0 ${t},${t} 0,${t}`,"B")},a4={L:o((t,e)=>t-e+2,"L"),R:o((t,e)=>t-2,"R"),T:o((t,e)=>t-e+2,"T"),B:o((t,e)=>t-2,"B")},Kye=o(function(t){return Ua(t)?t==="L"?"R":"L":t==="T"?"B":"T"},"getOppositeArchitectureDirection"),QB=o(function(t){let e=t;return e==="L"||e==="R"||e==="T"||e==="B"},"isArchitectureDirection"),Ua=o(function(t){let e=t;return e==="L"||e==="R"},"isArchitectureDirectionX"),jc=o(function(t){let e=t;return e==="T"||e==="B"},"isArchitectureDirectionY"),s4=o(function(t,e){let r=Ua(t)&&jc(e),n=jc(t)&&Ua(e);return r||n},"isArchitectureDirectionXY"),Qye=o(function(t){let e=t[0],r=t[1],n=Ua(e)&&jc(r),i=jc(e)&&Ua(r);return n||i},"isArchitecturePairXY"),ctt=o(function(t){return t!=="LL"&&t!=="RR"&&t!=="TT"&&t!=="BB"},"isValidArchitectureDirectionPair"),o4=o(function(t,e){let r=`${t}${e}`;return ctt(r)?r:void 0},"getArchitectureDirectionPair"),Zye=o(function([t,e],r){let n=r[0],i=r[1];return Ua(n)?jc(i)?[t+(n==="L"?-1:1),e+(i==="T"?1:-1)]:[t+(n==="L"?-1:1),e]:Ua(i)?[t+(i==="L"?1:-1),e+(n==="T"?1:-1)]:[t,e+(n==="T"?1:-1)]},"shiftPositionByArchitectureDirectionPair"),Jye=o(function(t){return t==="LT"||t==="TL"?[1,1]:t==="BL"||t==="LB"?[1,-1]:t==="BR"||t==="RB"?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),eve=o(function(t,e){return s4(t,e)?"bend":Ua(t)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),tve=o(function(t){return t.type==="service"},"isArchitectureService"),rve=o(function(t){return t.type==="junction"},"isArchitectureJunction"),qS=o(t=>t.data(),"edgeData"),Of=o(t=>t.data(),"nodeData")});function Di(t){let e=me().architecture;return e?.[t]?e[t]:nve[t]}var nve,vr,utt,htt,ftt,dtt,ptt,mtt,ZB,gtt,ytt,vtt,xtt,btt,wtt,Ttt,Yp,l4=M(()=>{"use strict";ps();Gt();qE();ki();YS();nve=cr.architecture,vr=new hf(()=>({nodes:{},groups:{},edges:[],registeredIds:{},config:nve,dataStructures:void 0,elements:{}})),utt=o(()=>{vr.reset(),Dr()},"clear"),htt=o(function({id:t,icon:e,in:r,title:n,iconText:i}){if(vr.records.registeredIds[t]!==void 0)throw new Error(`The service id [${t}] is already in use by another ${vr.records.registeredIds[t]}`);if(r!==void 0){if(t===r)throw new Error(`The service [${t}] cannot be placed within itself`);if(vr.records.registeredIds[r]===void 0)throw new Error(`The service [${t}]'s parent does not exist. Please make sure the parent is created before this service`);if(vr.records.registeredIds[r]==="node")throw new Error(`The service [${t}]'s parent is not a group`)}vr.records.registeredIds[t]="node",vr.records.nodes[t]={id:t,type:"service",icon:e,iconText:i,title:n,edges:[],in:r}},"addService"),ftt=o(()=>Object.values(vr.records.nodes).filter(tve),"getServices"),dtt=o(function({id:t,in:e}){vr.records.registeredIds[t]="node",vr.records.nodes[t]={id:t,type:"junction",edges:[],in:e}},"addJunction"),ptt=o(()=>Object.values(vr.records.nodes).filter(rve),"getJunctions"),mtt=o(()=>Object.values(vr.records.nodes),"getNodes"),ZB=o(t=>vr.records.nodes[t],"getNode"),gtt=o(function({id:t,icon:e,in:r,title:n}){if(vr.records.registeredIds[t]!==void 0)throw new Error(`The group id [${t}] is already in use by another ${vr.records.registeredIds[t]}`);if(r!==void 0){if(t===r)throw new Error(`The group [${t}] cannot be placed within itself`);if(vr.records.registeredIds[r]===void 0)throw new Error(`The group [${t}]'s parent does not exist. Please make sure the parent is created before this group`);if(vr.records.registeredIds[r]==="node")throw new Error(`The group [${t}]'s parent is not a group`)}vr.records.registeredIds[t]="group",vr.records.groups[t]={id:t,icon:e,title:n,in:r}},"addGroup"),ytt=o(()=>Object.values(vr.records.groups),"getGroups"),vtt=o(function({lhsId:t,rhsId:e,lhsDir:r,rhsDir:n,lhsInto:i,rhsInto:a,lhsGroup:s,rhsGroup:l,title:u}){if(!QB(r))throw new Error(`Invalid direction given for left hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${r}`);if(!QB(n))throw new Error(`Invalid direction given for right hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${n}`);if(vr.records.nodes[t]===void 0&&vr.records.groups[t]===void 0)throw new Error(`The left-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(vr.records.nodes[e]===void 0&&vr.records.groups[t]===void 0)throw new Error(`The right-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`);let h=vr.records.nodes[t].in,f=vr.records.nodes[e].in;if(s&&h&&f&&h==f)throw new Error(`The left-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(l&&h&&f&&h==f)throw new Error(`The right-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let d={lhsId:t,lhsDir:r,lhsInto:i,lhsGroup:s,rhsId:e,rhsDir:n,rhsInto:a,rhsGroup:l,title:u};vr.records.edges.push(d),vr.records.nodes[t]&&vr.records.nodes[e]&&(vr.records.nodes[t].edges.push(vr.records.edges[vr.records.edges.length-1]),vr.records.nodes[e].edges.push(vr.records.edges[vr.records.edges.length-1]))},"addEdge"),xtt=o(()=>vr.records.edges,"getEdges"),btt=o(()=>{if(vr.records.dataStructures===void 0){let t={},e=Object.entries(vr.records.nodes).reduce((l,[u,h])=>(l[u]=h.edges.reduce((f,d)=>{let p=ZB(d.lhsId)?.in,m=ZB(d.rhsId)?.in;if(p&&m&&p!==m){let g=eve(d.lhsDir,d.rhsDir);g!=="bend"&&(t[p]??={},t[p][m]=g,t[m]??={},t[m][p]=g)}if(d.lhsId===u){let g=o4(d.lhsDir,d.rhsDir);g&&(f[g]=d.rhsId)}else{let g=o4(d.rhsDir,d.lhsDir);g&&(f[g]=d.lhsId)}return f},{}),l),{}),r=Object.keys(e)[0],n={[r]:1},i=Object.keys(e).reduce((l,u)=>u===r?l:{...l,[u]:1},{}),a=o(l=>{let u={[l]:[0,0]},h=[l];for(;h.length>0;){let f=h.shift();if(f){n[f]=1,delete i[f];let d=e[f],[p,m]=u[f];Object.entries(d).forEach(([g,y])=>{n[y]||(u[y]=Zye([p,m],g),h.push(y))})}}return u},"BFS"),s=[a(r)];for(;Object.keys(i).length>0;)s.push(a(Object.keys(i)[0]));vr.records.dataStructures={adjList:e,spatialMaps:s,groupAlignments:t}}return vr.records.dataStructures},"getDataStructures"),wtt=o((t,e)=>{vr.records.elements[t]=e},"setElementForId"),Ttt=o(t=>vr.records.elements[t],"getElementById"),Yp={clear:utt,setDiagramTitle:Zr,getDiagramTitle:Fr,setAccTitle:Mr,getAccTitle:Or,setAccDescription:Pr,getAccDescription:Br,addService:htt,getServices:ftt,addJunction:dtt,getJunctions:ptt,getNodes:mtt,getNode:ZB,addGroup:gtt,getGroups:ytt,addEdge:vtt,getEdges:xtt,setElementForId:wtt,getElementById:Ttt,getDataStructures:btt};o(Di,"getConfigField")});var ktt,ive,ave=M(()=>{"use strict";y1();vt();Jx();l4();ktt=o((t,e)=>{uf(t,e),t.groups.map(e.addGroup),t.services.map(r=>e.addService({...r,type:"service"})),t.junctions.map(r=>e.addJunction({...r,type:"junction"})),t.edges.map(e.addEdge)},"populateDb"),ive={parse:o(async t=>{let e=await Fl("architecture",t);Y.debug(e),ktt(e,Yp)},"parse")}});var Ett,sve,ove=M(()=>{"use strict";Ett=o(t=>` .edge { stroke-width: ${t.archEdgeWidth}; stroke: ${t.archEdgeColor}; @@ -2258,20 +2509,20 @@ Expecting `+te.join(", ")+", got '"+(this.terminals_[ie]||ie)+"'":De="Parse erro display: -webkit-box; -webkit-box-orient: vertical; } -`,"getStyles"),o2e=_it});var hF=Ni((vb,uF)=>{"use strict";o(function(e,r){typeof vb=="object"&&typeof uF=="object"?uF.exports=r():typeof define=="function"&&define.amd?define([],r):typeof vb=="object"?vb.layoutBase=r():e.layoutBase=r()},"webpackUniversalModuleDefinition")(vb,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=t,r.c=e,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=28)}([function(t,e,r){"use strict";function n(){}o(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,f){n.call(this,f),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=f,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var f=this.getOtherEnd(u),d=h.getGraphManager().getRoot();;){if(f.getOwner()==h)return f;if(f.getOwner()==d)break;f=f.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(5);function h(d,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),d.graphManager!=null&&(d=d.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=d,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var f in n)h[f]=n[f];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(d){this.rect.width=d},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(d){this.rect.height=d},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(d,p){this.rect.x=d.x,this.rect.y=d.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(d,p){this.rect.x=d-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(d,p){this.rect.x=d,this.rect.y=p},h.prototype.moveBy=function(d,p){this.rect.x+=d,this.rect.y+=p},h.prototype.getEdgeListToNode=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==d){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==d||y.source==d)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var d=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)d.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";d.add(m.source)}}),d},h.prototype.withChildren=function(){var d=new Set,p,m;if(d.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp?(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal=="right"&&this.setWidth(p+this.labelWidth)),this.labelHeight&&(this.labelPosVertical=="top"?(this.rect.y-=this.labelHeight,this.setHeight(m+this.labelHeight)):this.labelPosVertical=="center"&&this.labelHeight>m?(this.rect.y-=(this.labelHeight-m)/2,this.setHeight(this.labelHeight)):this.labelPosVertical=="bottom"&&this.setHeight(m+this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(d){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=d.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},t.exports=h},function(t,e,r){"use strict";var n=r(0);function i(){}o(i,"FDLayoutConstants");for(var a in n)i[a]=n[a];i.MAX_ITERATIONS=2500,i.DEFAULT_EDGE_LENGTH=50,i.DEFAULT_SPRING_STRENGTH=.45,i.DEFAULT_REPULSION_STRENGTH=4500,i.DEFAULT_GRAVITY_STRENGTH=.4,i.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,i.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,i.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,i.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,i.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,i.COOLING_ADAPTATION_FACTOR=.33,i.ADAPTATION_LOWER_NODE_LIMIT=1e3,i.ADAPTATION_UPPER_NODE_LIMIT=5e3,i.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,i.MAX_NODE_DISPLACEMENT=i.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,i.MIN_REPULSION_DIST=i.DEFAULT_EDGE_LENGTH/10,i.CONVERGENCE_CHECK_PERIOD=100,i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,i.MIN_EDGE_LENGTH=1,i.GRID_CALCULATION_CHECK_PERIOD=10,t.exports=i},function(t,e,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(7),l=r(3),u=r(1),h=r(13),f=r(12),d=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,w=0;w-1&&E>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(T,1),x.target!=x.source&&x.target.edges.splice(E,1);var _=x.source.owner.getEdges().indexOf(x);if(_==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(_,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,w=this.getNodes(),_=w.length,T=0;T<_;T++){var E=w[T];v=E.getTop(),x=E.getLeft(),g>v&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(w[0].getParent().paddingLeft!=null?b=w[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new f(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,w,_,T,E,L,C=this.nodes,A=C.length,I=0;Iw&&(y=w),v<_&&(v=_),x>T&&(x=T),bw&&(y=w),v<_&&(v=_),x>T&&(x=T),b=this.nodes.length){var A=0;v.forEach(function(I){I.owner==g&&A++}),A==this.nodes.length&&(this.isConnected=!0)}},t.exports=p},function(t,e,r){"use strict";var n,i=r(1);function a(s){n=r(6),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,f){if(u==null&&h==null&&f==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{f=u,h=l,u=s;var d=h.getOwner(),p=f.getOwner();if(!(d!=null&&d.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(d==p)return u.isInterGraph=!1,d.add(u,h,f);if(u.isInterGraph=!0,u.source=h,u.target=f,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,f=u.length,d=0;d=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var f=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(f=1);var d=f*l[0],p=l[1]/f;l[0]d)return l[0]=u,l[1]=m,l[2]=f,l[3]=C,!1;if(hf)return l[0]=p,l[1]=h,l[2]=E,l[3]=d,!1;if(uf?(l[0]=y,l[1]=v,k=!0):(l[0]=g,l[1]=m,k=!0):S===N&&(u>f?(l[0]=p,l[1]=m,k=!0):(l[0]=x,l[1]=v,k=!0)),-O===N?f>u?(l[2]=L,l[3]=C,R=!0):(l[2]=E,l[3]=T,R=!0):O===N&&(f>u?(l[2]=_,l[3]=T,R=!0):(l[2]=A,l[3]=C,R=!0)),k&&R)return!1;if(u>f?h>d?(P=this.getCardinalDirection(S,N,4),F=this.getCardinalDirection(O,N,2)):(P=this.getCardinalDirection(-S,N,3),F=this.getCardinalDirection(-O,N,1)):h>d?(P=this.getCardinalDirection(-S,N,1),F=this.getCardinalDirection(-O,N,3)):(P=this.getCardinalDirection(S,N,2),F=this.getCardinalDirection(O,N,4)),!k)switch(P){case 1:$=m,B=u+-w/N,l[0]=B,l[1]=$;break;case 2:B=x,$=h+b*N,l[0]=B,l[1]=$;break;case 3:$=v,B=u+w/N,l[0]=B,l[1]=$;break;case 4:B=y,$=h+-b*N,l[0]=B,l[1]=$;break}if(!R)switch(F){case 1:W=T,z=f+-D/N,l[2]=z,l[3]=W;break;case 2:z=A,W=d+I*N,l[2]=z,l[3]=W;break;case 3:W=C,z=f+D/N,l[2]=z,l[3]=W;break;case 4:z=L,W=d+-I*N,l[2]=z,l[3]=W;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,f=a.y,d=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,w=void 0,_=void 0,T=void 0,E=void 0,L=void 0,C=void 0,A=void 0;return w=p-f,T=h-d,L=d*f-h*p,_=v-g,E=m-y,C=y*g-m*v,A=w*E-_*T,A===0?null:(x=(T*C-E*L)/A,b=(_*L-w*C)/A,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l=0){var v=(-m+Math.sqrt(m*m-4*p*g))/(2*p),x=(-m-Math.sqrt(m*m-4*p*g))/(2*p),b=null;return v>=0&&v<=1?[v]:x>=0&&x<=1?[x]:b}else return null},i.HALF_PI=.5*Math.PI,i.ONE_AND_HALF_PI=1.5*Math.PI,i.TWO_PI=2*Math.PI,i.THREE_PI=3*Math.PI,t.exports=i},function(t,e,r){"use strict";function n(){}o(n,"IMath"),n.sign=function(i){return i>0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},t.exports=n},function(t,e,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n},function(t,e,r){"use strict";var n=function(){function h(f,d){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},t.exports=i},function(t,e,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(w.push(T[0]);w.length>0&&g;){var E=w[0];w.splice(0,1),b.add(E);for(var L=E.getEdges(),x=0;x-1&&T.splice(D,1)}b=new Set,_=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(C,1);var A=_.getNeighborsList();A.forEach(function(k){if(y.indexOf(k)<0){var R=v.get(k),S=R-1;S==1&&E.push(k),v.set(k,S)}})}y=y.concat(E),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},t.exports=p},function(t,e,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},t.exports=n},function(t,e,r){"use strict";var n=r(5);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},t.exports=i},function(t,e,r){"use strict";function n(d){if(Array.isArray(d)){for(var p=0,m=Array(d.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(d>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var d=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&d&&this.updateGrid(),b=new Set,m=0;mw||b>w)&&(d.gravitationForceX=-this.gravityConstant*y,d.gravitationForceY=-this.gravityConstant*v)):(w=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>w||b>w)&&(d.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,d.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var d,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),d=this.totalDisplacement=x.length||w>=x[0].length)){for(var _=0;_h},"_defaultCompareFunction")}]),l}();t.exports=s},function(t,e,r){"use strict";function n(){}o(n,"SVD"),n.svd=function(i){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=i.length,this.n=i[0].length;var a=Math.min(this.m,this.n);this.s=function(dt){for(var Xe=[];dt-- >0;)Xe.push(0);return Xe}(Math.min(this.m+1,this.n)),this.U=function(dt){var Xe=o(function ct(Lt){if(Lt.length==0)return 0;for(var Rt=[],zt=0;zt0;)Xe.push(0);return Xe}(this.n),l=function(dt){for(var Xe=[];dt-- >0;)Xe.push(0);return Xe}(this.m),u=!0,h=!0,f=Math.min(this.m-1,this.n),d=Math.max(0,Math.min(this.n-2,this.m)),p=0;p=0;N--)if(this.s[N]!==0){for(var P=N+1;P=0;K--){if(function(dt,Xe){return dt&&Xe}(K0;){var ce=void 0,te=void 0;for(ce=R-2;ce>=-1&&ce!==-1;ce--)if(Math.abs(s[ce])<=ue+ae*(Math.abs(this.s[ce])+Math.abs(this.s[ce+1]))){s[ce]=0;break}if(ce===R-2)te=4;else{var De=void 0;for(De=R-1;De>=ce&&De!==ce;De--){var oe=(De!==R?Math.abs(s[De]):0)+(De!==ce+1?Math.abs(s[De-1]):0);if(Math.abs(this.s[De])<=ue+ae*oe){this.s[De]=0;break}}De===ce?te=3:De===R-1?te=1:(te=2,ce=De)}switch(ce++,te){case 1:{var ke=s[R-2];s[R-2]=0;for(var Fe=R-2;Fe>=ce;Fe--){var Be=n.hypot(this.s[Fe],ke),Ve=this.s[Fe]/Be,Ge=ke/Be;if(this.s[Fe]=Be,Fe!==ce&&(ke=-Ge*s[Fe-1],s[Fe-1]=Ve*s[Fe-1]),h)for(var He=0;He=this.s[ce+1]);){var rt=this.s[ce];if(this.s[ce]=this.s[ce+1],this.s[ce+1]=rt,h&&ceMath.abs(a)?(s=a/i,s=Math.abs(i)*Math.sqrt(1+s*s)):a!=0?(s=i/a,s=Math.abs(a)*Math.sqrt(1+s*s)):s=0,s},t.exports=n},function(t,e,r){"use strict";var n=function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=f,this.gap_penalty=d,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o(function(e,r){typeof xb=="object"&&typeof fF=="object"?fF.exports=r(hF()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof xb=="object"?xb.coseBase=r(hF()):e.coseBase=r(e.layoutBase)},"webpackUniversalModuleDefinition")(xb,function(t){return(()=>{"use strict";var e={45:(a,s,l)=>{var u={};u.layoutBase=l(551),u.CoSEConstants=l(806),u.CoSEEdge=l(767),u.CoSEGraph=l(880),u.CoSEGraphManager=l(578),u.CoSELayout=l(765),u.CoSENode=l(991),u.ConstraintHandler=l(902),a.exports=u},806:(a,s,l)=>{var u=l(551).FDLayoutConstants;function h(){}o(h,"CoSEConstants");for(var f in u)h[f]=u[f];h.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,h.DEFAULT_RADIAL_SEPARATION=u.DEFAULT_EDGE_LENGTH,h.DEFAULT_COMPONENT_SEPERATION=60,h.TILE=!0,h.TILING_PADDING_VERTICAL=10,h.TILING_PADDING_HORIZONTAL=10,h.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,h.ENFORCE_CONSTRAINTS=!0,h.APPLY_LAYOUT=!0,h.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,h.TREE_REDUCTION_ON_INCREMENTAL=!0,h.PURE_INCREMENTAL=h.DEFAULT_INCREMENTAL,a.exports=h},767:(a,s,l)=>{var u=l(551).FDLayoutEdge;function h(d,p,m){u.call(this,d,p,m)}o(h,"CoSEEdge"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h},880:(a,s,l)=>{var u=l(551).LGraph;function h(d,p,m){u.call(this,d,p,m)}o(h,"CoSEGraph"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h},578:(a,s,l)=>{var u=l(551).LGraphManager;function h(d){u.call(this,d)}o(h,"CoSEGraphManager"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h},765:(a,s,l)=>{var u=l(551).FDLayout,h=l(578),f=l(880),d=l(991),p=l(767),m=l(806),g=l(902),y=l(551).FDLayoutConstants,v=l(551).LayoutConstants,x=l(551).Point,b=l(551).PointD,w=l(551).DimensionD,_=l(551).Layout,T=l(551).Integer,E=l(551).IGeometry,L=l(551).LGraph,C=l(551).Transform,A=l(551).LinkedList;function I(){u.call(this),this.toBeTiled={},this.constraints={}}o(I,"CoSELayout"),I.prototype=Object.create(u.prototype);for(var D in u)I[D]=u[D];I.prototype.newGraphManager=function(){var k=new h(this);return this.graphManager=k,k},I.prototype.newGraph=function(k){return new f(null,this.graphManager,k)},I.prototype.newNode=function(k){return new d(this.graphManager,k)},I.prototype.newEdge=function(k){return new p(null,null,k)},I.prototype.initParameters=function(){u.prototype.initParameters.call(this,arguments),this.isSubLayout||(m.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=m.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=m.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=y.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=y.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=y.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},I.prototype.initSpringEmbedder=function(){u.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/y.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},I.prototype.layout=function(){var k=v.DEFAULT_CREATE_BENDS_AS_NEEDED;return k&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},I.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(m.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var R=new Set(this.getAllNodes()),S=this.nodesWithGravity.filter(function(P){return R.has(P)});this.graphManager.setAllNodesToApplyGravitation(S)}}else{var k=this.getFlatForest();if(k.length>0)this.positionNodesRadially(k);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var R=new Set(this.getAllNodes()),S=this.nodesWithGravity.filter(function(O){return R.has(O)});this.graphManager.setAllNodesToApplyGravitation(S),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(g.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),m.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},I.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%y.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var k=new Set(this.getAllNodes()),R=this.nodesWithGravity.filter(function(N){return k.has(N)});this.graphManager.setAllNodesToApplyGravitation(R),this.graphManager.updateBounds(),this.updateGrid(),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var S=!this.isTreeGrowing&&!this.isGrowthFinished,O=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(S,O),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},I.prototype.getPositionsData=function(){for(var k=this.graphManager.getAllNodes(),R={},S=0;S0&&this.updateDisplacements();for(var S=0;S0&&(O.fixedNodeWeight=P)}}if(this.constraints.relativePlacementConstraint){var F=new Map,B=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(ee){k.fixedNodesOnHorizontal.add(ee),k.fixedNodesOnVertical.add(ee)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var $=this.constraints.alignmentConstraint.vertical,S=0;S<$.length;S++)this.dummyToNodeForVerticalAlignment.set("dummy"+S,[]),$[S].forEach(function(J){F.set(J,"dummy"+S),k.dummyToNodeForVerticalAlignment.get("dummy"+S).push(J),k.fixedNodeSet.has(J)&&k.fixedNodesOnHorizontal.add("dummy"+S)});if(this.constraints.alignmentConstraint.horizontal)for(var z=this.constraints.alignmentConstraint.horizontal,S=0;S=2*ee.length/3;q--)J=Math.floor(Math.random()*(q+1)),H=ee[q],ee[q]=ee[J],ee[J]=H;return ee},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(ee){if(ee.left){var J=F.has(ee.left)?F.get(ee.left):ee.left,H=F.has(ee.right)?F.get(ee.right):ee.right;k.nodesInRelativeHorizontal.includes(J)||(k.nodesInRelativeHorizontal.push(J),k.nodeToRelativeConstraintMapHorizontal.set(J,[]),k.dummyToNodeForVerticalAlignment.has(J)?k.nodeToTempPositionMapHorizontal.set(J,k.idToNodeMap.get(k.dummyToNodeForVerticalAlignment.get(J)[0]).getCenterX()):k.nodeToTempPositionMapHorizontal.set(J,k.idToNodeMap.get(J).getCenterX())),k.nodesInRelativeHorizontal.includes(H)||(k.nodesInRelativeHorizontal.push(H),k.nodeToRelativeConstraintMapHorizontal.set(H,[]),k.dummyToNodeForVerticalAlignment.has(H)?k.nodeToTempPositionMapHorizontal.set(H,k.idToNodeMap.get(k.dummyToNodeForVerticalAlignment.get(H)[0]).getCenterX()):k.nodeToTempPositionMapHorizontal.set(H,k.idToNodeMap.get(H).getCenterX())),k.nodeToRelativeConstraintMapHorizontal.get(J).push({right:H,gap:ee.gap}),k.nodeToRelativeConstraintMapHorizontal.get(H).push({left:J,gap:ee.gap})}else{var q=B.has(ee.top)?B.get(ee.top):ee.top,Z=B.has(ee.bottom)?B.get(ee.bottom):ee.bottom;k.nodesInRelativeVertical.includes(q)||(k.nodesInRelativeVertical.push(q),k.nodeToRelativeConstraintMapVertical.set(q,[]),k.dummyToNodeForHorizontalAlignment.has(q)?k.nodeToTempPositionMapVertical.set(q,k.idToNodeMap.get(k.dummyToNodeForHorizontalAlignment.get(q)[0]).getCenterY()):k.nodeToTempPositionMapVertical.set(q,k.idToNodeMap.get(q).getCenterY())),k.nodesInRelativeVertical.includes(Z)||(k.nodesInRelativeVertical.push(Z),k.nodeToRelativeConstraintMapVertical.set(Z,[]),k.dummyToNodeForHorizontalAlignment.has(Z)?k.nodeToTempPositionMapVertical.set(Z,k.idToNodeMap.get(k.dummyToNodeForHorizontalAlignment.get(Z)[0]).getCenterY()):k.nodeToTempPositionMapVertical.set(Z,k.idToNodeMap.get(Z).getCenterY())),k.nodeToRelativeConstraintMapVertical.get(q).push({bottom:Z,gap:ee.gap}),k.nodeToRelativeConstraintMapVertical.get(Z).push({top:q,gap:ee.gap})}});else{var W=new Map,j=new Map;this.constraints.relativePlacementConstraint.forEach(function(ee){if(ee.left){var J=F.has(ee.left)?F.get(ee.left):ee.left,H=F.has(ee.right)?F.get(ee.right):ee.right;W.has(J)?W.get(J).push(H):W.set(J,[H]),W.has(H)?W.get(H).push(J):W.set(H,[J])}else{var q=B.has(ee.top)?B.get(ee.top):ee.top,Z=B.has(ee.bottom)?B.get(ee.bottom):ee.bottom;j.has(q)?j.get(q).push(Z):j.set(q,[Z]),j.has(Z)?j.get(Z).push(q):j.set(Z,[q])}});var K=o(function(J,H){var q=[],Z=[],ae=new A,ue=new Set,ce=0;return J.forEach(function(te,De){if(!ue.has(De)){q[ce]=[],Z[ce]=!1;var oe=De;for(ae.push(oe),ue.add(oe),q[ce].push(oe);ae.length!=0;){oe=ae.shift(),H.has(oe)&&(Z[ce]=!0);var ke=J.get(oe);ke.forEach(function(Fe){ue.has(Fe)||(ae.push(Fe),ue.add(Fe),q[ce].push(Fe))})}ce++}}),{components:q,isFixed:Z}},"constructComponents"),ie=K(W,k.fixedNodesOnHorizontal);this.componentsOnHorizontal=ie.components,this.fixedComponentsOnHorizontal=ie.isFixed;var Q=K(j,k.fixedNodesOnVertical);this.componentsOnVertical=Q.components,this.fixedComponentsOnVertical=Q.isFixed}}},I.prototype.updateDisplacements=function(){var k=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(Q){var ee=k.idToNodeMap.get(Q.nodeId);ee.displacementX=0,ee.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var R=this.constraints.alignmentConstraint.vertical,S=0;S1){var B;for(B=0;BO&&(O=Math.floor(F.y)),P=Math.floor(F.x+m.DEFAULT_COMPONENT_SEPERATION)}this.transform(new b(v.WORLD_CENTER_X-F.x/2,v.WORLD_CENTER_Y-F.y/2))},I.radialLayout=function(k,R,S){var O=Math.max(this.maxDiagonalInTree(k),m.DEFAULT_RADIAL_SEPARATION);I.branchRadialLayout(R,null,0,359,0,O);var N=L.calculateBounds(k),P=new C;P.setDeviceOrgX(N.getMinX()),P.setDeviceOrgY(N.getMinY()),P.setWorldOrgX(S.x),P.setWorldOrgY(S.y);for(var F=0;F1;){var q=H[0];H.splice(0,1);var Z=K.indexOf(q);Z>=0&&K.splice(Z,1),ee--,ie--}R!=null?J=(K.indexOf(H[0])+1)%ee:J=0;for(var ae=Math.abs(O-S)/ie,ue=J;Q!=ie;ue=++ue%ee){var ce=K[ue].getOtherEnd(k);if(ce!=R){var te=(S+Q*ae)%360,De=(te+ae)%360;I.branchRadialLayout(ce,k,te,De,N+P,P),Q++}}},I.maxDiagonalInTree=function(k){for(var R=T.MIN_VALUE,S=0;SR&&(R=N)}return R},I.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},I.prototype.groupZeroDegreeMembers=function(){var k=this,R={};this.memberGroups={},this.idToDummyNode={};for(var S=[],O=this.graphManager.getAllNodes(),N=0;N"u"&&(R[B]=[]),R[B]=R[B].concat(P)}Object.keys(R).forEach(function($){if(R[$].length>1){var z="DummyCompound_"+$;k.memberGroups[z]=R[$];var W=R[$][0].getParent(),j=new d(k.graphManager);j.id=z,j.paddingLeft=W.paddingLeft||0,j.paddingRight=W.paddingRight||0,j.paddingBottom=W.paddingBottom||0,j.paddingTop=W.paddingTop||0,k.idToDummyNode[z]=j;var K=k.getGraphManager().add(k.newGraph(),j),ie=W.getChild();ie.add(j);for(var Q=0;QN?(O.rect.x-=(O.labelWidth-N)/2,O.setWidth(O.labelWidth),O.labelMarginLeft=(O.labelWidth-N)/2):O.labelPosHorizontal=="right"&&O.setWidth(N+O.labelWidth)),O.labelHeight&&(O.labelPosVertical=="top"?(O.rect.y-=O.labelHeight,O.setHeight(P+O.labelHeight),O.labelMarginTop=O.labelHeight):O.labelPosVertical=="center"&&O.labelHeight>P?(O.rect.y-=(O.labelHeight-P)/2,O.setHeight(O.labelHeight),O.labelMarginTop=(O.labelHeight-P)/2):O.labelPosVertical=="bottom"&&O.setHeight(P+O.labelHeight))}})},I.prototype.repopulateCompounds=function(){for(var k=this.compoundOrder.length-1;k>=0;k--){var R=this.compoundOrder[k],S=R.id,O=R.paddingLeft,N=R.paddingTop,P=R.labelMarginLeft,F=R.labelMarginTop;this.adjustLocations(this.tiledMemberPack[S],R.rect.x,R.rect.y,O,N,P,F)}},I.prototype.repopulateZeroDegreeMembers=function(){var k=this,R=this.tiledZeroDegreePack;Object.keys(R).forEach(function(S){var O=k.idToDummyNode[S],N=O.paddingLeft,P=O.paddingTop,F=O.labelMarginLeft,B=O.labelMarginTop;k.adjustLocations(R[S],O.rect.x,O.rect.y,N,P,F,B)})},I.prototype.getToBeTiled=function(k){var R=k.id;if(this.toBeTiled[R]!=null)return this.toBeTiled[R];var S=k.getChild();if(S==null)return this.toBeTiled[R]=!1,!1;for(var O=S.getNodes(),N=0;N0)return this.toBeTiled[R]=!1,!1;if(P.getChild()==null){this.toBeTiled[P.id]=!1;continue}if(!this.getToBeTiled(P))return this.toBeTiled[R]=!1,!1}return this.toBeTiled[R]=!0,!0},I.prototype.getNodeDegree=function(k){for(var R=k.id,S=k.getEdges(),O=0,N=0;NW&&(W=K.rect.height)}S+=W+k.verticalPadding}},I.prototype.tileCompoundMembers=function(k,R){var S=this;this.tiledMemberPack=[],Object.keys(k).forEach(function(O){var N=R[O];if(S.tiledMemberPack[O]=S.tileNodes(k[O],N.paddingLeft+N.paddingRight),N.rect.width=S.tiledMemberPack[O].width,N.rect.height=S.tiledMemberPack[O].height,N.setCenter(S.tiledMemberPack[O].centerX,S.tiledMemberPack[O].centerY),N.labelMarginLeft=0,N.labelMarginTop=0,m.NODE_DIMENSIONS_INCLUDE_LABELS){var P=N.rect.width,F=N.rect.height;N.labelWidth&&(N.labelPosHorizontal=="left"?(N.rect.x-=N.labelWidth,N.setWidth(P+N.labelWidth),N.labelMarginLeft=N.labelWidth):N.labelPosHorizontal=="center"&&N.labelWidth>P?(N.rect.x-=(N.labelWidth-P)/2,N.setWidth(N.labelWidth),N.labelMarginLeft=(N.labelWidth-P)/2):N.labelPosHorizontal=="right"&&N.setWidth(P+N.labelWidth)),N.labelHeight&&(N.labelPosVertical=="top"?(N.rect.y-=N.labelHeight,N.setHeight(F+N.labelHeight),N.labelMarginTop=N.labelHeight):N.labelPosVertical=="center"&&N.labelHeight>F?(N.rect.y-=(N.labelHeight-F)/2,N.setHeight(N.labelHeight),N.labelMarginTop=(N.labelHeight-F)/2):N.labelPosVertical=="bottom"&&N.setHeight(F+N.labelHeight))}})},I.prototype.tileNodes=function(k,R){var S=this.tileNodesByFavoringDim(k,R,!0),O=this.tileNodesByFavoringDim(k,R,!1),N=this.getOrgRatio(S),P=this.getOrgRatio(O),F;return PB&&(B=Q.getWidth())});var $=P/N,z=F/N,W=Math.pow(S-O,2)+4*($+O)*(z+S)*N,j=(O-S+Math.sqrt(W))/(2*($+O)),K;R?(K=Math.ceil(j),K==j&&K++):K=Math.floor(j);var ie=K*($+O)-O;return B>ie&&(ie=B),ie+=O*2,ie},I.prototype.tileNodesByFavoringDim=function(k,R,S){var O=m.TILING_PADDING_VERTICAL,N=m.TILING_PADDING_HORIZONTAL,P=m.TILING_COMPARE_BY,F={rows:[],rowWidth:[],rowHeight:[],width:0,height:R,verticalPadding:O,horizontalPadding:N,centerX:0,centerY:0};P&&(F.idealRowWidth=this.calcIdealRowWidth(k,S));var B=o(function(ee){return ee.rect.width*ee.rect.height},"getNodeArea"),$=o(function(ee,J){return B(J)-B(ee)},"areaCompareFcn");k.sort(function(Q,ee){var J=$;return F.idealRowWidth?(J=P,J(Q.id,ee.id)):J(Q,ee)});for(var z=0,W=0,j=0;j0&&(F+=k.horizontalPadding),k.rowWidth[S]=F,k.width0&&(B+=k.verticalPadding);var $=0;B>k.rowHeight[S]&&($=k.rowHeight[S],k.rowHeight[S]=B,$=k.rowHeight[S]-$),k.height+=$,k.rows[S].push(R)},I.prototype.getShortestRowIndex=function(k){for(var R=-1,S=Number.MAX_VALUE,O=0;OS&&(R=O,S=k.rowWidth[O]);return R},I.prototype.canAddHorizontal=function(k,R,S){if(k.idealRowWidth){var O=k.rows.length-1,N=k.rowWidth[O];return N+R+k.horizontalPadding<=k.idealRowWidth}var P=this.getShortestRowIndex(k);if(P<0)return!0;var F=k.rowWidth[P];if(F+k.horizontalPadding+R<=k.width)return!0;var B=0;k.rowHeight[P]0&&(B=S+k.verticalPadding-k.rowHeight[P]);var $;k.width-F>=R+k.horizontalPadding?$=(k.height+B)/(F+R+k.horizontalPadding):$=(k.height+B)/k.width,B=S+k.verticalPadding;var z;return k.widthP&&R!=S){O.splice(-1,1),k.rows[S].push(N),k.rowWidth[R]=k.rowWidth[R]-P,k.rowWidth[S]=k.rowWidth[S]+P,k.width=k.rowWidth[instance.getLongestRowIndex(k)];for(var F=Number.MIN_VALUE,B=0;BF&&(F=O[B].height);R>0&&(F+=k.verticalPadding);var $=k.rowHeight[R]+k.rowHeight[S];k.rowHeight[R]=F,k.rowHeight[S]0)for(var ie=N;ie<=P;ie++)K[0]+=this.grid[ie][F-1].length+this.grid[ie][F].length-1;if(P0)for(var ie=F;ie<=B;ie++)K[3]+=this.grid[N-1][ie].length+this.grid[N][ie].length-1;for(var Q=T.MAX_VALUE,ee,J,H=0;H{var u=l(551).FDLayoutNode,h=l(551).IMath;function f(p,m,g,y){u.call(this,p,m,g,y)}o(f,"CoSENode"),f.prototype=Object.create(u.prototype);for(var d in u)f[d]=u[d];f.prototype.calculateDisplacement=function(){var p=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementX=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementX)),Math.abs(this.displacementY)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementY=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},f.prototype.propogateDisplacementToChildren=function(p,m){for(var g=this.getChild().getNodes(),y,v=0;v{function u(g){if(Array.isArray(g)){for(var y=0,v=Array(g.length);y0){var Tt=0;Ye.forEach(function(rt){Te=="horizontal"?(me.set(rt,x.has(rt)?b[x.get(rt)]:Ee.get(rt)),Tt+=me.get(rt)):(me.set(rt,x.has(rt)?w[x.get(rt)]:Ee.get(rt)),Tt+=me.get(rt))}),Tt=Tt/Ye.length,vt.forEach(function(rt){se.has(rt)||me.set(rt,Tt)})}else{var $e=0;vt.forEach(function(rt){Te=="horizontal"?$e+=x.has(rt)?b[x.get(rt)]:Ee.get(rt):$e+=x.has(rt)?w[x.get(rt)]:Ee.get(rt)}),$e=$e/vt.length,vt.forEach(function(rt){me.set(rt,$e)})}});for(var tt=o(function(){var Ye=Re.shift(),Tt=U.get(Ye);Tt.forEach(function($e){if(me.get($e.id)rt&&(rt=Rt),zt<$e&&($e=zt),zt>ft&&(ft=zt)}}catch(yt){er=!0,dt=yt}finally{try{!kt&&Xe.return&&Xe.return()}finally{if(er)throw dt}}var Xn=(Tt+rt)/2-($e+ft)/2,or=!0,hn=!1,Tn=void 0;try{for(var Ur=vt[Symbol.iterator](),ri;!(or=(ri=Ur.next()).done);or=!0){var Mn=ri.value;me.set(Mn,me.get(Mn)+Xn)}}catch(yt){hn=!0,Tn=yt}finally{try{!or&&Ur.return&&Ur.return()}finally{if(hn)throw Tn}}})}return me},"findAppropriatePositionForRelativePlacement"),D=o(function(U){var Te=0,se=0,Ee=0,Ae=0;if(U.forEach(function(We){We.left?b[x.get(We.left)]-b[x.get(We.right)]>=0?Te++:se++:w[x.get(We.top)]-w[x.get(We.bottom)]>=0?Ee++:Ae++}),Te>se&&Ee>Ae)for(var Pe=0;Pese)for(var Me=0;MeAe)for(var me=0;me1)y.fixedNodeConstraint.forEach(function(ye,U){O[U]=[ye.position.x,ye.position.y],N[U]=[b[x.get(ye.nodeId)],w[x.get(ye.nodeId)]]}),P=!0;else if(y.alignmentConstraint)(function(){var ye=0;if(y.alignmentConstraint.vertical){for(var U=y.alignmentConstraint.vertical,Te=o(function(me){var We=new Set;U[me].forEach(function(gt){We.add(gt)});var Re=new Set([].concat(u(We)).filter(function(gt){return B.has(gt)})),tt=void 0;Re.size>0?tt=b[x.get(Re.values().next().value)]:tt=A(We).x,U[me].forEach(function(gt){O[ye]=[tt,w[x.get(gt)]],N[ye]=[b[x.get(gt)],w[x.get(gt)]],ye++})},"_loop2"),se=0;se0?tt=b[x.get(Re.values().next().value)]:tt=A(We).y,Ee[me].forEach(function(gt){O[ye]=[b[x.get(gt)],tt],N[ye]=[b[x.get(gt)],w[x.get(gt)]],ye++})},"_loop3"),Pe=0;Pej&&(j=W[ie].length,K=ie);if(j0){var Ve={x:0,y:0};y.fixedNodeConstraint.forEach(function(ye,U){var Te={x:b[x.get(ye.nodeId)],y:w[x.get(ye.nodeId)]},se=ye.position,Ee=C(se,Te);Ve.x+=Ee.x,Ve.y+=Ee.y}),Ve.x/=y.fixedNodeConstraint.length,Ve.y/=y.fixedNodeConstraint.length,b.forEach(function(ye,U){b[U]+=Ve.x}),w.forEach(function(ye,U){w[U]+=Ve.y}),y.fixedNodeConstraint.forEach(function(ye){b[x.get(ye.nodeId)]=ye.position.x,w[x.get(ye.nodeId)]=ye.position.y})}if(y.alignmentConstraint){if(y.alignmentConstraint.vertical)for(var Ge=y.alignmentConstraint.vertical,He=o(function(U){var Te=new Set;Ge[U].forEach(function(Ae){Te.add(Ae)});var se=new Set([].concat(u(Te)).filter(function(Ae){return B.has(Ae)})),Ee=void 0;se.size>0?Ee=b[x.get(se.values().next().value)]:Ee=A(Te).x,Te.forEach(function(Ae){B.has(Ae)||(b[x.get(Ae)]=Ee)})},"_loop4"),xe=0;xe0?Ee=w[x.get(se.values().next().value)]:Ee=A(Te).y,Te.forEach(function(Ae){B.has(Ae)||(w[x.get(Ae)]=Ee)})},"_loop5"),he=0;he{a.exports=t}},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return e[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(45);return i})()})});var c2e=Ni((bb,pF)=>{"use strict";o(function(e,r){typeof bb=="object"&&typeof pF=="object"?pF.exports=r(dF()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof bb=="object"?bb.cytoscapeFcose=r(dF()):e.cytoscapeFcose=r(e.coseBase)},"webpackUniversalModuleDefinition")(bb,function(t){return(()=>{"use strict";var e={658:a=>{a.exports=Object.assign!=null?Object.assign.bind(Object):function(s){for(var l=arguments.length,u=Array(l>1?l-1:0),h=1;h{var u=function(){function d(p,m){var g=[],y=!0,v=!1,x=void 0;try{for(var b=p[Symbol.iterator](),w;!(y=(w=b.next()).done)&&(g.push(w.value),!(m&&g.length===m));y=!0);}catch(_){v=!0,x=_}finally{try{!y&&b.return&&b.return()}finally{if(v)throw x}}return g}return o(d,"sliceIterator"),function(p,m){if(Array.isArray(p))return p;if(Symbol.iterator in Object(p))return d(p,m);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),h=l(140).layoutBase.LinkedList,f={};f.getTopMostNodes=function(d){for(var p={},m=0;m0&&P.merge(z)});for(var F=0;F1){w=x[0],_=w.connectedEdges().length,x.forEach(function(N){N.connectedEdges().length<_&&(_=N.connectedEdges().length,w=N)}),L.push(w.id());var O=d.collection();O.merge(x[0]),x.forEach(function(N){O.merge(N)}),x=[],m=m.difference(O),E++}},"_loop");do A();while(!T);return g&&L.length>0&&g.set("dummy"+(g.size+1),L),C},f.relocateComponent=function(d,p,m){if(!m.fixedNodeConstraint){var g=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,v=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY;if(m.quality=="draft"){var b=!0,w=!1,_=void 0;try{for(var T=p.nodeIndexes[Symbol.iterator](),E;!(b=(E=T.next()).done);b=!0){var L=E.value,C=u(L,2),A=C[0],I=C[1],D=m.cy.getElementById(A);if(D){var k=D.boundingBox(),R=p.xCoords[I]-k.w/2,S=p.xCoords[I]+k.w/2,O=p.yCoords[I]-k.h/2,N=p.yCoords[I]+k.h/2;Ry&&(y=S),Ox&&(x=N)}}}catch(z){w=!0,_=z}finally{try{!b&&T.return&&T.return()}finally{if(w)throw _}}var P=d.x-(y+g)/2,F=d.y-(x+v)/2;p.xCoords=p.xCoords.map(function(z){return z+P}),p.yCoords=p.yCoords.map(function(z){return z+F})}else{Object.keys(p).forEach(function(z){var W=p[z],j=W.getRect().x,K=W.getRect().x+W.getRect().width,ie=W.getRect().y,Q=W.getRect().y+W.getRect().height;jy&&(y=K),iex&&(x=Q)});var B=d.x-(y+g)/2,$=d.y-(x+v)/2;Object.keys(p).forEach(function(z){var W=p[z];W.setCenter(W.getCenterX()+B,W.getCenterY()+$)})}}},f.calcBoundingBox=function(d,p,m,g){for(var y=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,x=Number.MAX_SAFE_INTEGER,b=Number.MIN_SAFE_INTEGER,w=void 0,_=void 0,T=void 0,E=void 0,L=d.descendants().not(":parent"),C=L.length,A=0;Aw&&(y=w),v<_&&(v=_),x>T&&(x=T),b{var u=l(548),h=l(140).CoSELayout,f=l(140).CoSENode,d=l(140).layoutBase.PointD,p=l(140).layoutBase.DimensionD,m=l(140).layoutBase.LayoutConstants,g=l(140).layoutBase.FDLayoutConstants,y=l(140).CoSEConstants,v=o(function(b,w){var _=b.cy,T=b.eles,E=T.nodes(),L=T.edges(),C=void 0,A=void 0,I=void 0,D={};b.randomize&&(C=w.nodeIndexes,A=w.xCoords,I=w.yCoords);var k=o(function(z){return typeof z=="function"},"isFn"),R=o(function(z,W){return k(z)?z(W):z},"optFn"),S=u.calcParentsWithoutChildren(_,T),O=o(function $(z,W,j,K){for(var ie=W.length,Q=0;Q0){var ae=void 0;ae=j.getGraphManager().add(j.newGraph(),H),$(ae,J,j,K)}}},"processChildrenList"),N=o(function(z,W,j){for(var K=0,ie=0,Q=0;Q0?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=K/ie:k(b.idealEdgeLength)?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=50:y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=b.idealEdgeLength,y.MIN_REPULSION_DIST=g.MIN_REPULSION_DIST=g.DEFAULT_EDGE_LENGTH/10,y.DEFAULT_RADIAL_SEPARATION=g.DEFAULT_EDGE_LENGTH)},"processEdges"),P=o(function(z,W){W.fixedNodeConstraint&&(z.constraints.fixedNodeConstraint=W.fixedNodeConstraint),W.alignmentConstraint&&(z.constraints.alignmentConstraint=W.alignmentConstraint),W.relativePlacementConstraint&&(z.constraints.relativePlacementConstraint=W.relativePlacementConstraint)},"processConstraints");b.nestingFactor!=null&&(y.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=g.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=b.nestingFactor),b.gravity!=null&&(y.DEFAULT_GRAVITY_STRENGTH=g.DEFAULT_GRAVITY_STRENGTH=b.gravity),b.numIter!=null&&(y.MAX_ITERATIONS=g.MAX_ITERATIONS=b.numIter),b.gravityRange!=null&&(y.DEFAULT_GRAVITY_RANGE_FACTOR=g.DEFAULT_GRAVITY_RANGE_FACTOR=b.gravityRange),b.gravityCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_STRENGTH=g.DEFAULT_COMPOUND_GRAVITY_STRENGTH=b.gravityCompound),b.gravityRangeCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=g.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=b.gravityRangeCompound),b.initialEnergyOnIncremental!=null&&(y.DEFAULT_COOLING_FACTOR_INCREMENTAL=g.DEFAULT_COOLING_FACTOR_INCREMENTAL=b.initialEnergyOnIncremental),b.tilingCompareBy!=null&&(y.TILING_COMPARE_BY=b.tilingCompareBy),b.quality=="proof"?m.QUALITY=2:m.QUALITY=0,y.NODE_DIMENSIONS_INCLUDE_LABELS=g.NODE_DIMENSIONS_INCLUDE_LABELS=m.NODE_DIMENSIONS_INCLUDE_LABELS=b.nodeDimensionsIncludeLabels,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!b.randomize,y.ANIMATE=g.ANIMATE=m.ANIMATE=b.animate,y.TILE=b.tile,y.TILING_PADDING_VERTICAL=typeof b.tilingPaddingVertical=="function"?b.tilingPaddingVertical.call():b.tilingPaddingVertical,y.TILING_PADDING_HORIZONTAL=typeof b.tilingPaddingHorizontal=="function"?b.tilingPaddingHorizontal.call():b.tilingPaddingHorizontal,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!0,y.PURE_INCREMENTAL=!b.randomize,m.DEFAULT_UNIFORM_LEAF_NODE_SIZES=b.uniformNodeDimensions,b.step=="transformed"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!1),b.step=="enforced"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!1),b.step=="cose"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!0),b.step=="all"&&(b.randomize?y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!0),b.fixedNodeConstraint||b.alignmentConstraint||b.relativePlacementConstraint?y.TREE_REDUCTION_ON_INCREMENTAL=!1:y.TREE_REDUCTION_ON_INCREMENTAL=!0;var F=new h,B=F.newGraphManager();return O(B.addRoot(),u.getTopMostNodes(E),F,b),N(F,B,L),P(F,b),F.runLayout(),D},"coseLayout");a.exports={coseLayout:v}},212:(a,s,l)=>{var u=function(){function b(w,_){for(var T=0;T<_.length;T++){var E=_[T];E.enumerable=E.enumerable||!1,E.configurable=!0,"value"in E&&(E.writable=!0),Object.defineProperty(w,E.key,E)}}return o(b,"defineProperties"),function(w,_,T){return _&&b(w.prototype,_),T&&b(w,T),w}}();function h(b,w){if(!(b instanceof w))throw new TypeError("Cannot call a class as a function")}o(h,"_classCallCheck");var f=l(658),d=l(548),p=l(657),m=p.spectralLayout,g=l(816),y=g.coseLayout,v=Object.freeze({quality:"default",randomize:!0,animate:!0,animationDuration:1e3,animationEasing:void 0,fit:!0,padding:30,nodeDimensionsIncludeLabels:!1,uniformNodeDimensions:!1,packComponents:!0,step:"all",samplingType:!0,sampleSize:25,nodeSeparation:75,piTol:1e-7,nodeRepulsion:o(function(w){return 4500},"nodeRepulsion"),idealEdgeLength:o(function(w){return 50},"idealEdgeLength"),edgeElasticity:o(function(w){return .45},"edgeElasticity"),nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,tilingCompareBy:void 0,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.3,fixedNodeConstraint:void 0,alignmentConstraint:void 0,relativePlacementConstraint:void 0,ready:o(function(){},"ready"),stop:o(function(){},"stop")}),x=function(){function b(w){h(this,b),this.options=f({},v,w)}return o(b,"Layout"),u(b,[{key:"run",value:o(function(){var _=this,T=this.options,E=T.cy,L=T.eles,C=[],A=void 0,I=void 0,D=[],k=void 0,R=[];T.fixedNodeConstraint&&(!Array.isArray(T.fixedNodeConstraint)||T.fixedNodeConstraint.length==0)&&(T.fixedNodeConstraint=void 0),T.alignmentConstraint&&(T.alignmentConstraint.vertical&&(!Array.isArray(T.alignmentConstraint.vertical)||T.alignmentConstraint.vertical.length==0)&&(T.alignmentConstraint.vertical=void 0),T.alignmentConstraint.horizontal&&(!Array.isArray(T.alignmentConstraint.horizontal)||T.alignmentConstraint.horizontal.length==0)&&(T.alignmentConstraint.horizontal=void 0)),T.relativePlacementConstraint&&(!Array.isArray(T.relativePlacementConstraint)||T.relativePlacementConstraint.length==0)&&(T.relativePlacementConstraint=void 0);var S=T.fixedNodeConstraint||T.alignmentConstraint||T.relativePlacementConstraint;S&&(T.tile=!1,T.packComponents=!1);var O=void 0,N=!1;if(E.layoutUtilities&&T.packComponents&&(O=E.layoutUtilities("get"),O||(O=E.layoutUtilities()),N=!0),L.nodes().length>0)if(N){var B=d.getTopMostNodes(T.eles.nodes());if(k=d.connectComponents(E,T.eles,B),k.forEach(function(oe){var ke=oe.boundingBox();R.push({x:ke.x1+ke.w/2,y:ke.y1+ke.h/2})}),T.randomize&&k.forEach(function(oe){T.eles=oe,C.push(m(T))}),T.quality=="default"||T.quality=="proof"){var $=E.collection();if(T.tile){var z=new Map,W=[],j=[],K=0,ie={nodeIndexes:z,xCoords:W,yCoords:j},Q=[];if(k.forEach(function(oe,ke){oe.edges().length==0&&(oe.nodes().forEach(function(Fe,Be){$.merge(oe.nodes()[Be]),Fe.isParent()||(ie.nodeIndexes.set(oe.nodes()[Be].id(),K++),ie.xCoords.push(oe.nodes()[0].position().x),ie.yCoords.push(oe.nodes()[0].position().y))}),Q.push(ke))}),$.length>1){var ee=$.boundingBox();R.push({x:ee.x1+ee.w/2,y:ee.y1+ee.h/2}),k.push($),C.push(ie);for(var J=Q.length-1;J>=0;J--)k.splice(Q[J],1),C.splice(Q[J],1),R.splice(Q[J],1)}}k.forEach(function(oe,ke){T.eles=oe,D.push(y(T,C[ke])),d.relocateComponent(R[ke],D[ke],T)})}else k.forEach(function(oe,ke){d.relocateComponent(R[ke],C[ke],T)});var H=new Set;if(k.length>1){var q=[],Z=L.filter(function(oe){return oe.css("display")=="none"});k.forEach(function(oe,ke){var Fe=void 0;if(T.quality=="draft"&&(Fe=C[ke].nodeIndexes),oe.nodes().not(Z).length>0){var Be={};Be.edges=[],Be.nodes=[];var Ve=void 0;oe.nodes().not(Z).forEach(function(Ge){if(T.quality=="draft")if(!Ge.isParent())Ve=Fe.get(Ge.id()),Be.nodes.push({x:C[ke].xCoords[Ve]-Ge.boundingbox().w/2,y:C[ke].yCoords[Ve]-Ge.boundingbox().h/2,width:Ge.boundingbox().w,height:Ge.boundingbox().h});else{var He=d.calcBoundingBox(Ge,C[ke].xCoords,C[ke].yCoords,Fe);Be.nodes.push({x:He.topLeftX,y:He.topLeftY,width:He.width,height:He.height})}else D[ke][Ge.id()]&&Be.nodes.push({x:D[ke][Ge.id()].getLeft(),y:D[ke][Ge.id()].getTop(),width:D[ke][Ge.id()].getWidth(),height:D[ke][Ge.id()].getHeight()})}),oe.edges().forEach(function(Ge){var He=Ge.source(),xe=Ge.target();if(He.css("display")!="none"&&xe.css("display")!="none")if(T.quality=="draft"){var X=Fe.get(He.id()),fe=Fe.get(xe.id()),he=[],ge=[];if(He.isParent()){var ne=d.calcBoundingBox(He,C[ke].xCoords,C[ke].yCoords,Fe);he.push(ne.topLeftX+ne.width/2),he.push(ne.topLeftY+ne.height/2)}else he.push(C[ke].xCoords[X]),he.push(C[ke].yCoords[X]);if(xe.isParent()){var ye=d.calcBoundingBox(xe,C[ke].xCoords,C[ke].yCoords,Fe);ge.push(ye.topLeftX+ye.width/2),ge.push(ye.topLeftY+ye.height/2)}else ge.push(C[ke].xCoords[fe]),ge.push(C[ke].yCoords[fe]);Be.edges.push({startX:he[0],startY:he[1],endX:ge[0],endY:ge[1]})}else D[ke][He.id()]&&D[ke][xe.id()]&&Be.edges.push({startX:D[ke][He.id()].getCenterX(),startY:D[ke][He.id()].getCenterY(),endX:D[ke][xe.id()].getCenterX(),endY:D[ke][xe.id()].getCenterY()})}),Be.nodes.length>0&&(q.push(Be),H.add(ke))}});var ae=O.packComponents(q,T.randomize).shifts;if(T.quality=="draft")C.forEach(function(oe,ke){var Fe=oe.xCoords.map(function(Ve){return Ve+ae[ke].dx}),Be=oe.yCoords.map(function(Ve){return Ve+ae[ke].dy});oe.xCoords=Fe,oe.yCoords=Be});else{var ue=0;H.forEach(function(oe){Object.keys(D[oe]).forEach(function(ke){var Fe=D[oe][ke];Fe.setCenter(Fe.getCenterX()+ae[ue].dx,Fe.getCenterY()+ae[ue].dy)}),ue++})}}}else{var P=T.eles.boundingBox();if(R.push({x:P.x1+P.w/2,y:P.y1+P.h/2}),T.randomize){var F=m(T);C.push(F)}T.quality=="default"||T.quality=="proof"?(D.push(y(T,C[0])),d.relocateComponent(R[0],D[0],T)):d.relocateComponent(R[0],C[0],T)}var ce=o(function(ke,Fe){if(T.quality=="default"||T.quality=="proof"){typeof ke=="number"&&(ke=Fe);var Be=void 0,Ve=void 0,Ge=ke.data("id");return D.forEach(function(xe){Ge in xe&&(Be={x:xe[Ge].getRect().getCenterX(),y:xe[Ge].getRect().getCenterY()},Ve=xe[Ge])}),T.nodeDimensionsIncludeLabels&&(Ve.labelWidth&&(Ve.labelPosHorizontal=="left"?Be.x+=Ve.labelWidth/2:Ve.labelPosHorizontal=="right"&&(Be.x-=Ve.labelWidth/2)),Ve.labelHeight&&(Ve.labelPosVertical=="top"?Be.y+=Ve.labelHeight/2:Ve.labelPosVertical=="bottom"&&(Be.y-=Ve.labelHeight/2))),Be==null&&(Be={x:ke.position("x"),y:ke.position("y")}),{x:Be.x,y:Be.y}}else{var He=void 0;return C.forEach(function(xe){var X=xe.nodeIndexes.get(ke.id());X!=null&&(He={x:xe.xCoords[X],y:xe.yCoords[X]})}),He==null&&(He={x:ke.position("x"),y:ke.position("y")}),{x:He.x,y:He.y}}},"getPositions");if(T.quality=="default"||T.quality=="proof"||T.randomize){var te=d.calcParentsWithoutChildren(E,L),De=L.filter(function(oe){return oe.css("display")=="none"});T.eles=L.not(De),L.nodes().not(":parent").not(De).layoutPositions(_,T,ce),te.length>0&&te.forEach(function(oe){oe.position(ce(oe))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")},"run")}]),b}();a.exports=x},657:(a,s,l)=>{var u=l(548),h=l(140).layoutBase.Matrix,f=l(140).layoutBase.SVD,d=o(function(m){var g=m.cy,y=m.eles,v=y.nodes(),x=y.nodes(":parent"),b=new Map,w=new Map,_=new Map,T=[],E=[],L=[],C=[],A=[],I=[],D=[],k=[],R=void 0,S=void 0,O=1e8,N=1e-9,P=m.piTol,F=m.samplingType,B=m.nodeSeparation,$=void 0,z=o(function(){for(var Te=0,se=0,Ee=!1;se<$;){Te=Math.floor(Math.random()*S),Ee=!1;for(var Ae=0;Ae=Pe;){me=Ae[Pe++];for(var vt=T[me],Ye=0;Yett&&(tt=A[$e],gt=$e)}return gt},"BFS"),j=o(function(Te){var se=void 0;if(Te){se=Math.floor(Math.random()*S),R=se;for(var Ae=0;Ae=1)break;tt=Re}for(var vt=0;vt=1)break;tt=Re}for(var Tt=0;Tt0&&(se.isParent()?T[Te].push(_.get(se.id())):T[Te].push(se.id()))})});var te=o(function(Te){var se=w.get(Te),Ee=void 0;b.get(Te).forEach(function(Ae){g.getElementById(Ae).isParent()?Ee=_.get(Ae):Ee=Ae,T[se].push(Ee),T[w.get(Ee)].push(Te)})},"_loop"),De=!0,oe=!1,ke=void 0;try{for(var Fe=b.keys()[Symbol.iterator](),Be;!(De=(Be=Fe.next()).done);De=!0){var Ve=Be.value;te(Ve)}}catch(U){oe=!0,ke=U}finally{try{!De&&Fe.return&&Fe.return()}finally{if(oe)throw ke}}S=w.size;var Ge=void 0;if(S>2){$=S{var u=l(212),h=o(function(d){d&&d("layout","fcose",u)},"register");typeof cytoscape<"u"&&h(cytoscape),a.exports=h},140:a=>{a.exports=t}},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return e[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(579);return i})()})});var S1,j0,mF=M(()=>{"use strict";Kc();S1=o(t=>`${t}`,"wrapIcon"),j0={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:S1('')},server:{body:S1('')},disk:{body:S1('')},internet:{body:S1('')},cloud:{body:S1('')},unknown:RS,blank:{body:S1("")}}}});var u2e,h2e,f2e,d2e,p2e=M(()=>{"use strict";Kc();Vt();Dl();yb();mF();iS();u2e=o(async function(t,e){let r=Li("padding"),n=Li("iconSize"),i=n/2,a=n/6,s=a/2;await Promise.all(e.edges().map(async l=>{let{source:u,sourceDir:h,sourceArrow:f,sourceGroup:d,target:p,targetDir:m,targetArrow:g,targetGroup:y,label:v}=nS(l),{x,y:b}=l[0].sourceEndpoint(),{x:w,y:_}=l[0].midpoint(),{x:T,y:E}=l[0].targetEndpoint(),L=r+4;if(d&&(us(h)?x+=h==="L"?-L:L:b+=h==="T"?-L:L+18),y&&(us(m)?T+=m==="L"?-L:L:E+=m==="T"?-L:L+18),!d&&X0.getNode(u)?.type==="junction"&&(us(h)?x+=h==="L"?i:-i:b+=h==="T"?i:-i),!y&&X0.getNode(p)?.type==="junction"&&(us(m)?T+=m==="L"?i:-i:E+=m==="T"?i:-i),l[0]._private.rscratch){let C=t.insert("g");if(C.insert("path").attr("d",`M ${x},${b} L ${w},${_} L${T},${E} `).attr("class","edge"),f){let A=us(h)?mb[h](x,a):x-s,I=qc(h)?mb[h](b,a):b-s;C.insert("polygon").attr("points",lF[h](a)).attr("transform",`translate(${A},${I})`).attr("class","arrow")}if(g){let A=us(m)?mb[m](T,a):T-s,I=qc(m)?mb[m](E,a):E-s;C.insert("polygon").attr("points",lF[m](a)).attr("transform",`translate(${A},${I})`).attr("class","arrow")}if(v){let A=rS(h,m)?"XY":us(h)?"X":"Y",I=0;A==="X"?I=Math.abs(x-T):A==="Y"?I=Math.abs(b-E)/1.5:I=Math.abs(x-T)/2;let D=C.append("g");if(await Si(D,v,{useHtmlLabels:!1,width:I,classes:"architecture-service-label"},de()),D.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),A==="X")D.attr("transform","translate("+w+", "+_+")");else if(A==="Y")D.attr("transform","translate("+w+", "+_+") rotate(-90)");else if(A==="XY"){let k=gb(h,m);if(k&&Jve(k)){let R=D.node().getBoundingClientRect(),[S,O]=t2e(k);D.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*S*O*45})`);let N=D.node().getBoundingClientRect();D.attr("transform",` - translate(${w}, ${_-R.height/2}) - translate(${S*N.width/2}, ${O*N.height/2}) - rotate(${-1*S*O*45}, 0, ${R.height/2}) - `)}}}}}))},"drawEdges"),h2e=o(async function(t,e){let n=Li("padding")*.75,i=Li("fontSize"),s=Li("iconSize")/2;await Promise.all(e.nodes().map(async l=>{let u=Mf(l);if(u.type==="group"){let{h,w:f,x1:d,y1:p}=l.boundingBox();t.append("rect").attr("x",d+s).attr("y",p+s).attr("width",f).attr("height",h).attr("class","node-bkg");let m=t.append("g"),g=d,y=p;if(u.icon){let v=m.append("g");v.html(`${await wo(u.icon,{height:n,width:n,fallbackPrefix:j0.prefix})}`),v.attr("transform","translate("+(g+s+1)+", "+(y+s+1)+")"),g+=n,y+=i/2-1-2}if(u.label){let v=m.append("g");await Si(v,u.label,{useHtmlLabels:!1,width:f,classes:"architecture-service-label"},de()),v.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),v.attr("transform","translate("+(g+s+4)+", "+(y+s+2)+")")}}}))},"drawGroups"),f2e=o(async function(t,e,r){for(let n of r){let i=e.append("g"),a=Li("iconSize");if(n.title){let h=i.append("g");await Si(h,n.title,{useHtmlLabels:!1,width:a*1.5,classes:"architecture-service-label"},de()),h.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),h.attr("transform","translate("+a/2+", "+a+")")}let s=i.append("g");if(n.icon)s.html(`${await wo(n.icon,{height:a,width:a,fallbackPrefix:j0.prefix})}`);else if(n.iconText){s.html(`${await wo("blank",{height:a,width:a,fallbackPrefix:j0.prefix})}`);let d=s.append("g").append("foreignObject").attr("width",a).attr("height",a).append("div").attr("class","node-icon-text").attr("style",`height: ${a}px;`).append("div").html(n.iconText),p=parseInt(window.getComputedStyle(d.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;d.attr("style",`-webkit-line-clamp: ${Math.floor((a-2)/p)};`)}else s.append("path").attr("class","node-bkg").attr("id","node-"+n.id).attr("d",`M0 ${a} v${-a} q0,-5 5,-5 h${a} q5,0 5,5 v${a} H0 Z`);i.attr("class","architecture-service");let{width:l,height:u}=i._groups[0][0].getBBox();n.width=l,n.height=u,t.setElementForId(n.id,i)}return 0},"drawServices"),d2e=o(function(t,e,r){r.forEach(n=>{let i=e.append("g"),a=Li("iconSize");i.append("g").append("rect").attr("id","node-"+n.id).attr("fill-opacity","0").attr("width",a).attr("height",a),i.attr("class","architecture-junction");let{width:l,height:u}=i._groups[0][0].getBBox();i.width=l,i.height=u,t.setElementForId(n.id,i)})},"drawJunctions")});function Lit(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"service",id:r.id,icon:r.icon,label:r.title,parent:r.in,width:Li("iconSize"),height:Li("iconSize")},classes:"node-service"})})}function Dit(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"junction",id:r.id,parent:r.in,width:Li("iconSize"),height:Li("iconSize")},classes:"node-junction"})})}function Nit(t,e){e.nodes().map(r=>{let n=Mf(r);if(n.type==="group")return;n.x=r.position().x,n.y=r.position().y,t.getElementById(n.id).attr("transform","translate("+(n.x||0)+","+(n.y||0)+")")})}function Rit(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"group",id:r.id,icon:r.icon,label:r.title,parent:r.in},classes:"node-group"})})}function Mit(t,e){t.forEach(r=>{let{lhsId:n,rhsId:i,lhsInto:a,lhsGroup:s,rhsInto:l,lhsDir:u,rhsDir:h,rhsGroup:f,title:d}=r,p=rS(r.lhsDir,r.rhsDir)?"segments":"straight",m={id:`${n}-${i}`,label:d,source:n,sourceDir:u,sourceArrow:a,sourceGroup:s,sourceEndpoint:u==="L"?"0 50%":u==="R"?"100% 50%":u==="T"?"50% 0":"50% 100%",target:i,targetDir:h,targetArrow:l,targetGroup:f,targetEndpoint:h==="L"?"0 50%":h==="R"?"100% 50%":h==="T"?"50% 0":"50% 100%"};e.add({group:"edges",data:m,classes:p})})}function Iit(t){let e=t.map(i=>{let a={},s={};return Object.entries(i).forEach(([l,[u,h]])=>{a[h]||(a[h]=[]),s[u]||(s[u]=[]),a[h].push(l),s[u].push(l)}),{horiz:Object.values(a).filter(l=>l.length>1),vert:Object.values(s).filter(l=>l.length>1)}}),[r,n]=e.reduce(([i,a],{horiz:s,vert:l})=>[[...i,...s],[...a,...l]],[[],[]]);return{horizontal:r,vertical:n}}function Oit(t){let e=[],r=o(i=>`${i[0]},${i[1]}`,"posToStr"),n=o(i=>i.split(",").map(a=>parseInt(a)),"strToPos");return t.forEach(i=>{let a=Object.fromEntries(Object.entries(i).map(([h,f])=>[r(f),h])),s=[r([0,0])],l={},u={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;s.length>0;){let h=s.shift();if(h){l[h]=1;let f=a[h];if(f){let d=n(h);Object.entries(u).forEach(([p,m])=>{let g=r([d[0]+m[0],d[1]+m[1]]),y=a[g];y&&!l[g]&&(s.push(g),e.push({[oF[p]]:y,[oF[Zve(p)]]:f,gap:1.5*Li("iconSize")}))})}}}}),e}function Pit(t,e,r,n,{spatialMaps:i}){return new Promise(a=>{let s=ze("body").append("div").attr("id","cy").attr("style","display:none"),l=sl({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight",label:"data(label)","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${Li("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${Li("padding")}px`}}]});s.remove(),Rit(r,l),Lit(t,l),Dit(e,l),Mit(n,l);let u=Iit(i),h=Oit(i),f=l.layout({name:"fcose",quality:"proof",styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(d){let[p,m]=d.connectedNodes(),{parent:g}=Mf(p),{parent:y}=Mf(m);return g===y?1.5*Li("iconSize"):.5*Li("iconSize")},edgeElasticity(d){let[p,m]=d.connectedNodes(),{parent:g}=Mf(p),{parent:y}=Mf(m);return g===y?.45:.001},alignmentConstraint:u,relativePlacementConstraint:h});f.one("layoutstop",()=>{function d(p,m,g,y){let v,x,{x:b,y:w}=p,{x:_,y:T}=m;x=(y-w+(b-g)*(w-T)/(b-_))/Math.sqrt(1+Math.pow((w-T)/(b-_),2)),v=Math.sqrt(Math.pow(y-w,2)+Math.pow(g-b,2)-Math.pow(x,2));let E=Math.sqrt(Math.pow(_-b,2)+Math.pow(T-w,2));v=v/E;let L=(_-b)*(y-w)-(T-w)*(g-b);switch(!0){case L>=0:L=1;break;case L<0:L=-1;break}let C=(_-b)*(g-b)+(T-w)*(y-w);switch(!0){case C>=0:C=1;break;case C<0:C=-1;break}return x=Math.abs(x)*L,v=v*C,{distances:x,weights:v}}o(d,"getSegmentWeights"),l.startBatch();for(let p of Object.values(l.edges()))if(p.data?.()){let{x:m,y:g}=p.source().position(),{x:y,y:v}=p.target().position();if(m!==y&&g!==v){let x=p.sourceEndpoint(),b=p.targetEndpoint(),{sourceDir:w}=nS(p),[_,T]=qc(w)?[x.x,b.y]:[b.x,x.y],{weights:E,distances:L}=d(x,b,_,T);p.style("segment-distances",L),p.style("segment-weights",E)}}l.endBatch(),f.run()}),f.run(),l.ready(d=>{Y.info("Ready",d),a(l)})})}var m2e,Bit,g2e,y2e=M(()=>{"use strict";Kc();kB();m2e=ka(c2e(),1);mr();ht();Hu();ni();yb();mF();iS();p2e();Mb([{name:j0.prefix,icons:j0}]);sl.use(m2e.default);o(Lit,"addServices");o(Dit,"addJunctions");o(Nit,"positionNodes");o(Rit,"addGroups");o(Mit,"addEdges");o(Iit,"getAlignments");o(Oit,"getRelativeConstraints");o(Pit,"layoutArchitecture");Bit=o(async(t,e,r,n)=>{let i=n.db,a=i.getServices(),s=i.getJunctions(),l=i.getGroups(),u=i.getEdges(),h=i.getDataStructures(),f=Oa(e),d=f.append("g");d.attr("class","architecture-edges");let p=f.append("g");p.attr("class","architecture-services");let m=f.append("g");m.attr("class","architecture-groups"),await f2e(i,p,a),d2e(i,p,s);let g=await Pit(a,s,l,u,h);await u2e(d,g),await h2e(m,g),Nit(i,g),_o(void 0,f,Li("padding"),Li("useMaxWidth"))},"draw"),g2e={draw:Bit}});var v2e={};vr(v2e,{diagram:()=>Fit});var Fit,x2e=M(()=>{"use strict";s2e();yb();l2e();y2e();Fit={parser:a2e,db:X0,renderer:g2e,styles:o2e}});var Eat={};vr(Eat,{default:()=>kat});Kc();MS();$f();var WX="c4",s7e=o(t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),"detector"),o7e=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(HX(),UX));return{id:WX,diagram:t}},"loader"),l7e={id:WX,detector:s7e,loader:o7e},YX=l7e;var jie="flowchart",dPe=o((t,e)=>e?.flowchart?.defaultRenderer==="dagre-wrapper"||e?.flowchart?.defaultRenderer==="elk"?!1:/^\s*graph/.test(t),"detector"),pPe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(fT(),hT));return{id:jie,diagram:t}},"loader"),mPe={id:jie,detector:dPe,loader:pPe},Kie=mPe;var Qie="flowchart-v2",gPe=o((t,e)=>e?.flowchart?.defaultRenderer==="dagre-d3"?!1:(e?.flowchart?.defaultRenderer==="elk"&&(e.layout="elk"),/^\s*graph/.test(t)&&e?.flowchart?.defaultRenderer==="dagre-wrapper"?!0:/^\s*flowchart/.test(t)),"detector"),yPe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(fT(),hT));return{id:Qie,diagram:t}},"loader"),vPe={id:Qie,detector:gPe,loader:yPe},Zie=vPe;var Aae="er",qPe=o(t=>/^\s*erDiagram/.test(t),"detector"),XPe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Cae(),Sae));return{id:Aae,diagram:t}},"loader"),jPe={id:Aae,detector:qPe,loader:XPe},_ae=jPe;var Fue="gitGraph",x$e=o(t=>/^\s*gitGraph/.test(t),"detector"),b$e=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Bue(),Pue));return{id:Fue,diagram:t}},"loader"),w$e={id:Fue,detector:x$e,loader:b$e},zue=w$e;var mhe="gantt",lVe=o(t=>/^\s*gantt/.test(t),"detector"),cVe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(phe(),dhe));return{id:mhe,diagram:t}},"loader"),uVe={id:mhe,detector:lVe,loader:cVe},ghe=uVe;var She="info",gVe=o(t=>/^\s*info/.test(t),"detector"),yVe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Ehe(),khe));return{id:She,diagram:t}},"loader"),Che={id:She,detector:gVe,loader:yVe};var Phe="pie",DVe=o(t=>/^\s*pie/.test(t),"detector"),NVe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Ohe(),Ihe));return{id:Phe,diagram:t}},"loader"),Bhe={id:Phe,detector:DVe,loader:NVe};var Khe="quadrantChart",jVe=o(t=>/^\s*quadrantChart/.test(t),"detector"),KVe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(jhe(),Xhe));return{id:Khe,diagram:t}},"loader"),QVe={id:Khe,detector:jVe,loader:KVe},Qhe=QVe;var Efe="xychart",dUe=o(t=>/^\s*xychart-beta/.test(t),"detector"),pUe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(kfe(),Tfe));return{id:Efe,diagram:t}},"loader"),mUe={id:Efe,detector:dUe,loader:pUe},Sfe=mUe;var $fe="requirement",UUe=o(t=>/^\s*requirement(Diagram)?/.test(t),"detector"),HUe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Gfe(),zfe));return{id:$fe,diagram:t}},"loader"),WUe={id:$fe,detector:UUe,loader:HUe},Vfe=WUe;var mde="sequence",XHe=o(t=>/^\s*sequenceDiagram/.test(t),"detector"),jHe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(pde(),dde));return{id:mde,diagram:t}},"loader"),KHe={id:mde,detector:XHe,loader:jHe},gde=KHe;var Lde="class",_We=o((t,e)=>e?.class?.defaultRenderer==="dagre-wrapper"?!1:/^\s*classDiagram/.test(t),"detector"),LWe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(_de(),Ade));return{id:Lde,diagram:t}},"loader"),DWe={id:Lde,detector:_We,loader:LWe},Dde=DWe;var Mde="classDiagram",RWe=o((t,e)=>/^\s*classDiagram/.test(t)&&e?.class?.defaultRenderer==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(t),"detector"),MWe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Rde(),Nde));return{id:Mde,diagram:t}},"loader"),IWe={id:Mde,detector:RWe,loader:MWe},Ide=IWe;var S0e="state",LYe=o((t,e)=>e?.state?.defaultRenderer==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(t),"detector"),DYe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(E0e(),k0e));return{id:S0e,diagram:t}},"loader"),NYe={id:S0e,detector:LYe,loader:DYe},C0e=NYe;var L0e="stateDiagram",MYe=o((t,e)=>!!(/^\s*stateDiagram-v2/.test(t)||/^\s*stateDiagram/.test(t)&&e?.state?.defaultRenderer==="dagre-wrapper"),"detector"),IYe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(_0e(),A0e));return{id:L0e,diagram:t}},"loader"),OYe={id:L0e,detector:MYe,loader:IYe},D0e=OYe;var Y0e="journey",rqe=o(t=>/^\s*journey/.test(t),"detector"),nqe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(W0e(),H0e));return{id:Y0e,diagram:t}},"loader"),iqe={id:Y0e,detector:rqe,loader:nqe},q0e=iqe;ht();Hu();ni();var aqe=o((t,e,r)=>{Y.debug(`rendering svg for syntax error -`);let n=Oa(e),i=n.append("g");n.attr("viewBox","0 0 2412 512"),Zr(n,100,512,!0),i.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),i.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),i.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),i.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),i.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),i.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),i.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),i.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${r}`)},"draw"),yP={draw:aqe},X0e=yP;var sqe={db:{},renderer:yP,parser:{parse:o(()=>{},"parse")}},j0e=sqe;var K0e="flowchart-elk",oqe=o((t,e={})=>/^\s*flowchart-elk/.test(t)||/^\s*flowchart|graph/.test(t)&&e?.flowchart?.defaultRenderer==="elk"?(e.layout="elk",!0):!1,"detector"),lqe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(fT(),hT));return{id:K0e,diagram:t}},"loader"),cqe={id:K0e,detector:oqe,loader:lqe},Q0e=cqe;var kpe="timeline",_qe=o(t=>/^\s*timeline/.test(t),"detector"),Lqe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Tpe(),wpe));return{id:kpe,diagram:t}},"loader"),Dqe={id:kpe,detector:_qe,loader:Lqe},Epe=Dqe;var V1e="mindmap",Ftt=o(t=>/^\s*mindmap/.test(t),"detector"),ztt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>($1e(),G1e));return{id:V1e,diagram:t}},"loader"),Gtt={id:V1e,detector:Ftt,loader:ztt},U1e=Gtt;var tye="kanban",rrt=o(t=>/^\s*kanban/.test(t),"detector"),nrt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(eye(),J1e));return{id:tye,diagram:t}},"loader"),irt={id:tye,detector:rrt,loader:nrt},rye=irt;var Oye="sankey",Crt=o(t=>/^\s*sankey-beta/.test(t),"detector"),Art=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Iye(),Mye));return{id:Oye,diagram:t}},"loader"),_rt={id:Oye,detector:Crt,loader:Art},Pye=_rt;var Yye="packet",$rt=o(t=>/^\s*packet-beta/.test(t),"detector"),Vrt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Wye(),Hye));return{id:Yye,diagram:t}},"loader"),qye={id:Yye,detector:$rt,loader:Vrt};var Kve="block",cit=o(t=>/^\s*block-beta/.test(t),"detector"),uit=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(jve(),Xve));return{id:Kve,diagram:t}},"loader"),hit={id:Kve,detector:cit,loader:uit},Qve=hit;var b2e="architecture",zit=o(t=>/^\s*architecture/.test(t),"detector"),Git=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(x2e(),v2e));return{id:b2e,diagram:t}},"loader"),$it={id:b2e,detector:zit,loader:Git},w2e=$it;$f();Vt();var T2e=!1,C1=o(()=>{T2e||(T2e=!0,Qf("error",j0e,t=>t.toLowerCase().trim()==="error"),Qf("---",{db:{clear:o(()=>{},"clear")},styles:{},renderer:{draw:o(()=>{},"draw")},parser:{parse:o(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:o(()=>null,"init")},t=>t.toLowerCase().trimStart().startsWith("---")),Bb(YX,rye,Ide,Dde,_ae,ghe,Che,Bhe,Vfe,gde,Q0e,Zie,Kie,U1e,Epe,zue,D0e,C0e,q0e,Qhe,Pye,qye,Sfe,Qve,w2e))},"addDiagrams");ht();$f();Vt();var k2e=o(async()=>{Y.debug("Loading registered diagrams");let e=(await Promise.allSettled(Object.entries(Gf).map(async([r,{detector:n,loader:i}])=>{if(i)try{ay(r)}catch{try{let{diagram:a,id:s}=await i();Qf(s,a,n)}catch(a){throw Y.error(`Failed to load external diagram with key ${r}. Removing from detectors.`),delete Gf[r],a}}}))).filter(r=>r.status==="rejected");if(e.length>0){Y.error(`Failed to load ${e.length} external diagrams`);for(let r of e)Y.error(r);throw new Error(`Failed to load ${e.length} external diagrams`)}},"loadRegisteredDiagrams");ht();mr();var aS="comm",sS="rule",oS="decl";var E2e="@import";var S2e="@keyframes";var C2e="@layer";var gF=Math.abs,wb=String.fromCharCode;function lS(t){return t.trim()}o(lS,"trim");function Tb(t,e,r){return t.replace(e,r)}o(Tb,"replace");function A2e(t,e,r){return t.indexOf(e,r)}o(A2e,"indexof");function K0(t,e){return t.charCodeAt(e)|0}o(K0,"charat");function If(t,e,r){return t.slice(e,r)}o(If,"substr");function yo(t){return t.length}o(yo,"strlen");function _2e(t){return t.length}o(_2e,"sizeof");function A1(t,e){return e.push(t),t}o(A1,"append");var cS=1,_1=1,L2e=0,ll=0,Di=0,D1="";function uS(t,e,r,n,i,a,s,l){return{value:t,root:e,parent:r,type:n,props:i,children:a,line:cS,column:_1,length:s,return:"",siblings:l}}o(uS,"node");function D2e(){return Di}o(D2e,"char");function N2e(){return Di=ll>0?K0(D1,--ll):0,_1--,Di===10&&(_1=1,cS--),Di}o(N2e,"prev");function cl(){return Di=ll2||L1(Di)>3?"":" "}o(I2e,"whitespace");function O2e(t,e){for(;--e&&cl()&&!(Di<48||Di>102||Di>57&&Di<65||Di>70&&Di<97););return hS(t,kb()+(e<6&&Ju()==32&&cl()==32))}o(O2e,"escaping");function yF(t){for(;cl();)switch(Di){case t:return ll;case 34:case 39:t!==34&&t!==39&&yF(Di);break;case 40:t===41&&yF(t);break;case 92:cl();break}return ll}o(yF,"delimiter");function P2e(t,e){for(;cl()&&t+Di!==57;)if(t+Di===84&&Ju()===47)break;return"/*"+hS(e,ll-1)+"*"+wb(t===47?t:cl())}o(P2e,"commenter");function B2e(t){for(;!L1(Ju());)cl();return hS(t,ll)}o(B2e,"identifier");function G2e(t){return M2e(dS("",null,null,null,[""],t=R2e(t),0,[0],t))}o(G2e,"compile");function dS(t,e,r,n,i,a,s,l,u){for(var h=0,f=0,d=s,p=0,m=0,g=0,y=1,v=1,x=1,b=0,w="",_=i,T=a,E=n,L=w;v;)switch(g=b,b=cl()){case 40:if(g!=108&&K0(L,d-1)==58){A2e(L+=Tb(fS(b),"&","&\f"),"&\f",gF(h?l[h-1]:0))!=-1&&(x=-1);break}case 34:case 39:case 91:L+=fS(b);break;case 9:case 10:case 13:case 32:L+=I2e(g);break;case 92:L+=O2e(kb()-1,7);continue;case 47:switch(Ju()){case 42:case 47:A1(Vit(P2e(cl(),kb()),e,r,u),u),(L1(g||1)==5||L1(Ju()||1)==5)&&yo(L)&&If(L,-1,void 0)!==" "&&(L+=" ");break;default:L+="/"}break;case 123*y:l[h++]=yo(L)*x;case 125*y:case 59:case 0:switch(b){case 0:case 125:v=0;case 59+f:x==-1&&(L=Tb(L,/\f/g,"")),m>0&&(yo(L)-d||y===0&&g===47)&&A1(m>32?z2e(L+";",n,r,d-1,u):z2e(Tb(L," ","")+";",n,r,d-2,u),u);break;case 59:L+=";";default:if(A1(E=F2e(L,e,r,h,f,i,l,w,_=[],T=[],d,a),a),b===123)if(f===0)dS(L,e,E,E,_,a,d,l,T);else switch(p===99&&K0(L,3)===110?100:p){case 100:case 108:case 109:case 115:dS(t,E,E,n&&A1(F2e(t,E,E,0,0,i,l,w,i,_=[],d,T),T),i,T,d,l,n?_:T);break;default:dS(L,E,E,E,[""],T,0,l,T)}}h=f=m=0,y=x=1,w=L="",d=s;break;case 58:d=1+yo(L),m=g;default:if(y<1){if(b==123)--y;else if(b==125&&y++==0&&N2e()==125)continue}switch(L+=wb(b),b*y){case 38:x=f>0?1:(L+="\f",-1);break;case 44:l[h++]=(yo(L)-1)*x,x=1;break;case 64:Ju()===45&&(L+=fS(cl())),p=Ju(),f=d=yo(w=L+=B2e(kb())),b++;break;case 45:g===45&&yo(L)==2&&(y=0)}}return a}o(dS,"parse");function F2e(t,e,r,n,i,a,s,l,u,h,f,d){for(var p=i-1,m=i===0?a:[""],g=_2e(m),y=0,v=0,x=0;y0?m[b]+" "+w:Tb(w,/&\f/g,m[b])))&&(u[x++]=_);return uS(t,e,r,i===0?sS:l,u,h,f,d)}o(F2e,"ruleset");function Vit(t,e,r,n){return uS(t,e,r,aS,wb(D2e()),If(t,2,-2),0,n)}o(Vit,"comment");function z2e(t,e,r,n,i){return uS(t,e,r,oS,If(t,0,n),If(t,n+1,-1),n,i)}o(z2e,"declaration");function pS(t,e){for(var r="",n=0;n{H2e.forEach(t=>{t()}),H2e=[]},"attachFunctions");ht();var Y2e=o(t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");Pb();V5();function q2e(t){let e=t.match(Ob);if(!e)return{text:t,metadata:{}};let r=fm(e[1],{schema:hm})??{};r=typeof r=="object"&&!Array.isArray(r)?r:{};let n={};return r.displayMode&&(n.displayMode=r.displayMode.toString()),r.title&&(n.title=r.title.toString()),r.config&&(n.config=r.config),{text:t.slice(e[0].length),metadata:n}}o(q2e,"extractFrontMatter");hr();var Hit=o(t=>t.replace(/\r\n?/g,` -`).replace(/<(\w+)([^>]*)>/g,(e,r,n)=>"<"+r+n.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),Wit=o(t=>{let{text:e,metadata:r}=q2e(t),{displayMode:n,title:i,config:a={}}=r;return n&&(a.gantt||(a.gantt={}),a.gantt.displayMode=n),{title:i,config:a,text:e}},"processFrontmatter"),Yit=o(t=>{let e=Ut.detectInit(t)??{},r=Ut.detectDirective(t,"wrap");return Array.isArray(r)?e.wrap=r.some(({type:n})=>n==="wrap"):r?.type==="wrap"&&(e.wrap=!0),{text:RX(t),directive:e}},"processDirectives");function vF(t){let e=Hit(t),r=Wit(e),n=Yit(r.text),i=ws(r.config,n.directive);return t=Y2e(n.text),{code:t,title:r.title,config:i}}o(vF,"preprocessDiagram");QC();Hb();hr();function X2e(t){let e=new TextEncoder().encode(t),r=Array.from(e,n=>String.fromCodePoint(n)).join("");return btoa(r)}o(X2e,"toBase64");var qit=5e4,Xit="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",jit="sandbox",Kit="loose",Qit="http://www.w3.org/2000/svg",Zit="http://www.w3.org/1999/xlink",Jit="http://www.w3.org/1999/xhtml",eat="100%",tat="100%",rat="border:0;margin:0;",nat="margin:0",iat="allow-top-navigation-by-user-activation allow-popups",aat='The "iframe" tag is not supported by your browser.',sat=["foreignobject"],oat=["dominant-baseline"];function Z2e(t){let e=vF(t);return V1(),Hz(e.config??{}),e}o(Z2e,"processAndSetConfigs");async function lat(t,e){C1();try{let{code:r,config:n}=Z2e(t);return{diagramType:(await J2e(r)).type,config:n}}catch(r){if(e?.suppressErrors)return!1;throw r}}o(lat,"parse");var j2e=o((t,e,r=[])=>` -.${t} ${e} { ${r.join(" !important; ")} !important; }`,"cssImportantStyles"),cat=o((t,e=new Map)=>{let r="";if(t.themeCSS!==void 0&&(r+=` +`,"getStyles"),sve=Ett});var eF=Ni((c4,JB)=>{"use strict";o(function(e,r){typeof c4=="object"&&typeof JB=="object"?JB.exports=r():typeof define=="function"&&define.amd?define([],r):typeof c4=="object"?c4.layoutBase=r():e.layoutBase=r()},"webpackUniversalModuleDefinition")(c4,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=t,r.c=e,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=28)}([function(t,e,r){"use strict";function n(){}o(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,f){n.call(this,f),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=f,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var f=this.getOtherEnd(u),d=h.getGraphManager().getRoot();;){if(f.getOwner()==h)return f;if(f.getOwner()==d)break;f=f.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(5);function h(d,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),d.graphManager!=null&&(d=d.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=d,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var f in n)h[f]=n[f];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(d){this.rect.width=d},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(d){this.rect.height=d},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(d,p){this.rect.x=d.x,this.rect.y=d.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(d,p){this.rect.x=d-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(d,p){this.rect.x=d,this.rect.y=p},h.prototype.moveBy=function(d,p){this.rect.x+=d,this.rect.y+=p},h.prototype.getEdgeListToNode=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==d){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==d||y.source==d)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var d=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)d.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";d.add(m.source)}}),d},h.prototype.withChildren=function(){var d=new Set,p,m;if(d.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp?(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal=="right"&&this.setWidth(p+this.labelWidth)),this.labelHeight&&(this.labelPosVertical=="top"?(this.rect.y-=this.labelHeight,this.setHeight(m+this.labelHeight)):this.labelPosVertical=="center"&&this.labelHeight>m?(this.rect.y-=(this.labelHeight-m)/2,this.setHeight(this.labelHeight)):this.labelPosVertical=="bottom"&&this.setHeight(m+this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(d){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=d.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},t.exports=h},function(t,e,r){"use strict";var n=r(0);function i(){}o(i,"FDLayoutConstants");for(var a in n)i[a]=n[a];i.MAX_ITERATIONS=2500,i.DEFAULT_EDGE_LENGTH=50,i.DEFAULT_SPRING_STRENGTH=.45,i.DEFAULT_REPULSION_STRENGTH=4500,i.DEFAULT_GRAVITY_STRENGTH=.4,i.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,i.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,i.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,i.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,i.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,i.COOLING_ADAPTATION_FACTOR=.33,i.ADAPTATION_LOWER_NODE_LIMIT=1e3,i.ADAPTATION_UPPER_NODE_LIMIT=5e3,i.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,i.MAX_NODE_DISPLACEMENT=i.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,i.MIN_REPULSION_DIST=i.DEFAULT_EDGE_LENGTH/10,i.CONVERGENCE_CHECK_PERIOD=100,i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,i.MIN_EDGE_LENGTH=1,i.GRID_CALCULATION_CHECK_PERIOD=10,t.exports=i},function(t,e,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(7),l=r(3),u=r(1),h=r(13),f=r(12),d=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,w=0;w-1&&E>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(T,1),x.target!=x.source&&x.target.edges.splice(E,1);var C=x.source.owner.getEdges().indexOf(x);if(C==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(C,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,w=this.getNodes(),C=w.length,T=0;Tv&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(w[0].getParent().paddingLeft!=null?b=w[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new f(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,w,C,T,E,A,S=this.nodes,_=S.length,I=0;I<_;I++){var D=S[I];g&&D.child!=null&&D.updateBounds(),w=D.getLeft(),C=D.getRight(),T=D.getTop(),E=D.getBottom(),y>w&&(y=w),vT&&(x=T),bw&&(y=w),vT&&(x=T),b=this.nodes.length){var _=0;v.forEach(function(I){I.owner==g&&_++}),_==this.nodes.length&&(this.isConnected=!0)}},t.exports=p},function(t,e,r){"use strict";var n,i=r(1);function a(s){n=r(6),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,f){if(u==null&&h==null&&f==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{f=u,h=l,u=s;var d=h.getOwner(),p=f.getOwner();if(!(d!=null&&d.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(d==p)return u.isInterGraph=!1,d.add(u,h,f);if(u.isInterGraph=!0,u.source=h,u.target=f,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,f=u.length,d=0;d=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var f=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(f=1);var d=f*l[0],p=l[1]/f;l[0]d)return l[0]=u,l[1]=m,l[2]=f,l[3]=S,!1;if(hf)return l[0]=p,l[1]=h,l[2]=E,l[3]=d,!1;if(uf?(l[0]=y,l[1]=v,k=!0):(l[0]=g,l[1]=m,k=!0):R===N&&(u>f?(l[0]=p,l[1]=m,k=!0):(l[0]=x,l[1]=v,k=!0)),-O===N?f>u?(l[2]=A,l[3]=S,L=!0):(l[2]=E,l[3]=T,L=!0):O===N&&(f>u?(l[2]=C,l[3]=T,L=!0):(l[2]=_,l[3]=S,L=!0)),k&&L)return!1;if(u>f?h>d?(B=this.getCardinalDirection(R,N,4),F=this.getCardinalDirection(O,N,2)):(B=this.getCardinalDirection(-R,N,3),F=this.getCardinalDirection(-O,N,1)):h>d?(B=this.getCardinalDirection(-R,N,1),F=this.getCardinalDirection(-O,N,3)):(B=this.getCardinalDirection(R,N,2),F=this.getCardinalDirection(O,N,4)),!k)switch(B){case 1:G=m,P=u+-w/N,l[0]=P,l[1]=G;break;case 2:P=x,G=h+b*N,l[0]=P,l[1]=G;break;case 3:G=v,P=u+w/N,l[0]=P,l[1]=G;break;case 4:P=y,G=h+-b*N,l[0]=P,l[1]=G;break}if(!L)switch(F){case 1:H=T,z=f+-D/N,l[2]=z,l[3]=H;break;case 2:z=_,H=d+I*N,l[2]=z,l[3]=H;break;case 3:H=S,z=f+D/N,l[2]=z,l[3]=H;break;case 4:z=A,H=d+-I*N,l[2]=z,l[3]=H;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,f=a.y,d=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,w=void 0,C=void 0,T=void 0,E=void 0,A=void 0,S=void 0,_=void 0;return w=p-f,T=h-d,A=d*f-h*p,C=v-g,E=m-y,S=y*g-m*v,_=w*E-C*T,_===0?null:(x=(T*S-E*A)/_,b=(C*A-w*S)/_,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l=0){var v=(-m+Math.sqrt(m*m-4*p*g))/(2*p),x=(-m-Math.sqrt(m*m-4*p*g))/(2*p),b=null;return v>=0&&v<=1?[v]:x>=0&&x<=1?[x]:b}else return null},i.HALF_PI=.5*Math.PI,i.ONE_AND_HALF_PI=1.5*Math.PI,i.TWO_PI=2*Math.PI,i.THREE_PI=3*Math.PI,t.exports=i},function(t,e,r){"use strict";function n(){}o(n,"IMath"),n.sign=function(i){return i>0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},t.exports=n},function(t,e,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n},function(t,e,r){"use strict";var n=function(){function h(f,d){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},t.exports=i},function(t,e,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(w.push(T[0]);w.length>0&&g;){var E=w[0];w.splice(0,1),b.add(E);for(var A=E.getEdges(),x=0;x-1&&T.splice(D,1)}b=new Set,C=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(S,1);var _=C.getNeighborsList();_.forEach(function(k){if(y.indexOf(k)<0){var L=v.get(k),R=L-1;R==1&&E.push(k),v.set(k,R)}})}y=y.concat(E),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},t.exports=p},function(t,e,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},t.exports=n},function(t,e,r){"use strict";var n=r(5);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},t.exports=i},function(t,e,r){"use strict";function n(d){if(Array.isArray(d)){for(var p=0,m=Array(d.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(d>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var d=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&d&&this.updateGrid(),b=new Set,m=0;mw||b>w)&&(d.gravitationForceX=-this.gravityConstant*y,d.gravitationForceY=-this.gravityConstant*v)):(w=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>w||b>w)&&(d.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,d.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var d,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),d=this.totalDisplacement=x.length||w>=x[0].length)){for(var C=0;Ch},"_defaultCompareFunction")}]),l}();t.exports=s},function(t,e,r){"use strict";function n(){}o(n,"SVD"),n.svd=function(i){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=i.length,this.n=i[0].length;var a=Math.min(this.m,this.n);this.s=function(xt){for(var ut=[];xt-- >0;)ut.push(0);return ut}(Math.min(this.m+1,this.n)),this.U=function(xt){var ut=o(function Et(ft){if(ft.length==0)return 0;for(var yt=[],nt=0;nt0;)ut.push(0);return ut}(this.n),l=function(xt){for(var ut=[];xt-- >0;)ut.push(0);return ut}(this.m),u=!0,h=!0,f=Math.min(this.m-1,this.n),d=Math.max(0,Math.min(this.n-2,this.m)),p=0;p=0;N--)if(this.s[N]!==0){for(var B=N+1;B=0;j--){if(function(xt,ut){return xt&&ut}(j0;){var ue=void 0,Z=void 0;for(ue=L-2;ue>=-1&&ue!==-1;ue--)if(Math.abs(s[ue])<=se+J*(Math.abs(this.s[ue])+Math.abs(this.s[ue+1]))){s[ue]=0;break}if(ue===L-2)Z=4;else{var Se=void 0;for(Se=L-1;Se>=ue&&Se!==ue;Se--){var ce=(Se!==L?Math.abs(s[Se]):0)+(Se!==ue+1?Math.abs(s[Se-1]):0);if(Math.abs(this.s[Se])<=se+J*ce){this.s[Se]=0;break}}Se===ue?Z=3:Se===L-1?Z=1:(Z=2,ue=Se)}switch(ue++,Z){case 1:{var ae=s[L-2];s[L-2]=0;for(var Oe=L-2;Oe>=ue;Oe--){var ge=n.hypot(this.s[Oe],ae),Ge=this.s[Oe]/ge,He=ae/ge;if(this.s[Oe]=ge,Oe!==ue&&(ae=-He*s[Oe-1],s[Oe-1]=Ge*s[Oe-1]),h)for(var ze=0;ze=this.s[ue+1]);){var ot=this.s[ue];if(this.s[ue]=this.s[ue+1],this.s[ue+1]=ot,h&&ueMath.abs(a)?(s=a/i,s=Math.abs(i)*Math.sqrt(1+s*s)):a!=0?(s=i/a,s=Math.abs(a)*Math.sqrt(1+s*s)):s=0,s},t.exports=n},function(t,e,r){"use strict";var n=function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=f,this.gap_penalty=d,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o(function(e,r){typeof u4=="object"&&typeof tF=="object"?tF.exports=r(eF()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof u4=="object"?u4.coseBase=r(eF()):e.coseBase=r(e.layoutBase)},"webpackUniversalModuleDefinition")(u4,function(t){return(()=>{"use strict";var e={45:(a,s,l)=>{var u={};u.layoutBase=l(551),u.CoSEConstants=l(806),u.CoSEEdge=l(767),u.CoSEGraph=l(880),u.CoSEGraphManager=l(578),u.CoSELayout=l(765),u.CoSENode=l(991),u.ConstraintHandler=l(902),a.exports=u},806:(a,s,l)=>{var u=l(551).FDLayoutConstants;function h(){}o(h,"CoSEConstants");for(var f in u)h[f]=u[f];h.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,h.DEFAULT_RADIAL_SEPARATION=u.DEFAULT_EDGE_LENGTH,h.DEFAULT_COMPONENT_SEPERATION=60,h.TILE=!0,h.TILING_PADDING_VERTICAL=10,h.TILING_PADDING_HORIZONTAL=10,h.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,h.ENFORCE_CONSTRAINTS=!0,h.APPLY_LAYOUT=!0,h.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,h.TREE_REDUCTION_ON_INCREMENTAL=!0,h.PURE_INCREMENTAL=h.DEFAULT_INCREMENTAL,a.exports=h},767:(a,s,l)=>{var u=l(551).FDLayoutEdge;function h(d,p,m){u.call(this,d,p,m)}o(h,"CoSEEdge"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h},880:(a,s,l)=>{var u=l(551).LGraph;function h(d,p,m){u.call(this,d,p,m)}o(h,"CoSEGraph"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h},578:(a,s,l)=>{var u=l(551).LGraphManager;function h(d){u.call(this,d)}o(h,"CoSEGraphManager"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h},765:(a,s,l)=>{var u=l(551).FDLayout,h=l(578),f=l(880),d=l(991),p=l(767),m=l(806),g=l(902),y=l(551).FDLayoutConstants,v=l(551).LayoutConstants,x=l(551).Point,b=l(551).PointD,w=l(551).DimensionD,C=l(551).Layout,T=l(551).Integer,E=l(551).IGeometry,A=l(551).LGraph,S=l(551).Transform,_=l(551).LinkedList;function I(){u.call(this),this.toBeTiled={},this.constraints={}}o(I,"CoSELayout"),I.prototype=Object.create(u.prototype);for(var D in u)I[D]=u[D];I.prototype.newGraphManager=function(){var k=new h(this);return this.graphManager=k,k},I.prototype.newGraph=function(k){return new f(null,this.graphManager,k)},I.prototype.newNode=function(k){return new d(this.graphManager,k)},I.prototype.newEdge=function(k){return new p(null,null,k)},I.prototype.initParameters=function(){u.prototype.initParameters.call(this,arguments),this.isSubLayout||(m.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=m.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=m.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=y.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=y.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=y.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},I.prototype.initSpringEmbedder=function(){u.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/y.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},I.prototype.layout=function(){var k=v.DEFAULT_CREATE_BENDS_AS_NEEDED;return k&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},I.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(m.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var L=new Set(this.getAllNodes()),R=this.nodesWithGravity.filter(function(B){return L.has(B)});this.graphManager.setAllNodesToApplyGravitation(R)}}else{var k=this.getFlatForest();if(k.length>0)this.positionNodesRadially(k);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var L=new Set(this.getAllNodes()),R=this.nodesWithGravity.filter(function(O){return L.has(O)});this.graphManager.setAllNodesToApplyGravitation(R),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(g.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),m.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},I.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%y.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var k=new Set(this.getAllNodes()),L=this.nodesWithGravity.filter(function(N){return k.has(N)});this.graphManager.setAllNodesToApplyGravitation(L),this.graphManager.updateBounds(),this.updateGrid(),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var R=!this.isTreeGrowing&&!this.isGrowthFinished,O=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(R,O),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},I.prototype.getPositionsData=function(){for(var k=this.graphManager.getAllNodes(),L={},R=0;R0&&this.updateDisplacements();for(var R=0;R0&&(O.fixedNodeWeight=B)}}if(this.constraints.relativePlacementConstraint){var F=new Map,P=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(le){k.fixedNodesOnHorizontal.add(le),k.fixedNodesOnVertical.add(le)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var G=this.constraints.alignmentConstraint.vertical,R=0;R=2*le.length/3;X--)he=Math.floor(Math.random()*(X+1)),K=le[X],le[X]=le[he],le[he]=K;return le},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(le){if(le.left){var he=F.has(le.left)?F.get(le.left):le.left,K=F.has(le.right)?F.get(le.right):le.right;k.nodesInRelativeHorizontal.includes(he)||(k.nodesInRelativeHorizontal.push(he),k.nodeToRelativeConstraintMapHorizontal.set(he,[]),k.dummyToNodeForVerticalAlignment.has(he)?k.nodeToTempPositionMapHorizontal.set(he,k.idToNodeMap.get(k.dummyToNodeForVerticalAlignment.get(he)[0]).getCenterX()):k.nodeToTempPositionMapHorizontal.set(he,k.idToNodeMap.get(he).getCenterX())),k.nodesInRelativeHorizontal.includes(K)||(k.nodesInRelativeHorizontal.push(K),k.nodeToRelativeConstraintMapHorizontal.set(K,[]),k.dummyToNodeForVerticalAlignment.has(K)?k.nodeToTempPositionMapHorizontal.set(K,k.idToNodeMap.get(k.dummyToNodeForVerticalAlignment.get(K)[0]).getCenterX()):k.nodeToTempPositionMapHorizontal.set(K,k.idToNodeMap.get(K).getCenterX())),k.nodeToRelativeConstraintMapHorizontal.get(he).push({right:K,gap:le.gap}),k.nodeToRelativeConstraintMapHorizontal.get(K).push({left:he,gap:le.gap})}else{var X=P.has(le.top)?P.get(le.top):le.top,te=P.has(le.bottom)?P.get(le.bottom):le.bottom;k.nodesInRelativeVertical.includes(X)||(k.nodesInRelativeVertical.push(X),k.nodeToRelativeConstraintMapVertical.set(X,[]),k.dummyToNodeForHorizontalAlignment.has(X)?k.nodeToTempPositionMapVertical.set(X,k.idToNodeMap.get(k.dummyToNodeForHorizontalAlignment.get(X)[0]).getCenterY()):k.nodeToTempPositionMapVertical.set(X,k.idToNodeMap.get(X).getCenterY())),k.nodesInRelativeVertical.includes(te)||(k.nodesInRelativeVertical.push(te),k.nodeToRelativeConstraintMapVertical.set(te,[]),k.dummyToNodeForHorizontalAlignment.has(te)?k.nodeToTempPositionMapVertical.set(te,k.idToNodeMap.get(k.dummyToNodeForHorizontalAlignment.get(te)[0]).getCenterY()):k.nodeToTempPositionMapVertical.set(te,k.idToNodeMap.get(te).getCenterY())),k.nodeToRelativeConstraintMapVertical.get(X).push({bottom:te,gap:le.gap}),k.nodeToRelativeConstraintMapVertical.get(te).push({top:X,gap:le.gap})}});else{var H=new Map,Q=new Map;this.constraints.relativePlacementConstraint.forEach(function(le){if(le.left){var he=F.has(le.left)?F.get(le.left):le.left,K=F.has(le.right)?F.get(le.right):le.right;H.has(he)?H.get(he).push(K):H.set(he,[K]),H.has(K)?H.get(K).push(he):H.set(K,[he])}else{var X=P.has(le.top)?P.get(le.top):le.top,te=P.has(le.bottom)?P.get(le.bottom):le.bottom;Q.has(X)?Q.get(X).push(te):Q.set(X,[te]),Q.has(te)?Q.get(te).push(X):Q.set(te,[X])}});var j=o(function(he,K){var X=[],te=[],J=new _,se=new Set,ue=0;return he.forEach(function(Z,Se){if(!se.has(Se)){X[ue]=[],te[ue]=!1;var ce=Se;for(J.push(ce),se.add(ce),X[ue].push(ce);J.length!=0;){ce=J.shift(),K.has(ce)&&(te[ue]=!0);var ae=he.get(ce);ae.forEach(function(Oe){se.has(Oe)||(J.push(Oe),se.add(Oe),X[ue].push(Oe))})}ue++}}),{components:X,isFixed:te}},"constructComponents"),ie=j(H,k.fixedNodesOnHorizontal);this.componentsOnHorizontal=ie.components,this.fixedComponentsOnHorizontal=ie.isFixed;var ne=j(Q,k.fixedNodesOnVertical);this.componentsOnVertical=ne.components,this.fixedComponentsOnVertical=ne.isFixed}}},I.prototype.updateDisplacements=function(){var k=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(ne){var le=k.idToNodeMap.get(ne.nodeId);le.displacementX=0,le.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var L=this.constraints.alignmentConstraint.vertical,R=0;R1){var P;for(P=0;PO&&(O=Math.floor(F.y)),B=Math.floor(F.x+m.DEFAULT_COMPONENT_SEPERATION)}this.transform(new b(v.WORLD_CENTER_X-F.x/2,v.WORLD_CENTER_Y-F.y/2))},I.radialLayout=function(k,L,R){var O=Math.max(this.maxDiagonalInTree(k),m.DEFAULT_RADIAL_SEPARATION);I.branchRadialLayout(L,null,0,359,0,O);var N=A.calculateBounds(k),B=new S;B.setDeviceOrgX(N.getMinX()),B.setDeviceOrgY(N.getMinY()),B.setWorldOrgX(R.x),B.setWorldOrgY(R.y);for(var F=0;F1;){var X=K[0];K.splice(0,1);var te=j.indexOf(X);te>=0&&j.splice(te,1),le--,ie--}L!=null?he=(j.indexOf(K[0])+1)%le:he=0;for(var J=Math.abs(O-R)/ie,se=he;ne!=ie;se=++se%le){var ue=j[se].getOtherEnd(k);if(ue!=L){var Z=(R+ne*J)%360,Se=(Z+J)%360;I.branchRadialLayout(ue,k,Z,Se,N+B,B),ne++}}},I.maxDiagonalInTree=function(k){for(var L=T.MIN_VALUE,R=0;RL&&(L=N)}return L},I.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},I.prototype.groupZeroDegreeMembers=function(){var k=this,L={};this.memberGroups={},this.idToDummyNode={};for(var R=[],O=this.graphManager.getAllNodes(),N=0;N"u"&&(L[P]=[]),L[P]=L[P].concat(B)}Object.keys(L).forEach(function(G){if(L[G].length>1){var z="DummyCompound_"+G;k.memberGroups[z]=L[G];var H=L[G][0].getParent(),Q=new d(k.graphManager);Q.id=z,Q.paddingLeft=H.paddingLeft||0,Q.paddingRight=H.paddingRight||0,Q.paddingBottom=H.paddingBottom||0,Q.paddingTop=H.paddingTop||0,k.idToDummyNode[z]=Q;var j=k.getGraphManager().add(k.newGraph(),Q),ie=H.getChild();ie.add(Q);for(var ne=0;neN?(O.rect.x-=(O.labelWidth-N)/2,O.setWidth(O.labelWidth),O.labelMarginLeft=(O.labelWidth-N)/2):O.labelPosHorizontal=="right"&&O.setWidth(N+O.labelWidth)),O.labelHeight&&(O.labelPosVertical=="top"?(O.rect.y-=O.labelHeight,O.setHeight(B+O.labelHeight),O.labelMarginTop=O.labelHeight):O.labelPosVertical=="center"&&O.labelHeight>B?(O.rect.y-=(O.labelHeight-B)/2,O.setHeight(O.labelHeight),O.labelMarginTop=(O.labelHeight-B)/2):O.labelPosVertical=="bottom"&&O.setHeight(B+O.labelHeight))}})},I.prototype.repopulateCompounds=function(){for(var k=this.compoundOrder.length-1;k>=0;k--){var L=this.compoundOrder[k],R=L.id,O=L.paddingLeft,N=L.paddingTop,B=L.labelMarginLeft,F=L.labelMarginTop;this.adjustLocations(this.tiledMemberPack[R],L.rect.x,L.rect.y,O,N,B,F)}},I.prototype.repopulateZeroDegreeMembers=function(){var k=this,L=this.tiledZeroDegreePack;Object.keys(L).forEach(function(R){var O=k.idToDummyNode[R],N=O.paddingLeft,B=O.paddingTop,F=O.labelMarginLeft,P=O.labelMarginTop;k.adjustLocations(L[R],O.rect.x,O.rect.y,N,B,F,P)})},I.prototype.getToBeTiled=function(k){var L=k.id;if(this.toBeTiled[L]!=null)return this.toBeTiled[L];var R=k.getChild();if(R==null)return this.toBeTiled[L]=!1,!1;for(var O=R.getNodes(),N=0;N0)return this.toBeTiled[L]=!1,!1;if(B.getChild()==null){this.toBeTiled[B.id]=!1;continue}if(!this.getToBeTiled(B))return this.toBeTiled[L]=!1,!1}return this.toBeTiled[L]=!0,!0},I.prototype.getNodeDegree=function(k){for(var L=k.id,R=k.getEdges(),O=0,N=0;NH&&(H=j.rect.height)}R+=H+k.verticalPadding}},I.prototype.tileCompoundMembers=function(k,L){var R=this;this.tiledMemberPack=[],Object.keys(k).forEach(function(O){var N=L[O];if(R.tiledMemberPack[O]=R.tileNodes(k[O],N.paddingLeft+N.paddingRight),N.rect.width=R.tiledMemberPack[O].width,N.rect.height=R.tiledMemberPack[O].height,N.setCenter(R.tiledMemberPack[O].centerX,R.tiledMemberPack[O].centerY),N.labelMarginLeft=0,N.labelMarginTop=0,m.NODE_DIMENSIONS_INCLUDE_LABELS){var B=N.rect.width,F=N.rect.height;N.labelWidth&&(N.labelPosHorizontal=="left"?(N.rect.x-=N.labelWidth,N.setWidth(B+N.labelWidth),N.labelMarginLeft=N.labelWidth):N.labelPosHorizontal=="center"&&N.labelWidth>B?(N.rect.x-=(N.labelWidth-B)/2,N.setWidth(N.labelWidth),N.labelMarginLeft=(N.labelWidth-B)/2):N.labelPosHorizontal=="right"&&N.setWidth(B+N.labelWidth)),N.labelHeight&&(N.labelPosVertical=="top"?(N.rect.y-=N.labelHeight,N.setHeight(F+N.labelHeight),N.labelMarginTop=N.labelHeight):N.labelPosVertical=="center"&&N.labelHeight>F?(N.rect.y-=(N.labelHeight-F)/2,N.setHeight(N.labelHeight),N.labelMarginTop=(N.labelHeight-F)/2):N.labelPosVertical=="bottom"&&N.setHeight(F+N.labelHeight))}})},I.prototype.tileNodes=function(k,L){var R=this.tileNodesByFavoringDim(k,L,!0),O=this.tileNodesByFavoringDim(k,L,!1),N=this.getOrgRatio(R),B=this.getOrgRatio(O),F;return BP&&(P=ne.getWidth())});var G=B/N,z=F/N,H=Math.pow(R-O,2)+4*(G+O)*(z+R)*N,Q=(O-R+Math.sqrt(H))/(2*(G+O)),j;L?(j=Math.ceil(Q),j==Q&&j++):j=Math.floor(Q);var ie=j*(G+O)-O;return P>ie&&(ie=P),ie+=O*2,ie},I.prototype.tileNodesByFavoringDim=function(k,L,R){var O=m.TILING_PADDING_VERTICAL,N=m.TILING_PADDING_HORIZONTAL,B=m.TILING_COMPARE_BY,F={rows:[],rowWidth:[],rowHeight:[],width:0,height:L,verticalPadding:O,horizontalPadding:N,centerX:0,centerY:0};B&&(F.idealRowWidth=this.calcIdealRowWidth(k,R));var P=o(function(le){return le.rect.width*le.rect.height},"getNodeArea"),G=o(function(le,he){return P(he)-P(le)},"areaCompareFcn");k.sort(function(ne,le){var he=G;return F.idealRowWidth?(he=B,he(ne.id,le.id)):he(ne,le)});for(var z=0,H=0,Q=0;Q0&&(F+=k.horizontalPadding),k.rowWidth[R]=F,k.width0&&(P+=k.verticalPadding);var G=0;P>k.rowHeight[R]&&(G=k.rowHeight[R],k.rowHeight[R]=P,G=k.rowHeight[R]-G),k.height+=G,k.rows[R].push(L)},I.prototype.getShortestRowIndex=function(k){for(var L=-1,R=Number.MAX_VALUE,O=0;OR&&(L=O,R=k.rowWidth[O]);return L},I.prototype.canAddHorizontal=function(k,L,R){if(k.idealRowWidth){var O=k.rows.length-1,N=k.rowWidth[O];return N+L+k.horizontalPadding<=k.idealRowWidth}var B=this.getShortestRowIndex(k);if(B<0)return!0;var F=k.rowWidth[B];if(F+k.horizontalPadding+L<=k.width)return!0;var P=0;k.rowHeight[B]0&&(P=R+k.verticalPadding-k.rowHeight[B]);var G;k.width-F>=L+k.horizontalPadding?G=(k.height+P)/(F+L+k.horizontalPadding):G=(k.height+P)/k.width,P=R+k.verticalPadding;var z;return k.widthB&&L!=R){O.splice(-1,1),k.rows[R].push(N),k.rowWidth[L]=k.rowWidth[L]-B,k.rowWidth[R]=k.rowWidth[R]+B,k.width=k.rowWidth[instance.getLongestRowIndex(k)];for(var F=Number.MIN_VALUE,P=0;PF&&(F=O[P].height);L>0&&(F+=k.verticalPadding);var G=k.rowHeight[L]+k.rowHeight[R];k.rowHeight[L]=F,k.rowHeight[R]0)for(var ie=N;ie<=B;ie++)j[0]+=this.grid[ie][F-1].length+this.grid[ie][F].length-1;if(B0)for(var ie=F;ie<=P;ie++)j[3]+=this.grid[N-1][ie].length+this.grid[N][ie].length-1;for(var ne=T.MAX_VALUE,le,he,K=0;K{var u=l(551).FDLayoutNode,h=l(551).IMath;function f(p,m,g,y){u.call(this,p,m,g,y)}o(f,"CoSENode"),f.prototype=Object.create(u.prototype);for(var d in u)f[d]=u[d];f.prototype.calculateDisplacement=function(){var p=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementX=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementX)),Math.abs(this.displacementY)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementY=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},f.prototype.propogateDisplacementToChildren=function(p,m){for(var g=this.getChild().getNodes(),y,v=0;v{function u(g){if(Array.isArray(g)){for(var y=0,v=Array(g.length);y0){var ct=0;Ue.forEach(function(ot){xe=="horizontal"?(we.set(ot,x.has(ot)?b[x.get(ot)]:pe.get(ot)),ct+=we.get(ot)):(we.set(ot,x.has(ot)?w[x.get(ot)]:pe.get(ot)),ct+=we.get(ot))}),ct=ct/Ue.length,st.forEach(function(ot){q.has(ot)||we.set(ot,ct)})}else{var We=0;st.forEach(function(ot){xe=="horizontal"?We+=x.has(ot)?b[x.get(ot)]:pe.get(ot):We+=x.has(ot)?w[x.get(ot)]:pe.get(ot)}),We=We/st.length,st.forEach(function(ot){we.set(ot,We)})}});for(var qe=o(function(){var Ue=De.shift(),ct=V.get(Ue);ct.forEach(function(We){if(we.get(We.id)ot&&(ot=yt),ntYt&&(Yt=nt)}}catch(At){Nt=!0,xt=At}finally{try{!bt&&ut.return&&ut.return()}finally{if(Nt)throw xt}}var dn=(ct+ot)/2-(We+Yt)/2,Tt=!0,On=!1,tn=void 0;try{for(var Ar=st[Symbol.iterator](),_r;!(Tt=(_r=Ar.next()).done);Tt=!0){var Pn=_r.value;we.set(Pn,we.get(Pn)+dn)}}catch(At){On=!0,tn=At}finally{try{!Tt&&Ar.return&&Ar.return()}finally{if(On)throw tn}}})}return we},"findAppropriatePositionForRelativePlacement"),D=o(function(V){var xe=0,q=0,pe=0,ve=0;if(V.forEach(function(Ve){Ve.left?b[x.get(Ve.left)]-b[x.get(Ve.right)]>=0?xe++:q++:w[x.get(Ve.top)]-w[x.get(Ve.bottom)]>=0?pe++:ve++}),xe>q&&pe>ve)for(var Pe=0;Peq)for(var _e=0;_eve)for(var we=0;we1)y.fixedNodeConstraint.forEach(function(oe,V){O[V]=[oe.position.x,oe.position.y],N[V]=[b[x.get(oe.nodeId)],w[x.get(oe.nodeId)]]}),B=!0;else if(y.alignmentConstraint)(function(){var oe=0;if(y.alignmentConstraint.vertical){for(var V=y.alignmentConstraint.vertical,xe=o(function(we){var Ve=new Set;V[we].forEach(function(at){Ve.add(at)});var De=new Set([].concat(u(Ve)).filter(function(at){return P.has(at)})),qe=void 0;De.size>0?qe=b[x.get(De.values().next().value)]:qe=_(Ve).x,V[we].forEach(function(at){O[oe]=[qe,w[x.get(at)]],N[oe]=[b[x.get(at)],w[x.get(at)]],oe++})},"_loop2"),q=0;q0?qe=b[x.get(De.values().next().value)]:qe=_(Ve).y,pe[we].forEach(function(at){O[oe]=[b[x.get(at)],qe],N[oe]=[b[x.get(at)],w[x.get(at)]],oe++})},"_loop3"),Pe=0;PeQ&&(Q=H[ie].length,j=ie);if(Q0){var Ge={x:0,y:0};y.fixedNodeConstraint.forEach(function(oe,V){var xe={x:b[x.get(oe.nodeId)],y:w[x.get(oe.nodeId)]},q=oe.position,pe=S(q,xe);Ge.x+=pe.x,Ge.y+=pe.y}),Ge.x/=y.fixedNodeConstraint.length,Ge.y/=y.fixedNodeConstraint.length,b.forEach(function(oe,V){b[V]+=Ge.x}),w.forEach(function(oe,V){w[V]+=Ge.y}),y.fixedNodeConstraint.forEach(function(oe){b[x.get(oe.nodeId)]=oe.position.x,w[x.get(oe.nodeId)]=oe.position.y})}if(y.alignmentConstraint){if(y.alignmentConstraint.vertical)for(var He=y.alignmentConstraint.vertical,ze=o(function(V){var xe=new Set;He[V].forEach(function(ve){xe.add(ve)});var q=new Set([].concat(u(xe)).filter(function(ve){return P.has(ve)})),pe=void 0;q.size>0?pe=b[x.get(q.values().next().value)]:pe=_(xe).x,xe.forEach(function(ve){P.has(ve)||(b[x.get(ve)]=pe)})},"_loop4"),Re=0;Re0?pe=w[x.get(q.values().next().value)]:pe=_(xe).y,xe.forEach(function(ve){P.has(ve)||(w[x.get(ve)]=pe)})},"_loop5"),W=0;W{a.exports=t}},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return e[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(45);return i})()})});var lve=Ni((h4,nF)=>{"use strict";o(function(e,r){typeof h4=="object"&&typeof nF=="object"?nF.exports=r(rF()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof h4=="object"?h4.cytoscapeFcose=r(rF()):e.cytoscapeFcose=r(e.coseBase)},"webpackUniversalModuleDefinition")(h4,function(t){return(()=>{"use strict";var e={658:a=>{a.exports=Object.assign!=null?Object.assign.bind(Object):function(s){for(var l=arguments.length,u=Array(l>1?l-1:0),h=1;h{var u=function(){function d(p,m){var g=[],y=!0,v=!1,x=void 0;try{for(var b=p[Symbol.iterator](),w;!(y=(w=b.next()).done)&&(g.push(w.value),!(m&&g.length===m));y=!0);}catch(C){v=!0,x=C}finally{try{!y&&b.return&&b.return()}finally{if(v)throw x}}return g}return o(d,"sliceIterator"),function(p,m){if(Array.isArray(p))return p;if(Symbol.iterator in Object(p))return d(p,m);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),h=l(140).layoutBase.LinkedList,f={};f.getTopMostNodes=function(d){for(var p={},m=0;m0&&B.merge(z)});for(var F=0;F1){w=x[0],C=w.connectedEdges().length,x.forEach(function(N){N.connectedEdges().length0&&g.set("dummy"+(g.size+1),A),S},f.relocateComponent=function(d,p,m){if(!m.fixedNodeConstraint){var g=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,v=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY;if(m.quality=="draft"){var b=!0,w=!1,C=void 0;try{for(var T=p.nodeIndexes[Symbol.iterator](),E;!(b=(E=T.next()).done);b=!0){var A=E.value,S=u(A,2),_=S[0],I=S[1],D=m.cy.getElementById(_);if(D){var k=D.boundingBox(),L=p.xCoords[I]-k.w/2,R=p.xCoords[I]+k.w/2,O=p.yCoords[I]-k.h/2,N=p.yCoords[I]+k.h/2;Ly&&(y=R),Ox&&(x=N)}}}catch(z){w=!0,C=z}finally{try{!b&&T.return&&T.return()}finally{if(w)throw C}}var B=d.x-(y+g)/2,F=d.y-(x+v)/2;p.xCoords=p.xCoords.map(function(z){return z+B}),p.yCoords=p.yCoords.map(function(z){return z+F})}else{Object.keys(p).forEach(function(z){var H=p[z],Q=H.getRect().x,j=H.getRect().x+H.getRect().width,ie=H.getRect().y,ne=H.getRect().y+H.getRect().height;Qy&&(y=j),iex&&(x=ne)});var P=d.x-(y+g)/2,G=d.y-(x+v)/2;Object.keys(p).forEach(function(z){var H=p[z];H.setCenter(H.getCenterX()+P,H.getCenterY()+G)})}}},f.calcBoundingBox=function(d,p,m,g){for(var y=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,x=Number.MAX_SAFE_INTEGER,b=Number.MIN_SAFE_INTEGER,w=void 0,C=void 0,T=void 0,E=void 0,A=d.descendants().not(":parent"),S=A.length,_=0;_w&&(y=w),vT&&(x=T),b{var u=l(548),h=l(140).CoSELayout,f=l(140).CoSENode,d=l(140).layoutBase.PointD,p=l(140).layoutBase.DimensionD,m=l(140).layoutBase.LayoutConstants,g=l(140).layoutBase.FDLayoutConstants,y=l(140).CoSEConstants,v=o(function(b,w){var C=b.cy,T=b.eles,E=T.nodes(),A=T.edges(),S=void 0,_=void 0,I=void 0,D={};b.randomize&&(S=w.nodeIndexes,_=w.xCoords,I=w.yCoords);var k=o(function(z){return typeof z=="function"},"isFn"),L=o(function(z,H){return k(z)?z(H):z},"optFn"),R=u.calcParentsWithoutChildren(C,T),O=o(function G(z,H,Q,j){for(var ie=H.length,ne=0;ne0){var J=void 0;J=Q.getGraphManager().add(Q.newGraph(),K),G(J,he,Q,j)}}},"processChildrenList"),N=o(function(z,H,Q){for(var j=0,ie=0,ne=0;ne0?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=j/ie:k(b.idealEdgeLength)?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=50:y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=b.idealEdgeLength,y.MIN_REPULSION_DIST=g.MIN_REPULSION_DIST=g.DEFAULT_EDGE_LENGTH/10,y.DEFAULT_RADIAL_SEPARATION=g.DEFAULT_EDGE_LENGTH)},"processEdges"),B=o(function(z,H){H.fixedNodeConstraint&&(z.constraints.fixedNodeConstraint=H.fixedNodeConstraint),H.alignmentConstraint&&(z.constraints.alignmentConstraint=H.alignmentConstraint),H.relativePlacementConstraint&&(z.constraints.relativePlacementConstraint=H.relativePlacementConstraint)},"processConstraints");b.nestingFactor!=null&&(y.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=g.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=b.nestingFactor),b.gravity!=null&&(y.DEFAULT_GRAVITY_STRENGTH=g.DEFAULT_GRAVITY_STRENGTH=b.gravity),b.numIter!=null&&(y.MAX_ITERATIONS=g.MAX_ITERATIONS=b.numIter),b.gravityRange!=null&&(y.DEFAULT_GRAVITY_RANGE_FACTOR=g.DEFAULT_GRAVITY_RANGE_FACTOR=b.gravityRange),b.gravityCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_STRENGTH=g.DEFAULT_COMPOUND_GRAVITY_STRENGTH=b.gravityCompound),b.gravityRangeCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=g.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=b.gravityRangeCompound),b.initialEnergyOnIncremental!=null&&(y.DEFAULT_COOLING_FACTOR_INCREMENTAL=g.DEFAULT_COOLING_FACTOR_INCREMENTAL=b.initialEnergyOnIncremental),b.tilingCompareBy!=null&&(y.TILING_COMPARE_BY=b.tilingCompareBy),b.quality=="proof"?m.QUALITY=2:m.QUALITY=0,y.NODE_DIMENSIONS_INCLUDE_LABELS=g.NODE_DIMENSIONS_INCLUDE_LABELS=m.NODE_DIMENSIONS_INCLUDE_LABELS=b.nodeDimensionsIncludeLabels,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!b.randomize,y.ANIMATE=g.ANIMATE=m.ANIMATE=b.animate,y.TILE=b.tile,y.TILING_PADDING_VERTICAL=typeof b.tilingPaddingVertical=="function"?b.tilingPaddingVertical.call():b.tilingPaddingVertical,y.TILING_PADDING_HORIZONTAL=typeof b.tilingPaddingHorizontal=="function"?b.tilingPaddingHorizontal.call():b.tilingPaddingHorizontal,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!0,y.PURE_INCREMENTAL=!b.randomize,m.DEFAULT_UNIFORM_LEAF_NODE_SIZES=b.uniformNodeDimensions,b.step=="transformed"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!1),b.step=="enforced"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!1),b.step=="cose"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!0),b.step=="all"&&(b.randomize?y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!0),b.fixedNodeConstraint||b.alignmentConstraint||b.relativePlacementConstraint?y.TREE_REDUCTION_ON_INCREMENTAL=!1:y.TREE_REDUCTION_ON_INCREMENTAL=!0;var F=new h,P=F.newGraphManager();return O(P.addRoot(),u.getTopMostNodes(E),F,b),N(F,P,A),B(F,b),F.runLayout(),D},"coseLayout");a.exports={coseLayout:v}},212:(a,s,l)=>{var u=function(){function b(w,C){for(var T=0;T0)if(N){var P=d.getTopMostNodes(T.eles.nodes());if(k=d.connectComponents(E,T.eles,P),k.forEach(function(ce){var ae=ce.boundingBox();L.push({x:ae.x1+ae.w/2,y:ae.y1+ae.h/2})}),T.randomize&&k.forEach(function(ce){T.eles=ce,S.push(m(T))}),T.quality=="default"||T.quality=="proof"){var G=E.collection();if(T.tile){var z=new Map,H=[],Q=[],j=0,ie={nodeIndexes:z,xCoords:H,yCoords:Q},ne=[];if(k.forEach(function(ce,ae){ce.edges().length==0&&(ce.nodes().forEach(function(Oe,ge){G.merge(ce.nodes()[ge]),Oe.isParent()||(ie.nodeIndexes.set(ce.nodes()[ge].id(),j++),ie.xCoords.push(ce.nodes()[0].position().x),ie.yCoords.push(ce.nodes()[0].position().y))}),ne.push(ae))}),G.length>1){var le=G.boundingBox();L.push({x:le.x1+le.w/2,y:le.y1+le.h/2}),k.push(G),S.push(ie);for(var he=ne.length-1;he>=0;he--)k.splice(ne[he],1),S.splice(ne[he],1),L.splice(ne[he],1)}}k.forEach(function(ce,ae){T.eles=ce,D.push(y(T,S[ae])),d.relocateComponent(L[ae],D[ae],T)})}else k.forEach(function(ce,ae){d.relocateComponent(L[ae],S[ae],T)});var K=new Set;if(k.length>1){var X=[],te=A.filter(function(ce){return ce.css("display")=="none"});k.forEach(function(ce,ae){var Oe=void 0;if(T.quality=="draft"&&(Oe=S[ae].nodeIndexes),ce.nodes().not(te).length>0){var ge={};ge.edges=[],ge.nodes=[];var Ge=void 0;ce.nodes().not(te).forEach(function(He){if(T.quality=="draft")if(!He.isParent())Ge=Oe.get(He.id()),ge.nodes.push({x:S[ae].xCoords[Ge]-He.boundingbox().w/2,y:S[ae].yCoords[Ge]-He.boundingbox().h/2,width:He.boundingbox().w,height:He.boundingbox().h});else{var ze=d.calcBoundingBox(He,S[ae].xCoords,S[ae].yCoords,Oe);ge.nodes.push({x:ze.topLeftX,y:ze.topLeftY,width:ze.width,height:ze.height})}else D[ae][He.id()]&&ge.nodes.push({x:D[ae][He.id()].getLeft(),y:D[ae][He.id()].getTop(),width:D[ae][He.id()].getWidth(),height:D[ae][He.id()].getHeight()})}),ce.edges().forEach(function(He){var ze=He.source(),Re=He.target();if(ze.css("display")!="none"&&Re.css("display")!="none")if(T.quality=="draft"){var Ie=Oe.get(ze.id()),be=Oe.get(Re.id()),W=[],de=[];if(ze.isParent()){var re=d.calcBoundingBox(ze,S[ae].xCoords,S[ae].yCoords,Oe);W.push(re.topLeftX+re.width/2),W.push(re.topLeftY+re.height/2)}else W.push(S[ae].xCoords[Ie]),W.push(S[ae].yCoords[Ie]);if(Re.isParent()){var oe=d.calcBoundingBox(Re,S[ae].xCoords,S[ae].yCoords,Oe);de.push(oe.topLeftX+oe.width/2),de.push(oe.topLeftY+oe.height/2)}else de.push(S[ae].xCoords[be]),de.push(S[ae].yCoords[be]);ge.edges.push({startX:W[0],startY:W[1],endX:de[0],endY:de[1]})}else D[ae][ze.id()]&&D[ae][Re.id()]&&ge.edges.push({startX:D[ae][ze.id()].getCenterX(),startY:D[ae][ze.id()].getCenterY(),endX:D[ae][Re.id()].getCenterX(),endY:D[ae][Re.id()].getCenterY()})}),ge.nodes.length>0&&(X.push(ge),K.add(ae))}});var J=O.packComponents(X,T.randomize).shifts;if(T.quality=="draft")S.forEach(function(ce,ae){var Oe=ce.xCoords.map(function(Ge){return Ge+J[ae].dx}),ge=ce.yCoords.map(function(Ge){return Ge+J[ae].dy});ce.xCoords=Oe,ce.yCoords=ge});else{var se=0;K.forEach(function(ce){Object.keys(D[ce]).forEach(function(ae){var Oe=D[ce][ae];Oe.setCenter(Oe.getCenterX()+J[se].dx,Oe.getCenterY()+J[se].dy)}),se++})}}}else{var B=T.eles.boundingBox();if(L.push({x:B.x1+B.w/2,y:B.y1+B.h/2}),T.randomize){var F=m(T);S.push(F)}T.quality=="default"||T.quality=="proof"?(D.push(y(T,S[0])),d.relocateComponent(L[0],D[0],T)):d.relocateComponent(L[0],S[0],T)}var ue=o(function(ae,Oe){if(T.quality=="default"||T.quality=="proof"){typeof ae=="number"&&(ae=Oe);var ge=void 0,Ge=void 0,He=ae.data("id");return D.forEach(function(Re){He in Re&&(ge={x:Re[He].getRect().getCenterX(),y:Re[He].getRect().getCenterY()},Ge=Re[He])}),T.nodeDimensionsIncludeLabels&&(Ge.labelWidth&&(Ge.labelPosHorizontal=="left"?ge.x+=Ge.labelWidth/2:Ge.labelPosHorizontal=="right"&&(ge.x-=Ge.labelWidth/2)),Ge.labelHeight&&(Ge.labelPosVertical=="top"?ge.y+=Ge.labelHeight/2:Ge.labelPosVertical=="bottom"&&(ge.y-=Ge.labelHeight/2))),ge==null&&(ge={x:ae.position("x"),y:ae.position("y")}),{x:ge.x,y:ge.y}}else{var ze=void 0;return S.forEach(function(Re){var Ie=Re.nodeIndexes.get(ae.id());Ie!=null&&(ze={x:Re.xCoords[Ie],y:Re.yCoords[Ie]})}),ze==null&&(ze={x:ae.position("x"),y:ae.position("y")}),{x:ze.x,y:ze.y}}},"getPositions");if(T.quality=="default"||T.quality=="proof"||T.randomize){var Z=d.calcParentsWithoutChildren(E,A),Se=A.filter(function(ce){return ce.css("display")=="none"});T.eles=A.not(Se),A.nodes().not(":parent").not(Se).layoutPositions(C,T,ue),Z.length>0&&Z.forEach(function(ce){ce.position(ue(ce))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")},"run")}]),b}();a.exports=x},657:(a,s,l)=>{var u=l(548),h=l(140).layoutBase.Matrix,f=l(140).layoutBase.SVD,d=o(function(m){var g=m.cy,y=m.eles,v=y.nodes(),x=y.nodes(":parent"),b=new Map,w=new Map,C=new Map,T=[],E=[],A=[],S=[],_=[],I=[],D=[],k=[],L=void 0,R=void 0,O=1e8,N=1e-9,B=m.piTol,F=m.samplingType,P=m.nodeSeparation,G=void 0,z=o(function(){for(var xe=0,q=0,pe=!1;q=Pe;){we=ve[Pe++];for(var st=T[we],Ue=0;Ueqe&&(qe=_[We],at=We)}return at},"BFS"),Q=o(function(xe){var q=void 0;if(xe){q=Math.floor(Math.random()*R),L=q;for(var ve=0;ve=1)break;qe=De}for(var st=0;st=1)break;qe=De}for(var ct=0;ct0&&(q.isParent()?T[xe].push(C.get(q.id())):T[xe].push(q.id()))})});var Z=o(function(xe){var q=w.get(xe),pe=void 0;b.get(xe).forEach(function(ve){g.getElementById(ve).isParent()?pe=C.get(ve):pe=ve,T[q].push(pe),T[w.get(pe)].push(xe)})},"_loop"),Se=!0,ce=!1,ae=void 0;try{for(var Oe=b.keys()[Symbol.iterator](),ge;!(Se=(ge=Oe.next()).done);Se=!0){var Ge=ge.value;Z(Ge)}}catch(V){ce=!0,ae=V}finally{try{!Se&&Oe.return&&Oe.return()}finally{if(ce)throw ae}}R=w.size;var He=void 0;if(R>2){G=R{var u=l(212),h=o(function(d){d&&d("layout","fcose",u)},"register");typeof cytoscape<"u"&&h(cytoscape),a.exports=h},140:a=>{a.exports=t}},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return e[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(579);return i})()})});var oy,Xp,iF=M(()=>{"use strict";Zc();oy=o(t=>`${t}`,"wrapIcon"),Xp={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:oy('')},server:{body:oy('')},disk:{body:oy('')},internet:{body:oy('')},cloud:{body:oy('')},unknown:wC,blank:{body:oy("")}}}});var cve,uve,hve,fve,dve=M(()=>{"use strict";Zc();Gt();Ks();l4();iF();YS();cve=o(async function(t,e){let r=Di("padding"),n=Di("iconSize"),i=n/2,a=n/6,s=a/2;await Promise.all(e.edges().map(async l=>{let{source:u,sourceDir:h,sourceArrow:f,sourceGroup:d,target:p,targetDir:m,targetArrow:g,targetGroup:y,label:v}=qS(l),{x,y:b}=l[0].sourceEndpoint(),{x:w,y:C}=l[0].midpoint(),{x:T,y:E}=l[0].targetEndpoint(),A=r+4;if(d&&(Ua(h)?x+=h==="L"?-A:A:b+=h==="T"?-A:A+18),y&&(Ua(m)?T+=m==="L"?-A:A:E+=m==="T"?-A:A+18),!d&&Yp.getNode(u)?.type==="junction"&&(Ua(h)?x+=h==="L"?i:-i:b+=h==="T"?i:-i),!y&&Yp.getNode(p)?.type==="junction"&&(Ua(m)?T+=m==="L"?i:-i:E+=m==="T"?i:-i),l[0]._private.rscratch){let S=t.insert("g");if(S.insert("path").attr("d",`M ${x},${b} L ${w},${C} L${T},${E} `).attr("class","edge"),f){let _=Ua(h)?a4[h](x,a):x-s,I=jc(h)?a4[h](b,a):b-s;S.insert("polygon").attr("points",KB[h](a)).attr("transform",`translate(${_},${I})`).attr("class","arrow")}if(g){let _=Ua(m)?a4[m](T,a):T-s,I=jc(m)?a4[m](E,a):E-s;S.insert("polygon").attr("points",KB[m](a)).attr("transform",`translate(${_},${I})`).attr("class","arrow")}if(v){let _=s4(h,m)?"XY":Ua(h)?"X":"Y",I=0;_==="X"?I=Math.abs(x-T):_==="Y"?I=Math.abs(b-E)/1.5:I=Math.abs(x-T)/2;let D=S.append("g");if(await Hn(D,v,{useHtmlLabels:!1,width:I,classes:"architecture-service-label"},me()),D.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),_==="X")D.attr("transform","translate("+w+", "+C+")");else if(_==="Y")D.attr("transform","translate("+w+", "+C+") rotate(-90)");else if(_==="XY"){let k=o4(h,m);if(k&&Qye(k)){let L=D.node().getBoundingClientRect(),[R,O]=Jye(k);D.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*R*O*45})`);let N=D.node().getBoundingClientRect();D.attr("transform",` + translate(${w}, ${C-L.height/2}) + translate(${R*N.width/2}, ${O*N.height/2}) + rotate(${-1*R*O*45}, 0, ${L.height/2}) + `)}}}}}))},"drawEdges"),uve=o(async function(t,e){let n=Di("padding")*.75,i=Di("fontSize"),s=Di("iconSize")/2;await Promise.all(e.nodes().map(async l=>{let u=Of(l);if(u.type==="group"){let{h,w:f,x1:d,y1:p}=l.boundingBox();t.append("rect").attr("x",d+s).attr("y",p+s).attr("width",f).attr("height",h).attr("class","node-bkg");let m=t.append("g"),g=d,y=p;if(u.icon){let v=m.append("g");v.html(`${await yo(u.icon,{height:n,width:n,fallbackPrefix:Xp.prefix})}`),v.attr("transform","translate("+(g+s+1)+", "+(y+s+1)+")"),g+=n,y+=i/2-1-2}if(u.label){let v=m.append("g");await Hn(v,u.label,{useHtmlLabels:!1,width:f,classes:"architecture-service-label"},me()),v.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),v.attr("transform","translate("+(g+s+4)+", "+(y+s+2)+")")}}}))},"drawGroups"),hve=o(async function(t,e,r){for(let n of r){let i=e.append("g"),a=Di("iconSize");if(n.title){let h=i.append("g");await Hn(h,n.title,{useHtmlLabels:!1,width:a*1.5,classes:"architecture-service-label"},me()),h.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),h.attr("transform","translate("+a/2+", "+a+")")}let s=i.append("g");if(n.icon)s.html(`${await yo(n.icon,{height:a,width:a,fallbackPrefix:Xp.prefix})}`);else if(n.iconText){s.html(`${await yo("blank",{height:a,width:a,fallbackPrefix:Xp.prefix})}`);let d=s.append("g").append("foreignObject").attr("width",a).attr("height",a).append("div").attr("class","node-icon-text").attr("style",`height: ${a}px;`).append("div").html(n.iconText),p=parseInt(window.getComputedStyle(d.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;d.attr("style",`-webkit-line-clamp: ${Math.floor((a-2)/p)};`)}else s.append("path").attr("class","node-bkg").attr("id","node-"+n.id).attr("d",`M0 ${a} v${-a} q0,-5 5,-5 h${a} q5,0 5,5 v${a} H0 Z`);i.attr("class","architecture-service");let{width:l,height:u}=i._groups[0][0].getBBox();n.width=l,n.height=u,t.setElementForId(n.id,i)}return 0},"drawServices"),fve=o(function(t,e,r){r.forEach(n=>{let i=e.append("g"),a=Di("iconSize");i.append("g").append("rect").attr("id","node-"+n.id).attr("fill-opacity","0").attr("width",a).attr("height",a),i.attr("class","architecture-junction");let{width:l,height:u}=i._groups[0][0].getBBox();i.width=l,i.height=u,t.setElementForId(n.id,i)})},"drawJunctions")});function Stt(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"service",id:r.id,icon:r.icon,label:r.title,parent:r.in,width:Di("iconSize"),height:Di("iconSize")},classes:"node-service"})})}function Ctt(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"junction",id:r.id,parent:r.in,width:Di("iconSize"),height:Di("iconSize")},classes:"node-junction"})})}function Att(t,e){e.nodes().map(r=>{let n=Of(r);if(n.type==="group")return;n.x=r.position().x,n.y=r.position().y,t.getElementById(n.id).attr("transform","translate("+(n.x||0)+","+(n.y||0)+")")})}function _tt(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"group",id:r.id,icon:r.icon,label:r.title,parent:r.in},classes:"node-group"})})}function Dtt(t,e){t.forEach(r=>{let{lhsId:n,rhsId:i,lhsInto:a,lhsGroup:s,rhsInto:l,lhsDir:u,rhsDir:h,rhsGroup:f,title:d}=r,p=s4(r.lhsDir,r.rhsDir)?"segments":"straight",m={id:`${n}-${i}`,label:d,source:n,sourceDir:u,sourceArrow:a,sourceGroup:s,sourceEndpoint:u==="L"?"0 50%":u==="R"?"100% 50%":u==="T"?"50% 0":"50% 100%",target:i,targetDir:h,targetArrow:l,targetGroup:f,targetEndpoint:h==="L"?"0 50%":h==="R"?"100% 50%":h==="T"?"50% 0":"50% 100%"};e.add({group:"edges",data:m,classes:p})})}function Ltt(t,e,r){let n=o((l,u)=>Object.entries(l).reduce((h,[f,d])=>{let p=0,m=Object.entries(d);if(m.length===1)return h[f]=m[0][1],h;for(let g=0;g{let u={},h={};return Object.entries(l).forEach(([f,[d,p]])=>{let m=t.getNode(f)?.in??"default";u[p]??={},u[p][m]??=[],u[p][m].push(f),h[d]??={},h[d][m]??=[],h[d][m].push(f)}),{horiz:Object.values(n(u,"horizontal")).filter(f=>f.length>1),vert:Object.values(n(h,"vertical")).filter(f=>f.length>1)}}),[a,s]=i.reduce(([l,u],{horiz:h,vert:f})=>[[...l,...h],[...u,...f]],[[],[]]);return{horizontal:a,vertical:s}}function Rtt(t){let e=[],r=o(i=>`${i[0]},${i[1]}`,"posToStr"),n=o(i=>i.split(",").map(a=>parseInt(a)),"strToPos");return t.forEach(i=>{let a=Object.fromEntries(Object.entries(i).map(([h,f])=>[r(f),h])),s=[r([0,0])],l={},u={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;s.length>0;){let h=s.shift();if(h){l[h]=1;let f=a[h];if(f){let d=n(h);Object.entries(u).forEach(([p,m])=>{let g=r([d[0]+m[0],d[1]+m[1]]),y=a[g];y&&!l[g]&&(s.push(g),e.push({[jB[p]]:y,[jB[Kye(p)]]:f,gap:1.5*Di("iconSize")}))})}}}}),e}function Ntt(t,e,r,n,i,{spatialMaps:a,groupAlignments:s}){return new Promise(l=>{let u=$e("body").append("div").attr("id","cy").attr("style","display:none"),h=Jo({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight",label:"data(label)","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${Di("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${Di("padding")}px`}}]});u.remove(),_tt(r,h),Stt(t,h),Ctt(e,h),Dtt(n,h);let f=Ltt(i,a,s),d=Rtt(a),p=h.layout({name:"fcose",quality:"proof",styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(m){let[g,y]=m.connectedNodes(),{parent:v}=Of(g),{parent:x}=Of(y);return v===x?1.5*Di("iconSize"):.5*Di("iconSize")},edgeElasticity(m){let[g,y]=m.connectedNodes(),{parent:v}=Of(g),{parent:x}=Of(y);return v===x?.45:.001},alignmentConstraint:f,relativePlacementConstraint:d});p.one("layoutstop",()=>{function m(g,y,v,x){let b,w,{x:C,y:T}=g,{x:E,y:A}=y;w=(x-T+(C-v)*(T-A)/(C-E))/Math.sqrt(1+Math.pow((T-A)/(C-E),2)),b=Math.sqrt(Math.pow(x-T,2)+Math.pow(v-C,2)-Math.pow(w,2));let S=Math.sqrt(Math.pow(E-C,2)+Math.pow(A-T,2));b=b/S;let _=(E-C)*(x-T)-(A-T)*(v-C);switch(!0){case _>=0:_=1;break;case _<0:_=-1;break}let I=(E-C)*(v-C)+(A-T)*(x-T);switch(!0){case I>=0:I=1;break;case I<0:I=-1;break}return w=Math.abs(w)*_,b=b*I,{distances:w,weights:b}}o(m,"getSegmentWeights"),h.startBatch();for(let g of Object.values(h.edges()))if(g.data?.()){let{x:y,y:v}=g.source().position(),{x,y:b}=g.target().position();if(y!==x&&v!==b){let w=g.sourceEndpoint(),C=g.targetEndpoint(),{sourceDir:T}=qS(g),[E,A]=jc(T)?[w.x,C.y]:[C.x,w.y],{weights:S,distances:_}=m(w,C,E,A);g.style("segment-distances",_),g.style("segment-weights",S)}}h.endBatch(),p.run()}),p.run(),h.ready(m=>{Y.info("Ready",m),l(h)})})}var pve,Mtt,mve,gve=M(()=>{"use strict";Zc();hB();pve=Ta(lve(),1);hr();vt();Hu();Ti();l4();iF();YS();dve();k4([{name:Xp.prefix,icons:Xp}]);Jo.use(pve.default);o(Stt,"addServices");o(Ctt,"addJunctions");o(Att,"positionNodes");o(_tt,"addGroups");o(Dtt,"addEdges");o(Ltt,"getAlignments");o(Rtt,"getRelativeConstraints");o(Ntt,"layoutArchitecture");Mtt=o(async(t,e,r,n)=>{let i=n.db,a=i.getServices(),s=i.getJunctions(),l=i.getGroups(),u=i.getEdges(),h=i.getDataStructures(),f=Pa(e),d=f.append("g");d.attr("class","architecture-edges");let p=f.append("g");p.attr("class","architecture-services");let m=f.append("g");m.attr("class","architecture-groups"),await hve(i,p,a),fve(i,p,s);let g=await Ntt(a,s,l,u,i,h);await cve(d,g),await uve(m,g),Att(i,g),ko(void 0,f,Di("padding"),Di("useMaxWidth"))},"draw"),mve={draw:Mtt}});var yve={};pr(yve,{diagram:()=>Itt});var Itt,vve=M(()=>{"use strict";ave();l4();ove();gve();Itt={parser:ive,db:Yp,renderer:mve,styles:sve}});var brt={};pr(brt,{default:()=>xrt});Zc();TC();Wf();var IX="c4",lCe=o(t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),"detector"),cCe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(MX(),NX));return{id:IX,diagram:t}},"loader"),uCe={id:IX,detector:lCe,loader:cCe},OX=uCe;var Oie="flowchart",WIe=o((t,e)=>e?.flowchart?.defaultRenderer==="dagre-wrapper"||e?.flowchart?.defaultRenderer==="elk"?!1:/^\s*graph/.test(t),"detector"),qIe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(jT(),XT));return{id:Oie,diagram:t}},"loader"),YIe={id:Oie,detector:WIe,loader:qIe},Pie=YIe;var Bie="flowchart-v2",XIe=o((t,e)=>e?.flowchart?.defaultRenderer==="dagre-d3"?!1:(e?.flowchart?.defaultRenderer==="elk"&&(e.layout="elk"),/^\s*graph/.test(t)&&e?.flowchart?.defaultRenderer==="dagre-wrapper"?!0:/^\s*flowchart/.test(t)),"detector"),jIe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(jT(),XT));return{id:Bie,diagram:t}},"loader"),KIe={id:Bie,detector:XIe,loader:jIe},Fie=KIe;var Yie="er",tOe=o(t=>/^\s*erDiagram/.test(t),"detector"),rOe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(qie(),Wie));return{id:Yie,diagram:t}},"loader"),nOe={id:Yie,detector:tOe,loader:rOe},Xie=nOe;var Xce="gitGraph",Eze=o(t=>/^\s*gitGraph/.test(t),"detector"),Sze=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Yce(),qce));return{id:Xce,diagram:t}},"loader"),Cze={id:Xce,detector:Eze,loader:Sze},jce=Cze;var Sue="gantt",dGe=o(t=>/^\s*gantt/.test(t),"detector"),pGe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Eue(),kue));return{id:Sue,diagram:t}},"loader"),mGe={id:Sue,detector:dGe,loader:pGe},Cue=mGe;var Oue="info",wGe=o(t=>/^\s*info/.test(t),"detector"),TGe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Iue(),Mue));return{id:Oue,diagram:t}},"loader"),Pue={id:Oue,detector:wGe,loader:TGe};var que="pie",OGe=o(t=>/^\s*pie/.test(t),"detector"),PGe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Wue(),Hue));return{id:que,diagram:t}},"loader"),Yue={id:que,detector:OGe,loader:PGe};var she="quadrantChart",e$e=o(t=>/^\s*quadrantChart/.test(t),"detector"),t$e=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(ahe(),ihe));return{id:she,diagram:t}},"loader"),r$e={id:she,detector:e$e,loader:t$e},ohe=r$e;var Ihe="xychart",v$e=o(t=>/^\s*xychart-beta/.test(t),"detector"),x$e=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Mhe(),Nhe));return{id:Ihe,diagram:t}},"loader"),b$e={id:Ihe,detector:v$e,loader:x$e},Ohe=b$e;var Hhe="requirement",E$e=o(t=>/^\s*requirement(Diagram)?/.test(t),"detector"),S$e=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Uhe(),Vhe));return{id:Hhe,diagram:t}},"loader"),C$e={id:Hhe,detector:E$e,loader:S$e},Whe=C$e;var hfe="sequence",cVe=o(t=>/^\s*sequenceDiagram/.test(t),"detector"),uVe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(ufe(),cfe));return{id:hfe,diagram:t}},"loader"),hVe={id:hfe,detector:cVe,loader:uVe},ffe=hVe;var vfe="class",yVe=o((t,e)=>e?.class?.defaultRenderer==="dagre-wrapper"?!1:/^\s*classDiagram/.test(t),"detector"),vVe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(yfe(),gfe));return{id:vfe,diagram:t}},"loader"),xVe={id:vfe,detector:yVe,loader:vVe},xfe=xVe;var Tfe="classDiagram",wVe=o((t,e)=>/^\s*classDiagram/.test(t)&&e?.class?.defaultRenderer==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(t),"detector"),TVe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(wfe(),bfe));return{id:Tfe,diagram:t}},"loader"),kVe={id:Tfe,detector:wVe,loader:TVe},kfe=kVe;var lde="state",JVe=o((t,e)=>e?.state?.defaultRenderer==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(t),"detector"),eUe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(ode(),sde));return{id:lde,diagram:t}},"loader"),tUe={id:lde,detector:JVe,loader:eUe},cde=tUe;var fde="stateDiagram",nUe=o((t,e)=>!!(/^\s*stateDiagram-v2/.test(t)||/^\s*stateDiagram/.test(t)&&e?.state?.defaultRenderer==="dagre-wrapper"),"detector"),iUe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(hde(),ude));return{id:fde,diagram:t}},"loader"),aUe={id:fde,detector:nUe,loader:iUe},dde=aUe;var Dde="journey",CUe=o(t=>/^\s*journey/.test(t),"detector"),AUe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(_de(),Ade));return{id:Dde,diagram:t}},"loader"),_Ue={id:Dde,detector:CUe,loader:AUe},Lde=_Ue;vt();Hu();Ti();var DUe=o((t,e,r)=>{Y.debug(`rendering svg for syntax error +`);let n=Pa(e),i=n.append("g");n.attr("viewBox","0 0 2412 512"),vn(n,100,512,!0),i.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),i.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),i.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),i.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),i.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),i.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),i.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),i.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${r}`)},"draw"),eP={draw:DUe},Rde=eP;var LUe={db:{},renderer:eP,parser:{parse:o(()=>{},"parse")}},Nde=LUe;var Mde="flowchart-elk",RUe=o((t,e={})=>/^\s*flowchart-elk/.test(t)||/^\s*flowchart|graph/.test(t)&&e?.flowchart?.defaultRenderer==="elk"?(e.layout="elk",!0):!1,"detector"),NUe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(jT(),XT));return{id:Mde,diagram:t}},"loader"),MUe={id:Mde,detector:RUe,loader:NUe},Ide=MUe;var spe="timeline",ZUe=o(t=>/^\s*timeline/.test(t),"detector"),JUe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(ape(),ipe));return{id:spe,diagram:t}},"loader"),eHe={id:spe,detector:ZUe,loader:JUe},ope=eHe;var Fge="mindmap",NZe=o(t=>/^\s*mindmap/.test(t),"detector"),MZe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Bge(),Pge));return{id:Fge,diagram:t}},"loader"),IZe={id:Fge,detector:NZe,loader:MZe},zge=IZe;var Qge="kanban",KZe=o(t=>/^\s*kanban/.test(t),"detector"),QZe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Kge(),jge));return{id:Qge,diagram:t}},"loader"),ZZe={id:Qge,detector:KZe,loader:QZe},Zge=ZZe;var M1e="sankey",wJe=o(t=>/^\s*sankey-beta/.test(t),"detector"),TJe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(N1e(),R1e));return{id:M1e,diagram:t}},"loader"),kJe={id:M1e,detector:wJe,loader:TJe},I1e=kJe;var H1e="packet",PJe=o(t=>/^\s*packet-beta/.test(t),"detector"),BJe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(U1e(),V1e));return{id:H1e,diagram:t}},"loader"),W1e={id:H1e,detector:PJe,loader:BJe};var Xye="block",stt=o(t=>/^\s*block-beta/.test(t),"detector"),ott=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Yye(),qye));return{id:Xye,diagram:t}},"loader"),ltt={id:Xye,detector:stt,loader:ott},jye=ltt;var xve="architecture",Ott=o(t=>/^\s*architecture/.test(t),"detector"),Ptt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(vve(),yve));return{id:xve,diagram:t}},"loader"),Btt={id:xve,detector:Ott,loader:Ptt},bve=Btt;Wf();Gt();var wve=!1,ly=o(()=>{wve||(wve=!0,rd("error",Nde,t=>t.toLowerCase().trim()==="error"),rd("---",{db:{clear:o(()=>{},"clear")},styles:{},renderer:{draw:o(()=>{},"draw")},parser:{parse:o(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:o(()=>null,"init")},t=>t.toLowerCase().trimStart().startsWith("---")),A4(OX,Zge,kfe,xfe,Xie,Cue,Pue,Yue,Whe,ffe,Ide,Fie,Pie,zge,ope,jce,dde,cde,Lde,ohe,I1e,W1e,Ohe,jye,bve))},"addDiagrams");vt();Wf();Gt();var Tve=o(async()=>{Y.debug("Loading registered diagrams");let e=(await Promise.allSettled(Object.entries(Hf).map(async([r,{detector:n,loader:i}])=>{if(i)try{Vy(r)}catch{try{let{diagram:a,id:s}=await i();rd(s,a,n)}catch(a){throw Y.error(`Failed to load external diagram with key ${r}. Removing from detectors.`),delete Hf[r],a}}}))).filter(r=>r.status==="rejected");if(e.length>0){Y.error(`Failed to load ${e.length} external diagrams`);for(let r of e)Y.error(r);throw new Error(`Failed to load ${e.length} external diagrams`)}},"loadRegisteredDiagrams");vt();hr();var XS="comm",jS="rule",KS="decl";var kve="@import";var Eve="@namespace",Sve="@keyframes";var Cve="@layer";var aF=Math.abs,f4=String.fromCharCode;function QS(t){return t.trim()}o(QS,"trim");function d4(t,e,r){return t.replace(e,r)}o(d4,"replace");function Ave(t,e,r){return t.indexOf(e,r)}o(Ave,"indexof");function Pf(t,e){return t.charCodeAt(e)|0}o(Pf,"charat");function Bf(t,e,r){return t.slice(e,r)}o(Bf,"substr");function po(t){return t.length}o(po,"strlen");function _ve(t){return t.length}o(_ve,"sizeof");function cy(t,e){return e.push(t),t}o(cy,"append");var ZS=1,uy=1,Dve=0,tl=0,Li=0,fy="";function JS(t,e,r,n,i,a,s,l){return{value:t,root:e,parent:r,type:n,props:i,children:a,line:ZS,column:uy,length:s,return:"",siblings:l}}o(JS,"node");function Lve(){return Li}o(Lve,"char");function Rve(){return Li=tl>0?Pf(fy,--tl):0,uy--,Li===10&&(uy=1,ZS--),Li}o(Rve,"prev");function rl(){return Li=tl2||hy(Li)>3?"":" "}o(Ive,"whitespace");function Ove(t,e){for(;--e&&rl()&&!(Li<48||Li>102||Li>57&&Li<65||Li>70&&Li<97););return eC(t,p4()+(e<6&&Ju()==32&&rl()==32))}o(Ove,"escaping");function sF(t){for(;rl();)switch(Li){case t:return tl;case 34:case 39:t!==34&&t!==39&&sF(Li);break;case 40:t===41&&sF(t);break;case 92:rl();break}return tl}o(sF,"delimiter");function Pve(t,e){for(;rl()&&t+Li!==57;)if(t+Li===84&&Ju()===47)break;return"/*"+eC(e,tl-1)+"*"+f4(t===47?t:rl())}o(Pve,"commenter");function Bve(t){for(;!hy(Ju());)rl();return eC(t,tl)}o(Bve,"identifier");function Gve(t){return Mve(rC("",null,null,null,[""],t=Nve(t),0,[0],t))}o(Gve,"compile");function rC(t,e,r,n,i,a,s,l,u){for(var h=0,f=0,d=s,p=0,m=0,g=0,y=1,v=1,x=1,b=0,w="",C=i,T=a,E=n,A=w;v;)switch(g=b,b=rl()){case 40:if(g!=108&&Pf(A,d-1)==58){Ave(A+=d4(tC(b),"&","&\f"),"&\f",aF(h?l[h-1]:0))!=-1&&(x=-1);break}case 34:case 39:case 91:A+=tC(b);break;case 9:case 10:case 13:case 32:A+=Ive(g);break;case 92:A+=Ove(p4()-1,7);continue;case 47:switch(Ju()){case 42:case 47:cy(Ftt(Pve(rl(),p4()),e,r,u),u),(hy(g||1)==5||hy(Ju()||1)==5)&&po(A)&&Bf(A,-1,void 0)!==" "&&(A+=" ");break;default:A+="/"}break;case 123*y:l[h++]=po(A)*x;case 125*y:case 59:case 0:switch(b){case 0:case 125:v=0;case 59+f:x==-1&&(A=d4(A,/\f/g,"")),m>0&&(po(A)-d||y===0&&g===47)&&cy(m>32?zve(A+";",n,r,d-1,u):zve(d4(A," ","")+";",n,r,d-2,u),u);break;case 59:A+=";";default:if(cy(E=Fve(A,e,r,h,f,i,l,w,C=[],T=[],d,a),a),b===123)if(f===0)rC(A,e,E,E,C,a,d,l,T);else{switch(p){case 99:if(Pf(A,3)===110)break;case 108:if(Pf(A,2)===97)break;default:f=0;case 100:case 109:case 115:}f?rC(t,E,E,n&&cy(Fve(t,E,E,0,0,i,l,w,i,C=[],d,T),T),i,T,d,l,n?C:T):rC(A,E,E,E,[""],T,0,l,T)}}h=f=m=0,y=x=1,w=A="",d=s;break;case 58:d=1+po(A),m=g;default:if(y<1){if(b==123)--y;else if(b==125&&y++==0&&Rve()==125)continue}switch(A+=f4(b),b*y){case 38:x=f>0?1:(A+="\f",-1);break;case 44:l[h++]=(po(A)-1)*x,x=1;break;case 64:Ju()===45&&(A+=tC(rl())),p=Ju(),f=d=po(w=A+=Bve(p4())),b++;break;case 45:g===45&&po(A)==2&&(y=0)}}return a}o(rC,"parse");function Fve(t,e,r,n,i,a,s,l,u,h,f,d){for(var p=i-1,m=i===0?a:[""],g=_ve(m),y=0,v=0,x=0;y0?m[b]+" "+w:d4(w,/&\f/g,m[b])))&&(u[x++]=C);return JS(t,e,r,i===0?jS:l,u,h,f,d)}o(Fve,"ruleset");function Ftt(t,e,r,n){return JS(t,e,r,XS,f4(Lve()),Bf(t,2,-2),0,n)}o(Ftt,"comment");function zve(t,e,r,n,i){return JS(t,e,r,KS,Bf(t,0,n),Bf(t,n+1,-1),n,i)}o(zve,"declaration");function nC(t,e){for(var r="",n=0;n{Hve.forEach(t=>{t()}),Hve=[]},"attachFunctions");vt();var qve=o(t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");C4();pw();function Yve(t){let e=t.match(S4);if(!e)return{text:t,metadata:{}};let r=im(e[1],{schema:nm})??{};r=typeof r=="object"&&!Array.isArray(r)?r:{};let n={};return r.displayMode&&(n.displayMode=r.displayMode.toString()),r.title&&(n.title=r.title.toString()),r.config&&(n.config=r.config),{text:t.slice(e[0].length),metadata:n}}o(Yve,"extractFrontMatter");sr();var Gtt=o(t=>t.replace(/\r\n?/g,` +`).replace(/<(\w+)([^>]*)>/g,(e,r,n)=>"<"+r+n.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),$tt=o(t=>{let{text:e,metadata:r}=Yve(t),{displayMode:n,title:i,config:a={}}=r;return n&&(a.gantt||(a.gantt={}),a.gantt.displayMode=n),{title:i,config:a,text:e}},"processFrontmatter"),Vtt=o(t=>{let e=$t.detectInit(t)??{},r=$t.detectDirective(t,"wrap");return Array.isArray(r)?e.wrap=r.some(({type:n})=>n==="wrap"):r?.type==="wrap"&&(e.wrap=!0),{text:wX(t),directive:e}},"processDirectives");function oF(t){let e=Gtt(t),r=$tt(e),n=Vtt(r.text),i=Es(r.config,n.directive);return t=qve(n.text),{code:t,title:r.title,config:i}}o(oF,"preprocessDiagram");$7();I4();sr();function Xve(t){let e=new TextEncoder().encode(t),r=Array.from(e,n=>String.fromCodePoint(n)).join("");return btoa(r)}o(Xve,"toBase64");var Utt=5e4,Htt="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",Wtt="sandbox",qtt="loose",Ytt="http://www.w3.org/2000/svg",Xtt="http://www.w3.org/1999/xlink",jtt="http://www.w3.org/1999/xhtml",Ktt="100%",Qtt="100%",Ztt="border:0;margin:0;",Jtt="margin:0",ert="allow-top-navigation-by-user-activation allow-popups",trt='The "iframe" tag is not supported by your browser.',rrt=["foreignobject"],nrt=["dominant-baseline"];function Zve(t){let e=oF(t);return ky(),Nz(e.config??{}),e}o(Zve,"processAndSetConfigs");async function irt(t,e){ly();try{let{code:r,config:n}=Zve(t);return{diagramType:(await Jve(r)).type,config:n}}catch(r){if(e?.suppressErrors)return!1;throw r}}o(irt,"parse");var jve=o((t,e,r=[])=>` +.${t} ${e} { ${r.join(" !important; ")} !important; }`,"cssImportantStyles"),art=o((t,e=new Map)=>{let r="";if(t.themeCSS!==void 0&&(r+=` ${t.themeCSS}`),t.fontFamily!==void 0&&(r+=` :root { --mermaid-font-family: ${t.fontFamily}}`),t.altFontFamily!==void 0&&(r+=` -:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),e instanceof Map){let s=t.htmlLabels??t.flowchart?.htmlLabels?["> *","span"]:["rect","polygon","ellipse","circle","path"];e.forEach(l=>{cr(l.styles)||s.forEach(u=>{r+=j2e(l.id,u,l.styles)}),cr(l.textStyles)||(r+=j2e(l.id,"tspan",(l?.textStyles||[]).map(u=>u.replace("color","fill"))))})}return r},"createCssStyles"),uat=o((t,e,r,n)=>{let i=cat(t,r),a=F$(e,i,t.themeVariables);return pS(G2e(`${n}{${a}}`),$2e)},"createUserStyles"),hat=o((t="",e,r)=>{let n=t;return!r&&!e&&(n=n.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),n=Ca(n),n=n.replace(/
    /g,"
    "),n},"cleanUpSvgCode"),fat=o((t="",e)=>{let r=e?.viewBox?.baseVal?.height?e.viewBox.baseVal.height+"px":tat,n=X2e(`${t}`);return``},"putIntoIFrame"),K2e=o((t,e,r,n,i)=>{let a=t.append("div");a.attr("id",r),n&&a.attr("style",n);let s=a.append("svg").attr("id",e).attr("width","100%").attr("xmlns",Qit);return i&&s.attr("xmlns:xlink",i),s.append("g"),t},"appendDivSvgG");function Q2e(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}o(Q2e,"sandboxedIframe");var dat=o((t,e,r,n)=>{t.getElementById(e)?.remove(),t.getElementById(r)?.remove(),t.getElementById(n)?.remove()},"removeExistingElements"),pat=o(async function(t,e,r){C1();let n=Z2e(e);e=n.code;let i=Sr();Y.debug(i),e.length>(i?.maxTextSize??qit)&&(e=Xit);let a="#"+t,s="i"+t,l="#"+s,u="d"+t,h="#"+u,f=o(()=>{let R=ze(p?l:h).node();R&&"remove"in R&&R.remove()},"removeTempElements"),d=ze("body"),p=i.securityLevel===jit,m=i.securityLevel===Kit,g=i.fontFamily;if(r!==void 0){if(r&&(r.innerHTML=""),p){let k=Q2e(ze(r),s);d=ze(k.nodes()[0].contentDocument.body),d.node().style.margin=0}else d=ze(r);K2e(d,t,u,`font-family: ${g}`,Zit)}else{if(dat(document,t,u,s),p){let k=Q2e(ze("body"),s);d=ze(k.nodes()[0].contentDocument.body),d.node().style.margin=0}else d=ze("body");K2e(d,t,u)}let y,v;try{y=await N1.fromText(e,{title:n.title})}catch(k){if(i.suppressErrorRendering)throw f(),k;y=await N1.fromText("error"),v=k}let x=d.select(h).node(),b=y.type,w=x.firstChild,_=w.firstChild,T=y.renderer.getClasses?.(e,y),E=uat(i,b,T,a),L=document.createElement("style");L.innerHTML=E,w.insertBefore(L,_);try{await y.renderer.draw(e,t,dx,y)}catch(k){throw i.suppressErrorRendering?f():X0e.draw(e,t,dx),k}let C=d.select(`${h} svg`),A=y.db.getAccTitle?.(),I=y.db.getAccDescription?.();gat(b,C,A,I),d.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",Jit);let D=d.select(h).node().innerHTML;if(Y.debug("config.arrowMarkerAbsolute",i.arrowMarkerAbsolute),D=hat(D,p,xr(i.arrowMarkerAbsolute)),p){let k=d.select(h+" svg").node();D=fat(D,k)}else m||(D=ah.sanitize(D,{ADD_TAGS:sat,ADD_ATTR:oat,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(W2e(),v)throw v;return f(),{diagramType:b,svg:D,bindFunctions:y.db.bindFunctions}},"render");function mat(t={}){let e=Gn({},t);e?.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables||(e.themeVariables={}),e.themeVariables.fontFamily=e.fontFamily),$z(e),e?.theme&&e.theme in ko?e.themeVariables=ko[e.theme].getThemeVariables(e.themeVariables):e&&(e.themeVariables=ko.default.getThemeVariables(e.themeVariables));let r=typeof e=="object"?QS(e):ZS();M1(r.logLevel),C1()}o(mat,"initialize");var J2e=o((t,e={})=>{let{code:r}=vF(t);return N1.fromText(r,e)},"getDiagramFromText");function gat(t,e,r,n){V2e(e,t),U2e(e,r,n,e.attr("id"))}o(gat,"addA11yInfo");var Of=Object.freeze({render:pat,parse:lat,getDiagramFromText:J2e,initialize:mat,getConfig:Sr,setConfig:Yb,getSiteConfig:ZS,updateSiteConfig:Vz,reset:o(()=>{V1()},"reset"),globalReset:o(()=>{V1(ih)},"globalReset"),defaultConfig:ih});M1(Sr().logLevel);V1(Sr());Fv();hr();var yat=o((t,e,r)=>{Y.warn(t),i9(t)?(r&&r(t.str,t.hash),e.push({...t,message:t.str,error:t})):(r&&r(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},"handleError"),exe=o(async function(t={querySelector:".mermaid"}){try{await vat(t)}catch(e){if(i9(e)&&Y.error(e.str),eh.parseError&&eh.parseError(e),!t.suppressErrors)throw Y.error("Use the suppressErrors option to suppress these errors"),e}},"run"),vat=o(async function({postRenderCallback:t,querySelector:e,nodes:r}={querySelector:".mermaid"}){let n=Of.getConfig();Y.debug(`${t?"":"No "}Callback function found`);let i;if(r)i=r;else if(e)i=document.querySelectorAll(e);else throw new Error("Nodes and querySelector are both undefined");Y.debug(`Found ${i.length} diagrams`),n?.startOnLoad!==void 0&&(Y.debug("Start On Load: "+n?.startOnLoad),Of.updateSiteConfig({startOnLoad:n?.startOnLoad}));let a=new Ut.InitIDGenerator(n.deterministicIds,n.deterministicIDSeed),s,l=[];for(let u of Array.from(i)){Y.info("Rendering diagram: "+u.id);if(u.getAttribute("data-processed"))continue;u.setAttribute("data-processed","true");let h=`mermaid-${a.next()}`;s=u.innerHTML,s=Ib(Ut.entityDecode(s)).trim().replace(//gi,"
    ");let f=Ut.detectInit(s);f&&Y.debug("Detected early reinit: ",f);try{let{svg:d,bindFunctions:p}=await ixe(h,s,u);u.innerHTML=d,t&&await t(h),p&&p(u)}catch(d){yat(d,l,eh.parseError)}}if(l.length>0)throw l[0]},"runThrowsErrors"),txe=o(function(t){Of.initialize(t)},"initialize"),xat=o(async function(t,e,r){Y.warn("mermaid.init is deprecated. Please use run instead."),t&&txe(t);let n={postRenderCallback:r,querySelector:".mermaid"};typeof e=="string"?n.querySelector=e:e&&(e instanceof HTMLElement?n.nodes=[e]:n.nodes=e),await exe(n)},"init"),bat=o(async(t,{lazyLoad:e=!0}={})=>{C1(),Bb(...t),e===!1&&await k2e()},"registerExternalDiagrams"),rxe=o(function(){if(eh.startOnLoad){let{startOnLoad:t}=Of.getConfig();t&&eh.run().catch(e=>Y.error("Mermaid failed to initialize",e))}},"contentLoaded");if(typeof document<"u"){window.addEventListener("load",rxe,!1)}var wat=o(function(t){eh.parseError=t},"setParseErrorHandler"),mS=[],xF=!1,nxe=o(async()=>{if(!xF){for(xF=!0;mS.length>0;){let t=mS.shift();if(t)try{await t()}catch(e){Y.error("Error executing queue",e)}}xF=!1}},"executeQueue"),Tat=o(async(t,e)=>new Promise((r,n)=>{let i=o(()=>new Promise((a,s)=>{Of.parse(t,e).then(l=>{a(l),r(l)},l=>{Y.error("Error parsing",l),eh.parseError?.(l),s(l),n(l)})}),"performCall");mS.push(i),nxe().catch(n)}),"parse"),ixe=o((t,e,r)=>new Promise((n,i)=>{let a=o(()=>new Promise((s,l)=>{Of.render(t,e,r).then(u=>{s(u),n(u)},u=>{Y.error("Error parsing",u),eh.parseError?.(u),l(u),i(u)})}),"performCall");mS.push(a),nxe().catch(i)}),"render"),eh={startOnLoad:!0,mermaidAPI:Of,parse:Tat,render:ixe,init:xat,run:exe,registerExternalDiagrams:bat,registerLayoutLoaders:CD,initialize:txe,parseError:void 0,contentLoaded:rxe,setParseErrorHandler:wat,detectType:np,registerIconPacks:Mb},kat=eh;return pxe(Eat);})(); +:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),e instanceof Map){let s=t.htmlLabels??t.flowchart?.htmlLabels?["> *","span"]:["rect","polygon","ellipse","circle","path"];e.forEach(l=>{lr(l.styles)||s.forEach(u=>{r+=jve(l.id,u,l.styles)}),lr(l.textStyles)||(r+=jve(l.id,"tspan",(l?.textStyles||[]).map(u=>u.replace("color","fill"))))})}return r},"createCssStyles"),srt=o((t,e,r,n)=>{let i=art(t,r),a=A$(e,i,t.themeVariables);return nC(Gve(`${n}{${a}}`),$ve)},"createUserStyles"),ort=o((t="",e,r)=>{let n=t;return!r&&!e&&(n=n.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),n=ta(n),n=n.replace(/
    /g,"
    "),n},"cleanUpSvgCode"),lrt=o((t="",e)=>{let r=e?.viewBox?.baseVal?.height?e.viewBox.baseVal.height+"px":Qtt,n=Xve(`${t}`);return``},"putIntoIFrame"),Kve=o((t,e,r,n,i)=>{let a=t.append("div");a.attr("id",r),n&&a.attr("style",n);let s=a.append("svg").attr("id",e).attr("width","100%").attr("xmlns",Ytt);return i&&s.attr("xmlns:xlink",i),s.append("g"),t},"appendDivSvgG");function Qve(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}o(Qve,"sandboxedIframe");var crt=o((t,e,r,n)=>{t.getElementById(e)?.remove(),t.getElementById(r)?.remove(),t.getElementById(n)?.remove()},"removeExistingElements"),urt=o(async function(t,e,r){ly();let n=Zve(e);e=n.code;let i=mr();Y.debug(i),e.length>(i?.maxTextSize??Utt)&&(e=Htt);let a="#"+t,s="i"+t,l="#"+s,u="d"+t,h="#"+u,f=o(()=>{let L=$e(p?l:h).node();L&&"remove"in L&&L.remove()},"removeTempElements"),d=$e("body"),p=i.securityLevel===Wtt,m=i.securityLevel===qtt,g=i.fontFamily;if(r!==void 0){if(r&&(r.innerHTML=""),p){let k=Qve($e(r),s);d=$e(k.nodes()[0].contentDocument.body),d.node().style.margin=0}else d=$e(r);Kve(d,t,u,`font-family: ${g}`,Xtt)}else{if(crt(document,t,u,s),p){let k=Qve($e("body"),s);d=$e(k.nodes()[0].contentDocument.body),d.node().style.margin=0}else d=$e("body");Kve(d,t,u)}let y,v;try{y=await dy.fromText(e,{title:n.title})}catch(k){if(i.suppressErrorRendering)throw f(),k;y=await dy.fromText("error"),v=k}let x=d.select(h).node(),b=y.type,w=x.firstChild,C=w.firstChild,T=y.renderer.getClasses?.(e,y),E=srt(i,b,T,a),A=document.createElement("style");A.innerHTML=E,w.insertBefore(A,C);try{await y.renderer.draw(e,t,ab.version,y)}catch(k){throw i.suppressErrorRendering?f():Rde.draw(e,t,ab.version),k}let S=d.select(`${h} svg`),_=y.db.getAccTitle?.(),I=y.db.getAccDescription?.();frt(b,S,_,I),d.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",jtt);let D=d.select(h).node().innerHTML;if(Y.debug("config.arrowMarkerAbsolute",i.arrowMarkerAbsolute),D=ort(D,p,ur(i.arrowMarkerAbsolute)),p){let k=d.select(h+" svg").node();D=lrt(D,k)}else m||(D=ah.sanitize(D,{ADD_TAGS:rrt,ADD_ATTR:nrt,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(Wve(),v)throw v;return f(),{diagramType:b,svg:D,bindFunctions:y.db.bindFunctions}},"render");function hrt(t={}){let e=$n({},t);e?.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables||(e.themeVariables={}),e.themeVariables.fontFamily=e.fontFamily),Dz(e),e?.theme&&e.theme in vo?e.themeVariables=vo[e.theme].getThemeVariables(e.themeVariables):e&&(e.themeVariables=vo.default.getThemeVariables(e.themeVariables));let r=typeof e=="object"?$C(e):VC();my(r.logLevel),ly()}o(hrt,"initialize");var Jve=o((t,e={})=>{let{code:r}=oF(t);return dy.fromText(r,e)},"getDiagramFromText");function frt(t,e,r,n){Vve(e,t),Uve(e,r,n,e.attr("id"))}o(frt,"addA11yInfo");var Ff=Object.freeze({render:urt,parse:irt,getDiagramFromText:Jve,initialize:hrt,getConfig:mr,setConfig:P4,getSiteConfig:VC,updateSiteConfig:Lz,reset:o(()=>{ky()},"reset"),globalReset:o(()=>{ky(ih)},"globalReset"),defaultConfig:ih});my(mr().logLevel);ky(mr());Hd();sr();var drt=o((t,e,r)=>{Y.warn(t),W9(t)?(r&&r(t.str,t.hash),e.push({...t,message:t.str,error:t})):(r&&r(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},"handleError"),e2e=o(async function(t={querySelector:".mermaid"}){try{await prt(t)}catch(e){if(W9(e)&&Y.error(e.str),eh.parseError&&eh.parseError(e),!t.suppressErrors)throw Y.error("Use the suppressErrors option to suppress these errors"),e}},"run"),prt=o(async function({postRenderCallback:t,querySelector:e,nodes:r}={querySelector:".mermaid"}){let n=Ff.getConfig();Y.debug(`${t?"":"No "}Callback function found`);let i;if(r)i=r;else if(e)i=document.querySelectorAll(e);else throw new Error("Nodes and querySelector are both undefined");Y.debug(`Found ${i.length} diagrams`),n?.startOnLoad!==void 0&&(Y.debug("Start On Load: "+n?.startOnLoad),Ff.updateSiteConfig({startOnLoad:n?.startOnLoad}));let a=new $t.InitIDGenerator(n.deterministicIds,n.deterministicIDSeed),s,l=[];for(let u of Array.from(i)){Y.info("Rendering diagram: "+u.id);if(u.getAttribute("data-processed"))continue;u.setAttribute("data-processed","true");let h=`mermaid-${a.next()}`;s=u.innerHTML,s=E4($t.entityDecode(s)).trim().replace(//gi,"
    ");let f=$t.detectInit(s);f&&Y.debug("Detected early reinit: ",f);try{let{svg:d,bindFunctions:p}=await i2e(h,s,u);u.innerHTML=d,t&&await t(h),p&&p(u)}catch(d){drt(d,l,eh.parseError)}}if(l.length>0)throw l[0]},"runThrowsErrors"),t2e=o(function(t){Ff.initialize(t)},"initialize"),mrt=o(async function(t,e,r){Y.warn("mermaid.init is deprecated. Please use run instead."),t&&t2e(t);let n={postRenderCallback:r,querySelector:".mermaid"};typeof e=="string"?n.querySelector=e:e&&(e instanceof HTMLElement?n.nodes=[e]:n.nodes=e),await e2e(n)},"init"),grt=o(async(t,{lazyLoad:e=!0}={})=>{ly(),A4(...t),e===!1&&await Tve()},"registerExternalDiagrams"),r2e=o(function(){if(eh.startOnLoad){let{startOnLoad:t}=Ff.getConfig();t&&eh.run().catch(e=>Y.error("Mermaid failed to initialize",e))}},"contentLoaded");if(typeof document<"u"){window.addEventListener("load",r2e,!1)}var yrt=o(function(t){eh.parseError=t},"setParseErrorHandler"),iC=[],lF=!1,n2e=o(async()=>{if(!lF){for(lF=!0;iC.length>0;){let t=iC.shift();if(t)try{await t()}catch(e){Y.error("Error executing queue",e)}}lF=!1}},"executeQueue"),vrt=o(async(t,e)=>new Promise((r,n)=>{let i=o(()=>new Promise((a,s)=>{Ff.parse(t,e).then(l=>{a(l),r(l)},l=>{Y.error("Error parsing",l),eh.parseError?.(l),s(l),n(l)})}),"performCall");iC.push(i),n2e().catch(n)}),"parse"),i2e=o((t,e,r)=>new Promise((n,i)=>{let a=o(()=>new Promise((s,l)=>{Ff.render(t,e,r).then(u=>{s(u),n(u)},u=>{Y.error("Error parsing",u),eh.parseError?.(u),l(u),i(u)})}),"performCall");iC.push(a),n2e().catch(i)}),"render"),eh={startOnLoad:!0,mermaidAPI:Ff,parse:vrt,render:i2e,init:mrt,run:e2e,registerExternalDiagrams:grt,registerLayoutLoaders:hR,initialize:t2e,parseError:void 0,contentLoaded:r2e,setParseErrorHandler:yrt,detectType:t0,registerIconPacks:k4},xrt=eh;return p2e(brt);})(); /*! Check if previously processed */ /*! * Wait for document loaded before starting the execution @@ -2279,7 +2530,7 @@ ${t.themeCSS}`),t.fontFamily!==void 0&&(r+=` /*! Bundled license information: dompurify/dist/purify.es.mjs: - (*! @license DOMPurify 3.2.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.1/LICENSE *) + (*! @license DOMPurify 3.2.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.4/LICENSE *) js-yaml/dist/js-yaml.mjs: (*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT *) diff --git a/docs/install.sh b/docs/install.sh index f30b01a82e..270ed93822 100755 --- a/docs/install.sh +++ b/docs/install.sh @@ -6,7 +6,8 @@ set -e # Define installation paths -MERMAID_JS_DIR="docs/assets/theme/" +BASE_DIR=$(dirname -- "${BASH_SOURCE[0]}") +MERMAID_JS_DIR="${BASE_DIR}/assets/theme/" MERMAID_JS_PATH="${MERMAID_JS_DIR}mermaid.min.js" # Check if the script was run with "force" argument -- GitLab From ff6e5f29e150ac45819693e7fb88ad906bf0a3a0 Mon Sep 17 00:00:00 2001 From: Philipp Kewisch Date: Tue, 18 Mar 2025 13:23:40 +0100 Subject: [PATCH 125/262] Move scripts to ci subdirectory --- .github/workflows/fluidscan.yml | 2 +- .github/workflows/shippable_builds.yml | 2 +- .github/workflows/uplift-merges.yml | 2 +- .github/workflows/validate-workflows.yml | 2 +- docs/ci/AUTOMATION.md | 4 ++-- scripts/{ => ci}/render-notes.py | 0 scripts/{ => ci}/run-fluidattacks-scanner.sh | 0 scripts/{ => ci}/setup_release_automation | 0 scripts/{ => ci}/templates/changelog.txt | 0 scripts/{ => ci}/templates/changelog_long.txt | 0 scripts/{ => ci}/templates/changelog_master.xml | 0 scripts/{ => ci}/uplift-merges.sh | 0 scripts/{ => ci}/validate-github-actions-pinned.sh | 0 13 files changed, 6 insertions(+), 6 deletions(-) rename scripts/{ => ci}/render-notes.py (100%) rename scripts/{ => ci}/run-fluidattacks-scanner.sh (100%) rename scripts/{ => ci}/setup_release_automation (100%) rename scripts/{ => ci}/templates/changelog.txt (100%) rename scripts/{ => ci}/templates/changelog_long.txt (100%) rename scripts/{ => ci}/templates/changelog_master.xml (100%) rename scripts/{ => ci}/uplift-merges.sh (100%) rename scripts/{ => ci}/validate-github-actions-pinned.sh (100%) diff --git a/.github/workflows/fluidscan.yml b/.github/workflows/fluidscan.yml index a38d7d208b..3a2745b82f 100644 --- a/.github/workflows/fluidscan.yml +++ b/.github/workflows/fluidscan.yml @@ -24,7 +24,7 @@ jobs: - name: "Run Fluidattacks scanner" run: | - bash scripts/run-fluidattacks-scanner.sh + bash scripts/ci/run-fluidattacks-scanner.sh - name: "Upload scan results" uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 diff --git a/.github/workflows/shippable_builds.yml b/.github/workflows/shippable_builds.yml index 1d59e3a1c4..7d19f3e4d6 100644 --- a/.github/workflows/shippable_builds.yml +++ b/.github/workflows/shippable_builds.yml @@ -331,7 +331,7 @@ jobs: run: | mkdir -p ./app-metadata/${APPLICATION_ID}/en-US/changelogs GITHUB_NOTES_FILE="$(mktemp -d)/long-notes.txt" - python ./scripts/render-notes.py ${APPLICATION_ID} ${FULL_VERSION_NAME} ${VERSION_CODE} ${GITHUB_NOTES_FILE} + python ./scripts/ci/render-notes.py ${APPLICATION_ID} ${FULL_VERSION_NAME} ${VERSION_CODE} ${GITHUB_NOTES_FILE} echo "${APP_NAME}_github_notes<> $GITHUB_OUTPUT cat $GITHUB_NOTES_FILE >> $GITHUB_OUTPUT diff --git a/.github/workflows/uplift-merges.yml b/.github/workflows/uplift-merges.yml index e9ab200f34..986e88c20b 100644 --- a/.github/workflows/uplift-merges.yml +++ b/.github/workflows/uplift-merges.yml @@ -37,4 +37,4 @@ jobs: BRANCH: ${{ github.ref_name }} PUSH: ${{ !inputs.dryRun && '--push' || '' }} run: | - bash scripts/uplift-merges.sh $DRYRUN --$BRANCH $PUSH | tee $GITHUB_STEP_SUMMARY + bash scripts/ci/uplift-merges.sh $DRYRUN --$BRANCH $PUSH | tee $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/validate-workflows.yml b/.github/workflows/validate-workflows.yml index 398c279f3f..8c6dee3be5 100644 --- a/.github/workflows/validate-workflows.yml +++ b/.github/workflows/validate-workflows.yml @@ -27,4 +27,4 @@ jobs: DRY_RUN: ${{ !inputs.dryRun && '--no-dry-run' || '' }} DEBUG: ${{ inputs.debug && '--debug' || '' }} run: | - bash scripts/validate-github-actions-pinned.sh $DRY_RUN $DEBUG + bash scripts/ci/validate-github-actions-pinned.sh $DRY_RUN $DEBUG diff --git a/docs/ci/AUTOMATION.md b/docs/ci/AUTOMATION.md index d8cab770c6..7857b59871 100644 --- a/docs/ci/AUTOMATION.md +++ b/docs/ci/AUTOMATION.md @@ -7,7 +7,7 @@ application and release type. ## Automatic setup There is a script available for automatic setup, which is helpful if you want to replicate this on -your own repository for devlopment. Please see /scripts/setup_release_automation. +your own repository for devlopment. Please see /scripts/ci/setup_release_automation. You can run it using: @@ -16,7 +16,7 @@ python -m venv venv source venv/bin/activate pip install requests pynacl cd .signing -python ../scripts/setup_release_automation -r yourfork/thunderbird-android +python ../scripts/ci/setup_release_automation -r yourfork/thunderbird-android ``` You will need the following files: diff --git a/scripts/render-notes.py b/scripts/ci/render-notes.py similarity index 100% rename from scripts/render-notes.py rename to scripts/ci/render-notes.py diff --git a/scripts/run-fluidattacks-scanner.sh b/scripts/ci/run-fluidattacks-scanner.sh similarity index 100% rename from scripts/run-fluidattacks-scanner.sh rename to scripts/ci/run-fluidattacks-scanner.sh diff --git a/scripts/setup_release_automation b/scripts/ci/setup_release_automation similarity index 100% rename from scripts/setup_release_automation rename to scripts/ci/setup_release_automation diff --git a/scripts/templates/changelog.txt b/scripts/ci/templates/changelog.txt similarity index 100% rename from scripts/templates/changelog.txt rename to scripts/ci/templates/changelog.txt diff --git a/scripts/templates/changelog_long.txt b/scripts/ci/templates/changelog_long.txt similarity index 100% rename from scripts/templates/changelog_long.txt rename to scripts/ci/templates/changelog_long.txt diff --git a/scripts/templates/changelog_master.xml b/scripts/ci/templates/changelog_master.xml similarity index 100% rename from scripts/templates/changelog_master.xml rename to scripts/ci/templates/changelog_master.xml diff --git a/scripts/uplift-merges.sh b/scripts/ci/uplift-merges.sh similarity index 100% rename from scripts/uplift-merges.sh rename to scripts/ci/uplift-merges.sh diff --git a/scripts/validate-github-actions-pinned.sh b/scripts/ci/validate-github-actions-pinned.sh similarity index 100% rename from scripts/validate-github-actions-pinned.sh rename to scripts/ci/validate-github-actions-pinned.sh -- GitLab From 72eeadaec09a00e776ff2f845d92843e265e93d1 Mon Sep 17 00:00:00 2001 From: Philipp Kewisch Date: Tue, 18 Mar 2025 13:27:40 +0100 Subject: [PATCH 126/262] Adjust CODEOWNERS for CI scripts and docs --- .github/CODEOWNERS | 6 +++++- scripts/ci/setup_release_automation | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 82124a6bbe..40b5dcf5d7 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,3 +1,7 @@ +# General module owners * @kewisch @wmontwe -/.github/ @coreycb @jfx2006 @dandarnell +# Release Engineering +/.github/ @coreycb @jfx2006 @dandarnell +/docs/ci/ @coreycb @jfx2006 @dandarnell +/scripts/ci/ @coreycb @jfx2006 @dandarnell diff --git a/scripts/ci/setup_release_automation b/scripts/ci/setup_release_automation index 9a593b7b02..5034a00569 100644 --- a/scripts/ci/setup_release_automation +++ b/scripts/ci/setup_release_automation @@ -14,7 +14,7 @@ import nacl.encoding import nacl.public import textwrap -PUBLISH_APPROVERS = ["kewisch", "cketti", "wmontwe"] +PUBLISH_APPROVERS = ["kewisch", "coreycb", "wmontwe"] CHANNEL_ENVIRONMENTS = { "thunderbird_release": { -- GitLab From 94db1fc05e48685c03945e829315ad278e4aaca1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 20 Mar 2025 17:22:23 +0100 Subject: [PATCH 127/262] Change catalog app package to thunderbird --- app-ui-catalog/build.gradle.kts | 4 +- .../ui/atom/CatalogAtomContentPreview.kt | 2 +- .../ui/atom/view/ColorContentPreview.kt | 2 +- .../ui/catalog/ui/atom/CatalogAtomContent.kt | 45 ------------------- .../ui/catalog/CatalogActivity.kt | 4 +- .../ui/catalog/CatalogApplication.kt | 4 +- .../ui/catalog/di/CatalogUiModule.kt | 4 +- .../ui/catalog/ui/CatalogContent.kt | 16 +++---- .../ui/catalog/ui/CatalogContract.kt | 2 +- .../thunderbird}/ui/catalog/ui/CatalogPage.kt | 2 +- .../ui/catalog/ui/CatalogScreen.kt | 10 ++--- .../ui/catalog/ui/CatalogViewModel.kt | 12 ++--- .../ui/catalog/ui/atom/CatalogAtomContent.kt | 45 +++++++++++++++++++ .../catalog/ui/atom/CatalogAtomNavigation.kt | 2 +- .../ui/catalog/ui/atom/CatalogAtomPage.kt | 4 +- .../ui/catalog/ui/atom/CatalogAtomScreen.kt | 2 +- .../ui/catalog/ui/atom/items/ButtonItems.kt | 8 ++-- .../ui/catalog/ui/atom/items/ColorItems.kt | 8 ++-- .../ui/catalog/ui/atom/items/IconItems.kt | 10 ++--- .../ui/catalog/ui/atom/items/ImageItems.kt | 12 ++--- .../ui/atom/items/SelectionControlItems.kt | 8 ++-- .../catalog/ui/atom/items/TextFieldItems.kt | 12 ++--- .../catalog/ui/atom/items/TypographyItems.kt | 8 ++-- .../ui/catalog/ui/atom/view/ColorContent.kt | 4 +- .../ui/catalog/ui/common/PagedContent.kt | 6 +-- .../ui/catalog/ui/common/ThemeTopAppBar.kt | 6 +-- .../catalog/ui/common/drawer/DrawerContent.kt | 8 ++-- .../ui/common/helper/WithRememberedState.kt | 2 +- .../ui/catalog/ui/common/list/DefaultItem.kt | 2 +- .../ui/common/list/DefaultItemPadding.kt | 2 +- .../ui/catalog/ui/common/list/FullSpanItem.kt | 2 +- .../ui/common/list/ItemOutlinedView.kt | 2 +- .../ui/common/list/SectionHeaderItem.kt | 2 +- .../catalog/ui/common/list/SectionInfoItem.kt | 2 +- .../ui/common/list/SectionSubtitleItem.kt | 2 +- .../ui/catalog/ui/common/list/WideItem.kt | 2 +- .../ui/catalog/ui/common/theme/ThemeSwitch.kt | 6 +-- .../ui/molecule/CatalogMoleculeContent.kt | 16 +++---- .../ui/molecule/CatalogMoleculeNavigation.kt | 2 +- .../ui/molecule/CatalogMoleculePage.kt | 4 +- .../ui/molecule/CatalogMoleculeScreen.kt | 2 +- .../catalog/ui/molecule/items/InputItems.kt | 12 ++--- .../ui/molecule/items/PullToRefreshItem.kt | 2 +- .../catalog/ui/molecule/items/StateItems.kt | 12 ++--- .../catalog/ui/navigation/CatalogNavHost.kt | 10 ++--- .../ui/organism/CatalogMoleculeContent.kt | 8 ++-- .../ui/organism/CatalogMoleculeNavigation.kt | 2 +- .../ui/organism/CatalogOrganismPage.kt | 4 +- .../ui/organism/CatalogOrganismScreen.kt | 2 +- .../catalog/ui/organism/items/AppBarItems.kt | 10 ++--- 50 files changed, 180 insertions(+), 180 deletions(-) rename app-ui-catalog/src/debug/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/atom/CatalogAtomContentPreview.kt (92%) rename app-ui-catalog/src/debug/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/atom/view/ColorContentPreview.kt (92%) delete mode 100644 app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomContent.kt rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/CatalogActivity.kt (85%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/CatalogApplication.kt (81%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/di/CatalogUiModule.kt (67%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/CatalogContent.kt (78%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/CatalogContract.kt (97%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/CatalogPage.kt (69%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/CatalogScreen.kt (76%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/CatalogViewModel.kt (61%) create mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomContent.kt rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/atom/CatalogAtomNavigation.kt (94%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/atom/CatalogAtomPage.kt (85%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/atom/CatalogAtomScreen.kt (87%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/atom/items/ButtonItems.kt (93%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/atom/items/ColorItems.kt (97%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/atom/items/IconItems.kt (92%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/atom/items/ImageItems.kt (93%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/atom/items/SelectionControlItems.kt (88%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/atom/items/TextFieldItems.kt (96%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/atom/items/TypographyItems.kt (95%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/atom/view/ColorContent.kt (93%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/common/PagedContent.kt (95%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/common/ThemeTopAppBar.kt (89%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/common/drawer/DrawerContent.kt (92%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/common/helper/WithRememberedState.kt (87%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/common/list/DefaultItem.kt (87%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/common/list/DefaultItemPadding.kt (84%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/common/list/FullSpanItem.kt (90%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/common/list/ItemOutlinedView.kt (95%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/common/list/SectionHeaderItem.kt (94%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/common/list/SectionInfoItem.kt (94%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/common/list/SectionSubtitleItem.kt (94%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/common/list/WideItem.kt (90%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/common/theme/ThemeSwitch.kt (88%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/molecule/CatalogMoleculeContent.kt (62%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt (94%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/molecule/CatalogMoleculePage.kt (82%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt (87%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/molecule/items/InputItems.kt (93%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/molecule/items/PullToRefreshItem.kt (96%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/molecule/items/StateItems.kt (92%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/navigation/CatalogNavHost.kt (69%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/organism/CatalogMoleculeContent.kt (69%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt (94%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/organism/CatalogOrganismPage.kt (79%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/organism/CatalogOrganismScreen.kt (87%) rename app-ui-catalog/src/main/kotlin/{app/k9mail => net/thunderbird}/ui/catalog/ui/organism/items/AppBarItems.kt (93%) diff --git a/app-ui-catalog/build.gradle.kts b/app-ui-catalog/build.gradle.kts index 3729aefff4..ca23d90919 100644 --- a/app-ui-catalog/build.gradle.kts +++ b/app-ui-catalog/build.gradle.kts @@ -3,10 +3,10 @@ plugins { } android { - namespace = "app.k9mail.ui.catalog" + namespace = "net.thunderbird.ui.catalog" defaultConfig { - applicationId = "app.k9mail.ui.catalog" + applicationId = "net.thunderbird.ui.catalog" versionCode = 1 versionName = "1.0" } diff --git a/app-ui-catalog/src/debug/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomContentPreview.kt b/app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomContentPreview.kt similarity index 92% rename from app-ui-catalog/src/debug/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomContentPreview.kt rename to app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomContentPreview.kt index b373a50d92..2373f41445 100644 --- a/app-ui-catalog/src/debug/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomContentPreview.kt +++ b/app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomContentPreview.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.atom +package net.thunderbird.ui.catalog.ui.atom import androidx.compose.runtime.Composable import app.k9mail.core.ui.compose.common.annotation.PreviewDevicesWithBackground diff --git a/app-ui-catalog/src/debug/kotlin/app/k9mail/ui/catalog/ui/atom/view/ColorContentPreview.kt b/app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/atom/view/ColorContentPreview.kt similarity index 92% rename from app-ui-catalog/src/debug/kotlin/app/k9mail/ui/catalog/ui/atom/view/ColorContentPreview.kt rename to app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/atom/view/ColorContentPreview.kt index 2602340379..83d1eb39f0 100644 --- a/app-ui-catalog/src/debug/kotlin/app/k9mail/ui/catalog/ui/atom/view/ColorContentPreview.kt +++ b/app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/atom/view/ColorContentPreview.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.atom.view +package net.thunderbird.ui.catalog.ui.atom.view import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomContent.kt b/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomContent.kt deleted file mode 100644 index 4887b76b36..0000000000 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomContent.kt +++ /dev/null @@ -1,45 +0,0 @@ -package app.k9mail.ui.catalog.ui.atom - -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import app.k9mail.ui.catalog.ui.atom.CatalogAtomPage.BUTTON -import app.k9mail.ui.catalog.ui.atom.CatalogAtomPage.COLOR -import app.k9mail.ui.catalog.ui.atom.CatalogAtomPage.ICON -import app.k9mail.ui.catalog.ui.atom.CatalogAtomPage.IMAGE -import app.k9mail.ui.catalog.ui.atom.CatalogAtomPage.SELECTION_CONTROL -import app.k9mail.ui.catalog.ui.atom.CatalogAtomPage.TEXT_FIELD -import app.k9mail.ui.catalog.ui.atom.CatalogAtomPage.TYPOGRAPHY -import app.k9mail.ui.catalog.ui.atom.items.buttonItems -import app.k9mail.ui.catalog.ui.atom.items.colorItems -import app.k9mail.ui.catalog.ui.atom.items.iconItems -import app.k9mail.ui.catalog.ui.atom.items.imageItems -import app.k9mail.ui.catalog.ui.atom.items.selectionControlItems -import app.k9mail.ui.catalog.ui.atom.items.textFieldItems -import app.k9mail.ui.catalog.ui.atom.items.typographyItems -import app.k9mail.ui.catalog.ui.common.PagedContent -import kotlinx.collections.immutable.ImmutableList - -@Composable -fun CatalogAtomContent( - pages: ImmutableList, - initialPage: CatalogAtomPage, - modifier: Modifier = Modifier, -) { - PagedContent( - pages = pages, - initialPage = initialPage, - modifier = modifier, - onRenderPage = { - when (it) { - TYPOGRAPHY -> typographyItems() - COLOR -> colorItems() - BUTTON -> buttonItems() - SELECTION_CONTROL -> selectionControlItems() - TEXT_FIELD -> textFieldItems() - ICON -> iconItems() - IMAGE -> imageItems() - } - }, - onRenderFullScreenPage = {}, - ) -} diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/CatalogActivity.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/CatalogActivity.kt similarity index 85% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/CatalogActivity.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/CatalogActivity.kt index 6d341644bd..eb316755b6 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/CatalogActivity.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/CatalogActivity.kt @@ -1,11 +1,11 @@ -package app.k9mail.ui.catalog +package net.thunderbird.ui.catalog import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen -import app.k9mail.ui.catalog.ui.CatalogScreen +import net.thunderbird.ui.catalog.ui.CatalogScreen class CatalogActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/CatalogApplication.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/CatalogApplication.kt similarity index 81% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/CatalogApplication.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/CatalogApplication.kt index 4e15b85b51..febe664294 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/CatalogApplication.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/CatalogApplication.kt @@ -1,7 +1,7 @@ -package app.k9mail.ui.catalog +package net.thunderbird.ui.catalog import android.app.Application -import app.k9mail.ui.catalog.di.catalogUiModule +import net.thunderbird.ui.catalog.di.catalogUiModule import org.koin.android.ext.koin.androidContext import org.koin.core.context.startKoin diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/di/CatalogUiModule.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/di/CatalogUiModule.kt similarity index 67% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/di/CatalogUiModule.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/di/CatalogUiModule.kt index e2245c9b6e..b9c948530c 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/di/CatalogUiModule.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/di/CatalogUiModule.kt @@ -1,6 +1,6 @@ -package app.k9mail.ui.catalog.di +package net.thunderbird.ui.catalog.di -import app.k9mail.ui.catalog.ui.CatalogViewModel +import net.thunderbird.ui.catalog.ui.CatalogViewModel import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.core.module.Module import org.koin.dsl.module diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContent.kt similarity index 78% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogContent.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContent.kt index 90a56e2af3..bb8f3896e5 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogContent.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContent.kt @@ -1,17 +1,17 @@ -package app.k9mail.ui.catalog.ui +package net.thunderbird.ui.catalog.ui import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.compose.rememberNavController import app.k9mail.core.ui.compose.designsystem.organism.drawer.ModalNavigationDrawer import app.k9mail.core.ui.compose.designsystem.template.Scaffold -import app.k9mail.ui.catalog.ui.CatalogContract.State -import app.k9mail.ui.catalog.ui.atom.navigateToCatalogAtom -import app.k9mail.ui.catalog.ui.common.ThemeTopAppBar -import app.k9mail.ui.catalog.ui.common.drawer.DrawerContent -import app.k9mail.ui.catalog.ui.molecule.navigateToCatalogMolecule -import app.k9mail.ui.catalog.ui.navigation.CatalogNavHost -import app.k9mail.ui.catalog.ui.organism.navigateToCatalogOrganism +import net.thunderbird.ui.catalog.ui.CatalogContract.State +import net.thunderbird.ui.catalog.ui.atom.navigateToCatalogAtom +import net.thunderbird.ui.catalog.ui.common.ThemeTopAppBar +import net.thunderbird.ui.catalog.ui.common.drawer.DrawerContent +import net.thunderbird.ui.catalog.ui.molecule.navigateToCatalogMolecule +import net.thunderbird.ui.catalog.ui.navigation.CatalogNavHost +import net.thunderbird.ui.catalog.ui.organism.navigateToCatalogOrganism @Composable fun CatalogContent( diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogContract.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContract.kt similarity index 97% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogContract.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContract.kt index 250b09f77c..00fab64a52 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogContract.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContract.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui +package net.thunderbird.ui.catalog.ui import app.k9mail.core.ui.compose.common.mvi.UnidirectionalViewModel diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogPage.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogPage.kt similarity index 69% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogPage.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogPage.kt index e7f9a2ac11..616316b4f6 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogPage.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogPage.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui +package net.thunderbird.ui.catalog.ui interface CatalogPage { val displayName: String diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogScreen.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogScreen.kt similarity index 76% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogScreen.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogScreen.kt index 4ff6abe31b..2a6b02a675 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogScreen.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogScreen.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui +package net.thunderbird.ui.catalog.ui import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.safeDrawingPadding @@ -6,10 +6,10 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import app.k9mail.core.ui.compose.common.mvi.observe import app.k9mail.core.ui.compose.designsystem.atom.Surface -import app.k9mail.ui.catalog.ui.CatalogContract.Event.OnThemeChanged -import app.k9mail.ui.catalog.ui.CatalogContract.Event.OnThemeVariantChanged -import app.k9mail.ui.catalog.ui.CatalogContract.ViewModel -import app.k9mail.ui.catalog.ui.common.theme.ThemeSwitch +import net.thunderbird.ui.catalog.ui.CatalogContract.Event.OnThemeChanged +import net.thunderbird.ui.catalog.ui.CatalogContract.Event.OnThemeVariantChanged +import net.thunderbird.ui.catalog.ui.CatalogContract.ViewModel +import net.thunderbird.ui.catalog.ui.common.theme.ThemeSwitch import org.koin.androidx.compose.koinViewModel @Composable diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogViewModel.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogViewModel.kt similarity index 61% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogViewModel.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogViewModel.kt index feb03506a3..d065427f31 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/CatalogViewModel.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogViewModel.kt @@ -1,11 +1,11 @@ -package app.k9mail.ui.catalog.ui +package net.thunderbird.ui.catalog.ui import app.k9mail.core.ui.compose.common.mvi.BaseViewModel -import app.k9mail.ui.catalog.ui.CatalogContract.Event -import app.k9mail.ui.catalog.ui.CatalogContract.Event.OnThemeChanged -import app.k9mail.ui.catalog.ui.CatalogContract.Event.OnThemeVariantChanged -import app.k9mail.ui.catalog.ui.CatalogContract.State -import app.k9mail.ui.catalog.ui.CatalogContract.ViewModel +import net.thunderbird.ui.catalog.ui.CatalogContract.Event +import net.thunderbird.ui.catalog.ui.CatalogContract.Event.OnThemeChanged +import net.thunderbird.ui.catalog.ui.CatalogContract.Event.OnThemeVariantChanged +import net.thunderbird.ui.catalog.ui.CatalogContract.State +import net.thunderbird.ui.catalog.ui.CatalogContract.ViewModel class CatalogViewModel( initialState: State = State(), diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomContent.kt new file mode 100644 index 0000000000..a749ed629d --- /dev/null +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomContent.kt @@ -0,0 +1,45 @@ +package net.thunderbird.ui.catalog.ui.atom + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import kotlinx.collections.immutable.ImmutableList +import net.thunderbird.ui.catalog.ui.atom.CatalogAtomPage.BUTTON +import net.thunderbird.ui.catalog.ui.atom.CatalogAtomPage.COLOR +import net.thunderbird.ui.catalog.ui.atom.CatalogAtomPage.ICON +import net.thunderbird.ui.catalog.ui.atom.CatalogAtomPage.IMAGE +import net.thunderbird.ui.catalog.ui.atom.CatalogAtomPage.SELECTION_CONTROL +import net.thunderbird.ui.catalog.ui.atom.CatalogAtomPage.TEXT_FIELD +import net.thunderbird.ui.catalog.ui.atom.CatalogAtomPage.TYPOGRAPHY +import net.thunderbird.ui.catalog.ui.atom.items.buttonItems +import net.thunderbird.ui.catalog.ui.atom.items.colorItems +import net.thunderbird.ui.catalog.ui.atom.items.iconItems +import net.thunderbird.ui.catalog.ui.atom.items.imageItems +import net.thunderbird.ui.catalog.ui.atom.items.selectionControlItems +import net.thunderbird.ui.catalog.ui.atom.items.textFieldItems +import net.thunderbird.ui.catalog.ui.atom.items.typographyItems +import net.thunderbird.ui.catalog.ui.common.PagedContent + +@Composable +fun CatalogAtomContent( + pages: ImmutableList, + initialPage: CatalogAtomPage, + modifier: Modifier = Modifier, +) { + PagedContent( + pages = pages, + initialPage = initialPage, + modifier = modifier, + onRenderPage = { + when (it) { + TYPOGRAPHY -> typographyItems() + COLOR -> colorItems() + BUTTON -> buttonItems() + SELECTION_CONTROL -> selectionControlItems() + TEXT_FIELD -> textFieldItems() + ICON -> iconItems() + IMAGE -> imageItems() + } + }, + onRenderFullScreenPage = {}, + ) +} diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomNavigation.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomNavigation.kt similarity index 94% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomNavigation.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomNavigation.kt index 868724d0c9..42358a6748 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomNavigation.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomNavigation.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.atom +package net.thunderbird.ui.catalog.ui.atom import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.padding diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomPage.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomPage.kt similarity index 85% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomPage.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomPage.kt index 5e9520cb78..3dea980d24 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomPage.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomPage.kt @@ -1,7 +1,7 @@ -package app.k9mail.ui.catalog.ui.atom +package net.thunderbird.ui.catalog.ui.atom -import app.k9mail.ui.catalog.ui.CatalogPage import kotlinx.collections.immutable.toImmutableList +import net.thunderbird.ui.catalog.ui.CatalogPage enum class CatalogAtomPage( override val displayName: String, diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomScreen.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomScreen.kt similarity index 87% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomScreen.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomScreen.kt index 26f9da1654..34386c4c67 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/CatalogAtomScreen.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomScreen.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.atom +package net.thunderbird.ui.catalog.ui.atom import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/ButtonItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ButtonItems.kt similarity index 93% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/ButtonItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ButtonItems.kt index ce2c922ce8..4a96c81be6 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/ButtonItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ButtonItems.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.atom.items +package net.thunderbird.ui.catalog.ui.atom.items import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.grid.LazyGridScope @@ -10,9 +10,9 @@ import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonIcon import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonOutlined import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonText import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons -import app.k9mail.ui.catalog.ui.common.list.defaultItem -import app.k9mail.ui.catalog.ui.common.list.defaultItemPadding -import app.k9mail.ui.catalog.ui.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.common.list.defaultItem +import net.thunderbird.ui.catalog.ui.common.list.defaultItemPadding +import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem @Suppress("LongMethod") fun LazyGridScope.buttonItems() { diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/ColorItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ColorItems.kt similarity index 97% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/ColorItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ColorItems.kt index 00f56dcf35..76440947f9 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/ColorItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ColorItems.kt @@ -1,10 +1,10 @@ -package app.k9mail.ui.catalog.ui.atom.items +package net.thunderbird.ui.catalog.ui.atom.items import androidx.compose.foundation.lazy.grid.LazyGridScope import app.k9mail.core.ui.compose.theme2.MainTheme -import app.k9mail.ui.catalog.ui.atom.view.ColorContent -import app.k9mail.ui.catalog.ui.common.list.sectionHeaderItem -import app.k9mail.ui.catalog.ui.common.list.wideItem +import net.thunderbird.ui.catalog.ui.atom.view.ColorContent +import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.common.list.wideItem @Suppress("LongMethod") fun LazyGridScope.colorItems() { diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/IconItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/IconItems.kt similarity index 92% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/IconItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/IconItems.kt index bd508fe6e5..5df3c4f8aa 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/IconItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/IconItems.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.atom.items +package net.thunderbird.ui.catalog.ui.atom.items import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -14,10 +14,10 @@ import app.k9mail.core.ui.compose.designsystem.atom.icon.Icon import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodySmall import app.k9mail.core.ui.compose.theme2.MainTheme -import app.k9mail.ui.catalog.ui.common.list.defaultItem -import app.k9mail.ui.catalog.ui.common.list.defaultItemPadding -import app.k9mail.ui.catalog.ui.common.list.sectionHeaderItem -import app.k9mail.ui.catalog.ui.common.list.sectionSubtitleItem +import net.thunderbird.ui.catalog.ui.common.list.defaultItem +import net.thunderbird.ui.catalog.ui.common.list.defaultItemPadding +import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.common.list.sectionSubtitleItem import androidx.compose.material3.Icon as Material3Icon import app.k9mail.core.ui.legacy.designsystem.atom.icon.Icons as LegacyIcons diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/ImageItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ImageItems.kt similarity index 93% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/ImageItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ImageItems.kt index 1005891bd8..e57135c76e 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/ImageItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ImageItems.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.atom.items +package net.thunderbird.ui.catalog.ui.atom.items import androidx.compose.foundation.Image import androidx.compose.foundation.border @@ -21,11 +21,11 @@ import app.k9mail.core.ui.compose.designsystem.atom.image.FixedScaleImage import app.k9mail.core.ui.compose.designsystem.atom.image.RemoteImage import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodySmall import app.k9mail.core.ui.compose.theme2.MainTheme -import app.k9mail.ui.catalog.ui.common.list.defaultItem -import app.k9mail.ui.catalog.ui.common.list.defaultItemPadding -import app.k9mail.ui.catalog.ui.common.list.fullSpanItem -import app.k9mail.ui.catalog.ui.common.list.sectionHeaderItem -import app.k9mail.ui.catalog.ui.common.list.sectionSubtitleItem +import net.thunderbird.ui.catalog.ui.common.list.defaultItem +import net.thunderbird.ui.catalog.ui.common.list.defaultItemPadding +import net.thunderbird.ui.catalog.ui.common.list.fullSpanItem +import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.common.list.sectionSubtitleItem fun LazyGridScope.imageItems() { sectionHeaderItem(text = "Images") diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/SelectionControlItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/SelectionControlItems.kt similarity index 88% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/SelectionControlItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/SelectionControlItems.kt index d5f240616f..da0ba97638 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/SelectionControlItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/SelectionControlItems.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.atom.items +package net.thunderbird.ui.catalog.ui.atom.items import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding @@ -9,9 +9,9 @@ import androidx.compose.ui.Modifier import app.k9mail.core.ui.compose.designsystem.atom.Checkbox import app.k9mail.core.ui.compose.designsystem.atom.Switch import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodySmall -import app.k9mail.ui.catalog.ui.common.list.defaultItem -import app.k9mail.ui.catalog.ui.common.list.defaultItemPadding -import app.k9mail.ui.catalog.ui.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.common.list.defaultItem +import net.thunderbird.ui.catalog.ui.common.list.defaultItemPadding +import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem fun LazyGridScope.selectionControlItems() { sectionHeaderItem(text = "Checkbox") diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/TextFieldItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/TextFieldItems.kt similarity index 96% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/TextFieldItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/TextFieldItems.kt index 1d6d68dd35..76efaf87cb 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/TextFieldItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/TextFieldItems.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.atom.items +package net.thunderbird.ui.catalog.ui.atom.items import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues @@ -22,13 +22,13 @@ import app.k9mail.core.ui.compose.designsystem.atom.textfield.TextFieldOutlinedP import app.k9mail.core.ui.compose.designsystem.atom.textfield.TextFieldOutlinedSelect import app.k9mail.core.ui.compose.designsystem.molecule.input.CheckboxInput import app.k9mail.core.ui.compose.theme2.MainTheme -import app.k9mail.ui.catalog.ui.common.helper.WithRememberedState -import app.k9mail.ui.catalog.ui.common.list.defaultItemPadding -import app.k9mail.ui.catalog.ui.common.list.fullSpanItem -import app.k9mail.ui.catalog.ui.common.list.sectionHeaderItem -import app.k9mail.ui.catalog.ui.common.list.sectionSubtitleItem import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf +import net.thunderbird.ui.catalog.ui.common.helper.WithRememberedState +import net.thunderbird.ui.catalog.ui.common.list.defaultItemPadding +import net.thunderbird.ui.catalog.ui.common.list.fullSpanItem +import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.common.list.sectionSubtitleItem fun LazyGridScope.textFieldItems() { sectionHeaderItem(text = "Text field - Outlined") diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/TypographyItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/TypographyItems.kt similarity index 95% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/TypographyItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/TypographyItems.kt index 89505fc14a..de6be16813 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/items/TypographyItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/TypographyItems.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.atom.items +package net.thunderbird.ui.catalog.ui.atom.items import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.grid.LazyGridScope @@ -23,9 +23,9 @@ import app.k9mail.core.ui.compose.designsystem.atom.text.TextLabelSmall import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleLarge import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleMedium import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleSmall -import app.k9mail.ui.catalog.ui.common.list.defaultItemPadding -import app.k9mail.ui.catalog.ui.common.list.fullSpanItem -import app.k9mail.ui.catalog.ui.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.common.list.defaultItemPadding +import net.thunderbird.ui.catalog.ui.common.list.fullSpanItem +import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem fun LazyGridScope.typographyItems() { sectionHeaderItem(text = "Text styles") diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/view/ColorContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/view/ColorContent.kt similarity index 93% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/view/ColorContent.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/view/ColorContent.kt index eab40758df..bebd3676ce 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/atom/view/ColorContent.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/view/ColorContent.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.atom.view +package net.thunderbird.ui.catalog.ui.atom.view import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -13,7 +13,7 @@ import app.k9mail.core.ui.compose.designsystem.atom.Surface import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyLarge import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodySmall import app.k9mail.core.ui.compose.theme2.MainTheme -import app.k9mail.ui.catalog.ui.common.list.defaultItemPadding +import net.thunderbird.ui.catalog.ui.common.list.defaultItemPadding @Composable internal fun ColorContent( diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/PagedContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/PagedContent.kt similarity index 95% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/PagedContent.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/PagedContent.kt index 1fc6d744a4..5ae13fc896 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/PagedContent.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/PagedContent.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.common +package net.thunderbird.ui.catalog.ui.common import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -19,10 +19,10 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import app.k9mail.core.ui.compose.designsystem.template.ResponsiveContentWithSurface import app.k9mail.core.ui.compose.theme2.MainTheme -import app.k9mail.ui.catalog.ui.CatalogPage -import app.k9mail.ui.catalog.ui.common.list.fullSpanItem import kotlinx.collections.immutable.ImmutableList import kotlinx.coroutines.launch +import net.thunderbird.ui.catalog.ui.CatalogPage +import net.thunderbird.ui.catalog.ui.common.list.fullSpanItem @Composable fun PagedContent( diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/ThemeTopAppBar.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/ThemeTopAppBar.kt similarity index 89% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/ThemeTopAppBar.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/ThemeTopAppBar.kt index 7fed33b032..b84f7f2ed8 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/ThemeTopAppBar.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/ThemeTopAppBar.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.common +package net.thunderbird.ui.catalog.ui.common import androidx.compose.material.icons.filled.DarkMode import androidx.compose.material.icons.filled.LightMode @@ -7,8 +7,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonIcon import app.k9mail.core.ui.compose.designsystem.organism.TopAppBarWithMenuButton -import app.k9mail.ui.catalog.ui.CatalogContract.Theme -import app.k9mail.ui.catalog.ui.CatalogContract.ThemeVariant +import net.thunderbird.ui.catalog.ui.CatalogContract.Theme +import net.thunderbird.ui.catalog.ui.CatalogContract.ThemeVariant import androidx.compose.material.icons.Icons as MaterialIcons @Composable diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/drawer/DrawerContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/drawer/DrawerContent.kt similarity index 92% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/drawer/DrawerContent.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/drawer/DrawerContent.kt index 2c28a72f7e..a8c56599d5 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/drawer/DrawerContent.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/drawer/DrawerContent.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.common.drawer +package net.thunderbird.ui.catalog.ui.common.drawer import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier @@ -10,9 +10,9 @@ import app.k9mail.core.ui.compose.designsystem.organism.drawer.ModalDrawerSheet import app.k9mail.core.ui.compose.designsystem.organism.drawer.NavigationDrawerDivider import app.k9mail.core.ui.compose.designsystem.organism.drawer.NavigationDrawerHeadline import app.k9mail.core.ui.compose.designsystem.organism.drawer.NavigationDrawerItem -import app.k9mail.ui.catalog.ui.CatalogContract.Theme -import app.k9mail.ui.catalog.ui.CatalogContract.ThemeVariant -import app.k9mail.ui.catalog.ui.next +import net.thunderbird.ui.catalog.ui.CatalogContract.Theme +import net.thunderbird.ui.catalog.ui.CatalogContract.ThemeVariant +import net.thunderbird.ui.catalog.ui.next @Suppress("LongParameterList", "LongMethod") @Composable diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/helper/WithRememberedState.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/helper/WithRememberedState.kt similarity index 87% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/helper/WithRememberedState.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/helper/WithRememberedState.kt index 3aa78eaf61..735db65270 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/helper/WithRememberedState.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/helper/WithRememberedState.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.common.helper +package net.thunderbird.ui.catalog.ui.common.helper import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/DefaultItem.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/DefaultItem.kt similarity index 87% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/DefaultItem.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/DefaultItem.kt index c5eb8e8438..ae5b4aed4c 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/DefaultItem.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/DefaultItem.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.common.list +package net.thunderbird.ui.catalog.ui.common.list import androidx.compose.foundation.lazy.grid.LazyGridItemScope import androidx.compose.foundation.lazy.grid.LazyGridScope diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/DefaultItemPadding.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/DefaultItemPadding.kt similarity index 84% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/DefaultItemPadding.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/DefaultItemPadding.kt index 82a8b5b8de..c15335c19f 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/DefaultItemPadding.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/DefaultItemPadding.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.common.list +package net.thunderbird.ui.catalog.ui.common.list import androidx.compose.foundation.layout.PaddingValues import androidx.compose.runtime.Composable diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/FullSpanItem.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/FullSpanItem.kt similarity index 90% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/FullSpanItem.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/FullSpanItem.kt index 31ce00d328..4dccce3b00 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/FullSpanItem.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/FullSpanItem.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.common.list +package net.thunderbird.ui.catalog.ui.common.list import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyGridItemScope diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/ItemOutlinedView.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/ItemOutlinedView.kt similarity index 95% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/ItemOutlinedView.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/ItemOutlinedView.kt index 5e5b31d777..bcd448b578 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/ItemOutlinedView.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/ItemOutlinedView.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.common.list +package net.thunderbird.ui.catalog.ui.common.list import androidx.compose.foundation.border import androidx.compose.foundation.layout.Arrangement diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/SectionHeaderItem.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionHeaderItem.kt similarity index 94% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/SectionHeaderItem.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionHeaderItem.kt index aebc7f82f1..b4186ed5e9 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/SectionHeaderItem.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionHeaderItem.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.common.list +package net.thunderbird.ui.catalog.ui.common.list import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/SectionInfoItem.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionInfoItem.kt similarity index 94% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/SectionInfoItem.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionInfoItem.kt index 0f9f63d2c6..556a3967bb 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/SectionInfoItem.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionInfoItem.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.common.list +package net.thunderbird.ui.catalog.ui.common.list import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/SectionSubtitleItem.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionSubtitleItem.kt similarity index 94% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/SectionSubtitleItem.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionSubtitleItem.kt index 75940300fa..d8e2834ed6 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/SectionSubtitleItem.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionSubtitleItem.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.common.list +package net.thunderbird.ui.catalog.ui.common.list import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/WideItem.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/WideItem.kt similarity index 90% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/WideItem.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/WideItem.kt index 3ef33e8982..c46806f48c 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/list/WideItem.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/WideItem.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.common.list +package net.thunderbird.ui.catalog.ui.common.list import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyGridItemScope diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/theme/ThemeSwitch.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/theme/ThemeSwitch.kt similarity index 88% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/theme/ThemeSwitch.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/theme/ThemeSwitch.kt index 909d368d57..3b6b63c145 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/common/theme/ThemeSwitch.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/theme/ThemeSwitch.kt @@ -1,10 +1,10 @@ -package app.k9mail.ui.catalog.ui.common.theme +package net.thunderbird.ui.catalog.ui.common.theme import androidx.compose.runtime.Composable import app.k9mail.core.ui.compose.theme2.k9mail.K9MailTheme2 import app.k9mail.core.ui.compose.theme2.thunderbird.ThunderbirdTheme2 -import app.k9mail.ui.catalog.ui.CatalogContract.Theme -import app.k9mail.ui.catalog.ui.CatalogContract.ThemeVariant +import net.thunderbird.ui.catalog.ui.CatalogContract.Theme +import net.thunderbird.ui.catalog.ui.CatalogContract.ThemeVariant @Composable fun ThemeSwitch( diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeContent.kt similarity index 62% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeContent.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeContent.kt index 2ecd78957c..81781f67e6 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeContent.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeContent.kt @@ -1,15 +1,15 @@ -package app.k9mail.ui.catalog.ui.molecule +package net.thunderbird.ui.catalog.ui.molecule import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import app.k9mail.ui.catalog.ui.common.PagedContent -import app.k9mail.ui.catalog.ui.molecule.CatalogMoleculePage.INPUT -import app.k9mail.ui.catalog.ui.molecule.CatalogMoleculePage.PULL_TO_REFRESH -import app.k9mail.ui.catalog.ui.molecule.CatalogMoleculePage.STATE -import app.k9mail.ui.catalog.ui.molecule.items.PullToRefresh -import app.k9mail.ui.catalog.ui.molecule.items.inputItems -import app.k9mail.ui.catalog.ui.molecule.items.stateItems import kotlinx.collections.immutable.ImmutableList +import net.thunderbird.ui.catalog.ui.common.PagedContent +import net.thunderbird.ui.catalog.ui.molecule.CatalogMoleculePage.INPUT +import net.thunderbird.ui.catalog.ui.molecule.CatalogMoleculePage.PULL_TO_REFRESH +import net.thunderbird.ui.catalog.ui.molecule.CatalogMoleculePage.STATE +import net.thunderbird.ui.catalog.ui.molecule.items.PullToRefresh +import net.thunderbird.ui.catalog.ui.molecule.items.inputItems +import net.thunderbird.ui.catalog.ui.molecule.items.stateItems @Composable fun CatalogMoleculeContent( diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt similarity index 94% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt index 1a14704866..bff14166cd 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.molecule +package net.thunderbird.ui.catalog.ui.molecule import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.padding diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculePage.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculePage.kt similarity index 82% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculePage.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculePage.kt index c8c01aa043..867a8b70b1 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculePage.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculePage.kt @@ -1,7 +1,7 @@ -package app.k9mail.ui.catalog.ui.molecule +package net.thunderbird.ui.catalog.ui.molecule -import app.k9mail.ui.catalog.ui.CatalogPage import kotlinx.collections.immutable.toImmutableList +import net.thunderbird.ui.catalog.ui.CatalogPage enum class CatalogMoleculePage( override val displayName: String, diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt similarity index 87% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt index b51282ae96..4e1bd1417c 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.molecule +package net.thunderbird.ui.catalog.ui.molecule import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/items/InputItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/InputItems.kt similarity index 93% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/items/InputItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/InputItems.kt index d09e7c4026..db010b032c 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/items/InputItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/InputItems.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.molecule.items +package net.thunderbird.ui.catalog.ui.molecule.items import androidx.compose.foundation.lazy.grid.LazyGridScope import app.k9mail.core.ui.compose.designsystem.molecule.input.CheckboxInput @@ -8,12 +8,12 @@ import app.k9mail.core.ui.compose.designsystem.molecule.input.PasswordInput import app.k9mail.core.ui.compose.designsystem.molecule.input.SelectInput import app.k9mail.core.ui.compose.designsystem.molecule.input.SwitchInput import app.k9mail.core.ui.compose.designsystem.molecule.input.TextInput -import app.k9mail.ui.catalog.ui.common.helper.WithRememberedState -import app.k9mail.ui.catalog.ui.common.list.ItemOutlinedView -import app.k9mail.ui.catalog.ui.common.list.fullSpanItem -import app.k9mail.ui.catalog.ui.common.list.sectionHeaderItem -import app.k9mail.ui.catalog.ui.common.list.sectionSubtitleItem import kotlinx.collections.immutable.persistentListOf +import net.thunderbird.ui.catalog.ui.common.helper.WithRememberedState +import net.thunderbird.ui.catalog.ui.common.list.ItemOutlinedView +import net.thunderbird.ui.catalog.ui.common.list.fullSpanItem +import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.common.list.sectionSubtitleItem @Suppress("LongMethod") fun LazyGridScope.inputItems() { diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/items/PullToRefreshItem.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/PullToRefreshItem.kt similarity index 96% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/items/PullToRefreshItem.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/PullToRefreshItem.kt index b6d27f55ee..4a24e49d10 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/items/PullToRefreshItem.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/PullToRefreshItem.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.molecule.items +package net.thunderbird.ui.catalog.ui.molecule.items import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.fillMaxWidth diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/items/StateItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/StateItems.kt similarity index 92% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/items/StateItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/StateItems.kt index ca76c94859..ae77ecf9e8 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/molecule/items/StateItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/StateItems.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.molecule.items +package net.thunderbird.ui.catalog.ui.molecule.items import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column @@ -17,11 +17,11 @@ import app.k9mail.core.ui.compose.designsystem.molecule.ContentLoadingState import app.k9mail.core.ui.compose.designsystem.molecule.ContentLoadingView import app.k9mail.core.ui.compose.designsystem.molecule.ErrorView import app.k9mail.core.ui.compose.designsystem.molecule.LoadingView -import app.k9mail.ui.catalog.ui.common.list.ItemOutlinedView -import app.k9mail.ui.catalog.ui.common.list.fullSpanItem -import app.k9mail.ui.catalog.ui.common.list.sectionHeaderItem -import app.k9mail.ui.catalog.ui.common.list.sectionInfoItem -import app.k9mail.ui.catalog.ui.common.list.sectionSubtitleItem +import net.thunderbird.ui.catalog.ui.common.list.ItemOutlinedView +import net.thunderbird.ui.catalog.ui.common.list.fullSpanItem +import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.common.list.sectionInfoItem +import net.thunderbird.ui.catalog.ui.common.list.sectionSubtitleItem @Suppress("LongMethod") fun LazyGridScope.stateItems() { diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/navigation/CatalogNavHost.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/CatalogNavHost.kt similarity index 69% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/navigation/CatalogNavHost.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/CatalogNavHost.kt index cb9214636e..c6f3063b03 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/navigation/CatalogNavHost.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/CatalogNavHost.kt @@ -1,14 +1,14 @@ -package app.k9mail.ui.catalog.ui.navigation +package net.thunderbird.ui.catalog.ui.navigation import androidx.compose.foundation.layout.PaddingValues import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost -import app.k9mail.ui.catalog.ui.atom.NAVIGATION_ROUTE_CATALOG_ATOM -import app.k9mail.ui.catalog.ui.atom.catalogAtomRoute -import app.k9mail.ui.catalog.ui.molecule.catalogMoleculeRoute -import app.k9mail.ui.catalog.ui.organism.catalogOrganismRoute +import net.thunderbird.ui.catalog.ui.atom.NAVIGATION_ROUTE_CATALOG_ATOM +import net.thunderbird.ui.catalog.ui.atom.catalogAtomRoute +import net.thunderbird.ui.catalog.ui.molecule.catalogMoleculeRoute +import net.thunderbird.ui.catalog.ui.organism.catalogOrganismRoute @Composable fun CatalogNavHost( diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogMoleculeContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeContent.kt similarity index 69% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogMoleculeContent.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeContent.kt index 99b96703ae..aa120a29ef 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogMoleculeContent.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeContent.kt @@ -1,11 +1,11 @@ -package app.k9mail.ui.catalog.ui.organism +package net.thunderbird.ui.catalog.ui.organism import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import app.k9mail.ui.catalog.ui.common.PagedContent -import app.k9mail.ui.catalog.ui.organism.CatalogOrganismPage.APP_BAR -import app.k9mail.ui.catalog.ui.organism.items.appBarItems import kotlinx.collections.immutable.ImmutableList +import net.thunderbird.ui.catalog.ui.common.PagedContent +import net.thunderbird.ui.catalog.ui.organism.CatalogOrganismPage.APP_BAR +import net.thunderbird.ui.catalog.ui.organism.items.appBarItems @Composable fun CatalogOrganismContent( diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt similarity index 94% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt index 206bb27646..d099be8fba 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.organism +package net.thunderbird.ui.catalog.ui.organism import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.padding diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogOrganismPage.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismPage.kt similarity index 79% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogOrganismPage.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismPage.kt index cf70c0d91d..b74fcfcc2a 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogOrganismPage.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismPage.kt @@ -1,7 +1,7 @@ -package app.k9mail.ui.catalog.ui.organism +package net.thunderbird.ui.catalog.ui.organism -import app.k9mail.ui.catalog.ui.CatalogPage import kotlinx.collections.immutable.toImmutableList +import net.thunderbird.ui.catalog.ui.CatalogPage enum class CatalogOrganismPage( override val displayName: String, diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogOrganismScreen.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismScreen.kt similarity index 87% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogOrganismScreen.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismScreen.kt index 7c6fb5e2e5..7620f0f9c5 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/CatalogOrganismScreen.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismScreen.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.organism +package net.thunderbird.ui.catalog.ui.organism import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier diff --git a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/items/AppBarItems.kt similarity index 93% rename from app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/items/AppBarItems.kt index a5e2035e55..bd6dfb2c25 100644 --- a/app-ui-catalog/src/main/kotlin/app/k9mail/ui/catalog/ui/organism/items/AppBarItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/items/AppBarItems.kt @@ -1,4 +1,4 @@ -package app.k9mail.ui.catalog.ui.organism.items +package net.thunderbird.ui.catalog.ui.organism.items import androidx.compose.foundation.lazy.grid.LazyGridScope import androidx.compose.runtime.Composable @@ -11,10 +11,10 @@ import app.k9mail.core.ui.compose.designsystem.organism.SubtitleTopAppBarWithMen import app.k9mail.core.ui.compose.designsystem.organism.TopAppBar import app.k9mail.core.ui.compose.designsystem.organism.TopAppBarWithBackButton import app.k9mail.core.ui.compose.designsystem.organism.TopAppBarWithMenuButton -import app.k9mail.ui.catalog.ui.common.list.ItemOutlinedView -import app.k9mail.ui.catalog.ui.common.list.fullSpanItem -import app.k9mail.ui.catalog.ui.common.list.sectionHeaderItem -import app.k9mail.ui.catalog.ui.common.list.sectionSubtitleItem +import net.thunderbird.ui.catalog.ui.common.list.ItemOutlinedView +import net.thunderbird.ui.catalog.ui.common.list.fullSpanItem +import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.common.list.sectionSubtitleItem fun LazyGridScope.appBarItems() { topAppBarItems() -- GitLab From f01a993b3b28f77977821b0fa4568db3a8a59370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 20 Mar 2025 17:26:57 +0100 Subject: [PATCH 128/262] Change catalog app logo to thunderbird --- .../src/debug/res/drawable/ic_app_logo.xml | 221 ++++++++++++++++++ .../res/drawable/ic_app_logo_monochrome.xml | 37 +++ .../src/debug/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 6663 bytes .../src/debug/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3277 bytes .../debug/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 8988 bytes .../debug/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 15631 bytes .../debug/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 23189 bytes .../drawable-v26/ic_launcher_monochrome.xml | 80 ------- .../src/main/res/drawable/ic_app_logo.xml | 164 +++++++++++++ .../res/drawable/ic_app_logo_monochrome.xml | 13 ++ .../res/drawable/ic_launcher_foreground.xml | 126 ---------- .../src/main/res/drawable/ic_startup_logo.xml | 164 +++++++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 19 +- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 5727 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2890 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 7490 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 13521 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 5109 -> 20219 bytes .../src/main/res/values/app_logo_colors.xml | 4 + app-ui-catalog/src/main/res/values/themes.xml | 2 +- 20 files changed, 619 insertions(+), 211 deletions(-) create mode 100644 app-ui-catalog/src/debug/res/drawable/ic_app_logo.xml create mode 100644 app-ui-catalog/src/debug/res/drawable/ic_app_logo_monochrome.xml create mode 100644 app-ui-catalog/src/debug/res/mipmap-hdpi/ic_launcher.png create mode 100644 app-ui-catalog/src/debug/res/mipmap-mdpi/ic_launcher.png create mode 100644 app-ui-catalog/src/debug/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app-ui-catalog/src/debug/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app-ui-catalog/src/debug/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 app-ui-catalog/src/main/res/drawable-v26/ic_launcher_monochrome.xml create mode 100644 app-ui-catalog/src/main/res/drawable/ic_app_logo.xml create mode 100644 app-ui-catalog/src/main/res/drawable/ic_app_logo_monochrome.xml delete mode 100644 app-ui-catalog/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app-ui-catalog/src/main/res/drawable/ic_startup_logo.xml create mode 100644 app-ui-catalog/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app-ui-catalog/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app-ui-catalog/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app-ui-catalog/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app-ui-catalog/src/main/res/values/app_logo_colors.xml diff --git a/app-ui-catalog/src/debug/res/drawable/ic_app_logo.xml b/app-ui-catalog/src/debug/res/drawable/ic_app_logo.xml new file mode 100644 index 0000000000..af3f00d6b0 --- /dev/null +++ b/app-ui-catalog/src/debug/res/drawable/ic_app_logo.xml @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-ui-catalog/src/debug/res/drawable/ic_app_logo_monochrome.xml b/app-ui-catalog/src/debug/res/drawable/ic_app_logo_monochrome.xml new file mode 100644 index 0000000000..52af5acef4 --- /dev/null +++ b/app-ui-catalog/src/debug/res/drawable/ic_app_logo_monochrome.xml @@ -0,0 +1,37 @@ + + + + + + + + + diff --git a/app-ui-catalog/src/debug/res/mipmap-hdpi/ic_launcher.png b/app-ui-catalog/src/debug/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f122077f6cb68df03fd4e416c8ebda47ceef1794 GIT binary patch literal 6663 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 fx&{B2|5A^-;#z(5-v%KD1_lOCS3j3^P6{=3&_ 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 literal 0 HcmV?d00001 diff --git a/app-ui-catalog/src/debug/res/mipmap-xxxhdpi/ic_launcher.png b/app-ui-catalog/src/debug/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..eda1c5d7e517a14453f6037bfad671962e8fc424 GIT binary patch literal 23189 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 literal 0 HcmV?d00001 diff --git a/app-ui-catalog/src/main/res/drawable-v26/ic_launcher_monochrome.xml b/app-ui-catalog/src/main/res/drawable-v26/ic_launcher_monochrome.xml deleted file mode 100644 index f6d70e9d01..0000000000 --- a/app-ui-catalog/src/main/res/drawable-v26/ic_launcher_monochrome.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - diff --git a/app-ui-catalog/src/main/res/drawable/ic_app_logo.xml b/app-ui-catalog/src/main/res/drawable/ic_app_logo.xml new file mode 100644 index 0000000000..c9c852c6a9 --- /dev/null +++ b/app-ui-catalog/src/main/res/drawable/ic_app_logo.xml @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-ui-catalog/src/main/res/drawable/ic_app_logo_monochrome.xml b/app-ui-catalog/src/main/res/drawable/ic_app_logo_monochrome.xml new file mode 100644 index 0000000000..ad961b1ce0 --- /dev/null +++ b/app-ui-catalog/src/main/res/drawable/ic_app_logo_monochrome.xml @@ -0,0 +1,13 @@ + + + + diff --git a/app-ui-catalog/src/main/res/drawable/ic_launcher_foreground.xml b/app-ui-catalog/src/main/res/drawable/ic_launcher_foreground.xml deleted file mode 100644 index 502cd25e12..0000000000 --- a/app-ui-catalog/src/main/res/drawable/ic_launcher_foreground.xml +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app-ui-catalog/src/main/res/drawable/ic_startup_logo.xml b/app-ui-catalog/src/main/res/drawable/ic_startup_logo.xml new file mode 100644 index 0000000000..c56060167d --- /dev/null +++ b/app-ui-catalog/src/main/res/drawable/ic_startup_logo.xml @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-ui-catalog/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app-ui-catalog/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index c78bee3b53..7d53d26f96 100644 --- a/app-ui-catalog/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/app-ui-catalog/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,6 +1,17 @@ - - - - + + + + + + + + diff --git a/app-ui-catalog/src/main/res/mipmap-hdpi/ic_launcher.png b/app-ui-catalog/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e6de768a85e8e0b35744d27cd4207f264ef0bf5c GIT binary patch literal 5727 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 VS~BhFLIwr~22WQ%mvv4FO#m)#jS~O> literal 0 HcmV?d00001 diff --git a/app-ui-catalog/src/main/res/mipmap-xhdpi/ic_launcher.png b/app-ui-catalog/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c04fa956540930ccaaf5536051ba570f2b943d4f GIT binary patch literal 7490 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 literal 5109 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 diff --git a/app-ui-catalog/src/main/res/values/app_logo_colors.xml b/app-ui-catalog/src/main/res/values/app_logo_colors.xml new file mode 100644 index 0000000000..250aa60229 --- /dev/null +++ b/app-ui-catalog/src/main/res/values/app_logo_colors.xml @@ -0,0 +1,4 @@ + + + #F0F8FF + diff --git a/app-ui-catalog/src/main/res/values/themes.xml b/app-ui-catalog/src/main/res/values/themes.xml index fe8ce823cc..cd053e0872 100644 --- a/app-ui-catalog/src/main/res/values/themes.xml +++ b/app-ui-catalog/src/main/res/values/themes.xml @@ -6,7 +6,7 @@ -- GitLab From c77146cd1cba214e55350beb46ed25620de1e6a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 20 Mar 2025 17:30:35 +0100 Subject: [PATCH 129/262] Change Catalog app default theme to thunderbird --- .../kotlin/net/thunderbird/ui/catalog/ui/CatalogContract.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContract.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContract.kt index 00fab64a52..4805a13acb 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContract.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContract.kt @@ -7,8 +7,8 @@ interface CatalogContract { enum class Theme( val displayName: String, ) { - THEME_2_K9("K-9 Theme2"), - THEME_2_THUNDERBIRD("Thunderbird Theme2"), + THEME_2_K9("K-9 UI"), + THEME_2_THUNDERBIRD("Thunderbird UI"), } enum class ThemeVariant( @@ -21,7 +21,7 @@ interface CatalogContract { interface ViewModel : UnidirectionalViewModel data class State( - val theme: Theme = Theme.THEME_2_K9, + val theme: Theme = Theme.THEME_2_THUNDERBIRD, val themeVariant: ThemeVariant = ThemeVariant.LIGHT, ) -- GitLab From e6be8cee8e9708cf6194a07889a156c0fc9dac90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 20 Mar 2025 17:52:04 +0100 Subject: [PATCH 130/262] Change Catalog app to type safe navigation --- app-ui-catalog/build.gradle.kts | 3 ++ .../ui/catalog/ui/CatalogContent.kt | 26 +++++++--- .../catalog/ui/atom/CatalogAtomNavigation.kt | 26 ---------- .../ui/molecule/CatalogMoleculeNavigation.kt | 26 ---------- .../catalog/ui/navigation/CatalogNavHost.kt | 18 +++---- .../ui/navigation/CatalogNavigation.kt | 5 ++ .../ui/catalog/ui/navigation/CatalogRoute.kt | 47 +++++++++++++++++++ .../ui/navigation/DefaultCatalogNavigation.kt | 36 ++++++++++++++ .../ui/organism/CatalogMoleculeNavigation.kt | 26 ---------- 9 files changed, 120 insertions(+), 93 deletions(-) delete mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomNavigation.kt delete mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt create mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/CatalogNavigation.kt create mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/CatalogRoute.kt create mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/DefaultCatalogNavigation.kt delete mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt diff --git a/app-ui-catalog/build.gradle.kts b/app-ui-catalog/build.gradle.kts index ca23d90919..876e19f247 100644 --- a/app-ui-catalog/build.gradle.kts +++ b/app-ui-catalog/build.gradle.kts @@ -1,5 +1,6 @@ plugins { id(ThunderbirdPlugins.App.androidCompose) + alias(libs.plugins.kotlin.serialization) } android { @@ -24,6 +25,8 @@ android { } dependencies { + implementation(projects.core.ui.compose.navigation) + implementation(projects.core.ui.compose.designsystem) implementation(projects.core.ui.legacy.designsystem) diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContent.kt index bb8f3896e5..c95554dd97 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContent.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContent.kt @@ -2,16 +2,15 @@ package net.thunderbird.ui.catalog.ui import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.navigation.NavOptions import androidx.navigation.compose.rememberNavController import app.k9mail.core.ui.compose.designsystem.organism.drawer.ModalNavigationDrawer import app.k9mail.core.ui.compose.designsystem.template.Scaffold import net.thunderbird.ui.catalog.ui.CatalogContract.State -import net.thunderbird.ui.catalog.ui.atom.navigateToCatalogAtom import net.thunderbird.ui.catalog.ui.common.ThemeTopAppBar import net.thunderbird.ui.catalog.ui.common.drawer.DrawerContent -import net.thunderbird.ui.catalog.ui.molecule.navigateToCatalogMolecule import net.thunderbird.ui.catalog.ui.navigation.CatalogNavHost -import net.thunderbird.ui.catalog.ui.organism.navigateToCatalogOrganism +import net.thunderbird.ui.catalog.ui.navigation.CatalogRoute @Composable fun CatalogContent( @@ -31,13 +30,28 @@ fun CatalogContent( onThemeChanged = onThemeChanged, onThemeVariantChanged = onThemeVariantChanged, onNavigateToAtoms = { - navController.navigateToCatalogAtom() + navController.navigate( + route = CatalogRoute.Atom, + navOptions = NavOptions.Builder() + .setLaunchSingleTop(true) + .build(), + ) }, onNavigateToMolecules = { - navController.navigateToCatalogMolecule() + navController.navigate( + route = CatalogRoute.Molecule, + navOptions = NavOptions.Builder() + .setLaunchSingleTop(true) + .build(), + ) }, onNavigateToOrganisms = { - navController.navigateToCatalogOrganism() + navController.navigate( + route = CatalogRoute.Organism, + navOptions = NavOptions.Builder() + .setLaunchSingleTop(true) + .build(), + ) }, ) }, diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomNavigation.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomNavigation.kt deleted file mode 100644 index 42358a6748..0000000000 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomNavigation.kt +++ /dev/null @@ -1,26 +0,0 @@ -package net.thunderbird.ui.catalog.ui.atom - -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.padding -import androidx.compose.ui.Modifier -import androidx.navigation.NavController -import androidx.navigation.NavGraphBuilder -import androidx.navigation.NavOptions -import androidx.navigation.compose.composable - -const val NAVIGATION_ROUTE_CATALOG_ATOM = "/catalog/atom" - -fun NavController.navigateToCatalogAtom() { - navigate( - route = NAVIGATION_ROUTE_CATALOG_ATOM, - navOptions = NavOptions.Builder() - .setLaunchSingleTop(true) - .build(), - ) -} - -fun NavGraphBuilder.catalogAtomRoute(paddingValues: PaddingValues) { - composable(route = NAVIGATION_ROUTE_CATALOG_ATOM) { - CatalogAtomScreen(Modifier.padding(paddingValues)) - } -} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt deleted file mode 100644 index bff14166cd..0000000000 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeNavigation.kt +++ /dev/null @@ -1,26 +0,0 @@ -package net.thunderbird.ui.catalog.ui.molecule - -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.padding -import androidx.compose.ui.Modifier -import androidx.navigation.NavController -import androidx.navigation.NavGraphBuilder -import androidx.navigation.NavOptions -import androidx.navigation.compose.composable - -const val NAVIGATION_ROUTE_CATALOG_MOLECULE = "/catalog/molecule" - -fun NavController.navigateToCatalogMolecule() { - navigate( - route = NAVIGATION_ROUTE_CATALOG_MOLECULE, - navOptions = NavOptions.Builder() - .setLaunchSingleTop(true) - .build(), - ) -} - -fun NavGraphBuilder.catalogMoleculeRoute(paddingValues: PaddingValues) { - composable(route = NAVIGATION_ROUTE_CATALOG_MOLECULE) { - CatalogMoleculeScreen(Modifier.padding(paddingValues)) - } -} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/CatalogNavHost.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/CatalogNavHost.kt index c6f3063b03..d2f26f911e 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/CatalogNavHost.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/CatalogNavHost.kt @@ -1,29 +1,29 @@ package net.thunderbird.ui.catalog.ui.navigation import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost -import net.thunderbird.ui.catalog.ui.atom.NAVIGATION_ROUTE_CATALOG_ATOM -import net.thunderbird.ui.catalog.ui.atom.catalogAtomRoute -import net.thunderbird.ui.catalog.ui.molecule.catalogMoleculeRoute -import net.thunderbird.ui.catalog.ui.organism.catalogOrganismRoute @Composable fun CatalogNavHost( navController: NavHostController, modifier: Modifier = Modifier, paddingValues: PaddingValues = PaddingValues(), - startDestination: String = NAVIGATION_ROUTE_CATALOG_ATOM, + startDestination: CatalogRoute = CatalogRoute.Atom, + catalogNavigation: CatalogNavigation = DefaultCatalogNavigation(), ) { NavHost( navController = navController, startDestination = startDestination, - modifier = modifier, + modifier = modifier.padding(paddingValues), ) { - catalogAtomRoute(paddingValues) - catalogMoleculeRoute(paddingValues) - catalogOrganismRoute(paddingValues) + catalogNavigation.registerRoutes( + navGraphBuilder = this, + onBack = { navController.popBackStack() }, + onFinish = { navController.popBackStack() }, + ) } } diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/CatalogNavigation.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/CatalogNavigation.kt new file mode 100644 index 0000000000..ec42e99590 --- /dev/null +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/CatalogNavigation.kt @@ -0,0 +1,5 @@ +package net.thunderbird.ui.catalog.ui.navigation + +import app.k9mail.core.ui.compose.navigation.Navigation + +interface CatalogNavigation : Navigation diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/CatalogRoute.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/CatalogRoute.kt new file mode 100644 index 0000000000..9474d5f9e7 --- /dev/null +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/CatalogRoute.kt @@ -0,0 +1,47 @@ +package net.thunderbird.ui.catalog.ui.navigation + +import app.k9mail.core.ui.compose.navigation.Route +import kotlinx.serialization.Serializable + +sealed interface CatalogRoute : Route { + + @Serializable + data object Atom : CatalogRoute { + override val basePath: String = BASE_PATH + + override fun route(): String = basePath + + const val BASE_PATH = "$CATALOG_BASE_PATH/atom" + } + + @Serializable + data object Molecule : CatalogRoute { + override val basePath: String = BASE_PATH + + override fun route(): String = basePath + + const val BASE_PATH = "$CATALOG_BASE_PATH/molecule" + } + + @Serializable + data object Organism : CatalogRoute { + override val basePath: String = BASE_PATH + + override fun route(): String = basePath + + const val BASE_PATH = "$CATALOG_BASE_PATH/organism" + } + + @Serializable + data object Template : CatalogRoute { + override val basePath: String = BASE_PATH + + override fun route(): String = basePath + + const val BASE_PATH = "$CATALOG_BASE_PATH/template" + } + + companion object { + const val CATALOG_BASE_PATH = "app://catalog" + } +} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/DefaultCatalogNavigation.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/DefaultCatalogNavigation.kt new file mode 100644 index 0000000000..0206e35e83 --- /dev/null +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/DefaultCatalogNavigation.kt @@ -0,0 +1,36 @@ +package net.thunderbird.ui.catalog.ui.navigation + +import androidx.navigation.NavGraphBuilder +import app.k9mail.core.ui.compose.navigation.deepLinkComposable +import net.thunderbird.ui.catalog.ui.atom.CatalogAtomScreen +import net.thunderbird.ui.catalog.ui.molecule.CatalogMoleculeScreen +import net.thunderbird.ui.catalog.ui.organism.CatalogOrganismScreen + +class DefaultCatalogNavigation : CatalogNavigation { + + override fun registerRoutes( + navGraphBuilder: NavGraphBuilder, + onBack: () -> Unit, + onFinish: (CatalogRoute) -> Unit, + ) { + with(navGraphBuilder) { + deepLinkComposable( + basePath = CatalogRoute.Atom.BASE_PATH, + ) { backStackEntry -> + CatalogAtomScreen() + } + + deepLinkComposable( + basePath = CatalogRoute.Molecule.BASE_PATH, + ) { backStackEntry -> + CatalogMoleculeScreen() + } + + deepLinkComposable( + basePath = CatalogRoute.Organism.BASE_PATH, + ) { backStackEntry -> + CatalogOrganismScreen() + } + } + } +} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt deleted file mode 100644 index d099be8fba..0000000000 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeNavigation.kt +++ /dev/null @@ -1,26 +0,0 @@ -package net.thunderbird.ui.catalog.ui.organism - -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.padding -import androidx.compose.ui.Modifier -import androidx.navigation.NavController -import androidx.navigation.NavGraphBuilder -import androidx.navigation.NavOptions -import androidx.navigation.compose.composable - -const val NAVIGATION_ROUTE_CATALOG_ORGANISM = "/catalog/organism" - -fun NavController.navigateToCatalogOrganism() { - navigate( - route = NAVIGATION_ROUTE_CATALOG_ORGANISM, - navOptions = NavOptions.Builder() - .setLaunchSingleTop(true) - .build(), - ) -} - -fun NavGraphBuilder.catalogOrganismRoute(paddingValues: PaddingValues) { - composable(route = NAVIGATION_ROUTE_CATALOG_ORGANISM) { - CatalogOrganismScreen(Modifier.padding(paddingValues)) - } -} -- GitLab From d64eb18da080fdc4cfd8ac97af1bf0605ab38af9 Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Wed, 19 Mar 2025 02:28:35 +0600 Subject: [PATCH 131/262] Refactor FeatureFlagResult handling on com.fsck.k9.controller.ArchiveOperations - added whenEnabledOrNot function that returns value on FeatureFlagResult that returns value as per it's sealed object(Enabled,Disabled,Unavailable). - used the FeatureFlagResult's whenEnabledOrNot function in com.fsck.k9.controller.ArchiveOperations to handle FeatureFlagResult. --- .../core/featureflag/FeatureFlagResult.kt | 8 +++++++ .../featureflags/FeatureFlagResultTest.kt | 21 +++++++++++++++++++ .../fsck/k9/controller/ArchiveOperations.kt | 11 +++++----- 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/core/featureflags/src/main/kotlin/app/k9mail/core/featureflag/FeatureFlagResult.kt b/core/featureflags/src/main/kotlin/app/k9mail/core/featureflag/FeatureFlagResult.kt index 1d1f54e15d..47bdaa5dc2 100644 --- a/core/featureflags/src/main/kotlin/app/k9mail/core/featureflag/FeatureFlagResult.kt +++ b/core/featureflags/src/main/kotlin/app/k9mail/core/featureflag/FeatureFlagResult.kt @@ -5,6 +5,14 @@ sealed interface FeatureFlagResult { data object Disabled : FeatureFlagResult data object Unavailable : FeatureFlagResult + fun whenEnabledOrNot( + onEnabled: () -> T, + onDisabledOrUnavailable: () -> T, + ): T = when (this) { + is Enabled -> onEnabled() + is Disabled, Unavailable -> onDisabledOrUnavailable() + } + fun onEnabled(action: () -> Unit): FeatureFlagResult { if (this is Enabled) { action() diff --git a/core/featureflags/src/test/kotlin/app/k9mail/core/featureflags/FeatureFlagResultTest.kt b/core/featureflags/src/test/kotlin/app/k9mail/core/featureflags/FeatureFlagResultTest.kt index 3d7fbfdb52..c8854cadec 100644 --- a/core/featureflags/src/test/kotlin/app/k9mail/core/featureflags/FeatureFlagResultTest.kt +++ b/core/featureflags/src/test/kotlin/app/k9mail/core/featureflags/FeatureFlagResultTest.kt @@ -119,4 +119,25 @@ class FeatureFlagResultTest { assertThat(resultUnavailable).isEqualTo("unavailable") assertThat(resultDisabledOrUnavailable).isEqualTo("disabled or unavailable") } + + @Test + fun `whenEnabledOrNot should return correct value based on state`() { + val enabledResult = FeatureFlagResult.Enabled.whenEnabledOrNot( + onEnabled = { "Feature is ON" }, + onDisabledOrUnavailable = { "Feature is OFF" }, + ) + assertThat(enabledResult).isEqualTo("Feature is ON") + + val disabledResult = FeatureFlagResult.Disabled.whenEnabledOrNot( + onEnabled = { "Feature is ON" }, + onDisabledOrUnavailable = { "Feature is OFF" }, + ) + assertThat(disabledResult).isEqualTo("Feature is OFF") + + val unavailableResult = FeatureFlagResult.Unavailable.whenEnabledOrNot( + onEnabled = { "Feature is ON" }, + onDisabledOrUnavailable = { "Feature is OFF" }, + ) + assertThat(unavailableResult).isEqualTo("Feature is OFF") + } } diff --git a/legacy/core/src/main/java/com/fsck/k9/controller/ArchiveOperations.kt b/legacy/core/src/main/java/com/fsck/k9/controller/ArchiveOperations.kt index 838158d1cb..b148359632 100644 --- a/legacy/core/src/main/java/com/fsck/k9/controller/ArchiveOperations.kt +++ b/legacy/core/src/main/java/com/fsck/k9/controller/ArchiveOperations.kt @@ -1,7 +1,6 @@ package com.fsck.k9.controller import app.k9mail.core.featureflag.FeatureFlagProvider -import app.k9mail.core.featureflag.FeatureFlagResult import app.k9mail.core.featureflag.toFeatureFlagKey import app.k9mail.legacy.account.Account import app.k9mail.legacy.message.controller.MessageReference @@ -73,11 +72,11 @@ internal class ArchiveOperations( messages: List, archiveFolderId: Long, ) { - val operation = when (featureFlagProvider.provide("archive_marks_as_read".toFeatureFlagKey())) { - FeatureFlagResult.Enabled -> MoveOrCopyFlavor.MOVE_AND_MARK_AS_READ - FeatureFlagResult.Disabled -> MoveOrCopyFlavor.MOVE - FeatureFlagResult.Unavailable -> MoveOrCopyFlavor.MOVE - } + val operation = featureFlagProvider.provide("archive_marks_as_read".toFeatureFlagKey()) + .whenEnabledOrNot( + onEnabled = { MoveOrCopyFlavor.MOVE_AND_MARK_AS_READ }, + onDisabledOrUnavailable = { MoveOrCopyFlavor.MOVE }, + ) messagingController.moveOrCopyMessageSynchronous( account, sourceFolderId, -- GitLab From 06c907a60668f86d3bc0b6867207cc452364ad9d Mon Sep 17 00:00:00 2001 From: Philipp Kewisch Date: Thu, 20 Mar 2025 15:14:26 +0100 Subject: [PATCH 132/262] Create a separate SECURITY.md and link to vulnerability reporting --- .github/ISSUE_TEMPLATE/config.yml | 3 +++ README.md | 22 ---------------------- SECURITY.md | 29 +++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 22 deletions(-) create mode 100644 SECURITY.md diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index c4c38735b0..5f8c5a5648 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -3,6 +3,9 @@ contact_links: - name: Feature Request url: https://connect.mozilla.org/t5/ideas/idb-p/ideas/label-name/thunderbird%20android about: Submit your ideas to improve Thunderbird for Android. + - name: Security Vulnerability + url: https://github.com/thunderbird/thunderbird-android/security/advisories/new + about: Report a security vulnerability. Many users could be harmed from this and it should be kept private until resolved. - name: Mozilla Support Forum (SUMO) url: https://support.mozilla.org/products/thunderbird-android about: Most issues are not bugs. Ask the community for help. diff --git a/README.md b/README.md index f0fbdfe380..f84b46c570 100644 --- a/README.md +++ b/README.md @@ -64,28 +64,6 @@ For more information about our ADRs, please see the [ADRs README](docs/architect We encourage team members and contributors to read through our ADRs to understand the architectural decisions that have shaped this project so far. Feel free to propose new ADRs or suggest modifications to existing ones as needed. -## Security - -The code in this repository was undergoing an extensive security audit in collaboration with the Open Source Technology -Improvement Fund ([OSTIF](https://ostif.org/)) and [7ASecurity](https://7asecurity.com/) in the first half of 2023. For -more details, see -our [blog post](https://blog.thunderbird.net/2023/07/k-9-mail-collaborates-with-ostif-and-7asecurity-security-audit/). - -You can report a security vulnerability [through the respective issues form](https://github.com/thunderbird/thunderbird-android/security/advisories/new). - -These are the SHA-256 fingerprints for our signing certificates: - -- Thunderbird: `B6:52:47:79:B3:DB:BC:5A:C1:7A:5A:C2:71:DD:B2:9D:CF:BF:72:35:78:C2:38:E0:3C:3C:21:78:11:35:6D:D1` -- Thunderbird Beta: `05:6B:FA:FB:45:02:49:50:2F:D9:22:62:28:70:4C:25:29:E1:B8:22:DA:06:76:0D:47:A8:5C:95:57:74:1F:BD` -- K-9 Mail: `55:C8:A5:23:B9:73:35:F5:BF:60:DF:E8:A9:F3:E1:DD:E7:44:51:6D:93:57:E8:0A:92:5B:7B:22:E4:F5:55:24` - -You can use the following command to retrieve and [verify](https://developer.android.com/tools/apksigner#usage-verify) -the certificate before installation: - -```bash -apksigner verify -v --print-certs -``` - ## K-9 Mail In June 2022, [K-9 Mail joined the Thunderbird family](https://k9mail.app/2022/06/13/K-9-Mail-and-Thunderbird.html) diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000000..cf7c877222 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,29 @@ +# Thunderbird for Android Security + +## Security Audit + +The code in this repository underwent an extensive security audit in collaboration with the Open Source Technology +Improvement Fund ([OSTIF](https://ostif.org/)) and [7ASecurity](https://7asecurity.com/) in the first half of 2023. For +more details, see +our [blog post](https://blog.thunderbird.net/2023/07/k-9-mail-collaborates-with-ostif-and-7asecurity-security-audit/). + +## Verifying Fingerprints + +These are the SHA-256 fingerprints for our signing certificates: + +- Thunderbird: `B6:52:47:79:B3:DB:BC:5A:C1:7A:5A:C2:71:DD:B2:9D:CF:BF:72:35:78:C2:38:E0:3C:3C:21:78:11:35:6D:D1` +- Thunderbird Beta: `05:6B:FA:FB:45:02:49:50:2F:D9:22:62:28:70:4C:25:29:E1:B8:22:DA:06:76:0D:47:A8:5C:95:57:74:1F:BD` +- K-9 Mail: `55:C8:A5:23:B9:73:35:F5:BF:60:DF:E8:A9:F3:E1:DD:E7:44:51:6D:93:57:E8:0A:92:5B:7B:22:E4:F5:55:24` + +You can use the following command to retrieve and [verify](https://developer.android.com/tools/apksigner#usage-verify) +the certificate before installation: + +```bash +apksigner verify -v --print-certs +``` + +## Reporting Vulnerabilities + +You can report a security vulnerability through the [vulnerability reporting form](https://github.com/thunderbird/thunderbird-android/security/advisories/new). + +We appreciate your support in making Thunderbird for Android as safe as possible! -- GitLab From af24d5786494f32899530835ae41c2d0fc5cc3a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 20 Mar 2025 18:54:30 +0100 Subject: [PATCH 133/262] Add ListDetailPane to design system --- .../fossReleaseRuntimeClasspath.txt | 11 +- .../fullReleaseRuntimeClasspath.txt | 11 +- .../dependencies/fossBetaRuntimeClasspath.txt | 11 +- .../fossDailyRuntimeClasspath.txt | 11 +- .../fossReleaseRuntimeClasspath.txt | 11 +- .../dependencies/fullBetaRuntimeClasspath.txt | 11 +- .../fullDailyRuntimeClasspath.txt | 11 +- .../fullReleaseRuntimeClasspath.txt | 11 +- core/ui/compose/designsystem/build.gradle.kts | 4 + .../template/ListDetailPanePreview.kt | 93 ++++++++++++++ .../designsystem/template/ListDetailPane.kt | 115 ++++++++++++++++++ gradle/libs.versions.toml | 3 + 12 files changed, 295 insertions(+), 8 deletions(-) create mode 100644 core/ui/compose/designsystem/src/debug/kotlin/app/k9mail/core/ui/compose/designsystem/template/ListDetailPanePreview.kt create mode 100644 core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/template/ListDetailPane.kt diff --git a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt index e37843981f..e799511e71 100644 --- a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt +++ b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt @@ -23,6 +23,12 @@ androidx.compose.foundation:foundation-android:1.7.8 androidx.compose.foundation:foundation-layout-android:1.7.8 androidx.compose.foundation:foundation-layout:1.7.8 androidx.compose.foundation:foundation:1.7.8 +androidx.compose.material3.adaptive:adaptive-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation:1.0.0 +androidx.compose.material3.adaptive:adaptive:1.0.0 androidx.compose.material3:material3-android:1.3.1 androidx.compose.material3:material3:1.3.1 androidx.compose.material:material-icons-core-android:1.7.8 @@ -137,7 +143,10 @@ androidx.vectordrawable:vectordrawable:1.1.0 androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager2:viewpager2:1.1.0-beta02 androidx.viewpager:viewpager:1.0.0 -androidx.window:window:1.0.0 +androidx.window.extensions.core:core:1.0.0 +androidx.window:window-core-android:1.3.0 +androidx.window:window-core:1.3.0 +androidx.window:window:1.3.0 androidx.work:work-runtime-ktx:2.10.0 androidx.work:work-runtime:2.10.0 co.touchlab:stately-concurrency-jvm:2.0.6 diff --git a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt index 57cd410b9c..90cc7137d0 100644 --- a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt +++ b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt @@ -23,6 +23,12 @@ androidx.compose.foundation:foundation-android:1.7.8 androidx.compose.foundation:foundation-layout-android:1.7.8 androidx.compose.foundation:foundation-layout:1.7.8 androidx.compose.foundation:foundation:1.7.8 +androidx.compose.material3.adaptive:adaptive-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation:1.0.0 +androidx.compose.material3.adaptive:adaptive:1.0.0 androidx.compose.material3:material3-android:1.3.1 androidx.compose.material3:material3:1.3.1 androidx.compose.material:material-icons-core-android:1.7.8 @@ -137,7 +143,10 @@ androidx.vectordrawable:vectordrawable:1.1.0 androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager2:viewpager2:1.1.0-beta02 androidx.viewpager:viewpager:1.0.0 -androidx.window:window:1.0.0 +androidx.window.extensions.core:core:1.0.0 +androidx.window:window-core-android:1.3.0 +androidx.window:window-core:1.3.0 +androidx.window:window:1.3.0 androidx.work:work-runtime-ktx:2.10.0 androidx.work:work-runtime:2.10.0 co.touchlab:stately-concurrency-jvm:2.0.6 diff --git a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt index 0a92f89c09..51bb61a1ac 100644 --- a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt @@ -28,6 +28,12 @@ androidx.compose.foundation:foundation-android:1.7.8 androidx.compose.foundation:foundation-layout-android:1.7.8 androidx.compose.foundation:foundation-layout:1.7.8 androidx.compose.foundation:foundation:1.7.8 +androidx.compose.material3.adaptive:adaptive-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation:1.0.0 +androidx.compose.material3.adaptive:adaptive:1.0.0 androidx.compose.material3:material3-android:1.3.1 androidx.compose.material3:material3:1.3.1 androidx.compose.material:material-icons-core-android:1.7.8 @@ -142,7 +148,10 @@ androidx.vectordrawable:vectordrawable:1.1.0 androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager2:viewpager2:1.1.0-beta02 androidx.viewpager:viewpager:1.0.0 -androidx.window:window:1.0.0 +androidx.window.extensions.core:core:1.0.0 +androidx.window:window-core-android:1.3.0 +androidx.window:window-core:1.3.0 +androidx.window:window:1.3.0 androidx.work:work-runtime-ktx:2.10.0 androidx.work:work-runtime:2.10.0 co.touchlab:stately-concurrency-jvm:2.0.6 diff --git a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt index 0a92f89c09..51bb61a1ac 100644 --- a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt @@ -28,6 +28,12 @@ androidx.compose.foundation:foundation-android:1.7.8 androidx.compose.foundation:foundation-layout-android:1.7.8 androidx.compose.foundation:foundation-layout:1.7.8 androidx.compose.foundation:foundation:1.7.8 +androidx.compose.material3.adaptive:adaptive-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation:1.0.0 +androidx.compose.material3.adaptive:adaptive:1.0.0 androidx.compose.material3:material3-android:1.3.1 androidx.compose.material3:material3:1.3.1 androidx.compose.material:material-icons-core-android:1.7.8 @@ -142,7 +148,10 @@ androidx.vectordrawable:vectordrawable:1.1.0 androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager2:viewpager2:1.1.0-beta02 androidx.viewpager:viewpager:1.0.0 -androidx.window:window:1.0.0 +androidx.window.extensions.core:core:1.0.0 +androidx.window:window-core-android:1.3.0 +androidx.window:window-core:1.3.0 +androidx.window:window:1.3.0 androidx.work:work-runtime-ktx:2.10.0 androidx.work:work-runtime:2.10.0 co.touchlab:stately-concurrency-jvm:2.0.6 diff --git a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt index 0a92f89c09..51bb61a1ac 100644 --- a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt @@ -28,6 +28,12 @@ androidx.compose.foundation:foundation-android:1.7.8 androidx.compose.foundation:foundation-layout-android:1.7.8 androidx.compose.foundation:foundation-layout:1.7.8 androidx.compose.foundation:foundation:1.7.8 +androidx.compose.material3.adaptive:adaptive-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation:1.0.0 +androidx.compose.material3.adaptive:adaptive:1.0.0 androidx.compose.material3:material3-android:1.3.1 androidx.compose.material3:material3:1.3.1 androidx.compose.material:material-icons-core-android:1.7.8 @@ -142,7 +148,10 @@ androidx.vectordrawable:vectordrawable:1.1.0 androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager2:viewpager2:1.1.0-beta02 androidx.viewpager:viewpager:1.0.0 -androidx.window:window:1.0.0 +androidx.window.extensions.core:core:1.0.0 +androidx.window:window-core-android:1.3.0 +androidx.window:window-core:1.3.0 +androidx.window:window:1.3.0 androidx.work:work-runtime-ktx:2.10.0 androidx.work:work-runtime:2.10.0 co.touchlab:stately-concurrency-jvm:2.0.6 diff --git a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt index 25442d9455..f7c67867f2 100644 --- a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt @@ -28,6 +28,12 @@ androidx.compose.foundation:foundation-android:1.7.8 androidx.compose.foundation:foundation-layout-android:1.7.8 androidx.compose.foundation:foundation-layout:1.7.8 androidx.compose.foundation:foundation:1.7.8 +androidx.compose.material3.adaptive:adaptive-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation:1.0.0 +androidx.compose.material3.adaptive:adaptive:1.0.0 androidx.compose.material3:material3-android:1.3.1 androidx.compose.material3:material3:1.3.1 androidx.compose.material:material-icons-core-android:1.7.8 @@ -142,7 +148,10 @@ androidx.vectordrawable:vectordrawable:1.1.0 androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager2:viewpager2:1.1.0-beta02 androidx.viewpager:viewpager:1.0.0 -androidx.window:window:1.0.0 +androidx.window.extensions.core:core:1.0.0 +androidx.window:window-core-android:1.3.0 +androidx.window:window-core:1.3.0 +androidx.window:window:1.3.0 androidx.work:work-runtime-ktx:2.10.0 androidx.work:work-runtime:2.10.0 co.touchlab:stately-concurrency-jvm:2.0.6 diff --git a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt index 25442d9455..f7c67867f2 100644 --- a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt @@ -28,6 +28,12 @@ androidx.compose.foundation:foundation-android:1.7.8 androidx.compose.foundation:foundation-layout-android:1.7.8 androidx.compose.foundation:foundation-layout:1.7.8 androidx.compose.foundation:foundation:1.7.8 +androidx.compose.material3.adaptive:adaptive-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation:1.0.0 +androidx.compose.material3.adaptive:adaptive:1.0.0 androidx.compose.material3:material3-android:1.3.1 androidx.compose.material3:material3:1.3.1 androidx.compose.material:material-icons-core-android:1.7.8 @@ -142,7 +148,10 @@ androidx.vectordrawable:vectordrawable:1.1.0 androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager2:viewpager2:1.1.0-beta02 androidx.viewpager:viewpager:1.0.0 -androidx.window:window:1.0.0 +androidx.window.extensions.core:core:1.0.0 +androidx.window:window-core-android:1.3.0 +androidx.window:window-core:1.3.0 +androidx.window:window:1.3.0 androidx.work:work-runtime-ktx:2.10.0 androidx.work:work-runtime:2.10.0 co.touchlab:stately-concurrency-jvm:2.0.6 diff --git a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt index 25442d9455..f7c67867f2 100644 --- a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt +++ b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt @@ -28,6 +28,12 @@ androidx.compose.foundation:foundation-android:1.7.8 androidx.compose.foundation:foundation-layout-android:1.7.8 androidx.compose.foundation:foundation-layout:1.7.8 androidx.compose.foundation:foundation:1.7.8 +androidx.compose.material3.adaptive:adaptive-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-layout:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation-android:1.0.0 +androidx.compose.material3.adaptive:adaptive-navigation:1.0.0 +androidx.compose.material3.adaptive:adaptive:1.0.0 androidx.compose.material3:material3-android:1.3.1 androidx.compose.material3:material3:1.3.1 androidx.compose.material:material-icons-core-android:1.7.8 @@ -142,7 +148,10 @@ androidx.vectordrawable:vectordrawable:1.1.0 androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager2:viewpager2:1.1.0-beta02 androidx.viewpager:viewpager:1.0.0 -androidx.window:window:1.0.0 +androidx.window.extensions.core:core:1.0.0 +androidx.window:window-core-android:1.3.0 +androidx.window:window-core:1.3.0 +androidx.window:window:1.3.0 androidx.work:work-runtime-ktx:2.10.0 androidx.work:work-runtime:2.10.0 co.touchlab:stately-concurrency-jvm:2.0.6 diff --git a/core/ui/compose/designsystem/build.gradle.kts b/core/ui/compose/designsystem/build.gradle.kts index bd898ff81c..37bee456ea 100644 --- a/core/ui/compose/designsystem/build.gradle.kts +++ b/core/ui/compose/designsystem/build.gradle.kts @@ -1,5 +1,6 @@ plugins { id(ThunderbirdPlugins.Library.androidCompose) + alias(libs.plugins.kotlin.parcelize) } android { @@ -14,6 +15,9 @@ dependencies { debugApi(projects.core.ui.compose.theme2.thunderbird) implementation(libs.androidx.compose.material3) + implementation(libs.androidx.compose.material3.adaptive) + implementation(libs.androidx.compose.material3.adaptive.layout) + implementation(libs.androidx.compose.material3.adaptive.navigation) implementation(libs.androidx.compose.material.icons.extended) // Landscapist imports a lot of dependencies that we don't need. We exclude them here. diff --git a/core/ui/compose/designsystem/src/debug/kotlin/app/k9mail/core/ui/compose/designsystem/template/ListDetailPanePreview.kt b/core/ui/compose/designsystem/src/debug/kotlin/app/k9mail/core/ui/compose/designsystem/template/ListDetailPanePreview.kt new file mode 100644 index 0000000000..f041fbf8fc --- /dev/null +++ b/core/ui/compose/designsystem/src/debug/kotlin/app/k9mail/core/ui/compose/designsystem/template/ListDetailPanePreview.kt @@ -0,0 +1,93 @@ +package app.k9mail.core.ui.compose.designsystem.template + +import android.os.Parcelable +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import app.k9mail.core.ui.compose.common.annotation.PreviewDevices +import app.k9mail.core.ui.compose.designsystem.PreviewWithTheme +import app.k9mail.core.ui.compose.designsystem.atom.Surface +import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyMedium +import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleMedium +import kotlinx.parcelize.Parcelize + +@Composable +@PreviewDevices +internal fun ListDetailPanePreview() { + PreviewWithTheme { + val navigationController = rememberListDetailNavigationController() + + ListDetailPane( + navigationController = navigationController, + listPane = { + Surface( + color = Color.Yellow, + modifier = Modifier.fillMaxSize(), + ) { + LazyColumn { + itemsIndexed(createItems()) { index, item -> + ListItem( + item = item, + onClick = { + navigationController.value.navigateToDetail(item) + }, + ) + } + } + } + }, + detailPane = { item -> + Surface( + color = Color.Red, + modifier = Modifier.fillMaxSize(), + ) { + ListItem( + item = item, + onClick = { navigationController.value.navigateBack() }, + ) + } + }, + ) + } +} + +@Composable +private fun ListItem( + item: ListItem, + onClick: () -> Unit, +) { + Column( + modifier = Modifier.clickable(onClick = onClick), + ) { + TextTitleMedium(item.id) + TextBodyMedium(item.title) + } +} + +@Parcelize +internal data class ListItem( + val id: String, + val title: String, +) : Parcelable + +private fun createItems(): List { + return listOf( + ListItem( + id = "1", + title = "Item 1", + ), + ListItem( + id = "2", + title = "Item 2", + ), + ListItem( + id = "3", + title = "Item 3", + ), + ) +} diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/template/ListDetailPane.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/template/ListDetailPane.kt new file mode 100644 index 0000000000..0be4a48f78 --- /dev/null +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/template/ListDetailPane.kt @@ -0,0 +1,115 @@ +package app.k9mail.core.ui.compose.designsystem.template + +import android.os.Parcelable +import androidx.activity.compose.BackHandler +import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi +import androidx.compose.material3.adaptive.layout.AnimatedPane +import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffold +import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffoldRole +import androidx.compose.material3.adaptive.navigation.ThreePaneScaffoldNavigator +import androidx.compose.material3.adaptive.navigation.rememberListDetailPaneScaffoldNavigator +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.MutableState +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier + +/** + * A list and detail pane layout that can be used to display a list of items and a detail view. + * + * @param navigationController A [ListDetailNavigationController] that can be used to navigate between list + * and detail panes. + * @param listPane A composable that displays the list of items. + * @param detailPane A composable that displays the detail view of an item. + * @param modifier The modifier to apply to this layout. + */ +@OptIn(ExperimentalMaterial3AdaptiveApi::class) +@Composable +fun ListDetailPane( + navigationController: MutableState>, + listPane: @Composable () -> Unit, + detailPane: @Composable (T) -> Unit, + modifier: Modifier = Modifier, +) { + val navigator = rememberListDetailPaneScaffoldNavigator() + + LaunchedEffect(navigator) { + navigationController.value = DefaultListDetailNavigationController( + navigator = navigator, + ) + } + + BackHandler(navigator.canNavigateBack()) { + navigator.navigateBack() + } + + ListDetailPaneScaffold( + directive = navigator.scaffoldDirective, + value = navigator.scaffoldValue, + listPane = { + AnimatedPane { + listPane() + } + }, + detailPane = { + navigator.currentDestination?.content?.let { item -> + AnimatedPane { + detailPane(item) + } + } + }, + modifier = modifier, + ) +} + +/** + * Creates a [ListDetailNavigationController] that can be used to navigate between list and + * detail panes in a [ListDetailPane]. + */ +@Composable +fun rememberListDetailNavigationController(): MutableState> { + val defaultController = remember { NoOpListDetailNavigationController() } + return remember { mutableStateOf(defaultController) } +} + +/** + * A controller that can be used to navigate between list and detail panes in a [ListDetailPane]. + * + * It is recommended to use [rememberListDetailNavigationController] to create an instance of this controller. + * + * @see rememberListDetailNavigationController + */ +interface ListDetailNavigationController { + fun canNavigateBack(): Boolean + fun navigateBack(): Boolean + fun navigateToDetail(item: T) + + fun paneCount(): Int +} + +/** + * A [ListDetailNavigationController] that does nothing. + */ +internal class NoOpListDetailNavigationController : ListDetailNavigationController { + override fun canNavigateBack() = false + override fun navigateBack() = false + override fun navigateToDetail(item: T) = Unit + + override fun paneCount() = 1 +} + +/** + * A [ListDetailNavigationController] that wrappes a [ThreePaneScaffoldNavigator] to navigate + * between list and detail panes. + */ +@OptIn(ExperimentalMaterial3AdaptiveApi::class) +internal class DefaultListDetailNavigationController( + private val navigator: ThreePaneScaffoldNavigator, +) : ListDetailNavigationController { + override fun canNavigateBack() = navigator.canNavigateBack() + override fun navigateBack() = navigator.navigateBack() + override fun navigateToDetail(item: T) = navigator.navigateTo(ListDetailPaneScaffoldRole.Detail, item) + + override fun paneCount(): Int = navigator.scaffoldDirective.maxHorizontalPartitions +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 70cceab7bc..2e66e48e50 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -137,6 +137,9 @@ androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = androidx-compose-foundation = { module = "androidx.compose.foundation:foundation" } androidx-compose-material-icons-extended = { module = "androidx.compose.material:material-icons-extended" } androidx-compose-material3 = { module = "androidx.compose.material3:material3" } +androidx-compose-material3-adaptive = { module = "androidx.compose.material3.adaptive:adaptive" } +androidx-compose-material3-adaptive-layout = { module = "androidx.compose.material3.adaptive:adaptive-layout" } +androidx-compose-material3-adaptive-navigation = { module = "androidx.compose.material3.adaptive:adaptive-navigation" } androidx-compose-material3-windowSizeClass = { module = "androidx.compose.material3:material3-window-size-class" } androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } -- GitLab From 91ee7f8303c6b2fcd768300c67f8d0ba89ad4045 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 20 Mar 2025 18:55:07 +0100 Subject: [PATCH 134/262] Add ListDetailPane to catalog app --- app-ui-catalog/build.gradle.kts | 1 + .../ui/catalog/ui/CatalogContent.kt | 9 ++ .../catalog/ui/common/drawer/DrawerContent.kt | 9 ++ .../ui/navigation/DefaultCatalogNavigation.kt | 7 + .../ui/template/CatalogTemplateContent.kt | 27 ++++ .../ui/template/CatalogTemplatePage.kt | 20 +++ .../ui/template/CatalogTemplateScreen.kt | 15 ++ .../catalog/ui/template/items/LayoutItems.kt | 135 ++++++++++++++++++ 8 files changed, 223 insertions(+) create mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplateContent.kt create mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplatePage.kt create mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplateScreen.kt create mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/items/LayoutItems.kt diff --git a/app-ui-catalog/build.gradle.kts b/app-ui-catalog/build.gradle.kts index 876e19f247..027bc3fcd0 100644 --- a/app-ui-catalog/build.gradle.kts +++ b/app-ui-catalog/build.gradle.kts @@ -1,6 +1,7 @@ plugins { id(ThunderbirdPlugins.App.androidCompose) alias(libs.plugins.kotlin.serialization) + alias(libs.plugins.kotlin.parcelize) } android { diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContent.kt index c95554dd97..e189c61178 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContent.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContent.kt @@ -12,6 +12,7 @@ import net.thunderbird.ui.catalog.ui.common.drawer.DrawerContent import net.thunderbird.ui.catalog.ui.navigation.CatalogNavHost import net.thunderbird.ui.catalog.ui.navigation.CatalogRoute +@Suppress("LongMethod") @Composable fun CatalogContent( state: State, @@ -53,6 +54,14 @@ fun CatalogContent( .build(), ) }, + onNavigateToTemplates = { + navController.navigate( + route = CatalogRoute.Template, + navOptions = NavOptions.Builder() + .setLaunchSingleTop(true) + .build(), + ) + }, ) }, ) { openDrawer -> diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/drawer/DrawerContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/drawer/DrawerContent.kt index a8c56599d5..be51c97a4c 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/drawer/DrawerContent.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/drawer/DrawerContent.kt @@ -25,6 +25,7 @@ fun DrawerContent( onNavigateToAtoms: () -> Unit, onNavigateToMolecules: () -> Unit, onNavigateToOrganisms: () -> Unit, + onNavigateToTemplates: () -> Unit, modifier: Modifier = Modifier, ) { ModalDrawerSheet( @@ -57,6 +58,14 @@ fun DrawerContent( onNavigateToOrganisms() }, ) + NavigationDrawerItem( + label = "Templates", + selected = false, + onClick = { + closeDrawer() + onNavigateToTemplates() + }, + ) NavigationDrawerDivider() diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/DefaultCatalogNavigation.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/DefaultCatalogNavigation.kt index 0206e35e83..1bd66b2816 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/DefaultCatalogNavigation.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/DefaultCatalogNavigation.kt @@ -5,6 +5,7 @@ import app.k9mail.core.ui.compose.navigation.deepLinkComposable import net.thunderbird.ui.catalog.ui.atom.CatalogAtomScreen import net.thunderbird.ui.catalog.ui.molecule.CatalogMoleculeScreen import net.thunderbird.ui.catalog.ui.organism.CatalogOrganismScreen +import net.thunderbird.ui.catalog.ui.template.CatalogTemplateScreen class DefaultCatalogNavigation : CatalogNavigation { @@ -31,6 +32,12 @@ class DefaultCatalogNavigation : CatalogNavigation { ) { backStackEntry -> CatalogOrganismScreen() } + + deepLinkComposable( + basePath = CatalogRoute.Template.BASE_PATH, + ) { backStackEntry -> + CatalogTemplateScreen() + } } } } diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplateContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplateContent.kt new file mode 100644 index 0000000000..43c0a61526 --- /dev/null +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplateContent.kt @@ -0,0 +1,27 @@ +package net.thunderbird.ui.catalog.ui.template + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import kotlinx.collections.immutable.ImmutableList +import net.thunderbird.ui.catalog.ui.common.PagedContent +import net.thunderbird.ui.catalog.ui.template.CatalogTemplatePage.LAYOUT +import net.thunderbird.ui.catalog.ui.template.items.layoutItems + +@Composable +fun CatalogTemplateContent( + pages: ImmutableList, + initialPage: CatalogTemplatePage, + modifier: Modifier = Modifier, +) { + PagedContent( + pages = pages, + initialPage = initialPage, + modifier = modifier, + onRenderPage = { + when (it) { + LAYOUT -> layoutItems() + } + }, + onRenderFullScreenPage = {}, + ) +} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplatePage.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplatePage.kt new file mode 100644 index 0000000000..a65870d629 --- /dev/null +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplatePage.kt @@ -0,0 +1,20 @@ +package net.thunderbird.ui.catalog.ui.template + +import kotlinx.collections.immutable.toImmutableList +import net.thunderbird.ui.catalog.ui.CatalogPage + +enum class CatalogTemplatePage( + override val displayName: String, + override val isFullScreen: Boolean = false, +) : CatalogPage { + LAYOUT("Layouts"), + ; + + override fun toString(): String { + return displayName + } + + companion object { + fun all() = entries.toImmutableList() + } +} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplateScreen.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplateScreen.kt new file mode 100644 index 0000000000..ff7255e83b --- /dev/null +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplateScreen.kt @@ -0,0 +1,15 @@ +package net.thunderbird.ui.catalog.ui.template + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier + +@Composable +fun CatalogTemplateScreen( + modifier: Modifier = Modifier, +) { + CatalogTemplateContent( + pages = CatalogTemplatePage.Companion.all(), + initialPage = CatalogTemplatePage.LAYOUT, + modifier = modifier, + ) +} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/items/LayoutItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/items/LayoutItems.kt new file mode 100644 index 0000000000..b0688f71d2 --- /dev/null +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/items/LayoutItems.kt @@ -0,0 +1,135 @@ +package net.thunderbird.ui.catalog.ui.template.items + +import android.os.Parcelable +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.grid.LazyGridScope +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import app.k9mail.core.ui.compose.designsystem.atom.Surface +import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyLarge +import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleMedium +import app.k9mail.core.ui.compose.designsystem.template.ListDetailPane +import app.k9mail.core.ui.compose.designsystem.template.rememberListDetailNavigationController +import app.k9mail.core.ui.compose.theme2.MainTheme +import kotlinx.parcelize.Parcelize +import net.thunderbird.ui.catalog.ui.common.list.defaultItem +import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem + +fun LazyGridScope.layoutItems() { + sectionHeaderItem(text = "ListDetailPane") + defaultItem { + ListDetailPaneItem() + } +} + +@Composable +private fun ListDetailPaneItem() { + val navigationController = rememberListDetailNavigationController() + + Column( + modifier = Modifier + .fillMaxWidth() + .height(MainTheme.sizes.huger) + .padding(MainTheme.spacings.double), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + ListDetailPane( + navigationController = navigationController, + listPane = { + Surface( + color = MainTheme.colors.primaryContainer, + ) { + Column( + verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.double), + ) { + TextTitleMedium("List pane") + LazyColumn( + verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.default), + ) { + itemsIndexed(createItems()) { index, item -> + ListItem( + item = item, + onClick = { + navigationController.value.navigateToDetail(item) + }, + ) + } + } + } + } + }, + detailPane = { item -> + Surface( + color = MainTheme.colors.secondaryContainer, + ) { + ListDetail( + item = item, + onClick = { navigationController.value.navigateBack() }, + ) + } + }, + ) + } +} + +@Composable +private fun ListItem( + item: ListItem, + onClick: () -> Unit, +) { + Column( + modifier = Modifier.clickable(onClick = onClick) + .fillMaxWidth() + .padding(MainTheme.spacings.default), + ) { + TextBodyLarge(item.title) + } +} + +@Composable +private fun ListDetail( + item: ListItem, + onClick: () -> Unit, +) { + Column( + modifier = Modifier.clickable(onClick = onClick) + .fillMaxWidth() + .padding(MainTheme.spacings.default), + ) { + TextTitleMedium("Detail pane") + Spacer(modifier = Modifier.height(MainTheme.spacings.default)) + TextBodyLarge(item.title) + } +} + +@Parcelize +internal data class ListItem( + val id: String, + val title: String, +) : Parcelable + +private fun createItems(): List { + return listOf( + ListItem( + id = "1", + title = "Item 1", + ), + ListItem( + id = "2", + title = "Item 2", + ), + ListItem( + id = "3", + title = "Item 3", + ), + ) +} -- GitLab From dc602cb414ce558e5e28ac26e51c7af656dcde56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 20 Mar 2025 19:08:06 +0100 Subject: [PATCH 135/262] Change the catalog menu header to primary color --- .../designsystem/organism/drawer/NavigationDrawerHeadline.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/drawer/NavigationDrawerHeadline.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/drawer/NavigationDrawerHeadline.kt index b6fa2892bd..d8ab671a93 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/drawer/NavigationDrawerHeadline.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/drawer/NavigationDrawerHeadline.kt @@ -17,6 +17,7 @@ fun NavigationDrawerHeadline( ) { TextTitleSmall( text = title, + color = MainTheme.colors.primary, modifier = Modifier .padding(NavigationDrawerItemDefaults.ItemPadding) .padding( -- GitLab From 829e0512f76ae1aa7e0cf9bb4bc68f84360c830a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Fri, 21 Mar 2025 16:30:18 +0100 Subject: [PATCH 136/262] Add AltertDialog to design system --- .../organism/AlertDialogPreview.kt | 80 +++++++++++++ .../designsystem/organism/AlertDialog.kt | 82 +++++++++++++ .../organism/AlertDialogKtTest.kt | 113 ++++++++++++++++++ 3 files changed, 275 insertions(+) create mode 100644 core/ui/compose/designsystem/src/debug/kotlin/app/k9mail/core/ui/compose/designsystem/organism/AlertDialogPreview.kt create mode 100644 core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/AlertDialog.kt create mode 100644 core/ui/compose/designsystem/src/test/kotlin/app/k9mail/core/ui/compose/designsystem/organism/AlertDialogKtTest.kt diff --git a/core/ui/compose/designsystem/src/debug/kotlin/app/k9mail/core/ui/compose/designsystem/organism/AlertDialogPreview.kt b/core/ui/compose/designsystem/src/debug/kotlin/app/k9mail/core/ui/compose/designsystem/organism/AlertDialogPreview.kt new file mode 100644 index 0000000000..a87e471c11 --- /dev/null +++ b/core/ui/compose/designsystem/src/debug/kotlin/app/k9mail/core/ui/compose/designsystem/organism/AlertDialogPreview.kt @@ -0,0 +1,80 @@ +package app.k9mail.core.ui.compose.designsystem.organism + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import app.k9mail.core.ui.compose.designsystem.PreviewWithTheme +import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons +import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyMedium +import app.k9mail.core.ui.compose.theme2.MainTheme + +@Composable +@Preview(showBackground = true) +internal fun AlertDialogPreview() { + PreviewWithTheme { + AlertDialog( + title = "Title", + text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + + "Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", + confirmText = "Accept", + onConfirmClick = {}, + onDismissRequest = {}, + ) + } +} + +@Composable +@Preview(showBackground = true) +internal fun AlertDialogWithIconPreview() { + PreviewWithTheme { + AlertDialog( + icon = Icons.Outlined.Info, + title = "Title", + text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + + "Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", + confirmText = "Accept", + onConfirmClick = {}, + onDismissRequest = {}, + ) + } +} + +@Composable +@Preview(showBackground = true) +internal fun AlertDialogWithCancelPreview() { + PreviewWithTheme { + AlertDialog( + icon = Icons.Outlined.Info, + title = "Title", + text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + + "Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", + confirmText = "Accept", + dismissText = "Cancel", + onConfirmClick = {}, + onDismissRequest = {}, + ) + } +} + +@Composable +@Preview(showBackground = true) +internal fun AlertDialogWithCustomContentPreview() { + PreviewWithTheme { + AlertDialog( + icon = Icons.Outlined.Info, + title = "Title", + confirmText = "Accept", + dismissText = "Cancel", + onConfirmClick = {}, + onDismissRequest = {}, + ) { + Column( + verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.double), + ) { + TextBodyMedium("Lorem ipsum dolor sit amet, consectetur adipiscing elit.") + TextBodyMedium("Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.") + } + } + } +} diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/AlertDialog.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/AlertDialog.kt new file mode 100644 index 0000000000..1147d3703c --- /dev/null +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/AlertDialog.kt @@ -0,0 +1,82 @@ +package app.k9mail.core.ui.compose.designsystem.organism + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.text.style.TextAlign +import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonText +import app.k9mail.core.ui.compose.designsystem.atom.icon.Icon +import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyMedium +import app.k9mail.core.ui.compose.designsystem.atom.text.TextHeadlineSmall +import androidx.compose.material3.AlertDialog as MaterialAlertDialog + +@Composable +fun AlertDialog( + title: String, + text: String, + confirmText: String, + onConfirmClick: () -> Unit, + onDismissRequest: () -> Unit, + modifier: Modifier = Modifier, + icon: ImageVector? = null, + dismissText: String? = null, + onDismissClick: () -> Unit = {}, +) { + AlertDialog( + title = title, + icon = icon, + confirmText = confirmText, + onConfirmClick = onConfirmClick, + onDismissRequest = onDismissRequest, + modifier = modifier, + dismissText = dismissText, + onDismissClick = onDismissClick, + ) { + TextBodyMedium(text = text) + } +} + +@Composable +fun AlertDialog( + title: String, + confirmText: String, + onConfirmClick: () -> Unit, + onDismissRequest: () -> Unit, + modifier: Modifier = Modifier, + icon: ImageVector? = null, + dismissText: String? = null, + onDismissClick: () -> Unit = {}, + content: @Composable () -> Unit, +) { + MaterialAlertDialog( + title = { + TextHeadlineSmall( + text = title, + textAlign = if (icon == null) TextAlign.Start else TextAlign.Center, + ) + }, + icon = icon?.let { + { + Icon(imageVector = it) + } + }, + text = { content() }, + confirmButton = { + ButtonText( + text = confirmText, + onClick = onConfirmClick, + ) + }, + dismissButton = dismissText?.let { + { + ButtonText( + text = it, + onClick = onDismissClick, + ) + } + }, + onDismissRequest = onDismissRequest, + modifier = modifier, + ) +} + diff --git a/core/ui/compose/designsystem/src/test/kotlin/app/k9mail/core/ui/compose/designsystem/organism/AlertDialogKtTest.kt b/core/ui/compose/designsystem/src/test/kotlin/app/k9mail/core/ui/compose/designsystem/organism/AlertDialogKtTest.kt new file mode 100644 index 0000000000..0b208dcb91 --- /dev/null +++ b/core/ui/compose/designsystem/src/test/kotlin/app/k9mail/core/ui/compose/designsystem/organism/AlertDialogKtTest.kt @@ -0,0 +1,113 @@ +package app.k9mail.core.ui.compose.designsystem.organism + +import androidx.compose.foundation.layout.Column +import androidx.compose.ui.test.performClick +import androidx.test.espresso.Espresso +import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleMedium +import app.k9mail.core.ui.compose.testing.ComposeTest +import app.k9mail.core.ui.compose.testing.onNodeWithText +import app.k9mail.core.ui.compose.testing.onNodeWithTextIgnoreCase +import app.k9mail.core.ui.compose.testing.setContentWithTheme +import assertk.assertThat +import assertk.assertions.isTrue +import kotlin.test.Test + +class AlertDialogKtTest : ComposeTest() { + + @Test + fun `should display title, text and confirm button`() = runComposeTest { + setContentWithTheme { + AlertDialog( + title = "Title", + text = "Text", + confirmText = "Confirm", + onConfirmClick = {}, + onDismissRequest = {}, + ) + } + + onNodeWithText("Title").assertExists() + onNodeWithText("Text").assertExists() + onNodeWithTextIgnoreCase(text = "Confirm").assertExists() + } + + @Test + fun `should call onConfirmClick when confirm button is clicked`() = runComposeTest { + var clicked = false + setContentWithTheme { + AlertDialog( + title = "Title", + text = "Text", + confirmText = "Confirm", + onConfirmClick = { clicked = true }, + onDismissRequest = {}, + ) + } + + onNodeWithTextIgnoreCase(text = "Confirm").performClick() + + assertThat(clicked).isTrue() + } + + @Test + fun `should display dismiss button and call onDismissClick when clicked`() = runComposeTest { + var clicked = false + setContentWithTheme { + AlertDialog( + title = "Title", + text = "Text", + confirmText = "Confirm", + onConfirmClick = {}, + onDismissClick = { + clicked = true + }, + onDismissRequest = {}, + dismissText = "Dismiss", + ) + } + + onNodeWithTextIgnoreCase(text = "Dismiss").assertExists() + onNodeWithTextIgnoreCase(text = "Dismiss").performClick() + + assertThat(clicked).isTrue() + } + + @Test + fun `should call onDismissRequest when dialog is dismissed`() = runComposeTest { + var dismissed = false + setContentWithTheme { + Column { + TextTitleMedium("Other") + AlertDialog( + title = "Title", + text = "Text", + confirmText = "Confirm", + onConfirmClick = {}, + onDismissRequest = { dismissed = true }, + ) + } + } + + Espresso.pressBack() + + assertThat(dismissed).isTrue() + } + + @Test + fun `should contain custom content`() = runComposeTest { + setContentWithTheme { + AlertDialog( + title = "Title", + confirmText = "Confirm", + onConfirmClick = {}, + onDismissRequest = {}, + ) { + Column { + TextTitleMedium("Custom") + } + } + } + + onNodeWithText("Custom").assertExists() + } +} -- GitLab From 2c77d848c72366e583f622d7846bf71cc560d838 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Fri, 21 Mar 2025 16:59:11 +0100 Subject: [PATCH 137/262] Add AlertDialog to catalog app --- .../ui/organism/CatalogMoleculeContent.kt | 3 + .../ui/organism/CatalogOrganismPage.kt | 1 + .../catalog/ui/organism/items/DialogItems.kt | 103 ++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/items/DialogItems.kt diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeContent.kt index aa120a29ef..d6f558e4fd 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeContent.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeContent.kt @@ -5,7 +5,9 @@ import androidx.compose.ui.Modifier import kotlinx.collections.immutable.ImmutableList import net.thunderbird.ui.catalog.ui.common.PagedContent import net.thunderbird.ui.catalog.ui.organism.CatalogOrganismPage.APP_BAR +import net.thunderbird.ui.catalog.ui.organism.CatalogOrganismPage.DIALOG import net.thunderbird.ui.catalog.ui.organism.items.appBarItems +import net.thunderbird.ui.catalog.ui.organism.items.dialogItems @Composable fun CatalogOrganismContent( @@ -20,6 +22,7 @@ fun CatalogOrganismContent( onRenderPage = { when (it) { APP_BAR -> appBarItems() + DIALOG -> dialogItems() } }, onRenderFullScreenPage = {}, diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismPage.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismPage.kt index b74fcfcc2a..f79f70a548 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismPage.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismPage.kt @@ -8,6 +8,7 @@ enum class CatalogOrganismPage( override val isFullScreen: Boolean = false, ) : CatalogPage { APP_BAR("App Bars"), + DIALOG("Dialogs"), ; override fun toString(): String { diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/items/DialogItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/items/DialogItems.kt new file mode 100644 index 0000000000..6845f6f1ca --- /dev/null +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/items/DialogItems.kt @@ -0,0 +1,103 @@ +package net.thunderbird.ui.catalog.ui.organism.items + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.grid.LazyGridScope +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.AccountCircle +import androidx.compose.material.icons.outlined.Info +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonFilled +import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyLarge +import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyMedium +import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodySmall +import app.k9mail.core.ui.compose.designsystem.organism.AlertDialog +import app.k9mail.core.ui.compose.theme2.MainTheme +import net.thunderbird.ui.catalog.ui.common.list.defaultItem +import net.thunderbird.ui.catalog.ui.common.list.defaultItemPadding +import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.common.list.sectionSubtitleItem + +fun LazyGridScope.dialogItems() { + sectionHeaderItem("Alert dialogs") + sectionSubtitleItem("Simple dialog") + dialogItem( + title = "Simple dialog", + text = "This is a simple dialog", + ) + sectionSubtitleItem("Dialog with icon") + dialogItem( + icon = Icons.Outlined.Info, + title = "Dialog with icon", + text = "This is a dialog with icon", + ) + sectionSubtitleItem("Dialog with cancel") + dialogItem( + icon = Icons.Outlined.AccountCircle, + title = "Dialog with cancel", + text = "This is a dialog with cancel", + hasCancel = true, + ) + sectionSubtitleItem("Dialog with custom content") + dialogItem( + title = "Dialog with custom content", + text = "This is a dialog with custom content", + ) { + Column( + verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.default), + ) { + TextBodyLarge("Large body") + TextBodyMedium("Medium body") + TextBodySmall("Small body") + } + } +} + +private fun LazyGridScope.dialogItem( + title: String, + text: String, + icon: ImageVector? = null, + hasCancel: Boolean = false, + content: @Composable (() -> Unit)? = null, +) = defaultItem { + var showDialog by remember { mutableStateOf(false) } + + ButtonFilled( + text = "Show dialog", + onClick = { showDialog = true }, + modifier = Modifier.padding(defaultItemPadding()), + ) + + if (showDialog) { + if (content != null) { + AlertDialog( + title = title, + confirmText = "Accept", + onConfirmClick = { showDialog = false }, + dismissText = if (hasCancel) "Cancel" else null, + onDismissClick = { showDialog = false }, + onDismissRequest = { showDialog = false }, + ) { + content() + } + } else { + AlertDialog( + icon = icon, + title = title, + text = text, + confirmText = "Accept", + onConfirmClick = { showDialog = false }, + dismissText = if (hasCancel) "Cancel" else null, + onDismissClick = { showDialog = false }, + onDismissRequest = { showDialog = false }, + ) + } + } +} -- GitLab From 732ee35a0519857a475bded7acbdf839d5bb0da6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Fri, 21 Mar 2025 17:32:01 +0100 Subject: [PATCH 138/262] Fix issue that current page is forgotten when changing the theme or light to dark mode --- .../kotlin/net/thunderbird/ui/catalog/ui/CatalogContent.kt | 5 ++--- .../kotlin/net/thunderbird/ui/catalog/ui/CatalogScreen.kt | 3 +++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContent.kt index e189c61178..a5515ec210 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContent.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogContent.kt @@ -2,8 +2,8 @@ package net.thunderbird.ui.catalog.ui import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.navigation.NavHostController import androidx.navigation.NavOptions -import androidx.navigation.compose.rememberNavController import app.k9mail.core.ui.compose.designsystem.organism.drawer.ModalNavigationDrawer import app.k9mail.core.ui.compose.designsystem.template.Scaffold import net.thunderbird.ui.catalog.ui.CatalogContract.State @@ -15,13 +15,12 @@ import net.thunderbird.ui.catalog.ui.navigation.CatalogRoute @Suppress("LongMethod") @Composable fun CatalogContent( + navController: NavHostController, state: State, onThemeChanged: () -> Unit, onThemeVariantChanged: () -> Unit, modifier: Modifier = Modifier, ) { - val navController = rememberNavController() - ModalNavigationDrawer( drawerContent = { closeDrawer -> DrawerContent( diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogScreen.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogScreen.kt index 2a6b02a675..9ba792bd4c 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogScreen.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogScreen.kt @@ -4,6 +4,7 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.safeDrawingPadding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.navigation.compose.rememberNavController import app.k9mail.core.ui.compose.common.mvi.observe import app.k9mail.core.ui.compose.designsystem.atom.Surface import net.thunderbird.ui.catalog.ui.CatalogContract.Event.OnThemeChanged @@ -18,6 +19,7 @@ fun CatalogScreen( viewModel: ViewModel = koinViewModel(), ) { val (state, dispatch) = viewModel.observe(handleEffect = {}) + val navController = rememberNavController() ThemeSwitch( theme = state.value.theme, @@ -30,6 +32,7 @@ fun CatalogScreen( .then(modifier), ) { CatalogContent( + navController = navController, state = state.value, onThemeChanged = { dispatch(OnThemeChanged) }, onThemeVariantChanged = { dispatch(OnThemeVariantChanged) }, -- GitLab From 2fc843530dbb34388d038e0d4230c74799bbbb3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Fri, 21 Mar 2025 17:56:03 +0100 Subject: [PATCH 139/262] Fix selected tab forgotten when theme and light/dark mode changes --- .../atom/CatalogAtomContentPreview.kt | 3 +- .../atom/view/ColorContentPreview.kt | 2 +- .../ui/catalog/di/CatalogUiModule.kt | 2 + .../thunderbird/ui/catalog/ui/CatalogPage.kt | 6 --- .../ui/catalog/ui/atom/CatalogAtomContent.kt | 45 ----------------- .../ui/catalog/ui/atom/CatalogAtomScreen.kt | 15 ------ .../ui/molecule/CatalogMoleculeScreen.kt | 15 ------ .../ui/navigation/DefaultCatalogNavigation.kt | 8 ++-- .../ui/organism/CatalogOrganismScreen.kt | 15 ------ .../ui/catalog/ui/page/CatalogPageContract.kt | 24 ++++++++++ .../catalog/ui/page/CatalogPageViewModel.kt | 23 +++++++++ .../ui/page/atom/CatalogAtomContent.kt | 48 +++++++++++++++++++ .../ui/{ => page}/atom/CatalogAtomPage.kt | 4 +- .../catalog/ui/page/atom/CatalogAtomScreen.kt | 23 +++++++++ .../ui/{ => page}/atom/items/ButtonItems.kt | 8 ++-- .../ui/{ => page}/atom/items/ColorItems.kt | 8 ++-- .../ui/{ => page}/atom/items/IconItems.kt | 10 ++-- .../ui/{ => page}/atom/items/ImageItems.kt | 12 ++--- .../atom/items/SelectionControlItems.kt | 8 ++-- .../{ => page}/atom/items/TextFieldItems.kt | 12 ++--- .../{ => page}/atom/items/TypographyItems.kt | 8 ++-- .../ui/{ => page}/atom/view/ColorContent.kt | 4 +- .../ui/{ => page}/common/PagedContent.kt | 16 +++++-- .../common/helper/WithRememberedState.kt | 2 +- .../ui/{ => page}/common/list/DefaultItem.kt | 2 +- .../common/list/DefaultItemPadding.kt | 2 +- .../ui/{ => page}/common/list/FullSpanItem.kt | 2 +- .../common/list/ItemOutlinedView.kt | 2 +- .../common/list/SectionHeaderItem.kt | 2 +- .../{ => page}/common/list/SectionInfoItem.kt | 2 +- .../common/list/SectionSubtitleItem.kt | 2 +- .../ui/{ => page}/common/list/WideItem.kt | 2 +- .../molecule/CatalogMoleculeContent.kt | 19 ++++---- .../molecule/CatalogMoleculePage.kt | 4 +- .../ui/page/molecule/CatalogMoleculeScreen.kt | 23 +++++++++ .../{ => page}/molecule/items/InputItems.kt | 12 ++--- .../molecule/items/PullToRefreshItem.kt | 2 +- .../{ => page}/molecule/items/StateItems.kt | 12 ++--- .../organism/CatalogMoleculeContent.kt | 15 +++--- .../organism/CatalogOrganismPage.kt | 4 +- .../ui/page/organism/CatalogOrganismScreen.kt | 23 +++++++++ .../{ => page}/organism/items/AppBarItems.kt | 10 ++-- .../{ => page}/organism/items/DialogItems.kt | 10 ++-- .../template/CatalogTemplateContent.kt | 11 +++-- .../template/CatalogTemplatePage.kt | 4 +- .../ui/page/template/CatalogTemplateScreen.kt | 23 +++++++++ .../{ => page}/template/items/LayoutItems.kt | 6 +-- .../ui/template/CatalogTemplateScreen.kt | 15 ------ .../designsystem/organism/AlertDialog.kt | 1 - 49 files changed, 313 insertions(+), 218 deletions(-) rename app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/atom/CatalogAtomContentPreview.kt (87%) rename app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/atom/view/ColorContentPreview.kt (91%) delete mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogPage.kt delete mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomContent.kt delete mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomScreen.kt delete mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt delete mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismScreen.kt create mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/CatalogPageContract.kt create mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/CatalogPageViewModel.kt create mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/CatalogAtomContent.kt rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/atom/CatalogAtomPage.kt (81%) create mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/CatalogAtomScreen.kt rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/atom/items/ButtonItems.kt (92%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/atom/items/ColorItems.kt (97%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/atom/items/IconItems.kt (92%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/atom/items/ImageItems.kt (92%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/atom/items/SelectionControlItems.kt (87%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/atom/items/TextFieldItems.kt (96%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/atom/items/TypographyItems.kt (95%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/atom/view/ColorContent.kt (92%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/common/PagedContent.kt (84%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/common/helper/WithRememberedState.kt (86%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/common/list/DefaultItem.kt (86%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/common/list/DefaultItemPadding.kt (82%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/common/list/FullSpanItem.kt (89%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/common/list/ItemOutlinedView.kt (94%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/common/list/SectionHeaderItem.kt (94%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/common/list/SectionInfoItem.kt (94%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/common/list/SectionSubtitleItem.kt (94%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/common/list/WideItem.kt (89%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/molecule/CatalogMoleculeContent.kt (55%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/molecule/CatalogMoleculePage.kt (78%) create mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/CatalogMoleculeScreen.kt rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/molecule/items/InputItems.kt (93%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/molecule/items/PullToRefreshItem.kt (96%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/molecule/items/StateItems.kt (91%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/organism/CatalogMoleculeContent.kt (52%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/organism/CatalogOrganismPage.kt (75%) create mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/organism/CatalogOrganismScreen.kt rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/organism/items/AppBarItems.kt (92%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/organism/items/DialogItems.kt (90%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/template/CatalogTemplateContent.kt (58%) rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/template/CatalogTemplatePage.kt (74%) create mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/template/CatalogTemplateScreen.kt rename app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/{ => page}/template/items/LayoutItems.kt (95%) delete mode 100644 app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplateScreen.kt diff --git a/app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomContentPreview.kt b/app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/page/atom/CatalogAtomContentPreview.kt similarity index 87% rename from app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomContentPreview.kt rename to app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/page/atom/CatalogAtomContentPreview.kt index 2373f41445..80da908136 100644 --- a/app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomContentPreview.kt +++ b/app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/page/atom/CatalogAtomContentPreview.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.atom +package net.thunderbird.ui.catalog.ui.page.atom import androidx.compose.runtime.Composable import app.k9mail.core.ui.compose.common.annotation.PreviewDevicesWithBackground @@ -12,6 +12,7 @@ internal fun CatalogContentPreview() { CatalogAtomContent( pages = persistentListOf(CatalogAtomPage.TYPOGRAPHY, CatalogAtomPage.COLOR), initialPage = CatalogAtomPage.TYPOGRAPHY, + onEvent = {}, ) } } diff --git a/app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/atom/view/ColorContentPreview.kt b/app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/page/atom/view/ColorContentPreview.kt similarity index 91% rename from app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/atom/view/ColorContentPreview.kt rename to app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/page/atom/view/ColorContentPreview.kt index 83d1eb39f0..ac4a6a196c 100644 --- a/app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/atom/view/ColorContentPreview.kt +++ b/app-ui-catalog/src/debug/kotlin/net/thunderbird/ui/catalog/ui/page/atom/view/ColorContentPreview.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.atom.view +package net.thunderbird.ui.catalog.ui.page.atom.view import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/di/CatalogUiModule.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/di/CatalogUiModule.kt index b9c948530c..2d7dd6714b 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/di/CatalogUiModule.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/di/CatalogUiModule.kt @@ -1,10 +1,12 @@ package net.thunderbird.ui.catalog.di import net.thunderbird.ui.catalog.ui.CatalogViewModel +import net.thunderbird.ui.catalog.ui.page.CatalogPageViewModel import org.koin.androidx.viewmodel.dsl.viewModel import org.koin.core.module.Module import org.koin.dsl.module val catalogUiModule: Module = module { viewModel { CatalogViewModel() } + viewModel { CatalogPageViewModel() } } diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogPage.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogPage.kt deleted file mode 100644 index 616316b4f6..0000000000 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/CatalogPage.kt +++ /dev/null @@ -1,6 +0,0 @@ -package net.thunderbird.ui.catalog.ui - -interface CatalogPage { - val displayName: String - val isFullScreen: Boolean -} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomContent.kt deleted file mode 100644 index a749ed629d..0000000000 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomContent.kt +++ /dev/null @@ -1,45 +0,0 @@ -package net.thunderbird.ui.catalog.ui.atom - -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import kotlinx.collections.immutable.ImmutableList -import net.thunderbird.ui.catalog.ui.atom.CatalogAtomPage.BUTTON -import net.thunderbird.ui.catalog.ui.atom.CatalogAtomPage.COLOR -import net.thunderbird.ui.catalog.ui.atom.CatalogAtomPage.ICON -import net.thunderbird.ui.catalog.ui.atom.CatalogAtomPage.IMAGE -import net.thunderbird.ui.catalog.ui.atom.CatalogAtomPage.SELECTION_CONTROL -import net.thunderbird.ui.catalog.ui.atom.CatalogAtomPage.TEXT_FIELD -import net.thunderbird.ui.catalog.ui.atom.CatalogAtomPage.TYPOGRAPHY -import net.thunderbird.ui.catalog.ui.atom.items.buttonItems -import net.thunderbird.ui.catalog.ui.atom.items.colorItems -import net.thunderbird.ui.catalog.ui.atom.items.iconItems -import net.thunderbird.ui.catalog.ui.atom.items.imageItems -import net.thunderbird.ui.catalog.ui.atom.items.selectionControlItems -import net.thunderbird.ui.catalog.ui.atom.items.textFieldItems -import net.thunderbird.ui.catalog.ui.atom.items.typographyItems -import net.thunderbird.ui.catalog.ui.common.PagedContent - -@Composable -fun CatalogAtomContent( - pages: ImmutableList, - initialPage: CatalogAtomPage, - modifier: Modifier = Modifier, -) { - PagedContent( - pages = pages, - initialPage = initialPage, - modifier = modifier, - onRenderPage = { - when (it) { - TYPOGRAPHY -> typographyItems() - COLOR -> colorItems() - BUTTON -> buttonItems() - SELECTION_CONTROL -> selectionControlItems() - TEXT_FIELD -> textFieldItems() - ICON -> iconItems() - IMAGE -> imageItems() - } - }, - onRenderFullScreenPage = {}, - ) -} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomScreen.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomScreen.kt deleted file mode 100644 index 34386c4c67..0000000000 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomScreen.kt +++ /dev/null @@ -1,15 +0,0 @@ -package net.thunderbird.ui.catalog.ui.atom - -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier - -@Composable -fun CatalogAtomScreen( - modifier: Modifier = Modifier, -) { - CatalogAtomContent( - pages = CatalogAtomPage.all(), - initialPage = CatalogAtomPage.TYPOGRAPHY, - modifier = modifier, - ) -} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt deleted file mode 100644 index 4e1bd1417c..0000000000 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeScreen.kt +++ /dev/null @@ -1,15 +0,0 @@ -package net.thunderbird.ui.catalog.ui.molecule - -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier - -@Composable -fun CatalogMoleculeScreen( - modifier: Modifier = Modifier, -) { - CatalogMoleculeContent( - pages = CatalogMoleculePage.all(), - initialPage = CatalogMoleculePage.INPUT, - modifier = modifier, - ) -} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/DefaultCatalogNavigation.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/DefaultCatalogNavigation.kt index 1bd66b2816..5d51aaa529 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/DefaultCatalogNavigation.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/navigation/DefaultCatalogNavigation.kt @@ -2,10 +2,10 @@ package net.thunderbird.ui.catalog.ui.navigation import androidx.navigation.NavGraphBuilder import app.k9mail.core.ui.compose.navigation.deepLinkComposable -import net.thunderbird.ui.catalog.ui.atom.CatalogAtomScreen -import net.thunderbird.ui.catalog.ui.molecule.CatalogMoleculeScreen -import net.thunderbird.ui.catalog.ui.organism.CatalogOrganismScreen -import net.thunderbird.ui.catalog.ui.template.CatalogTemplateScreen +import net.thunderbird.ui.catalog.ui.page.atom.CatalogAtomScreen +import net.thunderbird.ui.catalog.ui.page.molecule.CatalogMoleculeScreen +import net.thunderbird.ui.catalog.ui.page.organism.CatalogOrganismScreen +import net.thunderbird.ui.catalog.ui.page.template.CatalogTemplateScreen class DefaultCatalogNavigation : CatalogNavigation { diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismScreen.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismScreen.kt deleted file mode 100644 index 7620f0f9c5..0000000000 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismScreen.kt +++ /dev/null @@ -1,15 +0,0 @@ -package net.thunderbird.ui.catalog.ui.organism - -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier - -@Composable -fun CatalogOrganismScreen( - modifier: Modifier = Modifier, -) { - CatalogOrganismContent( - pages = CatalogOrganismPage.all(), - initialPage = CatalogOrganismPage.APP_BAR, - modifier = modifier, - ) -} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/CatalogPageContract.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/CatalogPageContract.kt new file mode 100644 index 0000000000..829cd297f9 --- /dev/null +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/CatalogPageContract.kt @@ -0,0 +1,24 @@ +package net.thunderbird.ui.catalog.ui.page + +import app.k9mail.core.ui.compose.common.mvi.UnidirectionalViewModel +import net.thunderbird.ui.catalog.ui.page.atom.CatalogAtomPage + +interface CatalogPageContract { + + interface CatalogPage { + val displayName: String + val isFullScreen: Boolean + } + + interface ViewModel : UnidirectionalViewModel + + data class State( + val page: CatalogPage = CatalogAtomPage.TYPOGRAPHY, + ) + + sealed interface Event { + data class OnPageChanged( + val page: CatalogPage, + ) : Event + } +} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/CatalogPageViewModel.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/CatalogPageViewModel.kt new file mode 100644 index 0000000000..2682de08f7 --- /dev/null +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/CatalogPageViewModel.kt @@ -0,0 +1,23 @@ +package net.thunderbird.ui.catalog.ui.page + +import app.k9mail.core.ui.compose.common.mvi.BaseViewModel +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract.Event +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract.State +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract.ViewModel + +class CatalogPageViewModel( + initialState: State = State(), +) : BaseViewModel(initialState), ViewModel { + + override fun event(event: Event) { + when (event) { + is Event.OnPageChanged -> { + updateState { + it.copy( + page = event.page, + ) + } + } + } + } +} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/CatalogAtomContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/CatalogAtomContent.kt new file mode 100644 index 0000000000..e7bb95f1c8 --- /dev/null +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/CatalogAtomContent.kt @@ -0,0 +1,48 @@ +package net.thunderbird.ui.catalog.ui.page.atom + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import kotlinx.collections.immutable.ImmutableList +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract +import net.thunderbird.ui.catalog.ui.page.atom.CatalogAtomPage.BUTTON +import net.thunderbird.ui.catalog.ui.page.atom.CatalogAtomPage.COLOR +import net.thunderbird.ui.catalog.ui.page.atom.CatalogAtomPage.ICON +import net.thunderbird.ui.catalog.ui.page.atom.CatalogAtomPage.IMAGE +import net.thunderbird.ui.catalog.ui.page.atom.CatalogAtomPage.SELECTION_CONTROL +import net.thunderbird.ui.catalog.ui.page.atom.CatalogAtomPage.TEXT_FIELD +import net.thunderbird.ui.catalog.ui.page.atom.CatalogAtomPage.TYPOGRAPHY +import net.thunderbird.ui.catalog.ui.page.atom.items.buttonItems +import net.thunderbird.ui.catalog.ui.page.atom.items.colorItems +import net.thunderbird.ui.catalog.ui.page.atom.items.iconItems +import net.thunderbird.ui.catalog.ui.page.atom.items.imageItems +import net.thunderbird.ui.catalog.ui.page.atom.items.selectionControlItems +import net.thunderbird.ui.catalog.ui.page.atom.items.textFieldItems +import net.thunderbird.ui.catalog.ui.page.atom.items.typographyItems +import net.thunderbird.ui.catalog.ui.page.common.PagedContent + +@Composable +fun CatalogAtomContent( + pages: ImmutableList, + initialPage: CatalogAtomPage, + onEvent: (CatalogPageContract.Event) -> Unit, + modifier: Modifier = Modifier, +) { + PagedContent( + pages = pages, + initialPage = initialPage, + modifier = modifier, + onRenderPage = { + when (it) { + TYPOGRAPHY -> typographyItems() + COLOR -> colorItems() + BUTTON -> buttonItems() + SELECTION_CONTROL -> selectionControlItems() + TEXT_FIELD -> textFieldItems() + ICON -> iconItems() + IMAGE -> imageItems() + } + }, + onRenderFullScreenPage = {}, + onEvent = onEvent, + ) +} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomPage.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/CatalogAtomPage.kt similarity index 81% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomPage.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/CatalogAtomPage.kt index 3dea980d24..8b498359e0 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/CatalogAtomPage.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/CatalogAtomPage.kt @@ -1,7 +1,7 @@ -package net.thunderbird.ui.catalog.ui.atom +package net.thunderbird.ui.catalog.ui.page.atom import kotlinx.collections.immutable.toImmutableList -import net.thunderbird.ui.catalog.ui.CatalogPage +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract.CatalogPage enum class CatalogAtomPage( override val displayName: String, diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/CatalogAtomScreen.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/CatalogAtomScreen.kt new file mode 100644 index 0000000000..a8b6be86a7 --- /dev/null +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/CatalogAtomScreen.kt @@ -0,0 +1,23 @@ +package net.thunderbird.ui.catalog.ui.page.atom + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import app.k9mail.core.ui.compose.common.mvi.observe +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract.ViewModel +import net.thunderbird.ui.catalog.ui.page.CatalogPageViewModel +import org.koin.androidx.compose.koinViewModel + +@Composable +fun CatalogAtomScreen( + modifier: Modifier = Modifier, + viewModel: ViewModel = koinViewModel(), +) { + val (state, dispatch) = viewModel.observe { } + + CatalogAtomContent( + pages = CatalogAtomPage.all(), + initialPage = state.value.page as? CatalogAtomPage ?: CatalogAtomPage.TYPOGRAPHY, + onEvent = { dispatch(it) }, + modifier = modifier, + ) +} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ButtonItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/ButtonItems.kt similarity index 92% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ButtonItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/ButtonItems.kt index 4a96c81be6..3655970f2e 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ButtonItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/ButtonItems.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.atom.items +package net.thunderbird.ui.catalog.ui.page.atom.items import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.grid.LazyGridScope @@ -10,9 +10,9 @@ import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonIcon import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonOutlined import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonText import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons -import net.thunderbird.ui.catalog.ui.common.list.defaultItem -import net.thunderbird.ui.catalog.ui.common.list.defaultItemPadding -import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.page.common.list.defaultItem +import net.thunderbird.ui.catalog.ui.page.common.list.defaultItemPadding +import net.thunderbird.ui.catalog.ui.page.common.list.sectionHeaderItem @Suppress("LongMethod") fun LazyGridScope.buttonItems() { diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ColorItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/ColorItems.kt similarity index 97% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ColorItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/ColorItems.kt index 76440947f9..395f4eb832 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ColorItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/ColorItems.kt @@ -1,10 +1,10 @@ -package net.thunderbird.ui.catalog.ui.atom.items +package net.thunderbird.ui.catalog.ui.page.atom.items import androidx.compose.foundation.lazy.grid.LazyGridScope import app.k9mail.core.ui.compose.theme2.MainTheme -import net.thunderbird.ui.catalog.ui.atom.view.ColorContent -import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem -import net.thunderbird.ui.catalog.ui.common.list.wideItem +import net.thunderbird.ui.catalog.ui.page.atom.view.ColorContent +import net.thunderbird.ui.catalog.ui.page.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.page.common.list.wideItem @Suppress("LongMethod") fun LazyGridScope.colorItems() { diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/IconItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/IconItems.kt similarity index 92% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/IconItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/IconItems.kt index 5df3c4f8aa..172d42e30a 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/IconItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/IconItems.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.atom.items +package net.thunderbird.ui.catalog.ui.page.atom.items import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -14,10 +14,10 @@ import app.k9mail.core.ui.compose.designsystem.atom.icon.Icon import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodySmall import app.k9mail.core.ui.compose.theme2.MainTheme -import net.thunderbird.ui.catalog.ui.common.list.defaultItem -import net.thunderbird.ui.catalog.ui.common.list.defaultItemPadding -import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem -import net.thunderbird.ui.catalog.ui.common.list.sectionSubtitleItem +import net.thunderbird.ui.catalog.ui.page.common.list.defaultItem +import net.thunderbird.ui.catalog.ui.page.common.list.defaultItemPadding +import net.thunderbird.ui.catalog.ui.page.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.page.common.list.sectionSubtitleItem import androidx.compose.material3.Icon as Material3Icon import app.k9mail.core.ui.legacy.designsystem.atom.icon.Icons as LegacyIcons diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ImageItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/ImageItems.kt similarity index 92% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ImageItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/ImageItems.kt index e57135c76e..861e52d2ad 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/ImageItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/ImageItems.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.atom.items +package net.thunderbird.ui.catalog.ui.page.atom.items import androidx.compose.foundation.Image import androidx.compose.foundation.border @@ -21,11 +21,11 @@ import app.k9mail.core.ui.compose.designsystem.atom.image.FixedScaleImage import app.k9mail.core.ui.compose.designsystem.atom.image.RemoteImage import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodySmall import app.k9mail.core.ui.compose.theme2.MainTheme -import net.thunderbird.ui.catalog.ui.common.list.defaultItem -import net.thunderbird.ui.catalog.ui.common.list.defaultItemPadding -import net.thunderbird.ui.catalog.ui.common.list.fullSpanItem -import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem -import net.thunderbird.ui.catalog.ui.common.list.sectionSubtitleItem +import net.thunderbird.ui.catalog.ui.page.common.list.defaultItem +import net.thunderbird.ui.catalog.ui.page.common.list.defaultItemPadding +import net.thunderbird.ui.catalog.ui.page.common.list.fullSpanItem +import net.thunderbird.ui.catalog.ui.page.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.page.common.list.sectionSubtitleItem fun LazyGridScope.imageItems() { sectionHeaderItem(text = "Images") diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/SelectionControlItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/SelectionControlItems.kt similarity index 87% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/SelectionControlItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/SelectionControlItems.kt index da0ba97638..39d72c22d5 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/SelectionControlItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/SelectionControlItems.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.atom.items +package net.thunderbird.ui.catalog.ui.page.atom.items import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding @@ -9,9 +9,9 @@ import androidx.compose.ui.Modifier import app.k9mail.core.ui.compose.designsystem.atom.Checkbox import app.k9mail.core.ui.compose.designsystem.atom.Switch import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodySmall -import net.thunderbird.ui.catalog.ui.common.list.defaultItem -import net.thunderbird.ui.catalog.ui.common.list.defaultItemPadding -import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.page.common.list.defaultItem +import net.thunderbird.ui.catalog.ui.page.common.list.defaultItemPadding +import net.thunderbird.ui.catalog.ui.page.common.list.sectionHeaderItem fun LazyGridScope.selectionControlItems() { sectionHeaderItem(text = "Checkbox") diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/TextFieldItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/TextFieldItems.kt similarity index 96% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/TextFieldItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/TextFieldItems.kt index 76efaf87cb..f0fb4133d1 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/TextFieldItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/TextFieldItems.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.atom.items +package net.thunderbird.ui.catalog.ui.page.atom.items import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues @@ -24,11 +24,11 @@ import app.k9mail.core.ui.compose.designsystem.molecule.input.CheckboxInput import app.k9mail.core.ui.compose.theme2.MainTheme import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf -import net.thunderbird.ui.catalog.ui.common.helper.WithRememberedState -import net.thunderbird.ui.catalog.ui.common.list.defaultItemPadding -import net.thunderbird.ui.catalog.ui.common.list.fullSpanItem -import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem -import net.thunderbird.ui.catalog.ui.common.list.sectionSubtitleItem +import net.thunderbird.ui.catalog.ui.page.common.helper.WithRememberedState +import net.thunderbird.ui.catalog.ui.page.common.list.defaultItemPadding +import net.thunderbird.ui.catalog.ui.page.common.list.fullSpanItem +import net.thunderbird.ui.catalog.ui.page.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.page.common.list.sectionSubtitleItem fun LazyGridScope.textFieldItems() { sectionHeaderItem(text = "Text field - Outlined") diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/TypographyItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/TypographyItems.kt similarity index 95% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/TypographyItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/TypographyItems.kt index de6be16813..709b993347 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/items/TypographyItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/items/TypographyItems.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.atom.items +package net.thunderbird.ui.catalog.ui.page.atom.items import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.grid.LazyGridScope @@ -23,9 +23,9 @@ import app.k9mail.core.ui.compose.designsystem.atom.text.TextLabelSmall import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleLarge import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleMedium import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleSmall -import net.thunderbird.ui.catalog.ui.common.list.defaultItemPadding -import net.thunderbird.ui.catalog.ui.common.list.fullSpanItem -import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.page.common.list.defaultItemPadding +import net.thunderbird.ui.catalog.ui.page.common.list.fullSpanItem +import net.thunderbird.ui.catalog.ui.page.common.list.sectionHeaderItem fun LazyGridScope.typographyItems() { sectionHeaderItem(text = "Text styles") diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/view/ColorContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/view/ColorContent.kt similarity index 92% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/view/ColorContent.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/view/ColorContent.kt index bebd3676ce..e960f614b5 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/atom/view/ColorContent.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/atom/view/ColorContent.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.atom.view +package net.thunderbird.ui.catalog.ui.page.atom.view import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -13,7 +13,7 @@ import app.k9mail.core.ui.compose.designsystem.atom.Surface import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyLarge import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodySmall import app.k9mail.core.ui.compose.theme2.MainTheme -import net.thunderbird.ui.catalog.ui.common.list.defaultItemPadding +import net.thunderbird.ui.catalog.ui.page.common.list.defaultItemPadding @Composable internal fun ColorContent( diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/PagedContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/PagedContent.kt similarity index 84% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/PagedContent.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/PagedContent.kt index 5ae13fc896..c415b34250 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/PagedContent.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/PagedContent.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.common +package net.thunderbird.ui.catalog.ui.page.common import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -15,22 +15,25 @@ import androidx.compose.material3.ScrollableTabRow import androidx.compose.material3.Tab import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import app.k9mail.core.ui.compose.designsystem.template.ResponsiveContentWithSurface import app.k9mail.core.ui.compose.theme2.MainTheme import kotlinx.collections.immutable.ImmutableList import kotlinx.coroutines.launch -import net.thunderbird.ui.catalog.ui.CatalogPage -import net.thunderbird.ui.catalog.ui.common.list.fullSpanItem +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract.CatalogPage +import net.thunderbird.ui.catalog.ui.page.common.list.fullSpanItem @Composable fun PagedContent( pages: ImmutableList, initialPage: T, + onRenderPage: LazyGridScope.(T) -> Unit, + onEvent: (CatalogPageContract.Event) -> Unit, modifier: Modifier = Modifier, onRenderFullScreenPage: @Composable (T) -> Unit = {}, - onRenderPage: LazyGridScope.(T) -> Unit, ) { val pagerState = rememberPagerState( initialPage = pages.indexOf(initialPage), @@ -40,6 +43,10 @@ fun PagedContent( } val coroutineScope = rememberCoroutineScope() + LaunchedEffect(pagerState.settledPage) { + onEvent(CatalogPageContract.Event.OnPageChanged(pages[pagerState.settledPage])) + } + Column( modifier = modifier, ) { @@ -52,6 +59,7 @@ fun PagedContent( onClick = { coroutineScope.launch { pagerState.animateScrollToPage(index) + onEvent(CatalogPageContract.Event.OnPageChanged(pages[index])) } }, text = { Text(text = title.toString()) }, diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/helper/WithRememberedState.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/helper/WithRememberedState.kt similarity index 86% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/helper/WithRememberedState.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/helper/WithRememberedState.kt index 735db65270..40f0b68f9e 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/helper/WithRememberedState.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/helper/WithRememberedState.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.common.helper +package net.thunderbird.ui.catalog.ui.page.common.helper import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/DefaultItem.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/DefaultItem.kt similarity index 86% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/DefaultItem.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/DefaultItem.kt index ae5b4aed4c..0160a483ca 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/DefaultItem.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/DefaultItem.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.common.list +package net.thunderbird.ui.catalog.ui.page.common.list import androidx.compose.foundation.lazy.grid.LazyGridItemScope import androidx.compose.foundation.lazy.grid.LazyGridScope diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/DefaultItemPadding.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/DefaultItemPadding.kt similarity index 82% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/DefaultItemPadding.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/DefaultItemPadding.kt index c15335c19f..961bb9ab96 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/DefaultItemPadding.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/DefaultItemPadding.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.common.list +package net.thunderbird.ui.catalog.ui.page.common.list import androidx.compose.foundation.layout.PaddingValues import androidx.compose.runtime.Composable diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/FullSpanItem.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/FullSpanItem.kt similarity index 89% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/FullSpanItem.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/FullSpanItem.kt index 4dccce3b00..9c20fddc6b 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/FullSpanItem.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/FullSpanItem.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.common.list +package net.thunderbird.ui.catalog.ui.page.common.list import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyGridItemScope diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/ItemOutlinedView.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/ItemOutlinedView.kt similarity index 94% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/ItemOutlinedView.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/ItemOutlinedView.kt index bcd448b578..f3fac5490d 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/ItemOutlinedView.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/ItemOutlinedView.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.common.list +package net.thunderbird.ui.catalog.ui.page.common.list import androidx.compose.foundation.border import androidx.compose.foundation.layout.Arrangement diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionHeaderItem.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/SectionHeaderItem.kt similarity index 94% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionHeaderItem.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/SectionHeaderItem.kt index b4186ed5e9..e526063dc1 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionHeaderItem.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/SectionHeaderItem.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.common.list +package net.thunderbird.ui.catalog.ui.page.common.list import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionInfoItem.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/SectionInfoItem.kt similarity index 94% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionInfoItem.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/SectionInfoItem.kt index 556a3967bb..8197ffc6d6 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionInfoItem.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/SectionInfoItem.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.common.list +package net.thunderbird.ui.catalog.ui.page.common.list import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionSubtitleItem.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/SectionSubtitleItem.kt similarity index 94% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionSubtitleItem.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/SectionSubtitleItem.kt index d8e2834ed6..90831c08f4 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/SectionSubtitleItem.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/SectionSubtitleItem.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.common.list +package net.thunderbird.ui.catalog.ui.page.common.list import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/WideItem.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/WideItem.kt similarity index 89% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/WideItem.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/WideItem.kt index c46806f48c..a05c1d8fb7 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/common/list/WideItem.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/common/list/WideItem.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.common.list +package net.thunderbird.ui.catalog.ui.page.common.list import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyGridItemScope diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/CatalogMoleculeContent.kt similarity index 55% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeContent.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/CatalogMoleculeContent.kt index 81781f67e6..c99f0190a1 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculeContent.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/CatalogMoleculeContent.kt @@ -1,20 +1,22 @@ -package net.thunderbird.ui.catalog.ui.molecule +package net.thunderbird.ui.catalog.ui.page.molecule import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import kotlinx.collections.immutable.ImmutableList -import net.thunderbird.ui.catalog.ui.common.PagedContent -import net.thunderbird.ui.catalog.ui.molecule.CatalogMoleculePage.INPUT -import net.thunderbird.ui.catalog.ui.molecule.CatalogMoleculePage.PULL_TO_REFRESH -import net.thunderbird.ui.catalog.ui.molecule.CatalogMoleculePage.STATE -import net.thunderbird.ui.catalog.ui.molecule.items.PullToRefresh -import net.thunderbird.ui.catalog.ui.molecule.items.inputItems -import net.thunderbird.ui.catalog.ui.molecule.items.stateItems +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract +import net.thunderbird.ui.catalog.ui.page.common.PagedContent +import net.thunderbird.ui.catalog.ui.page.molecule.CatalogMoleculePage.INPUT +import net.thunderbird.ui.catalog.ui.page.molecule.CatalogMoleculePage.PULL_TO_REFRESH +import net.thunderbird.ui.catalog.ui.page.molecule.CatalogMoleculePage.STATE +import net.thunderbird.ui.catalog.ui.page.molecule.items.PullToRefresh +import net.thunderbird.ui.catalog.ui.page.molecule.items.inputItems +import net.thunderbird.ui.catalog.ui.page.molecule.items.stateItems @Composable fun CatalogMoleculeContent( pages: ImmutableList, initialPage: CatalogMoleculePage, + onEvent: (CatalogPageContract.Event) -> Unit, modifier: Modifier = Modifier, ) { PagedContent( @@ -34,5 +36,6 @@ fun CatalogMoleculeContent( else -> throw IllegalArgumentException("Unknown page: $page") } }, + onEvent = onEvent, ) } diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculePage.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/CatalogMoleculePage.kt similarity index 78% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculePage.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/CatalogMoleculePage.kt index 867a8b70b1..cb7d9b6749 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/CatalogMoleculePage.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/CatalogMoleculePage.kt @@ -1,7 +1,7 @@ -package net.thunderbird.ui.catalog.ui.molecule +package net.thunderbird.ui.catalog.ui.page.molecule import kotlinx.collections.immutable.toImmutableList -import net.thunderbird.ui.catalog.ui.CatalogPage +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract.CatalogPage enum class CatalogMoleculePage( override val displayName: String, diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/CatalogMoleculeScreen.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/CatalogMoleculeScreen.kt new file mode 100644 index 0000000000..fff70dd9ab --- /dev/null +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/CatalogMoleculeScreen.kt @@ -0,0 +1,23 @@ +package net.thunderbird.ui.catalog.ui.page.molecule + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import app.k9mail.core.ui.compose.common.mvi.observe +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract.ViewModel +import net.thunderbird.ui.catalog.ui.page.CatalogPageViewModel +import org.koin.androidx.compose.koinViewModel + +@Composable +fun CatalogMoleculeScreen( + modifier: Modifier = Modifier, + viewModel: ViewModel = koinViewModel(), +) { + val (state, dispatch) = viewModel.observe { } + + CatalogMoleculeContent( + pages = CatalogMoleculePage.all(), + initialPage = state.value.page as? CatalogMoleculePage ?: CatalogMoleculePage.INPUT, + onEvent = { dispatch(it) }, + modifier = modifier, + ) +} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/InputItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/items/InputItems.kt similarity index 93% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/InputItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/items/InputItems.kt index db010b032c..ea2e95628d 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/InputItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/items/InputItems.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.molecule.items +package net.thunderbird.ui.catalog.ui.page.molecule.items import androidx.compose.foundation.lazy.grid.LazyGridScope import app.k9mail.core.ui.compose.designsystem.molecule.input.CheckboxInput @@ -9,11 +9,11 @@ import app.k9mail.core.ui.compose.designsystem.molecule.input.SelectInput import app.k9mail.core.ui.compose.designsystem.molecule.input.SwitchInput import app.k9mail.core.ui.compose.designsystem.molecule.input.TextInput import kotlinx.collections.immutable.persistentListOf -import net.thunderbird.ui.catalog.ui.common.helper.WithRememberedState -import net.thunderbird.ui.catalog.ui.common.list.ItemOutlinedView -import net.thunderbird.ui.catalog.ui.common.list.fullSpanItem -import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem -import net.thunderbird.ui.catalog.ui.common.list.sectionSubtitleItem +import net.thunderbird.ui.catalog.ui.page.common.helper.WithRememberedState +import net.thunderbird.ui.catalog.ui.page.common.list.ItemOutlinedView +import net.thunderbird.ui.catalog.ui.page.common.list.fullSpanItem +import net.thunderbird.ui.catalog.ui.page.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.page.common.list.sectionSubtitleItem @Suppress("LongMethod") fun LazyGridScope.inputItems() { diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/PullToRefreshItem.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/items/PullToRefreshItem.kt similarity index 96% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/PullToRefreshItem.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/items/PullToRefreshItem.kt index 4a24e49d10..0b373e97fa 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/PullToRefreshItem.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/items/PullToRefreshItem.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.molecule.items +package net.thunderbird.ui.catalog.ui.page.molecule.items import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.fillMaxWidth diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/StateItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/items/StateItems.kt similarity index 91% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/StateItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/items/StateItems.kt index ae77ecf9e8..1eed8057e2 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/molecule/items/StateItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/molecule/items/StateItems.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.molecule.items +package net.thunderbird.ui.catalog.ui.page.molecule.items import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column @@ -17,11 +17,11 @@ import app.k9mail.core.ui.compose.designsystem.molecule.ContentLoadingState import app.k9mail.core.ui.compose.designsystem.molecule.ContentLoadingView import app.k9mail.core.ui.compose.designsystem.molecule.ErrorView import app.k9mail.core.ui.compose.designsystem.molecule.LoadingView -import net.thunderbird.ui.catalog.ui.common.list.ItemOutlinedView -import net.thunderbird.ui.catalog.ui.common.list.fullSpanItem -import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem -import net.thunderbird.ui.catalog.ui.common.list.sectionInfoItem -import net.thunderbird.ui.catalog.ui.common.list.sectionSubtitleItem +import net.thunderbird.ui.catalog.ui.page.common.list.ItemOutlinedView +import net.thunderbird.ui.catalog.ui.page.common.list.fullSpanItem +import net.thunderbird.ui.catalog.ui.page.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.page.common.list.sectionInfoItem +import net.thunderbird.ui.catalog.ui.page.common.list.sectionSubtitleItem @Suppress("LongMethod") fun LazyGridScope.stateItems() { diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/organism/CatalogMoleculeContent.kt similarity index 52% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeContent.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/organism/CatalogMoleculeContent.kt index d6f558e4fd..f70083a3ac 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogMoleculeContent.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/organism/CatalogMoleculeContent.kt @@ -1,18 +1,20 @@ -package net.thunderbird.ui.catalog.ui.organism +package net.thunderbird.ui.catalog.ui.page.organism import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import kotlinx.collections.immutable.ImmutableList -import net.thunderbird.ui.catalog.ui.common.PagedContent -import net.thunderbird.ui.catalog.ui.organism.CatalogOrganismPage.APP_BAR -import net.thunderbird.ui.catalog.ui.organism.CatalogOrganismPage.DIALOG -import net.thunderbird.ui.catalog.ui.organism.items.appBarItems -import net.thunderbird.ui.catalog.ui.organism.items.dialogItems +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract +import net.thunderbird.ui.catalog.ui.page.common.PagedContent +import net.thunderbird.ui.catalog.ui.page.organism.CatalogOrganismPage.APP_BAR +import net.thunderbird.ui.catalog.ui.page.organism.CatalogOrganismPage.DIALOG +import net.thunderbird.ui.catalog.ui.page.organism.items.appBarItems +import net.thunderbird.ui.catalog.ui.page.organism.items.dialogItems @Composable fun CatalogOrganismContent( pages: ImmutableList, initialPage: CatalogOrganismPage, + onEvent: (CatalogPageContract.Event) -> Unit, modifier: Modifier = Modifier, ) { PagedContent( @@ -26,5 +28,6 @@ fun CatalogOrganismContent( } }, onRenderFullScreenPage = {}, + onEvent = onEvent, ) } diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismPage.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/organism/CatalogOrganismPage.kt similarity index 75% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismPage.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/organism/CatalogOrganismPage.kt index f79f70a548..872a9e194a 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/CatalogOrganismPage.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/organism/CatalogOrganismPage.kt @@ -1,7 +1,7 @@ -package net.thunderbird.ui.catalog.ui.organism +package net.thunderbird.ui.catalog.ui.page.organism import kotlinx.collections.immutable.toImmutableList -import net.thunderbird.ui.catalog.ui.CatalogPage +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract.CatalogPage enum class CatalogOrganismPage( override val displayName: String, diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/organism/CatalogOrganismScreen.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/organism/CatalogOrganismScreen.kt new file mode 100644 index 0000000000..ca1bcbdab1 --- /dev/null +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/organism/CatalogOrganismScreen.kt @@ -0,0 +1,23 @@ +package net.thunderbird.ui.catalog.ui.page.organism + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import app.k9mail.core.ui.compose.common.mvi.observe +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract.ViewModel +import net.thunderbird.ui.catalog.ui.page.CatalogPageViewModel +import org.koin.androidx.compose.koinViewModel + +@Composable +fun CatalogOrganismScreen( + modifier: Modifier = Modifier, + viewModel: ViewModel = koinViewModel(), +) { + val (state, dispatch) = viewModel.observe { } + + CatalogOrganismContent( + pages = CatalogOrganismPage.all(), + initialPage = state.value.page as? CatalogOrganismPage ?: CatalogOrganismPage.APP_BAR, + onEvent = { dispatch(it) }, + modifier = modifier, + ) +} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/items/AppBarItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/organism/items/AppBarItems.kt similarity index 92% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/items/AppBarItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/organism/items/AppBarItems.kt index bd6dfb2c25..c30fb2b253 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/items/AppBarItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/organism/items/AppBarItems.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.organism.items +package net.thunderbird.ui.catalog.ui.page.organism.items import androidx.compose.foundation.lazy.grid.LazyGridScope import androidx.compose.runtime.Composable @@ -11,10 +11,10 @@ import app.k9mail.core.ui.compose.designsystem.organism.SubtitleTopAppBarWithMen import app.k9mail.core.ui.compose.designsystem.organism.TopAppBar import app.k9mail.core.ui.compose.designsystem.organism.TopAppBarWithBackButton import app.k9mail.core.ui.compose.designsystem.organism.TopAppBarWithMenuButton -import net.thunderbird.ui.catalog.ui.common.list.ItemOutlinedView -import net.thunderbird.ui.catalog.ui.common.list.fullSpanItem -import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem -import net.thunderbird.ui.catalog.ui.common.list.sectionSubtitleItem +import net.thunderbird.ui.catalog.ui.page.common.list.ItemOutlinedView +import net.thunderbird.ui.catalog.ui.page.common.list.fullSpanItem +import net.thunderbird.ui.catalog.ui.page.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.page.common.list.sectionSubtitleItem fun LazyGridScope.appBarItems() { topAppBarItems() diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/items/DialogItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/organism/items/DialogItems.kt similarity index 90% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/items/DialogItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/organism/items/DialogItems.kt index 6845f6f1ca..cb09851cdd 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/organism/items/DialogItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/organism/items/DialogItems.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.organism.items +package net.thunderbird.ui.catalog.ui.page.organism.items import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -20,10 +20,10 @@ import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyMedium import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodySmall import app.k9mail.core.ui.compose.designsystem.organism.AlertDialog import app.k9mail.core.ui.compose.theme2.MainTheme -import net.thunderbird.ui.catalog.ui.common.list.defaultItem -import net.thunderbird.ui.catalog.ui.common.list.defaultItemPadding -import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem -import net.thunderbird.ui.catalog.ui.common.list.sectionSubtitleItem +import net.thunderbird.ui.catalog.ui.page.common.list.defaultItem +import net.thunderbird.ui.catalog.ui.page.common.list.defaultItemPadding +import net.thunderbird.ui.catalog.ui.page.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.page.common.list.sectionSubtitleItem fun LazyGridScope.dialogItems() { sectionHeaderItem("Alert dialogs") diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplateContent.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/template/CatalogTemplateContent.kt similarity index 58% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplateContent.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/template/CatalogTemplateContent.kt index 43c0a61526..03bc0273bd 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplateContent.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/template/CatalogTemplateContent.kt @@ -1,16 +1,18 @@ -package net.thunderbird.ui.catalog.ui.template +package net.thunderbird.ui.catalog.ui.page.template import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import kotlinx.collections.immutable.ImmutableList -import net.thunderbird.ui.catalog.ui.common.PagedContent -import net.thunderbird.ui.catalog.ui.template.CatalogTemplatePage.LAYOUT -import net.thunderbird.ui.catalog.ui.template.items.layoutItems +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract +import net.thunderbird.ui.catalog.ui.page.common.PagedContent +import net.thunderbird.ui.catalog.ui.page.template.CatalogTemplatePage.LAYOUT +import net.thunderbird.ui.catalog.ui.page.template.items.layoutItems @Composable fun CatalogTemplateContent( pages: ImmutableList, initialPage: CatalogTemplatePage, + onEvent: (CatalogPageContract.Event) -> Unit, modifier: Modifier = Modifier, ) { PagedContent( @@ -23,5 +25,6 @@ fun CatalogTemplateContent( } }, onRenderFullScreenPage = {}, + onEvent = onEvent, ) } diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplatePage.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/template/CatalogTemplatePage.kt similarity index 74% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplatePage.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/template/CatalogTemplatePage.kt index a65870d629..3b0f2cd437 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplatePage.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/template/CatalogTemplatePage.kt @@ -1,7 +1,7 @@ -package net.thunderbird.ui.catalog.ui.template +package net.thunderbird.ui.catalog.ui.page.template import kotlinx.collections.immutable.toImmutableList -import net.thunderbird.ui.catalog.ui.CatalogPage +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract.CatalogPage enum class CatalogTemplatePage( override val displayName: String, diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/template/CatalogTemplateScreen.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/template/CatalogTemplateScreen.kt new file mode 100644 index 0000000000..135fffd03e --- /dev/null +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/template/CatalogTemplateScreen.kt @@ -0,0 +1,23 @@ +package net.thunderbird.ui.catalog.ui.page.template + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import app.k9mail.core.ui.compose.common.mvi.observe +import net.thunderbird.ui.catalog.ui.page.CatalogPageContract.ViewModel +import net.thunderbird.ui.catalog.ui.page.CatalogPageViewModel +import org.koin.androidx.compose.koinViewModel + +@Composable +fun CatalogTemplateScreen( + modifier: Modifier = Modifier, + viewModel: ViewModel = koinViewModel(), +) { + val (state, dispatch) = viewModel.observe { } + + CatalogTemplateContent( + pages = CatalogTemplatePage.Companion.all(), + initialPage = state.value.page as? CatalogTemplatePage ?: CatalogTemplatePage.LAYOUT, + onEvent = { dispatch(it) }, + modifier = modifier, + ) +} diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/items/LayoutItems.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/template/items/LayoutItems.kt similarity index 95% rename from app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/items/LayoutItems.kt rename to app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/template/items/LayoutItems.kt index b0688f71d2..4ac3df0440 100644 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/items/LayoutItems.kt +++ b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/page/template/items/LayoutItems.kt @@ -1,4 +1,4 @@ -package net.thunderbird.ui.catalog.ui.template.items +package net.thunderbird.ui.catalog.ui.page.template.items import android.os.Parcelable import androidx.compose.foundation.clickable @@ -21,8 +21,8 @@ import app.k9mail.core.ui.compose.designsystem.template.ListDetailPane import app.k9mail.core.ui.compose.designsystem.template.rememberListDetailNavigationController import app.k9mail.core.ui.compose.theme2.MainTheme import kotlinx.parcelize.Parcelize -import net.thunderbird.ui.catalog.ui.common.list.defaultItem -import net.thunderbird.ui.catalog.ui.common.list.sectionHeaderItem +import net.thunderbird.ui.catalog.ui.page.common.list.defaultItem +import net.thunderbird.ui.catalog.ui.page.common.list.sectionHeaderItem fun LazyGridScope.layoutItems() { sectionHeaderItem(text = "ListDetailPane") diff --git a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplateScreen.kt b/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplateScreen.kt deleted file mode 100644 index ff7255e83b..0000000000 --- a/app-ui-catalog/src/main/kotlin/net/thunderbird/ui/catalog/ui/template/CatalogTemplateScreen.kt +++ /dev/null @@ -1,15 +0,0 @@ -package net.thunderbird.ui.catalog.ui.template - -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier - -@Composable -fun CatalogTemplateScreen( - modifier: Modifier = Modifier, -) { - CatalogTemplateContent( - pages = CatalogTemplatePage.Companion.all(), - initialPage = CatalogTemplatePage.LAYOUT, - modifier = modifier, - ) -} diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/AlertDialog.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/AlertDialog.kt index 1147d3703c..a63498957b 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/AlertDialog.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/organism/AlertDialog.kt @@ -79,4 +79,3 @@ fun AlertDialog( modifier = modifier, ) } - -- GitLab From d7d1e6f149c45120c80380006a63e4969421d52d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Mon, 24 Mar 2025 12:01:54 +0100 Subject: [PATCH 140/262] Remove unused AndroidX DrawerLayout --- gradle/libs.versions.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 70cceab7bc..021f25ad60 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -28,7 +28,6 @@ androidxConstraintLayout = "2.2.1" androidxCoordinatorLayout = "1.3.0" androidxCore = "1.15.0" androidxCoreSplashscreen = "1.0.1" -androidxDrawerLayout = "1.1.1" androidxFragment = "1.8.6" androidxGlance = "1.1.1" androidxGlanceMaterial3 = "1.1.1" -- GitLab From 3c93092db1cda74f2793e462571423c8946ba78d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Mon, 24 Mar 2025 12:02:08 +0100 Subject: [PATCH 141/262] Change Java version to 21 --- .java-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.java-version b/.java-version index 03b6389f32..aabe6ec390 100644 --- a/.java-version +++ b/.java-version @@ -1 +1 @@ -17.0 +21 -- GitLab From 6fa4cdd7fc62fbc52cd7aa4435944c01c32ee866 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 20 Mar 2025 11:01:03 +0100 Subject: [PATCH 142/262] Add Preference module to :core:ui:compose module --- core/ui/compose/preference/build.gradle.kts | 15 +++++++++ .../ui/compose/preference/api/Preference.kt | 33 +++++++++++++++++++ settings.gradle.kts | 1 + 3 files changed, 49 insertions(+) create mode 100644 core/ui/compose/preference/build.gradle.kts create mode 100644 core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/api/Preference.kt diff --git a/core/ui/compose/preference/build.gradle.kts b/core/ui/compose/preference/build.gradle.kts new file mode 100644 index 0000000000..aa67f1fcc3 --- /dev/null +++ b/core/ui/compose/preference/build.gradle.kts @@ -0,0 +1,15 @@ +plugins { + id(ThunderbirdPlugins.Library.androidCompose) + alias(libs.plugins.kotlin.parcelize) +} + +android { + namespace = "net.thunderbird.core.ui.compose.preference" + resourcePrefix = "core_ui_preference_" +} + +dependencies { + implementation(projects.core.ui.compose.designsystem) + + testImplementation(projects.core.ui.compose.testing) +} diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/api/Preference.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/api/Preference.kt new file mode 100644 index 0000000000..59d459b295 --- /dev/null +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/api/Preference.kt @@ -0,0 +1,33 @@ +package net.thunderbird.core.ui.compose.preference.api + +import android.os.Parcelable +import androidx.compose.ui.graphics.vector.ImageVector +import kotlinx.parcelize.IgnoredOnParcel +import kotlinx.parcelize.Parcelize +import kotlinx.parcelize.RawValue + +/** + * A preference that can be displayed in a preference screen. + */ +sealed interface Preference : Parcelable + +/** + * A preference that holds a value of type [T]. + */ +sealed interface PreferenceSetting : Preference { + val id: String + val value: T + val requiresEditView: Boolean + + @Parcelize + data class Text( + override val id: String, + val title: String, + val description: String? = null, + val icon: @RawValue ImageVector? = null, + override val value: String, + ) : PreferenceSetting { + @IgnoredOnParcel + override val requiresEditView: Boolean = true + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index ffad0f40d0..0d10145af3 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -134,6 +134,7 @@ include( ":core:ui:compose:common", ":core:ui:compose:designsystem", ":core:ui:compose:navigation", + ":core:ui:compose:preference", ":core:ui:compose:theme2:common", ":core:ui:compose:theme2:k9mail", ":core:ui:compose:theme2:thunderbird", -- GitLab From 02c7338b8c95ed107217ee741b2b7f4ea0281b21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Mon, 24 Mar 2025 13:35:20 +0100 Subject: [PATCH 143/262] Change ComposeTest theme to thunderbird --- core/ui/compose/testing/build.gradle.kts | 2 +- .../kotlin/app/k9mail/core/ui/compose/testing/ComposeTest.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/ui/compose/testing/build.gradle.kts b/core/ui/compose/testing/build.gradle.kts index 85d950979a..1544f1d000 100644 --- a/core/ui/compose/testing/build.gradle.kts +++ b/core/ui/compose/testing/build.gradle.kts @@ -11,7 +11,7 @@ dependencies { api(libs.turbine) api(libs.assertk) - implementation(projects.core.ui.compose.theme2.k9mail) + implementation(projects.core.ui.compose.theme2.thunderbird) implementation(libs.bundles.shared.jvm.test.compose) } diff --git a/core/ui/compose/testing/src/main/kotlin/app/k9mail/core/ui/compose/testing/ComposeTest.kt b/core/ui/compose/testing/src/main/kotlin/app/k9mail/core/ui/compose/testing/ComposeTest.kt index 71f55fd57f..62849a69d9 100644 --- a/core/ui/compose/testing/src/main/kotlin/app/k9mail/core/ui/compose/testing/ComposeTest.kt +++ b/core/ui/compose/testing/src/main/kotlin/app/k9mail/core/ui/compose/testing/ComposeTest.kt @@ -14,7 +14,7 @@ import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.onRoot import androidx.test.espresso.Espresso -import app.k9mail.core.ui.compose.theme2.k9mail.K9MailTheme2 +import app.k9mail.core.ui.compose.theme2.thunderbird.ThunderbirdTheme2 import org.junit.Rule import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner @@ -42,7 +42,7 @@ fun ComposeTest.setContent(content: @Composable () -> Unit) = composeTestRule.se * Set the content of the test and wrap it in the default theme. */ fun ComposeTest.setContentWithTheme(content: @Composable () -> Unit) = composeTestRule.setContent { - K9MailTheme2 { + ThunderbirdTheme2 { content() } } -- GitLab From ff89b96a6d167fc9804a72528c04b5862abf340d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 20 Mar 2025 11:55:49 +0100 Subject: [PATCH 144/262] Add PreferenceView with dialog support --- .../preference/ui/PreferenceViewPreview.kt | 20 ++++++ .../ui/components/PreferenceTopBarPreview.kt | 29 ++++++++ .../compose/preference/ui/PreferenceView.kt | 35 ++++++++++ .../preference/ui/PreferenceViewWithDialog.kt | 67 +++++++++++++++++++ .../ui/components/PreferenceTopBar.kt | 25 +++++++ .../ui/components/dialog/PreferenceDialog.kt | 23 +++++++ .../ui/components/list/PreferenceItem.kt | 17 +++++ .../ui/components/list/PreferenceList.kt | 30 +++++++++ 8 files changed, 246 insertions(+) create mode 100644 core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewPreview.kt create mode 100644 core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/PreferenceTopBarPreview.kt create mode 100644 core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceView.kt create mode 100644 core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewWithDialog.kt create mode 100644 core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/PreferenceTopBar.kt create mode 100644 core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialog.kt create mode 100644 core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItem.kt create mode 100644 core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceList.kt diff --git a/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewPreview.kt b/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewPreview.kt new file mode 100644 index 0000000000..07befec1ae --- /dev/null +++ b/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewPreview.kt @@ -0,0 +1,20 @@ +package net.thunderbird.core.ui.compose.preference.ui + +import androidx.compose.runtime.Composable +import app.k9mail.core.ui.compose.common.annotation.PreviewDevicesWithBackground +import app.k9mail.core.ui.compose.designsystem.PreviewWithTheme +import kotlinx.collections.immutable.persistentListOf + +@Composable +@PreviewDevicesWithBackground +fun PreferenceViewPreview() { + PreviewWithTheme { + PreferenceView( + title = "Title", + subtitle = "Subtitle", + preferences = persistentListOf(), + onPreferenceChange = {}, + onBack = {}, + ) + } +} diff --git a/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/PreferenceTopBarPreview.kt b/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/PreferenceTopBarPreview.kt new file mode 100644 index 0000000000..ed0fa8de29 --- /dev/null +++ b/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/PreferenceTopBarPreview.kt @@ -0,0 +1,29 @@ +package net.thunderbird.core.ui.compose.preference.ui.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import app.k9mail.core.ui.compose.designsystem.PreviewWithThemes + +@Composable +@Preview(showBackground = true) +internal fun PreferenceTopBarPreview() { + PreviewWithThemes { + PreferenceTopBar( + title = "Title", + subtitle = null, + onBack = {}, + ) + } +} + +@Composable +@Preview(showBackground = true) +internal fun PreferenceTopBarWithSubtitlePreview() { + PreviewWithThemes { + PreferenceTopBar( + title = "Title", + subtitle = "Subtitle", + onBack = {}, + ) + } +} diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceView.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceView.kt new file mode 100644 index 0000000000..6924ab75aa --- /dev/null +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceView.kt @@ -0,0 +1,35 @@ +package net.thunderbird.core.ui.compose.preference.ui + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import kotlinx.collections.immutable.ImmutableList +import net.thunderbird.core.ui.compose.preference.api.Preference +import net.thunderbird.core.ui.compose.preference.api.PreferenceSetting + +/** + * A view that displays a list of preferences. + * + * @param title The title of the view. + * @param subtitle The subtitle of the view (optional). + * @param preferences The list of preferences to display. + * @param onPreferenceChange The callback to be invoked when a preference is changed. + * @param onBack The callback to be invoked when the back button is clicked. + * @param modifier The modifier to be applied to the view. + */ +@Composable +fun PreferenceView( + title: String, + preferences: ImmutableList, + onPreferenceChange: (PreferenceSetting<*>) -> Unit, + onBack: () -> Unit, + modifier: Modifier = Modifier, + subtitle: String? = null, +) { + PreferenceViewWithDialog( + title = title, + subtitle = subtitle, + preferences = preferences, + onPreferenceChange = onPreferenceChange, + onBack = onBack, + modifier = modifier, + ) diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewWithDialog.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewWithDialog.kt new file mode 100644 index 0000000000..e7152dfd73 --- /dev/null +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewWithDialog.kt @@ -0,0 +1,67 @@ +package net.thunderbird.core.ui.compose.preference.ui + +import androidx.compose.foundation.layout.padding +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import app.k9mail.core.ui.compose.designsystem.template.ResponsiveWidthContainer +import app.k9mail.core.ui.compose.designsystem.template.Scaffold +import kotlinx.collections.immutable.ImmutableList +import net.thunderbird.core.ui.compose.preference.api.Preference +import net.thunderbird.core.ui.compose.preference.api.PreferenceSetting +import net.thunderbird.core.ui.compose.preference.ui.components.PreferenceTopBar +import net.thunderbird.core.ui.compose.preference.ui.components.dialog.PreferenceDialog +import net.thunderbird.core.ui.compose.preference.ui.components.list.PreferenceList + +@Composable +internal fun PreferenceViewWithDialog( + title: String, + preferences: ImmutableList, + onPreferenceChange: (PreferenceSetting<*>) -> Unit, + onBack: () -> Unit, + modifier: Modifier = Modifier, + subtitle: String? = null, +) { + var showDialog by remember { mutableStateOf(false) } + var selectedIndex by remember(0) { mutableIntStateOf(0) } + + Scaffold( + topBar = { + PreferenceTopBar( + title = title, + subtitle = subtitle, + onBack = onBack, + ) + }, + modifier = modifier, + ) { innerPadding -> + ResponsiveWidthContainer { + PreferenceList( + preferences = preferences, + onItemClick = { index, _ -> + selectedIndex = index + showDialog = true + }, + modifier = Modifier.padding(innerPadding), + ) + } + } + + if (showDialog) { + val preference = preferences[selectedIndex] + + PreferenceDialog( + preference = preference, + onConfirm = { preference -> + onPreferenceChange(preference) + showDialog = false + }, + onDismiss = { showDialog = false }, + onDismissRequest = { showDialog = false }, + ) + } +} diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/PreferenceTopBar.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/PreferenceTopBar.kt new file mode 100644 index 0000000000..845752f1f8 --- /dev/null +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/PreferenceTopBar.kt @@ -0,0 +1,25 @@ +package net.thunderbird.core.ui.compose.preference.ui.components + +import androidx.compose.runtime.Composable +import app.k9mail.core.ui.compose.designsystem.organism.SubtitleTopAppBarWithBackButton +import app.k9mail.core.ui.compose.designsystem.organism.TopAppBarWithBackButton + +@Composable +internal fun PreferenceTopBar( + title: String, + subtitle: String?, + onBack: () -> Unit, +) { + if (subtitle != null) { + SubtitleTopAppBarWithBackButton( + title = title, + subtitle = subtitle, + onBackClick = onBack, + ) + } else { + TopAppBarWithBackButton( + title = title, + onBackClick = onBack, + ) + } +} diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialog.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialog.kt new file mode 100644 index 0000000000..dd42bfdb20 --- /dev/null +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialog.kt @@ -0,0 +1,23 @@ +package net.thunderbird.core.ui.compose.preference.ui.components.dialog + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import net.thunderbird.core.ui.compose.preference.api.Preference +import net.thunderbird.core.ui.compose.preference.api.PreferenceSetting + +@Composable +internal fun PreferenceDialog( + preference: Preference, + onConfirm: (PreferenceSetting<*>) -> Unit, + onDismiss: () -> Unit, + onDismissRequest: () -> Unit, + modifier: Modifier = Modifier, +) { + require(preference is PreferenceSetting<*>) { + "Unsupported preference type: ${preference::class.java.simpleName}" + } + + when (preference) { + // add dialogs + } +} diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItem.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItem.kt new file mode 100644 index 0000000000..4fa1dd7599 --- /dev/null +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItem.kt @@ -0,0 +1,17 @@ +package net.thunderbird.core.ui.compose.preference.ui.components.list + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import net.thunderbird.core.ui.compose.preference.api.Preference +import net.thunderbird.core.ui.compose.preference.api.PreferenceSetting + +@Composable +internal fun PreferenceItem( + preference: Preference, + onClick: () -> Unit, + modifier: Modifier = Modifier, +) { + when (preference) { + // add items + } +} diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceList.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceList.kt new file mode 100644 index 0000000000..535e87fa2c --- /dev/null +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceList.kt @@ -0,0 +1,30 @@ +package net.thunderbird.core.ui.compose.preference.ui.components.list + +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import kotlinx.collections.immutable.ImmutableList +import net.thunderbird.core.ui.compose.preference.api.Preference + +@Composable +internal fun PreferenceList( + preferences: ImmutableList, + onItemClick: (index: Int, item: Preference) -> Unit, + modifier: Modifier = Modifier, +) { + LazyColumn( + modifier = modifier, + ) { + itemsIndexed(preferences) { index, item -> + PreferenceItem( + preference = item, + onClick = { + onItemClick(index, item) + }, + modifier = Modifier.fillMaxWidth(), + ) + } + } +} -- GitLab From 0629c8f2aada5dbef73ead649eccf29d19d3999d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 20 Mar 2025 12:39:17 +0100 Subject: [PATCH 145/262] Add PreferenceItemTextView --- .../preference/ui/PreferenceViewPreview.kt | 4 +- .../list/PreferenceItemLayoutPreview.kt | 37 ++++++++++++++ .../list/PreferenceItemTextViewPreview.kt | 17 +++++++ .../preference/ui/fake/FakePreferenceData.kt | 20 ++++++++ .../compose/preference/ui/PreferenceView.kt | 1 + .../preference/ui/PreferenceViewWithDialog.kt | 4 +- .../ui/components/dialog/PreferenceDialog.kt | 8 ++- .../ui/components/list/PreferenceItem.kt | 8 ++- .../components/list/PreferenceItemLayout.kt | 49 +++++++++++++++++++ .../components/list/PreferenceItemTextView.kt | 23 +++++++++ 10 files changed, 161 insertions(+), 10 deletions(-) create mode 100644 core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemLayoutPreview.kt create mode 100644 core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemTextViewPreview.kt create mode 100644 core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/fake/FakePreferenceData.kt create mode 100644 core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemLayout.kt create mode 100644 core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemTextView.kt diff --git a/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewPreview.kt b/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewPreview.kt index 07befec1ae..6d73eb87df 100644 --- a/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewPreview.kt +++ b/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewPreview.kt @@ -3,7 +3,7 @@ package net.thunderbird.core.ui.compose.preference.ui import androidx.compose.runtime.Composable import app.k9mail.core.ui.compose.common.annotation.PreviewDevicesWithBackground import app.k9mail.core.ui.compose.designsystem.PreviewWithTheme -import kotlinx.collections.immutable.persistentListOf +import net.thunderbird.core.ui.compose.preference.ui.fake.FakePreferenceData @Composable @PreviewDevicesWithBackground @@ -12,7 +12,7 @@ fun PreferenceViewPreview() { PreferenceView( title = "Title", subtitle = "Subtitle", - preferences = persistentListOf(), + preferences = FakePreferenceData.preferences, onPreferenceChange = {}, onBack = {}, ) diff --git a/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemLayoutPreview.kt b/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemLayoutPreview.kt new file mode 100644 index 0000000000..4df4e9af9a --- /dev/null +++ b/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemLayoutPreview.kt @@ -0,0 +1,37 @@ +package net.thunderbird.core.ui.compose.preference.ui.components.list + +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import app.k9mail.core.ui.compose.designsystem.PreviewWithThemes +import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons +import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleLarge + +@Composable +@Preview(showBackground = true) +internal fun PreferenceItemLayoutPreview() { + PreviewWithThemes { + PreferenceItemLayout( + onClick = {}, + icon = null, + modifier = Modifier.fillMaxWidth(), + ) { + TextTitleLarge(text = "PreferenceItemLayoutContent") + } + } +} + +@Composable +@Preview(showBackground = true) +internal fun PreferenceItemLayoutWithIconPreview() { + PreviewWithThemes { + PreferenceItemLayout( + onClick = {}, + icon = Icons.Outlined.Info, + modifier = Modifier.fillMaxWidth(), + ) { + TextTitleLarge(text = "PreferenceItemLayoutContent") + } + } +} diff --git a/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemTextViewPreview.kt b/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemTextViewPreview.kt new file mode 100644 index 0000000000..d76833eab5 --- /dev/null +++ b/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemTextViewPreview.kt @@ -0,0 +1,17 @@ +package net.thunderbird.core.ui.compose.preference.ui.components.list + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import app.k9mail.core.ui.compose.designsystem.PreviewWithThemes +import net.thunderbird.core.ui.compose.preference.ui.fake.FakePreferenceData + +@Composable +@Preview(showBackground = true) +internal fun PreferenceItemTextViewPreview() { + PreviewWithThemes { + PreferenceItemTextView( + preference = FakePreferenceData.textPreference, + onClick = {}, + ) + } +} diff --git a/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/fake/FakePreferenceData.kt b/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/fake/FakePreferenceData.kt new file mode 100644 index 0000000000..d0cfed6e33 --- /dev/null +++ b/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/fake/FakePreferenceData.kt @@ -0,0 +1,20 @@ +package net.thunderbird.core.ui.compose.preference.ui.fake + +import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons +import kotlinx.collections.immutable.persistentListOf +import net.thunderbird.core.ui.compose.preference.api.PreferenceSetting + +object FakePreferenceData { + + val textPreference = PreferenceSetting.Text( + id = "text", + icon = Icons.Outlined.Delete, + title = "Title", + description = "Description", + value = "Value", + ) + + val preferences = persistentListOf( + textPreference, + ) +} diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceView.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceView.kt index 6924ab75aa..d8a4f4d1f3 100644 --- a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceView.kt +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceView.kt @@ -33,3 +33,4 @@ fun PreferenceView( onBack = onBack, modifier = modifier, ) +} diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewWithDialog.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewWithDialog.kt index e7152dfd73..8bfee21e2d 100644 --- a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewWithDialog.kt +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewWithDialog.kt @@ -56,11 +56,11 @@ internal fun PreferenceViewWithDialog( PreferenceDialog( preference = preference, - onConfirm = { preference -> + onConfirmClick = { preference -> onPreferenceChange(preference) showDialog = false }, - onDismiss = { showDialog = false }, + onDismissClick = { showDialog = false }, onDismissRequest = { showDialog = false }, ) } diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialog.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialog.kt index dd42bfdb20..99f2dd3928 100644 --- a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialog.kt +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialog.kt @@ -8,8 +8,8 @@ import net.thunderbird.core.ui.compose.preference.api.PreferenceSetting @Composable internal fun PreferenceDialog( preference: Preference, - onConfirm: (PreferenceSetting<*>) -> Unit, - onDismiss: () -> Unit, + onConfirmClick: (PreferenceSetting<*>) -> Unit, + onDismissClick: () -> Unit, onDismissRequest: () -> Unit, modifier: Modifier = Modifier, ) { @@ -17,7 +17,5 @@ internal fun PreferenceDialog( "Unsupported preference type: ${preference::class.java.simpleName}" } - when (preference) { - // add dialogs - } + // add dialogs } diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItem.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItem.kt index 4fa1dd7599..ec6be2b48f 100644 --- a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItem.kt +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItem.kt @@ -12,6 +12,12 @@ internal fun PreferenceItem( modifier: Modifier = Modifier, ) { when (preference) { - // add items + is PreferenceSetting.Text -> { + PreferenceItemTextView( + preference = preference, + onClick = onClick, + modifier = modifier, + ) + } } } diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemLayout.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemLayout.kt new file mode 100644 index 0000000000..1a16394254 --- /dev/null +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemLayout.kt @@ -0,0 +1,49 @@ +package net.thunderbird.core.ui.compose.preference.ui.components.list + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import app.k9mail.core.ui.compose.designsystem.atom.icon.Icon +import app.k9mail.core.ui.compose.theme2.MainTheme + +@Composable +internal fun PreferenceItemLayout( + onClick: () -> Unit, + icon: ImageVector?, + modifier: Modifier = Modifier, + content: @Composable ColumnScope.() -> Unit, +) { + Box( + modifier = modifier + .clickable(onClick = onClick), + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + icon?.let { + Box( + contentAlignment = Alignment.Center, + modifier = Modifier.padding(MainTheme.spacings.double), + ) { + Icon( + imageVector = it, + ) + } + } + Column( + modifier = Modifier.padding(MainTheme.spacings.double), + verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.half), + ) { + content() + } + } + } +} diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemTextView.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemTextView.kt new file mode 100644 index 0000000000..a04011f88e --- /dev/null +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/list/PreferenceItemTextView.kt @@ -0,0 +1,23 @@ +package net.thunderbird.core.ui.compose.preference.ui.components.list + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyMedium +import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleMedium +import net.thunderbird.core.ui.compose.preference.api.PreferenceSetting + +@Composable +internal fun PreferenceItemTextView( + preference: PreferenceSetting.Text, + onClick: () -> Unit, + modifier: Modifier = Modifier, +) { + PreferenceItemLayout( + onClick = onClick, + icon = preference.icon, + modifier = modifier, + ) { + TextTitleMedium(text = preference.title) + TextBodyMedium(text = preference.value) + } +} -- GitLab From c717fc42045cd45f4356286d025e924d4a53ba6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 20 Mar 2025 15:22:41 +0100 Subject: [PATCH 146/262] Add PreferenceDialogTextView --- .../dialog/PreferenceDialogLayoutPreview.kt | 22 +++++++++ .../dialog/PreferenceDialogTextViewPreview.kt | 19 ++++++++ .../preference/ui/PreferenceViewWithDialog.kt | 6 +-- .../ui/components/dialog/PreferenceDialog.kt | 12 ++++- .../dialog/PreferenceDialogLayout.kt | 42 +++++++++++++++++ .../dialog/PreferenceDialogTextView.kt | 47 +++++++++++++++++++ .../src/main/res/values/strings.xml | 5 ++ 7 files changed, 149 insertions(+), 4 deletions(-) create mode 100644 core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialogLayoutPreview.kt create mode 100644 core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialogTextViewPreview.kt create mode 100644 core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialogLayout.kt create mode 100644 core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialogTextView.kt create mode 100644 core/ui/compose/preference/src/main/res/values/strings.xml diff --git a/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialogLayoutPreview.kt b/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialogLayoutPreview.kt new file mode 100644 index 0000000000..db30a524e2 --- /dev/null +++ b/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialogLayoutPreview.kt @@ -0,0 +1,22 @@ +package net.thunderbird.core.ui.compose.preference.ui.components.dialog + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import app.k9mail.core.ui.compose.designsystem.PreviewWithTheme +import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyMedium + +@Composable +@Preview(showBackground = true) +internal fun PreferenceDialogLayoutPreview() { + PreviewWithTheme { + PreferenceDialogLayout( + title = "Dialog", + icon = null, + onConfirmClick = {}, + onDismissClick = {}, + onDismissRequest = {}, + ) { + TextBodyMedium("PreferenceDialogLayoutContent") + } + } +} diff --git a/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialogTextViewPreview.kt b/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialogTextViewPreview.kt new file mode 100644 index 0000000000..4f73d47748 --- /dev/null +++ b/core/ui/compose/preference/src/debug/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialogTextViewPreview.kt @@ -0,0 +1,19 @@ +package net.thunderbird.core.ui.compose.preference.ui.components.dialog + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import app.k9mail.core.ui.compose.designsystem.PreviewWithTheme +import net.thunderbird.core.ui.compose.preference.ui.fake.FakePreferenceData + +@Composable +@Preview(showBackground = true) +internal fun PreferenceDialogTextViewPreview() { + PreviewWithTheme { + PreferenceDialogTextView( + preference = FakePreferenceData.textPreference, + onConfirmClick = {}, + onDismissClick = {}, + onDismissRequest = {}, + ) + } +} diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewWithDialog.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewWithDialog.kt index 8bfee21e2d..b76d0acf06 100644 --- a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewWithDialog.kt +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/PreferenceViewWithDialog.kt @@ -5,7 +5,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import app.k9mail.core.ui.compose.designsystem.template.ResponsiveWidthContainer @@ -26,8 +26,8 @@ internal fun PreferenceViewWithDialog( modifier: Modifier = Modifier, subtitle: String? = null, ) { - var showDialog by remember { mutableStateOf(false) } - var selectedIndex by remember(0) { mutableIntStateOf(0) } + var showDialog by rememberSaveable { mutableStateOf(false) } + var selectedIndex by rememberSaveable { mutableIntStateOf(0) } Scaffold( topBar = { diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialog.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialog.kt index 99f2dd3928..2672751433 100644 --- a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialog.kt +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialog.kt @@ -17,5 +17,15 @@ internal fun PreferenceDialog( "Unsupported preference type: ${preference::class.java.simpleName}" } - // add dialogs + when (preference) { + is PreferenceSetting.Text -> { + PreferenceDialogTextView( + preference = preference, + onConfirmClick = onConfirmClick, + onDismissClick = onDismissClick, + onDismissRequest = onDismissRequest, + modifier = modifier, + ) + } + } } diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialogLayout.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialogLayout.kt new file mode 100644 index 0000000000..e35f0e3161 --- /dev/null +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialogLayout.kt @@ -0,0 +1,42 @@ +package net.thunderbird.core.ui.compose.preference.ui.components.dialog + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.res.stringResource +import app.k9mail.core.ui.compose.designsystem.organism.AlertDialog +import app.k9mail.core.ui.compose.theme2.MainTheme +import net.thunderbird.core.ui.compose.preference.R + +@Composable +internal fun PreferenceDialogLayout( + title: String, + icon: ImageVector?, + onConfirmClick: () -> Unit, + onDismissClick: () -> Unit, + onDismissRequest: () -> Unit, + modifier: Modifier = Modifier, + content: @Composable ColumnScope.() -> Unit, +) { + AlertDialog( + title = title, + icon = icon, + confirmText = stringResource(id = R.string.core_ui_preference_dialog_button_accept), + onConfirmClick = onConfirmClick, + dismissText = stringResource(id = R.string.core_ui_preference_dialog_button_cancel), + onDismissClick = onDismissClick, + onDismissRequest = onDismissRequest, + modifier = modifier, + ) { + Column( + verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.half), + modifier = Modifier.fillMaxWidth(), + ) { + content() + } + } +} diff --git a/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialogTextView.kt b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialogTextView.kt new file mode 100644 index 0000000000..2521887c2a --- /dev/null +++ b/core/ui/compose/preference/src/main/kotlin/net/thunderbird/core/ui/compose/preference/ui/components/dialog/PreferenceDialogTextView.kt @@ -0,0 +1,47 @@ +package net.thunderbird.core.ui.compose.preference.ui.components.dialog + +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyMedium +import app.k9mail.core.ui.compose.designsystem.molecule.input.TextInput +import app.k9mail.core.ui.compose.theme2.MainTheme +import net.thunderbird.core.ui.compose.preference.api.PreferenceSetting + +@Composable +internal fun PreferenceDialogTextView( + preference: PreferenceSetting.Text, + onConfirmClick: (PreferenceSetting<*>) -> Unit, + onDismissClick: () -> Unit, + onDismissRequest: () -> Unit, + modifier: Modifier = Modifier, +) { + val currentPreference = remember { mutableStateOf(preference) } + + PreferenceDialogLayout( + title = preference.title, + icon = preference.icon, + onConfirmClick = { + onConfirmClick(currentPreference.value) + }, + onDismissClick = onDismissClick, + onDismissRequest = onDismissRequest, + modifier = modifier, + ) { + preference.description?.let { + TextBodyMedium(text = it) + + Spacer(modifier = Modifier.height(MainTheme.spacings.default)) + } + + TextInput( + text = currentPreference.value.value, + contentPadding = PaddingValues(), + onTextChange = { currentPreference.value = currentPreference.value.copy(value = it) }, + ) + } +} diff --git a/core/ui/compose/preference/src/main/res/values/strings.xml b/core/ui/compose/preference/src/main/res/values/strings.xml new file mode 100644 index 0000000000..3d01935e65 --- /dev/null +++ b/core/ui/compose/preference/src/main/res/values/strings.xml @@ -0,0 +1,5 @@ + + + Accept + Cancel + -- GitLab From e0a1e2ae3568e7e7c898e45fe1e2fa4a44c13bc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 20 Mar 2025 16:56:32 +0100 Subject: [PATCH 147/262] Add PreferenceView to AccountSettings --- .../account/settings/impl/build.gradle.kts | 1 + .../settings/impl/ui/AccountSettingsScreen.kt | 72 ++++++++++++++----- 2 files changed, 57 insertions(+), 16 deletions(-) diff --git a/feature/account/settings/impl/build.gradle.kts b/feature/account/settings/impl/build.gradle.kts index a79674f362..4ebd2f9bc2 100644 --- a/feature/account/settings/impl/build.gradle.kts +++ b/feature/account/settings/impl/build.gradle.kts @@ -12,6 +12,7 @@ dependencies { implementation(projects.core.ui.compose.designsystem) implementation(projects.core.ui.compose.navigation) + implementation(projects.core.ui.compose.preference) testImplementation(projects.core.ui.compose.testing) } diff --git a/feature/account/settings/impl/src/main/kotlin/net/thunderbird/feature/account/settings/impl/ui/AccountSettingsScreen.kt b/feature/account/settings/impl/src/main/kotlin/net/thunderbird/feature/account/settings/impl/ui/AccountSettingsScreen.kt index 5d94978584..b5f4823998 100644 --- a/feature/account/settings/impl/src/main/kotlin/net/thunderbird/feature/account/settings/impl/ui/AccountSettingsScreen.kt +++ b/feature/account/settings/impl/src/main/kotlin/net/thunderbird/feature/account/settings/impl/ui/AccountSettingsScreen.kt @@ -1,13 +1,15 @@ package net.thunderbird.feature.account.settings.impl.ui import androidx.activity.compose.BackHandler -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyLarge -import app.k9mail.core.ui.compose.designsystem.organism.SubtitleTopAppBarWithBackButton -import app.k9mail.core.ui.compose.designsystem.template.Scaffold +import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons +import kotlinx.collections.immutable.toImmutableList +import net.thunderbird.core.ui.compose.preference.api.Preference +import net.thunderbird.core.ui.compose.preference.api.PreferenceSetting +import net.thunderbird.core.ui.compose.preference.ui.PreferenceView @Composable fun AccountSettingsScreen( @@ -15,22 +17,60 @@ fun AccountSettingsScreen( onBack: () -> Unit, modifier: Modifier = Modifier, ) { + val preferences = remember { + mutableStateOf( + listOf( + PreferenceSetting.Text( + id = "1", + title = "Title 1", + description = "Description 1", + icon = Icons.Outlined.Delete, + value = "Value 1", + ), + PreferenceSetting.Text( + id = "2", + title = "Title 2", + description = "Description 2", + icon = Icons.Outlined.Delete, + value = "Value 2", + ), + PreferenceSetting.Text( + id = "3", + title = "Title 3", + description = "Description 3", + icon = Icons.Outlined.Folder, + value = "Value 3", + ), + ), + ) + } + BackHandler(onBack = onBack) - Scaffold( - topBar = { - SubtitleTopAppBarWithBackButton( - title = "Account settings", - subtitle = accountId, - onBackClick = onBack, + PreferenceView( + title = "Account settings", + subtitle = accountId, + preferences = preferences.value.toImmutableList(), + onPreferenceChange = { preference -> + preferences.value = updatePreference( + preferences = preferences.value, + preference = preference, ) }, + onBack = onBack, modifier = modifier, - ) { innerPadding -> - Column( - modifier = Modifier.padding(innerPadding), - ) { - TextBodyLarge(text = "accountId: $accountId") + ) +} + +private fun updatePreference( + preferences: List, + preference: PreferenceSetting<*>, +): List { + return preferences.map { + if (it is PreferenceSetting<*> && it.id == preference.id) { + preference + } else { + it } } } -- GitLab From b92e1f19c404328029d87f814f93b6740d8084cc Mon Sep 17 00:00:00 2001 From: Philipp Kewisch Date: Tue, 25 Mar 2025 12:07:54 +0100 Subject: [PATCH 148/262] Fix deploy-docs job and make sure mdbook docs test is run on CI --- .github/workflows/deploy-docs.yml | 17 +++++------------ .github/workflows/markdown.yml | 12 +++++++++++- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index 9920dc8805..56c4a60fc3 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -1,3 +1,4 @@ +--- name: Deploy docs on: @@ -22,18 +23,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - - uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2 - with: - path: | - ~/.cargo/.crates.toml - ~/.cargo/.crates2.toml - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Cargo cache + uses: actions-rust-lang/setup-rust-toolchain@9399c7bb15d4c7d47b27263d024f0a4978346ba4 # v1.11.0 - name: Install mdbook and extensions run: ./docs/install.sh diff --git a/.github/workflows/markdown.yml b/.github/workflows/markdown.yml index 435e140608..853eb429ae 100644 --- a/.github/workflows/markdown.yml +++ b/.github/workflows/markdown.yml @@ -13,7 +13,14 @@ jobs: markdown_quality: runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Cargo cache + uses: actions-rust-lang/setup-rust-toolchain@9399c7bb15d4c7d47b27263d024f0a4978346ba4 # v1.11.0 + + - name: Install mdbook and extensions + run: ./docs/install.sh - name: Copy CI gradle.properties run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties @@ -28,3 +35,6 @@ jobs: - name: Quality - Spotless Markdown Check run: ./gradlew spotlessFlexmarkCheck + + - name: Test mdbook docs + run: mdbook test docs -- GitLab From a05667f76cc586416bbd7f64b1c1eda5b8617582 Mon Sep 17 00:00:00 2001 From: Philipp Kewisch Date: Tue, 25 Mar 2025 12:08:21 +0100 Subject: [PATCH 149/262] Documentation style fixes to make mdbook happy --- docs/ci/AUTOMATION.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/ci/AUTOMATION.md b/docs/ci/AUTOMATION.md index 7857b59871..0aa0dcddff 100644 --- a/docs/ci/AUTOMATION.md +++ b/docs/ci/AUTOMATION.md @@ -24,7 +24,7 @@ You will need the following files: - The signing keys with their default filenames - A matrix-account.json with the following keys: -``` +```json { "homeserver": "matrix-client.matrix.org", "room": "room id here", @@ -33,7 +33,6 @@ You will need the following files: "github_username": "@matrix_id:mozilla.org" } } - ``` - `play-store-account.json` with the service account json that will do the uploads @@ -74,10 +73,12 @@ The environments are locked to the respective branch they belong to. These environments contain the secrets for signing. Their names follow this pattern: - __ - thunderbird_beta_full - thunderbird_beta_foss - k9mail_beta_foss +```text +__ +thunderbird_beta_full +thunderbird_beta_foss +k9mail_beta_foss +``` The following secrets are needed: -- GitLab From b3daeeaf556d9c9e7f460093a1affb6063d7c9c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 25 Mar 2025 15:17:31 +0100 Subject: [PATCH 150/262] Add AppCommonModule to thunderbird --- app-common/build.gradle.kts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app-common/build.gradle.kts b/app-common/build.gradle.kts index 9879ff5faf..f3cd93166d 100644 --- a/app-common/build.gradle.kts +++ b/app-common/build.gradle.kts @@ -2,11 +2,14 @@ plugins { id(ThunderbirdPlugins.Library.android) } +android { + namespace = "net.thunderbird.app.common" +} + dependencies { api(projects.legacy.common) - implementation(projects.feature.migration.provider) -} -android { - namespace = "app.k9mail.common" + implementation(projects.legacy.account) + + implementation(projects.feature.migration.provider) } -- GitLab From 850011cc299b9a1e9e72dc7b3465a183af461118 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 25 Mar 2025 15:20:35 +0100 Subject: [PATCH 151/262] Add AppCommonModule for share functionality This should replace legacy:common in the future --- .../kotlin/net/thunderbird/app/common/AppCommonModule.kt | 8 ++++++++ app-k9mail/src/main/kotlin/app/k9mail/K9KoinModule.kt | 2 ++ .../net/thunderbird/android/ThunderbirdKoinModule.kt | 2 ++ 3 files changed, 12 insertions(+) create mode 100644 app-common/src/main/kotlin/net/thunderbird/app/common/AppCommonModule.kt diff --git a/app-common/src/main/kotlin/net/thunderbird/app/common/AppCommonModule.kt b/app-common/src/main/kotlin/net/thunderbird/app/common/AppCommonModule.kt new file mode 100644 index 0000000000..eef63243e9 --- /dev/null +++ b/app-common/src/main/kotlin/net/thunderbird/app/common/AppCommonModule.kt @@ -0,0 +1,8 @@ +package net.thunderbird.app.common + +import org.koin.core.module.Module +import org.koin.dsl.module + +val appCommonModule: Module = module { + // add common dependencies here +} diff --git a/app-k9mail/src/main/kotlin/app/k9mail/K9KoinModule.kt b/app-k9mail/src/main/kotlin/app/k9mail/K9KoinModule.kt index 313f8522d3..5eff891881 100644 --- a/app-k9mail/src/main/kotlin/app/k9mail/K9KoinModule.kt +++ b/app-k9mail/src/main/kotlin/app/k9mail/K9KoinModule.kt @@ -21,12 +21,14 @@ import com.fsck.k9.preferences.FilePrefixProvider import com.fsck.k9.provider.K9ThemeProvider import com.fsck.k9.provider.UnreadWidgetProvider import com.fsck.k9.widget.list.MessageListWidgetProvider +import net.thunderbird.app.common.appCommonModule import org.koin.android.ext.koin.androidContext import org.koin.core.qualifier.named import org.koin.dsl.binds import org.koin.dsl.module val appModule = module { + includes(appCommonModule) includes(appWidgetModule) includes(featureModule) diff --git a/app-thunderbird/src/main/kotlin/net/thunderbird/android/ThunderbirdKoinModule.kt b/app-thunderbird/src/main/kotlin/net/thunderbird/android/ThunderbirdKoinModule.kt index 88073416f2..2657efcef5 100644 --- a/app-thunderbird/src/main/kotlin/net/thunderbird/android/ThunderbirdKoinModule.kt +++ b/app-thunderbird/src/main/kotlin/net/thunderbird/android/ThunderbirdKoinModule.kt @@ -20,12 +20,14 @@ import net.thunderbird.android.provider.TbThemeProvider import net.thunderbird.android.widget.appWidgetModule import net.thunderbird.android.widget.provider.MessageListWidgetProvider import net.thunderbird.android.widget.provider.UnreadWidgetProvider +import net.thunderbird.app.common.appCommonModule import org.koin.android.ext.koin.androidContext import org.koin.core.qualifier.named import org.koin.dsl.binds import org.koin.dsl.module val appModule = module { + includes(appCommonModule) includes(appWidgetModule) includes(featureModule) -- GitLab From 1236a1769495b7e401b442a8014441817fa42957 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 25 Mar 2025 16:44:02 +0100 Subject: [PATCH 152/262] Change AutoDiscoveryResultView to open edit manually when no settings found --- .../ui/autodiscovery/view/AutoDiscoveryResultView.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/autodiscovery/view/AutoDiscoveryResultView.kt b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/autodiscovery/view/AutoDiscoveryResultView.kt index e95c97e540..5b7b76e171 100644 --- a/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/autodiscovery/view/AutoDiscoveryResultView.kt +++ b/feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/autodiscovery/view/AutoDiscoveryResultView.kt @@ -43,8 +43,15 @@ internal fun AutoDiscoveryResultView( width = 1.dp, color = Color.Gray.copy(alpha = 0.5f), shape = MainTheme.shapes.small, - ) - .clickable(enabled = discoveryResultHeaderState.isExpandable) { expanded.value = !expanded.value }, + ).let { + if (discoveryResultHeaderState.isExpandable) { + it.clickable(enabled = true) { expanded.value = !expanded.value } + } else if (discoveryResultHeaderState == AutoDiscoveryResultHeaderState.NoSettings) { + it.clickable(enabled = true) { onEditConfigurationClick() } + } else { + it.clickable(enabled = false) {} + } + }, ) { Column( modifier = Modifier.padding(MainTheme.spacings.default), -- GitLab From a2a3c1440d54c8df5f6549b55b5bcc26fceb972c Mon Sep 17 00:00:00 2001 From: Sergio Lopez Date: Tue, 25 Mar 2025 20:19:48 +0100 Subject: [PATCH 153/262] Fix issue #8241: Ensure UI back button navigates to Drafts folder when editing a draft --- .../src/main/java/com/fsck/k9/activity/MessageCompose.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java b/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java index 43d7508919..445a4b9fc0 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java @@ -1008,7 +1008,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, if (draftMessageId == null) { onDiscard(); } else { - if (navigateUp) { + if (navigateUp && this.action != action.EDIT_DRAFT) { openDefaultFolder(); } else { super.onBackPressed(); -- GitLab From 52ab3fa80508e86aef8f6e6e7c2b45c526ad78e7 Mon Sep 17 00:00:00 2001 From: Rustum Zia Date: Tue, 25 Mar 2025 21:58:23 -0400 Subject: [PATCH 154/262] Message compose: support parsing list of recipients --- .../com/fsck/k9/view/RecipientSelectView.java | 34 ++++++++++++++----- .../TokenCompleteTextView.java | 15 +++----- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/view/RecipientSelectView.java b/legacy/ui/legacy/src/main/java/com/fsck/k9/view/RecipientSelectView.java index bf57600bdf..b7bdfc46dd 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/view/RecipientSelectView.java +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/view/RecipientSelectView.java @@ -5,6 +5,7 @@ import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; import android.annotation.SuppressLint; @@ -167,21 +168,33 @@ public class RecipientSelectView extends TokenCompleteTextView implem holder.showCryptoState(isAvailable, showCryptoEnabled); } - @Override - protected Recipient defaultObject(String completionText) { + private List parseRecipients(String text) { try { - List
    parsedAddresses = emailAddressParser.parse(completionText); + List
    parsedAddresses = emailAddressParser.parse(text); if (parsedAddresses.isEmpty()) { setError(getContext().getString(R.string.recipient_error_parse_failed)); - return null; + return List.of(); } - return new Recipient(parsedAddresses.get(0)); + List recipients = new ArrayList<>(); + for (Address a : parsedAddresses) { + recipients.add(new Recipient(a)); + } + return recipients; } catch (NonAsciiEmailAddressException e) { setError(getContext().getString(R.string.recipient_error_non_ascii)); - return null; + return List.of(); + } + } + + @Override + protected Recipient defaultObject(String completionText) { + List recipients = parseRecipients(completionText); + if (!recipients.isEmpty()) { + return recipients.get(0); } + return null; } public void setLoaderManager(@Nullable LoaderManager loaderManager) { @@ -245,9 +258,12 @@ public class RecipientSelectView extends TokenCompleteTextView implem @Override public void performCompletion() { if (getListSelection() == ListView.INVALID_POSITION && enoughToFilter()) { - Object recipientText = defaultObject(currentCompletionText()); - if (recipientText != null) { - replaceText(convertSelectionToString(recipientText)); + List recipients = parseRecipients(currentCompletionText()); + if (!recipients.isEmpty()) { + clearCompletionText(); + for (Recipient r : recipients) { + addObjectSync(r); + } } } else { super.performCompletion(); diff --git a/library/TokenAutoComplete/src/main/java/com/tokenautocomplete/TokenCompleteTextView.java b/library/TokenAutoComplete/src/main/java/com/tokenautocomplete/TokenCompleteTextView.java index 5585e31116..975609875d 100644 --- a/library/TokenAutoComplete/src/main/java/com/tokenautocomplete/TokenCompleteTextView.java +++ b/library/TokenAutoComplete/src/main/java/com/tokenautocomplete/TokenCompleteTextView.java @@ -145,7 +145,8 @@ public abstract class TokenCompleteTextView extends AppCompatAutoCompleteText } //Detect split characters, remove them and complete the current token instead - if (tokenizer.containsTokenTerminator(source)) { + // We only want to handle the case where the user inputs a single split character here + if (source.length() == 1 && tokenizer.containsTokenTerminator(source)) { performCompletion(); return ""; } @@ -392,16 +393,10 @@ public abstract class TokenCompleteTextView extends AppCompatAutoCompleteText candidateStringEnd = spanStart; } } - - List tokenRanges = tokenizer.findTokenRanges(editable, candidateStringStart, candidateStringEnd); - - for (Range range: tokenRanges) { - if (range.start <= cursorEndPosition && cursorEndPosition <= range.end) { - return range; - } + if (candidateStringEnd < candidateStringStart) { + return new Range(cursorEndPosition, cursorEndPosition); } - - return new Range(cursorEndPosition, cursorEndPosition); + return new Range(candidateStringStart, candidateStringEnd); } /** -- GitLab From 4c7594297d316b01b6964cbfaafc855bb9399113 Mon Sep 17 00:00:00 2001 From: Philipp Kewisch Date: Wed, 26 Mar 2025 11:35:21 +0100 Subject: [PATCH 155/262] Fix deploy-docs job harder --- .github/workflows/deploy-docs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index 56c4a60fc3..06495091f7 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -43,6 +43,10 @@ jobs: rm book/docs/latest/.gitignore rm book/docs/latest/install.sh + # Restore mermaid.min.js, it has already been copied over to book/docs/latest + git restore . + + - name: Deploy docs to gh-pages run: | git config --global user.name "github-actions[bot]" -- GitLab From 1cee234c8d4e5a5e42614afdf52a0595b058e35a Mon Sep 17 00:00:00 2001 From: Philipp Kewisch Date: Tue, 18 Mar 2025 10:53:04 +0100 Subject: [PATCH 156/262] Use botmobile for commenting --- .github/workflows/daily_builds.yml | 1 - .github/workflows/deploy-docs.yml | 23 +++++-- .github/workflows/needinfo-answered.yml | 12 +++- .github/workflows/needinfo-remove.yml | 12 +++- .github/workflows/needinfo-stale.yml | 14 ++++- .github/workflows/pulls-merged.yml | 16 ++++- .github/workflows/shippable_builds.yml | 25 +++++--- .github/workflows/uplift-merges.yml | 21 +++++-- scripts/ci/setup_release_automation | 81 ++++++++++++++----------- 9 files changed, 145 insertions(+), 60 deletions(-) diff --git a/.github/workflows/daily_builds.yml b/.github/workflows/daily_builds.yml index 413c1980e6..7fafe34b83 100644 --- a/.github/workflows/daily_builds.yml +++ b/.github/workflows/daily_builds.yml @@ -14,5 +14,4 @@ jobs: uses: ./.github/workflows/shippable_builds.yml secrets: inherit permissions: - contents: write # For release bumps id-token: write # For GCS publishing (ftp.mo) diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index 56c4a60fc3..f3d7738d3f 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -10,20 +10,30 @@ on: workflow_dispatch: -permissions: - contents: write - concurrency: group: "pages" cancel-in-progress: false + +environment: botmobile + jobs: build-docs: if: ${{ github.repository_owner == 'thunderbird' }} runs-on: ubuntu-latest steps: + - name: App token generate + uses: actions/create-github-app-token@21cfef2b496dd8ef5b904c159339626a10ad380e # v1.11.6 + if: ${{ vars.BOT_CLIENT_ID }} + id: app-token + with: + app-id: ${{ vars.BOT_CLIENT_ID }} + private-key: ${{ secrets.BOT_PRIVATE_KEY }} + - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + token: ${{ steps.app-token.outputs.token || github.token }} - name: Cargo cache uses: actions-rust-lang/setup-rust-toolchain@9399c7bb15d4c7d47b27263d024f0a4978346ba4 # v1.11.0 @@ -44,9 +54,12 @@ jobs: rm book/docs/latest/install.sh - name: Deploy docs to gh-pages + env: + APP_SLUG: ${{ steps.app-token.outputs.app-slug || 'github-actions'}} + APP_USER_ID: ${{ vars.BOT_USER_ID || '41898282' }} run: | - git config --global user.name "github-actions[bot]" - git config --global user.email "github-actions[bot]@users.noreply.github.com" + git config --global user.name "${APP_SLUG}" + git config --global user.email "${APP_USER_ID}+${APP_SLUG}[bot]@users.noreply.github.com" # Fetch the gh-pages branch git fetch origin gh-pages || git checkout --orphan gh-pages diff --git a/.github/workflows/needinfo-answered.yml b/.github/workflows/needinfo-answered.yml index 33be47e457..4f3959fe7d 100644 --- a/.github/workflows/needinfo-answered.yml +++ b/.github/workflows/needinfo-answered.yml @@ -10,6 +10,8 @@ on: permissions: issues: write +environment: botmobile + jobs: build: runs-on: ubuntu-latest @@ -20,9 +22,17 @@ jobs: issues: write pull-requests: write steps: + - name: App token generate + uses: actions/create-github-app-token@21cfef2b496dd8ef5b904c159339626a10ad380e # v1.11.6 + if: ${{ vars.BOT_CLIENT_ID }} + id: app-token + with: + app-id: ${{ vars.BOT_CLIENT_ID }} + private-key: ${{ secrets.BOT_PRIVATE_KEY }} + - name: Remove answered label if both exist env: ISSUE_NUMBER: ${{ github.event.issue.number }} - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ steps.app-token.outputs.token || github.token }} run: | gh issue edit $ISSUE_NUMBER --repo "$GITHUB_REPOSITORY" --remove-label "status: answered" diff --git a/.github/workflows/needinfo-remove.yml b/.github/workflows/needinfo-remove.yml index e7563c1157..0602ca27eb 100644 --- a/.github/workflows/needinfo-remove.yml +++ b/.github/workflows/needinfo-remove.yml @@ -10,6 +10,8 @@ permissions: contents: read issues: write +environment: botmobile + jobs: build: runs-on: ubuntu-latest @@ -22,9 +24,17 @@ jobs: issues: write pull-requests: write steps: + - name: App token generate + uses: actions/create-github-app-token@21cfef2b496dd8ef5b904c159339626a10ad380e # v1.11.6 + if: ${{ vars.BOT_CLIENT_ID }} + id: app-token + with: + app-id: ${{ vars.BOT_CLIENT_ID }} + private-key: ${{ secrets.BOT_PRIVATE_KEY }} + - name: Remove needinfo label and add answered label env: ISSUE_NUMBER: ${{ github.event.issue.number }} - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ steps.app-token.outputs.token || github.token }} run: | gh issue edit $ISSUE_NUMBER --repo "$GITHUB_REPOSITORY" --remove-label "status: needs information" --add-label "status: answered" diff --git a/.github/workflows/needinfo-stale.yml b/.github/workflows/needinfo-stale.yml index dede0abc7c..9cc84b511e 100644 --- a/.github/workflows/needinfo-stale.yml +++ b/.github/workflows/needinfo-stale.yml @@ -10,6 +10,8 @@ permissions: contents: read issues: write +environment: botmobile + jobs: build: runs-on: ubuntu-latest @@ -17,10 +19,18 @@ jobs: issues: write pull-requests: write steps: + - name: App token generate + uses: actions/create-github-app-token@21cfef2b496dd8ef5b904c159339626a10ad380e # v1.11.6 + if: ${{ vars.BOT_CLIENT_ID }} + id: app-token + with: + app-id: ${{ vars.BOT_CLIENT_ID }} + private-key: ${{ secrets.BOT_PRIVATE_KEY }} + - name: Close old issues with the needinfo tag - uses: imhoffd/needs-reply@71e8d5144caa0d4a1e292348bfafa3866d08c855 # v2.0.0 + uses: imhoffd/needs-reply@71e8d5144caa0d4a1e292348bfafa3866d08c855 # v2.0.0 with: - repo-token: ${{ secrets.GITHUB_TOKEN }} + repo-token: ${{ steps.app-token.outputs.token || github.token }} issue-label: "status: needs information" days-before-close: 30 close-message: > diff --git a/.github/workflows/pulls-merged.yml b/.github/workflows/pulls-merged.yml index 97c079225b..6f064fe0ec 100644 --- a/.github/workflows/pulls-merged.yml +++ b/.github/workflows/pulls-merged.yml @@ -12,16 +12,26 @@ permissions: pull-requests: write issues: write +environment: botmobile + jobs: pull-request-merged: runs-on: ubuntu-latest steps: + - name: App token generate + uses: actions/create-github-app-token@21cfef2b496dd8ef5b904c159339626a10ad380e # v1.11.6 + if: ${{ vars.BOT_CLIENT_ID }} + id: app-token + with: + app-id: ${{ vars.BOT_CLIENT_ID }} + private-key: ${{ secrets.BOT_PRIVATE_KEY }} + - name: Get active milestone id: milestone env: PR_NUMBER: ${{ github.event.pull_request.number }} - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ steps.app-token.outputs.token || github.token }} run: | # The furthest open milestone in the future should be current main gh api repos/$GITHUB_REPOSITORY/milestones --jq ' @@ -39,7 +49,7 @@ jobs: github.event.pull_request.author_association != 'COLLABORATOR' env: PR_NUMBER: ${{ github.event.pull_request.number }} - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ steps.app-token.outputs.token || github.token }} MILESTONE: ${{ steps.milestone.outputs.title }} MESSAGE: >- Thanks for your contribution! Your pull request has been merged and will be part of @@ -55,7 +65,7 @@ jobs: - name: Set active milestone on PR env: PR_NUMBER: ${{ github.event.pull_request.number }} - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ steps.app-token.outputs.token || github.token }} MILESTONE: ${{ steps.milestone.outputs.number }} run: | gh api --method PATCH /repos/$GITHUB_REPOSITORY/issues/$PR_NUMBER -f milestone=$MILESTONE diff --git a/.github/workflows/shippable_builds.yml b/.github/workflows/shippable_builds.yml index 7d19f3e4d6..69def2aca5 100644 --- a/.github/workflows/shippable_builds.yml +++ b/.github/workflows/shippable_builds.yml @@ -197,8 +197,6 @@ jobs: max-parallel: 1 matrix: include: "${{ fromJSON(needs.dump_config.outputs.matrixInclude) }}" - permissions: - contents: write outputs: k9mail_sha: ${{ steps.commit.outputs.k9mail_sha }} thunderbird_sha: ${{ steps.commit.outputs.thunderbird_sha }} @@ -207,11 +205,20 @@ jobs: old_version_code: ${{ steps.new_version_code.outputs.old_version_code }} new_version_code: ${{ steps.new_version_code.outputs.new_version_code }} steps: + - name: App Token Generate + uses: actions/create-github-app-token@21cfef2b496dd8ef5b904c159339626a10ad380e # v1.11.6 + if: ${{ vars.BOT_CLIENT_ID }} + id: app-token + with: + app-id: ${{ vars.BOT_CLIENT_ID }} + private-key: ${{ secrets.BOT_PRIVATE_KEY }} + - name: Checkout repository if: ${{ contains(matrix.releaseTarget, 'github') || needs.dump_config.outputs.releaseType == 'daily' }} uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 + token: ${{ steps.app-token.outputs.token || github.token }} - name: Copy CI gradle.properties if: ${{ contains(matrix.releaseTarget, 'github') || needs.dump_config.outputs.releaseType == 'daily' }} @@ -369,9 +376,11 @@ jobs: APP_NAME: ${{ matrix.appName }} FULL_VERSION_NAME: ${{ steps.appinfo.outputs.VERSION_NAME }}${{ steps.bump_version_suffix.outputs.SUFFIX || steps.appinfo.outputs.VERSION_NAME_SUFFIX }} RELEASE_TYPE: ${{ vars.RELEASE_TYPE }} + APP_SLUG: ${{ steps.app-token.outputs.app-slug || 'github-actions'}} + APP_USER_ID: ${{ vars.BOT_USER_ID || '41898282' }} run: | - git config --global user.name "GitHub Actions Bot" - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --global user.name "${APP_SLUG}" + git config --global user.email "${APP_USER_ID}+${APP_SLUG}[bot]@users.noreply.github.com" # We need the metadata to point to the right application for the release commit set -x @@ -756,12 +765,12 @@ jobs: ls -l uploads/${PKG_FILE_PRETTY} - name: App Token Generate - uses: actions/create-github-app-token@21cfef2b496dd8ef5b904c159339626a10ad380e # v1.11.6 - if: ${{ contains(matrix.releaseTarget, 'github') && vars.RELEASER_APP_CLIENT_ID }} + uses: actions/create-github-app-token@21cfef2b496dd8ef5b904c159339626a10ad380e # v1.11.6 + if: ${{ contains(matrix.releaseTarget, 'github') && vars.BOT_CLIENT_ID }} id: app-token with: - app-id: ${{ vars.RELEASER_APP_CLIENT_ID }} - private-key: ${{ secrets.RELEASER_APP_PRIVATE_KEY }} + app-id: ${{ vars.BOT_CLIENT_ID }} + private-key: ${{ secrets.BOT_PRIVATE_KEY }} - name: Publish to GitHub Releases id: publish_gh diff --git a/.github/workflows/uplift-merges.yml b/.github/workflows/uplift-merges.yml index 986e88c20b..6a994a167c 100644 --- a/.github/workflows/uplift-merges.yml +++ b/.github/workflows/uplift-merges.yml @@ -11,28 +11,41 @@ on: permissions: contents: read +environment: botmobile + jobs: uplift: name: Uplift runs-on: ubuntu-latest permissions: pull-requests: write - contents: write steps: + - name: App token generate + uses: actions/create-github-app-token@21cfef2b496dd8ef5b904c159339626a10ad380e # v1.11.6 + if: ${{ !inputs.dryRun && vars.BOT_CLIENT_ID }} + id: app-token + with: + app-id: ${{ vars.BOT_CLIENT_ID }} + private-key: ${{ secrets.BOT_PRIVATE_KEY }} + - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 + token: ${{ steps.app-token.outputs.token || github.token }} - name: Configure for push if: ${{ !inputs.dryRun }} + env: + APP_SLUG: ${{ steps.app-token.outputs.app-slug || 'github-actions'}} + APP_USER_ID: ${{ vars.BOT_USER_ID || '41898282' }} run: | - git config --global user.name "GitHub Actions Bot" - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --global user.name "${APP_SLUG}" + git config --global user.email "${APP_USER_ID}+${APP_SLUG}[bot]@users.noreply.github.com" - name: Run uplift script env: - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ steps.app-token.outputs.token || github.token }} DRYRUN: ${{ !inputs.dryRun && '--no-dry-run' || '' }} BRANCH: ${{ github.ref_name }} PUSH: ${{ !inputs.dryRun && '--push' || '' }} diff --git a/scripts/ci/setup_release_automation b/scripts/ci/setup_release_automation index 5034a00569..c1e390c1ff 100644 --- a/scripts/ci/setup_release_automation +++ b/scripts/ci/setup_release_automation @@ -168,7 +168,8 @@ def get_github_public_key(repo, environment_name): } response = requests.get(url, headers=headers) if response.status_code == 200: - return response.json() + data = response.json() + return [data["key_id"], data["key"]] else: raise Exception( f"Failed to fetch public key from GitHub. Response: {response.status_code}, {response.text}" @@ -424,9 +425,7 @@ def create_signing_environment(repo, environment, branch, props_file): create_github_environment(repo, environment, branches=[branch]) # Fetch the public key from GitHub for the specific environment - public_key_data = get_github_public_key(repo, environment) - public_key = public_key_data["key"] - key_id = public_key_data["key_id"] + key_id, public_key = get_github_public_key(repo, environment) # Encrypt the secrets using the public key encrypted_signing_key = encrypt_secret(public_key, SIGNING_KEY) @@ -448,14 +447,41 @@ def create_signing_environment(repo, environment, branch, props_file): ) +def make_bot_environment(repo, environment): + key_id, public_key = get_github_public_key(repo, environment) + + with open("botmobile.key.pem") as fp: + encrypted_bot_key = encrypt_secret(public_key, fp.read()) + with open("botmobile.clientid.txt") as fp: + bot_client_id = fp.read().strip() + with open("botmobile.userid.txt") as fp: + bot_user_id = fp.read().strip() + + + set_github_environment_secret( + repo, "BOT_PRIVATE_KEY", encrypted_bot_key, key_id, environment + ) + + set_github_environment_variable(repo, "BOT_CLIENT_ID", bot_client_id, environment) + set_github_environment_variable(repo, "BOT_USER_ID", bot_user_id, environment) + + +def create_channel_environment(repo, environment, branch, variables): + create_github_environment(repo, environment, branches=[branch]) + + for name, value in variables.items(): + if isinstance(value, dict) or isinstance(value, list): + value = json.dumps(value) + + set_github_environment_variable(repo, name, value, environment) + + def create_release_environment(repo, branches): environment = "publish_release" create_github_environment(repo, environment, branches=branches) - public_key_data = get_github_public_key(repo, environment) - public_key = public_key_data["key"] - key_id = public_key_data["key_id"] + key_id, public_key = get_github_public_key(repo, environment) with open("play-store-account.json") as fp: encrypted_play_account = encrypt_secret(public_key, fp.read()) @@ -464,28 +490,13 @@ def create_release_environment(repo, branches): repo, "PLAY_STORE_ACCOUNT", encrypted_play_account, key_id, environment ) - with open("thunderbird-mobile-gh-releaser-bot.pem") as fp: - encrypted_releaser_key = encrypt_secret(public_key, fp.read()) - with open("thunderbird-mobile-gh-releaser-bot.clientid.txt") as fp: - releaser_client_id = fp.read().strip() - - set_github_environment_secret( - repo, "RELEASER_APP_PRIVATE_KEY", encrypted_releaser_key, key_id, environment - ) - - set_github_environment_variable( - repo, "RELEASER_APP_CLIENT_ID", releaser_client_id, environment - ) - def create_matrix_environment(repo, branches): environment = "notify_matrix" create_github_environment(repo, environment, branches=branches) - public_key_data = get_github_public_key(repo, environment) - public_key = public_key_data["key"] - key_id = public_key_data["key_id"] + key_id, public_key = get_github_public_key(repo, environment) with open("matrix-account.json") as fp: mxdata = json.load(fp) @@ -543,7 +554,7 @@ def main(): includeset = set( list(CHANNEL_ENVIRONMENTS.keys()) + list(SIGNING_ENVIRONMENTS.keys()) - + ["publish_hold", "publish_release", "notify_matrix"] + + ["publish_hold", "publish_release", "notify_matrix", "botmobile"] ) if args.skip: for skip in args.skip: @@ -570,17 +581,8 @@ def main(): print(f"Environment {environment_name}") print_github_environment_variable(args.repo, environment_name) else: - create_github_environment( - args.repo, environment_name, branches=[data["branch"]] - ) - - for name, value in data["variables"].items(): - if isinstance(value, dict) or isinstance(value, list): - value = json.dumps(value) - - set_github_environment_variable( - args.repo, name, value, environment_name - ) + create_channel_environment(args.repo, environment_name, **data) + make_bot_environment(args.repo, environment_name) # Signing environments for environment_name, data in SIGNING_ENVIRONMENTS.items(): @@ -604,6 +606,15 @@ def main(): print_github_environment(args.repo, "publish_release") else: create_release_environment(args.repo, ["main", "beta", "release"]) + make_bot_environment(args.repo, "publish_release") + + # Botmobile environment + if "botmobile" in includeset: + if args.print: + print_github_environment(args.repo, "botmobile") + else: + create_github_environment(args.repo, "botmobile", branches=["main"]) + make_bot_environment(args.repo, "botmobile") # Notify if "notify_matrix" in includeset: -- GitLab From ab80e06c83a7c0e67357b5abe34198d9a430331f Mon Sep 17 00:00:00 2001 From: Philipp Kewisch Date: Wed, 26 Mar 2025 15:06:23 +0100 Subject: [PATCH 157/262] Fix actions to put environment on job level --- .github/workflows/deploy-docs.yml | 4 +--- .github/workflows/needinfo-answered.yml | 3 +-- .github/workflows/needinfo-remove.yml | 3 +-- .github/workflows/needinfo-stale.yml | 3 +-- .github/workflows/pulls-merged.yml | 4 +--- .github/workflows/uplift-merges.yml | 3 +-- 6 files changed, 6 insertions(+), 14 deletions(-) diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index f3d7738d3f..18e4f81eeb 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -14,13 +14,11 @@ concurrency: group: "pages" cancel-in-progress: false - -environment: botmobile - jobs: build-docs: if: ${{ github.repository_owner == 'thunderbird' }} runs-on: ubuntu-latest + environment: botmobile steps: - name: App token generate uses: actions/create-github-app-token@21cfef2b496dd8ef5b904c159339626a10ad380e # v1.11.6 diff --git a/.github/workflows/needinfo-answered.yml b/.github/workflows/needinfo-answered.yml index 4f3959fe7d..a7a90c4ba4 100644 --- a/.github/workflows/needinfo-answered.yml +++ b/.github/workflows/needinfo-answered.yml @@ -10,14 +10,13 @@ on: permissions: issues: write -environment: botmobile - jobs: build: runs-on: ubuntu-latest if: | contains(github.event.issue.labels.*.name, 'status: needs information') && contains(github.event.issue.labels.*.name, 'status: answered') + environment: botmobile permissions: issues: write pull-requests: write diff --git a/.github/workflows/needinfo-remove.yml b/.github/workflows/needinfo-remove.yml index 0602ca27eb..4c874cbf81 100644 --- a/.github/workflows/needinfo-remove.yml +++ b/.github/workflows/needinfo-remove.yml @@ -10,8 +10,6 @@ permissions: contents: read issues: write -environment: botmobile - jobs: build: runs-on: ubuntu-latest @@ -20,6 +18,7 @@ jobs: github.event.comment.author_association != 'OWNER' && github.event.comment.author_association != 'MEMBER' && github.event.comment.author_association != 'COLLABORATOR' + environment: botmobile permissions: issues: write pull-requests: write diff --git a/.github/workflows/needinfo-stale.yml b/.github/workflows/needinfo-stale.yml index 9cc84b511e..71c5f59026 100644 --- a/.github/workflows/needinfo-stale.yml +++ b/.github/workflows/needinfo-stale.yml @@ -10,11 +10,10 @@ permissions: contents: read issues: write -environment: botmobile - jobs: build: runs-on: ubuntu-latest + environment: botmobile permissions: issues: write pull-requests: write diff --git a/.github/workflows/pulls-merged.yml b/.github/workflows/pulls-merged.yml index 6f064fe0ec..88dfc262af 100644 --- a/.github/workflows/pulls-merged.yml +++ b/.github/workflows/pulls-merged.yml @@ -12,12 +12,10 @@ permissions: pull-requests: write issues: write -environment: botmobile - jobs: pull-request-merged: runs-on: ubuntu-latest - + environment: botmobile steps: - name: App token generate uses: actions/create-github-app-token@21cfef2b496dd8ef5b904c159339626a10ad380e # v1.11.6 diff --git a/.github/workflows/uplift-merges.yml b/.github/workflows/uplift-merges.yml index 6a994a167c..79355a3b09 100644 --- a/.github/workflows/uplift-merges.yml +++ b/.github/workflows/uplift-merges.yml @@ -11,12 +11,11 @@ on: permissions: contents: read -environment: botmobile - jobs: uplift: name: Uplift runs-on: ubuntu-latest + environment: botmobile permissions: pull-requests: write steps: -- GitLab From acecfdc482720dfddb3fe555a36d5d1597295796 Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Fri, 7 Mar 2025 14:49:20 +0600 Subject: [PATCH 158/262] Change email notifications Default value to On behind feature flag --- app-common/build.gradle.kts | 2 ++ .../thunderbird/app/common/AppCommonModule.kt | 4 ++- .../account/CommonAccountDefaultsProvider.kt | 27 +++++++++++++++++++ .../featureflag/K9FeatureFlagFactory.kt | 1 + .../featureflag/K9FeatureFlagFactory.kt | 1 + .../featureflag/TbFeatureFlagFactory.kt | 1 + .../featureflag/TbFeatureFlagFactory.kt | 1 + .../featureflag/TbFeatureFlagFactory.kt | 1 + .../featureflag/TbFeatureFlagFactory.kt | 1 + feature/navigation/drawer/build.gradle.kts | 1 + .../legacy/account/AccountDefaultsProvider.kt | 5 ++++ .../fsck/k9/AccountPreferenceSerializer.kt | 1 - .../src/main/java/com/fsck/k9/KoinModule.kt | 1 + .../src/main/java/com/fsck/k9/Preferences.kt | 4 +++ .../test/java/com/fsck/k9/PreferencesTest.kt | 1 + .../core/src/test/java/com/fsck/k9/TestApp.kt | 2 ++ .../test/java/com/fsck/k9/storage/TestApp.kt | 2 ++ .../src/test/java/com/fsck/k9/TestApp.kt | 3 +++ 18 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 app-common/src/main/kotlin/net/thunderbird/app/common/account/CommonAccountDefaultsProvider.kt create mode 100644 legacy/account/src/main/java/app/k9mail/legacy/account/AccountDefaultsProvider.kt diff --git a/app-common/build.gradle.kts b/app-common/build.gradle.kts index f3cd93166d..d90857eda9 100644 --- a/app-common/build.gradle.kts +++ b/app-common/build.gradle.kts @@ -11,5 +11,7 @@ dependencies { implementation(projects.legacy.account) + implementation(projects.core.featureflags) + implementation(projects.feature.migration.provider) } diff --git a/app-common/src/main/kotlin/net/thunderbird/app/common/AppCommonModule.kt b/app-common/src/main/kotlin/net/thunderbird/app/common/AppCommonModule.kt index eef63243e9..7c4d2dd50f 100644 --- a/app-common/src/main/kotlin/net/thunderbird/app/common/AppCommonModule.kt +++ b/app-common/src/main/kotlin/net/thunderbird/app/common/AppCommonModule.kt @@ -1,8 +1,10 @@ package net.thunderbird.app.common +import app.k9mail.legacy.account.AccountDefaultsProvider +import net.thunderbird.app.common.account.CommonAccountDefaultsProvider import org.koin.core.module.Module import org.koin.dsl.module val appCommonModule: Module = module { - // add common dependencies here + single { CommonAccountDefaultsProvider(featureFlagProvider = get()) } } diff --git a/app-common/src/main/kotlin/net/thunderbird/app/common/account/CommonAccountDefaultsProvider.kt b/app-common/src/main/kotlin/net/thunderbird/app/common/account/CommonAccountDefaultsProvider.kt new file mode 100644 index 0000000000..2dd86b8630 --- /dev/null +++ b/app-common/src/main/kotlin/net/thunderbird/app/common/account/CommonAccountDefaultsProvider.kt @@ -0,0 +1,27 @@ +package net.thunderbird.app.common.account + +import app.k9mail.core.featureflag.FeatureFlagProvider +import app.k9mail.core.featureflag.toFeatureFlagKey +import app.k9mail.legacy.account.Account +import app.k9mail.legacy.account.AccountDefaultsProvider + +class CommonAccountDefaultsProvider( + private val featureFlagProvider: FeatureFlagProvider, +) : AccountDefaultsProvider { + + override fun applyDefaults(account: Account) { + account.isNotifyNewMail = featureFlagProvider.provide( + "email_notification_default".toFeatureFlagKey(), + ).whenEnabledOrNot( + onEnabled = { true }, + onDisabledOrUnavailable = { false }, + ) + + account.isNotifySelfNewMail = featureFlagProvider.provide( + "email_notification_default".toFeatureFlagKey(), + ).whenEnabledOrNot( + onEnabled = { true }, + onDisabledOrUnavailable = { false }, + ) + } +} diff --git a/app-k9mail/src/debug/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt b/app-k9mail/src/debug/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt index d3eef6c337..7aa44d4026 100644 --- a/app-k9mail/src/debug/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt +++ b/app-k9mail/src/debug/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt @@ -10,6 +10,7 @@ class K9FeatureFlagFactory : FeatureFlagFactory { FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true), FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = true), FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = true), + FeatureFlag("email_notification_default".toFeatureFlagKey(), enabled = true), ) } } diff --git a/app-k9mail/src/release/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt b/app-k9mail/src/release/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt index e22c8482e8..4e7056f2c0 100644 --- a/app-k9mail/src/release/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt +++ b/app-k9mail/src/release/kotlin/app/k9mail/featureflag/K9FeatureFlagFactory.kt @@ -10,6 +10,7 @@ class K9FeatureFlagFactory : FeatureFlagFactory { FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = false), FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = false), FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = false), + FeatureFlag("email_notification_default".toFeatureFlagKey(), enabled = false), ) } } diff --git a/app-thunderbird/src/beta/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt b/app-thunderbird/src/beta/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt index 52fae49ffe..0b7e436213 100644 --- a/app-thunderbird/src/beta/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt +++ b/app-thunderbird/src/beta/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt @@ -13,6 +13,7 @@ class TbFeatureFlagFactory : FeatureFlagFactory { FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true), FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = false), FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = true), + FeatureFlag("email_notification_default".toFeatureFlagKey(), enabled = true), ) } } diff --git a/app-thunderbird/src/daily/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt b/app-thunderbird/src/daily/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt index d649a9bbeb..6cde83974e 100644 --- a/app-thunderbird/src/daily/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt +++ b/app-thunderbird/src/daily/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt @@ -13,6 +13,7 @@ class TbFeatureFlagFactory : FeatureFlagFactory { FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true), FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = false), FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = true), + FeatureFlag("email_notification_default".toFeatureFlagKey(), enabled = true), ) } } diff --git a/app-thunderbird/src/debug/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt b/app-thunderbird/src/debug/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt index 061f234629..aaa9c4f805 100644 --- a/app-thunderbird/src/debug/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt +++ b/app-thunderbird/src/debug/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt @@ -13,6 +13,7 @@ class TbFeatureFlagFactory : FeatureFlagFactory { FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = true), FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = true), FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = true), + FeatureFlag("email_notification_default".toFeatureFlagKey(), enabled = true), ) } } diff --git a/app-thunderbird/src/release/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt b/app-thunderbird/src/release/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt index 4bf01bf007..bbdab9ce1c 100644 --- a/app-thunderbird/src/release/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt +++ b/app-thunderbird/src/release/kotlin/net/thunderbird/android/featureflag/TbFeatureFlagFactory.kt @@ -13,6 +13,7 @@ class TbFeatureFlagFactory : FeatureFlagFactory { FeatureFlag("archive_marks_as_read".toFeatureFlagKey(), enabled = false), FeatureFlag("new_account_settings".toFeatureFlagKey(), enabled = false), FeatureFlag("disable_font_size_config".toFeatureFlagKey(), enabled = false), + FeatureFlag("email_notification_default".toFeatureFlagKey(), enabled = false), ) } } diff --git a/feature/navigation/drawer/build.gradle.kts b/feature/navigation/drawer/build.gradle.kts index bd869402f7..5d15f2f9d1 100644 --- a/feature/navigation/drawer/build.gradle.kts +++ b/feature/navigation/drawer/build.gradle.kts @@ -20,6 +20,7 @@ dependencies { implementation(projects.legacy.message) implementation(projects.legacy.search) implementation(projects.legacy.ui.folder) + implementation(projects.core.featureflags) testImplementation(projects.core.ui.compose.testing) } diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/AccountDefaultsProvider.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/AccountDefaultsProvider.kt new file mode 100644 index 0000000000..b0cdaee7ac --- /dev/null +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/AccountDefaultsProvider.kt @@ -0,0 +1,5 @@ +package app.k9mail.legacy.account + +fun interface AccountDefaultsProvider { + fun applyDefaults(account: Account) +} diff --git a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt index 3a3ccc2eab..e9f955bf6c 100644 --- a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt +++ b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt @@ -53,7 +53,6 @@ class AccountPreferenceSerializer( displayCount = K9.DEFAULT_VISIBLE_LIMIT } isNotifyNewMail = storage.getBoolean("$accountUuid.notifyNewMail", false) - folderNotifyNewMailMode = getEnumStringPref( storage, "$accountUuid.folderNotifyNewMailMode", diff --git a/legacy/core/src/main/java/com/fsck/k9/KoinModule.kt b/legacy/core/src/main/java/com/fsck/k9/KoinModule.kt index e5acb60d7f..3f8526bc2c 100644 --- a/legacy/core/src/main/java/com/fsck/k9/KoinModule.kt +++ b/legacy/core/src/main/java/com/fsck/k9/KoinModule.kt @@ -21,6 +21,7 @@ val mainModule = module { storagePersister = get(), localStoreProvider = get(), accountPreferenceSerializer = get(), + accountDefaultsProvider = get(), ) } single { get().resources } diff --git a/legacy/core/src/main/java/com/fsck/k9/Preferences.kt b/legacy/core/src/main/java/com/fsck/k9/Preferences.kt index acad66f342..039cbc44bb 100644 --- a/legacy/core/src/main/java/com/fsck/k9/Preferences.kt +++ b/legacy/core/src/main/java/com/fsck/k9/Preferences.kt @@ -3,6 +3,7 @@ package com.fsck.k9 import androidx.annotation.GuardedBy import androidx.annotation.RestrictTo import app.k9mail.legacy.account.Account +import app.k9mail.legacy.account.AccountDefaultsProvider import app.k9mail.legacy.account.AccountManager import app.k9mail.legacy.account.AccountRemovedListener import app.k9mail.legacy.account.AccountsChangeListener @@ -27,11 +28,13 @@ import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.flowOn import timber.log.Timber +@Suppress("MaxLineLength") class Preferences internal constructor( private val storagePersister: StoragePersister, private val localStoreProvider: LocalStoreProvider, private val accountPreferenceSerializer: AccountPreferenceSerializer, private val backgroundDispatcher: CoroutineDispatcher = Dispatchers.IO, + private val accountDefaultsProvider: AccountDefaultsProvider, ) : AccountManager { private val accountLock = Any() private val storageLock = Any() @@ -87,6 +90,7 @@ class Preferences internal constructor( accounts[uuid] = account accountsInOrder.add(account) + accountDefaultsProvider.applyDefaults(account) } } diff --git a/legacy/core/src/test/java/com/fsck/k9/PreferencesTest.kt b/legacy/core/src/test/java/com/fsck/k9/PreferencesTest.kt index 150e9ff133..cfb7224535 100644 --- a/legacy/core/src/test/java/com/fsck/k9/PreferencesTest.kt +++ b/legacy/core/src/test/java/com/fsck/k9/PreferencesTest.kt @@ -23,6 +23,7 @@ class PreferencesTest { on { deserialize(any()) } doReturn SERVER_SETTINGS }, ), + accountDefaultsProvider = mock(), ) @Before diff --git a/legacy/core/src/test/java/com/fsck/k9/TestApp.kt b/legacy/core/src/test/java/com/fsck/k9/TestApp.kt index e8fe02a99e..094cc68a31 100644 --- a/legacy/core/src/test/java/com/fsck/k9/TestApp.kt +++ b/legacy/core/src/test/java/com/fsck/k9/TestApp.kt @@ -6,6 +6,7 @@ import app.k9mail.core.featureflag.FeatureFlag import app.k9mail.core.featureflag.FeatureFlagProvider import app.k9mail.core.featureflag.InMemoryFeatureFlagProvider import app.k9mail.feature.telemetry.telemetryModule +import app.k9mail.legacy.account.AccountDefaultsProvider import app.k9mail.legacy.di.DI import com.fsck.k9.backend.BackendManager import com.fsck.k9.controller.ControllerExtension @@ -46,6 +47,7 @@ val testModule = module { single { mock() } single { mock() } single(named("controllerExtensions")) { emptyList() } + single { mock() } single { mock() } single { InMemoryFeatureFlagProvider( diff --git a/legacy/storage/src/test/java/com/fsck/k9/storage/TestApp.kt b/legacy/storage/src/test/java/com/fsck/k9/storage/TestApp.kt index 2964febabd..96e778f7fb 100644 --- a/legacy/storage/src/test/java/com/fsck/k9/storage/TestApp.kt +++ b/legacy/storage/src/test/java/com/fsck/k9/storage/TestApp.kt @@ -5,6 +5,7 @@ import app.k9mail.core.featureflag.FeatureFlag import app.k9mail.core.featureflag.FeatureFlagProvider import app.k9mail.core.featureflag.InMemoryFeatureFlagProvider import app.k9mail.feature.telemetry.telemetryModule +import app.k9mail.legacy.account.AccountDefaultsProvider import app.k9mail.legacy.di.DI import com.fsck.k9.AppConfig import com.fsck.k9.Core @@ -36,6 +37,7 @@ val testModule = module { single { mock() } single { K9StoragePersister(get()) } single { mock() } + single { mock() } single { InMemoryFeatureFlagProvider( featureFlagFactory = { diff --git a/legacy/ui/legacy/src/test/java/com/fsck/k9/TestApp.kt b/legacy/ui/legacy/src/test/java/com/fsck/k9/TestApp.kt index 488f8455e3..973a29a0b1 100644 --- a/legacy/ui/legacy/src/test/java/com/fsck/k9/TestApp.kt +++ b/legacy/ui/legacy/src/test/java/com/fsck/k9/TestApp.kt @@ -5,10 +5,12 @@ import app.k9mail.core.featureflag.FeatureFlag import app.k9mail.core.featureflag.FeatureFlagProvider import app.k9mail.core.featureflag.InMemoryFeatureFlagProvider import app.k9mail.feature.telemetry.telemetryModule +import app.k9mail.legacy.account.AccountDefaultsProvider import app.k9mail.legacy.di.DI import com.fsck.k9.preferences.InMemoryStoragePersister import com.fsck.k9.preferences.StoragePersister import org.koin.dsl.module +import org.mockito.Mockito.mock class TestApp : Application() { override fun onCreate() { @@ -30,6 +32,7 @@ val testModule = module { single { AppConfig(emptyList()) } single { TestCoreResourceProvider() } single { InMemoryStoragePersister() } + single { mock() } single { InMemoryFeatureFlagProvider( featureFlagFactory = { -- GitLab From fe2cb184885d4aa5f734d5101791e9f7f0c3ae2e Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Fri, 28 Mar 2025 01:26:46 +0600 Subject: [PATCH 159/262] Move logging functionality to core.android.logging module --- core/android/logging/build.gradle.kts | 12 ++++++++++++ .../thunderbird/core/android}/logging/KoinModule.kt | 2 +- .../core/android}/logging/LogFileWriter.kt | 2 +- .../core/android}/logging/ProcessExecutor.kt | 2 +- .../core/android}/logging/LogcatLogFileWriterTest.kt | 2 +- legacy/core/build.gradle.kts | 1 + .../src/main/java/com/fsck/k9/CoreKoinModules.kt | 2 +- .../ui/settings/general/GeneralSettingsViewModel.kt | 2 +- .../settings/general/GeneralSettingsViewModelTest.kt | 2 +- settings.gradle.kts | 1 + 10 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 core/android/logging/build.gradle.kts rename {legacy/core/src/main/java/com/fsck/k9 => core/android/logging/src/main/kotlin/net/thunderbird/core/android}/logging/KoinModule.kt (82%) rename {legacy/core/src/main/java/com/fsck/k9 => core/android/logging/src/main/kotlin/net/thunderbird/core/android}/logging/LogFileWriter.kt (96%) rename {legacy/core/src/main/java/com/fsck/k9 => core/android/logging/src/main/kotlin/net/thunderbird/core/android}/logging/ProcessExecutor.kt (87%) rename {legacy/core/src/test/java/com/fsck/k9 => core/android/logging/src/test/kotlin/net/thunderbird/core/android}/logging/LogcatLogFileWriterTest.kt (98%) diff --git a/core/android/logging/build.gradle.kts b/core/android/logging/build.gradle.kts new file mode 100644 index 0000000000..86a28e09ff --- /dev/null +++ b/core/android/logging/build.gradle.kts @@ -0,0 +1,12 @@ +plugins { + id(ThunderbirdPlugins.Library.android) +} + +android { + namespace = "net.thunderbird.core.android.logging" +} + +dependencies { + implementation(libs.timber) + implementation(libs.commons.io) +} diff --git a/legacy/core/src/main/java/com/fsck/k9/logging/KoinModule.kt b/core/android/logging/src/main/kotlin/net/thunderbird/core/android/logging/KoinModule.kt similarity index 82% rename from legacy/core/src/main/java/com/fsck/k9/logging/KoinModule.kt rename to core/android/logging/src/main/kotlin/net/thunderbird/core/android/logging/KoinModule.kt index 4f0cf60480..0892cddd6d 100644 --- a/legacy/core/src/main/java/com/fsck/k9/logging/KoinModule.kt +++ b/core/android/logging/src/main/kotlin/net/thunderbird/core/android/logging/KoinModule.kt @@ -1,4 +1,4 @@ -package com.fsck.k9.logging +package net.thunderbird.core.android.logging import org.koin.dsl.module diff --git a/legacy/core/src/main/java/com/fsck/k9/logging/LogFileWriter.kt b/core/android/logging/src/main/kotlin/net/thunderbird/core/android/logging/LogFileWriter.kt similarity index 96% rename from legacy/core/src/main/java/com/fsck/k9/logging/LogFileWriter.kt rename to core/android/logging/src/main/kotlin/net/thunderbird/core/android/logging/LogFileWriter.kt index 0797c006b7..e541bac9c1 100644 --- a/legacy/core/src/main/java/com/fsck/k9/logging/LogFileWriter.kt +++ b/core/android/logging/src/main/kotlin/net/thunderbird/core/android/logging/LogFileWriter.kt @@ -1,4 +1,4 @@ -package com.fsck.k9.logging +package net.thunderbird.core.android.logging import android.content.ContentResolver import android.net.Uri diff --git a/legacy/core/src/main/java/com/fsck/k9/logging/ProcessExecutor.kt b/core/android/logging/src/main/kotlin/net/thunderbird/core/android/logging/ProcessExecutor.kt similarity index 87% rename from legacy/core/src/main/java/com/fsck/k9/logging/ProcessExecutor.kt rename to core/android/logging/src/main/kotlin/net/thunderbird/core/android/logging/ProcessExecutor.kt index cfa2ff653f..dc437dd61d 100644 --- a/legacy/core/src/main/java/com/fsck/k9/logging/ProcessExecutor.kt +++ b/core/android/logging/src/main/kotlin/net/thunderbird/core/android/logging/ProcessExecutor.kt @@ -1,4 +1,4 @@ -package com.fsck.k9.logging +package net.thunderbird.core.android.logging import java.io.InputStream diff --git a/legacy/core/src/test/java/com/fsck/k9/logging/LogcatLogFileWriterTest.kt b/core/android/logging/src/test/kotlin/net/thunderbird/core/android/logging/LogcatLogFileWriterTest.kt similarity index 98% rename from legacy/core/src/test/java/com/fsck/k9/logging/LogcatLogFileWriterTest.kt rename to core/android/logging/src/test/kotlin/net/thunderbird/core/android/logging/LogcatLogFileWriterTest.kt index 9783531f01..7cc43bf5c7 100644 --- a/legacy/core/src/test/java/com/fsck/k9/logging/LogcatLogFileWriterTest.kt +++ b/core/android/logging/src/test/kotlin/net/thunderbird/core/android/logging/LogcatLogFileWriterTest.kt @@ -1,4 +1,4 @@ -package com.fsck.k9.logging +package net.thunderbird.core.android.logging import android.content.ContentResolver import android.net.Uri diff --git a/legacy/core/build.gradle.kts b/legacy/core/build.gradle.kts index ae7a0dde3f..0fa7c8e82c 100644 --- a/legacy/core/build.gradle.kts +++ b/legacy/core/build.gradle.kts @@ -8,6 +8,7 @@ dependencies { api(projects.backend.api) api(projects.library.htmlCleaner) api(projects.core.android.common) + api(projects.core.android.logging) api(projects.core.android.network) api(projects.core.mail.folder.api) diff --git a/legacy/core/src/main/java/com/fsck/k9/CoreKoinModules.kt b/legacy/core/src/main/java/com/fsck/k9/CoreKoinModules.kt index 84c5869097..f70ab1cd44 100644 --- a/legacy/core/src/main/java/com/fsck/k9/CoreKoinModules.kt +++ b/legacy/core/src/main/java/com/fsck/k9/CoreKoinModules.kt @@ -6,7 +6,6 @@ import com.fsck.k9.controller.push.controllerPushModule import com.fsck.k9.crypto.openPgpModule import com.fsck.k9.helper.helperModule import com.fsck.k9.job.jobModule -import com.fsck.k9.logging.loggingModule import com.fsck.k9.mailstore.mailStoreModule import com.fsck.k9.message.extractors.extractorModule import com.fsck.k9.message.html.htmlModule @@ -14,6 +13,7 @@ import com.fsck.k9.message.quote.quoteModule import com.fsck.k9.notification.coreNotificationModule import com.fsck.k9.power.powerModule import com.fsck.k9.preferences.preferencesModule +import net.thunderbird.core.android.logging.loggingModule import net.thunderbird.core.android.network.coreAndroidNetworkModule val coreModules = listOf( diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsViewModel.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsViewModel.kt index 893d5de601..20ea2d1756 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsViewModel.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/general/GeneralSettingsViewModel.kt @@ -3,12 +3,12 @@ package com.fsck.k9.ui.settings.general import android.net.Uri import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.fsck.k9.logging.LogFileWriter import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch +import net.thunderbird.core.android.logging.LogFileWriter import timber.log.Timber class GeneralSettingsViewModel(private val logFileWriter: LogFileWriter) : ViewModel() { diff --git a/legacy/ui/legacy/src/test/java/com/fsck/k9/ui/settings/general/GeneralSettingsViewModelTest.kt b/legacy/ui/legacy/src/test/java/com/fsck/k9/ui/settings/general/GeneralSettingsViewModelTest.kt index ef1875cbe1..3a27a1b236 100644 --- a/legacy/ui/legacy/src/test/java/com/fsck/k9/ui/settings/general/GeneralSettingsViewModelTest.kt +++ b/legacy/ui/legacy/src/test/java/com/fsck/k9/ui/settings/general/GeneralSettingsViewModelTest.kt @@ -5,7 +5,6 @@ import app.cash.turbine.test import assertk.assertThat import assertk.assertions.isEmpty import assertk.assertions.isEqualTo -import com.fsck.k9.logging.LogFileWriter import java.io.IOException import kotlinx.coroutines.CoroutineName import kotlinx.coroutines.Dispatchers @@ -19,6 +18,7 @@ import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.resetMain import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.setMain +import net.thunderbird.core.android.logging.LogFileWriter import org.junit.After import org.junit.Before import org.junit.Test diff --git a/settings.gradle.kts b/settings.gradle.kts index 0d10145af3..0b39e2ed3e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -219,3 +219,4 @@ check(JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_17)) { https://developer.android.com/build/jdks#jdk-config-in-studio """.trimIndent() } +include(":core:android:logging") -- GitLab From cc808330eb57c8a315af0daad0b5f8256a7dd5d7 Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Fri, 28 Mar 2025 12:28:01 +0600 Subject: [PATCH 160/262] Remove un-used com.fsck.k9.glide.K9AppGlideModule --- .../src/main/java/com/fsck/k9/glide/K9AppGlideModule.java | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 legacy/common/src/main/java/com/fsck/k9/glide/K9AppGlideModule.java diff --git a/legacy/common/src/main/java/com/fsck/k9/glide/K9AppGlideModule.java b/legacy/common/src/main/java/com/fsck/k9/glide/K9AppGlideModule.java deleted file mode 100644 index f37999f7f1..0000000000 --- a/legacy/common/src/main/java/com/fsck/k9/glide/K9AppGlideModule.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.fsck.k9.glide; - -import com.bumptech.glide.annotation.GlideModule; -import com.bumptech.glide.module.AppGlideModule; - -@GlideModule -public class K9AppGlideModule extends AppGlideModule { -} -- GitLab From 6ed36bddbf8db6cead44071f161823aaec2cd059 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Fri, 28 Mar 2025 12:19:25 +0100 Subject: [PATCH 161/262] Fix DependencyInjectionTest to avoid direct dependencies on module internals --- app-k9mail/build.gradle.kts | 4 ---- .../kotlin/app/k9mail/DependencyInjectionTest.kt | 14 +++----------- app-thunderbird/build.gradle.kts | 4 ---- .../thunderbird/android/DependencyInjectionTest.kt | 14 +++----------- 4 files changed, 6 insertions(+), 30 deletions(-) diff --git a/app-k9mail/build.gradle.kts b/app-k9mail/build.gradle.kts index e66924c04c..af187c7867 100644 --- a/app-k9mail/build.gradle.kts +++ b/app-k9mail/build.gradle.kts @@ -163,10 +163,6 @@ dependencies { debugImplementation(projects.feature.autodiscovery.demo) testImplementation(libs.robolectric) - - // Required for DependencyInjectionTest to be able to resolve OpenPgpApiManager - testImplementation(projects.plugins.openpgpApiLib.openpgpApi) - testImplementation(projects.feature.account.setup) } dependencyGuard { diff --git a/app-k9mail/src/test/kotlin/app/k9mail/DependencyInjectionTest.kt b/app-k9mail/src/test/kotlin/app/k9mail/DependencyInjectionTest.kt index ec49c894fe..b13839514c 100644 --- a/app-k9mail/src/test/kotlin/app/k9mail/DependencyInjectionTest.kt +++ b/app-k9mail/src/test/kotlin/app/k9mail/DependencyInjectionTest.kt @@ -3,13 +3,9 @@ package app.k9mail import android.view.ContextThemeWrapper import androidx.lifecycle.LifecycleOwner import androidx.work.WorkerParameters -import app.k9mail.feature.account.server.validation.domain.ServerValidationDomainContract -import app.k9mail.feature.account.server.validation.ui.ServerValidationContract import app.k9mail.legacy.ui.folder.FolderIconProvider import app.k9mail.legacy.ui.folder.FolderNameFormatter import com.fsck.k9.R -import com.fsck.k9.account.AccountRemoverWorker -import com.fsck.k9.job.MailSyncWorker import com.fsck.k9.mail.oauth.AuthStateStorage import com.fsck.k9.ui.changelog.ChangeLogMode import com.fsck.k9.ui.changelog.ChangelogViewModel @@ -26,7 +22,6 @@ import org.koin.test.AutoCloseKoinTest import org.koin.test.check.checkModules import org.mockito.kotlin.doReturn import org.mockito.kotlin.mock -import org.openintents.openpgp.OpenPgpApiManager import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment @@ -44,22 +39,19 @@ class DependencyInjectionTest : AutoCloseKoinTest() { KoinJavaComponent.getKoin().setupLogger(PrintLogger()) getKoin().checkModules { - withParameter { lifecycleOwner } withParameters { parametersOf(lifecycleOwner, autocryptTransferView) } withParameter { RuntimeEnvironment.getApplication() } withParameter { RuntimeEnvironment.getApplication() } withParameter { ChangeLogMode.CHANGE_LOG } - withParameter { mock() } withParameter { ContextThemeWrapper(RuntimeEnvironment.getApplication(), R.style.Theme_K9_DayNight).theme } withParameters(clazz = Class.forName("com.fsck.k9.view.K9WebViewClient").kotlin) { parametersOf(null, null) } - withParameter { authStateStorage } - withParameter { authStateStorage } - withParameter { authStateStorage } - withParameter { mock() } + withInstance(authStateStorage) + withInstance(lifecycleOwner) + withInstance(mock()) } } } diff --git a/app-thunderbird/build.gradle.kts b/app-thunderbird/build.gradle.kts index ed9c520449..2782a8a586 100644 --- a/app-thunderbird/build.gradle.kts +++ b/app-thunderbird/build.gradle.kts @@ -244,10 +244,6 @@ dependencies { releaseImplementation(libs.appauth) testImplementation(libs.robolectric) - - // Required for DependencyInjectionTest to be able to resolve OpenPgpApiManager - testImplementation(projects.plugins.openpgpApiLib.openpgpApi) - testImplementation(projects.feature.account.setup) } dependencyGuard { diff --git a/app-thunderbird/src/test/kotlin/net/thunderbird/android/DependencyInjectionTest.kt b/app-thunderbird/src/test/kotlin/net/thunderbird/android/DependencyInjectionTest.kt index fce62bdfbb..7d13578c02 100644 --- a/app-thunderbird/src/test/kotlin/net/thunderbird/android/DependencyInjectionTest.kt +++ b/app-thunderbird/src/test/kotlin/net/thunderbird/android/DependencyInjectionTest.kt @@ -3,12 +3,8 @@ package net.thunderbird.android import android.view.ContextThemeWrapper import androidx.lifecycle.LifecycleOwner import androidx.work.WorkerParameters -import app.k9mail.feature.account.server.validation.domain.ServerValidationDomainContract -import app.k9mail.feature.account.server.validation.ui.ServerValidationContract import app.k9mail.legacy.ui.folder.FolderIconProvider import app.k9mail.legacy.ui.folder.FolderNameFormatter -import com.fsck.k9.account.AccountRemoverWorker -import com.fsck.k9.job.MailSyncWorker import com.fsck.k9.mail.oauth.AuthStateStorage import com.fsck.k9.ui.changelog.ChangeLogMode import com.fsck.k9.ui.changelog.ChangelogViewModel @@ -25,7 +21,6 @@ import org.koin.test.AutoCloseKoinTest import org.koin.test.check.checkModules import org.mockito.kotlin.doReturn import org.mockito.kotlin.mock -import org.openintents.openpgp.OpenPgpApiManager import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment import org.robolectric.annotation.Config @@ -45,22 +40,19 @@ class DependencyInjectionTest : AutoCloseKoinTest() { KoinJavaComponent.getKoin().setupLogger(PrintLogger()) getKoin().checkModules { - withParameter { lifecycleOwner } withParameters { parametersOf(lifecycleOwner, autocryptTransferView) } withParameter { RuntimeEnvironment.getApplication() } withParameter { RuntimeEnvironment.getApplication() } withParameter { ChangeLogMode.CHANGE_LOG } - withParameter { mock() } withParameter { ContextThemeWrapper(RuntimeEnvironment.getApplication(), R.style.Theme_Thunderbird_DayNight).theme } withParameters(clazz = Class.forName("com.fsck.k9.view.K9WebViewClient").kotlin) { parametersOf(null, null) } - withParameter { authStateStorage } - withParameter { authStateStorage } - withParameter { authStateStorage } - withParameter { mock() } + withInstance(authStateStorage) + withInstance(lifecycleOwner) + withInstance(mock()) } } } -- GitLab From 53470985ff8a69047ddcd5c46049a3fb37139fbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Thu, 27 Mar 2025 16:23:41 +0100 Subject: [PATCH 162/262] Move Outcome to :core:outcome module --- core/outcome/build.gradle.kts | 4 ++++ .../main/kotlin/net/thunderbird/core/outcome}/Outcome.kt | 2 +- feature/funding/googleplay/build.gradle.kts | 1 + .../k9mail/feature/funding/googleplay/data/DataContract.kt | 2 +- .../feature/funding/googleplay/data/GoogleBillingClient.kt | 6 +++--- .../funding/googleplay/data/mapper/BillingResultMapper.kt | 2 +- .../feature/funding/googleplay/domain/BillingManager.kt | 3 +++ .../feature/funding/googleplay/domain/DomainContract.kt | 1 + .../googleplay/domain/usecase/GetAvailableContributions.kt | 2 +- .../googleplay/ui/contribution/ContributionViewModel.kt | 2 +- .../googleplay/data/mapper/BillingResultMapperTest.kt | 2 +- .../googleplay/ui/contribution/ContributionViewModelTest.kt | 2 +- .../googleplay/ui/contribution/FakeBillingManager.kt | 2 +- settings.gradle.kts | 1 + 14 files changed, 21 insertions(+), 11 deletions(-) create mode 100644 core/outcome/build.gradle.kts rename {feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/domain => core/outcome/src/main/kotlin/net/thunderbird/core/outcome}/Outcome.kt (98%) diff --git a/core/outcome/build.gradle.kts b/core/outcome/build.gradle.kts new file mode 100644 index 0000000000..53abed51d1 --- /dev/null +++ b/core/outcome/build.gradle.kts @@ -0,0 +1,4 @@ +plugins { + id(ThunderbirdPlugins.Library.jvm) + alias(libs.plugins.android.lint) +} diff --git a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/domain/Outcome.kt b/core/outcome/src/main/kotlin/net/thunderbird/core/outcome/Outcome.kt similarity index 98% rename from feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/domain/Outcome.kt rename to core/outcome/src/main/kotlin/net/thunderbird/core/outcome/Outcome.kt index f1baa56cca..656da2364a 100644 --- a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/domain/Outcome.kt +++ b/core/outcome/src/main/kotlin/net/thunderbird/core/outcome/Outcome.kt @@ -1,4 +1,4 @@ -package app.k9mail.feature.funding.googleplay.domain +package net.thunderbird.core.outcome sealed interface Outcome { data class Success(val data: SUCCESS) : Outcome diff --git a/feature/funding/googleplay/build.gradle.kts b/feature/funding/googleplay/build.gradle.kts index 2af95ac338..b6957f47f8 100644 --- a/feature/funding/googleplay/build.gradle.kts +++ b/feature/funding/googleplay/build.gradle.kts @@ -11,6 +11,7 @@ dependencies { api(projects.feature.funding.api) implementation(projects.core.common) + implementation(projects.core.outcome) implementation(projects.core.ui.compose.designsystem) implementation(libs.android.billing) diff --git a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/data/DataContract.kt b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/data/DataContract.kt index b986f858e0..eae91ee998 100644 --- a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/data/DataContract.kt +++ b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/data/DataContract.kt @@ -2,7 +2,6 @@ package app.k9mail.feature.funding.googleplay.data import android.app.Activity import app.k9mail.feature.funding.googleplay.domain.DomainContract.BillingError -import app.k9mail.feature.funding.googleplay.domain.Outcome import app.k9mail.feature.funding.googleplay.domain.entity.Contribution import app.k9mail.feature.funding.googleplay.domain.entity.OneTimeContribution import app.k9mail.feature.funding.googleplay.domain.entity.RecurringContribution @@ -10,6 +9,7 @@ import com.android.billingclient.api.ProductDetails import com.android.billingclient.api.Purchase import com.android.billingclient.api.PurchasesUpdatedListener import kotlinx.coroutines.flow.StateFlow +import net.thunderbird.core.outcome.Outcome import com.android.billingclient.api.BillingClient as GoogleBillingClient import com.android.billingclient.api.BillingResult as GoogleBillingResult diff --git a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/data/GoogleBillingClient.kt b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/data/GoogleBillingClient.kt index 3e49c9b4e8..eb8b6ea1b3 100644 --- a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/data/GoogleBillingClient.kt +++ b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/data/GoogleBillingClient.kt @@ -5,12 +5,9 @@ import app.k9mail.core.common.cache.Cache import app.k9mail.feature.funding.googleplay.data.DataContract.Remote import app.k9mail.feature.funding.googleplay.data.remote.startConnection import app.k9mail.feature.funding.googleplay.domain.DomainContract.BillingError -import app.k9mail.feature.funding.googleplay.domain.Outcome import app.k9mail.feature.funding.googleplay.domain.entity.Contribution import app.k9mail.feature.funding.googleplay.domain.entity.OneTimeContribution import app.k9mail.feature.funding.googleplay.domain.entity.RecurringContribution -import app.k9mail.feature.funding.googleplay.domain.handleAsync -import app.k9mail.feature.funding.googleplay.domain.mapFailure import com.android.billingclient.api.BillingClient.ProductType import com.android.billingclient.api.BillingFlowParams import com.android.billingclient.api.BillingFlowParams.ProductDetailsParams @@ -33,6 +30,9 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch +import net.thunderbird.core.outcome.Outcome +import net.thunderbird.core.outcome.handleAsync +import net.thunderbird.core.outcome.mapFailure import timber.log.Timber @Suppress("TooManyFunctions") diff --git a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/data/mapper/BillingResultMapper.kt b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/data/mapper/BillingResultMapper.kt index d7e1a8fe01..1a4a2ab3a5 100644 --- a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/data/mapper/BillingResultMapper.kt +++ b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/data/mapper/BillingResultMapper.kt @@ -2,9 +2,9 @@ package app.k9mail.feature.funding.googleplay.data.mapper import app.k9mail.feature.funding.googleplay.data.DataContract.Mapper import app.k9mail.feature.funding.googleplay.domain.DomainContract.BillingError -import app.k9mail.feature.funding.googleplay.domain.Outcome import com.android.billingclient.api.BillingClient.BillingResponseCode import com.android.billingclient.api.BillingResult +import net.thunderbird.core.outcome.Outcome class BillingResultMapper : Mapper.BillingResult { diff --git a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/domain/BillingManager.kt b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/domain/BillingManager.kt index d1c8f3d1f0..4ed77b4b1e 100644 --- a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/domain/BillingManager.kt +++ b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/domain/BillingManager.kt @@ -7,6 +7,9 @@ import app.k9mail.feature.funding.googleplay.domain.entity.Contribution import app.k9mail.feature.funding.googleplay.domain.entity.OneTimeContribution import app.k9mail.feature.funding.googleplay.domain.entity.RecurringContribution import kotlinx.coroutines.flow.StateFlow +import net.thunderbird.core.outcome.Outcome +import net.thunderbird.core.outcome.flatMapSuccess +import net.thunderbird.core.outcome.mapSuccess internal class BillingManager( private val billingClient: DataContract.BillingClient, diff --git a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/domain/DomainContract.kt b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/domain/DomainContract.kt index da1de2c614..b30a6f32aa 100644 --- a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/domain/DomainContract.kt +++ b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/domain/DomainContract.kt @@ -7,6 +7,7 @@ import app.k9mail.feature.funding.googleplay.domain.entity.OneTimeContribution import app.k9mail.feature.funding.googleplay.domain.entity.RecurringContribution import kotlinx.collections.immutable.ImmutableList import kotlinx.coroutines.flow.StateFlow +import net.thunderbird.core.outcome.Outcome interface DomainContract { diff --git a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/domain/usecase/GetAvailableContributions.kt b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/domain/usecase/GetAvailableContributions.kt index 57141edf71..b883660ac9 100644 --- a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/domain/usecase/GetAvailableContributions.kt +++ b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/domain/usecase/GetAvailableContributions.kt @@ -3,8 +3,8 @@ package app.k9mail.feature.funding.googleplay.domain.usecase import app.k9mail.feature.funding.googleplay.domain.DomainContract.BillingError import app.k9mail.feature.funding.googleplay.domain.DomainContract.BillingManager import app.k9mail.feature.funding.googleplay.domain.DomainContract.UseCase -import app.k9mail.feature.funding.googleplay.domain.Outcome import app.k9mail.feature.funding.googleplay.domain.entity.AvailableContributions +import net.thunderbird.core.outcome.Outcome class GetAvailableContributions( private val billingManager: BillingManager, diff --git a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionViewModel.kt b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionViewModel.kt index 3af6023dbe..760eb2e8ba 100644 --- a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionViewModel.kt +++ b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionViewModel.kt @@ -7,13 +7,13 @@ import app.k9mail.feature.funding.googleplay.domain.DomainContract.UseCase import app.k9mail.feature.funding.googleplay.domain.entity.AvailableContributions import app.k9mail.feature.funding.googleplay.domain.entity.Contribution import app.k9mail.feature.funding.googleplay.domain.entity.RecurringContribution -import app.k9mail.feature.funding.googleplay.domain.handle import app.k9mail.feature.funding.googleplay.ui.contribution.ContributionContract.Effect import app.k9mail.feature.funding.googleplay.ui.contribution.ContributionContract.Event import app.k9mail.feature.funding.googleplay.ui.contribution.ContributionContract.State import app.k9mail.feature.funding.googleplay.ui.contribution.ContributionContract.ViewModel import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.launch +import net.thunderbird.core.outcome.handle @Suppress("TooManyFunctions") internal class ContributionViewModel( diff --git a/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/data/mapper/BillingResultMapperTest.kt b/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/data/mapper/BillingResultMapperTest.kt index e049acb350..d4f25802b7 100644 --- a/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/data/mapper/BillingResultMapperTest.kt +++ b/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/data/mapper/BillingResultMapperTest.kt @@ -1,7 +1,6 @@ package app.k9mail.feature.funding.googleplay.data.mapper import app.k9mail.feature.funding.googleplay.domain.DomainContract.BillingError -import app.k9mail.feature.funding.googleplay.domain.Outcome import assertk.all import assertk.assertThat import assertk.assertions.isEqualTo @@ -12,6 +11,7 @@ import com.android.billingclient.api.BillingResult import kotlin.reflect.KClass import kotlin.test.Test import kotlinx.coroutines.test.runTest +import net.thunderbird.core.outcome.Outcome class BillingResultMapperTest { diff --git a/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionViewModelTest.kt b/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionViewModelTest.kt index c28294e536..54a06767e7 100644 --- a/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionViewModelTest.kt +++ b/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionViewModelTest.kt @@ -5,7 +5,6 @@ import app.k9mail.core.ui.compose.testing.mvi.MviContext import app.k9mail.core.ui.compose.testing.mvi.MviTurbines import app.k9mail.core.ui.compose.testing.mvi.runMviTest import app.k9mail.core.ui.compose.testing.mvi.turbinesWithInitialStateCheck -import app.k9mail.feature.funding.googleplay.domain.Outcome import app.k9mail.feature.funding.googleplay.domain.entity.AvailableContributions import app.k9mail.feature.funding.googleplay.domain.entity.Contribution import app.k9mail.feature.funding.googleplay.ui.contribution.ContributionContract.ContributionListState @@ -15,6 +14,7 @@ import app.k9mail.feature.funding.googleplay.ui.contribution.ContributionContrac import assertk.assertThat import assertk.assertions.isEqualTo import kotlin.test.Test +import net.thunderbird.core.outcome.Outcome import org.junit.Rule class ContributionViewModelTest { diff --git a/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/FakeBillingManager.kt b/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/FakeBillingManager.kt index 23de61fb3f..b168106100 100644 --- a/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/FakeBillingManager.kt +++ b/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/FakeBillingManager.kt @@ -3,10 +3,10 @@ package app.k9mail.feature.funding.googleplay.ui.contribution import android.app.Activity import app.k9mail.feature.funding.googleplay.domain.DomainContract import app.k9mail.feature.funding.googleplay.domain.DomainContract.BillingError -import app.k9mail.feature.funding.googleplay.domain.Outcome import app.k9mail.feature.funding.googleplay.domain.entity.Contribution import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow +import net.thunderbird.core.outcome.Outcome class FakeBillingManager : DomainContract.BillingManager { diff --git a/settings.gradle.kts b/settings.gradle.kts index 0d10145af3..044b3eacfd 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -126,6 +126,7 @@ include( include( ":core:common", ":core:featureflags", + ":core:outcome", ":core:testing", ":core:android:common", ":core:android:network", -- GitLab From ebd3cdd94da774863cdf03e7c6b32994a6717658 Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Fri, 28 Mar 2025 17:06:09 +0600 Subject: [PATCH 163/262] Refactor: move RemoteFolder to feature:folder:api-module --- feature/folder/api/build.gradle.kts | 8 ++++++++ .../net/thunderbird/feature/folder/api}/RemoteFolder.kt | 2 +- legacy/core/build.gradle.kts | 1 + .../fsck/k9/mailstore/SpecialFolderSelectionStrategy.kt | 7 +++++-- .../java/com/fsck/k9/mailstore/SpecialFolderUpdater.kt | 2 +- legacy/mailstore/build.gradle.kts | 1 + .../java/app/k9mail/legacy/mailstore/FolderRepository.kt | 2 +- legacy/ui/folder/build.gradle.kts | 1 + .../app/k9mail/legacy/ui/folder/FolderNameFormatter.kt | 2 +- .../k9/ui/settings/account/AccountSettingsFragment.kt | 2 +- .../k9/ui/settings/account/AccountSettingsViewModel.kt | 2 +- .../fsck/k9/ui/settings/account/FolderListPreference.kt | 2 +- settings.gradle.kts | 1 + 13 files changed, 24 insertions(+), 9 deletions(-) create mode 100644 feature/folder/api/build.gradle.kts rename {legacy/folder/src/main/kotlin/app/k9mail/legacy/folder => feature/folder/api/src/main/kotlin/net/thunderbird/feature/folder/api}/RemoteFolder.kt (79%) diff --git a/feature/folder/api/build.gradle.kts b/feature/folder/api/build.gradle.kts new file mode 100644 index 0000000000..8635096ef8 --- /dev/null +++ b/feature/folder/api/build.gradle.kts @@ -0,0 +1,8 @@ +plugins { + id(ThunderbirdPlugins.Library.jvm) + alias(libs.plugins.android.lint) +} + +dependencies { + implementation(projects.core.mail.folder.api) +} diff --git a/legacy/folder/src/main/kotlin/app/k9mail/legacy/folder/RemoteFolder.kt b/feature/folder/api/src/main/kotlin/net/thunderbird/feature/folder/api/RemoteFolder.kt similarity index 79% rename from legacy/folder/src/main/kotlin/app/k9mail/legacy/folder/RemoteFolder.kt rename to feature/folder/api/src/main/kotlin/net/thunderbird/feature/folder/api/RemoteFolder.kt index e3485b81df..3ad81bcc92 100644 --- a/legacy/folder/src/main/kotlin/app/k9mail/legacy/folder/RemoteFolder.kt +++ b/feature/folder/api/src/main/kotlin/net/thunderbird/feature/folder/api/RemoteFolder.kt @@ -1,4 +1,4 @@ -package app.k9mail.legacy.folder +package net.thunderbird.feature.folder.api import app.k9mail.core.mail.folder.api.FolderType diff --git a/legacy/core/build.gradle.kts b/legacy/core/build.gradle.kts index ae7a0dde3f..95f6b0ba8d 100644 --- a/legacy/core/build.gradle.kts +++ b/legacy/core/build.gradle.kts @@ -10,6 +10,7 @@ dependencies { api(projects.core.android.common) api(projects.core.android.network) api(projects.core.mail.folder.api) + api(projects.feature.folder.api) api(projects.legacy.account) api(projects.legacy.di) diff --git a/legacy/core/src/main/java/com/fsck/k9/mailstore/SpecialFolderSelectionStrategy.kt b/legacy/core/src/main/java/com/fsck/k9/mailstore/SpecialFolderSelectionStrategy.kt index 3c3a964a57..3b18c05b39 100644 --- a/legacy/core/src/main/java/com/fsck/k9/mailstore/SpecialFolderSelectionStrategy.kt +++ b/legacy/core/src/main/java/com/fsck/k9/mailstore/SpecialFolderSelectionStrategy.kt @@ -1,13 +1,16 @@ package com.fsck.k9.mailstore import app.k9mail.core.mail.folder.api.FolderType -import app.k9mail.legacy.folder.RemoteFolder +import net.thunderbird.feature.folder.api.RemoteFolder /** * Implements the automatic special folder selection strategy. */ class SpecialFolderSelectionStrategy { - fun selectSpecialFolder(folders: List, type: FolderType): RemoteFolder? { + fun selectSpecialFolder( + folders: List, + type: FolderType, + ): RemoteFolder? { return folders.firstOrNull { folder -> folder.type == type } } } diff --git a/legacy/core/src/main/java/com/fsck/k9/mailstore/SpecialFolderUpdater.kt b/legacy/core/src/main/java/com/fsck/k9/mailstore/SpecialFolderUpdater.kt index 8698ea92a3..0b7b8004f3 100644 --- a/legacy/core/src/main/java/com/fsck/k9/mailstore/SpecialFolderUpdater.kt +++ b/legacy/core/src/main/java/com/fsck/k9/mailstore/SpecialFolderUpdater.kt @@ -4,9 +4,9 @@ import app.k9mail.core.common.mail.Protocols import app.k9mail.core.mail.folder.api.FolderType import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.Account.SpecialFolderSelection -import app.k9mail.legacy.folder.RemoteFolder import app.k9mail.legacy.mailstore.FolderRepository import com.fsck.k9.Preferences +import net.thunderbird.feature.folder.api.RemoteFolder /** * Updates special folders in [Account] if they are marked as [SpecialFolderSelection.AUTOMATIC] or if they are marked diff --git a/legacy/mailstore/build.gradle.kts b/legacy/mailstore/build.gradle.kts index da4f5111e6..30d881c0e2 100644 --- a/legacy/mailstore/build.gradle.kts +++ b/legacy/mailstore/build.gradle.kts @@ -15,4 +15,5 @@ dependencies { implementation(projects.mail.common) implementation(projects.core.mail.folder.api) + implementation(projects.feature.folder.api) } diff --git a/legacy/mailstore/src/main/java/app/k9mail/legacy/mailstore/FolderRepository.kt b/legacy/mailstore/src/main/java/app/k9mail/legacy/mailstore/FolderRepository.kt index 7c112ad5b2..ccfd46d6a6 100644 --- a/legacy/mailstore/src/main/java/app/k9mail/legacy/mailstore/FolderRepository.kt +++ b/legacy/mailstore/src/main/java/app/k9mail/legacy/mailstore/FolderRepository.kt @@ -3,7 +3,6 @@ package app.k9mail.legacy.mailstore import app.k9mail.core.mail.folder.api.Folder import app.k9mail.core.mail.folder.api.FolderDetails import app.k9mail.legacy.account.Account -import app.k9mail.legacy.folder.RemoteFolder import app.k9mail.legacy.mailstore.FolderTypeMapper.folderTypeOf import app.k9mail.legacy.mailstore.RemoteFolderTypeMapper.toFolderType import kotlinx.coroutines.CoroutineDispatcher @@ -16,6 +15,7 @@ import kotlinx.coroutines.flow.buffer import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.flowOn +import net.thunderbird.feature.folder.api.RemoteFolder @Suppress("TooManyFunctions") class FolderRepository( diff --git a/legacy/ui/folder/build.gradle.kts b/legacy/ui/folder/build.gradle.kts index c949917b3d..5d53680cde 100644 --- a/legacy/ui/folder/build.gradle.kts +++ b/legacy/ui/folder/build.gradle.kts @@ -16,6 +16,7 @@ dependencies { implementation(projects.legacy.mailstore) implementation(projects.legacy.message) implementation(projects.legacy.search) + implementation(projects.feature.folder.api) implementation(libs.androidx.lifecycle.livedata.ktx) } diff --git a/legacy/ui/folder/src/main/java/app/k9mail/legacy/ui/folder/FolderNameFormatter.kt b/legacy/ui/folder/src/main/java/app/k9mail/legacy/ui/folder/FolderNameFormatter.kt index e01e65d635..1a99767d55 100644 --- a/legacy/ui/folder/src/main/java/app/k9mail/legacy/ui/folder/FolderNameFormatter.kt +++ b/legacy/ui/folder/src/main/java/app/k9mail/legacy/ui/folder/FolderNameFormatter.kt @@ -3,7 +3,7 @@ package app.k9mail.legacy.ui.folder import android.content.res.Resources import app.k9mail.core.mail.folder.api.Folder import app.k9mail.core.mail.folder.api.FolderType -import app.k9mail.legacy.folder.RemoteFolder +import net.thunderbird.feature.folder.api.RemoteFolder class FolderNameFormatter(private val resources: Resources) { fun displayName(folder: Folder): String { diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt index 3404260d44..fad5f27d9f 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt @@ -20,7 +20,6 @@ import app.k9mail.core.mail.folder.api.FolderType import app.k9mail.feature.launcher.FeatureLauncherActivity import app.k9mail.feature.launcher.FeatureLauncherTarget import app.k9mail.legacy.account.Account -import app.k9mail.legacy.folder.RemoteFolder import com.fsck.k9.account.BackgroundAccountRemover import com.fsck.k9.activity.ManageIdentities import com.fsck.k9.activity.setup.AccountSetupComposition @@ -39,6 +38,7 @@ import com.fsck.k9.ui.settings.oneTimeClickListener import com.fsck.k9.ui.settings.remove import com.fsck.k9.ui.settings.removeEntry import com.takisoft.preferencex.PreferenceFragmentCompat +import net.thunderbird.feature.folder.api.RemoteFolder import org.koin.android.ext.android.inject import org.koin.androidx.viewmodel.ext.android.activityViewModel import org.koin.core.parameter.parametersOf diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsViewModel.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsViewModel.kt index c18e5bde9d..ee8bfb04e7 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsViewModel.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsViewModel.kt @@ -8,13 +8,13 @@ import androidx.lifecycle.viewModelScope import app.k9mail.core.mail.folder.api.FolderType import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.AccountManager -import app.k9mail.legacy.folder.RemoteFolder import app.k9mail.legacy.mailstore.FolderRepository import com.fsck.k9.mailstore.SpecialFolderSelectionStrategy import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import net.thunderbird.feature.folder.api.RemoteFolder class AccountSettingsViewModel( private val accountManager: AccountManager, diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/FolderListPreference.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/FolderListPreference.kt index 54756e87d9..1f7aef49f1 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/FolderListPreference.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/FolderListPreference.kt @@ -8,9 +8,9 @@ import android.text.style.StyleSpan import android.util.AttributeSet import androidx.core.content.res.TypedArrayUtils import androidx.preference.ListPreference -import app.k9mail.legacy.folder.RemoteFolder import app.k9mail.legacy.ui.folder.FolderNameFormatter import com.fsck.k9.ui.R +import net.thunderbird.feature.folder.api.RemoteFolder import org.koin.core.component.KoinComponent import org.koin.core.component.inject import org.koin.core.parameter.parametersOf diff --git a/settings.gradle.kts b/settings.gradle.kts index 0d10145af3..a1e2cbc923 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -118,6 +118,7 @@ include( include( ":feature:funding:api", + ":feature:folder:api", ":feature:funding:googleplay", ":feature:funding:link", ":feature:funding:noop", -- GitLab From 184e9faa1d2bf048f05710b33c9e977afa4e3c43 Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Sat, 29 Mar 2025 05:37:39 +0600 Subject: [PATCH 164/262] Refactor: Move MailServerDirection into core:mail:mailserver module --- core/mail/mailserver/build.gradle.kts | 4 ++++ .../thunderbird/core/mail/mailserver}/MailServerDirection.kt | 2 +- legacy/core/build.gradle.kts | 1 + legacy/core/src/main/java/com/fsck/k9/LocalKeyStoreManager.kt | 2 +- settings.gradle.kts | 1 + 5 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 core/mail/mailserver/build.gradle.kts rename {legacy/core/src/main/java/com/fsck/k9/mail => core/mail/mailserver/src/main/kotlin/net/thunderbird/core/mail/mailserver}/MailServerDirection.kt (58%) diff --git a/core/mail/mailserver/build.gradle.kts b/core/mail/mailserver/build.gradle.kts new file mode 100644 index 0000000000..53abed51d1 --- /dev/null +++ b/core/mail/mailserver/build.gradle.kts @@ -0,0 +1,4 @@ +plugins { + id(ThunderbirdPlugins.Library.jvm) + alias(libs.plugins.android.lint) +} diff --git a/legacy/core/src/main/java/com/fsck/k9/mail/MailServerDirection.kt b/core/mail/mailserver/src/main/kotlin/net/thunderbird/core/mail/mailserver/MailServerDirection.kt similarity index 58% rename from legacy/core/src/main/java/com/fsck/k9/mail/MailServerDirection.kt rename to core/mail/mailserver/src/main/kotlin/net/thunderbird/core/mail/mailserver/MailServerDirection.kt index 4972f9073c..acf1b7d2ec 100644 --- a/legacy/core/src/main/java/com/fsck/k9/mail/MailServerDirection.kt +++ b/core/mail/mailserver/src/main/kotlin/net/thunderbird/core/mail/mailserver/MailServerDirection.kt @@ -1,4 +1,4 @@ -package com.fsck.k9.mail +package net.thunderbird.core.mail.mailserver enum class MailServerDirection { INCOMING, diff --git a/legacy/core/build.gradle.kts b/legacy/core/build.gradle.kts index 2cf1da40cb..76e64c5dc9 100644 --- a/legacy/core/build.gradle.kts +++ b/legacy/core/build.gradle.kts @@ -7,6 +7,7 @@ dependencies { api(projects.mail.common) api(projects.backend.api) api(projects.library.htmlCleaner) + api(projects.core.mail.mailserver) api(projects.core.android.common) api(projects.core.android.logging) api(projects.core.android.network) diff --git a/legacy/core/src/main/java/com/fsck/k9/LocalKeyStoreManager.kt b/legacy/core/src/main/java/com/fsck/k9/LocalKeyStoreManager.kt index 1041b8607b..082eb8c383 100644 --- a/legacy/core/src/main/java/com/fsck/k9/LocalKeyStoreManager.kt +++ b/legacy/core/src/main/java/com/fsck/k9/LocalKeyStoreManager.kt @@ -1,10 +1,10 @@ package com.fsck.k9 import app.k9mail.legacy.account.Account -import com.fsck.k9.mail.MailServerDirection import com.fsck.k9.mail.ssl.LocalKeyStore import java.security.cert.CertificateException import java.security.cert.X509Certificate +import net.thunderbird.core.mail.mailserver.MailServerDirection class LocalKeyStoreManager( private val localKeyStore: LocalKeyStore, diff --git a/settings.gradle.kts b/settings.gradle.kts index d696f51caa..af3e8e8288 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -221,3 +221,4 @@ check(JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_17)) { """.trimIndent() } include(":core:android:logging") +include(":core:mail:mailserver") -- GitLab From c42b968444206630c448c58223c973eacba6523b Mon Sep 17 00:00:00 2001 From: shamim-emon Date: Sat, 29 Mar 2025 11:42:46 +0600 Subject: [PATCH 165/262] Refactor: Delete unused module :legacy:folder --- legacy/core/build.gradle.kts | 1 - legacy/folder/build.gradle.kts | 13 ------------- legacy/mailstore/build.gradle.kts | 1 - legacy/ui/folder/build.gradle.kts | 1 - settings.gradle.kts | 1 - 5 files changed, 17 deletions(-) delete mode 100644 legacy/folder/build.gradle.kts diff --git a/legacy/core/build.gradle.kts b/legacy/core/build.gradle.kts index 2cf1da40cb..99ff0302cd 100644 --- a/legacy/core/build.gradle.kts +++ b/legacy/core/build.gradle.kts @@ -15,7 +15,6 @@ dependencies { api(projects.legacy.account) api(projects.legacy.di) - api(projects.legacy.folder) api(projects.legacy.mailstore) api(projects.legacy.message) api(projects.legacy.notification) diff --git a/legacy/folder/build.gradle.kts b/legacy/folder/build.gradle.kts deleted file mode 100644 index c7f7a404a2..0000000000 --- a/legacy/folder/build.gradle.kts +++ /dev/null @@ -1,13 +0,0 @@ -plugins { - id(ThunderbirdPlugins.Library.android) -} - -android { - namespace = "app.k9mail.legacy.folder" -} - -dependencies { - implementation(projects.mail.common) - - implementation(projects.core.mail.folder.api) -} diff --git a/legacy/mailstore/build.gradle.kts b/legacy/mailstore/build.gradle.kts index 30d881c0e2..19fc40fa40 100644 --- a/legacy/mailstore/build.gradle.kts +++ b/legacy/mailstore/build.gradle.kts @@ -9,7 +9,6 @@ android { dependencies { implementation(projects.legacy.account) implementation(projects.legacy.di) - implementation(projects.legacy.folder) implementation(projects.legacy.message) implementation(projects.legacy.search) diff --git a/legacy/ui/folder/build.gradle.kts b/legacy/ui/folder/build.gradle.kts index 5d53680cde..f682c840f6 100644 --- a/legacy/ui/folder/build.gradle.kts +++ b/legacy/ui/folder/build.gradle.kts @@ -12,7 +12,6 @@ dependencies { implementation(projects.core.mail.folder.api) implementation(projects.legacy.account) - implementation(projects.legacy.folder) implementation(projects.legacy.mailstore) implementation(projects.legacy.message) implementation(projects.legacy.search) diff --git a/settings.gradle.kts b/settings.gradle.kts index d696f51caa..bb6bae7150 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -157,7 +157,6 @@ include( ":legacy:core", ":legacy:crypto-openpgp", ":legacy:di", - ":legacy:folder", ":legacy:mailstore", ":legacy:message", ":legacy:notification", -- GitLab From 2f121dd0e13f3282460fc0f48293b86957c05bf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Mon, 31 Mar 2025 12:56:20 +0200 Subject: [PATCH 166/262] Move account defaults to AccountDefaultsProvider AccountPreferenceSerializer is not a good place to host these --- app-common/build.gradle.kts | 1 + .../thunderbird/app/common/AppCommonModule.kt | 7 +- .../account/CommonAccountDefaultsProvider.kt | 113 +++++++++++++++++- .../fsck/k9/AccountPreferenceSerializer.kt | 78 ------------ .../src/main/java/com/fsck/k9/Preferences.kt | 2 +- .../k9/controller/MessagingController.java | 17 ++- .../fsck/k9/notification/CoreKoinModule.kt | 1 - .../test/java/com/fsck/k9/PreferencesTest.kt | 1 - .../core/src/test/java/com/fsck/k9/TestApp.kt | 3 +- .../controller/MessagingControllerTest.java | 16 ++- .../core/FakeAccountDefaultsProvider.kt | 22 ++++ 11 files changed, 166 insertions(+), 95 deletions(-) create mode 100644 legacy/core/src/test/java/net/thunderbird/legacy/core/FakeAccountDefaultsProvider.kt diff --git a/app-common/build.gradle.kts b/app-common/build.gradle.kts index d90857eda9..2a9fd1e2ae 100644 --- a/app-common/build.gradle.kts +++ b/app-common/build.gradle.kts @@ -9,6 +9,7 @@ android { dependencies { api(projects.legacy.common) + implementation(projects.legacy.core) implementation(projects.legacy.account) implementation(projects.core.featureflags) diff --git a/app-common/src/main/kotlin/net/thunderbird/app/common/AppCommonModule.kt b/app-common/src/main/kotlin/net/thunderbird/app/common/AppCommonModule.kt index 7c4d2dd50f..f1a16063e8 100644 --- a/app-common/src/main/kotlin/net/thunderbird/app/common/AppCommonModule.kt +++ b/app-common/src/main/kotlin/net/thunderbird/app/common/AppCommonModule.kt @@ -6,5 +6,10 @@ import org.koin.core.module.Module import org.koin.dsl.module val appCommonModule: Module = module { - single { CommonAccountDefaultsProvider(featureFlagProvider = get()) } + single { + CommonAccountDefaultsProvider( + resourceProvider = get(), + featureFlagProvider = get(), + ) + } } diff --git a/app-common/src/main/kotlin/net/thunderbird/app/common/account/CommonAccountDefaultsProvider.kt b/app-common/src/main/kotlin/net/thunderbird/app/common/account/CommonAccountDefaultsProvider.kt index 2dd86b8630..6adb207ad6 100644 --- a/app-common/src/main/kotlin/net/thunderbird/app/common/account/CommonAccountDefaultsProvider.kt +++ b/app-common/src/main/kotlin/net/thunderbird/app/common/account/CommonAccountDefaultsProvider.kt @@ -3,21 +3,128 @@ package net.thunderbird.app.common.account import app.k9mail.core.featureflag.FeatureFlagProvider import app.k9mail.core.featureflag.toFeatureFlagKey import app.k9mail.legacy.account.Account +import app.k9mail.legacy.account.Account.Companion.DEFAULT_SORT_ASCENDING +import app.k9mail.legacy.account.Account.Companion.DEFAULT_SORT_TYPE +import app.k9mail.legacy.account.Account.Companion.DEFAULT_SYNC_INTERVAL +import app.k9mail.legacy.account.Account.Companion.NO_OPENPGP_KEY +import app.k9mail.legacy.account.Account.Companion.UNASSIGNED_ACCOUNT_NUMBER +import app.k9mail.legacy.account.Account.Expunge +import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.Account.ShowPictures +import app.k9mail.legacy.account.Account.SpecialFolderSelection import app.k9mail.legacy.account.AccountDefaultsProvider +import app.k9mail.legacy.account.Identity +import app.k9mail.legacy.notification.NotificationLight +import app.k9mail.legacy.notification.NotificationSettings +import app.k9mail.legacy.notification.NotificationVibration +import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_MAXIMUM_AUTO_DOWNLOAD_MESSAGE_SIZE +import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_MESSAGE_FORMAT +import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_MESSAGE_FORMAT_AUTO +import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_MESSAGE_READ_RECEIPT +import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_QUOTED_TEXT_SHOWN +import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_QUOTE_PREFIX +import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_QUOTE_STYLE +import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_REMOTE_SEARCH_NUM_RESULTS +import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_REPLY_AFTER_QUOTE +import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_RINGTONE_URI +import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_STRIP_SIGNATURE +import com.fsck.k9.CoreResourceProvider +import com.fsck.k9.K9 +@Suppress("MagicNumber") class CommonAccountDefaultsProvider( + private val resourceProvider: CoreResourceProvider, private val featureFlagProvider: FeatureFlagProvider, ) : AccountDefaultsProvider { - override fun applyDefaults(account: Account) { - account.isNotifyNewMail = featureFlagProvider.provide( + override fun applyDefaults(account: Account) = with(account) { + applyLegacyDefaults() + applyNotificationDefaults() + } + + @Suppress("LongMethod") + private fun Account.applyLegacyDefaults() { + automaticCheckIntervalMinutes = DEFAULT_SYNC_INTERVAL + idleRefreshMinutes = 24 + displayCount = K9.DEFAULT_VISIBLE_LIMIT + accountNumber = UNASSIGNED_ACCOUNT_NUMBER + isNotifyNewMail = true + folderNotifyNewMailMode = FolderMode.ALL + isNotifySync = false + isNotifySelfNewMail = true + isNotifyContactsMailOnly = false + isIgnoreChatMessages = false + messagesNotificationChannelVersion = 0 + folderDisplayMode = FolderMode.NOT_SECOND_CLASS + folderSyncMode = FolderMode.FIRST_CLASS + folderPushMode = FolderMode.NONE + sortType = DEFAULT_SORT_TYPE + setSortAscending(DEFAULT_SORT_TYPE, DEFAULT_SORT_ASCENDING) + showPictures = ShowPictures.NEVER + isSignatureBeforeQuotedText = false + expungePolicy = Expunge.EXPUNGE_IMMEDIATELY + importedAutoExpandFolder = null + legacyInboxFolder = null + maxPushFolders = 10 + isSubscribedFoldersOnly = false + maximumPolledMessageAge = -1 + maximumAutoDownloadMessageSize = DEFAULT_MAXIMUM_AUTO_DOWNLOAD_MESSAGE_SIZE + messageFormat = DEFAULT_MESSAGE_FORMAT + isMessageFormatAuto = DEFAULT_MESSAGE_FORMAT_AUTO + isMessageReadReceipt = DEFAULT_MESSAGE_READ_RECEIPT + quoteStyle = DEFAULT_QUOTE_STYLE + quotePrefix = DEFAULT_QUOTE_PREFIX + isDefaultQuotedTextShown = DEFAULT_QUOTED_TEXT_SHOWN + isReplyAfterQuote = DEFAULT_REPLY_AFTER_QUOTE + isStripSignature = DEFAULT_STRIP_SIGNATURE + isSyncRemoteDeletions = true + openPgpKey = NO_OPENPGP_KEY + isRemoteSearchFullText = false + remoteSearchNumResults = DEFAULT_REMOTE_SEARCH_NUM_RESULTS + isUploadSentMessages = true + isMarkMessageAsReadOnView = true + isMarkMessageAsReadOnDelete = true + isAlwaysShowCcBcc = false + lastSyncTime = 0L + lastFolderListRefreshTime = 0L + + setArchiveFolderId(null, SpecialFolderSelection.AUTOMATIC) + setDraftsFolderId(null, SpecialFolderSelection.AUTOMATIC) + setSentFolderId(null, SpecialFolderSelection.AUTOMATIC) + setSpamFolderId(null, SpecialFolderSelection.AUTOMATIC) + setTrashFolderId(null, SpecialFolderSelection.AUTOMATIC) + setArchiveFolderId(null, SpecialFolderSelection.AUTOMATIC) + + identities = ArrayList() + + val identity = Identity( + signatureUse = false, + signature = null, + description = resourceProvider.defaultIdentityDescription(), + ) + identities.add(identity) + + updateNotificationSettings { + NotificationSettings( + isRingEnabled = true, + ringtone = DEFAULT_RINGTONE_URI, + light = NotificationLight.Disabled, + vibration = NotificationVibration.DEFAULT, + ) + } + + resetChangeMarkers() + } + + private fun Account.applyNotificationDefaults() { + isNotifyNewMail = featureFlagProvider.provide( "email_notification_default".toFeatureFlagKey(), ).whenEnabledOrNot( onEnabled = { true }, onDisabledOrUnavailable = { false }, ) - account.isNotifySelfNewMail = featureFlagProvider.provide( + isNotifySelfNewMail = featureFlagProvider.provide( "email_notification_default".toFeatureFlagKey(), ).whenEnabledOrNot( onEnabled = { true }, diff --git a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt index e9f955bf6c..06183daef2 100644 --- a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt +++ b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt @@ -1,8 +1,6 @@ package com.fsck.k9 import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.Companion.DEFAULT_SORT_ASCENDING -import app.k9mail.legacy.account.Account.Companion.DEFAULT_SORT_TYPE import app.k9mail.legacy.account.Account.Companion.DEFAULT_SYNC_INTERVAL import app.k9mail.legacy.account.Account.Companion.NO_OPENPGP_KEY import app.k9mail.legacy.account.Account.Companion.UNASSIGNED_ACCOUNT_NUMBER @@ -25,7 +23,6 @@ import com.fsck.k9.preferences.StorageEditor import timber.log.Timber class AccountPreferenceSerializer( - private val resourceProvider: CoreResourceProvider, private val serverSettingsSerializer: ServerSettingsSerializer, ) { @@ -559,81 +556,6 @@ class AccountPreferenceSerializer( } } - fun loadDefaults(account: Account) { - with(account) { - automaticCheckIntervalMinutes = DEFAULT_SYNC_INTERVAL - idleRefreshMinutes = 24 - displayCount = K9.DEFAULT_VISIBLE_LIMIT - accountNumber = UNASSIGNED_ACCOUNT_NUMBER - isNotifyNewMail = true - folderNotifyNewMailMode = FolderMode.ALL - isNotifySync = false - isNotifySelfNewMail = true - isNotifyContactsMailOnly = false - isIgnoreChatMessages = false - messagesNotificationChannelVersion = 0 - folderDisplayMode = FolderMode.NOT_SECOND_CLASS - folderSyncMode = FolderMode.FIRST_CLASS - folderPushMode = FolderMode.NONE - sortType = DEFAULT_SORT_TYPE - setSortAscending(DEFAULT_SORT_TYPE, DEFAULT_SORT_ASCENDING) - showPictures = ShowPictures.NEVER - isSignatureBeforeQuotedText = false - expungePolicy = Expunge.EXPUNGE_IMMEDIATELY - importedAutoExpandFolder = null - legacyInboxFolder = null - maxPushFolders = 10 - isSubscribedFoldersOnly = false - maximumPolledMessageAge = -1 - maximumAutoDownloadMessageSize = DEFAULT_MAXIMUM_AUTO_DOWNLOAD_MESSAGE_SIZE - messageFormat = DEFAULT_MESSAGE_FORMAT - isMessageFormatAuto = DEFAULT_MESSAGE_FORMAT_AUTO - isMessageReadReceipt = DEFAULT_MESSAGE_READ_RECEIPT - quoteStyle = DEFAULT_QUOTE_STYLE - quotePrefix = DEFAULT_QUOTE_PREFIX - isDefaultQuotedTextShown = DEFAULT_QUOTED_TEXT_SHOWN - isReplyAfterQuote = DEFAULT_REPLY_AFTER_QUOTE - isStripSignature = DEFAULT_STRIP_SIGNATURE - isSyncRemoteDeletions = true - openPgpKey = NO_OPENPGP_KEY - isRemoteSearchFullText = false - remoteSearchNumResults = DEFAULT_REMOTE_SEARCH_NUM_RESULTS - isUploadSentMessages = true - isMarkMessageAsReadOnView = true - isMarkMessageAsReadOnDelete = true - isAlwaysShowCcBcc = false - lastSyncTime = 0L - lastFolderListRefreshTime = 0L - - setArchiveFolderId(null, SpecialFolderSelection.AUTOMATIC) - setDraftsFolderId(null, SpecialFolderSelection.AUTOMATIC) - setSentFolderId(null, SpecialFolderSelection.AUTOMATIC) - setSpamFolderId(null, SpecialFolderSelection.AUTOMATIC) - setTrashFolderId(null, SpecialFolderSelection.AUTOMATIC) - setArchiveFolderId(null, SpecialFolderSelection.AUTOMATIC) - - identities = ArrayList() - - val identity = Identity( - signatureUse = false, - signature = null, - description = resourceProvider.defaultIdentityDescription(), - ) - identities.add(identity) - - updateNotificationSettings { - NotificationSettings( - isRingEnabled = true, - ringtone = DEFAULT_RINGTONE_URI, - light = NotificationLight.Disabled, - vibration = NotificationVibration.DEFAULT, - ) - } - - resetChangeMarkers() - } - } - companion object { const val ACCOUNT_DESCRIPTION_KEY = "description" const val INCOMING_SERVER_SETTINGS_KEY = "incomingServerSettings" diff --git a/legacy/core/src/main/java/com/fsck/k9/Preferences.kt b/legacy/core/src/main/java/com/fsck/k9/Preferences.kt index 039cbc44bb..27641c184c 100644 --- a/legacy/core/src/main/java/com/fsck/k9/Preferences.kt +++ b/legacy/core/src/main/java/com/fsck/k9/Preferences.kt @@ -181,7 +181,7 @@ class Preferences internal constructor( fun newAccount(accountUuid: String): Account { val account = Account(accountUuid, K9::isSensitiveDebugLoggingEnabled) - accountPreferenceSerializer.loadDefaults(account) + accountDefaultsProvider.applyDefaults(account) synchronized(accountLock) { newAccount = account diff --git a/legacy/core/src/main/java/com/fsck/k9/controller/MessagingController.java b/legacy/core/src/main/java/com/fsck/k9/controller/MessagingController.java index ba1732a2fc..e463fc8931 100644 --- a/legacy/core/src/main/java/com/fsck/k9/controller/MessagingController.java +++ b/legacy/core/src/main/java/com/fsck/k9/controller/MessagingController.java @@ -143,11 +143,18 @@ public class MessagingController implements MessagingControllerRegistry, Messagi } - MessagingController(Context context, NotificationController notificationController, - NotificationStrategy notificationStrategy, LocalStoreProvider localStoreProvider, - BackendManager backendManager, Preferences preferences, MessageStoreManager messageStoreManager, - SaveMessageDataCreator saveMessageDataCreator, SpecialLocalFoldersCreator specialLocalFoldersCreator, - LocalDeleteOperationDecider localDeleteOperationDecider, List controllerExtensions, + MessagingController( + Context context, + NotificationController notificationController, + NotificationStrategy notificationStrategy, + LocalStoreProvider localStoreProvider, + BackendManager backendManager, + Preferences preferences, + MessageStoreManager messageStoreManager, + SaveMessageDataCreator saveMessageDataCreator, + SpecialLocalFoldersCreator specialLocalFoldersCreator, + LocalDeleteOperationDecider localDeleteOperationDecider, + List controllerExtensions, FeatureFlagProvider featureFlagProvider ) { this.context = context; diff --git a/legacy/core/src/main/java/com/fsck/k9/notification/CoreKoinModule.kt b/legacy/core/src/main/java/com/fsck/k9/notification/CoreKoinModule.kt index 2e9861d8c4..fe709af760 100644 --- a/legacy/core/src/main/java/com/fsck/k9/notification/CoreKoinModule.kt +++ b/legacy/core/src/main/java/com/fsck/k9/notification/CoreKoinModule.kt @@ -37,7 +37,6 @@ val coreNotificationModule = module { } single { AccountPreferenceSerializer( - resourceProvider = get(), serverSettingsSerializer = get(), ) } diff --git a/legacy/core/src/test/java/com/fsck/k9/PreferencesTest.kt b/legacy/core/src/test/java/com/fsck/k9/PreferencesTest.kt index cfb7224535..4243854bde 100644 --- a/legacy/core/src/test/java/com/fsck/k9/PreferencesTest.kt +++ b/legacy/core/src/test/java/com/fsck/k9/PreferencesTest.kt @@ -17,7 +17,6 @@ class PreferencesTest { storagePersister = InMemoryStoragePersister(), localStoreProvider = mock(), accountPreferenceSerializer = AccountPreferenceSerializer( - resourceProvider = mock(), serverSettingsSerializer = mock { on { serialize(any()) } doReturn "" on { deserialize(any()) } doReturn SERVER_SETTINGS diff --git a/legacy/core/src/test/java/com/fsck/k9/TestApp.kt b/legacy/core/src/test/java/com/fsck/k9/TestApp.kt index 094cc68a31..3a9855c1d3 100644 --- a/legacy/core/src/test/java/com/fsck/k9/TestApp.kt +++ b/legacy/core/src/test/java/com/fsck/k9/TestApp.kt @@ -17,6 +17,7 @@ import com.fsck.k9.notification.NotificationStrategy import com.fsck.k9.preferences.InMemoryStoragePersister import com.fsck.k9.preferences.StoragePersister import com.fsck.k9.storage.storageModule +import net.thunderbird.legacy.core.FakeAccountDefaultsProvider import org.koin.core.qualifier.named import org.koin.dsl.module import org.mockito.kotlin.mock @@ -47,7 +48,7 @@ val testModule = module { single { mock() } single { mock() } single(named("controllerExtensions")) { emptyList() } - single { mock() } + single { FakeAccountDefaultsProvider() } single { mock() } single { InMemoryFeatureFlagProvider( diff --git a/legacy/core/src/test/java/com/fsck/k9/controller/MessagingControllerTest.java b/legacy/core/src/test/java/com/fsck/k9/controller/MessagingControllerTest.java index 897a8c6ba8..c6240d9976 100644 --- a/legacy/core/src/test/java/com/fsck/k9/controller/MessagingControllerTest.java +++ b/legacy/core/src/test/java/com/fsck/k9/controller/MessagingControllerTest.java @@ -124,12 +124,20 @@ public class MessagingControllerTest extends K9RobolectricTest { preferences = Preferences.getPreferences(); featureFlagProvider = key -> Disabled.INSTANCE; - controller = new MessagingController(appContext, notificationController, notificationStrategy, - localStoreProvider, backendManager, preferences, messageStoreManager, - saveMessageDataCreator, specialLocalFoldersCreator, new LocalDeleteOperationDecider(), + controller = new MessagingController( + appContext, + notificationController, + notificationStrategy, + localStoreProvider, + backendManager, + preferences, + messageStoreManager, + saveMessageDataCreator, + specialLocalFoldersCreator, + new LocalDeleteOperationDecider(), Collections.emptyList(), featureFlagProvider - ); + ); configureAccount(); configureBackendManager(); diff --git a/legacy/core/src/test/java/net/thunderbird/legacy/core/FakeAccountDefaultsProvider.kt b/legacy/core/src/test/java/net/thunderbird/legacy/core/FakeAccountDefaultsProvider.kt new file mode 100644 index 0000000000..f968168254 --- /dev/null +++ b/legacy/core/src/test/java/net/thunderbird/legacy/core/FakeAccountDefaultsProvider.kt @@ -0,0 +1,22 @@ +package net.thunderbird.legacy.core + +import app.k9mail.legacy.account.Account +import app.k9mail.legacy.account.AccountDefaultsProvider +import app.k9mail.legacy.account.Identity + +class FakeAccountDefaultsProvider : AccountDefaultsProvider { + override fun applyDefaults(account: Account) { + with(account) { + // Just ensure a working account object is created + + identities = ArrayList() + + val identity = Identity( + signatureUse = false, + signature = null, + description = "Fake identity", + ) + identities.add(identity) + } + } +} -- GitLab From 22eb8898745812afcf5067e5e6f52f925d1ef03c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Mon, 31 Mar 2025 13:54:01 +0200 Subject: [PATCH 167/262] Move shared account defaults from serializer to AccountDefaultsProvider --- .../account/CommonAccountDefaultsProvider.kt | 22 +++++++------- .../legacy/account/AccountDefaultsProvider.kt | 23 ++++++++++++++ .../fsck/k9/AccountPreferenceSerializer.kt | 26 +++++++--------- .../AccountSettingsDescriptions.java | 30 ++++++++++++------- 4 files changed, 65 insertions(+), 36 deletions(-) diff --git a/app-common/src/main/kotlin/net/thunderbird/app/common/account/CommonAccountDefaultsProvider.kt b/app-common/src/main/kotlin/net/thunderbird/app/common/account/CommonAccountDefaultsProvider.kt index 6adb207ad6..15db15bda7 100644 --- a/app-common/src/main/kotlin/net/thunderbird/app/common/account/CommonAccountDefaultsProvider.kt +++ b/app-common/src/main/kotlin/net/thunderbird/app/common/account/CommonAccountDefaultsProvider.kt @@ -13,21 +13,21 @@ import app.k9mail.legacy.account.Account.FolderMode import app.k9mail.legacy.account.Account.ShowPictures import app.k9mail.legacy.account.Account.SpecialFolderSelection import app.k9mail.legacy.account.AccountDefaultsProvider +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MAXIMUM_AUTO_DOWNLOAD_MESSAGE_SIZE +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MESSAGE_FORMAT +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MESSAGE_FORMAT_AUTO +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MESSAGE_READ_RECEIPT +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_QUOTED_TEXT_SHOWN +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_QUOTE_PREFIX +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_QUOTE_STYLE +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_REMOTE_SEARCH_NUM_RESULTS +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_REPLY_AFTER_QUOTE +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_RINGTONE_URI +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_STRIP_SIGNATURE import app.k9mail.legacy.account.Identity import app.k9mail.legacy.notification.NotificationLight import app.k9mail.legacy.notification.NotificationSettings import app.k9mail.legacy.notification.NotificationVibration -import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_MAXIMUM_AUTO_DOWNLOAD_MESSAGE_SIZE -import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_MESSAGE_FORMAT -import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_MESSAGE_FORMAT_AUTO -import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_MESSAGE_READ_RECEIPT -import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_QUOTED_TEXT_SHOWN -import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_QUOTE_PREFIX -import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_QUOTE_STYLE -import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_REMOTE_SEARCH_NUM_RESULTS -import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_REPLY_AFTER_QUOTE -import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_RINGTONE_URI -import com.fsck.k9.AccountPreferenceSerializer.Companion.DEFAULT_STRIP_SIGNATURE import com.fsck.k9.CoreResourceProvider import com.fsck.k9.K9 diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/AccountDefaultsProvider.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/AccountDefaultsProvider.kt index b0cdaee7ac..ec41139e18 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/AccountDefaultsProvider.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/AccountDefaultsProvider.kt @@ -1,5 +1,28 @@ package app.k9mail.legacy.account +import app.k9mail.legacy.account.Account.MessageFormat +import app.k9mail.legacy.account.Account.QuoteStyle + fun interface AccountDefaultsProvider { fun applyDefaults(account: Account) + + companion object { + const val DEFAULT_MAXIMUM_AUTO_DOWNLOAD_MESSAGE_SIZE = 131072 + + @JvmStatic + val DEFAULT_MESSAGE_FORMAT = MessageFormat.HTML + + const val DEFAULT_MESSAGE_FORMAT_AUTO = false + const val DEFAULT_MESSAGE_READ_RECEIPT = false + const val DEFAULT_QUOTED_TEXT_SHOWN = true + const val DEFAULT_QUOTE_PREFIX = ">" + + @JvmStatic + val DEFAULT_QUOTE_STYLE = QuoteStyle.PREFIX + + const val DEFAULT_REMOTE_SEARCH_NUM_RESULTS = 25 + const val DEFAULT_REPLY_AFTER_QUOTE = false + const val DEFAULT_RINGTONE_URI = "content://settings/system/notification_sound" + const val DEFAULT_STRIP_SIGNATURE = true + } } diff --git a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt index 06183daef2..0f63d07307 100644 --- a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt +++ b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt @@ -12,6 +12,17 @@ import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.Account.ShowPictures import app.k9mail.legacy.account.Account.SortType import app.k9mail.legacy.account.Account.SpecialFolderSelection +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MAXIMUM_AUTO_DOWNLOAD_MESSAGE_SIZE +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MESSAGE_FORMAT +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MESSAGE_FORMAT_AUTO +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MESSAGE_READ_RECEIPT +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_QUOTED_TEXT_SHOWN +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_QUOTE_PREFIX +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_QUOTE_STYLE +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_REMOTE_SEARCH_NUM_RESULTS +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_REPLY_AFTER_QUOTE +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_RINGTONE_URI +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_STRIP_SIGNATURE import app.k9mail.legacy.account.Identity import app.k9mail.legacy.notification.NotificationLight import app.k9mail.legacy.notification.NotificationSettings @@ -566,20 +577,5 @@ class AccountPreferenceSerializer( const val IDENTITY_DESCRIPTION_KEY = "description" const val FALLBACK_ACCOUNT_COLOR = 0x0099CC - - @JvmField - val DEFAULT_MESSAGE_FORMAT = MessageFormat.HTML - - @JvmField - val DEFAULT_QUOTE_STYLE = QuoteStyle.PREFIX - const val DEFAULT_MESSAGE_FORMAT_AUTO = false - const val DEFAULT_MESSAGE_READ_RECEIPT = false - const val DEFAULT_QUOTE_PREFIX = ">" - const val DEFAULT_QUOTED_TEXT_SHOWN = true - const val DEFAULT_REPLY_AFTER_QUOTE = false - const val DEFAULT_STRIP_SIGNATURE = true - const val DEFAULT_REMOTE_SEARCH_NUM_RESULTS = 25 - const val DEFAULT_RINGTONE_URI = "content://settings/system/notification_sound" - const val DEFAULT_MAXIMUM_AUTO_DOWNLOAD_MESSAGE_SIZE = 131072 } } diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java index 326e57f9a5..513ef9d5f3 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java @@ -9,6 +9,7 @@ import java.util.TreeMap; import android.content.Context; +import app.k9mail.legacy.account.AccountDefaultsProvider; import app.k9mail.legacy.notification.NotificationLight; import app.k9mail.legacy.account.Account; import app.k9mail.legacy.account.Account.DeletePolicy; @@ -19,7 +20,6 @@ import app.k9mail.legacy.account.Account.QuoteStyle; import app.k9mail.legacy.account.Account.ShowPictures; import app.k9mail.legacy.account.Account.SortType; import app.k9mail.legacy.account.Account.SpecialFolderSelection; -import com.fsck.k9.AccountPreferenceSerializer; import app.k9mail.legacy.di.DI; import com.fsck.k9.K9; import com.fsck.k9.core.R; @@ -39,6 +39,13 @@ import com.fsck.k9.preferences.upgrader.AccountSettingsUpgraderTo80; import com.fsck.k9.preferences.upgrader.AccountSettingsUpgraderTo81; import com.fsck.k9.preferences.upgrader.AccountSettingsUpgraderTo91; +import static app.k9mail.legacy.account.AccountDefaultsProvider.DEFAULT_MESSAGE_FORMAT_AUTO; +import static app.k9mail.legacy.account.AccountDefaultsProvider.DEFAULT_MESSAGE_READ_RECEIPT; +import static app.k9mail.legacy.account.AccountDefaultsProvider.DEFAULT_QUOTED_TEXT_SHOWN; +import static app.k9mail.legacy.account.AccountDefaultsProvider.DEFAULT_QUOTE_PREFIX; +import static app.k9mail.legacy.account.AccountDefaultsProvider.DEFAULT_REMOTE_SEARCH_NUM_RESULTS; +import static app.k9mail.legacy.account.AccountDefaultsProvider.DEFAULT_REPLY_AFTER_QUOTE; +import static app.k9mail.legacy.account.AccountDefaultsProvider.DEFAULT_STRIP_SIGNATURE; import static com.fsck.k9.preferences.upgrader.AccountSettingsUpgraderTo53.FOLDER_NONE; @@ -76,7 +83,7 @@ class AccountSettingsDescriptions { new V(1, new ColorSetting(0xFF0000FF)) )); s.put("defaultQuotedTextShown", Settings.versions( - new V(1, new BooleanSetting(AccountPreferenceSerializer.DEFAULT_QUOTED_TEXT_SHOWN)) + new V(1, new BooleanSetting(DEFAULT_QUOTED_TEXT_SHOWN)) )); s.put("deletePolicy", Settings.versions( new V(1, new DeletePolicySetting(DeletePolicy.NEVER)) @@ -135,13 +142,16 @@ class AccountSettingsDescriptions { new V(1, new IntegerResourceSetting(-1, R.array.message_age_values)) )); s.put("messageFormat", Settings.versions( - new V(1, new EnumSetting<>(MessageFormat.class, AccountPreferenceSerializer.DEFAULT_MESSAGE_FORMAT)) + new V(1, new EnumSetting<>( + MessageFormat.class, + AccountDefaultsProvider.getDEFAULT_MESSAGE_FORMAT() + )) )); s.put("messageFormatAuto", Settings.versions( - new V(2, new BooleanSetting(AccountPreferenceSerializer.DEFAULT_MESSAGE_FORMAT_AUTO)) + new V(2, new BooleanSetting(DEFAULT_MESSAGE_FORMAT_AUTO)) )); s.put("messageReadReceipt", Settings.versions( - new V(1, new BooleanSetting(AccountPreferenceSerializer.DEFAULT_MESSAGE_READ_RECEIPT)) + new V(1, new BooleanSetting(DEFAULT_MESSAGE_READ_RECEIPT)) )); s.put("notifyMailCheck", Settings.versions( new V(1, new BooleanSetting(false)) @@ -157,13 +167,13 @@ class AccountSettingsDescriptions { new V(1, new BooleanSetting(true)) )); s.put("quotePrefix", Settings.versions( - new V(1, new StringSetting(AccountPreferenceSerializer.DEFAULT_QUOTE_PREFIX)) + new V(1, new StringSetting(DEFAULT_QUOTE_PREFIX)) )); s.put("quoteStyle", Settings.versions( - new V(1, new EnumSetting<>(QuoteStyle.class, AccountPreferenceSerializer.DEFAULT_QUOTE_STYLE)) + new V(1, new EnumSetting<>(QuoteStyle.class, AccountDefaultsProvider.getDEFAULT_QUOTE_STYLE())) )); s.put("replyAfterQuote", Settings.versions( - new V(1, new BooleanSetting(AccountPreferenceSerializer.DEFAULT_REPLY_AFTER_QUOTE)) + new V(1, new BooleanSetting(DEFAULT_REPLY_AFTER_QUOTE)) )); s.put("ring", Settings.versions( new V(1, new BooleanSetting(true)) @@ -192,7 +202,7 @@ class AccountSettingsDescriptions { new V(53, new StringSetting(null)) )); s.put("stripSignature", Settings.versions( - new V(2, new BooleanSetting(AccountPreferenceSerializer.DEFAULT_STRIP_SIGNATURE)) + new V(2, new BooleanSetting(DEFAULT_STRIP_SIGNATURE)) )); s.put("subscribedFoldersOnly", Settings.versions( new V(1, new BooleanSetting(false)) @@ -226,7 +236,7 @@ class AccountSettingsDescriptions { new V(1, new IntegerRangeSetting(1, 10, 5)) )); s.put("remoteSearchNumResults", Settings.versions( - new V(18, new IntegerResourceSetting(AccountPreferenceSerializer.DEFAULT_REMOTE_SEARCH_NUM_RESULTS, + new V(18, new IntegerResourceSetting(DEFAULT_REMOTE_SEARCH_NUM_RESULTS, R.array.remote_search_num_results_values)) )); s.put("remoteSearchFullText", Settings.versions( -- GitLab From 5b55aaf6842ce2629a6b5e47fa98dcc70502e7fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Mon, 31 Mar 2025 14:34:46 +0200 Subject: [PATCH 168/262] Move shared account defaults from account to AccountDefaultsProvider --- .../common/account/CommonAccountDefaultsProvider.kt | 10 +++++----- .../main/java/app/k9mail/legacy/account/Account.kt | 7 +------ .../k9mail/legacy/account/AccountDefaultsProvider.kt | 12 ++++++++++++ .../java/com/fsck/k9/AccountPreferenceSerializer.kt | 6 +++--- legacy/core/src/main/java/com/fsck/k9/K9.kt | 8 ++++---- legacy/core/src/main/java/com/fsck/k9/Preferences.kt | 3 ++- .../k9/preferences/AccountSettingsDescriptions.java | 5 +++-- .../k9/preferences/GeneralSettingsDescriptions.java | 6 +++--- .../fsck/k9/activity/compose/RecipientPresenter.kt | 3 ++- .../ui/settings/account/AccountSettingsFragment.kt | 3 ++- 10 files changed, 37 insertions(+), 26 deletions(-) diff --git a/app-common/src/main/kotlin/net/thunderbird/app/common/account/CommonAccountDefaultsProvider.kt b/app-common/src/main/kotlin/net/thunderbird/app/common/account/CommonAccountDefaultsProvider.kt index 15db15bda7..aab793118a 100644 --- a/app-common/src/main/kotlin/net/thunderbird/app/common/account/CommonAccountDefaultsProvider.kt +++ b/app-common/src/main/kotlin/net/thunderbird/app/common/account/CommonAccountDefaultsProvider.kt @@ -3,11 +3,6 @@ package net.thunderbird.app.common.account import app.k9mail.core.featureflag.FeatureFlagProvider import app.k9mail.core.featureflag.toFeatureFlagKey import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.Companion.DEFAULT_SORT_ASCENDING -import app.k9mail.legacy.account.Account.Companion.DEFAULT_SORT_TYPE -import app.k9mail.legacy.account.Account.Companion.DEFAULT_SYNC_INTERVAL -import app.k9mail.legacy.account.Account.Companion.NO_OPENPGP_KEY -import app.k9mail.legacy.account.Account.Companion.UNASSIGNED_ACCOUNT_NUMBER import app.k9mail.legacy.account.Account.Expunge import app.k9mail.legacy.account.Account.FolderMode import app.k9mail.legacy.account.Account.ShowPictures @@ -23,7 +18,12 @@ import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_QUOTE import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_REMOTE_SEARCH_NUM_RESULTS import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_REPLY_AFTER_QUOTE import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_RINGTONE_URI +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_SORT_ASCENDING +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_SORT_TYPE import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_STRIP_SIGNATURE +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_SYNC_INTERVAL +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.NO_OPENPGP_KEY +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.UNASSIGNED_ACCOUNT_NUMBER import app.k9mail.legacy.account.Identity import app.k9mail.legacy.notification.NotificationLight import app.k9mail.legacy.notification.NotificationSettings diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt index 836223c3da..ca8b94258b 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt @@ -1,5 +1,6 @@ package app.k9mail.legacy.account +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.NO_OPENPGP_KEY import app.k9mail.legacy.notification.NotificationSettings import com.fsck.k9.backend.api.SyncConfig.ExpungePolicy import com.fsck.k9.mail.Address @@ -666,12 +667,6 @@ class Account( */ const val OUTBOX_NAME = "Outbox" - @JvmField - val DEFAULT_SORT_TYPE = SortType.SORT_DATE - const val DEFAULT_SORT_ASCENDING = false - const val NO_OPENPGP_KEY: Long = 0 - const val UNASSIGNED_ACCOUNT_NUMBER = -1 const val INTERVAL_MINUTES_NEVER = -1 - const val DEFAULT_SYNC_INTERVAL = 60 } } diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/AccountDefaultsProvider.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/AccountDefaultsProvider.kt index ec41139e18..37c8f4d33d 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/AccountDefaultsProvider.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/AccountDefaultsProvider.kt @@ -2,6 +2,7 @@ package app.k9mail.legacy.account import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle +import app.k9mail.legacy.account.Account.SortType fun interface AccountDefaultsProvider { fun applyDefaults(account: Account) @@ -23,6 +24,17 @@ fun interface AccountDefaultsProvider { const val DEFAULT_REMOTE_SEARCH_NUM_RESULTS = 25 const val DEFAULT_REPLY_AFTER_QUOTE = false const val DEFAULT_RINGTONE_URI = "content://settings/system/notification_sound" + const val DEFAULT_SORT_ASCENDING = false + + @JvmStatic + val DEFAULT_SORT_TYPE = SortType.SORT_DATE + const val DEFAULT_STRIP_SIGNATURE = true + + const val DEFAULT_SYNC_INTERVAL = 60 + + const val NO_OPENPGP_KEY: Long = 0 + + const val UNASSIGNED_ACCOUNT_NUMBER = -1 } } diff --git a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt index 0f63d07307..c71d7ace5a 100644 --- a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt +++ b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt @@ -1,9 +1,6 @@ package com.fsck.k9 import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.Companion.DEFAULT_SYNC_INTERVAL -import app.k9mail.legacy.account.Account.Companion.NO_OPENPGP_KEY -import app.k9mail.legacy.account.Account.Companion.UNASSIGNED_ACCOUNT_NUMBER import app.k9mail.legacy.account.Account.DeletePolicy import app.k9mail.legacy.account.Account.Expunge import app.k9mail.legacy.account.Account.FolderMode @@ -23,6 +20,9 @@ import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_REMOT import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_REPLY_AFTER_QUOTE import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_RINGTONE_URI import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_STRIP_SIGNATURE +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_SYNC_INTERVAL +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.NO_OPENPGP_KEY +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.UNASSIGNED_ACCOUNT_NUMBER import app.k9mail.legacy.account.Identity import app.k9mail.legacy.notification.NotificationLight import app.k9mail.legacy.notification.NotificationSettings diff --git a/legacy/core/src/main/java/com/fsck/k9/K9.kt b/legacy/core/src/main/java/com/fsck/k9/K9.kt index 02f3d61f56..3f72c6509f 100644 --- a/legacy/core/src/main/java/com/fsck/k9/K9.kt +++ b/legacy/core/src/main/java/com/fsck/k9/K9.kt @@ -5,8 +5,8 @@ import android.content.SharedPreferences import app.k9mail.core.featureflag.FeatureFlagProvider import app.k9mail.core.featureflag.toFeatureFlagKey import app.k9mail.feature.telemetry.api.TelemetryManager -import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.Account.SortType +import app.k9mail.legacy.account.AccountDefaultsProvider import app.k9mail.legacy.di.DI import com.fsck.k9.core.BuildConfig import com.fsck.k9.mail.K9MailLib @@ -226,7 +226,7 @@ object K9 : KoinComponent { @get:Synchronized @set:Synchronized @JvmStatic - var sortType: SortType = Account.DEFAULT_SORT_TYPE + var sortType: SortType = AccountDefaultsProvider.DEFAULT_SORT_TYPE private val sortAscending = mutableMapOf() @JvmStatic @@ -369,9 +369,9 @@ object K9 : KoinComponent { isConfirmDeleteFromNotification = storage.getBoolean("confirmDeleteFromNotification", true) isConfirmMarkAllRead = storage.getBoolean("confirmMarkAllRead", true) - sortType = storage.getEnum("sortTypeEnum", Account.DEFAULT_SORT_TYPE) + sortType = storage.getEnum("sortTypeEnum", AccountDefaultsProvider.DEFAULT_SORT_TYPE) - val sortAscendingSetting = storage.getBoolean("sortAscending", Account.DEFAULT_SORT_ASCENDING) + val sortAscendingSetting = storage.getBoolean("sortAscending", AccountDefaultsProvider.DEFAULT_SORT_ASCENDING) sortAscending[sortType] = sortAscendingSetting notificationQuickDeleteBehaviour = storage.getEnum("notificationQuickDelete", NotificationQuickDelete.ALWAYS) diff --git a/legacy/core/src/main/java/com/fsck/k9/Preferences.kt b/legacy/core/src/main/java/com/fsck/k9/Preferences.kt index 27641c184c..a4c657dbac 100644 --- a/legacy/core/src/main/java/com/fsck/k9/Preferences.kt +++ b/legacy/core/src/main/java/com/fsck/k9/Preferences.kt @@ -4,6 +4,7 @@ import androidx.annotation.GuardedBy import androidx.annotation.RestrictTo import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.AccountDefaultsProvider +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.UNASSIGNED_ACCOUNT_NUMBER import app.k9mail.legacy.account.AccountManager import app.k9mail.legacy.account.AccountRemovedListener import app.k9mail.legacy.account.AccountsChangeListener @@ -227,7 +228,7 @@ class Preferences internal constructor( } private fun ensureAssignedAccountNumber(account: Account) { - if (account.accountNumber != Account.UNASSIGNED_ACCOUNT_NUMBER) return + if (account.accountNumber != UNASSIGNED_ACCOUNT_NUMBER) return account.accountNumber = generateAccountNumber() } diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java index 513ef9d5f3..de056199d4 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java @@ -45,6 +45,7 @@ import static app.k9mail.legacy.account.AccountDefaultsProvider.DEFAULT_QUOTED_T import static app.k9mail.legacy.account.AccountDefaultsProvider.DEFAULT_QUOTE_PREFIX; import static app.k9mail.legacy.account.AccountDefaultsProvider.DEFAULT_REMOTE_SEARCH_NUM_RESULTS; import static app.k9mail.legacy.account.AccountDefaultsProvider.DEFAULT_REPLY_AFTER_QUOTE; +import static app.k9mail.legacy.account.AccountDefaultsProvider.DEFAULT_SORT_ASCENDING; import static app.k9mail.legacy.account.AccountDefaultsProvider.DEFAULT_STRIP_SIGNATURE; import static com.fsck.k9.preferences.upgrader.AccountSettingsUpgraderTo53.FOLDER_NONE; @@ -186,10 +187,10 @@ class AccountSettingsDescriptions { new V(53, new StringSetting(null)) )); s.put("sortTypeEnum", Settings.versions( - new V(9, new EnumSetting<>(SortType.class, Account.DEFAULT_SORT_TYPE)) + new V(9, new EnumSetting<>(SortType.class, AccountDefaultsProvider.getDEFAULT_SORT_TYPE())) )); s.put("sortAscending", Settings.versions( - new V(9, new BooleanSetting(Account.DEFAULT_SORT_ASCENDING)) + new V(9, new BooleanSetting(DEFAULT_SORT_ASCENDING)) )); s.put("showPicturesEnum", Settings.versions( new V(1, new EnumSetting<>(ShowPictures.class, ShowPictures.NEVER)) diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/GeneralSettingsDescriptions.java b/legacy/core/src/main/java/com/fsck/k9/preferences/GeneralSettingsDescriptions.java index 96928500a2..657d05107e 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/GeneralSettingsDescriptions.java +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/GeneralSettingsDescriptions.java @@ -10,8 +10,8 @@ import java.util.TreeMap; import android.content.Context; import app.k9mail.feature.telemetry.api.TelemetryManager; -import app.k9mail.legacy.account.Account; import app.k9mail.legacy.account.Account.SortType; +import app.k9mail.legacy.account.AccountDefaultsProvider; import app.k9mail.legacy.di.DI; import app.k9mail.legacy.preferences.AppTheme; import app.k9mail.legacy.preferences.SubTheme; @@ -178,10 +178,10 @@ class GeneralSettingsDescriptions { new V(102, new BooleanSetting(true)) )); s.put("sortTypeEnum", Settings.versions( - new V(10, new EnumSetting<>(SortType.class, Account.DEFAULT_SORT_TYPE)) + new V(10, new EnumSetting<>(SortType.class, AccountDefaultsProvider.getDEFAULT_SORT_TYPE())) )); s.put("sortAscending", Settings.versions( - new V(10, new BooleanSetting(Account.DEFAULT_SORT_ASCENDING)) + new V(10, new BooleanSetting(AccountDefaultsProvider.DEFAULT_SORT_ASCENDING)) )); s.put("theme", Settings.versions( new V(1, new LegacyThemeSetting(AppTheme.LIGHT)), diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/compose/RecipientPresenter.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/compose/RecipientPresenter.kt index 347f79656f..8bb7f2a1bd 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/compose/RecipientPresenter.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/compose/RecipientPresenter.kt @@ -12,6 +12,7 @@ import android.view.Menu import androidx.core.content.ContextCompat import androidx.loader.app.LoaderManager import app.k9mail.legacy.account.Account +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.NO_OPENPGP_KEY import com.fsck.k9.K9 import com.fsck.k9.activity.compose.ComposeCryptoStatus.AttachErrorState import com.fsck.k9.activity.compose.ComposeCryptoStatus.SendErrorState @@ -395,7 +396,7 @@ class RecipientPresenter( val openPgpProviderState = openPgpApiManager.openPgpProviderState var accountCryptoKey: Long? = account.openPgpKey - if (accountCryptoKey == Account.NO_OPENPGP_KEY) { + if (accountCryptoKey == NO_OPENPGP_KEY) { accountCryptoKey = null } diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt index fad5f27d9f..6c6d5db24e 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt @@ -20,6 +20,7 @@ import app.k9mail.core.mail.folder.api.FolderType import app.k9mail.feature.launcher.FeatureLauncherActivity import app.k9mail.feature.launcher.FeatureLauncherTarget import app.k9mail.legacy.account.Account +import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.NO_OPENPGP_KEY import com.fsck.k9.account.BackgroundAccountRemover import com.fsck.k9.activity.ManageIdentities import com.fsck.k9.activity.setup.AccountSetupComposition @@ -458,7 +459,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr private fun removeOpenPgpProvider(account: Account) { account.openPgpProvider = null - account.openPgpKey = Account.NO_OPENPGP_KEY + account.openPgpKey = NO_OPENPGP_KEY dataStore.saveSettingsInBackground() } -- GitLab From a40b588b41365934d812066e09f7594fb096ea2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 14:17:50 +0000 Subject: [PATCH 169/262] Bump gradle/actions from 4.3.0 to 4.3.1 Bumps [gradle/actions](https://github.com/gradle/actions) from 4.3.0 to 4.3.1. - [Release notes](https://github.com/gradle/actions/releases) - [Commits](https://github.com/gradle/actions/compare/94baf225fe0a508e581a564467443d0e2379123b...06832c7b30a0129d7fb559bcc6e43d26f6374244) --- updated-dependencies: - dependency-name: gradle/actions dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/android.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/gradle-cache.yml | 2 +- .github/workflows/markdown.yml | 2 +- .github/workflows/shippable_builds.yml | 4 ++-- .github/workflows/validate-gradle.yml | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 77bda33471..b42d88f774 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -32,7 +32,7 @@ jobs: java-version: '17' - name: Setup Gradle - uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0 + uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1 - name: Quality - Spotless run: ./gradlew spotlessCheck diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index bb15212968..033f25bb44 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -28,7 +28,7 @@ jobs: java-version: '17' - name: Setup Gradle - uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0 + uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1 with: cache-read-only: true diff --git a/.github/workflows/gradle-cache.yml b/.github/workflows/gradle-cache.yml index a931e67fb9..ffb9d5f806 100644 --- a/.github/workflows/gradle-cache.yml +++ b/.github/workflows/gradle-cache.yml @@ -29,7 +29,7 @@ jobs: java-version: '17' - name: Setup Gradle - uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0 + uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1 - name: Build (run full build and tests) run: ./gradlew build diff --git a/.github/workflows/markdown.yml b/.github/workflows/markdown.yml index 853eb429ae..22434d874e 100644 --- a/.github/workflows/markdown.yml +++ b/.github/workflows/markdown.yml @@ -31,7 +31,7 @@ jobs: java-version: '17' - name: Setup Gradle - uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0 + uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1 - name: Quality - Spotless Markdown Check run: ./gradlew spotlessFlexmarkCheck diff --git a/.github/workflows/shippable_builds.yml b/.github/workflows/shippable_builds.yml index 69def2aca5..8459e15753 100644 --- a/.github/workflows/shippable_builds.yml +++ b/.github/workflows/shippable_builds.yml @@ -232,7 +232,7 @@ jobs: java-version: '17' - name: Setup Gradle - uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0 + uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1 if: ${{ contains(matrix.releaseTarget, 'github') || needs.dump_config.outputs.releaseType == 'daily' }} with: cache-disabled: "${{ contains(fromJSON('[\"beta\", \"release\"]'), needs.dump_config.outputs.releaseType) }}" @@ -480,7 +480,7 @@ jobs: java-version: '17' - name: Setup Gradle - uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0 + uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1 with: cache-disabled: "${{ contains(fromJSON('[\"beta\", \"release\"]'), needs.dump_config.outputs.releaseType) }}" add-job-summary: on-failure diff --git a/.github/workflows/validate-gradle.yml b/.github/workflows/validate-gradle.yml index ea777eaeec..536d40fb83 100644 --- a/.github/workflows/validate-gradle.yml +++ b/.github/workflows/validate-gradle.yml @@ -12,4 +12,4 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: gradle/actions/wrapper-validation@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0 + - uses: gradle/actions/wrapper-validation@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1 -- GitLab From 4a5005cc6f9ced077d53af4219b42d9a65861424 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 14:17:54 +0000 Subject: [PATCH 170/262] Bump actions/download-artifact from 4.1.9 to 4.2.1 Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.9 to 4.2.1. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/cc203385981b70ca67e1cc392babf9cc229d5806...95815c38cf2ff2164869cbab79da8d1f422bc89e) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/shippable_builds.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/shippable_builds.yml b/.github/workflows/shippable_builds.yml index 69def2aca5..ae8ab02954 100644 --- a/.github/workflows/shippable_builds.yml +++ b/.github/workflows/shippable_builds.yml @@ -583,7 +583,7 @@ jobs: env: RELEASE_TYPE: ${{ needs.dump_config.outputs.releaseType }} steps: - - uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9 + - uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1 with: name: unsigned-${{ matrix.appName }}-${{ matrix.packageFormat }}-${{ matrix.packageFlavor }} path: uploads/ @@ -704,7 +704,7 @@ jobs: ref: ${{ steps.shanotes.outputs.app_sha }} - name: Download Artifacts - uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9 + uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1 with: name: signed-${{ matrix.appName }}-${{ matrix.packageFormat }}-${{ matrix.packageFlavor }} path: "uploads/" -- GitLab From b3f8c581e112e77cf7ee6a08e510528e794cc2eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 14:17:57 +0000 Subject: [PATCH 171/262] Bump actions/upload-artifact from 4.6.1 to 4.6.2 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.1 to 4.6.2. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1...ea165f8d65b6e75b540449e92b4886f43607fa02) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/fluidscan.yml | 2 +- .github/workflows/scorecard.yml | 2 +- .github/workflows/shippable_builds.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/fluidscan.yml b/.github/workflows/fluidscan.yml index 3a2745b82f..dc4dd671c5 100644 --- a/.github/workflows/fluidscan.yml +++ b/.github/workflows/fluidscan.yml @@ -27,7 +27,7 @@ jobs: bash scripts/ci/run-fluidattacks-scanner.sh - name: "Upload scan results" - uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: SARIF scan results path: fluidscan-results.sarif diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 690adbdfe2..03f4a9243c 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -54,7 +54,7 @@ jobs: # Upload the results as artifacts. - name: "Upload artifact" - uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: SARIF file path: results.sarif diff --git a/.github/workflows/shippable_builds.yml b/.github/workflows/shippable_builds.yml index 69def2aca5..641767df83 100644 --- a/.github/workflows/shippable_builds.yml +++ b/.github/workflows/shippable_builds.yml @@ -563,7 +563,7 @@ jobs: ls -l ${UPLOAD_PATH}/ - name: Upload unsigned - uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 env: UPLOAD_PATH: "uploads" with: @@ -612,7 +612,7 @@ jobs: rm -f uploads/*.jks - name: Upload signed - uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: signed-${{ matrix.appName }}-${{ matrix.packageFormat }}-${{ matrix.packageFlavor }} if-no-files-found: error -- GitLab From ce3cbe8c2e8896b1b79a9ce39753ace13e1c2bdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Tue, 25 Mar 2025 11:36:47 +0100 Subject: [PATCH 172/262] Add account api feature module for account related data types and definitions --- feature/account/api/build.gradle.kts | 4 ++ .../feature/account/api/Account.kt | 5 ++ .../feature/account/api/AccountId.kt | 29 +++++++++ .../account/api/profile/AccountProfile.kt | 10 ++++ .../feature/account/api/AccountIdTest.kt | 59 +++++++++++++++++++ settings.gradle.kts | 1 + 6 files changed, 108 insertions(+) create mode 100644 feature/account/api/build.gradle.kts create mode 100644 feature/account/api/src/main/kotlin/net/thunderbird/feature/account/api/Account.kt create mode 100644 feature/account/api/src/main/kotlin/net/thunderbird/feature/account/api/AccountId.kt create mode 100644 feature/account/api/src/main/kotlin/net/thunderbird/feature/account/api/profile/AccountProfile.kt create mode 100644 feature/account/api/src/test/kotlin/net/thunderbird/feature/account/api/AccountIdTest.kt diff --git a/feature/account/api/build.gradle.kts b/feature/account/api/build.gradle.kts new file mode 100644 index 0000000000..53abed51d1 --- /dev/null +++ b/feature/account/api/build.gradle.kts @@ -0,0 +1,4 @@ +plugins { + id(ThunderbirdPlugins.Library.jvm) + alias(libs.plugins.android.lint) +} diff --git a/feature/account/api/src/main/kotlin/net/thunderbird/feature/account/api/Account.kt b/feature/account/api/src/main/kotlin/net/thunderbird/feature/account/api/Account.kt new file mode 100644 index 0000000000..f61fa5043a --- /dev/null +++ b/feature/account/api/src/main/kotlin/net/thunderbird/feature/account/api/Account.kt @@ -0,0 +1,5 @@ +package net.thunderbird.feature.account.api + +interface Account { + val accountId: AccountId +} diff --git a/feature/account/api/src/main/kotlin/net/thunderbird/feature/account/api/AccountId.kt b/feature/account/api/src/main/kotlin/net/thunderbird/feature/account/api/AccountId.kt new file mode 100644 index 0000000000..6560d87733 --- /dev/null +++ b/feature/account/api/src/main/kotlin/net/thunderbird/feature/account/api/AccountId.kt @@ -0,0 +1,29 @@ +package net.thunderbird.feature.account.api + +import kotlin.uuid.ExperimentalUuidApi +import kotlin.uuid.Uuid + +@JvmInline +value class AccountId private constructor( + val value: String, +) { + companion object { + + /** + * Create an [AccountId] from a [String]. + */ + @OptIn(ExperimentalUuidApi::class) + fun from(id: String): AccountId { + try { + return AccountId(Uuid.parse(id).toString()) + } catch (exception: IllegalArgumentException) { + throw IllegalArgumentException("Invalid AccountId: $id", exception) + } + } + + @OptIn(ExperimentalUuidApi::class) + fun create(): AccountId { + return AccountId(Uuid.random().toString()) + } + } +} diff --git a/feature/account/api/src/main/kotlin/net/thunderbird/feature/account/api/profile/AccountProfile.kt b/feature/account/api/src/main/kotlin/net/thunderbird/feature/account/api/profile/AccountProfile.kt new file mode 100644 index 0000000000..e14fdb80e9 --- /dev/null +++ b/feature/account/api/src/main/kotlin/net/thunderbird/feature/account/api/profile/AccountProfile.kt @@ -0,0 +1,10 @@ +package net.thunderbird.feature.account.api.profile + +import net.thunderbird.feature.account.api.Account +import net.thunderbird.feature.account.api.AccountId + +data class AccountProfile( + override val accountId: AccountId, + val name: String, + val color: Int, +) : Account diff --git a/feature/account/api/src/test/kotlin/net/thunderbird/feature/account/api/AccountIdTest.kt b/feature/account/api/src/test/kotlin/net/thunderbird/feature/account/api/AccountIdTest.kt new file mode 100644 index 0000000000..1e8adc3de9 --- /dev/null +++ b/feature/account/api/src/test/kotlin/net/thunderbird/feature/account/api/AccountIdTest.kt @@ -0,0 +1,59 @@ +package net.thunderbird.feature.account.api + +import assertk.Assert +import assertk.assertFailure +import assertk.assertThat +import assertk.assertions.hasMessage +import assertk.assertions.isEqualTo +import assertk.assertions.isInstanceOf +import assertk.assertions.isNotEqualTo +import kotlin.test.Test +import kotlin.uuid.ExperimentalUuidApi +import kotlin.uuid.Uuid + +class AccountIdTest { + + @Test + fun `from should return AccountId with the same id`() { + val id = "123e4567-e89b-12d3-a456-426614174000" + + val result = AccountId.from(id) + + assertThat(result.value).isEqualTo(id) + } + + @Test + fun `from should throw IllegalArgumentException when id is invalid`() { + val id = "invalid" + + val result = assertFailure { + AccountId.from(id) + } + + result.hasMessage("Invalid AccountId: $id") + result.isInstanceOf() + } + + @Test + fun `create should return AccountId with a uuid`() { + val result = AccountId.create() + + assertThat(result.value).isUuid() + } + + @Test + fun `create should return AccountId with unique ids`() { + val ids = List(10) { AccountId.create().value } + + ids.forEachIndexed { index, id -> + ids.drop(index + 1).forEach { otherId -> + assertThat(id).isNotEqualTo(otherId) + } + } + } + + @OptIn(ExperimentalUuidApi::class) + private fun Assert.isUuid() = given { actual -> + Uuid.parse(actual) + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 62be1d8c39..ee6a75bada 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -72,6 +72,7 @@ include( ) include( + ":feature:account:api", ":feature:account:avatar", ":feature:account:common", ":feature:account:edit", -- GitLab From 8c1a99354693621644be0c45b5bc3749d47bef8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 26 Mar 2025 12:43:05 +0100 Subject: [PATCH 173/262] Fix AccountManager getAccountFlow not returning null and silently closing the flow --- .../src/main/java/app/k9mail/legacy/account/AccountManager.kt | 2 +- .../src/main/java/com/fsck/k9/backends/ImapBackendFactory.kt | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/AccountManager.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/AccountManager.kt index 8c3c394885..934fe5807c 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/AccountManager.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/AccountManager.kt @@ -6,7 +6,7 @@ interface AccountManager { fun getAccounts(): List fun getAccountsFlow(): Flow> fun getAccount(accountUuid: String): Account? - fun getAccountFlow(accountUuid: String): Flow + fun getAccountFlow(accountUuid: String): Flow fun addAccountRemovedListener(listener: AccountRemovedListener) fun moveAccount(account: Account, newPosition: Int) fun addOnAccountsChangeListener(accountsChangeListener: AccountsChangeListener) diff --git a/legacy/common/src/main/java/com/fsck/k9/backends/ImapBackendFactory.kt b/legacy/common/src/main/java/com/fsck/k9/backends/ImapBackendFactory.kt index 5d9d287d29..7650aab37f 100644 --- a/legacy/common/src/main/java/com/fsck/k9/backends/ImapBackendFactory.kt +++ b/legacy/common/src/main/java/com/fsck/k9/backends/ImapBackendFactory.kt @@ -19,6 +19,7 @@ import com.fsck.k9.mail.transport.smtp.SmtpTransport import com.fsck.k9.mailstore.K9BackendStorageFactory import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.map @Suppress("LongParameterList") @@ -100,11 +101,13 @@ class ImapBackendFactory( private fun createPushConfigProvider(account: Account) = object : ImapPushConfigProvider { override val maxPushFoldersFlow: Flow get() = accountManager.getAccountFlow(account.uuid) + .filterNotNull() .map { it.maxPushFolders } .distinctUntilChanged() override val idleRefreshMinutesFlow: Flow get() = accountManager.getAccountFlow(account.uuid) + .filterNotNull() .map { it.idleRefreshMinutes } .distinctUntilChanged() } -- GitLab From fe01cb4695a769c87027d515710ac39c382acfb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 26 Mar 2025 14:21:02 +0100 Subject: [PATCH 174/262] Add LegacyAccountWrapper --- legacy/account/build.gradle.kts | 5 +- .../java/app/k9mail/legacy/account/Account.kt | 22 +- .../legacy/account/LegacyAccountWrapper.kt | 329 ++++++++++++++++ .../account/LegacyAccountWrapperTest.kt | 364 ++++++++++++++++++ 4 files changed, 711 insertions(+), 9 deletions(-) create mode 100644 legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt create mode 100644 legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt diff --git a/legacy/account/build.gradle.kts b/legacy/account/build.gradle.kts index c065a73694..70637582ad 100644 --- a/legacy/account/build.gradle.kts +++ b/legacy/account/build.gradle.kts @@ -8,7 +8,8 @@ android { } dependencies { - implementation(projects.legacy.notification) - implementation(projects.mail.common) + api(projects.legacy.notification) + api(projects.mail.common) + implementation(projects.backend.api) } diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt index ca8b94258b..2538d24f2b 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt @@ -14,10 +14,11 @@ const val DEFAULT_VISIBLE_LIMIT = 25 /** * Account stores all of the settings for a single account defined by the user. Each account is defined by a UUID. */ +@Deprecated("Use LegacyAccountWrapper instead") @Suppress("TooManyFunctions") -class Account( +open class Account( override val uuid: String, - private val isSensitiveDebugLoggingEnabled: () -> Boolean = { false }, + internal val isSensitiveDebugLoggingEnabled: () -> Boolean = { false }, ) : BaseAccount { @get:Synchronized @set:Synchronized @@ -198,7 +199,7 @@ class Account( @set:Synchronized var sortType: SortType = SortType.SORT_DATE - private val sortAscending: MutableMap = mutableMapOf() + internal var sortAscending: MutableMap = mutableMapOf() @get:Synchronized @set:Synchronized @@ -343,7 +344,7 @@ class Account( @get:Synchronized var isFinishedSetup = false - private set + internal set @get:Synchronized @set:Synchronized @@ -352,7 +353,7 @@ class Account( @get:Synchronized @set:Synchronized var isChangedVisibleLimits = false - private set + internal set /** * Database ID of the folder that was last selected for a copy or move operation. @@ -361,7 +362,7 @@ class Account( */ @get:Synchronized var lastSelectedFolderId: Long? = null - private set + internal set @get:Synchronized @set:Synchronized @@ -372,7 +373,7 @@ class Account( @get:Synchronized var notificationSettings = NotificationSettings() - private set + internal set val displayName: String get() = name ?: email @@ -435,6 +436,7 @@ class Account( draftsFolderSelection = selection } + @Deprecated("use AccountWrapper instead") @Synchronized fun hasDraftsFolder(): Boolean { return draftsFolderId != null @@ -446,6 +448,7 @@ class Account( sentFolderSelection = selection } + @Deprecated("use AccountWrapper instead") @Synchronized fun hasSentFolder(): Boolean { return sentFolderId != null @@ -457,6 +460,7 @@ class Account( trashFolderSelection = selection } + @Deprecated("use AccountWrapper instead") @Synchronized fun hasTrashFolder(): Boolean { return trashFolderId != null @@ -468,6 +472,7 @@ class Account( archiveFolderSelection = selection } + @Deprecated("use AccountWrapper instead") @Synchronized fun hasArchiveFolder(): Boolean { return archiveFolderId != null @@ -479,6 +484,7 @@ class Account( spamFolderSelection = selection } + @Deprecated("use AccountWrapper instead") @Synchronized fun hasSpamFolder(): Boolean { return spamFolderId != null @@ -549,9 +555,11 @@ class Account( return now.time } + @Deprecated("use AccountWrapper instead") val isOpenPgpProviderConfigured: Boolean get() = openPgpProvider != null + @Deprecated("use AccountWrapper instead") @Synchronized fun hasOpenPgpKey(): Boolean { return openPgpKey != NO_OPENPGP_KEY diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt new file mode 100644 index 0000000000..d9e064b9e0 --- /dev/null +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt @@ -0,0 +1,329 @@ +package app.k9mail.legacy.account + +import app.k9mail.legacy.account.Account.Companion.NO_OPENPGP_KEY +import app.k9mail.legacy.account.Account.DeletePolicy +import app.k9mail.legacy.account.Account.Expunge +import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.Account.MessageFormat +import app.k9mail.legacy.account.Account.QuoteStyle +import app.k9mail.legacy.account.Account.ShowPictures +import app.k9mail.legacy.account.Account.SortType +import app.k9mail.legacy.account.Account.SpecialFolderSelection +import app.k9mail.legacy.notification.NotificationSettings +import com.fsck.k9.mail.ServerSettings + +/** + * A immutable wrapper for the [Account] class. + * + * This class is used to store the account data in a way that is safe to pass between threads. + * + * Use LegacyAccountWrapper.from(account) to create a wrapper from an account. + * Use LegacyAccountWrapper.to(wrapper) to create an account from a wrapper. + */ +data class LegacyAccountWrapper( + override val uuid: String, + override val name: String?, + override val email: String, + private val isSensitiveDebugLoggingEnabled: () -> Boolean = { false }, + val deletePolicy: DeletePolicy, + val incomingServerSettings: ServerSettings, + val outgoingServerSettings: ServerSettings, + val oAuthState: String?, + val alwaysBcc: String?, + val automaticCheckIntervalMinutes: Int, + val displayCount: Int, + val chipColor: Int, + val isNotifyNewMail: Boolean, + val folderNotifyNewMailMode: FolderMode, + val isNotifySelfNewMail: Boolean, + val isNotifyContactsMailOnly: Boolean, + val isIgnoreChatMessages: Boolean, + val legacyInboxFolder: String?, + val importedDraftsFolder: String?, + val importedSentFolder: String?, + val importedTrashFolder: String?, + val importedArchiveFolder: String?, + val importedSpamFolder: String?, + val inboxFolderId: Long?, + val outboxFolderId: Long?, + val draftsFolderId: Long?, + val sentFolderId: Long?, + val trashFolderId: Long?, + val archiveFolderId: Long?, + val spamFolderId: Long?, + val draftsFolderSelection: SpecialFolderSelection, + val sentFolderSelection: SpecialFolderSelection, + val trashFolderSelection: SpecialFolderSelection, + val archiveFolderSelection: SpecialFolderSelection, + val spamFolderSelection: SpecialFolderSelection, + val importedAutoExpandFolder: String?, + val autoExpandFolderId: Long?, + val folderDisplayMode: FolderMode, + val folderSyncMode: FolderMode, + val folderPushMode: FolderMode, + val accountNumber: Int, + val isNotifySync: Boolean, + val sortType: SortType, + val sortAscending: Map, + val showPictures: ShowPictures, + val isSignatureBeforeQuotedText: Boolean, + val expungePolicy: Expunge, + val maxPushFolders: Int, + val idleRefreshMinutes: Int, + val useCompression: Boolean, + val isSendClientInfoEnabled: Boolean, + val isSubscribedFoldersOnly: Boolean, + val maximumPolledMessageAge: Int, + val maximumAutoDownloadMessageSize: Int, + val messageFormat: MessageFormat, + val isMessageFormatAuto: Boolean, + val isMessageReadReceipt: Boolean, + val quoteStyle: QuoteStyle, + val quotePrefix: String?, + val isDefaultQuotedTextShown: Boolean, + val isReplyAfterQuote: Boolean, + val isStripSignature: Boolean, + val isSyncRemoteDeletions: Boolean, + val openPgpProvider: String?, + val openPgpKey: Long, + val autocryptPreferEncryptMutual: Boolean, + val isOpenPgpHideSignOnly: Boolean, + val isOpenPgpEncryptSubject: Boolean, + val isOpenPgpEncryptAllDrafts: Boolean, + val isMarkMessageAsReadOnView: Boolean, + val isMarkMessageAsReadOnDelete: Boolean, + val isAlwaysShowCcBcc: Boolean, + val isRemoteSearchFullText: Boolean, + val remoteSearchNumResults: Int, + val isUploadSentMessages: Boolean, + val lastSyncTime: Long, + val lastFolderListRefreshTime: Long, + val isFinishedSetup: Boolean, + val messagesNotificationChannelVersion: Int, + val isChangedVisibleLimits: Boolean, + val lastSelectedFolderId: Long?, + val identities: List, + val notificationSettings: NotificationSettings, + val displayName: String, + val senderName: String?, + val signatureUse: Boolean, + val signature: String?, + val shouldMigrateToOAuth: Boolean, +) : BaseAccount { + + fun hasDraftsFolder(): Boolean { + return draftsFolderId != null + } + + fun hasSentFolder(): Boolean { + return sentFolderId != null + } + + fun hasTrashFolder(): Boolean { + return trashFolderId != null + } + + fun hasArchiveFolder(): Boolean { + return archiveFolderId != null + } + + fun hasSpamFolder(): Boolean { + return spamFolderId != null + } + + fun isOpenPgpProviderConfigured(): Boolean { + return openPgpProvider != null + } + + fun hasOpenPgpKey(): Boolean { + return openPgpKey != NO_OPENPGP_KEY + } + + companion object { + fun from(account: Account): LegacyAccountWrapper { + return LegacyAccountWrapper( + uuid = account.uuid, + isSensitiveDebugLoggingEnabled = account.isSensitiveDebugLoggingEnabled, + name = account.displayName, + identities = account.identities, + email = account.email, + deletePolicy = account.deletePolicy, + incomingServerSettings = account.incomingServerSettings, + outgoingServerSettings = account.outgoingServerSettings, + oAuthState = account.oAuthState, + alwaysBcc = account.alwaysBcc, + automaticCheckIntervalMinutes = account.automaticCheckIntervalMinutes, + displayCount = account.displayCount, + chipColor = account.chipColor, + isNotifyNewMail = account.isNotifyNewMail, + folderNotifyNewMailMode = account.folderNotifyNewMailMode, + isNotifySelfNewMail = account.isNotifySelfNewMail, + isNotifyContactsMailOnly = account.isNotifyContactsMailOnly, + isIgnoreChatMessages = account.isIgnoreChatMessages, + legacyInboxFolder = account.legacyInboxFolder, + importedDraftsFolder = account.importedDraftsFolder, + importedSentFolder = account.importedSentFolder, + importedTrashFolder = account.importedTrashFolder, + importedArchiveFolder = account.importedArchiveFolder, + importedSpamFolder = account.importedSpamFolder, + inboxFolderId = account.inboxFolderId, + outboxFolderId = account.outboxFolderId, + draftsFolderId = account.draftsFolderId, + sentFolderId = account.sentFolderId, + trashFolderId = account.trashFolderId, + archiveFolderId = account.archiveFolderId, + spamFolderId = account.spamFolderId, + draftsFolderSelection = account.draftsFolderSelection, + sentFolderSelection = account.sentFolderSelection, + trashFolderSelection = account.trashFolderSelection, + archiveFolderSelection = account.archiveFolderSelection, + spamFolderSelection = account.spamFolderSelection, + importedAutoExpandFolder = account.importedAutoExpandFolder, + autoExpandFolderId = account.autoExpandFolderId, + folderDisplayMode = account.folderDisplayMode, + folderSyncMode = account.folderSyncMode, + folderPushMode = account.folderPushMode, + accountNumber = account.accountNumber, + isNotifySync = account.isNotifySync, + sortType = account.sortType, + sortAscending = account.sortAscending, + showPictures = account.showPictures, + isSignatureBeforeQuotedText = account.isSignatureBeforeQuotedText, + expungePolicy = account.expungePolicy, + maxPushFolders = account.maxPushFolders, + idleRefreshMinutes = account.idleRefreshMinutes, + useCompression = account.useCompression, + isSendClientInfoEnabled = account.isSendClientInfoEnabled, + isSubscribedFoldersOnly = account.isSubscribedFoldersOnly, + maximumPolledMessageAge = account.maximumPolledMessageAge, + maximumAutoDownloadMessageSize = account.maximumAutoDownloadMessageSize, + messageFormat = account.messageFormat, + isMessageFormatAuto = account.isMessageFormatAuto, + isMessageReadReceipt = account.isMessageReadReceipt, + quoteStyle = account.quoteStyle, + quotePrefix = account.quotePrefix, + isDefaultQuotedTextShown = account.isDefaultQuotedTextShown, + isReplyAfterQuote = account.isReplyAfterQuote, + isStripSignature = account.isStripSignature, + isSyncRemoteDeletions = account.isSyncRemoteDeletions, + openPgpProvider = account.openPgpProvider, + openPgpKey = account.openPgpKey, + autocryptPreferEncryptMutual = account.autocryptPreferEncryptMutual, + isOpenPgpHideSignOnly = account.isOpenPgpHideSignOnly, + isOpenPgpEncryptSubject = account.isOpenPgpEncryptSubject, + isOpenPgpEncryptAllDrafts = account.isOpenPgpEncryptAllDrafts, + isMarkMessageAsReadOnView = account.isMarkMessageAsReadOnView, + isMarkMessageAsReadOnDelete = account.isMarkMessageAsReadOnDelete, + isAlwaysShowCcBcc = account.isAlwaysShowCcBcc, + isRemoteSearchFullText = account.isRemoteSearchFullText, + remoteSearchNumResults = account.remoteSearchNumResults, + isUploadSentMessages = account.isUploadSentMessages, + lastSyncTime = account.lastSyncTime, + lastFolderListRefreshTime = account.lastFolderListRefreshTime, + isFinishedSetup = account.isFinishedSetup, + messagesNotificationChannelVersion = account.messagesNotificationChannelVersion, + isChangedVisibleLimits = account.isChangedVisibleLimits, + lastSelectedFolderId = account.lastSelectedFolderId, + notificationSettings = account.notificationSettings, + displayName = account.displayName, + senderName = account.senderName, + signatureUse = account.signatureUse, + signature = account.signature, + shouldMigrateToOAuth = account.shouldMigrateToOAuth, + ) + } + + fun to(wrapper: LegacyAccountWrapper): Account { + return Account( + uuid = wrapper.uuid, + isSensitiveDebugLoggingEnabled = wrapper.isSensitiveDebugLoggingEnabled, + ).apply { + identities = wrapper.identities.toMutableList() + name = wrapper.displayName + email = wrapper.email + deletePolicy = wrapper.deletePolicy + incomingServerSettings = wrapper.incomingServerSettings + outgoingServerSettings = wrapper.outgoingServerSettings + oAuthState = wrapper.oAuthState + alwaysBcc = wrapper.alwaysBcc + automaticCheckIntervalMinutes = wrapper.automaticCheckIntervalMinutes + displayCount = wrapper.displayCount + chipColor = wrapper.chipColor + isNotifyNewMail = wrapper.isNotifyNewMail + folderNotifyNewMailMode = wrapper.folderNotifyNewMailMode + isNotifySelfNewMail = wrapper.isNotifySelfNewMail + isNotifyContactsMailOnly = wrapper.isNotifyContactsMailOnly + isIgnoreChatMessages = wrapper.isIgnoreChatMessages + legacyInboxFolder = wrapper.legacyInboxFolder + importedDraftsFolder = wrapper.importedDraftsFolder + importedSentFolder = wrapper.importedSentFolder + importedTrashFolder = wrapper.importedTrashFolder + importedArchiveFolder = wrapper.importedArchiveFolder + importedSpamFolder = wrapper.importedSpamFolder + inboxFolderId = wrapper.inboxFolderId + outboxFolderId = wrapper.outboxFolderId + draftsFolderId = wrapper.draftsFolderId + sentFolderId = wrapper.sentFolderId + trashFolderId = wrapper.trashFolderId + archiveFolderId = wrapper.archiveFolderId + spamFolderId = wrapper.spamFolderId + draftsFolderSelection = wrapper.draftsFolderSelection + sentFolderSelection = wrapper.sentFolderSelection + trashFolderSelection = wrapper.trashFolderSelection + archiveFolderSelection = wrapper.archiveFolderSelection + spamFolderSelection = wrapper.spamFolderSelection + importedAutoExpandFolder = wrapper.importedAutoExpandFolder + autoExpandFolderId = wrapper.autoExpandFolderId + folderDisplayMode = wrapper.folderDisplayMode + folderSyncMode = wrapper.folderSyncMode + folderPushMode = wrapper.folderPushMode + accountNumber = wrapper.accountNumber + isNotifySync = wrapper.isNotifySync + sortType = wrapper.sortType + sortAscending = wrapper.sortAscending.toMutableMap() + showPictures = wrapper.showPictures + isSignatureBeforeQuotedText = wrapper.isSignatureBeforeQuotedText + expungePolicy = wrapper.expungePolicy + maxPushFolders = wrapper.maxPushFolders + idleRefreshMinutes = wrapper.idleRefreshMinutes + useCompression = wrapper.useCompression + isSendClientInfoEnabled = wrapper.isSendClientInfoEnabled + isSubscribedFoldersOnly = wrapper.isSubscribedFoldersOnly + maximumPolledMessageAge = wrapper.maximumPolledMessageAge + maximumAutoDownloadMessageSize = wrapper.maximumAutoDownloadMessageSize + messageFormat = wrapper.messageFormat + isMessageFormatAuto = wrapper.isMessageFormatAuto + isMessageReadReceipt = wrapper.isMessageReadReceipt + quoteStyle = wrapper.quoteStyle + quotePrefix = wrapper.quotePrefix + isDefaultQuotedTextShown = wrapper.isDefaultQuotedTextShown + isReplyAfterQuote = wrapper.isReplyAfterQuote + isStripSignature = wrapper.isStripSignature + isSyncRemoteDeletions = wrapper.isSyncRemoteDeletions + openPgpProvider = wrapper.openPgpProvider + openPgpKey = wrapper.openPgpKey + autocryptPreferEncryptMutual = wrapper.autocryptPreferEncryptMutual + isOpenPgpHideSignOnly = wrapper.isOpenPgpHideSignOnly + isOpenPgpEncryptSubject = wrapper.isOpenPgpEncryptSubject + isOpenPgpEncryptAllDrafts = wrapper.isOpenPgpEncryptAllDrafts + isMarkMessageAsReadOnView = wrapper.isMarkMessageAsReadOnView + isMarkMessageAsReadOnDelete = wrapper.isMarkMessageAsReadOnDelete + isAlwaysShowCcBcc = wrapper.isAlwaysShowCcBcc + isRemoteSearchFullText = wrapper.isRemoteSearchFullText + remoteSearchNumResults = wrapper.remoteSearchNumResults + isUploadSentMessages = wrapper.isUploadSentMessages + lastSyncTime = wrapper.lastSyncTime + lastFolderListRefreshTime = wrapper.lastFolderListRefreshTime + isFinishedSetup = wrapper.isFinishedSetup + messagesNotificationChannelVersion = wrapper.messagesNotificationChannelVersion + isChangedVisibleLimits = wrapper.isChangedVisibleLimits + lastSelectedFolderId = wrapper.lastSelectedFolderId + notificationSettings = wrapper.notificationSettings + senderName = wrapper.senderName + signatureUse = wrapper.signatureUse + signature = wrapper.signature + shouldMigrateToOAuth = wrapper.shouldMigrateToOAuth + } + } + } +} diff --git a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt new file mode 100644 index 0000000000..75acfc0640 --- /dev/null +++ b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt @@ -0,0 +1,364 @@ +package app.k9mail.legacy.account + +import app.k9mail.legacy.account.Account.DeletePolicy +import app.k9mail.legacy.account.Account.Expunge +import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.Account.MessageFormat +import app.k9mail.legacy.account.Account.QuoteStyle +import app.k9mail.legacy.account.Account.ShowPictures +import app.k9mail.legacy.account.Account.SortType +import app.k9mail.legacy.account.Account.SpecialFolderSelection +import app.k9mail.legacy.notification.NotificationSettings +import assertk.assertThat +import assertk.assertions.isEqualTo +import com.fsck.k9.mail.AuthType +import com.fsck.k9.mail.ConnectionSecurity +import com.fsck.k9.mail.ServerSettings +import kotlin.test.Test + +class LegacyAccountWrapperTest { + + @Test + fun `from account should return wrapper`() { + // arrange + val account = createAccount() + val expected = createAccountWrapper() + + // act + val result = LegacyAccountWrapper.from(account) + + // assert + assertThat(result).isEqualTo(expected) + } + + @Suppress("LongMethod") + @Test + fun `to wrapper should return account`() { + // arrange + val wrapper = createAccountWrapper() + + // act + val result = LegacyAccountWrapper.to(wrapper) + + // assert + assertThat(result.uuid).isEqualTo("uuid") + assertThat(result.isSensitiveDebugLoggingEnabled).isEqualTo(defaultIsSensitiveDebugLoggingEnabled) + assertThat(result.identities).isEqualTo(defaultIdentities) + assertThat(result.name).isEqualTo("displayName") + assertThat(result.email).isEqualTo("demo@example.com") + assertThat(result.deletePolicy).isEqualTo(DeletePolicy.SEVEN_DAYS) + assertThat(result.incomingServerSettings).isEqualTo(defaultIncomingServerSettings) + assertThat(result.outgoingServerSettings).isEqualTo(defaultOutgoingServerSettings) + assertThat(result.oAuthState).isEqualTo("oAuthState") + assertThat(result.alwaysBcc).isEqualTo("alwaysBcc") + assertThat(result.automaticCheckIntervalMinutes).isEqualTo(60) + assertThat(result.displayCount).isEqualTo(10) + assertThat(result.chipColor).isEqualTo(0xFFFF0000.toInt()) + assertThat(result.isNotifyNewMail).isEqualTo(true) + assertThat(result.folderNotifyNewMailMode).isEqualTo(FolderMode.FIRST_AND_SECOND_CLASS) + assertThat(result.isNotifySelfNewMail).isEqualTo(true) + assertThat(result.isNotifyContactsMailOnly).isEqualTo(true) + assertThat(result.isIgnoreChatMessages).isEqualTo(true) + assertThat(result.legacyInboxFolder).isEqualTo("legacyInboxFolder") + assertThat(result.importedDraftsFolder).isEqualTo("importedDraftsFolder") + assertThat(result.importedSentFolder).isEqualTo("importedSentFolder") + assertThat(result.importedTrashFolder).isEqualTo("importedTrashFolder") + assertThat(result.importedArchiveFolder).isEqualTo("importedArchiveFolder") + assertThat(result.importedSpamFolder).isEqualTo("importedSpamFolder") + assertThat(result.inboxFolderId).isEqualTo(1) + assertThat(result.outboxFolderId).isEqualTo(2) + assertThat(result.draftsFolderId).isEqualTo(3) + assertThat(result.sentFolderId).isEqualTo(4) + assertThat(result.trashFolderId).isEqualTo(5) + assertThat(result.archiveFolderId).isEqualTo(6) + assertThat(result.spamFolderId).isEqualTo(7) + assertThat(result.draftsFolderSelection).isEqualTo(SpecialFolderSelection.MANUAL) + assertThat(result.sentFolderSelection).isEqualTo(SpecialFolderSelection.MANUAL) + assertThat(result.trashFolderSelection).isEqualTo(SpecialFolderSelection.MANUAL) + assertThat(result.archiveFolderSelection).isEqualTo(SpecialFolderSelection.MANUAL) + assertThat(result.spamFolderSelection).isEqualTo(SpecialFolderSelection.MANUAL) + assertThat(result.importedAutoExpandFolder).isEqualTo("importedAutoExpandFolder") + assertThat(result.autoExpandFolderId).isEqualTo(8) + assertThat(result.folderDisplayMode).isEqualTo(FolderMode.FIRST_AND_SECOND_CLASS) + assertThat(result.folderSyncMode).isEqualTo(FolderMode.FIRST_AND_SECOND_CLASS) + assertThat(result.folderPushMode).isEqualTo(FolderMode.FIRST_AND_SECOND_CLASS) + assertThat(result.accountNumber).isEqualTo(11) + assertThat(result.isNotifySync).isEqualTo(true) + assertThat(result.sortType).isEqualTo(SortType.SORT_SUBJECT) + assertThat(result.sortAscending).isEqualTo( + mutableMapOf( + SortType.SORT_SUBJECT to false, + ), + ) + assertThat(result.showPictures).isEqualTo(ShowPictures.ALWAYS) + assertThat(result.isSignatureBeforeQuotedText).isEqualTo(true) + assertThat(result.expungePolicy).isEqualTo(Expunge.EXPUNGE_MANUALLY) + assertThat(result.maxPushFolders).isEqualTo(12) + assertThat(result.idleRefreshMinutes).isEqualTo(13) + assertThat(result.useCompression).isEqualTo(false) + assertThat(result.isSendClientInfoEnabled).isEqualTo(false) + assertThat(result.isSubscribedFoldersOnly).isEqualTo(false) + assertThat(result.maximumPolledMessageAge).isEqualTo(14) + assertThat(result.maximumAutoDownloadMessageSize).isEqualTo(15) + assertThat(result.messageFormat).isEqualTo(MessageFormat.TEXT) + assertThat(result.isMessageFormatAuto).isEqualTo(true) + assertThat(result.isMessageReadReceipt).isEqualTo(true) + assertThat(result.quoteStyle).isEqualTo(QuoteStyle.HEADER) + assertThat(result.quotePrefix).isEqualTo("quotePrefix") + assertThat(result.isDefaultQuotedTextShown).isEqualTo(true) + assertThat(result.isReplyAfterQuote).isEqualTo(true) + assertThat(result.isStripSignature).isEqualTo(true) + assertThat(result.isSyncRemoteDeletions).isEqualTo(true) + assertThat(result.openPgpProvider).isEqualTo("openPgpProvider") + assertThat(result.openPgpKey).isEqualTo(16) + assertThat(result.autocryptPreferEncryptMutual).isEqualTo(true) + assertThat(result.isOpenPgpHideSignOnly).isEqualTo(true) + assertThat(result.isOpenPgpEncryptSubject).isEqualTo(true) + assertThat(result.isOpenPgpEncryptAllDrafts).isEqualTo(true) + assertThat(result.isMarkMessageAsReadOnView).isEqualTo(true) + assertThat(result.isMarkMessageAsReadOnDelete).isEqualTo(true) + assertThat(result.isAlwaysShowCcBcc).isEqualTo(true) + assertThat(result.isRemoteSearchFullText).isEqualTo(false) + assertThat(result.remoteSearchNumResults).isEqualTo(17) + assertThat(result.isUploadSentMessages).isEqualTo(true) + assertThat(result.lastSyncTime).isEqualTo(18) + assertThat(result.lastFolderListRefreshTime).isEqualTo(19) + assertThat(result.isFinishedSetup).isEqualTo(true) + assertThat(result.messagesNotificationChannelVersion).isEqualTo(20) + assertThat(result.isChangedVisibleLimits).isEqualTo(true) + assertThat(result.lastSelectedFolderId).isEqualTo(21) + assertThat(result.notificationSettings).isEqualTo(defaultNotificationSettings) + assertThat(result.senderName).isEqualTo(defaultIdentities[0].name) + assertThat(result.signatureUse).isEqualTo(defaultIdentities[0].signatureUse) + assertThat(result.signature).isEqualTo(defaultIdentities[0].signature) + assertThat(result.shouldMigrateToOAuth).isEqualTo(true) + } + + private companion object { + val defaultIsSensitiveDebugLoggingEnabled = { true } + + val defaultIncomingServerSettings = ServerSettings( + type = "imap", + host = "imap.example.com", + port = 993, + connectionSecurity = ConnectionSecurity.SSL_TLS_REQUIRED, + authenticationType = AuthType.PLAIN, + username = "test", + password = "password", + clientCertificateAlias = null, + ) + + val defaultOutgoingServerSettings = ServerSettings( + type = "smtp", + host = "smtp.example.com", + port = 465, + connectionSecurity = ConnectionSecurity.SSL_TLS_REQUIRED, + authenticationType = AuthType.PLAIN, + username = "test", + password = "password", + clientCertificateAlias = null, + ) + + val defaultIdentities = mutableListOf( + Identity( + email = "demo@example.com", + name = "identityName", + signatureUse = true, + signature = "signature", + description = "Demo User", + ), + ) + + val defaultNotificationSettings = NotificationSettings() + + fun createAccount(): Account { + return Account( + uuid = "uuid", + isSensitiveDebugLoggingEnabled = defaultIsSensitiveDebugLoggingEnabled, + ).apply { + identities = defaultIdentities + name = "displayName" + email = "demo@example.com" + deletePolicy = DeletePolicy.SEVEN_DAYS + incomingServerSettings = defaultIncomingServerSettings + outgoingServerSettings = defaultOutgoingServerSettings + oAuthState = "oAuthState" + alwaysBcc = "alwaysBcc" + automaticCheckIntervalMinutes = 60 + displayCount = 10 + chipColor = 0xFFFF0000.toInt() + isNotifyNewMail = true + folderNotifyNewMailMode = FolderMode.FIRST_AND_SECOND_CLASS + isNotifySelfNewMail = true + isNotifyContactsMailOnly = true + isIgnoreChatMessages = true + legacyInboxFolder = "legacyInboxFolder" + importedDraftsFolder = "importedDraftsFolder" + importedSentFolder = "importedSentFolder" + importedTrashFolder = "importedTrashFolder" + importedArchiveFolder = "importedArchiveFolder" + importedSpamFolder = "importedSpamFolder" + inboxFolderId = 1 + outboxFolderId = 2 + draftsFolderId = 3 + sentFolderId = 4 + trashFolderId = 5 + archiveFolderId = 6 + spamFolderId = 7 + draftsFolderSelection = SpecialFolderSelection.MANUAL + sentFolderSelection = SpecialFolderSelection.MANUAL + trashFolderSelection = SpecialFolderSelection.MANUAL + archiveFolderSelection = SpecialFolderSelection.MANUAL + spamFolderSelection = SpecialFolderSelection.MANUAL + importedAutoExpandFolder = "importedAutoExpandFolder" + autoExpandFolderId = 8 + folderDisplayMode = FolderMode.FIRST_AND_SECOND_CLASS + folderSyncMode = FolderMode.FIRST_AND_SECOND_CLASS + folderPushMode = FolderMode.FIRST_AND_SECOND_CLASS + accountNumber = 11 + isNotifySync = true + sortType = SortType.SORT_SUBJECT + sortAscending = mutableMapOf( + SortType.SORT_SUBJECT to false, + ) + showPictures = ShowPictures.ALWAYS + isSignatureBeforeQuotedText = true + expungePolicy = Expunge.EXPUNGE_MANUALLY + maxPushFolders = 12 + idleRefreshMinutes = 13 + useCompression = false + isSendClientInfoEnabled = false + isSubscribedFoldersOnly = false + maximumPolledMessageAge = 14 + maximumAutoDownloadMessageSize = 15 + messageFormat = MessageFormat.TEXT + isMessageFormatAuto = true + isMessageReadReceipt = true + quoteStyle = QuoteStyle.HEADER + quotePrefix = "quotePrefix" + isDefaultQuotedTextShown = true + isReplyAfterQuote = true + isStripSignature = true + isSyncRemoteDeletions = true + openPgpProvider = "openPgpProvider" + openPgpKey = 16 + autocryptPreferEncryptMutual = true + isOpenPgpHideSignOnly = true + isOpenPgpEncryptSubject = true + isOpenPgpEncryptAllDrafts = true + isMarkMessageAsReadOnView = true + isMarkMessageAsReadOnDelete = true + isAlwaysShowCcBcc = true + isRemoteSearchFullText = false + remoteSearchNumResults = 17 + isUploadSentMessages = true + lastSyncTime = 18 + lastFolderListRefreshTime = 19 + isFinishedSetup = true + messagesNotificationChannelVersion = 20 + isChangedVisibleLimits = true + lastSelectedFolderId = 21 + notificationSettings = defaultNotificationSettings + senderName = defaultIdentities[0].name + signatureUse = defaultIdentities[0].signatureUse + signature = defaultIdentities[0].signature + shouldMigrateToOAuth = true + } + } + + fun createAccountWrapper(): LegacyAccountWrapper { + return LegacyAccountWrapper( + uuid = "uuid", + isSensitiveDebugLoggingEnabled = defaultIsSensitiveDebugLoggingEnabled, + name = "displayName", + email = "demo@example.com", + deletePolicy = DeletePolicy.SEVEN_DAYS, + incomingServerSettings = defaultIncomingServerSettings, + outgoingServerSettings = defaultOutgoingServerSettings, + oAuthState = "oAuthState", + alwaysBcc = "alwaysBcc", + automaticCheckIntervalMinutes = 60, + displayCount = 10, + chipColor = 0xFFFF0000.toInt(), + isNotifyNewMail = true, + folderNotifyNewMailMode = FolderMode.FIRST_AND_SECOND_CLASS, + isNotifySelfNewMail = true, + isNotifyContactsMailOnly = true, + isIgnoreChatMessages = true, + legacyInboxFolder = "legacyInboxFolder", + importedDraftsFolder = "importedDraftsFolder", + importedSentFolder = "importedSentFolder", + importedTrashFolder = "importedTrashFolder", + importedArchiveFolder = "importedArchiveFolder", + importedSpamFolder = "importedSpamFolder", + inboxFolderId = 1, + outboxFolderId = 2, + draftsFolderId = 3, + sentFolderId = 4, + trashFolderId = 5, + archiveFolderId = 6, + spamFolderId = 7, + draftsFolderSelection = SpecialFolderSelection.MANUAL, + sentFolderSelection = SpecialFolderSelection.MANUAL, + trashFolderSelection = SpecialFolderSelection.MANUAL, + archiveFolderSelection = SpecialFolderSelection.MANUAL, + spamFolderSelection = SpecialFolderSelection.MANUAL, + importedAutoExpandFolder = "importedAutoExpandFolder", + autoExpandFolderId = 8, + folderDisplayMode = FolderMode.FIRST_AND_SECOND_CLASS, + folderSyncMode = FolderMode.FIRST_AND_SECOND_CLASS, + folderPushMode = FolderMode.FIRST_AND_SECOND_CLASS, + accountNumber = 11, + isNotifySync = true, + sortType = SortType.SORT_SUBJECT, + sortAscending = mutableMapOf( + SortType.SORT_SUBJECT to false, + ), + showPictures = ShowPictures.ALWAYS, + isSignatureBeforeQuotedText = true, + expungePolicy = Expunge.EXPUNGE_MANUALLY, + maxPushFolders = 12, + idleRefreshMinutes = 13, + useCompression = false, + isSendClientInfoEnabled = false, + isSubscribedFoldersOnly = false, + maximumPolledMessageAge = 14, + maximumAutoDownloadMessageSize = 15, + messageFormat = MessageFormat.TEXT, + isMessageFormatAuto = true, + isMessageReadReceipt = true, + quoteStyle = QuoteStyle.HEADER, + quotePrefix = "quotePrefix", + isDefaultQuotedTextShown = true, + isReplyAfterQuote = true, + isStripSignature = true, + isSyncRemoteDeletions = true, + openPgpProvider = "openPgpProvider", + openPgpKey = 16, + autocryptPreferEncryptMutual = true, + isOpenPgpHideSignOnly = true, + isOpenPgpEncryptSubject = true, + isOpenPgpEncryptAllDrafts = true, + isMarkMessageAsReadOnView = true, + isMarkMessageAsReadOnDelete = true, + isAlwaysShowCcBcc = true, + isRemoteSearchFullText = false, + remoteSearchNumResults = 17, + isUploadSentMessages = true, + lastSyncTime = 18, + lastFolderListRefreshTime = 19, + isFinishedSetup = true, + messagesNotificationChannelVersion = 20, + isChangedVisibleLimits = true, + lastSelectedFolderId = 21, + identities = defaultIdentities, + notificationSettings = defaultNotificationSettings, + senderName = defaultIdentities[0].name, + signatureUse = defaultIdentities[0].signatureUse, + signature = defaultIdentities[0].signature, + shouldMigrateToOAuth = true, + displayName = "displayName", + ) + } + } +} -- GitLab From f64863d84ba0507adb5d1354f2b2a3e2b4a351b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 26 Mar 2025 16:30:19 +0100 Subject: [PATCH 175/262] Move FolderMode out of the account object --- .../src/main/java/app/k9mail/legacy/account/Account.kt | 8 -------- .../main/java/app/k9mail/legacy/account/FolderMode.kt | 9 +++++++++ .../app/k9mail/legacy/account/LegacyAccountWrapper.kt | 1 - .../k9mail/legacy/account/LegacyAccountWrapperTest.kt | 1 - .../main/java/com/fsck/k9/AccountPreferenceSerializer.kt | 2 +- .../fsck/k9/preferences/AccountSettingsDescriptions.java | 2 +- .../upgrader/CombinedSettingsUpgraderTo100.kt | 2 +- .../preferences/upgrader/CombinedSettingsUpgraderTo96.kt | 2 +- .../preferences/upgrader/CombinedSettingsUpgraderTo98.kt | 2 +- .../preferences/upgrader/CombinedSettingsUpgraderTo99.kt | 2 +- .../upgrader/CombinedSettingsUpgraderTo100Test.kt | 2 +- .../upgrader/CombinedSettingsUpgraderTo96Test.kt | 2 +- .../upgrader/CombinedSettingsUpgraderTo98Test.kt | 2 +- .../upgrader/CombinedSettingsUpgraderTo99Test.kt | 2 +- .../java/com/fsck/k9/storage/migrations/MigrationTo85.kt | 2 +- .../java/com/fsck/k9/storage/migrations/MigrationTo86.kt | 2 +- .../java/com/fsck/k9/storage/migrations/MigrationTo87.kt | 2 +- .../java/com/fsck/k9/storage/migrations/MigrationTo88.kt | 2 +- .../com/fsck/k9/storage/StoreSchemaDefinitionTest.kt | 2 +- .../com/fsck/k9/storage/migrations/MigrationTo85Test.kt | 2 +- .../com/fsck/k9/storage/migrations/MigrationTo86Test.kt | 2 +- .../com/fsck/k9/storage/migrations/MigrationTo87Test.kt | 2 +- .../com/fsck/k9/storage/migrations/MigrationTo88Test.kt | 2 +- 23 files changed, 28 insertions(+), 29 deletions(-) create mode 100644 legacy/account/src/main/java/app/k9mail/legacy/account/FolderMode.kt diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt index 2538d24f2b..a01d072375 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt @@ -601,14 +601,6 @@ open class Account( return uuid.hashCode() } - enum class FolderMode { - NONE, - ALL, - FIRST_CLASS, - FIRST_AND_SECOND_CLASS, - NOT_SECOND_CLASS, - } - enum class SpecialFolderSelection { AUTOMATIC, MANUAL, diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/FolderMode.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/FolderMode.kt new file mode 100644 index 0000000000..844430d7ae --- /dev/null +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/FolderMode.kt @@ -0,0 +1,9 @@ +package app.k9mail.legacy.account + +enum class FolderMode { + NONE, + ALL, + FIRST_CLASS, + FIRST_AND_SECOND_CLASS, + NOT_SECOND_CLASS, +} diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt index d9e064b9e0..76f78df864 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt @@ -3,7 +3,6 @@ package app.k9mail.legacy.account import app.k9mail.legacy.account.Account.Companion.NO_OPENPGP_KEY import app.k9mail.legacy.account.Account.DeletePolicy import app.k9mail.legacy.account.Account.Expunge -import app.k9mail.legacy.account.Account.FolderMode import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.Account.ShowPictures diff --git a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt index 75acfc0640..94d56e9170 100644 --- a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt +++ b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt @@ -2,7 +2,6 @@ package app.k9mail.legacy.account import app.k9mail.legacy.account.Account.DeletePolicy import app.k9mail.legacy.account.Account.Expunge -import app.k9mail.legacy.account.Account.FolderMode import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.Account.ShowPictures diff --git a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt index c71d7ace5a..6342ba8e9f 100644 --- a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt +++ b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt @@ -3,7 +3,6 @@ package com.fsck.k9 import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.Account.DeletePolicy import app.k9mail.legacy.account.Account.Expunge -import app.k9mail.legacy.account.Account.FolderMode import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.Account.ShowPictures @@ -23,6 +22,7 @@ import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_STRIP import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_SYNC_INTERVAL import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.NO_OPENPGP_KEY import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.UNASSIGNED_ACCOUNT_NUMBER +import app.k9mail.legacy.account.FolderMode import app.k9mail.legacy.account.Identity import app.k9mail.legacy.notification.NotificationLight import app.k9mail.legacy.notification.NotificationSettings diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java index de056199d4..7054e01fe6 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java @@ -14,7 +14,7 @@ import app.k9mail.legacy.notification.NotificationLight; import app.k9mail.legacy.account.Account; import app.k9mail.legacy.account.Account.DeletePolicy; import app.k9mail.legacy.account.Account.Expunge; -import app.k9mail.legacy.account.Account.FolderMode; +import app.k9mail.legacy.account.FolderMode; import app.k9mail.legacy.account.Account.MessageFormat; import app.k9mail.legacy.account.Account.QuoteStyle; import app.k9mail.legacy.account.Account.ShowPictures; diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo100.kt b/legacy/core/src/main/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo100.kt index 223c9e3d35..50fede4610 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo100.kt +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo100.kt @@ -1,6 +1,6 @@ package com.fsck.k9.preferences.upgrader -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import com.fsck.k9.preferences.CombinedSettingsUpgrader import com.fsck.k9.preferences.InternalSettingsMap import com.fsck.k9.preferences.ValidatedSettings diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo96.kt b/legacy/core/src/main/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo96.kt index bc82d3360c..985d2dd979 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo96.kt +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo96.kt @@ -1,6 +1,6 @@ package com.fsck.k9.preferences.upgrader -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import com.fsck.k9.preferences.CombinedSettingsUpgrader import com.fsck.k9.preferences.InternalSettingsMap import com.fsck.k9.preferences.ValidatedSettings diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo98.kt b/legacy/core/src/main/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo98.kt index 71499141d1..65787685b6 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo98.kt +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo98.kt @@ -1,6 +1,6 @@ package com.fsck.k9.preferences.upgrader -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import com.fsck.k9.preferences.CombinedSettingsUpgrader import com.fsck.k9.preferences.InternalSettingsMap import com.fsck.k9.preferences.ValidatedSettings diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo99.kt b/legacy/core/src/main/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo99.kt index ebdb35b81a..587a23ae21 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo99.kt +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo99.kt @@ -1,6 +1,6 @@ package com.fsck.k9.preferences.upgrader -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import com.fsck.k9.preferences.CombinedSettingsUpgrader import com.fsck.k9.preferences.InternalSettingsMap import com.fsck.k9.preferences.ValidatedSettings diff --git a/legacy/core/src/test/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo100Test.kt b/legacy/core/src/test/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo100Test.kt index 3bd08069e7..bb4682238d 100644 --- a/legacy/core/src/test/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo100Test.kt +++ b/legacy/core/src/test/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo100Test.kt @@ -1,6 +1,6 @@ package com.fsck.k9.preferences.upgrader -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import assertk.assertThat import assertk.assertions.containsExactlyInAnyOrder import com.fsck.k9.preferences.InternalSettingsMap diff --git a/legacy/core/src/test/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo96Test.kt b/legacy/core/src/test/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo96Test.kt index d2099d2ab3..b14f38d111 100644 --- a/legacy/core/src/test/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo96Test.kt +++ b/legacy/core/src/test/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo96Test.kt @@ -1,6 +1,6 @@ package com.fsck.k9.preferences.upgrader -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import assertk.assertThat import assertk.assertions.containsExactlyInAnyOrder import com.fsck.k9.preferences.InternalSettingsMap diff --git a/legacy/core/src/test/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo98Test.kt b/legacy/core/src/test/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo98Test.kt index 464ab46181..56942b7bb4 100644 --- a/legacy/core/src/test/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo98Test.kt +++ b/legacy/core/src/test/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo98Test.kt @@ -1,6 +1,6 @@ package com.fsck.k9.preferences.upgrader -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import assertk.assertThat import assertk.assertions.containsExactlyInAnyOrder import com.fsck.k9.preferences.InternalSettingsMap diff --git a/legacy/core/src/test/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo99Test.kt b/legacy/core/src/test/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo99Test.kt index 9cab515365..7c8d910b0e 100644 --- a/legacy/core/src/test/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo99Test.kt +++ b/legacy/core/src/test/java/com/fsck/k9/preferences/upgrader/CombinedSettingsUpgraderTo99Test.kt @@ -1,6 +1,6 @@ package com.fsck.k9.preferences.upgrader -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import assertk.assertThat import assertk.assertions.containsExactlyInAnyOrder import com.fsck.k9.preferences.InternalSettingsMap diff --git a/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo85.kt b/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo85.kt index a62cc68d5b..beae9c4718 100644 --- a/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo85.kt +++ b/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo85.kt @@ -4,7 +4,7 @@ import android.database.sqlite.SQLiteDatabase import android.os.Build import androidx.core.content.contentValuesOf import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import com.fsck.k9.mailstore.MigrationsHelper internal class MigrationTo85(private val db: SQLiteDatabase, private val migrationsHelper: MigrationsHelper) { diff --git a/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo86.kt b/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo86.kt index b3c391a1f9..977f523fe5 100644 --- a/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo86.kt +++ b/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo86.kt @@ -3,7 +3,7 @@ package com.fsck.k9.storage.migrations import android.database.sqlite.SQLiteDatabase import android.os.Build import androidx.core.content.contentValuesOf -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import com.fsck.k9.mailstore.MigrationsHelper internal class MigrationTo86(private val db: SQLiteDatabase, private val migrationsHelper: MigrationsHelper) { diff --git a/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo87.kt b/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo87.kt index c5ef1ec517..ebfba409fd 100644 --- a/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo87.kt +++ b/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo87.kt @@ -3,7 +3,7 @@ package com.fsck.k9.storage.migrations import android.database.sqlite.SQLiteDatabase import android.os.Build import androidx.core.content.contentValuesOf -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import com.fsck.k9.mailstore.MigrationsHelper internal class MigrationTo87(private val db: SQLiteDatabase, private val migrationsHelper: MigrationsHelper) { diff --git a/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo88.kt b/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo88.kt index 05dafcca81..ef46f2307a 100644 --- a/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo88.kt +++ b/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo88.kt @@ -3,7 +3,7 @@ package com.fsck.k9.storage.migrations import android.database.sqlite.SQLiteDatabase import android.os.Build import androidx.core.content.contentValuesOf -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import com.fsck.k9.mailstore.MigrationsHelper internal class MigrationTo88(private val db: SQLiteDatabase, private val migrationsHelper: MigrationsHelper) { diff --git a/legacy/storage/src/test/java/com/fsck/k9/storage/StoreSchemaDefinitionTest.kt b/legacy/storage/src/test/java/com/fsck/k9/storage/StoreSchemaDefinitionTest.kt index d15c9330e4..be06bdc36b 100644 --- a/legacy/storage/src/test/java/com/fsck/k9/storage/StoreSchemaDefinitionTest.kt +++ b/legacy/storage/src/test/java/com/fsck/k9/storage/StoreSchemaDefinitionTest.kt @@ -4,7 +4,7 @@ import android.database.sqlite.SQLiteDatabase import androidx.core.content.contentValuesOf import app.k9mail.core.android.common.database.map import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import assertk.Assert import assertk.assertFailure import assertk.assertThat diff --git a/legacy/storage/src/test/java/com/fsck/k9/storage/migrations/MigrationTo85Test.kt b/legacy/storage/src/test/java/com/fsck/k9/storage/migrations/MigrationTo85Test.kt index 64858382bb..639e39f92f 100644 --- a/legacy/storage/src/test/java/com/fsck/k9/storage/migrations/MigrationTo85Test.kt +++ b/legacy/storage/src/test/java/com/fsck/k9/storage/migrations/MigrationTo85Test.kt @@ -3,7 +3,7 @@ package com.fsck.k9.storage.migrations import android.content.ContentValues import android.database.sqlite.SQLiteDatabase import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import assertk.assertThat import assertk.assertions.containsExactlyInAnyOrder import com.fsck.k9.mailstore.MigrationsHelper diff --git a/legacy/storage/src/test/java/com/fsck/k9/storage/migrations/MigrationTo86Test.kt b/legacy/storage/src/test/java/com/fsck/k9/storage/migrations/MigrationTo86Test.kt index a2871cbd20..5d8095b5d9 100644 --- a/legacy/storage/src/test/java/com/fsck/k9/storage/migrations/MigrationTo86Test.kt +++ b/legacy/storage/src/test/java/com/fsck/k9/storage/migrations/MigrationTo86Test.kt @@ -3,7 +3,7 @@ package com.fsck.k9.storage.migrations import android.content.ContentValues import android.database.sqlite.SQLiteDatabase import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import assertk.assertThat import assertk.assertions.containsExactlyInAnyOrder import com.fsck.k9.mailstore.MigrationsHelper diff --git a/legacy/storage/src/test/java/com/fsck/k9/storage/migrations/MigrationTo87Test.kt b/legacy/storage/src/test/java/com/fsck/k9/storage/migrations/MigrationTo87Test.kt index 5a2d54978c..cf1af374cf 100644 --- a/legacy/storage/src/test/java/com/fsck/k9/storage/migrations/MigrationTo87Test.kt +++ b/legacy/storage/src/test/java/com/fsck/k9/storage/migrations/MigrationTo87Test.kt @@ -3,7 +3,7 @@ package com.fsck.k9.storage.migrations import android.content.ContentValues import android.database.sqlite.SQLiteDatabase import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import assertk.assertThat import assertk.assertions.containsExactlyInAnyOrder import com.fsck.k9.mailstore.MigrationsHelper diff --git a/legacy/storage/src/test/java/com/fsck/k9/storage/migrations/MigrationTo88Test.kt b/legacy/storage/src/test/java/com/fsck/k9/storage/migrations/MigrationTo88Test.kt index 431a7af55c..18025da703 100644 --- a/legacy/storage/src/test/java/com/fsck/k9/storage/migrations/MigrationTo88Test.kt +++ b/legacy/storage/src/test/java/com/fsck/k9/storage/migrations/MigrationTo88Test.kt @@ -3,7 +3,7 @@ package com.fsck.k9.storage.migrations import android.content.ContentValues import android.database.sqlite.SQLiteDatabase import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.FolderMode +import app.k9mail.legacy.account.FolderMode import assertk.assertThat import assertk.assertions.containsExactlyInAnyOrder import com.fsck.k9.mailstore.MigrationsHelper -- GitLab From 40ed835b683846558089afdf9ef21a93406a4ed2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 26 Mar 2025 16:39:10 +0100 Subject: [PATCH 176/262] Move DeletePolicy out of the account object --- .../qrcode/domain/entity/AccountData.kt | 2 +- .../qrcode/payload/QrCodePayloadMapper.kt | 2 +- .../qrcode/settings/XmlSettingWriter.kt | 2 +- .../qrcode/payload/FakeDeletePolicyProvider.kt | 2 +- .../qrcode/settings/XmlSettingWriterTest.kt | 2 +- .../java/app/k9mail/legacy/account/Account.kt | 15 --------------- .../app/k9mail/legacy/account/DeletePolicy.kt | 16 ++++++++++++++++ .../legacy/account/LegacyAccountWrapper.kt | 1 - .../legacy/account/LegacyAccountWrapperTest.kt | 1 - .../k9/account/DefaultDeletePolicyProvider.kt | 2 +- .../com/fsck/k9/account/DeletePolicyProvider.kt | 2 +- .../account/DefaultDeletePolicyProviderTest.kt | 8 ++++---- .../com/fsck/k9/AccountPreferenceSerializer.kt | 2 +- .../fsck/k9/controller/MessagingController.java | 2 +- .../preferences/AccountSettingsDescriptions.java | 2 +- .../fsck/k9/storage/migrations/MigrationTo74.kt | 2 +- .../settings/account/AccountSettingsDataStore.kt | 3 ++- 17 files changed, 33 insertions(+), 33 deletions(-) create mode 100644 legacy/account/src/main/java/app/k9mail/legacy/account/DeletePolicy.kt diff --git a/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/domain/entity/AccountData.kt b/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/domain/entity/AccountData.kt index 1dbf0f0ff5..60ed28500b 100644 --- a/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/domain/entity/AccountData.kt +++ b/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/domain/entity/AccountData.kt @@ -4,7 +4,7 @@ import app.k9mail.core.common.mail.EmailAddress import app.k9mail.core.common.net.Hostname import app.k9mail.core.common.net.Port import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.DeletePolicy +import app.k9mail.legacy.account.DeletePolicy internal data class AccountData( val sequenceNumber: Int, diff --git a/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/payload/QrCodePayloadMapper.kt b/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/payload/QrCodePayloadMapper.kt index 40eab8f995..d91fe143da 100644 --- a/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/payload/QrCodePayloadMapper.kt +++ b/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/payload/QrCodePayloadMapper.kt @@ -6,7 +6,7 @@ import app.k9mail.core.common.net.toHostname import app.k9mail.core.common.net.toPort import app.k9mail.feature.migration.qrcode.domain.entity.AccountData import app.k9mail.feature.migration.qrcode.domain.entity.AccountData.IncomingServerProtocol -import app.k9mail.legacy.account.Account.DeletePolicy +import app.k9mail.legacy.account.DeletePolicy import com.fsck.k9.account.DeletePolicyProvider internal class QrCodePayloadMapper( diff --git a/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/settings/XmlSettingWriter.kt b/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/settings/XmlSettingWriter.kt index 1b015df1d1..fb6fcb3ea0 100644 --- a/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/settings/XmlSettingWriter.kt +++ b/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/settings/XmlSettingWriter.kt @@ -6,7 +6,7 @@ import app.k9mail.feature.migration.qrcode.domain.entity.AccountData.Identity import app.k9mail.feature.migration.qrcode.domain.entity.AccountData.IncomingServer import app.k9mail.feature.migration.qrcode.domain.entity.AccountData.OutgoingServer import app.k9mail.feature.migration.qrcode.domain.entity.AccountData.OutgoingServerGroup -import app.k9mail.legacy.account.Account.DeletePolicy +import app.k9mail.legacy.account.DeletePolicy import java.io.OutputStream import org.xmlpull.v1.XmlSerializer diff --git a/feature/migration/qrcode/src/test/kotlin/app/k9mail/feature/migration/qrcode/payload/FakeDeletePolicyProvider.kt b/feature/migration/qrcode/src/test/kotlin/app/k9mail/feature/migration/qrcode/payload/FakeDeletePolicyProvider.kt index f3c7845305..82a0080828 100644 --- a/feature/migration/qrcode/src/test/kotlin/app/k9mail/feature/migration/qrcode/payload/FakeDeletePolicyProvider.kt +++ b/feature/migration/qrcode/src/test/kotlin/app/k9mail/feature/migration/qrcode/payload/FakeDeletePolicyProvider.kt @@ -1,6 +1,6 @@ package app.k9mail.feature.migration.qrcode.payload -import app.k9mail.legacy.account.Account.DeletePolicy +import app.k9mail.legacy.account.DeletePolicy import com.fsck.k9.account.DeletePolicyProvider class FakeDeletePolicyProvider : DeletePolicyProvider { diff --git a/feature/migration/qrcode/src/test/kotlin/app/k9mail/feature/migration/qrcode/settings/XmlSettingWriterTest.kt b/feature/migration/qrcode/src/test/kotlin/app/k9mail/feature/migration/qrcode/settings/XmlSettingWriterTest.kt index 51c1b09169..afc31892a8 100644 --- a/feature/migration/qrcode/src/test/kotlin/app/k9mail/feature/migration/qrcode/settings/XmlSettingWriterTest.kt +++ b/feature/migration/qrcode/src/test/kotlin/app/k9mail/feature/migration/qrcode/settings/XmlSettingWriterTest.kt @@ -6,7 +6,7 @@ import app.k9mail.core.common.net.toPort import app.k9mail.feature.migration.qrcode.domain.entity.AccountData import app.k9mail.feature.migration.qrcode.domain.entity.AccountData.ConnectionSecurity import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.DeletePolicy +import app.k9mail.legacy.account.DeletePolicy import assertk.assertThat import assertk.assertions.isEqualTo import kotlin.test.Test diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt index a01d072375..846727de1a 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt @@ -636,21 +636,6 @@ open class Account( } } - @Suppress("MagicNumber") - enum class DeletePolicy(@JvmField val setting: Int) { - NEVER(0), - SEVEN_DAYS(1), - ON_DELETE(2), - MARK_AS_READ(3), - ; - - companion object { - fun fromInt(initialSetting: Int): DeletePolicy { - return entries.find { it.setting == initialSetting } ?: error("DeletePolicy $initialSetting unknown") - } - } - } - enum class SortType(val isDefaultAscending: Boolean) { SORT_DATE(false), SORT_ARRIVAL(false), diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/DeletePolicy.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/DeletePolicy.kt new file mode 100644 index 0000000000..b1dcbfeec1 --- /dev/null +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/DeletePolicy.kt @@ -0,0 +1,16 @@ +package app.k9mail.legacy.account + +@Suppress("MagicNumber") +enum class DeletePolicy(@JvmField val setting: Int) { + NEVER(0), + SEVEN_DAYS(1), + ON_DELETE(2), + MARK_AS_READ(3), + ; + + companion object { + fun fromInt(initialSetting: Int): DeletePolicy { + return entries.find { it.setting == initialSetting } ?: error("DeletePolicy $initialSetting unknown") + } + } +} diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt index 76f78df864..9e506685c9 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt @@ -1,7 +1,6 @@ package app.k9mail.legacy.account import app.k9mail.legacy.account.Account.Companion.NO_OPENPGP_KEY -import app.k9mail.legacy.account.Account.DeletePolicy import app.k9mail.legacy.account.Account.Expunge import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle diff --git a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt index 94d56e9170..9dfacc7adf 100644 --- a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt +++ b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt @@ -1,6 +1,5 @@ package app.k9mail.legacy.account -import app.k9mail.legacy.account.Account.DeletePolicy import app.k9mail.legacy.account.Account.Expunge import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle diff --git a/legacy/common/src/main/java/com/fsck/k9/account/DefaultDeletePolicyProvider.kt b/legacy/common/src/main/java/com/fsck/k9/account/DefaultDeletePolicyProvider.kt index f95b72cde7..411c28320e 100644 --- a/legacy/common/src/main/java/com/fsck/k9/account/DefaultDeletePolicyProvider.kt +++ b/legacy/common/src/main/java/com/fsck/k9/account/DefaultDeletePolicyProvider.kt @@ -1,7 +1,7 @@ package com.fsck.k9.account import app.k9mail.core.common.mail.Protocols -import app.k9mail.legacy.account.Account.DeletePolicy +import app.k9mail.legacy.account.DeletePolicy class DefaultDeletePolicyProvider : DeletePolicyProvider { override fun getDeletePolicy(accountType: String): DeletePolicy { diff --git a/legacy/common/src/main/java/com/fsck/k9/account/DeletePolicyProvider.kt b/legacy/common/src/main/java/com/fsck/k9/account/DeletePolicyProvider.kt index 99f85904fd..23a5f33623 100644 --- a/legacy/common/src/main/java/com/fsck/k9/account/DeletePolicyProvider.kt +++ b/legacy/common/src/main/java/com/fsck/k9/account/DeletePolicyProvider.kt @@ -1,7 +1,7 @@ package com.fsck.k9.account import app.k9mail.core.common.mail.Protocols -import app.k9mail.legacy.account.Account.DeletePolicy +import app.k9mail.legacy.account.DeletePolicy /** * Decides which [DeletePolicy] an account uses by default. diff --git a/legacy/common/src/test/java/com/fsck/k9/account/DefaultDeletePolicyProviderTest.kt b/legacy/common/src/test/java/com/fsck/k9/account/DefaultDeletePolicyProviderTest.kt index 616ce860ff..73f2d07c8a 100644 --- a/legacy/common/src/test/java/com/fsck/k9/account/DefaultDeletePolicyProviderTest.kt +++ b/legacy/common/src/test/java/com/fsck/k9/account/DefaultDeletePolicyProviderTest.kt @@ -1,7 +1,7 @@ package com.fsck.k9.account import app.k9mail.core.common.mail.Protocols -import app.k9mail.legacy.account.Account +import app.k9mail.legacy.account.DeletePolicy import assertk.assertFailure import assertk.assertThat import assertk.assertions.isEqualTo @@ -15,21 +15,21 @@ class DefaultDeletePolicyProviderTest { fun `getDeletePolicy with IMAP should return ON_DELETE`() { val result = deletePolicyProvider.getDeletePolicy(Protocols.IMAP) - assertThat(result).isEqualTo(Account.DeletePolicy.ON_DELETE) + assertThat(result).isEqualTo(DeletePolicy.ON_DELETE) } @Test fun `getDeletePolicy with POP3 should return NEVER`() { val result = deletePolicyProvider.getDeletePolicy(Protocols.POP3) - assertThat(result).isEqualTo(Account.DeletePolicy.NEVER) + assertThat(result).isEqualTo(DeletePolicy.NEVER) } @Test fun `getDeletePolicy with demo should return ON_DELETE`() { val result = deletePolicyProvider.getDeletePolicy("demo") - assertThat(result).isEqualTo(Account.DeletePolicy.ON_DELETE) + assertThat(result).isEqualTo(DeletePolicy.ON_DELETE) } @Test diff --git a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt index 6342ba8e9f..7fa26ba777 100644 --- a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt +++ b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt @@ -1,7 +1,6 @@ package com.fsck.k9 import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.DeletePolicy import app.k9mail.legacy.account.Account.Expunge import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle @@ -22,6 +21,7 @@ import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_STRIP import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_SYNC_INTERVAL import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.NO_OPENPGP_KEY import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.UNASSIGNED_ACCOUNT_NUMBER +import app.k9mail.legacy.account.DeletePolicy import app.k9mail.legacy.account.FolderMode import app.k9mail.legacy.account.Identity import app.k9mail.legacy.notification.NotificationLight diff --git a/legacy/core/src/main/java/com/fsck/k9/controller/MessagingController.java b/legacy/core/src/main/java/com/fsck/k9/controller/MessagingController.java index e463fc8931..95cae55e5b 100644 --- a/legacy/core/src/main/java/com/fsck/k9/controller/MessagingController.java +++ b/legacy/core/src/main/java/com/fsck/k9/controller/MessagingController.java @@ -29,7 +29,7 @@ import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import app.k9mail.core.featureflag.FeatureFlagProvider; import app.k9mail.legacy.account.Account; -import app.k9mail.legacy.account.Account.DeletePolicy; +import app.k9mail.legacy.account.DeletePolicy; import app.k9mail.legacy.di.DI; import app.k9mail.legacy.message.controller.MessageReference; import app.k9mail.legacy.message.controller.MessagingControllerMailChecker; diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java index 7054e01fe6..b75af9a6a4 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java @@ -12,7 +12,7 @@ import android.content.Context; import app.k9mail.legacy.account.AccountDefaultsProvider; import app.k9mail.legacy.notification.NotificationLight; import app.k9mail.legacy.account.Account; -import app.k9mail.legacy.account.Account.DeletePolicy; +import app.k9mail.legacy.account.DeletePolicy; import app.k9mail.legacy.account.Account.Expunge; import app.k9mail.legacy.account.FolderMode; import app.k9mail.legacy.account.Account.MessageFormat; diff --git a/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo74.kt b/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo74.kt index 0772e48953..3c8e461b7d 100644 --- a/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo74.kt +++ b/legacy/storage/src/main/java/com/fsck/k9/storage/migrations/MigrationTo74.kt @@ -3,7 +3,7 @@ package com.fsck.k9.storage.migrations import android.content.ContentValues import android.database.sqlite.SQLiteDatabase import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.DeletePolicy +import app.k9mail.legacy.account.DeletePolicy /** * Remove all placeholder entries in 'messages' table diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt index fcc8f3500c..14e1d62868 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt @@ -3,6 +3,7 @@ package com.fsck.k9.ui.settings.account import androidx.preference.PreferenceDataStore import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.Account.SpecialFolderSelection +import app.k9mail.legacy.account.DeletePolicy import app.k9mail.legacy.notification.NotificationLight import app.k9mail.legacy.notification.NotificationVibration import com.fsck.k9.Preferences @@ -152,7 +153,7 @@ class AccountSettingsDataStore( reschedulePoll() } } - "delete_policy" -> account.deletePolicy = Account.DeletePolicy.valueOf(value) + "delete_policy" -> account.deletePolicy = DeletePolicy.valueOf(value) "expunge_policy" -> account.expungePolicy = Account.Expunge.valueOf(value) "max_push_folders" -> account.maxPushFolders = value.toInt() "idle_refresh_period" -> account.idleRefreshMinutes = value.toInt() -- GitLab From d38a4c2b23ea000585180d472d9ac49c77bef1f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 26 Mar 2025 16:42:29 +0100 Subject: [PATCH 177/262] Move Expunge out of the account object --- .../java/app/k9mail/legacy/account/Account.kt | 14 -------------- .../java/app/k9mail/legacy/account/Expunge.kt | 16 ++++++++++++++++ .../legacy/account/LegacyAccountWrapper.kt | 1 - .../legacy/account/LegacyAccountWrapperTest.kt | 1 - .../com/fsck/k9/backends/ImapBackendFactory.kt | 2 +- .../com/fsck/k9/AccountPreferenceSerializer.kt | 2 +- .../preferences/AccountSettingsDescriptions.java | 2 +- .../k9/ui/messagelist/MessageListFragment.kt | 2 +- .../settings/account/AccountSettingsDataStore.kt | 3 ++- 9 files changed, 22 insertions(+), 21 deletions(-) create mode 100644 legacy/account/src/main/java/app/k9mail/legacy/account/Expunge.kt diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt index 846727de1a..6cd97bf1a1 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt @@ -2,7 +2,6 @@ package app.k9mail.legacy.account import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.NO_OPENPGP_KEY import app.k9mail.legacy.notification.NotificationSettings -import com.fsck.k9.backend.api.SyncConfig.ExpungePolicy import com.fsck.k9.mail.Address import com.fsck.k9.mail.ServerSettings import java.util.Calendar @@ -623,19 +622,6 @@ open class Account( AUTO, } - enum class Expunge { - EXPUNGE_IMMEDIATELY, - EXPUNGE_MANUALLY, - EXPUNGE_ON_POLL, - ; - - fun toBackendExpungePolicy(): ExpungePolicy = when (this) { - EXPUNGE_IMMEDIATELY -> ExpungePolicy.IMMEDIATELY - EXPUNGE_MANUALLY -> ExpungePolicy.MANUALLY - EXPUNGE_ON_POLL -> ExpungePolicy.ON_POLL - } - } - enum class SortType(val isDefaultAscending: Boolean) { SORT_DATE(false), SORT_ARRIVAL(false), diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/Expunge.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/Expunge.kt new file mode 100644 index 0000000000..38ad624679 --- /dev/null +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/Expunge.kt @@ -0,0 +1,16 @@ +package app.k9mail.legacy.account + +import com.fsck.k9.backend.api.SyncConfig.ExpungePolicy + +enum class Expunge { + EXPUNGE_IMMEDIATELY, + EXPUNGE_MANUALLY, + EXPUNGE_ON_POLL, + ; + + fun toBackendExpungePolicy(): ExpungePolicy = when (this) { + EXPUNGE_IMMEDIATELY -> ExpungePolicy.IMMEDIATELY + EXPUNGE_MANUALLY -> ExpungePolicy.MANUALLY + EXPUNGE_ON_POLL -> ExpungePolicy.ON_POLL + } +} diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt index 9e506685c9..b1605a2f32 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt @@ -1,7 +1,6 @@ package app.k9mail.legacy.account import app.k9mail.legacy.account.Account.Companion.NO_OPENPGP_KEY -import app.k9mail.legacy.account.Account.Expunge import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.Account.ShowPictures diff --git a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt index 9dfacc7adf..5d12b164f2 100644 --- a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt +++ b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt @@ -1,6 +1,5 @@ package app.k9mail.legacy.account -import app.k9mail.legacy.account.Account.Expunge import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.Account.ShowPictures diff --git a/legacy/common/src/main/java/com/fsck/k9/backends/ImapBackendFactory.kt b/legacy/common/src/main/java/com/fsck/k9/backends/ImapBackendFactory.kt index 7650aab37f..dc33f55b01 100644 --- a/legacy/common/src/main/java/com/fsck/k9/backends/ImapBackendFactory.kt +++ b/legacy/common/src/main/java/com/fsck/k9/backends/ImapBackendFactory.kt @@ -2,8 +2,8 @@ package com.fsck.k9.backends import android.content.Context import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.Expunge import app.k9mail.legacy.account.AccountManager +import app.k9mail.legacy.account.Expunge import com.fsck.k9.backend.BackendFactory import com.fsck.k9.backend.api.Backend import com.fsck.k9.backend.imap.ImapBackend diff --git a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt index 7fa26ba777..2bc4212c93 100644 --- a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt +++ b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt @@ -1,7 +1,6 @@ package com.fsck.k9 import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.Expunge import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.Account.ShowPictures @@ -22,6 +21,7 @@ import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_SYNC_ import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.NO_OPENPGP_KEY import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.UNASSIGNED_ACCOUNT_NUMBER import app.k9mail.legacy.account.DeletePolicy +import app.k9mail.legacy.account.Expunge import app.k9mail.legacy.account.FolderMode import app.k9mail.legacy.account.Identity import app.k9mail.legacy.notification.NotificationLight diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java index b75af9a6a4..a8aef18dec 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java @@ -13,7 +13,7 @@ import app.k9mail.legacy.account.AccountDefaultsProvider; import app.k9mail.legacy.notification.NotificationLight; import app.k9mail.legacy.account.Account; import app.k9mail.legacy.account.DeletePolicy; -import app.k9mail.legacy.account.Account.Expunge; +import app.k9mail.legacy.account.Expunge; import app.k9mail.legacy.account.FolderMode; import app.k9mail.legacy.account.Account.MessageFormat; import app.k9mail.legacy.account.Account.QuoteStyle; diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt index 7ed4aeb896..e916b2589d 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt @@ -28,9 +28,9 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.Expunge import app.k9mail.legacy.account.Account.SortType import app.k9mail.legacy.account.AccountManager +import app.k9mail.legacy.account.Expunge import app.k9mail.legacy.message.controller.MessageReference import app.k9mail.legacy.message.controller.SimpleMessagingListener import app.k9mail.legacy.search.LocalSearch diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt index 14e1d62868..13a89d7b9c 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt @@ -4,6 +4,7 @@ import androidx.preference.PreferenceDataStore import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.Account.SpecialFolderSelection import app.k9mail.legacy.account.DeletePolicy +import app.k9mail.legacy.account.Expunge import app.k9mail.legacy.notification.NotificationLight import app.k9mail.legacy.notification.NotificationVibration import com.fsck.k9.Preferences @@ -154,7 +155,7 @@ class AccountSettingsDataStore( } } "delete_policy" -> account.deletePolicy = DeletePolicy.valueOf(value) - "expunge_policy" -> account.expungePolicy = Account.Expunge.valueOf(value) + "expunge_policy" -> account.expungePolicy = Expunge.valueOf(value) "max_push_folders" -> account.maxPushFolders = value.toInt() "idle_refresh_period" -> account.idleRefreshMinutes = value.toInt() "message_format" -> account.messageFormat = Account.MessageFormat.valueOf(value) -- GitLab From 54cbb7e24d32ba9052310e56d4da4459572af78b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 26 Mar 2025 16:45:22 +0100 Subject: [PATCH 178/262] Move SortType out of the account object --- .../widget/message/list/MessageListConfig.kt | 2 +- .../widget/message/list/MessageListLoader.kt | 2 +- .../widget/message/list/MessageListWidget.kt | 2 +- .../widget/message/list/MessageListConfig.kt | 2 +- .../widget/message/list/MessageListLoader.kt | 2 +- .../message/list/MessageListRemoteViewFactory.kt | 2 +- .../java/app/k9mail/legacy/account/Account.kt | 10 ---------- .../legacy/account/LegacyAccountWrapper.kt | 1 - .../java/app/k9mail/legacy/account/SortType.kt | 11 +++++++++++ .../legacy/account/LegacyAccountWrapperTest.kt | 1 - .../com/fsck/k9/AccountPreferenceSerializer.kt | 2 +- legacy/core/src/main/java/com/fsck/k9/K9.kt | 2 +- .../preferences/AccountSettingsDescriptions.java | 2 +- .../preferences/GeneralSettingsDescriptions.java | 2 +- .../fsck/k9/ui/messagelist/MessageListConfig.kt | 2 +- .../k9/ui/messagelist/MessageListFragment.kt | 2 +- .../fsck/k9/ui/messagelist/MessageListLoader.kt | 2 +- .../k9/ui/messagelist/SortTypeToastProvider.kt | 16 ++++++++-------- 18 files changed, 32 insertions(+), 33 deletions(-) create mode 100644 legacy/account/src/main/java/app/k9mail/legacy/account/SortType.kt diff --git a/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListConfig.kt b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListConfig.kt index 2091c01dd3..84b582c04a 100644 --- a/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListConfig.kt +++ b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListConfig.kt @@ -1,6 +1,6 @@ package net.thunderbird.feature.widget.message.list -import app.k9mail.legacy.account.Account.SortType +import app.k9mail.legacy.account.SortType import app.k9mail.legacy.search.LocalSearch internal data class MessageListConfig( diff --git a/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListLoader.kt b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListLoader.kt index 68e8dfe010..1efd6f90fd 100644 --- a/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListLoader.kt +++ b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListLoader.kt @@ -1,7 +1,7 @@ package net.thunderbird.feature.widget.message.list import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.SortType +import app.k9mail.legacy.account.SortType import app.k9mail.legacy.mailstore.MessageListRepository import com.fsck.k9.Preferences import com.fsck.k9.helper.MessageHelper diff --git a/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListWidget.kt b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListWidget.kt index 3b724183ce..21ff192d2d 100644 --- a/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListWidget.kt +++ b/feature/widget/message-list-glance/src/main/kotlin/net/thunderbird/feature/widget/message/list/MessageListWidget.kt @@ -11,7 +11,7 @@ import androidx.core.app.PendingIntentCompat import androidx.glance.GlanceId import androidx.glance.appwidget.GlanceAppWidget import androidx.glance.appwidget.provideContent -import app.k9mail.legacy.account.Account.SortType +import app.k9mail.legacy.account.SortType import app.k9mail.legacy.search.SearchAccount.Companion.createUnifiedInboxAccount import com.fsck.k9.CoreResourceProvider import com.fsck.k9.K9 diff --git a/feature/widget/message-list/src/main/kotlin/app/k9mail/feature/widget/message/list/MessageListConfig.kt b/feature/widget/message-list/src/main/kotlin/app/k9mail/feature/widget/message/list/MessageListConfig.kt index b7e032f520..f7d264f6ac 100644 --- a/feature/widget/message-list/src/main/kotlin/app/k9mail/feature/widget/message/list/MessageListConfig.kt +++ b/feature/widget/message-list/src/main/kotlin/app/k9mail/feature/widget/message/list/MessageListConfig.kt @@ -1,6 +1,6 @@ package app.k9mail.feature.widget.message.list -import app.k9mail.legacy.account.Account.SortType +import app.k9mail.legacy.account.SortType import app.k9mail.legacy.search.LocalSearch internal data class MessageListConfig( diff --git a/feature/widget/message-list/src/main/kotlin/app/k9mail/feature/widget/message/list/MessageListLoader.kt b/feature/widget/message-list/src/main/kotlin/app/k9mail/feature/widget/message/list/MessageListLoader.kt index d5081d4b9a..e85d5ad5ae 100644 --- a/feature/widget/message-list/src/main/kotlin/app/k9mail/feature/widget/message/list/MessageListLoader.kt +++ b/feature/widget/message-list/src/main/kotlin/app/k9mail/feature/widget/message/list/MessageListLoader.kt @@ -1,7 +1,7 @@ package app.k9mail.feature.widget.message.list import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.SortType +import app.k9mail.legacy.account.SortType import app.k9mail.legacy.mailstore.MessageListRepository import com.fsck.k9.Preferences import com.fsck.k9.helper.MessageHelper diff --git a/feature/widget/message-list/src/main/kotlin/app/k9mail/feature/widget/message/list/MessageListRemoteViewFactory.kt b/feature/widget/message-list/src/main/kotlin/app/k9mail/feature/widget/message/list/MessageListRemoteViewFactory.kt index 90c6f38e3c..9950d45694 100644 --- a/feature/widget/message-list/src/main/kotlin/app/k9mail/feature/widget/message/list/MessageListRemoteViewFactory.kt +++ b/feature/widget/message-list/src/main/kotlin/app/k9mail/feature/widget/message/list/MessageListRemoteViewFactory.kt @@ -8,7 +8,7 @@ import android.view.View import android.widget.RemoteViews import android.widget.RemoteViewsService.RemoteViewsFactory import androidx.core.content.ContextCompat -import app.k9mail.legacy.account.Account.SortType +import app.k9mail.legacy.account.SortType import app.k9mail.legacy.search.LocalSearch import app.k9mail.legacy.search.SearchAccount import com.fsck.k9.CoreResourceProvider diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt index 6cd97bf1a1..2886ed1e25 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt @@ -622,16 +622,6 @@ open class Account( AUTO, } - enum class SortType(val isDefaultAscending: Boolean) { - SORT_DATE(false), - SORT_ARRIVAL(false), - SORT_SUBJECT(true), - SORT_SENDER(true), - SORT_UNREAD(true), - SORT_FLAGGED(true), - SORT_ATTACHMENT(true), - } - companion object { /** * Fixed name of outbox - not actually displayed. diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt index b1605a2f32..4fa4227612 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt @@ -4,7 +4,6 @@ import app.k9mail.legacy.account.Account.Companion.NO_OPENPGP_KEY import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.Account.ShowPictures -import app.k9mail.legacy.account.Account.SortType import app.k9mail.legacy.account.Account.SpecialFolderSelection import app.k9mail.legacy.notification.NotificationSettings import com.fsck.k9.mail.ServerSettings diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/SortType.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/SortType.kt new file mode 100644 index 0000000000..c8caf7cdca --- /dev/null +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/SortType.kt @@ -0,0 +1,11 @@ +package app.k9mail.legacy.account + +enum class SortType(val isDefaultAscending: Boolean) { + SORT_DATE(false), + SORT_ARRIVAL(false), + SORT_SUBJECT(true), + SORT_SENDER(true), + SORT_UNREAD(true), + SORT_FLAGGED(true), + SORT_ATTACHMENT(true), +} diff --git a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt index 5d12b164f2..62d317fb60 100644 --- a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt +++ b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt @@ -3,7 +3,6 @@ package app.k9mail.legacy.account import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.Account.ShowPictures -import app.k9mail.legacy.account.Account.SortType import app.k9mail.legacy.account.Account.SpecialFolderSelection import app.k9mail.legacy.notification.NotificationSettings import assertk.assertThat diff --git a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt index 2bc4212c93..c1096453c4 100644 --- a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt +++ b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt @@ -4,7 +4,6 @@ import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.Account.ShowPictures -import app.k9mail.legacy.account.Account.SortType import app.k9mail.legacy.account.Account.SpecialFolderSelection import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MAXIMUM_AUTO_DOWNLOAD_MESSAGE_SIZE import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MESSAGE_FORMAT @@ -24,6 +23,7 @@ import app.k9mail.legacy.account.DeletePolicy import app.k9mail.legacy.account.Expunge import app.k9mail.legacy.account.FolderMode import app.k9mail.legacy.account.Identity +import app.k9mail.legacy.account.SortType import app.k9mail.legacy.notification.NotificationLight import app.k9mail.legacy.notification.NotificationSettings import app.k9mail.legacy.notification.NotificationVibration diff --git a/legacy/core/src/main/java/com/fsck/k9/K9.kt b/legacy/core/src/main/java/com/fsck/k9/K9.kt index 3f72c6509f..d54f631768 100644 --- a/legacy/core/src/main/java/com/fsck/k9/K9.kt +++ b/legacy/core/src/main/java/com/fsck/k9/K9.kt @@ -5,8 +5,8 @@ import android.content.SharedPreferences import app.k9mail.core.featureflag.FeatureFlagProvider import app.k9mail.core.featureflag.toFeatureFlagKey import app.k9mail.feature.telemetry.api.TelemetryManager -import app.k9mail.legacy.account.Account.SortType import app.k9mail.legacy.account.AccountDefaultsProvider +import app.k9mail.legacy.account.SortType import app.k9mail.legacy.di.DI import com.fsck.k9.core.BuildConfig import com.fsck.k9.mail.K9MailLib diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java index a8aef18dec..5472acf3a5 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java @@ -18,7 +18,7 @@ import app.k9mail.legacy.account.FolderMode; import app.k9mail.legacy.account.Account.MessageFormat; import app.k9mail.legacy.account.Account.QuoteStyle; import app.k9mail.legacy.account.Account.ShowPictures; -import app.k9mail.legacy.account.Account.SortType; +import app.k9mail.legacy.account.SortType; import app.k9mail.legacy.account.Account.SpecialFolderSelection; import app.k9mail.legacy.di.DI; import com.fsck.k9.K9; diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/GeneralSettingsDescriptions.java b/legacy/core/src/main/java/com/fsck/k9/preferences/GeneralSettingsDescriptions.java index 657d05107e..f5ab3ec076 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/GeneralSettingsDescriptions.java +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/GeneralSettingsDescriptions.java @@ -10,7 +10,7 @@ import java.util.TreeMap; import android.content.Context; import app.k9mail.feature.telemetry.api.TelemetryManager; -import app.k9mail.legacy.account.Account.SortType; +import app.k9mail.legacy.account.SortType; import app.k9mail.legacy.account.AccountDefaultsProvider; import app.k9mail.legacy.di.DI; import app.k9mail.legacy.preferences.AppTheme; diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListConfig.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListConfig.kt index 6b494ff603..9234726c3c 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListConfig.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListConfig.kt @@ -1,6 +1,6 @@ package com.fsck.k9.ui.messagelist -import app.k9mail.legacy.account.Account.SortType +import app.k9mail.legacy.account.SortType import app.k9mail.legacy.message.controller.MessageReference import app.k9mail.legacy.search.LocalSearch diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt index e916b2589d..5618eabf97 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt @@ -28,9 +28,9 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.SortType import app.k9mail.legacy.account.AccountManager import app.k9mail.legacy.account.Expunge +import app.k9mail.legacy.account.SortType import app.k9mail.legacy.message.controller.MessageReference import app.k9mail.legacy.message.controller.SimpleMessagingListener import app.k9mail.legacy.search.LocalSearch diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListLoader.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListLoader.kt index 3d737135b7..1f4813d21c 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListLoader.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListLoader.kt @@ -1,7 +1,7 @@ package com.fsck.k9.ui.messagelist import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.SortType +import app.k9mail.legacy.account.SortType import app.k9mail.legacy.mailstore.MessageListRepository import app.k9mail.legacy.search.LocalSearch import app.k9mail.legacy.search.api.SearchField diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/SortTypeToastProvider.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/SortTypeToastProvider.kt index 4e6631d2c1..4ebe32bef0 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/SortTypeToastProvider.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/SortTypeToastProvider.kt @@ -1,13 +1,13 @@ package com.fsck.k9.ui.messagelist -import app.k9mail.legacy.account.Account.SortType -import app.k9mail.legacy.account.Account.SortType.SORT_ARRIVAL -import app.k9mail.legacy.account.Account.SortType.SORT_ATTACHMENT -import app.k9mail.legacy.account.Account.SortType.SORT_DATE -import app.k9mail.legacy.account.Account.SortType.SORT_FLAGGED -import app.k9mail.legacy.account.Account.SortType.SORT_SENDER -import app.k9mail.legacy.account.Account.SortType.SORT_SUBJECT -import app.k9mail.legacy.account.Account.SortType.SORT_UNREAD +import app.k9mail.legacy.account.SortType +import app.k9mail.legacy.account.SortType.SORT_ARRIVAL +import app.k9mail.legacy.account.SortType.SORT_ATTACHMENT +import app.k9mail.legacy.account.SortType.SORT_DATE +import app.k9mail.legacy.account.SortType.SORT_FLAGGED +import app.k9mail.legacy.account.SortType.SORT_SENDER +import app.k9mail.legacy.account.SortType.SORT_SUBJECT +import app.k9mail.legacy.account.SortType.SORT_UNREAD import com.fsck.k9.ui.R class SortTypeToastProvider { -- GitLab From e864bd78bc580456f137bee8a3313fc7700c7881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 26 Mar 2025 16:47:10 +0100 Subject: [PATCH 179/262] Move SpecialFolderSelection out of the account object --- .../src/main/java/app/k9mail/legacy/account/Account.kt | 5 ----- .../java/app/k9mail/legacy/account/LegacyAccountWrapper.kt | 1 - .../app/k9mail/legacy/account/SpecialFolderSelection.kt | 6 ++++++ .../app/k9mail/legacy/account/LegacyAccountWrapperTest.kt | 1 - .../src/main/java/com/fsck/k9/account/AccountCreator.kt | 2 +- .../main/java/com/fsck/k9/AccountPreferenceSerializer.kt | 2 +- .../main/java/com/fsck/k9/mailstore/SpecialFolderUpdater.kt | 2 +- .../com/fsck/k9/mailstore/SpecialLocalFoldersCreator.kt | 2 +- .../fsck/k9/preferences/AccountSettingsDescriptions.java | 2 +- .../fsck/k9/ui/settings/account/AccountSettingsDataStore.kt | 2 +- 10 files changed, 12 insertions(+), 13 deletions(-) create mode 100644 legacy/account/src/main/java/app/k9mail/legacy/account/SpecialFolderSelection.kt diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt index 2886ed1e25..6f9ac8370c 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt @@ -600,11 +600,6 @@ open class Account( return uuid.hashCode() } - enum class SpecialFolderSelection { - AUTOMATIC, - MANUAL, - } - enum class ShowPictures { NEVER, ALWAYS, diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt index 4fa4227612..868bf7d540 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt @@ -4,7 +4,6 @@ import app.k9mail.legacy.account.Account.Companion.NO_OPENPGP_KEY import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.Account.ShowPictures -import app.k9mail.legacy.account.Account.SpecialFolderSelection import app.k9mail.legacy.notification.NotificationSettings import com.fsck.k9.mail.ServerSettings diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/SpecialFolderSelection.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/SpecialFolderSelection.kt new file mode 100644 index 0000000000..b6bd67b911 --- /dev/null +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/SpecialFolderSelection.kt @@ -0,0 +1,6 @@ +package app.k9mail.legacy.account + +enum class SpecialFolderSelection { + AUTOMATIC, + MANUAL, +} diff --git a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt index 62d317fb60..59faf55719 100644 --- a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt +++ b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt @@ -3,7 +3,6 @@ package app.k9mail.legacy.account import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.Account.ShowPictures -import app.k9mail.legacy.account.Account.SpecialFolderSelection import app.k9mail.legacy.notification.NotificationSettings import assertk.assertThat import assertk.assertions.isEqualTo diff --git a/legacy/common/src/main/java/com/fsck/k9/account/AccountCreator.kt b/legacy/common/src/main/java/com/fsck/k9/account/AccountCreator.kt index 5e2adbd990..0bec0d4f3f 100644 --- a/legacy/common/src/main/java/com/fsck/k9/account/AccountCreator.kt +++ b/legacy/common/src/main/java/com/fsck/k9/account/AccountCreator.kt @@ -7,7 +7,7 @@ import app.k9mail.feature.account.common.domain.entity.SpecialFolderOption import app.k9mail.feature.account.common.domain.entity.SpecialFolderSettings import app.k9mail.feature.account.setup.AccountSetupExternalContract import app.k9mail.feature.account.setup.AccountSetupExternalContract.AccountCreator.AccountCreatorResult -import app.k9mail.legacy.account.Account.SpecialFolderSelection +import app.k9mail.legacy.account.SpecialFolderSelection import com.fsck.k9.Core import com.fsck.k9.Preferences import com.fsck.k9.controller.MessagingController diff --git a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt index c1096453c4..abc1f90417 100644 --- a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt +++ b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt @@ -4,7 +4,6 @@ import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.Account.ShowPictures -import app.k9mail.legacy.account.Account.SpecialFolderSelection import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MAXIMUM_AUTO_DOWNLOAD_MESSAGE_SIZE import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MESSAGE_FORMAT import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MESSAGE_FORMAT_AUTO @@ -24,6 +23,7 @@ import app.k9mail.legacy.account.Expunge import app.k9mail.legacy.account.FolderMode import app.k9mail.legacy.account.Identity import app.k9mail.legacy.account.SortType +import app.k9mail.legacy.account.SpecialFolderSelection import app.k9mail.legacy.notification.NotificationLight import app.k9mail.legacy.notification.NotificationSettings import app.k9mail.legacy.notification.NotificationVibration diff --git a/legacy/core/src/main/java/com/fsck/k9/mailstore/SpecialFolderUpdater.kt b/legacy/core/src/main/java/com/fsck/k9/mailstore/SpecialFolderUpdater.kt index 0b7b8004f3..3b99767036 100644 --- a/legacy/core/src/main/java/com/fsck/k9/mailstore/SpecialFolderUpdater.kt +++ b/legacy/core/src/main/java/com/fsck/k9/mailstore/SpecialFolderUpdater.kt @@ -3,7 +3,7 @@ package com.fsck.k9.mailstore import app.k9mail.core.common.mail.Protocols import app.k9mail.core.mail.folder.api.FolderType import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.SpecialFolderSelection +import app.k9mail.legacy.account.SpecialFolderSelection import app.k9mail.legacy.mailstore.FolderRepository import com.fsck.k9.Preferences import net.thunderbird.feature.folder.api.RemoteFolder diff --git a/legacy/core/src/main/java/com/fsck/k9/mailstore/SpecialLocalFoldersCreator.kt b/legacy/core/src/main/java/com/fsck/k9/mailstore/SpecialLocalFoldersCreator.kt index be3390fcae..57024e8aab 100644 --- a/legacy/core/src/main/java/com/fsck/k9/mailstore/SpecialLocalFoldersCreator.kt +++ b/legacy/core/src/main/java/com/fsck/k9/mailstore/SpecialLocalFoldersCreator.kt @@ -2,7 +2,7 @@ package com.fsck.k9.mailstore import app.k9mail.core.common.mail.Protocols import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.SpecialFolderSelection +import app.k9mail.legacy.account.SpecialFolderSelection import com.fsck.k9.Preferences import com.fsck.k9.mail.FolderType import timber.log.Timber diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java index 5472acf3a5..5e6630ccc3 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java @@ -19,7 +19,7 @@ import app.k9mail.legacy.account.Account.MessageFormat; import app.k9mail.legacy.account.Account.QuoteStyle; import app.k9mail.legacy.account.Account.ShowPictures; import app.k9mail.legacy.account.SortType; -import app.k9mail.legacy.account.Account.SpecialFolderSelection; +import app.k9mail.legacy.account.SpecialFolderSelection; import app.k9mail.legacy.di.DI; import com.fsck.k9.K9; import com.fsck.k9.core.R; diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt index 13a89d7b9c..54b6cc1493 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt @@ -2,9 +2,9 @@ package com.fsck.k9.ui.settings.account import androidx.preference.PreferenceDataStore import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.SpecialFolderSelection import app.k9mail.legacy.account.DeletePolicy import app.k9mail.legacy.account.Expunge +import app.k9mail.legacy.account.SpecialFolderSelection import app.k9mail.legacy.notification.NotificationLight import app.k9mail.legacy.notification.NotificationVibration import com.fsck.k9.Preferences -- GitLab From 519a6fa17f29068a72d543820464cf29e596bd0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 26 Mar 2025 16:49:25 +0100 Subject: [PATCH 180/262] Move ShowPictures out of the account object --- .../src/main/java/app/k9mail/legacy/account/Account.kt | 6 ------ .../java/app/k9mail/legacy/account/LegacyAccountWrapper.kt | 1 - .../main/java/app/k9mail/legacy/account/ShowPictures.kt | 7 +++++++ .../app/k9mail/legacy/account/LegacyAccountWrapperTest.kt | 1 - .../main/java/com/fsck/k9/AccountPreferenceSerializer.kt | 2 +- .../fsck/k9/preferences/AccountSettingsDescriptions.java | 2 +- .../main/java/com/fsck/k9/ui/messageview/MessageTopView.kt | 2 +- .../k9/ui/settings/account/AccountSettingsDataStore.kt | 3 ++- 8 files changed, 12 insertions(+), 12 deletions(-) create mode 100644 legacy/account/src/main/java/app/k9mail/legacy/account/ShowPictures.kt diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt index 6f9ac8370c..fb8a460de4 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt @@ -600,12 +600,6 @@ open class Account( return uuid.hashCode() } - enum class ShowPictures { - NEVER, - ALWAYS, - ONLY_FROM_CONTACTS, - } - enum class QuoteStyle { PREFIX, HEADER, diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt index 868bf7d540..794751726c 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt @@ -3,7 +3,6 @@ package app.k9mail.legacy.account import app.k9mail.legacy.account.Account.Companion.NO_OPENPGP_KEY import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle -import app.k9mail.legacy.account.Account.ShowPictures import app.k9mail.legacy.notification.NotificationSettings import com.fsck.k9.mail.ServerSettings diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/ShowPictures.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/ShowPictures.kt new file mode 100644 index 0000000000..6d7a122bd4 --- /dev/null +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/ShowPictures.kt @@ -0,0 +1,7 @@ +package app.k9mail.legacy.account + +enum class ShowPictures { + NEVER, + ALWAYS, + ONLY_FROM_CONTACTS, +} diff --git a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt index 59faf55719..447d32fabe 100644 --- a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt +++ b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt @@ -2,7 +2,6 @@ package app.k9mail.legacy.account import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle -import app.k9mail.legacy.account.Account.ShowPictures import app.k9mail.legacy.notification.NotificationSettings import assertk.assertThat import assertk.assertions.isEqualTo diff --git a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt index abc1f90417..8a29af4a0b 100644 --- a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt +++ b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt @@ -3,7 +3,6 @@ package com.fsck.k9 import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle -import app.k9mail.legacy.account.Account.ShowPictures import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MAXIMUM_AUTO_DOWNLOAD_MESSAGE_SIZE import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MESSAGE_FORMAT import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MESSAGE_FORMAT_AUTO @@ -22,6 +21,7 @@ import app.k9mail.legacy.account.DeletePolicy import app.k9mail.legacy.account.Expunge import app.k9mail.legacy.account.FolderMode import app.k9mail.legacy.account.Identity +import app.k9mail.legacy.account.ShowPictures import app.k9mail.legacy.account.SortType import app.k9mail.legacy.account.SpecialFolderSelection import app.k9mail.legacy.notification.NotificationLight diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java index 5e6630ccc3..e03f6bd52b 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java @@ -17,7 +17,7 @@ import app.k9mail.legacy.account.Expunge; import app.k9mail.legacy.account.FolderMode; import app.k9mail.legacy.account.Account.MessageFormat; import app.k9mail.legacy.account.Account.QuoteStyle; -import app.k9mail.legacy.account.Account.ShowPictures; +import app.k9mail.legacy.account.ShowPictures; import app.k9mail.legacy.account.SortType; import app.k9mail.legacy.account.SpecialFolderSelection; import app.k9mail.legacy.di.DI; diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messageview/MessageTopView.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messageview/MessageTopView.kt index 57247a0367..ec6f7a9cd0 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messageview/MessageTopView.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/messageview/MessageTopView.kt @@ -19,7 +19,7 @@ import app.k9mail.core.android.common.contact.ContactRepository import app.k9mail.core.common.mail.EmailAddress import app.k9mail.core.common.mail.toEmailAddressOrNull import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.ShowPictures +import app.k9mail.legacy.account.ShowPictures import com.fsck.k9.mail.Message import com.fsck.k9.mailstore.AttachmentViewInfo import com.fsck.k9.mailstore.MessageViewInfo diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt index 54b6cc1493..3102b4b64d 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt @@ -4,6 +4,7 @@ import androidx.preference.PreferenceDataStore import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.DeletePolicy import app.k9mail.legacy.account.Expunge +import app.k9mail.legacy.account.ShowPictures import app.k9mail.legacy.account.SpecialFolderSelection import app.k9mail.legacy.notification.NotificationLight import app.k9mail.legacy.notification.NotificationVibration @@ -145,7 +146,7 @@ class AccountSettingsDataStore( when (key) { "account_description" -> account.name = value - "show_pictures_enum" -> account.showPictures = Account.ShowPictures.valueOf(value) + "show_pictures_enum" -> account.showPictures = ShowPictures.valueOf(value) "account_display_count" -> account.displayCount = value.toInt() "account_message_age" -> account.maximumPolledMessageAge = value.toInt() "account_autodownload_size" -> account.maximumAutoDownloadMessageSize = value.toInt() -- GitLab From b4b62f718fd71f864fb8269347b3fc6bbd6b44fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 26 Mar 2025 16:50:57 +0100 Subject: [PATCH 181/262] Move MessageFormat out of the account object --- .../src/main/java/app/k9mail/legacy/account/Account.kt | 6 ------ .../java/app/k9mail/legacy/account/LegacyAccountWrapper.kt | 1 - .../main/java/app/k9mail/legacy/account/MessageFormat.kt | 7 +++++++ .../app/k9mail/legacy/account/LegacyAccountWrapperTest.kt | 1 - .../main/java/com/fsck/k9/AccountPreferenceSerializer.kt | 2 +- .../fsck/k9/preferences/AccountSettingsDescriptions.java | 2 +- .../src/main/java/com/fsck/k9/activity/MessageCompose.java | 2 +- .../com/fsck/k9/ui/compose/QuotedMessagePresenter.java | 2 +- .../k9/ui/settings/account/AccountSettingsDataStore.kt | 5 ++++- 9 files changed, 15 insertions(+), 13 deletions(-) create mode 100644 legacy/account/src/main/java/app/k9mail/legacy/account/MessageFormat.kt diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt index fb8a460de4..a78fc9866c 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt @@ -605,12 +605,6 @@ open class Account( HEADER, } - enum class MessageFormat { - TEXT, - HTML, - AUTO, - } - companion object { /** * Fixed name of outbox - not actually displayed. diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt index 794751726c..7a5a41698b 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt @@ -1,7 +1,6 @@ package app.k9mail.legacy.account import app.k9mail.legacy.account.Account.Companion.NO_OPENPGP_KEY -import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.notification.NotificationSettings import com.fsck.k9.mail.ServerSettings diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/MessageFormat.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/MessageFormat.kt new file mode 100644 index 0000000000..df1b859c66 --- /dev/null +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/MessageFormat.kt @@ -0,0 +1,7 @@ +package app.k9mail.legacy.account + +enum class MessageFormat { + TEXT, + HTML, + AUTO, +} diff --git a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt index 447d32fabe..26df230554 100644 --- a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt +++ b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt @@ -1,6 +1,5 @@ package app.k9mail.legacy.account -import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.notification.NotificationSettings import assertk.assertThat diff --git a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt index 8a29af4a0b..d56c62ad09 100644 --- a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt +++ b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt @@ -1,7 +1,6 @@ package com.fsck.k9 import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.MessageFormat import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MAXIMUM_AUTO_DOWNLOAD_MESSAGE_SIZE import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MESSAGE_FORMAT @@ -21,6 +20,7 @@ import app.k9mail.legacy.account.DeletePolicy import app.k9mail.legacy.account.Expunge import app.k9mail.legacy.account.FolderMode import app.k9mail.legacy.account.Identity +import app.k9mail.legacy.account.MessageFormat import app.k9mail.legacy.account.ShowPictures import app.k9mail.legacy.account.SortType import app.k9mail.legacy.account.SpecialFolderSelection diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java index e03f6bd52b..1e5a007d99 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java @@ -15,7 +15,7 @@ import app.k9mail.legacy.account.Account; import app.k9mail.legacy.account.DeletePolicy; import app.k9mail.legacy.account.Expunge; import app.k9mail.legacy.account.FolderMode; -import app.k9mail.legacy.account.Account.MessageFormat; +import app.k9mail.legacy.account.MessageFormat; import app.k9mail.legacy.account.Account.QuoteStyle; import app.k9mail.legacy.account.ShowPictures; import app.k9mail.legacy.account.SortType; diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java b/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java index 445a4b9fc0..cc329543ff 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageCompose.java @@ -48,7 +48,7 @@ import app.k9mail.core.ui.legacy.designsystem.atom.icon.Icons; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import app.k9mail.legacy.account.Account; -import app.k9mail.legacy.account.Account.MessageFormat; +import app.k9mail.legacy.account.MessageFormat; import app.k9mail.legacy.di.DI; import app.k9mail.legacy.account.Identity; import com.fsck.k9.K9; diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/compose/QuotedMessagePresenter.java b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/compose/QuotedMessagePresenter.java index 27851e03ae..56d6d0f454 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/compose/QuotedMessagePresenter.java +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/compose/QuotedMessagePresenter.java @@ -8,7 +8,7 @@ import android.os.Bundle; import androidx.annotation.NonNull; import app.k9mail.core.android.common.compat.BundleCompat; import app.k9mail.legacy.account.Account; -import app.k9mail.legacy.account.Account.MessageFormat; +import app.k9mail.legacy.account.MessageFormat; import app.k9mail.legacy.account.Account.QuoteStyle; import app.k9mail.legacy.di.DI; import com.fsck.k9.activity.MessageCompose; diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt index 3102b4b64d..0b4eadc2f9 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt @@ -4,6 +4,9 @@ import androidx.preference.PreferenceDataStore import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.DeletePolicy import app.k9mail.legacy.account.Expunge +import app.k9mail.legacy.account.LegacyAccount +import app.k9mail.legacy.account.MessageFormat +import app.k9mail.legacy.account.QuoteStyle import app.k9mail.legacy.account.ShowPictures import app.k9mail.legacy.account.SpecialFolderSelection import app.k9mail.legacy.notification.NotificationLight @@ -159,7 +162,7 @@ class AccountSettingsDataStore( "expunge_policy" -> account.expungePolicy = Expunge.valueOf(value) "max_push_folders" -> account.maxPushFolders = value.toInt() "idle_refresh_period" -> account.idleRefreshMinutes = value.toInt() - "message_format" -> account.messageFormat = Account.MessageFormat.valueOf(value) + "message_format" -> account.messageFormat = MessageFormat.valueOf(value) "quote_style" -> account.quoteStyle = Account.QuoteStyle.valueOf(value) "account_quote_prefix" -> account.quotePrefix = value "account_setup_auto_expand_folder" -> account.autoExpandFolderId = extractFolderId(value) -- GitLab From 37a9117afe7372fdda133c11aec09d8ed5092d42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 26 Mar 2025 16:52:51 +0100 Subject: [PATCH 182/262] Move QuoteStyle out of the account object --- .../src/main/java/app/k9mail/legacy/account/Account.kt | 5 ----- .../java/app/k9mail/legacy/account/LegacyAccountWrapper.kt | 1 - .../src/main/java/app/k9mail/legacy/account/QuoteStyle.kt | 6 ++++++ .../app/k9mail/legacy/account/LegacyAccountWrapperTest.kt | 1 - .../main/java/com/fsck/k9/AccountPreferenceSerializer.kt | 2 +- .../java/com/fsck/k9/message/IdentityHeaderBuilder.java | 2 +- .../src/main/java/com/fsck/k9/message/MessageBuilder.java | 2 +- .../java/com/fsck/k9/message/quote/HtmlQuoteCreator.java | 2 +- .../main/java/com/fsck/k9/message/quote/TextQuoteCreator.kt | 2 +- .../fsck/k9/preferences/AccountSettingsDescriptions.java | 2 +- .../java/com/fsck/k9/message/IdentityHeaderBuilderTest.kt | 2 +- .../test/java/com/fsck/k9/message/MessageBuilderTest.java | 2 +- .../java/com/fsck/k9/message/quote/TextQuoteCreatorTest.kt | 2 +- .../java/com/fsck/k9/ui/compose/QuotedMessagePresenter.java | 2 +- .../fsck/k9/ui/settings/account/AccountSettingsDataStore.kt | 4 +--- .../fsck/k9/ui/settings/account/AccountSettingsFragment.kt | 5 +++-- .../test/java/com/fsck/k9/message/PgpMessageBuilderTest.kt | 2 +- 17 files changed, 21 insertions(+), 23 deletions(-) create mode 100644 legacy/account/src/main/java/app/k9mail/legacy/account/QuoteStyle.kt diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt index a78fc9866c..28925354f5 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/Account.kt @@ -600,11 +600,6 @@ open class Account( return uuid.hashCode() } - enum class QuoteStyle { - PREFIX, - HEADER, - } - companion object { /** * Fixed name of outbox - not actually displayed. diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt index 7a5a41698b..fbb8e8f965 100644 --- a/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/LegacyAccountWrapper.kt @@ -1,7 +1,6 @@ package app.k9mail.legacy.account import app.k9mail.legacy.account.Account.Companion.NO_OPENPGP_KEY -import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.notification.NotificationSettings import com.fsck.k9.mail.ServerSettings diff --git a/legacy/account/src/main/java/app/k9mail/legacy/account/QuoteStyle.kt b/legacy/account/src/main/java/app/k9mail/legacy/account/QuoteStyle.kt new file mode 100644 index 0000000000..36955f80d1 --- /dev/null +++ b/legacy/account/src/main/java/app/k9mail/legacy/account/QuoteStyle.kt @@ -0,0 +1,6 @@ +package app.k9mail.legacy.account + +enum class QuoteStyle { + PREFIX, + HEADER, +} diff --git a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt index 26df230554..dd12ee6dcc 100644 --- a/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt +++ b/legacy/account/src/test/kotlin/app/k9mail/legacy/account/LegacyAccountWrapperTest.kt @@ -1,6 +1,5 @@ package app.k9mail.legacy.account -import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.notification.NotificationSettings import assertk.assertThat import assertk.assertions.isEqualTo diff --git a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt index d56c62ad09..f9025734ef 100644 --- a/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt +++ b/legacy/core/src/main/java/com/fsck/k9/AccountPreferenceSerializer.kt @@ -1,7 +1,6 @@ package com.fsck.k9 import app.k9mail.legacy.account.Account -import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MAXIMUM_AUTO_DOWNLOAD_MESSAGE_SIZE import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MESSAGE_FORMAT import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.DEFAULT_MESSAGE_FORMAT_AUTO @@ -21,6 +20,7 @@ import app.k9mail.legacy.account.Expunge import app.k9mail.legacy.account.FolderMode import app.k9mail.legacy.account.Identity import app.k9mail.legacy.account.MessageFormat +import app.k9mail.legacy.account.QuoteStyle import app.k9mail.legacy.account.ShowPictures import app.k9mail.legacy.account.SortType import app.k9mail.legacy.account.SpecialFolderSelection diff --git a/legacy/core/src/main/java/com/fsck/k9/message/IdentityHeaderBuilder.java b/legacy/core/src/main/java/com/fsck/k9/message/IdentityHeaderBuilder.java index 1d7d07d7e4..000929617e 100644 --- a/legacy/core/src/main/java/com/fsck/k9/message/IdentityHeaderBuilder.java +++ b/legacy/core/src/main/java/com/fsck/k9/message/IdentityHeaderBuilder.java @@ -6,7 +6,7 @@ import java.util.Objects; import android.net.Uri; import android.net.Uri.Builder; -import app.k9mail.legacy.account.Account.QuoteStyle; +import app.k9mail.legacy.account.QuoteStyle; import app.k9mail.legacy.account.Identity; import com.fsck.k9.K9; import app.k9mail.legacy.message.controller.MessageReference; diff --git a/legacy/core/src/main/java/com/fsck/k9/message/MessageBuilder.java b/legacy/core/src/main/java/com/fsck/k9/message/MessageBuilder.java index f88dc990f0..86eb0b3508 100644 --- a/legacy/core/src/main/java/com/fsck/k9/message/MessageBuilder.java +++ b/legacy/core/src/main/java/com/fsck/k9/message/MessageBuilder.java @@ -15,7 +15,7 @@ import com.fsck.k9.mail.internet.AddressHeaderBuilder; import com.fsck.k9.mail.internet.Headers; import timber.log.Timber; -import app.k9mail.legacy.account.Account.QuoteStyle; +import app.k9mail.legacy.account.QuoteStyle; import app.k9mail.legacy.account.Identity; import com.fsck.k9.K9; import app.k9mail.legacy.message.controller.MessageReference; diff --git a/legacy/core/src/main/java/com/fsck/k9/message/quote/HtmlQuoteCreator.java b/legacy/core/src/main/java/com/fsck/k9/message/quote/HtmlQuoteCreator.java index 9327bb3d15..5a3c375e19 100644 --- a/legacy/core/src/main/java/com/fsck/k9/message/quote/HtmlQuoteCreator.java +++ b/legacy/core/src/main/java/com/fsck/k9/message/quote/HtmlQuoteCreator.java @@ -8,7 +8,7 @@ import com.fsck.k9.CoreResourceProvider; import app.k9mail.legacy.di.DI; import timber.log.Timber; -import app.k9mail.legacy.account.Account.QuoteStyle; +import app.k9mail.legacy.account.QuoteStyle; import com.fsck.k9.mail.Address; import com.fsck.k9.mail.Message; import com.fsck.k9.mail.Message.RecipientType; diff --git a/legacy/core/src/main/java/com/fsck/k9/message/quote/TextQuoteCreator.kt b/legacy/core/src/main/java/com/fsck/k9/message/quote/TextQuoteCreator.kt index 20eb5c20b5..f48c9cb25f 100644 --- a/legacy/core/src/main/java/com/fsck/k9/message/quote/TextQuoteCreator.kt +++ b/legacy/core/src/main/java/com/fsck/k9/message/quote/TextQuoteCreator.kt @@ -1,6 +1,6 @@ package com.fsck.k9.message.quote -import app.k9mail.legacy.account.Account.QuoteStyle +import app.k9mail.legacy.account.QuoteStyle import com.fsck.k9.CoreResourceProvider import com.fsck.k9.mail.Address import com.fsck.k9.mail.Message diff --git a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java index 1e5a007d99..480da346a8 100644 --- a/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java +++ b/legacy/core/src/main/java/com/fsck/k9/preferences/AccountSettingsDescriptions.java @@ -16,7 +16,7 @@ import app.k9mail.legacy.account.DeletePolicy; import app.k9mail.legacy.account.Expunge; import app.k9mail.legacy.account.FolderMode; import app.k9mail.legacy.account.MessageFormat; -import app.k9mail.legacy.account.Account.QuoteStyle; +import app.k9mail.legacy.account.QuoteStyle; import app.k9mail.legacy.account.ShowPictures; import app.k9mail.legacy.account.SortType; import app.k9mail.legacy.account.SpecialFolderSelection; diff --git a/legacy/core/src/test/java/com/fsck/k9/message/IdentityHeaderBuilderTest.kt b/legacy/core/src/test/java/com/fsck/k9/message/IdentityHeaderBuilderTest.kt index e87969ca92..1176a569f8 100644 --- a/legacy/core/src/test/java/com/fsck/k9/message/IdentityHeaderBuilderTest.kt +++ b/legacy/core/src/test/java/com/fsck/k9/message/IdentityHeaderBuilderTest.kt @@ -2,8 +2,8 @@ package com.fsck.k9.message import android.net.Uri import app.k9mail.core.android.testing.RobolectricTest -import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.Identity +import app.k9mail.legacy.account.QuoteStyle import assertk.Assert import assertk.assertThat import assertk.assertions.contains diff --git a/legacy/core/src/test/java/com/fsck/k9/message/MessageBuilderTest.java b/legacy/core/src/test/java/com/fsck/k9/message/MessageBuilderTest.java index b4a45a00cd..e90c0f901a 100644 --- a/legacy/core/src/test/java/com/fsck/k9/message/MessageBuilderTest.java +++ b/legacy/core/src/test/java/com/fsck/k9/message/MessageBuilderTest.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.Map; import app.k9mail.core.android.testing.RobolectricTest; -import app.k9mail.legacy.account.Account.QuoteStyle; +import app.k9mail.legacy.account.QuoteStyle; import com.fsck.k9.CoreResourceProvider; import app.k9mail.legacy.account.Identity; import com.fsck.k9.TestCoreResourceProvider; diff --git a/legacy/core/src/test/java/com/fsck/k9/message/quote/TextQuoteCreatorTest.kt b/legacy/core/src/test/java/com/fsck/k9/message/quote/TextQuoteCreatorTest.kt index ba4b1265e3..340f682a5f 100644 --- a/legacy/core/src/test/java/com/fsck/k9/message/quote/TextQuoteCreatorTest.kt +++ b/legacy/core/src/test/java/com/fsck/k9/message/quote/TextQuoteCreatorTest.kt @@ -1,7 +1,7 @@ package com.fsck.k9.message.quote import app.k9mail.core.android.testing.RobolectricTest -import app.k9mail.legacy.account.Account.QuoteStyle +import app.k9mail.legacy.account.QuoteStyle import assertk.assertThat import assertk.assertions.isEqualTo import com.fsck.k9.TestCoreResourceProvider diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/compose/QuotedMessagePresenter.java b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/compose/QuotedMessagePresenter.java index 56d6d0f454..ba581ad8af 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/compose/QuotedMessagePresenter.java +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/compose/QuotedMessagePresenter.java @@ -9,7 +9,7 @@ import androidx.annotation.NonNull; import app.k9mail.core.android.common.compat.BundleCompat; import app.k9mail.legacy.account.Account; import app.k9mail.legacy.account.MessageFormat; -import app.k9mail.legacy.account.Account.QuoteStyle; +import app.k9mail.legacy.account.QuoteStyle; import app.k9mail.legacy.di.DI; import com.fsck.k9.activity.MessageCompose; import com.fsck.k9.activity.MessageCompose.Action; diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt index 0b4eadc2f9..a0667f0374 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsDataStore.kt @@ -1,10 +1,8 @@ package com.fsck.k9.ui.settings.account import androidx.preference.PreferenceDataStore -import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.DeletePolicy import app.k9mail.legacy.account.Expunge -import app.k9mail.legacy.account.LegacyAccount import app.k9mail.legacy.account.MessageFormat import app.k9mail.legacy.account.QuoteStyle import app.k9mail.legacy.account.ShowPictures @@ -163,7 +161,7 @@ class AccountSettingsDataStore( "max_push_folders" -> account.maxPushFolders = value.toInt() "idle_refresh_period" -> account.idleRefreshMinutes = value.toInt() "message_format" -> account.messageFormat = MessageFormat.valueOf(value) - "quote_style" -> account.quoteStyle = Account.QuoteStyle.valueOf(value) + "quote_style" -> account.quoteStyle = QuoteStyle.valueOf(value) "account_quote_prefix" -> account.quotePrefix = value "account_setup_auto_expand_folder" -> account.autoExpandFolderId = extractFolderId(value) "archive_folder" -> saveSpecialFolderSelection(value, account::setArchiveFolderId) diff --git a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt index 6c6d5db24e..da0cfa2b40 100644 --- a/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt +++ b/legacy/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt @@ -21,6 +21,7 @@ import app.k9mail.feature.launcher.FeatureLauncherActivity import app.k9mail.feature.launcher.FeatureLauncherTarget import app.k9mail.legacy.account.Account import app.k9mail.legacy.account.AccountDefaultsProvider.Companion.NO_OPENPGP_KEY +import app.k9mail.legacy.account.QuoteStyle import com.fsck.k9.account.BackgroundAccountRemover import com.fsck.k9.activity.ManageIdentities import com.fsck.k9.activity.setup.AccountSetupComposition @@ -196,8 +197,8 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr private fun initializeQuoteStyle() { findPreference(PREFERENCE_QUOTE_STYLE)?.apply { setOnPreferenceChangeListener { _, newValue -> - val quoteStyle = Account.QuoteStyle.valueOf(newValue.toString()) - notifyDependencyChange(quoteStyle == Account.QuoteStyle.HEADER) + val quoteStyle = QuoteStyle.valueOf(newValue.toString()) + notifyDependencyChange(quoteStyle == QuoteStyle.HEADER) true } } diff --git a/legacy/ui/legacy/src/test/java/com/fsck/k9/message/PgpMessageBuilderTest.kt b/legacy/ui/legacy/src/test/java/com/fsck/k9/message/PgpMessageBuilderTest.kt index c5d93be68f..49907120e0 100644 --- a/legacy/ui/legacy/src/test/java/com/fsck/k9/message/PgpMessageBuilderTest.kt +++ b/legacy/ui/legacy/src/test/java/com/fsck/k9/message/PgpMessageBuilderTest.kt @@ -4,8 +4,8 @@ import android.app.Activity import android.app.PendingIntent import android.content.Intent import android.os.Parcelable -import app.k9mail.legacy.account.Account.QuoteStyle import app.k9mail.legacy.account.Identity +import app.k9mail.legacy.account.QuoteStyle import assertk.Assert import assertk.all import assertk.assertThat -- GitLab From 4c0552ea22ac9e3bcb8d91f3dec9eaed6f54e7ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montwe=CC=81?= Date: Wed, 26 Mar 2025 14:59:38 +0100 Subject: [PATCH 183/262] Rename Account to LegacyAccount to emphasize that this class is deprecated Use the LegacyAccountWrapper --- .idea/codeStyles/Project.xml | 1 + .../account/CommonAccountDefaultsProvider.kt | 16 +- .../app/k9mail/dev/DemoBackendFactory.kt | 4 +- .../android/dev/DemoBackendFactory.kt | 4 +- .../qrcode/domain/entity/AccountData.kt | 1 - .../domain/usecase/QrCodePayloadReaderTest.kt | 1 - .../qrcode/payload/QrCodePayloadMapperTest.kt | 1 - .../qrcode/settings/XmlSettingWriterTest.kt | 1 - .../feature/navigation/drawer/ui/FakeData.kt | 4 +- .../feature/navigation/drawer/FolderDrawer.kt | 4 +- .../navigation/drawer/NavigationDrawer.kt | 4 +- .../domain/usecase/GetDisplayAccounts.kt | 4 +- .../drawer/domain/usecase/SyncAccount.kt | 4 +- .../drawer/domain/usecase/SyncAllAccounts.kt | 4 +- .../drawer/data/FakeMessageCountsProvider.kt | 6 +- .../domain/usecase/FakeAccountManager.kt | 16 +- .../usecase/FakeDisplayFolderRepository.kt | 4 +- .../FakeMessagingControllerMailChecker.kt | 6 +- .../settings/import/ui/AuthViewModel.kt | 14 +- .../message/list/MessageListItemMapper.kt | 6 +- .../widget/message/list/MessageListLoader.kt | 4 +- .../message/list/MessageListItemMapper.kt | 6 +- .../widget/message/list/MessageListLoader.kt | 4 +- .../widget/unread/UnreadWidgetDataProvider.kt | 8 +- .../unread/UnreadWidgetUpdateListener.kt | 16 +- .../unread/UnreadWidgetDataProviderTest.kt | 8 +- .../legacy/account/AccountDefaultsProvider.kt | 6 +- .../k9mail/legacy/account/AccountManager.kt | 12 +- .../legacy/account/AccountRemovedListener.kt | 2 +- .../account/{Account.kt => LegacyAccount.kt} | 4 +- .../legacy/account/LegacyAccountWrapper.kt | 13 +- .../account/LegacyAccountWrapperTest.kt | 6 +- .../com/fsck/k9/account/AccountActivator.kt | 6 +- .../com/fsck/k9/account/AccountCreator.kt | 2 +- .../com/fsck/k9/account/AccountStateLoader.kt | 6 +- .../k9/backends/AccountAuthStateStorage.kt | 4 +- .../fsck/k9/backends/ImapBackendFactory.kt | 14 +- .../backends/ImapServerSettingsExtensions.kt | 4 +- .../fsck/k9/backends/Pop3BackendFactory.kt | 8 +- .../K9NotificationActionCreator.kt | 32 +-- .../k9/notification/K9NotificationStrategy.kt | 5 +- .../AccountServerSettingsUpdaterTest.kt | 2 +- .../fsck/k9/account/AccountStateLoaderTest.kt | 4 +- .../com/fsck/k9/account/FakeAccountManager.kt | 16 +- .../fsck/k9/AccountPreferenceSerializer.kt | 17 +- .../java/com/fsck/k9/LocalKeyStoreManager.kt | 8 +- .../src/main/java/com/fsck/k9/Preferences.kt | 44 +-- .../com/fsck/k9/backend/BackendFactory.kt | 4 +- .../com/fsck/k9/backend/BackendManager.kt | 14 +- .../fsck/k9/controller/ArchiveOperations.kt | 15 +- .../DefaultMessageCountsProvider.kt | 10 +- .../com/fsck/k9/controller/DraftOperations.kt | 12 +- .../controller/LocalDeleteOperationDecider.kt | 6 +- .../MemorizingMessagingListener.java | 20 +- .../k9/controller/MessagingController.java | 260 +++++++++--------- .../MessagingControllerCommands.java | 24 +- .../k9/controller/NotificationOperations.kt | 6 +- .../controller/push/AccountPushController.kt | 4 +- .../push/AccountPushControllerFactory.kt | 4 +- .../fsck/k9/controller/push/PushController.kt | 10 +- .../java/com/fsck/k9/helper/IdentityHelper.kt | 6 +- .../com/fsck/k9/helper/ReplyToParser.java | 6 +- .../main/java/com/fsck/k9/job/K9JobManager.kt | 4 +- .../java/com/fsck/k9/job/MailSyncWorker.kt | 4 +- .../com/fsck/k9/job/MailSyncWorkerManager.kt | 10 +- ...pandFolderBackendFoldersRefreshListener.kt | 4 +- .../k9/mailstore/FolderSettingsProvider.kt | 4 +- .../k9/mailstore/K9BackendStorageFactory.kt | 4 +- .../com/fsck/k9/mailstore/LocalFolder.java | 4 +- .../com/fsck/k9/mailstore/LocalMessage.java | 4 +- .../com/fsck/k9/mailstore/LocalStore.java | 14 +- .../fsck/k9/mailstore/LocalStoreProvider.kt | 6 +- .../fsck/k9/mailstore/MigrationsHelper.java | 4 +- .../fsck/k9/mailstore/SpecialFolderUpdater.kt | 10 +- .../mailstore/SpecialLocalFoldersCreator.kt | 10 +- .../fsck/k9/message/ReplyActionStrategy.kt | 4 +- ...thenticationErrorNotificationController.kt | 10 +- .../BaseNotificationDataCreator.kt | 4 +- .../CertificateErrorNotificationController.kt | 10 +- .../NewMailNotificationController.kt | 10 +- .../notification/NewMailNotificationData.kt | 4 +- .../NewMailNotificationManager.kt | 16 +- .../notification/NotificationActionCreator.kt | 26 +- .../notification/NotificationActionService.kt | 12 +- .../NotificationChannelManager.kt | 26 +- .../NotificationConfigurationConverter.kt | 4 +- .../NotificationContentCreator.kt | 7 +- .../k9/notification/NotificationController.kt | 37 +-- .../fsck/k9/notification/NotificationData.kt | 6 +- .../k9/notification/NotificationDataStore.kt | 15 +- .../k9/notification/NotificationGroupKeys.kt | 4 +- .../k9/notification/NotificationHelper.kt | 8 +- .../fsck/k9/notification/NotificationIds.kt | 18 +- .../k9/notification/NotificationRepository.kt | 18 +- .../NotificationSettingsUpdater.kt | 4 +- .../notification/NotificationStoreProvider.kt | 4 +- .../k9/notification/NotificationStrategy.kt | 4 +- .../SendFailedNotificationController.kt | 8 +- .../SingleMessageNotificationDataCreator.kt | 8 +- .../SummaryNotificationCreator.kt | 29 +- .../SummaryNotificationDataCreator.kt | 4 +- .../SyncNotificationController.kt | 16 +- .../AccountSettingsDescriptions.java | 2 +- .../k9/preferences/AccountSettingsWriter.kt | 4 +- .../k9/preferences/FolderSettingsProvider.kt | 4 +- .../fsck/k9/preferences/SettingsExporter.kt | 9 +- .../fsck/k9/provider/AttachmentProvider.java | 8 +- .../fsck/k9/provider/RawMessageProvider.java | 4 +- .../fsck/k9/search/AccountSearchConditions.kt | 4 +- .../fsck/k9/search/LocalSearchExtensions.kt | 4 +- .../k9/service/DatabaseUpgradeService.java | 6 +- .../DefaultMessageCountsProviderTest.kt | 4 +- .../LocalDeleteOperationDeciderTest.kt | 4 +- .../controller/MessagingControllerTest.java | 4 +- .../com/fsck/k9/helper/IdentityHelperTest.kt | 4 +- .../com/fsck/k9/helper/ReplyToParserTest.java | 6 +- .../fsck/k9/mailstore/K9BackendFolderTest.kt | 6 +- .../fsck/k9/mailstore/K9BackendStorageTest.kt | 6 +- .../k9/message/ReplyActionStrategyTest.kt | 6 +- ...ticationErrorNotificationControllerTest.kt | 6 +- .../BaseNotificationDataCreatorTest.kt | 6 +- ...tificateErrorNotificationControllerTest.kt | 6 +- .../LockScreenNotificationCreatorTest.kt | 4 +- .../NewMailNotificationManagerTest.kt | 6 +- .../NotificationContentCreatorTest.kt | 4 +- .../notification/NotificationDataStoreTest.kt | 6 +- .../k9/notification/NotificationIdsTest.kt | 10 +- .../SendFailedNotificationControllerTest.kt | 4 +- ...ingleMessageNotificationDataCreatorTest.kt | 6 +- .../SummaryNotificationDataCreatorTest.kt | 6 +- .../SyncNotificationControllerTest.kt | 4 +- .../core/FakeAccountDefaultsProvider.kt | 4 +- .../legacy/mailstore/FolderRepository.kt | 36 +-- .../legacy/mailstore/FolderTypeMapper.kt | 4 +- .../legacy/mailstore/MessageStoreFactory.kt | 4 +- .../legacy/mailstore/MessageStoreManager.kt | 4 +- .../mailstore/MessageStoreManagerTest.kt | 4 +- .../controller/MessageCountsProvider.kt | 6 +- .../MessagingControllerMailChecker.kt | 4 +- .../message/controller/MessagingListener.java | 36 +-- .../controller/SimpleMessagingListener.java | 36 +-- .../storage/messages/K9MessageStoreFactory.kt | 4 +- .../k9/storage/migrations/MigrationTo74.kt | 4 +- .../k9/storage/migrations/MigrationTo76.kt | 4 +- .../k9/storage/migrations/MigrationTo85.kt | 4 +- .../K9NotificationStoreProvider.kt | 4 +- .../k9/storage/StoreSchemaDefinitionTest.kt | 8 +- .../storage/migrations/MigrationTo85Test.kt | 10 +- .../storage/migrations/MigrationTo86Test.kt | 10 +- .../storage/migrations/MigrationTo87Test.kt | 10 +- .../storage/migrations/MigrationTo88Test.kt | 10 +- .../folder/DefaultDisplayFolderRepository.kt | 11 +- .../ui/folder/DisplayFolderRepository.kt | 4 +- .../com/fsck/k9/account/AccountRemover.kt | 8 +- .../java/com/fsck/k9/activity/AccountList.kt | 6 +- .../com/fsck/k9/activity/ChooseIdentity.java | 4 +- .../java/com/fsck/k9/activity/EditIdentity.kt | 4 +- .../com/fsck/k9/activity/FolderInfoHolder.kt | 8 +- .../com/fsck/k9/activity/MessageCompose.java | 18 +- .../java/com/fsck/k9/activity/MessageList.kt | 22 +- .../fsck/k9/activity/MessageLoaderHelper.java | 8 +- .../fsck/k9/activity/UpgradeDatabases.java | 6 +- .../k9/activity/compose/IdentityAdapter.java | 18 +- .../k9/activity/compose/MessageActions.java | 7 +- .../k9/activity/compose/RecipientPresenter.kt | 9 +- .../k9/activity/compose/SaveMessageTask.java | 6 +- .../activity/setup/AccountSetupComposition.kt | 4 +- .../ui/choosefolder/ChooseFolderActivity.kt | 4 +- .../ui/choosefolder/ChooseFolderViewModel.kt | 6 +- .../k9/ui/compose/QuotedMessagePresenter.java | 8 +- .../endtoend/AutocryptKeyTransferPresenter.kt | 4 +- .../AutocryptSetupMessageLiveEvent.kt | 6 +- .../AutocryptSetupTransferLiveEvent.kt | 4 +- .../fsck/k9/ui/helper/DisplayAddressHelper.kt | 4 +- .../managefolders/FolderSettingsDataStore.kt | 4 +- .../managefolders/FolderSettingsViewModel.kt | 8 +- .../ui/managefolders/ManageFoldersActivity.kt | 4 +- .../ui/managefolders/ManageFoldersFragment.kt | 4 +- .../managefolders/ManageFoldersViewModel.kt | 4 +- .../k9/ui/message/LocalMessageLoader.java | 6 +- .../MessageDetailsParticipantFormatter.kt | 8 +- .../messagedetails/MessageDetailsViewModel.kt | 4 +- .../ui/messagelist/DefaultFolderProvider.kt | 4 +- .../k9/ui/messagelist/MessageListFragment.kt | 38 +-- .../fsck/k9/ui/messagelist/MessageListItem.kt | 4 +- .../ui/messagelist/MessageListItemMapper.kt | 6 +- .../k9/ui/messagelist/MessageListLoader.kt | 8 +- .../com/fsck/k9/ui/messagelist/MlfUtils.java | 6 +- .../ui/messageview/AttachmentController.java | 8 +- .../messageview/DisplayRecipientsExtractor.kt | 4 +- .../messageview/MessageCryptoPresenter.java | 4 +- .../fsck/k9/ui/messageview/MessageTopView.kt | 6 +- .../k9/ui/messageview/MessageViewFragment.kt | 4 +- .../MessageViewRecipientFormatter.kt | 8 +- .../DeleteConfirmationActivity.kt | 4 +- .../com/fsck/k9/ui/settings/AccountItem.kt | 4 +- .../k9/ui/settings/SettingsListFragment.kt | 8 +- .../fsck/k9/ui/settings/SettingsViewModel.kt | 4 +- .../account/AccountSelectionSpinner.kt | 12 +- .../account/AccountSettingsDataStore.kt | 3 +- .../AccountSettingsDataStoreFactory.kt | 4 +- .../account/AccountSettingsFragment.kt | 38 +-- .../account/AccountSettingsViewModel.kt | 16 +- .../account/OpenPgpAppSelectDialog.java | 6 +- .../java/com/fsck/k9/view/MessageHeader.java | 8 +- .../compose/RecipientPresenterTest.kt | 4 +- .../MessageDetailsParticipantFormatterTest.kt | 10 +- .../ui/messagelist/MessageListAdapterTest.kt | 4 +- .../DisplayRecipientsExtractorTest.kt | 8 +- .../MessageViewRecipientFormatterTest.kt | 10 +- 210 files changed, 1016 insertions(+), 972 deletions(-) rename legacy/account/src/main/java/app/k9mail/legacy/account/{Account.kt => LegacyAccount.kt} (99%) diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 7f630e90f7..d1084871bb 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -28,6 +28,7 @@