Skip to content

Commit 589dbbd

Browse files
committed
Update the API dump and improve binary compatibility
1 parent 6633e03 commit 589dbbd

File tree

12 files changed

+201
-35
lines changed

12 files changed

+201
-35
lines changed

build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ kover {
5050
reports {
5151
verify {
5252
rule {
53-
// requirement for a minimum lines coverage of 85%
54-
minBound(85)
53+
// requirement for a minimum lines coverage of 80%
54+
minBound(80)
5555
}
5656
}
5757
}

core/api/kotlinx-datetime.api

Lines changed: 64 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,24 @@ public final class kotlinx/datetime/ClockKt {
1919
}
2020

2121
public final class kotlinx/datetime/ConvertersKt {
22+
public static final fun toJavaDayOfWeek (Lkotlinx/datetime/DayOfWeek;)Ljava/time/DayOfWeek;
2223
public static final fun toJavaInstant (Lkotlinx/datetime/Instant;)Ljava/time/Instant;
2324
public static final fun toJavaLocalDate (Lkotlinx/datetime/LocalDate;)Ljava/time/LocalDate;
2425
public static final fun toJavaLocalDateTime (Lkotlinx/datetime/LocalDateTime;)Ljava/time/LocalDateTime;
2526
public static final fun toJavaLocalTime (Lkotlinx/datetime/LocalTime;)Ljava/time/LocalTime;
27+
public static final fun toJavaMonth (Lkotlinx/datetime/Month;)Ljava/time/Month;
2628
public static final fun toJavaPeriod (Lkotlinx/datetime/DatePeriod;)Ljava/time/Period;
2729
public static final fun toJavaZoneId (Lkotlinx/datetime/TimeZone;)Ljava/time/ZoneId;
2830
public static final fun toJavaZoneOffset (Lkotlinx/datetime/FixedOffsetTimeZone;)Ljava/time/ZoneOffset;
2931
public static final fun toJavaZoneOffset (Lkotlinx/datetime/UtcOffset;)Ljava/time/ZoneOffset;
3032
public static final fun toKotlinDatePeriod (Ljava/time/Period;)Lkotlinx/datetime/DatePeriod;
33+
public static final fun toKotlinDayOfWeek (Ljava/time/DayOfWeek;)Lkotlinx/datetime/DayOfWeek;
3134
public static final fun toKotlinFixedOffsetTimeZone (Ljava/time/ZoneOffset;)Lkotlinx/datetime/FixedOffsetTimeZone;
3235
public static final fun toKotlinInstant (Ljava/time/Instant;)Lkotlinx/datetime/Instant;
3336
public static final fun toKotlinLocalDate (Ljava/time/LocalDate;)Lkotlinx/datetime/LocalDate;
3437
public static final fun toKotlinLocalDateTime (Ljava/time/LocalDateTime;)Lkotlinx/datetime/LocalDateTime;
3538
public static final fun toKotlinLocalTime (Ljava/time/LocalTime;)Lkotlinx/datetime/LocalTime;
39+
public static final fun toKotlinMonth (Ljava/time/Month;)Lkotlinx/datetime/Month;
3640
public static final fun toKotlinTimeZone (Ljava/time/ZoneId;)Lkotlinx/datetime/TimeZone;
3741
public static final fun toKotlinUtcOffset (Ljava/time/ZoneOffset;)Lkotlinx/datetime/UtcOffset;
3842
public static final fun toKotlinZoneOffset (Ljava/time/ZoneOffset;)Lkotlinx/datetime/FixedOffsetTimeZone;
@@ -167,9 +171,24 @@ public final class kotlinx/datetime/DateTimeUnit$TimeBased$Companion {
167171
public final fun serializer ()Lkotlinx/serialization/KSerializer;
168172
}
169173

174+
public final class kotlinx/datetime/DayOfWeek : java/lang/Enum {
175+
public static final field FRIDAY Lkotlinx/datetime/DayOfWeek;
176+
public static final field MONDAY Lkotlinx/datetime/DayOfWeek;
177+
public static final field SATURDAY Lkotlinx/datetime/DayOfWeek;
178+
public static final field SUNDAY Lkotlinx/datetime/DayOfWeek;
179+
public static final field THURSDAY Lkotlinx/datetime/DayOfWeek;
180+
public static final field TUESDAY Lkotlinx/datetime/DayOfWeek;
181+
public static final field WEDNESDAY Lkotlinx/datetime/DayOfWeek;
182+
public static fun getEntries ()Lkotlin/enums/EnumEntries;
183+
public static fun valueOf (Ljava/lang/String;)Lkotlinx/datetime/DayOfWeek;
184+
public static fun values ()[Lkotlinx/datetime/DayOfWeek;
185+
}
186+
170187
public final class kotlinx/datetime/DayOfWeekKt {
171-
public static final fun DayOfWeek (I)Ljava/time/DayOfWeek;
188+
public static final synthetic fun DayOfWeek (I)Ljava/time/DayOfWeek;
189+
public static final fun DayOfWeek (I)Lkotlinx/datetime/DayOfWeek;
172190
public static final fun getIsoDayNumber (Ljava/time/DayOfWeek;)I
191+
public static final fun getIsoDayNumber (Lkotlinx/datetime/DayOfWeek;)I
173192
}
174193

175194
public final class kotlinx/datetime/FixedOffsetTimeZone : kotlinx/datetime/TimeZone {
@@ -257,14 +276,17 @@ public final class kotlinx/datetime/LocalDate : java/lang/Comparable {
257276
public static final field Companion Lkotlinx/datetime/LocalDate$Companion;
258277
public fun <init> (III)V
259278
public fun <init> (ILjava/time/Month;I)V
279+
public fun <init> (ILkotlinx/datetime/Month;I)V
260280
public synthetic fun compareTo (Ljava/lang/Object;)I
261281
public fun compareTo (Lkotlinx/datetime/LocalDate;)I
262282
public fun equals (Ljava/lang/Object;)Z
263283
public final fun getDay ()I
264284
public final fun getDayOfMonth ()I
265285
public final fun getDayOfWeek ()Ljava/time/DayOfWeek;
286+
public final fun getDayOfWeek ()Lkotlinx/datetime/DayOfWeek;
266287
public final fun getDayOfYear ()I
267288
public final fun getMonth ()Ljava/time/Month;
289+
public final fun getMonth ()Lkotlinx/datetime/Month;
268290
public final fun getMonthNumber ()I
269291
public final fun getYear ()I
270292
public fun hashCode ()I
@@ -290,6 +312,7 @@ public final class kotlinx/datetime/LocalDate$Formats {
290312
}
291313

292314
public final class kotlinx/datetime/LocalDateJvmKt {
315+
public static final fun LocalDate (ILjava/time/Month;I)Lkotlinx/datetime/LocalDate;
293316
public static final fun daysUntil (Lkotlinx/datetime/LocalDate;Lkotlinx/datetime/LocalDate;)I
294317
public static final fun minus (Lkotlinx/datetime/LocalDate;ILkotlinx/datetime/DateTimeUnit$DateBased;)Lkotlinx/datetime/LocalDate;
295318
public static final fun monthsUntil (Lkotlinx/datetime/LocalDate;Lkotlinx/datetime/LocalDate;)I
@@ -305,7 +328,7 @@ public final class kotlinx/datetime/LocalDateJvmKt {
305328

306329
public final class kotlinx/datetime/LocalDateKt {
307330
public static final fun LocalDate (III)Lkotlinx/datetime/LocalDate;
308-
public static final fun LocalDate (ILjava/time/Month;I)Lkotlinx/datetime/LocalDate;
331+
public static final fun LocalDate (ILkotlinx/datetime/Month;I)Lkotlinx/datetime/LocalDate;
309332
public static final fun atTime (Lkotlinx/datetime/LocalDate;IIII)Lkotlinx/datetime/LocalDateTime;
310333
public static final fun atTime (Lkotlinx/datetime/LocalDate;Lkotlinx/datetime/LocalTime;)Lkotlinx/datetime/LocalDateTime;
311334
public static synthetic fun atTime$default (Lkotlinx/datetime/LocalDate;IIIIILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
@@ -325,6 +348,8 @@ public final class kotlinx/datetime/LocalDateTime : java/lang/Comparable {
325348
public synthetic fun <init> (IIIIIIIILkotlin/jvm/internal/DefaultConstructorMarker;)V
326349
public fun <init> (ILjava/time/Month;IIIII)V
327350
public synthetic fun <init> (ILjava/time/Month;IIIIIILkotlin/jvm/internal/DefaultConstructorMarker;)V
351+
public fun <init> (ILkotlinx/datetime/Month;IIIII)V
352+
public synthetic fun <init> (ILkotlinx/datetime/Month;IIIIIILkotlin/jvm/internal/DefaultConstructorMarker;)V
328353
public fun <init> (Lkotlinx/datetime/LocalDate;Lkotlinx/datetime/LocalTime;)V
329354
public synthetic fun compareTo (Ljava/lang/Object;)I
330355
public fun compareTo (Lkotlinx/datetime/LocalDateTime;)I
@@ -333,10 +358,12 @@ public final class kotlinx/datetime/LocalDateTime : java/lang/Comparable {
333358
public final fun getDay ()I
334359
public final fun getDayOfMonth ()I
335360
public final fun getDayOfWeek ()Ljava/time/DayOfWeek;
361+
public final fun getDayOfWeek ()Lkotlinx/datetime/DayOfWeek;
336362
public final fun getDayOfYear ()I
337363
public final fun getHour ()I
338364
public final fun getMinute ()I
339365
public final fun getMonth ()Ljava/time/Month;
366+
public final fun getMonth ()Lkotlinx/datetime/Month;
340367
public final fun getMonthNumber ()I
341368
public final fun getNanosecond ()I
342369
public final fun getSecond ()I
@@ -362,8 +389,10 @@ public final class kotlinx/datetime/LocalDateTime$Formats {
362389
public final class kotlinx/datetime/LocalDateTimeKt {
363390
public static final fun LocalDateTime (IIIIIII)Lkotlinx/datetime/LocalDateTime;
364391
public static final fun LocalDateTime (ILjava/time/Month;IIIII)Lkotlinx/datetime/LocalDateTime;
392+
public static final fun LocalDateTime (ILkotlinx/datetime/Month;IIIII)Lkotlinx/datetime/LocalDateTime;
365393
public static synthetic fun LocalDateTime$default (IIIIIIIILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
366394
public static synthetic fun LocalDateTime$default (ILjava/time/Month;IIIIIILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
395+
public static synthetic fun LocalDateTime$default (ILkotlinx/datetime/Month;IIIIIILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
367396
public static final fun format (Lkotlinx/datetime/LocalDateTime;Lkotlinx/datetime/format/DateTimeFormat;)Ljava/lang/String;
368397
public static final fun toLocalDateTime (Ljava/lang/String;)Lkotlinx/datetime/LocalDateTime;
369398
}
@@ -407,18 +436,42 @@ public final class kotlinx/datetime/LocalTimeKt {
407436
public static final fun atDate (Lkotlinx/datetime/LocalTime;IIILkotlin/Unit;)Lkotlinx/datetime/LocalDateTime;
408437
public static final fun atDate (Lkotlinx/datetime/LocalTime;ILjava/time/Month;I)Lkotlinx/datetime/LocalDateTime;
409438
public static final fun atDate (Lkotlinx/datetime/LocalTime;ILjava/time/Month;ILkotlin/Unit;)Lkotlinx/datetime/LocalDateTime;
439+
public static final fun atDate (Lkotlinx/datetime/LocalTime;ILkotlinx/datetime/Month;I)Lkotlinx/datetime/LocalDateTime;
440+
public static final fun atDate (Lkotlinx/datetime/LocalTime;ILkotlinx/datetime/Month;ILkotlin/Unit;)Lkotlinx/datetime/LocalDateTime;
410441
public static final fun atDate (Lkotlinx/datetime/LocalTime;Lkotlinx/datetime/LocalDate;)Lkotlinx/datetime/LocalDateTime;
411442
public static synthetic fun atDate$default (Lkotlinx/datetime/LocalTime;IIIILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
412443
public static synthetic fun atDate$default (Lkotlinx/datetime/LocalTime;IIILkotlin/Unit;ILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
413444
public static synthetic fun atDate$default (Lkotlinx/datetime/LocalTime;ILjava/time/Month;IILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
414445
public static synthetic fun atDate$default (Lkotlinx/datetime/LocalTime;ILjava/time/Month;ILkotlin/Unit;ILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
446+
public static synthetic fun atDate$default (Lkotlinx/datetime/LocalTime;ILkotlinx/datetime/Month;IILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
447+
public static synthetic fun atDate$default (Lkotlinx/datetime/LocalTime;ILkotlinx/datetime/Month;ILkotlin/Unit;ILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
415448
public static final fun format (Lkotlinx/datetime/LocalTime;Lkotlinx/datetime/format/DateTimeFormat;)Ljava/lang/String;
416449
public static final fun toLocalTime (Ljava/lang/String;)Lkotlinx/datetime/LocalTime;
417450
}
418451

452+
public final class kotlinx/datetime/Month : java/lang/Enum {
453+
public static final field APRIL Lkotlinx/datetime/Month;
454+
public static final field AUGUST Lkotlinx/datetime/Month;
455+
public static final field DECEMBER Lkotlinx/datetime/Month;
456+
public static final field FEBRUARY Lkotlinx/datetime/Month;
457+
public static final field JANUARY Lkotlinx/datetime/Month;
458+
public static final field JULY Lkotlinx/datetime/Month;
459+
public static final field JUNE Lkotlinx/datetime/Month;
460+
public static final field MARCH Lkotlinx/datetime/Month;
461+
public static final field MAY Lkotlinx/datetime/Month;
462+
public static final field NOVEMBER Lkotlinx/datetime/Month;
463+
public static final field OCTOBER Lkotlinx/datetime/Month;
464+
public static final field SEPTEMBER Lkotlinx/datetime/Month;
465+
public static fun getEntries ()Lkotlin/enums/EnumEntries;
466+
public static fun valueOf (Ljava/lang/String;)Lkotlinx/datetime/Month;
467+
public static fun values ()[Lkotlinx/datetime/Month;
468+
}
469+
419470
public final class kotlinx/datetime/MonthKt {
420-
public static final fun Month (I)Ljava/time/Month;
471+
public static final synthetic fun Month (I)Ljava/time/Month;
472+
public static final fun Month (I)Lkotlinx/datetime/Month;
421473
public static final fun getNumber (Ljava/time/Month;)I
474+
public static final fun getNumber (Lkotlinx/datetime/Month;)I
422475
}
423476

424477
public class kotlinx/datetime/TimeZone {
@@ -498,12 +551,12 @@ public final class kotlinx/datetime/format/DateTimeComponents {
498551
public final fun getAmPm ()Lkotlinx/datetime/format/AmPmMarker;
499552
public final fun getDay ()Ljava/lang/Integer;
500553
public final fun getDayOfMonth ()Ljava/lang/Integer;
501-
public final fun getDayOfWeek ()Ljava/time/DayOfWeek;
554+
public final fun getDayOfWeek ()Lkotlinx/datetime/DayOfWeek;
502555
public final fun getDayOfYear ()Ljava/lang/Integer;
503556
public final fun getHour ()Ljava/lang/Integer;
504557
public final fun getHourOfAmPm ()Ljava/lang/Integer;
505558
public final fun getMinute ()Ljava/lang/Integer;
506-
public final fun getMonth ()Ljava/time/Month;
559+
public final fun getMonth ()Lkotlinx/datetime/Month;
507560
public final fun getMonthNumber ()Ljava/lang/Integer;
508561
public final fun getNanosecond ()Ljava/lang/Integer;
509562
public final fun getOffsetHours ()Ljava/lang/Integer;
@@ -520,12 +573,12 @@ public final class kotlinx/datetime/format/DateTimeComponents {
520573
public final fun setDateTimeOffset (Lkotlinx/datetime/LocalDateTime;Lkotlinx/datetime/UtcOffset;)V
521574
public final fun setDay (Ljava/lang/Integer;)V
522575
public final fun setDayOfMonth (Ljava/lang/Integer;)V
523-
public final fun setDayOfWeek (Ljava/time/DayOfWeek;)V
576+
public final fun setDayOfWeek (Lkotlinx/datetime/DayOfWeek;)V
524577
public final fun setDayOfYear (Ljava/lang/Integer;)V
525578
public final fun setHour (Ljava/lang/Integer;)V
526579
public final fun setHourOfAmPm (Ljava/lang/Integer;)V
527580
public final fun setMinute (Ljava/lang/Integer;)V
528-
public final fun setMonth (Ljava/time/Month;)V
581+
public final fun setMonth (Lkotlinx/datetime/Month;)V
529582
public final fun setMonthNumber (Ljava/lang/Integer;)V
530583
public final fun setNanosecond (Ljava/lang/Integer;)V
531584
public final fun setOffset (Lkotlinx/datetime/UtcOffset;)V
@@ -767,10 +820,10 @@ public final class kotlinx/datetime/serializers/DayBasedDateTimeUnitSerializer :
767820
public final class kotlinx/datetime/serializers/DayOfWeekSerializer : kotlinx/serialization/KSerializer {
768821
public static final field INSTANCE Lkotlinx/datetime/serializers/DayOfWeekSerializer;
769822
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
770-
public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/time/DayOfWeek;
823+
public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lkotlinx/datetime/DayOfWeek;
771824
public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
772825
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
773-
public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/time/DayOfWeek;)V
826+
public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lkotlinx/datetime/DayOfWeek;)V
774827
}
775828

776829
public final class kotlinx/datetime/serializers/FixedOffsetTimeZoneSerializer : kotlinx/serialization/KSerializer {
@@ -866,10 +919,10 @@ public final class kotlinx/datetime/serializers/MonthBasedDateTimeUnitSerializer
866919
public final class kotlinx/datetime/serializers/MonthSerializer : kotlinx/serialization/KSerializer {
867920
public static final field INSTANCE Lkotlinx/datetime/serializers/MonthSerializer;
868921
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
869-
public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/time/Month;
922+
public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lkotlinx/datetime/Month;
870923
public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
871924
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
872-
public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/time/Month;)V
925+
public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lkotlinx/datetime/Month;)V
873926
}
874927

875928
public final class kotlinx/datetime/serializers/TimeBasedDateTimeUnitSerializer : kotlinx/serialization/KSerializer {

core/common/src/DayOfWeek.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,13 @@
33
* Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file.
44
*/
55

6+
@file:JvmName("DayOfWeekKt")
7+
@file:JvmMultifileClass
68
package kotlinx.datetime
79

10+
import kotlin.jvm.JvmMultifileClass
11+
import kotlin.jvm.JvmName
12+
813
/**
914
* The enumeration class representing the days of the week.
1015
*

core/common/src/LocalDateTime.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@
33
* Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file.
44
*/
55

6+
@file:JvmName("LocalDateTimeKt")
7+
@file:JvmMultifileClass
68
package kotlinx.datetime
79

810
import kotlinx.datetime.format.*
911
import kotlinx.datetime.serializers.LocalDateTimeIso8601Serializer
1012
import kotlinx.datetime.serializers.LocalDateTimeComponentSerializer
1113
import kotlinx.serialization.Serializable
1214
import kotlin.internal.*
15+
import kotlin.jvm.JvmMultifileClass
16+
import kotlin.jvm.JvmName
1317

1418
/**
1519
* The representation of a specific civil date and time without a reference to a particular time zone.

core/common/src/LocalTime.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@
22
* Copyright 2019-2022 JetBrains s.r.o. and contributors.
33
* Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file.
44
*/
5+
@file:JvmName("LocalTimeKt")
6+
@file:JvmMultifileClass
57

68
package kotlinx.datetime
79

8-
import kotlinx.datetime.LocalDate.Companion.parse
910
import kotlinx.datetime.format.*
1011
import kotlinx.datetime.serializers.LocalTimeIso8601Serializer
1112
import kotlinx.datetime.serializers.LocalTimeComponentSerializer
1213
import kotlinx.serialization.Serializable
1314
import kotlin.internal.*
15+
import kotlin.jvm.JvmMultifileClass
16+
import kotlin.jvm.JvmName
1417

1518

1619
/**

core/common/src/Month.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,14 @@
33
* Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file.
44
*/
55

6+
@file:JvmName("MonthKt")
7+
@file:JvmMultifileClass
8+
69
package kotlinx.datetime
710

11+
import kotlin.jvm.JvmMultifileClass
12+
import kotlin.jvm.JvmName
13+
814
/**
915
* The enumeration class representing the 12 months of the year.
1016
*
@@ -69,6 +75,3 @@ public fun Month(number: Int): Month {
6975
require(number in 1..12)
7076
return Month.entries[number - 1]
7177
}
72-
73-
74-
// companion object members vs type aliasing to java.time.Month?

core/jvm/src/DayOfWeekJvm.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Copyright 2019-2025 JetBrains s.r.o. and contributors.
3+
* Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file.
4+
*/
5+
6+
@file:JvmName("DayOfWeekKt")
7+
@file:JvmMultifileClass
8+
package kotlinx.datetime
9+
10+
@Deprecated("Use kotlinx.datetime.DayOfWeek", ReplaceWith("toKotlinDayOfWeek().isoDayNumber"))
11+
public val java.time.DayOfWeek.isoDayNumber: Int get() = toKotlinDayOfWeek().isoDayNumber
12+
13+
@Deprecated(
14+
message = "This overload is only kept for binary compatibility",
15+
level = DeprecationLevel.HIDDEN,
16+
)
17+
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
18+
@kotlin.internal.LowPriorityInOverloadResolution
19+
public fun DayOfWeek(isoDayNumber: Int): java.time.DayOfWeek =
20+
DayOfWeek(isoDayNumber).toJavaDayOfWeek()

0 commit comments

Comments
 (0)