Rework timestamp positioning (#2075)
* Rework timestamp positioning --------- Co-authored-by: ElementBot <benoitm+elementbot@element.io>
This commit is contained in:
parent
921e9d2ca4
commit
9ec67e3cbb
65 changed files with 169 additions and 155 deletions
1
changelog.d/2060.bugfix
Normal file
1
changelog.d/2060.bugfix
Normal file
|
|
@ -0,0 +1 @@
|
|||
Timestamp positioning was broken, specially for edited messages.
|
||||
|
|
@ -16,26 +16,30 @@
|
|||
|
||||
package io.element.android.features.messages.impl.timeline.components.event
|
||||
|
||||
import androidx.compose.material3.LocalTextStyle
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.platform.LocalDensity
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.TextMeasurer
|
||||
import androidx.compose.ui.text.TextStyle
|
||||
import androidx.compose.ui.text.rememberTextMeasurer
|
||||
import androidx.compose.ui.unit.Density
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.TextUnit
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.times
|
||||
import io.element.android.compound.theme.ElementTheme
|
||||
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
||||
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemTextBasedContent
|
||||
import io.element.android.libraries.core.bool.orFalse
|
||||
import io.element.android.libraries.designsystem.text.toDp
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState
|
||||
import io.element.android.compound.theme.ElementTheme
|
||||
import io.element.android.libraries.ui.strings.CommonStrings
|
||||
import kotlin.math.roundToInt
|
||||
import kotlin.math.ceil
|
||||
|
||||
// Allow to not overlap the timestamp with the text, in the message bubble.
|
||||
// Compute the size of the worst case.
|
||||
data class ExtraPadding(val nbChars: Int)
|
||||
data class ExtraPadding(val extraWidth: Dp)
|
||||
|
||||
val noExtraPadding = ExtraPadding(0)
|
||||
val noExtraPadding = ExtraPadding(0.dp)
|
||||
|
||||
/**
|
||||
* See [io.element.android.features.messages.impl.timeline.components.TimelineEventTimestampView] for the related View.
|
||||
|
|
@ -47,37 +51,48 @@ fun TimelineItem.Event.toExtraPadding(): ExtraPadding {
|
|||
val hasMessageSendingFailed = localSendState is LocalEventSendState.SendingFailed
|
||||
val isMessageEdited = (content as? TimelineItemTextBasedContent)?.isEdited.orFalse()
|
||||
|
||||
var strLen = 6
|
||||
val textMeasurer = rememberTextMeasurer(cacheSize = 128)
|
||||
val density = LocalDensity.current
|
||||
|
||||
var strLen = 2.dp // Extra space char
|
||||
if (isMessageEdited) {
|
||||
strLen += stringResource(id = CommonStrings.common_edited_suffix).length + 3
|
||||
val editedText = stringResource(id = CommonStrings.common_edited_suffix)
|
||||
val extraLen = remember(editedText, density) { textMeasurer.getExtraPadding(editedText, density) } + 10.dp // Text + spacing
|
||||
strLen += extraLen
|
||||
}
|
||||
strLen += formattedTime.length
|
||||
strLen += remember(formattedTime, density) { textMeasurer.getExtraPadding(formattedTime, density) }
|
||||
if (hasMessageSendingFailed) {
|
||||
strLen += 5
|
||||
strLen += 19.dp // Image + spacing
|
||||
// I do not know why, but adding extra widths avoid overlapping when the
|
||||
// message is edited and in error.
|
||||
if (isMessageEdited) {
|
||||
// I do not know why, but adding 2 more chars avoid overlapping when the
|
||||
// message is edited and in error.
|
||||
strLen += 2
|
||||
strLen += 2.dp
|
||||
}
|
||||
}
|
||||
return ExtraPadding(strLen)
|
||||
}
|
||||
|
||||
private fun TextMeasurer.getExtraPadding(text: String, density: Density): Dp {
|
||||
val timestampTextStyle = ElementTheme.typography.fontBodyXsRegular
|
||||
val textWidth = measure(text = text, style = timestampTextStyle).size.width
|
||||
return (textWidth/density.density).dp
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a string to add to the content of the message to avoid overlapping the timestamp.
|
||||
* @param fontSize the font size of the message content, to be able to add more space char if the font is small.
|
||||
*/
|
||||
fun ExtraPadding.getStr(fontSize: TextUnit): String {
|
||||
if (nbChars == 0) return ""
|
||||
val timestampFontSize = ElementTheme.typography.fontBodyXsRegular.fontSize // 11.sp
|
||||
val nbOfSpaces = (timestampFontSize.value / fontSize.value * nbChars).roundToInt() + 1
|
||||
// A space and some unbreakable spaces
|
||||
return " " + "\u00A0".repeat(nbOfSpaces)
|
||||
@Composable
|
||||
fun ExtraPadding.getStr(textStyle: TextStyle = LocalTextStyle.current): String {
|
||||
if (extraWidth == 0.dp) return ""
|
||||
val density = LocalDensity.current
|
||||
val textMeasurer = rememberTextMeasurer(128)
|
||||
val charWidth = remember(textStyle) { textMeasurer.measure(text = "\u00A0", style = textStyle).size.width }
|
||||
val widthPx = remember(density, extraWidth) { with(density) { extraWidth.toPx() } }
|
||||
// A space and some unbreakable spaces, always rounding the result to the next value if not a integer
|
||||
return " " + "\u00A0".repeat(ceil(widthPx / charWidth).toInt())
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun ExtraPadding.getDpSize(): Dp {
|
||||
if (nbChars == 0) return 0.dp
|
||||
val timestampFontSize = ElementTheme.typography.fontBodyXsRegular.fontSize // 11.sp
|
||||
return nbChars * timestampFontSize.toDp() / 3
|
||||
return extraWidth
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,14 +33,13 @@ import androidx.compose.ui.draw.clip
|
|||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import io.element.android.compound.theme.ElementTheme
|
||||
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemAudioContent
|
||||
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemAudioContentProvider
|
||||
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
||||
import io.element.android.libraries.designsystem.preview.ElementPreview
|
||||
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
||||
import io.element.android.libraries.designsystem.theme.components.Icon
|
||||
import io.element.android.libraries.designsystem.theme.components.Text
|
||||
import io.element.android.compound.theme.ElementTheme
|
||||
|
||||
@Composable
|
||||
fun TimelineItemAudioView(
|
||||
|
|
@ -76,7 +75,7 @@ fun TimelineItemAudioView(
|
|||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
Text(
|
||||
text = content.fileExtensionAndSize + extraPadding.getStr(12.sp),
|
||||
text = content.fileExtensionAndSize + extraPadding.getStr(ElementTheme.typography.fontBodySmRegular),
|
||||
color = ElementTheme.materialColors.secondary,
|
||||
style = ElementTheme.typography.fontBodySmRegular,
|
||||
maxLines = 1,
|
||||
|
|
|
|||
|
|
@ -32,15 +32,14 @@ import androidx.compose.ui.draw.rotate
|
|||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import io.element.android.compound.theme.ElementTheme
|
||||
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemFileContent
|
||||
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemFileContentProvider
|
||||
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
||||
import io.element.android.libraries.designsystem.preview.ElementPreview
|
||||
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
||||
import io.element.android.libraries.designsystem.theme.components.Icon
|
||||
import io.element.android.libraries.designsystem.theme.components.Text
|
||||
import io.element.android.libraries.designsystem.utils.CommonDrawables
|
||||
import io.element.android.compound.theme.ElementTheme
|
||||
|
||||
@Composable
|
||||
fun TimelineItemFileView(
|
||||
|
|
@ -77,7 +76,7 @@ fun TimelineItemFileView(
|
|||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
Text(
|
||||
text = content.fileExtensionAndSize + extraPadding.getStr(12.sp),
|
||||
text = content.fileExtensionAndSize + extraPadding.getStr(textStyle = ElementTheme.typography.fontBodySmRegular),
|
||||
color = ElementTheme.materialColors.secondary,
|
||||
style = ElementTheme.typography.fontBodySmRegular,
|
||||
maxLines = 1,
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ import androidx.compose.ui.Alignment
|
|||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.text.font.FontStyle
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import io.element.android.compound.theme.ElementTheme
|
||||
import io.element.android.libraries.designsystem.icons.CompoundDrawables
|
||||
import io.element.android.libraries.designsystem.preview.ElementPreview
|
||||
|
|
@ -58,7 +57,7 @@ fun TimelineItemInformativeView(
|
|||
fontStyle = FontStyle.Italic,
|
||||
color = MaterialTheme.colorScheme.secondary,
|
||||
style = ElementTheme.typography.fontBodyMdRegular,
|
||||
text = text + extraPadding.getStr(14.sp)
|
||||
text = text + extraPadding.getStr(textStyle = ElementTheme.typography.fontBodyMdRegular)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import androidx.compose.runtime.CompositionLocalProvider
|
|||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.core.text.buildSpannedString
|
||||
import io.element.android.compound.theme.ElementTheme
|
||||
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemTextBasedContent
|
||||
|
|
@ -45,16 +46,16 @@ fun TimelineItemTextView(
|
|||
LocalContentColor provides ElementTheme.colors.textPrimary,
|
||||
LocalTextStyle provides ElementTheme.typography.fontBodyLgRegular
|
||||
) {
|
||||
val fontSize = LocalTextStyle.current.fontSize
|
||||
|
||||
val formattedBody = content.formattedBody
|
||||
val body = SpannableString(formattedBody ?: content.body)
|
||||
val extraPaddingText = extraPadding.getStr()
|
||||
|
||||
Box(modifier) {
|
||||
val textWithPadding = remember(body, fontSize) {
|
||||
val textWithPadding = remember(body) {
|
||||
buildSpannedString {
|
||||
append(body)
|
||||
append(extraPadding.getStr(fontSize))
|
||||
append(extraPaddingText)
|
||||
}
|
||||
}
|
||||
EditorStyledText(
|
||||
|
|
@ -73,7 +74,7 @@ internal fun TimelineItemTextViewPreview(
|
|||
) = ElementPreview {
|
||||
TimelineItemTextView(
|
||||
content = content,
|
||||
extraPadding = ExtraPadding(nbChars = 8),
|
||||
extraPadding = ExtraPadding(extraWidth = 32.dp),
|
||||
onLinkClicked = {},
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:35611d5a52ef7df1100e99be186277cbd9f46c475ad4828debca5426f25fab0d
|
||||
size 18283
|
||||
oid sha256:f1f40fec45293d7676e851a2d9ea1b3a1e29770a01aa72c74013a8e36ec8e6f2
|
||||
size 18213
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1845780049821e0c1e6af9945bde7880a17b755ca7d260b6cb06e3064e43bbfc
|
||||
size 62716
|
||||
oid sha256:851fc21681b724affa557d219b8e7be86b6058b788a5f2983f0db96f113f00eb
|
||||
size 62632
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:13b64883f4caa390dd55158b885cc180d902ccf4956fd6acffd27e7fd61f50f4
|
||||
oid sha256:bd2f473ac5685ea4dfbb565204e3d3f1b608f0b44a06c382f562b97846b1d75e
|
||||
size 69546
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f78feb3ba3116ca0eb9ca0b44c16f2ad464b2dcebf8353e69baac40a26bd7744
|
||||
size 72458
|
||||
oid sha256:bb97680e0e8a74be5369ce8d443f4dbde8c8db5b3b5c62c8f91795e913f70497
|
||||
size 72429
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:284fd94cf9755c7e3554edf1df6bca0956317f5e71594ebcbe2bb2c86379a35f
|
||||
size 63013
|
||||
oid sha256:4c9cb9e39505d30bd562f26f61f30f68b037b1c3ac542e8499f7f602687d508a
|
||||
size 62930
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c1e770fc88ba9606a7c6372d641f1835d0431295fb5973a104b0fbb87bbbdbc8
|
||||
size 69562
|
||||
oid sha256:bf37662355ec12d52d2a8a88ef58fd9743b7fe278050d6d0a5504983c8844031
|
||||
size 69625
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3129621b2270b432f47cde1107ce37e611359f5e2363ddbe417687c6a60e4005
|
||||
size 71423
|
||||
oid sha256:b5be47550b5fcd0ffe3def6a4448e47c96641224100ed82acb977ee033527714
|
||||
size 71424
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f91a76355f9619360edc9728c7b7ef3c57ff4ef939c6eaa368cf1cd0ed39d356
|
||||
size 27365
|
||||
oid sha256:f7f88ed6f4c84ebe5c9dd6c46474fac299b2b2e8edce0bfebe49064bcaab5fe7
|
||||
size 27226
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3e4ea5c5d57a4b76e9544025852a94c3c53cb61893c341a5ee0cb3010f71655c
|
||||
size 26800
|
||||
oid sha256:bd8ab01406157ba78a9923611a9d21d5afe6d1d433f3aa3cf263b1507fd7eee7
|
||||
size 26774
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9859fede2392bc9afa0753dc30e800c7ebdebfc427263753b25cc6b564e633f2
|
||||
size 31854
|
||||
oid sha256:e7aafa97412bf18c9820aa158d0e1c2917cc471fa1977bf2ef6cc68d3a5bbc42
|
||||
size 31933
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:28d2169bed8334f79d1af98064f4a7238a8ef300c2993fb6a619b3bff4743d88
|
||||
size 26118
|
||||
oid sha256:a162bad1922fb62ab2da4fe396fed4192800e21b9bccff1c5b309a8cd482994a
|
||||
size 26169
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:32d40b69648df4da799b52afcd5912db3144d9846049629bc1183e17f9fae26b
|
||||
size 25638
|
||||
oid sha256:8198c156b3dcb61583d2543b3d2f4e62adbd54b9ac8579b9c2fbd9a8c6f8bc41
|
||||
size 25604
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3498c5276cb9346e0393d1975983242773c30e0c51296e5c4d803cbb9867bce7
|
||||
size 31020
|
||||
oid sha256:4beebf86fc936884447204fa81ef2104e25d60bde1581d077468d2ed6f3cc1ad
|
||||
size 31052
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:59cd8489ec06f17beb95990e06c5fdf726a22761ccb87212cf99919f231f0237
|
||||
size 151677
|
||||
oid sha256:1ee39bf77a133b0ddd544448fdcfd2e16fa0bb4b8b31d46be281b6d9127013c9
|
||||
size 151719
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7a9ed336d0c4ebfe6dfbaa8c8d5a5efd760003eb55369811bed7d30954910677
|
||||
size 150970
|
||||
oid sha256:76fd8d5c077fc47f4957b82f654d89151ad10b851f450d827dfa389866e7d1d7
|
||||
size 150948
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:39c1df36664808d4af9b3ac2881e648bafdf5354376b74f0ca7c731cb05072be
|
||||
size 150007
|
||||
oid sha256:683e230b3e60ce11c3a8e33edb7d74ccc819801d850d1b62e91236db003d2eb2
|
||||
size 150045
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:de3d3ef7e6b65220c7df8a25f2d1539990ef0a47b7e6f2d53b1f53a0e351af4c
|
||||
size 149396
|
||||
oid sha256:7c55cc66caf61aebbb514f6f13bdf563c5fc1bf32eba2db3df133d2d736af260
|
||||
size 149330
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4e0b5b467ed97c83a1c9034272a5d240495caa58b67d396604dabb222600d261
|
||||
size 52880
|
||||
oid sha256:5ea3e710d467877ccdb4842055ce36602675ad378bc6d135ee5c64edb21a89c6
|
||||
size 52864
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6633e52179bd8292522f68a49859dbba3bd8288d8ff69fadc2d780567e40f96e
|
||||
size 74716
|
||||
oid sha256:a8d8205687fd1c5a7579b3c426ea9547dae4250ba4261cec36f1ef2ea588c982
|
||||
size 74730
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:40ce9c457703b9c9d897ba29a16ef6837219a5546eb3be4d28edf891512ae654
|
||||
size 54370
|
||||
oid sha256:d2dd830883481bd3ed598bed06b3ca03573097adfa453f2fd889413e972244cd
|
||||
size 54500
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e047084332661073ae46845c9c50c8183155b05b89d8af44afc16da4f830cce8
|
||||
size 66881
|
||||
oid sha256:28266d8283d1e453832c3c88f223edc4be28d84406981f5fe87f254aecc736ca
|
||||
size 66910
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:93949d52105b04e499c776b96508eadf082fd792753552fdacdd9daedd18b9b2
|
||||
size 50741
|
||||
oid sha256:1427b32623dbcd384fae8819174936e13589457be7da88801ea48162752948cb
|
||||
size 50630
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:442d45fb15e9a8308a10050e36dd32cdd496e53133813ca86a5e447464168a74
|
||||
size 67822
|
||||
oid sha256:8ef232876e00b2c9b1448973a0fa5856f4574ce340d4035c9a3f60e41fa99fcb
|
||||
size 67758
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:409a084dc1ad3741710ad4dd347e77551245754e4a565eae02ccceb21868e2c4
|
||||
size 57682
|
||||
oid sha256:a65f7df1be94e2d77b0eab49c3025779c0a0e11afa428ddec651652a97335f19
|
||||
size 57833
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:69a47f2e0686d9b1ed2c949fae73ca58160d533ece9cfd36037e9ee759c56026
|
||||
size 72649
|
||||
oid sha256:dabe55acc4f18170c9f040980723ca75f81942df098d031d36955609a47e5be7
|
||||
size 72720
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fc7f746d4a3b570379d89ae47a6512f1e1cc5adfa5f80147f9effa1cf1408c05
|
||||
size 74766
|
||||
oid sha256:db6f0f1128a6372c4165cafd4255314216dc1aba3a48cafd043819bea4e573cb
|
||||
size 74400
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0f1a1df4b2ef561bec70334bc04b4cc7c27da12748307fd60ce2fbd11ebc86c9
|
||||
size 51235
|
||||
oid sha256:eb3be77004838a03b9e3f17e0b060775dcd876d0249a01c343c94a64edc05c2a
|
||||
size 51218
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7bad5c7b8889e0c3181b7a48b22c4b4d5ad1f83be1fa208c37331e4b96b5aa60
|
||||
size 71616
|
||||
oid sha256:62a81a4f33a8a76a2a9864fc522b6fe15765237a96663c8ecc8aca230642a771
|
||||
size 71545
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f5731be5c98b6969767c066234936533426290691cbedcd036579ee4c0b4f0c4
|
||||
size 52778
|
||||
oid sha256:029144f5977e38f7a088f49acb6cd31aad68579975f2b5641cf44f385721ec13
|
||||
size 52848
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e32f16c94772e25680bb7d29765c3872faeb7b8ea5f1a81423afd7e35b24c857
|
||||
size 64191
|
||||
oid sha256:e472556771fa5cc4253706bce70775664ba85b73566f34542aa580121583f153
|
||||
size 64185
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1d70b27822ec7815346cc080aee6c458a194a7029505aa0b422bcbb3d485650c
|
||||
size 49099
|
||||
oid sha256:c49f2fbd209374af8e379ec4339dfbbcff3f89c0dc1766cb30b570845e339bca
|
||||
size 48996
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ff62f66398396c2f1caa9bc1f70bed9599b4719bc177ddc51d58fbfa37424f8c
|
||||
size 64859
|
||||
oid sha256:0f483afa9110508d712f9ba0d6640b23e64d4ce7441506662c278e39b2213dc6
|
||||
size 64926
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ab2224ae3437deba68362128c29edb7580af56728335cc681dd22a6c28ea1eee
|
||||
size 55527
|
||||
oid sha256:50698141b3f660e5424b20fa7999df8ff09ce23cd072fc041bfc49511283ecd6
|
||||
size 55777
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6bcfb2bcbae7f633be037d0dc57362f01e815a8cc3ea1621c190033a18b448f2
|
||||
size 69898
|
||||
oid sha256:8333ae717f272947e4c904adb13913a6af952dbf7576153dfb41da5f2d854ff5
|
||||
size 69865
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2c453c2588c59ac02819a2e980120b40383e4bd070ea7b287be88fa1bb47a939
|
||||
size 72118
|
||||
oid sha256:24b48d07cb841f6fa038b856e30b19da7c96e1435b6b71ca25800911f05de53a
|
||||
size 72219
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3506ba2bcb44f19895ffbe7d9d8b57ca5b8e1724ef341a108a84e39c2ace11e5
|
||||
size 57157
|
||||
oid sha256:37646d8dba6f98c3a968a3bbe43b1db78acf2d5c3a25414f6da5cbecd8c4fef0
|
||||
size 56933
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6e294e99a1c50efb02eb39d6af1523a4df858d9033368f6ce87f9df3ec3e074e
|
||||
size 56092
|
||||
oid sha256:f481314b733bcf9ab303cb2f82266db4eb9a189ab65bc6d8523f895271306a16
|
||||
size 55869
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:571069d349466446378d0c5b893b89bc0756a00ff2f6392b98200c0ef669b0fc
|
||||
size 58854
|
||||
oid sha256:961bf2a4b81212c54750ffc66b2b72aebfbc56d880c376d6e06769fcea902e4d
|
||||
size 58632
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:275029e0e527f5cd17d08ef40c2f383539b9ebbc9dbcf081676ca6dc81df3a9b
|
||||
size 53436
|
||||
oid sha256:c663f2eed56ad24d4af5ee218c9c0557b7b0ec3d56aca3244ad934b5f05071e4
|
||||
size 53315
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d13360f421f757c0c56909912e2be97fd7c949c10c45ca1ad6140f3704d350d0
|
||||
size 57112
|
||||
oid sha256:92b5802745e5fab7bb9a7116965c1ab91aaa733f4a5df37b41f6043a5eb5e5f6
|
||||
size 56887
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5c3290066eedb635bc6d8776aa1e77bcfd8b7db6bd340f27a573262f7c6f25c3
|
||||
size 59306
|
||||
oid sha256:7defaa404dcffce62e76ebdf958caa0b5b6c3450f02638c8510dc5bed36fc794
|
||||
size 59135
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3501ea6945e2ec40177e4e0ebd1c00e7664bc705115d73b84bef5cbb3b2465a4
|
||||
size 58251
|
||||
oid sha256:40e7658ea9ab037d289392b42a458c2ec1c8626e3e852ba844eed508ad0c3787
|
||||
size 58121
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:030436d020d1aa369eec4657ef1c40627c4a6e641b1d7050c7950b016520f4e8
|
||||
size 54940
|
||||
oid sha256:b43fb4f3732d6931c7d146d1324d7bde87d06cc4a659fb37846415dbb8717ccd
|
||||
size 54713
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9ad670d3b46c40df6c01d891e1319f53c8cd5e5e260e91bceb811d304f181355
|
||||
size 54784
|
||||
oid sha256:27ccfb35105589c692e03fa6e84a2bf3f1cc2c817cb61011272c848bcedcf144
|
||||
size 54606
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7cdb48f992e7f409fe8eaf6ef82c43e3ac7a69ce347916137f67c2fd282135ab
|
||||
size 62037
|
||||
oid sha256:d33e50e7bff509e933a1b90c69906bd2a2d9b490dcd001e66134b7e6a9226f73
|
||||
size 61911
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9c465edd73c507e2fdda709abdc4b1addac3286fcce42a665feffe09fcb89c54
|
||||
size 43190
|
||||
oid sha256:6e2001cf66bd7906715f3b75c40f82e7a982a4dbe5a597f001bb36931b485f56
|
||||
size 43080
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c73d86e619e53b95d27840a9df7553d16a5b4bad31aa06a74e7ca95ff2631ae2
|
||||
size 42347
|
||||
oid sha256:c1a3f0aed0571fddc5d64bd7481368570663a574e69371a973801594c8b3881d
|
||||
size 42233
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:279977634ba0ac20bbfca3884d738c0cfe2e01c2bb180e42ce96c2bdd00d71c6
|
||||
size 55266
|
||||
oid sha256:c940c77785392976a3508f0a926f3e33ead3b84c360ad52a93bce787f26d5528
|
||||
size 55051
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2d6173270257b716aa487b01a99f77a17a01cc9d51ca9c25e78feb406a1dc191
|
||||
size 54190
|
||||
oid sha256:263f5a77469e574ffab73db2e5507c428da92a53980e1aacdfefbd499e8e0f4d
|
||||
size 53983
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:eff9db3d4abc31cfcb050450292c8d5c260eda035f3cd0c30e80f1007a9f769c
|
||||
size 56698
|
||||
oid sha256:d8471b4298b5e08af217e625e95ce5811888f82d2f565b9e679ef14e5b0ae4e7
|
||||
size 56492
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cc649e3eb70cb6c8318f75a47c06a6b526774320b228d7a3e40a2c3b827a1766
|
||||
size 47957
|
||||
oid sha256:ad8864df2310acbd286b5299db6b123a5fc26876b22f5b99bb27a1b2ef75f945
|
||||
size 47785
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:66fb1632e2eefb8e010de7dedc452db2ccab1ac4924f0e8e43695beed862332f
|
||||
size 55230
|
||||
oid sha256:7b1f6f34a04f6a0ea1673a981b95b8d9552bbb0f5f95fe6e6f48ff3c79ed5a8d
|
||||
size 55014
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ff897de0ad428d048b4a6eeb5135e4bca258d897cfa1f1f62942325bf08b27ac
|
||||
size 57482
|
||||
oid sha256:8689e497ff2befc2692b53ef9a1fe9705db17c894152eb3f631b567fe36d2067
|
||||
size 57319
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:301ed54f0d68dcc6a3c6680ed5dace55ed8a5508bf7d82f6f27cc24e553baac8
|
||||
size 53151
|
||||
oid sha256:c7c9c081424187e535522de66d80d9d7fbf7716ab73b43b17ee805aa791e7f39
|
||||
size 52995
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:79cf6010916652f7a48892b8c1c835379ce5bc9f39b628b85bbbb8cf4332667f
|
||||
size 52874
|
||||
oid sha256:43b4017b5b73f377baacb5c5f97ffa1909df36dc95368b15d51b103d006e740b
|
||||
size 52655
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:51d9ea3a797456c1899081533c98c2fffa308bfe8b5059d3ae87f523a1928d01
|
||||
size 52766
|
||||
oid sha256:ce93b1482eadaf8555aae3f65e30dc8b21ec210dbab33dffeb0ad7108bed1c8e
|
||||
size 52598
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6e1df1c2ee07a6f8c30cab0198c8961513f1a7abe42105a5c42f7ad3fbd0461a
|
||||
size 56716
|
||||
oid sha256:1e272aed6081f1687219144b23e2f8a12709179a4251022c8bc307970a173d5d
|
||||
size 56557
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:11f70ed950d7ef61faf2ea694648fd071229128a7ce188110b09b28418ebe197
|
||||
size 39943
|
||||
oid sha256:d3102b568a3c54e71c7b2fe8a36dcbf49330edc15bb797bd98ff6f7fedb1b762
|
||||
size 39825
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5d2789d9e9469fa17ff098121c3eec64c73c4bf229920b438149ed86aa7faef1
|
||||
size 39155
|
||||
oid sha256:976ebdcbc2c883c9385747a098355845c65b44e1625e6713de09307917040da6
|
||||
size 39039
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue