diff --git a/modules/tournament/src/main/Schedule.scala b/modules/tournament/src/main/Schedule.scala index 80993c302ba43..624f0addc24a9 100644 --- a/modules/tournament/src/main/Schedule.scala +++ b/modules/tournament/src/main/Schedule.scala @@ -288,7 +288,6 @@ object Schedule: private val standardIncHours = Set(1, 7, 13, 19) private def standardInc(s: Schedule) = standardIncHours(s.at.getHour) - private def zhInc(s: Schedule) = s.at.getHour % 2 == 0 private def bottomOfHour(s: Schedule) = s.at.getMinute > 29 private given Conversion[Int, LimitSeconds] = LimitSeconds(_) @@ -312,10 +311,11 @@ object Schedule: (s.freq, s.variant, s.speed) match // Special cases. case (Weekend, Crazyhouse, Blitz) => zhEliteTc(s) - case (Hourly, Crazyhouse, SuperBlitz) if zhInc(s) => TC(3 * 60, 1) - case (Hourly, Crazyhouse, Blitz) if zhInc(s) => TC(4 * 60, 2) case (Hourly, Standard, Blitz) if standardInc(s) => TC(3 * 60, 2) case (Hourly, Standard, Bullet) if s.hasMaxRating && bottomOfHour(s) => TC(60, 1) + case (Hourly, Antichess | Atomic, Bullet) if bottomOfHour(s) => TC(0, 2) + case (Hourly, variant, HippoBullet) if variant.exotic => TC(2 * 60, 1) + case (Hourly, variant, Blitz) if variant.exotic => TC(4 * 60, 2) case (Shield, variant, Blitz) if variant.exotic => TC(3 * 60, 2) diff --git a/modules/tournament/src/main/TournamentScheduler.scala b/modules/tournament/src/main/TournamentScheduler.scala index e170683ec9ee4..2f75b59e96257 100644 --- a/modules/tournament/src/main/TournamentScheduler.scala +++ b/modules/tournament/src/main/TournamentScheduler.scala @@ -393,62 +393,85 @@ Thank you all, you rock!""".some, // Because berserking lowers the player rating _.map { _.copy(noBerserk = true) } }, - // hourly crazyhouse/chess960/KingOfTheHill tournaments! - (0 to 6).toList.flatMap { hourDelta => - val when = atTopOfHour(rightNow, hourDelta) - val speed = when.getHour % 7 match - case 0 => HippoBullet - case 1 | 4 => Bullet - case 2 | 5 => SuperBlitz - case 3 | 6 => Blitz - val variant = when.getHour % 3 match - case 0 => Chess960 - case 1 => KingOfTheHill - case _ => Crazyhouse - List(Schedule(Hourly, speed, variant, none, when).plan) ::: - (speed == Bullet).so: - List( - Schedule( - Hourly, - if when.getHour == 17 then HyperBullet else Bullet, - variant, - none, - when.plusMinutes(30) - ).plan - ) + // fast popular variant tournaments -- 2/3 of the time + List(Atomic, Antichess).flatMap { variant => + (-1 to 6).toList.flatMap { hourDelta => + val when = atTopOfHour(rightNow, hourDelta) + // Offsets should be balanced mod 3 between all 6 variants at 2/3 hours + val variantCycle = when.getHour + (variant match + case Atomic => 0 + case Antichess => 2 + ) + (variantCycle % 3 != 0).so: + // assignments for TCs when variantCycle % 3 == 0 don't currently + // matter, as those hours are excluded from the schedule. + // Meaning values of 0, 3, 6, 9 do not occur, and there are + // just 8 relevant hours in the repeating cycle. + val speed = variantCycle % 12 match + // 8 should be assigned to bullet, so that the hyperbullet check succeeds + case 2 | 5 | 8 | 11 => Bullet + case 1 => HippoBullet + case 4 | 7 => Blitz + case _ => SuperBlitz + List(Schedule(Hourly, speed, variant, none, when).plan) ::: + (speed == Bullet).so: + List( + Schedule( + Hourly, + if variantCycle % 12 == 8 then HyperBullet else Bullet, + variant, + none, + when.plusMinutes(30) + ).plan + ) + } }, - // hourly atomic/antichess variant tournaments! - (0 to 6).toList.flatMap { hourDelta => - val when = atTopOfHour(rightNow, hourDelta) - val speed = when.getHour % 7 match - case 0 | 4 => Blitz - case 1 => HippoBullet - case 2 | 5 => Bullet - case 3 | 6 => SuperBlitz - val variant = if when.getHour % 2 == 0 then Atomic else Antichess - List(Schedule(Hourly, speed, variant, none, when).plan) ::: - (speed == Bullet).so: - List( - Schedule( - Hourly, - if when.getHour == 18 then HyperBullet else Bullet, - variant, - none, - when.plusMinutes(30) - ).plan - ) + // slower popular variant tournaments -- 2/3 of the time + List(Crazyhouse, Chess960, KingOfTheHill, ThreeCheck).flatMap { variant => + (-1 to 6).toList.flatMap { hourDelta => + val when = atTopOfHour(rightNow, hourDelta) + // Offsets should be balanced mod 3 between all 6 variants at 2/3 hours + val variantCycle = when.getHour + (variant match + case Crazyhouse => 1 + case Chess960 => 0 + case KingOfTheHill => 1 + case ThreeCheck => 2 + ) + (variantCycle % 3 != 0).so: + // assignments for TCs when variantCycle % 3 == 0 don't currently + // matter, as those hours are excluded from the schedule. + // Meaning values of 0, 3, 6, 9 do not occur, and there are + // just 8 relevant hours in the repeating cycle. + val speed = variantCycle % 12 match + case 2 | 5 | 8 | 11 => Blitz + case 1 => SuperBlitz + case 4 | 7 => HippoBullet + case _ => Bullet + List(Schedule(Hourly, speed, variant, none, when).plan) ::: + (speed == Bullet).so: + List( + Schedule( + Hourly, + Bullet, + variant, + none, + when.plusMinutes(30) + ).plan + ) + } }, - // hourly threecheck/horde/racing variant tournaments! - (0 to 6).toList.flatMap { hourDelta => + // hourly exotic variant tournaments! + (-1 to 6).toList.flatMap { hourDelta => val when = atTopOfHour(rightNow, hourDelta) - val speed = when.getHour % 7 match - case 0 | 4 => SuperBlitz - case 1 | 5 => Blitz - case 2 => HippoBullet - case 3 | 6 => Bullet - val variant = when.getHour % 3 match - case 0 => ThreeCheck - case 1 => Horde + // Avoid grouping TCs by mod 2, so that the distribution doesn't + // get skewed as we alternate between 2 variants. + val speed = when.getHour % 6 match + case 0 => SuperBlitz + case 1 | 4 => Blitz + case 3 => HippoBullet + case 2 | _ => Bullet + val variant = when.getHour % 2 match + case 0 => Horde case _ => RacingKings List(Schedule(Hourly, speed, variant, none, when).plan) ::: (speed == Bullet).so: diff --git a/modules/tournament/src/test/SchedulerTest.scala b/modules/tournament/src/test/SchedulerTest.scala index c227c6389ca6e..0d36ffc0e8ac8 100644 --- a/modules/tournament/src/test/SchedulerTest.scala +++ b/modules/tournament/src/test/SchedulerTest.scala @@ -365,101 +365,155 @@ class SchedulerTest extends munit.FunSuite: """2024-09-05T21:00:00Z Hourly standard rapid(10+0) Conditions(NbRatedGame(20),MaxRating(1700)) None (09-05T17:00 EDT, 09-05T23:00 CEST) 57m""", """2024-09-05T22:00:00Z Hourly standard rapid(10+0) Conditions(NbRatedGame(20),MaxRating(2000)) None (09-05T18:00 EDT, 09-06T00:00 CEST) 57m""", """2024-09-05T23:00:00Z Hourly standard rapid(10+0) Conditions(NbRatedGame(20),MaxRating(1300)) None (09-05T19:00 EDT, 09-06T01:00 CEST) 57m""", - """2024-09-05T00:00:00Z Hourly chess960 hippoBullet(2+0) Conditions() None (09-04T20:00 EDT, 09-05T02:00 CEST) 57m""", - """2024-09-05T03:00:00Z Hourly chess960 blitz(5+0) Conditions() None (09-04T23:00 EDT, 09-05T05:00 CEST) 57m""", - """2024-09-05T06:00:00Z Hourly chess960 blitz(5+0) Conditions() None (09-05T02:00 EDT, 09-05T08:00 CEST) 57m""", - """2024-09-05T09:00:00Z Hourly chess960 superBlitz(3+0) Conditions() None (09-05T05:00 EDT, 09-05T11:00 CEST) 57m""", - """2024-09-05T12:00:00Z Hourly chess960 superBlitz(3+0) Conditions() None (09-05T08:00 EDT, 09-05T14:00 CEST) 57m""", - """2024-09-05T15:00:00Z Hourly chess960 bullet(1+0) Conditions() None (09-05T11:00 EDT, 09-05T17:00 CEST) 27m""", - """2024-09-05T15:30:00Z Hourly chess960 bullet(1+0) Conditions() None (09-05T11:30 EDT, 09-05T17:30 CEST) 27m""", - """2024-09-05T18:00:00Z Hourly chess960 bullet(1+0) Conditions() None (09-05T14:00 EDT, 09-05T20:00 CEST) 27m""", - """2024-09-05T18:30:00Z Hourly chess960 bullet(1+0) Conditions() None (09-05T14:30 EDT, 09-05T20:30 CEST) 27m""", + """2024-09-05T01:00:00Z Hourly chess960 superBlitz(3+0) Conditions() None (09-04T21:00 EDT, 09-05T03:00 CEST) 57m""", + """2024-09-05T02:00:00Z Hourly chess960 blitz(4+2) Conditions() None (09-04T22:00 EDT, 09-05T04:00 CEST) 57m""", + """2024-09-05T04:00:00Z Hourly chess960 hippoBullet(2+1) Conditions() None (09-05T00:00 EDT, 09-05T06:00 CEST) 57m""", + """2024-09-05T05:00:00Z Hourly chess960 blitz(4+2) Conditions() None (09-05T01:00 EDT, 09-05T07:00 CEST) 57m""", + """2024-09-05T07:00:00Z Hourly chess960 hippoBullet(2+1) Conditions() None (09-05T03:00 EDT, 09-05T09:00 CEST) 57m""", + """2024-09-05T08:00:00Z Hourly chess960 blitz(4+2) Conditions() None (09-05T04:00 EDT, 09-05T10:00 CEST) 57m""", + """2024-09-05T10:00:00Z Hourly chess960 bullet(1+0) Conditions() None (09-05T06:00 EDT, 09-05T12:00 CEST) 27m""", + """2024-09-05T10:30:00Z Hourly chess960 bullet(1+0) Conditions() None (09-05T06:30 EDT, 09-05T12:30 CEST) 27m""", + """2024-09-05T11:00:00Z Hourly chess960 blitz(4+2) Conditions() None (09-05T07:00 EDT, 09-05T13:00 CEST) 57m""", + """2024-09-05T13:00:00Z Hourly chess960 superBlitz(3+0) Conditions() None (09-05T09:00 EDT, 09-05T15:00 CEST) 57m""", + """2024-09-05T14:00:00Z Hourly chess960 blitz(4+2) Conditions() None (09-05T10:00 EDT, 09-05T16:00 CEST) 57m""", + """2024-09-05T16:00:00Z Hourly chess960 hippoBullet(2+1) Conditions() None (09-05T12:00 EDT, 09-05T18:00 CEST) 57m""", + """2024-09-05T17:00:00Z Hourly chess960 blitz(4+2) Conditions() None (09-05T13:00 EDT, 09-05T19:00 CEST) 57m""", + """2024-09-05T19:00:00Z Hourly chess960 hippoBullet(2+1) Conditions() None (09-05T15:00 EDT, 09-05T21:00 CEST) 57m""", + """2024-09-05T20:00:00Z Hourly chess960 blitz(4+2) Conditions() None (09-05T16:00 EDT, 09-05T22:00 CEST) 57m""", """2024-09-05T21:00:00Z Daily chess960 blitz(5+0) Conditions() None (09-05T17:00 EDT, 09-05T23:00 CEST) 90m""", - """2024-09-05T01:00:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None (09-04T21:00 EDT, 09-05T03:00 CEST) 27m""", - """2024-09-05T01:30:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None (09-04T21:30 EDT, 09-05T03:30 CEST) 27m""", - """2024-09-05T04:00:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None (09-05T00:00 EDT, 09-05T06:00 CEST) 27m""", - """2024-09-05T04:30:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None (09-05T00:30 EDT, 09-05T06:30 CEST) 27m""", - """2024-09-05T07:00:00Z Hourly kingOfTheHill hippoBullet(2+0) Conditions() None (09-05T03:00 EDT, 09-05T09:00 CEST) 57m""", - """2024-09-05T10:00:00Z Hourly kingOfTheHill blitz(5+0) Conditions() None (09-05T06:00 EDT, 09-05T12:00 CEST) 57m""", - """2024-09-05T13:00:00Z Hourly kingOfTheHill blitz(5+0) Conditions() None (09-05T09:00 EDT, 09-05T15:00 CEST) 57m""", - """2024-09-05T16:00:00Z Hourly kingOfTheHill superBlitz(3+0) Conditions() None (09-05T12:00 EDT, 09-05T18:00 CEST) 57m""", - """2024-09-05T19:00:00Z Hourly kingOfTheHill superBlitz(3+0) Conditions() None (09-05T15:00 EDT, 09-05T21:00 CEST) 57m""", + """2024-09-05T22:30:00Z Hourly chess960 bullet(1+0) Conditions() None (09-05T18:30 EDT, 09-06T00:30 CEST) 27m""", + """2024-09-05T23:00:00Z Hourly chess960 blitz(4+2) Conditions() None (09-05T19:00 EDT, 09-06T01:00 CEST) 57m""", + """2024-09-05T00:00:00Z Hourly kingOfTheHill superBlitz(3+0) Conditions() None (09-04T20:00 EDT, 09-05T02:00 CEST) 57m""", + """2024-09-05T01:00:00Z Hourly kingOfTheHill blitz(4+2) Conditions() None (09-04T21:00 EDT, 09-05T03:00 CEST) 57m""", + """2024-09-05T03:00:00Z Hourly kingOfTheHill hippoBullet(2+1) Conditions() None (09-04T23:00 EDT, 09-05T05:00 CEST) 57m""", + """2024-09-05T04:00:00Z Hourly kingOfTheHill blitz(4+2) Conditions() None (09-05T00:00 EDT, 09-05T06:00 CEST) 57m""", + """2024-09-05T06:00:00Z Hourly kingOfTheHill hippoBullet(2+1) Conditions() None (09-05T02:00 EDT, 09-05T08:00 CEST) 57m""", + """2024-09-05T07:00:00Z Hourly kingOfTheHill blitz(4+2) Conditions() None (09-05T03:00 EDT, 09-05T09:00 CEST) 57m""", + """2024-09-05T09:00:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None (09-05T05:00 EDT, 09-05T11:00 CEST) 27m""", + """2024-09-05T09:30:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None (09-05T05:30 EDT, 09-05T11:30 CEST) 27m""", + """2024-09-05T10:00:00Z Hourly kingOfTheHill blitz(4+2) Conditions() None (09-05T06:00 EDT, 09-05T12:00 CEST) 57m""", + """2024-09-05T12:00:00Z Hourly kingOfTheHill superBlitz(3+0) Conditions() None (09-05T08:00 EDT, 09-05T14:00 CEST) 57m""", + """2024-09-05T13:00:00Z Hourly kingOfTheHill blitz(4+2) Conditions() None (09-05T09:00 EDT, 09-05T15:00 CEST) 57m""", + """2024-09-05T15:00:00Z Hourly kingOfTheHill hippoBullet(2+1) Conditions() None (09-05T11:00 EDT, 09-05T17:00 CEST) 57m""", + """2024-09-05T16:00:00Z Hourly kingOfTheHill blitz(4+2) Conditions() None (09-05T12:00 EDT, 09-05T18:00 CEST) 57m""", + """2024-09-05T18:00:00Z Hourly kingOfTheHill hippoBullet(2+1) Conditions() None (09-05T14:00 EDT, 09-05T20:00 CEST) 57m""", + """2024-09-05T19:00:00Z Hourly kingOfTheHill blitz(4+2) Conditions() None (09-05T15:00 EDT, 09-05T21:00 CEST) 57m""", + """2024-09-05T21:00:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None (09-05T17:00 EDT, 09-05T23:00 CEST) 27m""", + """2024-09-05T21:30:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None (09-05T17:30 EDT, 09-05T23:30 CEST) 27m""", """2024-09-05T22:00:00Z Daily kingOfTheHill superBlitz(3+0) Conditions() None (09-05T18:00 EDT, 09-06T00:00 CEST) 60m""", - """2024-09-05T00:00:00Z Hourly threeCheck superBlitz(3+0) Conditions() None (09-04T20:00 EDT, 09-05T02:00 CEST) 57m""", + """2024-09-05T00:00:00Z Hourly threeCheck blitz(4+2) Conditions() None (09-04T20:00 EDT, 09-05T02:00 CEST) 57m""", """2024-09-05T01:00:00Z Daily threeCheck superBlitz(3+0) Conditions() None (09-04T21:00 EDT, 09-05T03:00 CEST) 60m""", - """2024-09-05T03:00:00Z Hourly threeCheck bullet(1+0) Conditions() None (09-04T23:00 EDT, 09-05T05:00 CEST) 27m""", - """2024-09-05T03:30:00Z Hourly threeCheck bullet(1+0) Conditions() None (09-04T23:30 EDT, 09-05T05:30 CEST) 27m""", - """2024-09-05T06:00:00Z Hourly threeCheck bullet(1+0) Conditions() None (09-05T02:00 EDT, 09-05T08:00 CEST) 27m""", - """2024-09-05T06:30:00Z Hourly threeCheck bullet(1+0) Conditions() None (09-05T02:30 EDT, 09-05T08:30 CEST) 27m""", - """2024-09-05T09:00:00Z Hourly threeCheck hippoBullet(2+0) Conditions() None (09-05T05:00 EDT, 09-05T11:00 CEST) 57m""", - """2024-09-05T12:00:00Z Hourly threeCheck blitz(5+0) Conditions() None (09-05T08:00 EDT, 09-05T14:00 CEST) 57m""", - """2024-09-05T15:00:00Z Hourly threeCheck blitz(5+0) Conditions() None (09-05T11:00 EDT, 09-05T17:00 CEST) 57m""", - """2024-09-05T18:00:00Z Hourly threeCheck superBlitz(3+0) Conditions() None (09-05T14:00 EDT, 09-05T20:00 CEST) 57m""", - """2024-09-05T21:00:00Z Hourly threeCheck superBlitz(3+0) Conditions() None (09-05T17:00 EDT, 09-05T23:00 CEST) 57m""", + """2024-09-05T02:00:00Z Hourly threeCheck hippoBullet(2+1) Conditions() None (09-04T22:00 EDT, 09-05T04:00 CEST) 57m""", + """2024-09-05T03:00:00Z Hourly threeCheck blitz(4+2) Conditions() None (09-04T23:00 EDT, 09-05T05:00 CEST) 57m""", + """2024-09-05T05:00:00Z Hourly threeCheck hippoBullet(2+1) Conditions() None (09-05T01:00 EDT, 09-05T07:00 CEST) 57m""", + """2024-09-05T06:00:00Z Hourly threeCheck blitz(4+2) Conditions() None (09-05T02:00 EDT, 09-05T08:00 CEST) 57m""", + """2024-09-05T08:00:00Z Hourly threeCheck bullet(1+0) Conditions() None (09-05T04:00 EDT, 09-05T10:00 CEST) 27m""", + """2024-09-05T08:30:00Z Hourly threeCheck bullet(1+0) Conditions() None (09-05T04:30 EDT, 09-05T10:30 CEST) 27m""", + """2024-09-05T09:00:00Z Hourly threeCheck blitz(4+2) Conditions() None (09-05T05:00 EDT, 09-05T11:00 CEST) 57m""", + """2024-09-05T11:00:00Z Hourly threeCheck superBlitz(3+0) Conditions() None (09-05T07:00 EDT, 09-05T13:00 CEST) 57m""", + """2024-09-05T12:00:00Z Hourly threeCheck blitz(4+2) Conditions() None (09-05T08:00 EDT, 09-05T14:00 CEST) 57m""", + """2024-09-05T14:00:00Z Hourly threeCheck hippoBullet(2+1) Conditions() None (09-05T10:00 EDT, 09-05T16:00 CEST) 57m""", + """2024-09-05T15:00:00Z Hourly threeCheck blitz(4+2) Conditions() None (09-05T11:00 EDT, 09-05T17:00 CEST) 57m""", + """2024-09-05T17:00:00Z Hourly threeCheck hippoBullet(2+1) Conditions() None (09-05T13:00 EDT, 09-05T19:00 CEST) 57m""", + """2024-09-05T18:00:00Z Hourly threeCheck blitz(4+2) Conditions() None (09-05T14:00 EDT, 09-05T20:00 CEST) 57m""", + """2024-09-05T20:00:00Z Hourly threeCheck bullet(1+0) Conditions() None (09-05T16:00 EDT, 09-05T22:00 CEST) 27m""", + """2024-09-05T20:30:00Z Hourly threeCheck bullet(1+0) Conditions() None (09-05T16:30 EDT, 09-05T22:30 CEST) 27m""", + """2024-09-05T21:00:00Z Hourly threeCheck blitz(4+2) Conditions() None (09-05T17:00 EDT, 09-05T23:00 CEST) 57m""", + """2024-09-05T23:00:00Z Hourly threeCheck superBlitz(3+0) Conditions() None (09-05T19:00 EDT, 09-06T01:00 CEST) 57m""", """2024-09-05T00:00:00Z Daily antichess superBlitz(3+0) Conditions() None (09-04T20:00 EDT, 09-05T02:00 CEST) 60m""", - """2024-09-05T01:00:00Z Hourly antichess hippoBullet(2+0) Conditions() None (09-04T21:00 EDT, 09-05T03:00 CEST) 57m""", - """2024-09-05T03:00:00Z Hourly antichess superBlitz(3+0) Conditions() None (09-04T23:00 EDT, 09-05T05:00 CEST) 57m""", - """2024-09-05T05:00:00Z Hourly antichess bullet(1+0) Conditions() None (09-05T01:00 EDT, 09-05T07:00 CEST) 27m""", - """2024-09-05T05:30:00Z Hourly antichess bullet(1+0) Conditions() None (09-05T01:30 EDT, 09-05T07:30 CEST) 27m""", - """2024-09-05T07:00:00Z Hourly antichess blitz(5+0) Conditions() None (09-05T03:00 EDT, 09-05T09:00 CEST) 57m""", + """2024-09-05T02:00:00Z Hourly antichess blitz(4+2) Conditions() None (09-04T22:00 EDT, 09-05T04:00 CEST) 57m""", + """2024-09-05T03:00:00Z Hourly antichess bullet(1+0) Conditions() None (09-04T23:00 EDT, 09-05T05:00 CEST) 27m""", + """2024-09-05T03:30:00Z Hourly antichess bullet(0+2) Conditions() None (09-04T23:30 EDT, 09-05T05:30 CEST) 27m""", + """2024-09-05T05:00:00Z Hourly antichess blitz(4+2) Conditions() None (09-05T01:00 EDT, 09-05T07:00 CEST) 57m""", + """2024-09-05T06:00:00Z Hourly antichess bullet(1+0) Conditions() None (09-05T02:00 EDT, 09-05T08:00 CEST) 27m""", + """2024-09-05T06:30:00Z Hourly antichess hyperBullet(½+0) Conditions() None (09-05T02:30 EDT, 09-05T08:30 CEST) 27m""", + """2024-09-05T08:00:00Z Hourly antichess superBlitz(3+0) Conditions() None (09-05T04:00 EDT, 09-05T10:00 CEST) 57m""", """2024-09-05T09:00:00Z Hourly antichess bullet(1+0) Conditions() None (09-05T05:00 EDT, 09-05T11:00 CEST) 27m""", - """2024-09-05T09:30:00Z Hourly antichess bullet(1+0) Conditions() None (09-05T05:30 EDT, 09-05T11:30 CEST) 27m""", - """2024-09-05T11:00:00Z Hourly antichess blitz(5+0) Conditions() None (09-05T07:00 EDT, 09-05T13:00 CEST) 57m""", - """2024-09-05T13:00:00Z Hourly antichess superBlitz(3+0) Conditions() None (09-05T09:00 EDT, 09-05T15:00 CEST) 57m""", - """2024-09-05T15:00:00Z Hourly antichess hippoBullet(2+0) Conditions() None (09-05T11:00 EDT, 09-05T17:00 CEST) 57m""", - """2024-09-05T17:00:00Z Hourly antichess superBlitz(3+0) Conditions() None (09-05T13:00 EDT, 09-05T19:00 CEST) 57m""", - """2024-09-05T19:00:00Z Hourly antichess bullet(1+0) Conditions() None (09-05T15:00 EDT, 09-05T21:00 CEST) 27m""", - """2024-09-05T19:30:00Z Hourly antichess bullet(1+0) Conditions() None (09-05T15:30 EDT, 09-05T21:30 CEST) 27m""", - """2024-09-05T21:00:00Z Hourly antichess blitz(5+0) Conditions() None (09-05T17:00 EDT, 09-05T23:00 CEST) 57m""", - """2024-09-05T23:00:00Z Hourly antichess bullet(1+0) Conditions() None (09-05T19:00 EDT, 09-06T01:00 CEST) 27m""", - """2024-09-05T23:30:00Z Hourly antichess bullet(1+0) Conditions() None (09-05T19:30 EDT, 09-06T01:30 CEST) 27m""", - """2024-09-05T00:00:00Z Hourly atomic blitz(5+0) Conditions() None (09-04T20:00 EDT, 09-05T02:00 CEST) 57m""", + """2024-09-05T09:30:00Z Hourly antichess bullet(0+2) Conditions() None (09-05T05:30 EDT, 09-05T11:30 CEST) 27m""", + """2024-09-05T11:00:00Z Hourly antichess hippoBullet(2+1) Conditions() None (09-05T07:00 EDT, 09-05T13:00 CEST) 57m""", + """2024-09-05T12:00:00Z Hourly antichess bullet(1+0) Conditions() None (09-05T08:00 EDT, 09-05T14:00 CEST) 27m""", + """2024-09-05T12:30:00Z Hourly antichess bullet(0+2) Conditions() None (09-05T08:30 EDT, 09-05T14:30 CEST) 27m""", + """2024-09-05T14:00:00Z Hourly antichess blitz(4+2) Conditions() None (09-05T10:00 EDT, 09-05T16:00 CEST) 57m""", + """2024-09-05T15:00:00Z Hourly antichess bullet(1+0) Conditions() None (09-05T11:00 EDT, 09-05T17:00 CEST) 27m""", + """2024-09-05T15:30:00Z Hourly antichess bullet(0+2) Conditions() None (09-05T11:30 EDT, 09-05T17:30 CEST) 27m""", + """2024-09-05T17:00:00Z Hourly antichess blitz(4+2) Conditions() None (09-05T13:00 EDT, 09-05T19:00 CEST) 57m""", + """2024-09-05T18:00:00Z Hourly antichess bullet(1+0) Conditions() None (09-05T14:00 EDT, 09-05T20:00 CEST) 27m""", + """2024-09-05T18:30:00Z Hourly antichess hyperBullet(½+0) Conditions() None (09-05T14:30 EDT, 09-05T20:30 CEST) 27m""", + """2024-09-05T20:00:00Z Hourly antichess superBlitz(3+0) Conditions() None (09-05T16:00 EDT, 09-05T22:00 CEST) 57m""", + """2024-09-05T21:00:00Z Hourly antichess bullet(1+0) Conditions() None (09-05T17:00 EDT, 09-05T23:00 CEST) 27m""", + """2024-09-05T21:30:00Z Hourly antichess bullet(0+2) Conditions() None (09-05T17:30 EDT, 09-05T23:30 CEST) 27m""", + """2024-09-05T23:00:00Z Hourly antichess hippoBullet(2+1) Conditions() None (09-05T19:00 EDT, 09-06T01:00 CEST) 57m""", + """2024-09-05T01:00:00Z Hourly atomic hippoBullet(2+1) Conditions() None (09-04T21:00 EDT, 09-05T03:00 CEST) 57m""", """2024-09-05T02:00:00Z Hourly atomic bullet(1+0) Conditions() None (09-04T22:00 EDT, 09-05T04:00 CEST) 27m""", - """2024-09-05T02:30:00Z Hourly atomic bullet(1+0) Conditions() None (09-04T22:30 EDT, 09-05T04:30 CEST) 27m""", - """2024-09-05T04:00:00Z Hourly atomic blitz(5+0) Conditions() None (09-05T00:00 EDT, 09-05T06:00 CEST) 57m""", - """2024-09-05T06:00:00Z Hourly atomic superBlitz(3+0) Conditions() None (09-05T02:00 EDT, 09-05T08:00 CEST) 57m""", - """2024-09-05T08:00:00Z Hourly atomic hippoBullet(2+0) Conditions() None (09-05T04:00 EDT, 09-05T10:00 CEST) 57m""", + """2024-09-05T02:30:00Z Hourly atomic bullet(0+2) Conditions() None (09-04T22:30 EDT, 09-05T04:30 CEST) 27m""", + """2024-09-05T04:00:00Z Hourly atomic blitz(4+2) Conditions() None (09-05T00:00 EDT, 09-05T06:00 CEST) 57m""", + """2024-09-05T05:00:00Z Hourly atomic bullet(1+0) Conditions() None (09-05T01:00 EDT, 09-05T07:00 CEST) 27m""", + """2024-09-05T05:30:00Z Hourly atomic bullet(0+2) Conditions() None (09-05T01:30 EDT, 09-05T07:30 CEST) 27m""", + """2024-09-05T07:00:00Z Hourly atomic blitz(4+2) Conditions() None (09-05T03:00 EDT, 09-05T09:00 CEST) 57m""", + """2024-09-05T08:00:00Z Hourly atomic bullet(1+0) Conditions() None (09-05T04:00 EDT, 09-05T10:00 CEST) 27m""", + """2024-09-05T08:30:00Z Hourly atomic hyperBullet(½+0) Conditions() None (09-05T04:30 EDT, 09-05T10:30 CEST) 27m""", """2024-09-05T10:00:00Z Hourly atomic superBlitz(3+0) Conditions() None (09-05T06:00 EDT, 09-05T12:00 CEST) 57m""", - """2024-09-05T12:00:00Z Hourly atomic bullet(1+0) Conditions() None (09-05T08:00 EDT, 09-05T14:00 CEST) 27m""", - """2024-09-05T12:30:00Z Hourly atomic bullet(1+0) Conditions() None (09-05T08:30 EDT, 09-05T14:30 CEST) 27m""", - """2024-09-05T14:00:00Z Hourly atomic blitz(5+0) Conditions() None (09-05T10:00 EDT, 09-05T16:00 CEST) 57m""", - """2024-09-05T16:00:00Z Hourly atomic bullet(1+0) Conditions() None (09-05T12:00 EDT, 09-05T18:00 CEST) 27m""", - """2024-09-05T16:30:00Z Hourly atomic bullet(1+0) Conditions() None (09-05T12:30 EDT, 09-05T18:30 CEST) 27m""", - """2024-09-05T18:00:00Z Hourly atomic blitz(5+0) Conditions() None (09-05T14:00 EDT, 09-05T20:00 CEST) 57m""", - """2024-09-05T20:00:00Z Hourly atomic superBlitz(3+0) Conditions() None (09-05T16:00 EDT, 09-05T22:00 CEST) 57m""", - """2024-09-05T22:00:00Z Hourly atomic hippoBullet(2+0) Conditions() None (09-05T18:00 EDT, 09-06T00:00 CEST) 57m""", + """2024-09-05T11:00:00Z Hourly atomic bullet(1+0) Conditions() None (09-05T07:00 EDT, 09-05T13:00 CEST) 27m""", + """2024-09-05T11:30:00Z Hourly atomic bullet(0+2) Conditions() None (09-05T07:30 EDT, 09-05T13:30 CEST) 27m""", + """2024-09-05T13:00:00Z Hourly atomic hippoBullet(2+1) Conditions() None (09-05T09:00 EDT, 09-05T15:00 CEST) 57m""", + """2024-09-05T14:00:00Z Hourly atomic bullet(1+0) Conditions() None (09-05T10:00 EDT, 09-05T16:00 CEST) 27m""", + """2024-09-05T14:30:00Z Hourly atomic bullet(0+2) Conditions() None (09-05T10:30 EDT, 09-05T16:30 CEST) 27m""", + """2024-09-05T16:00:00Z Hourly atomic blitz(4+2) Conditions() None (09-05T12:00 EDT, 09-05T18:00 CEST) 57m""", + """2024-09-05T17:00:00Z Hourly atomic bullet(1+0) Conditions() None (09-05T13:00 EDT, 09-05T19:00 CEST) 27m""", + """2024-09-05T17:30:00Z Hourly atomic bullet(0+2) Conditions() None (09-05T13:30 EDT, 09-05T19:30 CEST) 27m""", + """2024-09-05T19:00:00Z Hourly atomic blitz(4+2) Conditions() None (09-05T15:00 EDT, 09-05T21:00 CEST) 57m""", + """2024-09-05T20:00:00Z Hourly atomic bullet(1+0) Conditions() None (09-05T16:00 EDT, 09-05T22:00 CEST) 27m""", + """2024-09-05T20:30:00Z Hourly atomic hyperBullet(½+0) Conditions() None (09-05T16:30 EDT, 09-05T22:30 CEST) 27m""", + """2024-09-05T22:00:00Z Hourly atomic superBlitz(3+0) Conditions() None (09-05T18:00 EDT, 09-06T00:00 CEST) 57m""", """2024-09-05T23:00:00Z Daily atomic superBlitz(3+0) Conditions() None (09-05T19:00 EDT, 09-06T01:00 CEST) 60m""", - """2024-09-05T01:00:00Z Hourly horde blitz(5+0) Conditions() None (09-04T21:00 EDT, 09-05T03:00 CEST) 57m""", + """2024-09-05T00:00:00Z Hourly horde superBlitz(3+0) Conditions() None (09-04T20:00 EDT, 09-05T02:00 CEST) 57m""", """2024-09-05T02:00:00Z Daily horde superBlitz(3+0) Conditions() None (09-04T22:00 EDT, 09-05T04:00 CEST) 60m""", - """2024-09-05T04:00:00Z Hourly horde superBlitz(3+0) Conditions() None (09-05T00:00 EDT, 09-05T06:00 CEST) 57m""", - """2024-09-05T07:00:00Z Hourly horde superBlitz(3+0) Conditions() None (09-05T03:00 EDT, 09-05T09:00 CEST) 57m""", - """2024-09-05T10:00:00Z Hourly horde bullet(1+0) Conditions() None (09-05T06:00 EDT, 09-05T12:00 CEST) 27m""", - """2024-09-05T10:30:00Z Hourly horde bullet(1+0) Conditions() None (09-05T06:30 EDT, 09-05T12:30 CEST) 27m""", - """2024-09-05T13:00:00Z Hourly horde bullet(1+0) Conditions() None (09-05T09:00 EDT, 09-05T15:00 CEST) 27m""", - """2024-09-05T13:30:00Z Hourly horde bullet(1+0) Conditions() None (09-05T09:30 EDT, 09-05T15:30 CEST) 27m""", - """2024-09-05T16:00:00Z Hourly horde hippoBullet(2+0) Conditions() None (09-05T12:00 EDT, 09-05T18:00 CEST) 57m""", - """2024-09-05T19:00:00Z Hourly horde blitz(5+0) Conditions() None (09-05T15:00 EDT, 09-05T21:00 CEST) 57m""", - """2024-09-05T22:00:00Z Hourly horde blitz(5+0) Conditions() None (09-05T18:00 EDT, 09-06T00:00 CEST) 57m""", - """2024-09-05T02:00:00Z Hourly racingKings hippoBullet(2+0) Conditions() None (09-04T22:00 EDT, 09-05T04:00 CEST) 57m""", + """2024-09-05T04:00:00Z Hourly horde blitz(4+2) Conditions() None (09-05T00:00 EDT, 09-05T06:00 CEST) 57m""", + """2024-09-05T06:00:00Z Hourly horde superBlitz(3+0) Conditions() None (09-05T02:00 EDT, 09-05T08:00 CEST) 57m""", + """2024-09-05T08:00:00Z Hourly horde bullet(1+0) Conditions() None (09-05T04:00 EDT, 09-05T10:00 CEST) 27m""", + """2024-09-05T08:30:00Z Hourly horde bullet(1+0) Conditions() None (09-05T04:30 EDT, 09-05T10:30 CEST) 27m""", + """2024-09-05T10:00:00Z Hourly horde blitz(4+2) Conditions() None (09-05T06:00 EDT, 09-05T12:00 CEST) 57m""", + """2024-09-05T12:00:00Z Hourly horde superBlitz(3+0) Conditions() None (09-05T08:00 EDT, 09-05T14:00 CEST) 57m""", + """2024-09-05T14:00:00Z Hourly horde bullet(1+0) Conditions() None (09-05T10:00 EDT, 09-05T16:00 CEST) 27m""", + """2024-09-05T14:30:00Z Hourly horde bullet(1+0) Conditions() None (09-05T10:30 EDT, 09-05T16:30 CEST) 27m""", + """2024-09-05T16:00:00Z Hourly horde blitz(4+2) Conditions() None (09-05T12:00 EDT, 09-05T18:00 CEST) 57m""", + """2024-09-05T18:00:00Z Hourly horde superBlitz(3+0) Conditions() None (09-05T14:00 EDT, 09-05T20:00 CEST) 57m""", + """2024-09-05T20:00:00Z Hourly horde bullet(1+0) Conditions() None (09-05T16:00 EDT, 09-05T22:00 CEST) 27m""", + """2024-09-05T20:30:00Z Hourly horde bullet(1+0) Conditions() None (09-05T16:30 EDT, 09-05T22:30 CEST) 27m""", + """2024-09-05T22:00:00Z Hourly horde blitz(4+2) Conditions() None (09-05T18:00 EDT, 09-06T00:00 CEST) 57m""", + """2024-09-05T01:00:00Z Hourly racingKings blitz(4+2) Conditions() None (09-04T21:00 EDT, 09-05T03:00 CEST) 57m""", """2024-09-05T03:00:00Z Daily racingKings superBlitz(3+0) Conditions() None (09-04T23:00 EDT, 09-05T05:00 CEST) 60m""", - """2024-09-05T05:00:00Z Hourly racingKings blitz(5+0) Conditions() None (09-05T01:00 EDT, 09-05T07:00 CEST) 57m""", - """2024-09-05T08:00:00Z Hourly racingKings blitz(5+0) Conditions() None (09-05T04:00 EDT, 09-05T10:00 CEST) 57m""", - """2024-09-05T11:00:00Z Hourly racingKings superBlitz(3+0) Conditions() None (09-05T07:00 EDT, 09-05T13:00 CEST) 57m""", - """2024-09-05T14:00:00Z Hourly racingKings superBlitz(3+0) Conditions() None (09-05T10:00 EDT, 09-05T16:00 CEST) 57m""", + """2024-09-05T05:00:00Z Hourly racingKings bullet(1+0) Conditions() None (09-05T01:00 EDT, 09-05T07:00 CEST) 27m""", + """2024-09-05T05:30:00Z Hourly racingKings bullet(1+0) Conditions() None (09-05T01:30 EDT, 09-05T07:30 CEST) 27m""", + """2024-09-05T07:00:00Z Hourly racingKings blitz(4+2) Conditions() None (09-05T03:00 EDT, 09-05T09:00 CEST) 57m""", + """2024-09-05T09:00:00Z Hourly racingKings hippoBullet(2+1) Conditions() None (09-05T05:00 EDT, 09-05T11:00 CEST) 57m""", + """2024-09-05T11:00:00Z Hourly racingKings bullet(1+0) Conditions() None (09-05T07:00 EDT, 09-05T13:00 CEST) 27m""", + """2024-09-05T11:30:00Z Hourly racingKings bullet(1+0) Conditions() None (09-05T07:30 EDT, 09-05T13:30 CEST) 27m""", + """2024-09-05T13:00:00Z Hourly racingKings blitz(4+2) Conditions() None (09-05T09:00 EDT, 09-05T15:00 CEST) 57m""", + """2024-09-05T15:00:00Z Hourly racingKings hippoBullet(2+1) Conditions() None (09-05T11:00 EDT, 09-05T17:00 CEST) 57m""", """2024-09-05T17:00:00Z Hourly racingKings bullet(1+0) Conditions() None (09-05T13:00 EDT, 09-05T19:00 CEST) 27m""", """2024-09-05T17:30:00Z Hourly racingKings bullet(1+0) Conditions() None (09-05T13:30 EDT, 09-05T19:30 CEST) 27m""", """2024-09-05T19:00:00Z Weekly racingKings superBlitz(3+0) Conditions() None (09-05T15:00 EDT, 09-05T21:00 CEST) 180m""", - """2024-09-05T23:00:00Z Hourly racingKings hippoBullet(2+0) Conditions() None (09-05T19:00 EDT, 09-06T01:00 CEST) 57m""", - """2024-09-05T02:00:00Z Hourly crazyhouse superBlitz(3+1) Conditions() None (09-04T22:00 EDT, 09-05T04:00 CEST) 57m""", - """2024-09-05T05:00:00Z Hourly crazyhouse superBlitz(3+0) Conditions() None (09-05T01:00 EDT, 09-05T07:00 CEST) 57m""", - """2024-09-05T08:00:00Z Hourly crazyhouse bullet(1+0) Conditions() None (09-05T04:00 EDT, 09-05T10:00 CEST) 27m""", - """2024-09-05T08:30:00Z Hourly crazyhouse bullet(1+0) Conditions() None (09-05T04:30 EDT, 09-05T10:30 CEST) 27m""", - """2024-09-05T11:00:00Z Hourly crazyhouse bullet(1+0) Conditions() None (09-05T07:00 EDT, 09-05T13:00 CEST) 27m""", - """2024-09-05T11:30:00Z Hourly crazyhouse bullet(1+0) Conditions() None (09-05T07:30 EDT, 09-05T13:30 CEST) 27m""", - """2024-09-05T14:00:00Z Hourly crazyhouse hippoBullet(2+0) Conditions() None (09-05T10:00 EDT, 09-05T16:00 CEST) 57m""", - """2024-09-05T17:00:00Z Hourly crazyhouse blitz(5+0) Conditions() None (09-05T13:00 EDT, 09-05T19:00 CEST) 57m""", + """2024-09-05T23:00:00Z Hourly racingKings bullet(1+0) Conditions() None (09-05T19:00 EDT, 09-06T01:00 CEST) 27m""", + """2024-09-05T23:30:00Z Hourly racingKings bullet(1+0) Conditions() None (09-05T19:30 EDT, 09-06T01:30 CEST) 27m""", + """2024-09-05T00:00:00Z Hourly crazyhouse superBlitz(3+0) Conditions() None (09-04T20:00 EDT, 09-05T02:00 CEST) 57m""", + """2024-09-05T01:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None (09-04T21:00 EDT, 09-05T03:00 CEST) 57m""", + """2024-09-05T03:00:00Z Hourly crazyhouse hippoBullet(2+1) Conditions() None (09-04T23:00 EDT, 09-05T05:00 CEST) 57m""", + """2024-09-05T04:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None (09-05T00:00 EDT, 09-05T06:00 CEST) 57m""", + """2024-09-05T06:00:00Z Hourly crazyhouse hippoBullet(2+1) Conditions() None (09-05T02:00 EDT, 09-05T08:00 CEST) 57m""", + """2024-09-05T07:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None (09-05T03:00 EDT, 09-05T09:00 CEST) 57m""", + """2024-09-05T09:00:00Z Hourly crazyhouse bullet(1+0) Conditions() None (09-05T05:00 EDT, 09-05T11:00 CEST) 27m""", + """2024-09-05T09:30:00Z Hourly crazyhouse bullet(1+0) Conditions() None (09-05T05:30 EDT, 09-05T11:30 CEST) 27m""", + """2024-09-05T10:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None (09-05T06:00 EDT, 09-05T12:00 CEST) 57m""", + """2024-09-05T12:00:00Z Hourly crazyhouse superBlitz(3+0) Conditions() None (09-05T08:00 EDT, 09-05T14:00 CEST) 57m""", + """2024-09-05T13:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None (09-05T09:00 EDT, 09-05T15:00 CEST) 57m""", + """2024-09-05T15:00:00Z Hourly crazyhouse hippoBullet(2+1) Conditions() None (09-05T11:00 EDT, 09-05T17:00 CEST) 57m""", + """2024-09-05T16:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None (09-05T12:00 EDT, 09-05T18:00 CEST) 57m""", + """2024-09-05T18:00:00Z Hourly crazyhouse hippoBullet(2+1) Conditions() None (09-05T14:00 EDT, 09-05T20:00 CEST) 57m""", + """2024-09-05T19:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None (09-05T15:00 EDT, 09-05T21:00 CEST) 57m""", """2024-09-05T20:00:00Z Daily crazyhouse blitz(5+0) Conditions() None (09-05T16:00 EDT, 09-05T22:00 CEST) 90m""", - """2024-09-05T23:00:00Z Hourly crazyhouse superBlitz(3+0) Conditions() None (09-05T19:00 EDT, 09-06T01:00 CEST) 57m""" + """2024-09-05T21:30:00Z Hourly crazyhouse bullet(1+0) Conditions() None (09-05T17:30 EDT, 09-05T23:30 CEST) 27m""", + """2024-09-05T22:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None (09-05T18:00 EDT, 09-06T00:00 CEST) 57m""" ).mkString("\n") ) @@ -735,109 +789,160 @@ class SchedulerTest extends munit.FunSuite: """2024-01-03T21:00:00Z Hourly standard rapid(10+0) Conditions(NbRatedGame(20),MaxRating(1700)) None (01-03T16:00 EST, 01-03T22:00 CET) 57m""", """2024-01-03T22:00:00Z Hourly standard rapid(10+0) Conditions(NbRatedGame(20),MaxRating(2000)) None (01-03T17:00 EST, 01-03T23:00 CET) 57m""", """2024-01-03T23:00:00Z Hourly standard rapid(10+0) Conditions(NbRatedGame(20),MaxRating(1300)) None (01-03T18:00 EST, 01-04T00:00 CET) 57m""", - """2024-01-03T00:00:00Z Hourly chess960 hippoBullet(2+0) Conditions() None (01-02T19:00 EST, 01-03T01:00 CET) 57m""", - """2024-01-03T03:00:00Z Hourly chess960 blitz(5+0) Conditions() None (01-02T22:00 EST, 01-03T04:00 CET) 57m""", - """2024-01-03T06:00:00Z Hourly chess960 blitz(5+0) Conditions() None (01-03T01:00 EST, 01-03T07:00 CET) 57m""", - """2024-01-03T09:00:00Z Hourly chess960 superBlitz(3+0) Conditions() None (01-03T04:00 EST, 01-03T10:00 CET) 57m""", - """2024-01-03T12:00:00Z Hourly chess960 superBlitz(3+0) Conditions() None (01-03T07:00 EST, 01-03T13:00 CET) 57m""", - """2024-01-03T15:00:00Z Hourly chess960 bullet(1+0) Conditions() None (01-03T10:00 EST, 01-03T16:00 CET) 27m""", - """2024-01-03T15:30:00Z Hourly chess960 bullet(1+0) Conditions() None (01-03T10:30 EST, 01-03T16:30 CET) 27m""", - """2024-01-03T18:00:00Z Hourly chess960 bullet(1+0) Conditions() None (01-03T13:00 EST, 01-03T19:00 CET) 27m""", - """2024-01-03T18:30:00Z Hourly chess960 bullet(1+0) Conditions() None (01-03T13:30 EST, 01-03T19:30 CET) 27m""", + """2024-01-03T01:00:00Z Hourly chess960 superBlitz(3+0) Conditions() None (01-02T20:00 EST, 01-03T02:00 CET) 57m""", + """2024-01-03T02:00:00Z Hourly chess960 blitz(4+2) Conditions() None (01-02T21:00 EST, 01-03T03:00 CET) 57m""", + """2024-01-03T04:00:00Z Hourly chess960 hippoBullet(2+1) Conditions() None (01-02T23:00 EST, 01-03T05:00 CET) 57m""", + """2024-01-03T05:00:00Z Hourly chess960 blitz(4+2) Conditions() None (01-03T00:00 EST, 01-03T06:00 CET) 57m""", + """2024-01-03T07:00:00Z Hourly chess960 hippoBullet(2+1) Conditions() None (01-03T02:00 EST, 01-03T08:00 CET) 57m""", + """2024-01-03T08:00:00Z Hourly chess960 blitz(4+2) Conditions() None (01-03T03:00 EST, 01-03T09:00 CET) 57m""", + """2024-01-03T10:00:00Z Hourly chess960 bullet(1+0) Conditions() None (01-03T05:00 EST, 01-03T11:00 CET) 27m""", + """2024-01-03T10:30:00Z Hourly chess960 bullet(1+0) Conditions() None (01-03T05:30 EST, 01-03T11:30 CET) 27m""", + """2024-01-03T11:00:00Z Hourly chess960 blitz(4+2) Conditions() None (01-03T06:00 EST, 01-03T12:00 CET) 57m""", + """2024-01-03T13:00:00Z Hourly chess960 superBlitz(3+0) Conditions() None (01-03T08:00 EST, 01-03T14:00 CET) 57m""", + """2024-01-03T14:00:00Z Hourly chess960 blitz(4+2) Conditions() None (01-03T09:00 EST, 01-03T15:00 CET) 57m""", + """2024-01-03T16:00:00Z Hourly chess960 hippoBullet(2+1) Conditions() None (01-03T11:00 EST, 01-03T17:00 CET) 57m""", + """2024-01-03T17:00:00Z Hourly chess960 blitz(4+2) Conditions() None (01-03T12:00 EST, 01-03T18:00 CET) 57m""", + """2024-01-03T19:00:00Z Hourly chess960 hippoBullet(2+1) Conditions() None (01-03T14:00 EST, 01-03T20:00 CET) 57m""", + """2024-01-03T20:00:00Z Hourly chess960 blitz(4+2) Conditions() None (01-03T15:00 EST, 01-03T21:00 CET) 57m""", """2024-01-03T21:00:00Z Daily chess960 blitz(5+0) Conditions() None (01-03T16:00 EST, 01-03T22:00 CET) 90m""", - """2024-01-03T01:00:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None (01-02T20:00 EST, 01-03T02:00 CET) 27m""", - """2024-01-03T01:30:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None (01-02T20:30 EST, 01-03T02:30 CET) 27m""", - """2024-01-03T04:00:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None (01-02T23:00 EST, 01-03T05:00 CET) 27m""", - """2024-01-03T04:30:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None (01-02T23:30 EST, 01-03T05:30 CET) 27m""", - """2024-01-03T07:00:00Z Hourly kingOfTheHill hippoBullet(2+0) Conditions() None (01-03T02:00 EST, 01-03T08:00 CET) 57m""", - """2024-01-03T10:00:00Z Hourly kingOfTheHill blitz(5+0) Conditions() None (01-03T05:00 EST, 01-03T11:00 CET) 57m""", - """2024-01-03T13:00:00Z Hourly kingOfTheHill blitz(5+0) Conditions() None (01-03T08:00 EST, 01-03T14:00 CET) 57m""", - """2024-01-03T16:00:00Z Hourly kingOfTheHill superBlitz(3+0) Conditions() None (01-03T11:00 EST, 01-03T17:00 CET) 57m""", + """2024-01-03T22:30:00Z Hourly chess960 bullet(1+0) Conditions() None (01-03T17:30 EST, 01-03T23:30 CET) 27m""", + """2024-01-03T23:00:00Z Hourly chess960 blitz(4+2) Conditions() None (01-03T18:00 EST, 01-04T00:00 CET) 57m""", + """2024-01-03T00:00:00Z Hourly kingOfTheHill superBlitz(3+0) Conditions() None (01-02T19:00 EST, 01-03T01:00 CET) 57m""", + """2024-01-03T01:00:00Z Hourly kingOfTheHill blitz(4+2) Conditions() None (01-02T20:00 EST, 01-03T02:00 CET) 57m""", + """2024-01-03T03:00:00Z Hourly kingOfTheHill hippoBullet(2+1) Conditions() None (01-02T22:00 EST, 01-03T04:00 CET) 57m""", + """2024-01-03T04:00:00Z Hourly kingOfTheHill blitz(4+2) Conditions() None (01-02T23:00 EST, 01-03T05:00 CET) 57m""", + """2024-01-03T06:00:00Z Hourly kingOfTheHill hippoBullet(2+1) Conditions() None (01-03T01:00 EST, 01-03T07:00 CET) 57m""", + """2024-01-03T07:00:00Z Hourly kingOfTheHill blitz(4+2) Conditions() None (01-03T02:00 EST, 01-03T08:00 CET) 57m""", + """2024-01-03T09:00:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None (01-03T04:00 EST, 01-03T10:00 CET) 27m""", + """2024-01-03T09:30:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None (01-03T04:30 EST, 01-03T10:30 CET) 27m""", + """2024-01-03T10:00:00Z Hourly kingOfTheHill blitz(4+2) Conditions() None (01-03T05:00 EST, 01-03T11:00 CET) 57m""", + """2024-01-03T12:00:00Z Hourly kingOfTheHill superBlitz(3+0) Conditions() None (01-03T07:00 EST, 01-03T13:00 CET) 57m""", + """2024-01-03T13:00:00Z Hourly kingOfTheHill blitz(4+2) Conditions() None (01-03T08:00 EST, 01-03T14:00 CET) 57m""", + """2024-01-03T15:00:00Z Hourly kingOfTheHill hippoBullet(2+1) Conditions() None (01-03T10:00 EST, 01-03T16:00 CET) 57m""", + """2024-01-03T16:00:00Z Hourly kingOfTheHill blitz(4+2) Conditions() None (01-03T11:00 EST, 01-03T17:00 CET) 57m""", + """2024-01-03T18:00:00Z Hourly kingOfTheHill hippoBullet(2+1) Conditions() None (01-03T13:00 EST, 01-03T19:00 CET) 57m""", """2024-01-03T19:00:00Z Weekly kingOfTheHill superBlitz(3+0) Conditions() None (01-03T14:00 EST, 01-03T20:00 CET) 180m""", - """2024-01-03T22:00:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None (01-03T17:00 EST, 01-03T23:00 CET) 27m""", - """2024-01-03T22:30:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None (01-03T17:30 EST, 01-03T23:30 CET) 27m""", - """2024-01-03T00:00:00Z Hourly threeCheck superBlitz(3+0) Conditions() None (01-02T19:00 EST, 01-03T01:00 CET) 57m""", + """2024-01-03T22:00:00Z Hourly kingOfTheHill blitz(4+2) Conditions() None (01-03T17:00 EST, 01-03T23:00 CET) 57m""", + """2024-01-03T00:00:00Z Hourly threeCheck blitz(4+2) Conditions() None (01-02T19:00 EST, 01-03T01:00 CET) 57m""", """2024-01-03T01:00:00Z Daily threeCheck superBlitz(3+0) Conditions() None (01-02T20:00 EST, 01-03T02:00 CET) 60m""", - """2024-01-03T03:00:00Z Hourly threeCheck bullet(1+0) Conditions() None (01-02T22:00 EST, 01-03T04:00 CET) 27m""", - """2024-01-03T03:30:00Z Hourly threeCheck bullet(1+0) Conditions() None (01-02T22:30 EST, 01-03T04:30 CET) 27m""", - """2024-01-03T06:00:00Z Hourly threeCheck bullet(1+0) Conditions() None (01-03T01:00 EST, 01-03T07:00 CET) 27m""", - """2024-01-03T06:30:00Z Hourly threeCheck bullet(1+0) Conditions() None (01-03T01:30 EST, 01-03T07:30 CET) 27m""", - """2024-01-03T09:00:00Z Hourly threeCheck hippoBullet(2+0) Conditions() None (01-03T04:00 EST, 01-03T10:00 CET) 57m""", - """2024-01-03T12:00:00Z Hourly threeCheck blitz(5+0) Conditions() None (01-03T07:00 EST, 01-03T13:00 CET) 57m""", - """2024-01-03T15:00:00Z Hourly threeCheck blitz(5+0) Conditions() None (01-03T10:00 EST, 01-03T16:00 CET) 57m""", - """2024-01-03T18:00:00Z Hourly threeCheck superBlitz(3+0) Conditions() None (01-03T13:00 EST, 01-03T19:00 CET) 57m""", - """2024-01-03T21:00:00Z Hourly threeCheck superBlitz(3+0) Conditions() None (01-03T16:00 EST, 01-03T22:00 CET) 57m""", + """2024-01-03T02:00:00Z Hourly threeCheck hippoBullet(2+1) Conditions() None (01-02T21:00 EST, 01-03T03:00 CET) 57m""", + """2024-01-03T03:00:00Z Hourly threeCheck blitz(4+2) Conditions() None (01-02T22:00 EST, 01-03T04:00 CET) 57m""", + """2024-01-03T05:00:00Z Hourly threeCheck hippoBullet(2+1) Conditions() None (01-03T00:00 EST, 01-03T06:00 CET) 57m""", + """2024-01-03T06:00:00Z Hourly threeCheck blitz(4+2) Conditions() None (01-03T01:00 EST, 01-03T07:00 CET) 57m""", + """2024-01-03T08:00:00Z Hourly threeCheck bullet(1+0) Conditions() None (01-03T03:00 EST, 01-03T09:00 CET) 27m""", + """2024-01-03T08:30:00Z Hourly threeCheck bullet(1+0) Conditions() None (01-03T03:30 EST, 01-03T09:30 CET) 27m""", + """2024-01-03T09:00:00Z Hourly threeCheck blitz(4+2) Conditions() None (01-03T04:00 EST, 01-03T10:00 CET) 57m""", + """2024-01-03T11:00:00Z Hourly threeCheck superBlitz(3+0) Conditions() None (01-03T06:00 EST, 01-03T12:00 CET) 57m""", + """2024-01-03T12:00:00Z Hourly threeCheck blitz(4+2) Conditions() None (01-03T07:00 EST, 01-03T13:00 CET) 57m""", + """2024-01-03T14:00:00Z Hourly threeCheck hippoBullet(2+1) Conditions() None (01-03T09:00 EST, 01-03T15:00 CET) 57m""", + """2024-01-03T15:00:00Z Hourly threeCheck blitz(4+2) Conditions() None (01-03T10:00 EST, 01-03T16:00 CET) 57m""", + """2024-01-03T17:00:00Z Hourly threeCheck hippoBullet(2+1) Conditions() None (01-03T12:00 EST, 01-03T18:00 CET) 57m""", + """2024-01-03T18:00:00Z Hourly threeCheck blitz(4+2) Conditions() None (01-03T13:00 EST, 01-03T19:00 CET) 57m""", + """2024-01-03T20:00:00Z Hourly threeCheck bullet(1+0) Conditions() None (01-03T15:00 EST, 01-03T21:00 CET) 27m""", + """2024-01-03T20:30:00Z Hourly threeCheck bullet(1+0) Conditions() None (01-03T15:30 EST, 01-03T21:30 CET) 27m""", + """2024-01-03T21:00:00Z Hourly threeCheck blitz(4+2) Conditions() None (01-03T16:00 EST, 01-03T22:00 CET) 57m""", + """2024-01-03T23:00:00Z Hourly threeCheck superBlitz(3+0) Conditions() None (01-03T18:00 EST, 01-04T00:00 CET) 57m""", """2024-01-03T00:00:00Z Daily antichess superBlitz(3+0) Conditions() None (01-02T19:00 EST, 01-03T01:00 CET) 60m""", - """2024-01-03T01:00:00Z Hourly antichess hippoBullet(2+0) Conditions() None (01-02T20:00 EST, 01-03T02:00 CET) 57m""", - """2024-01-03T03:00:00Z Hourly antichess superBlitz(3+0) Conditions() None (01-02T22:00 EST, 01-03T04:00 CET) 57m""", - """2024-01-03T05:00:00Z Hourly antichess bullet(1+0) Conditions() None (01-03T00:00 EST, 01-03T06:00 CET) 27m""", - """2024-01-03T05:30:00Z Hourly antichess bullet(1+0) Conditions() None (01-03T00:30 EST, 01-03T06:30 CET) 27m""", - """2024-01-03T07:00:00Z Hourly antichess blitz(5+0) Conditions() None (01-03T02:00 EST, 01-03T08:00 CET) 57m""", + """2024-01-03T02:00:00Z Hourly antichess blitz(4+2) Conditions() None (01-02T21:00 EST, 01-03T03:00 CET) 57m""", + """2024-01-03T03:00:00Z Hourly antichess bullet(1+0) Conditions() None (01-02T22:00 EST, 01-03T04:00 CET) 27m""", + """2024-01-03T03:30:00Z Hourly antichess bullet(0+2) Conditions() None (01-02T22:30 EST, 01-03T04:30 CET) 27m""", + """2024-01-03T05:00:00Z Hourly antichess blitz(4+2) Conditions() None (01-03T00:00 EST, 01-03T06:00 CET) 57m""", + """2024-01-03T06:00:00Z Hourly antichess bullet(1+0) Conditions() None (01-03T01:00 EST, 01-03T07:00 CET) 27m""", + """2024-01-03T06:30:00Z Hourly antichess hyperBullet(½+0) Conditions() None (01-03T01:30 EST, 01-03T07:30 CET) 27m""", + """2024-01-03T08:00:00Z Hourly antichess superBlitz(3+0) Conditions() None (01-03T03:00 EST, 01-03T09:00 CET) 57m""", """2024-01-03T09:00:00Z Hourly antichess bullet(1+0) Conditions() None (01-03T04:00 EST, 01-03T10:00 CET) 27m""", - """2024-01-03T09:30:00Z Hourly antichess bullet(1+0) Conditions() None (01-03T04:30 EST, 01-03T10:30 CET) 27m""", - """2024-01-03T11:00:00Z Hourly antichess blitz(5+0) Conditions() None (01-03T06:00 EST, 01-03T12:00 CET) 57m""", - """2024-01-03T13:00:00Z Hourly antichess superBlitz(3+0) Conditions() None (01-03T08:00 EST, 01-03T14:00 CET) 57m""", - """2024-01-03T15:00:00Z Hourly antichess hippoBullet(2+0) Conditions() None (01-03T10:00 EST, 01-03T16:00 CET) 57m""", - """2024-01-03T17:00:00Z Hourly antichess superBlitz(3+0) Conditions() None (01-03T12:00 EST, 01-03T18:00 CET) 57m""", - """2024-01-03T19:00:00Z Hourly antichess bullet(1+0) Conditions() None (01-03T14:00 EST, 01-03T20:00 CET) 27m""", - """2024-01-03T19:30:00Z Hourly antichess bullet(1+0) Conditions() None (01-03T14:30 EST, 01-03T20:30 CET) 27m""", - """2024-01-03T21:00:00Z Hourly antichess blitz(5+0) Conditions() None (01-03T16:00 EST, 01-03T22:00 CET) 57m""", - """2024-01-03T23:00:00Z Hourly antichess bullet(1+0) Conditions() None (01-03T18:00 EST, 01-04T00:00 CET) 27m""", - """2024-01-03T23:30:00Z Hourly antichess bullet(1+0) Conditions() None (01-03T18:30 EST, 01-04T00:30 CET) 27m""", - """2024-01-03T00:00:00Z Hourly atomic blitz(5+0) Conditions() None (01-02T19:00 EST, 01-03T01:00 CET) 57m""", + """2024-01-03T09:30:00Z Hourly antichess bullet(0+2) Conditions() None (01-03T04:30 EST, 01-03T10:30 CET) 27m""", + """2024-01-03T11:00:00Z Hourly antichess hippoBullet(2+1) Conditions() None (01-03T06:00 EST, 01-03T12:00 CET) 57m""", + """2024-01-03T12:00:00Z Hourly antichess bullet(1+0) Conditions() None (01-03T07:00 EST, 01-03T13:00 CET) 27m""", + """2024-01-03T12:30:00Z Hourly antichess bullet(0+2) Conditions() None (01-03T07:30 EST, 01-03T13:30 CET) 27m""", + """2024-01-03T14:00:00Z Hourly antichess blitz(4+2) Conditions() None (01-03T09:00 EST, 01-03T15:00 CET) 57m""", + """2024-01-03T15:00:00Z Hourly antichess bullet(1+0) Conditions() None (01-03T10:00 EST, 01-03T16:00 CET) 27m""", + """2024-01-03T15:30:00Z Hourly antichess bullet(0+2) Conditions() None (01-03T10:30 EST, 01-03T16:30 CET) 27m""", + """2024-01-03T17:00:00Z Hourly antichess blitz(4+2) Conditions() None (01-03T12:00 EST, 01-03T18:00 CET) 57m""", + """2024-01-03T18:00:00Z Hourly antichess bullet(1+0) Conditions() None (01-03T13:00 EST, 01-03T19:00 CET) 27m""", + """2024-01-03T18:30:00Z Hourly antichess hyperBullet(½+0) Conditions() None (01-03T13:30 EST, 01-03T19:30 CET) 27m""", + """2024-01-03T20:00:00Z Hourly antichess superBlitz(3+0) Conditions() None (01-03T15:00 EST, 01-03T21:00 CET) 57m""", + """2024-01-03T21:00:00Z Hourly antichess bullet(1+0) Conditions() None (01-03T16:00 EST, 01-03T22:00 CET) 27m""", + """2024-01-03T21:30:00Z Hourly antichess bullet(0+2) Conditions() None (01-03T16:30 EST, 01-03T22:30 CET) 27m""", + """2024-01-03T23:00:00Z Hourly antichess hippoBullet(2+1) Conditions() None (01-03T18:00 EST, 01-04T00:00 CET) 57m""", + """2024-01-03T01:00:00Z Hourly atomic hippoBullet(2+1) Conditions() None (01-02T20:00 EST, 01-03T02:00 CET) 57m""", """2024-01-03T02:00:00Z Hourly atomic bullet(1+0) Conditions() None (01-02T21:00 EST, 01-03T03:00 CET) 27m""", - """2024-01-03T02:30:00Z Hourly atomic bullet(1+0) Conditions() None (01-02T21:30 EST, 01-03T03:30 CET) 27m""", - """2024-01-03T04:00:00Z Hourly atomic blitz(5+0) Conditions() None (01-02T23:00 EST, 01-03T05:00 CET) 57m""", - """2024-01-03T06:00:00Z Hourly atomic superBlitz(3+0) Conditions() None (01-03T01:00 EST, 01-03T07:00 CET) 57m""", - """2024-01-03T08:00:00Z Hourly atomic hippoBullet(2+0) Conditions() None (01-03T03:00 EST, 01-03T09:00 CET) 57m""", + """2024-01-03T02:30:00Z Hourly atomic bullet(0+2) Conditions() None (01-02T21:30 EST, 01-03T03:30 CET) 27m""", + """2024-01-03T04:00:00Z Hourly atomic blitz(4+2) Conditions() None (01-02T23:00 EST, 01-03T05:00 CET) 57m""", + """2024-01-03T05:00:00Z Hourly atomic bullet(1+0) Conditions() None (01-03T00:00 EST, 01-03T06:00 CET) 27m""", + """2024-01-03T05:30:00Z Hourly atomic bullet(0+2) Conditions() None (01-03T00:30 EST, 01-03T06:30 CET) 27m""", + """2024-01-03T07:00:00Z Hourly atomic blitz(4+2) Conditions() None (01-03T02:00 EST, 01-03T08:00 CET) 57m""", + """2024-01-03T08:00:00Z Hourly atomic bullet(1+0) Conditions() None (01-03T03:00 EST, 01-03T09:00 CET) 27m""", + """2024-01-03T08:30:00Z Hourly atomic hyperBullet(½+0) Conditions() None (01-03T03:30 EST, 01-03T09:30 CET) 27m""", """2024-01-03T10:00:00Z Hourly atomic superBlitz(3+0) Conditions() None (01-03T05:00 EST, 01-03T11:00 CET) 57m""", - """2024-01-03T12:00:00Z Hourly atomic bullet(1+0) Conditions() None (01-03T07:00 EST, 01-03T13:00 CET) 27m""", - """2024-01-03T12:30:00Z Hourly atomic bullet(1+0) Conditions() None (01-03T07:30 EST, 01-03T13:30 CET) 27m""", - """2024-01-03T14:00:00Z Hourly atomic blitz(5+0) Conditions() None (01-03T09:00 EST, 01-03T15:00 CET) 57m""", - """2024-01-03T16:00:00Z Hourly atomic bullet(1+0) Conditions() None (01-03T11:00 EST, 01-03T17:00 CET) 27m""", - """2024-01-03T16:30:00Z Hourly atomic bullet(1+0) Conditions() None (01-03T11:30 EST, 01-03T17:30 CET) 27m""", - """2024-01-03T18:00:00Z Hourly atomic blitz(5+0) Conditions() None (01-03T13:00 EST, 01-03T19:00 CET) 57m""", - """2024-01-03T20:00:00Z Hourly atomic superBlitz(3+0) Conditions() None (01-03T15:00 EST, 01-03T21:00 CET) 57m""", - """2024-01-03T22:00:00Z Hourly atomic hippoBullet(2+0) Conditions() None (01-03T17:00 EST, 01-03T23:00 CET) 57m""", + """2024-01-03T11:00:00Z Hourly atomic bullet(1+0) Conditions() None (01-03T06:00 EST, 01-03T12:00 CET) 27m""", + """2024-01-03T11:30:00Z Hourly atomic bullet(0+2) Conditions() None (01-03T06:30 EST, 01-03T12:30 CET) 27m""", + """2024-01-03T13:00:00Z Hourly atomic hippoBullet(2+1) Conditions() None (01-03T08:00 EST, 01-03T14:00 CET) 57m""", + """2024-01-03T14:00:00Z Hourly atomic bullet(1+0) Conditions() None (01-03T09:00 EST, 01-03T15:00 CET) 27m""", + """2024-01-03T14:30:00Z Hourly atomic bullet(0+2) Conditions() None (01-03T09:30 EST, 01-03T15:30 CET) 27m""", + """2024-01-03T16:00:00Z Hourly atomic blitz(4+2) Conditions() None (01-03T11:00 EST, 01-03T17:00 CET) 57m""", + """2024-01-03T17:00:00Z Hourly atomic bullet(1+0) Conditions() None (01-03T12:00 EST, 01-03T18:00 CET) 27m""", + """2024-01-03T17:30:00Z Hourly atomic bullet(0+2) Conditions() None (01-03T12:30 EST, 01-03T18:30 CET) 27m""", + """2024-01-03T19:00:00Z Hourly atomic blitz(4+2) Conditions() None (01-03T14:00 EST, 01-03T20:00 CET) 57m""", + """2024-01-03T20:00:00Z Hourly atomic bullet(1+0) Conditions() None (01-03T15:00 EST, 01-03T21:00 CET) 27m""", + """2024-01-03T20:30:00Z Hourly atomic hyperBullet(½+0) Conditions() None (01-03T15:30 EST, 01-03T21:30 CET) 27m""", + """2024-01-03T22:00:00Z Hourly atomic superBlitz(3+0) Conditions() None (01-03T17:00 EST, 01-03T23:00 CET) 57m""", """2024-01-03T23:00:00Z Daily atomic superBlitz(3+0) Conditions() None (01-03T18:00 EST, 01-04T00:00 CET) 60m""", - """2024-01-03T01:00:00Z Hourly horde blitz(5+0) Conditions() None (01-02T20:00 EST, 01-03T02:00 CET) 57m""", + """2024-01-03T00:00:00Z Hourly horde superBlitz(3+0) Conditions() None (01-02T19:00 EST, 01-03T01:00 CET) 57m""", """2024-01-03T02:00:00Z Daily horde superBlitz(3+0) Conditions() None (01-02T21:00 EST, 01-03T03:00 CET) 60m""", - """2024-01-03T04:00:00Z Hourly horde superBlitz(3+0) Conditions() None (01-02T23:00 EST, 01-03T05:00 CET) 57m""", - """2024-01-03T07:00:00Z Hourly horde superBlitz(3+0) Conditions() None (01-03T02:00 EST, 01-03T08:00 CET) 57m""", - """2024-01-03T10:00:00Z Hourly horde bullet(1+0) Conditions() None (01-03T05:00 EST, 01-03T11:00 CET) 27m""", - """2024-01-03T10:30:00Z Hourly horde bullet(1+0) Conditions() None (01-03T05:30 EST, 01-03T11:30 CET) 27m""", - """2024-01-03T13:00:00Z Hourly horde bullet(1+0) Conditions() None (01-03T08:00 EST, 01-03T14:00 CET) 27m""", - """2024-01-03T13:30:00Z Hourly horde bullet(1+0) Conditions() None (01-03T08:30 EST, 01-03T14:30 CET) 27m""", - """2024-01-03T16:00:00Z Hourly horde hippoBullet(2+0) Conditions() None (01-03T11:00 EST, 01-03T17:00 CET) 57m""", - """2024-01-03T19:00:00Z Hourly horde blitz(5+0) Conditions() None (01-03T14:00 EST, 01-03T20:00 CET) 57m""", - """2024-01-03T22:00:00Z Hourly horde blitz(5+0) Conditions() None (01-03T17:00 EST, 01-03T23:00 CET) 57m""", - """2024-01-03T02:00:00Z Hourly racingKings hippoBullet(2+0) Conditions() None (01-02T21:00 EST, 01-03T03:00 CET) 57m""", + """2024-01-03T04:00:00Z Hourly horde blitz(4+2) Conditions() None (01-02T23:00 EST, 01-03T05:00 CET) 57m""", + """2024-01-03T06:00:00Z Hourly horde superBlitz(3+0) Conditions() None (01-03T01:00 EST, 01-03T07:00 CET) 57m""", + """2024-01-03T08:00:00Z Hourly horde bullet(1+0) Conditions() None (01-03T03:00 EST, 01-03T09:00 CET) 27m""", + """2024-01-03T08:30:00Z Hourly horde bullet(1+0) Conditions() None (01-03T03:30 EST, 01-03T09:30 CET) 27m""", + """2024-01-03T10:00:00Z Hourly horde blitz(4+2) Conditions() None (01-03T05:00 EST, 01-03T11:00 CET) 57m""", + """2024-01-03T12:00:00Z Hourly horde superBlitz(3+0) Conditions() None (01-03T07:00 EST, 01-03T13:00 CET) 57m""", + """2024-01-03T14:00:00Z Hourly horde bullet(1+0) Conditions() None (01-03T09:00 EST, 01-03T15:00 CET) 27m""", + """2024-01-03T14:30:00Z Hourly horde bullet(1+0) Conditions() None (01-03T09:30 EST, 01-03T15:30 CET) 27m""", + """2024-01-03T16:00:00Z Hourly horde blitz(4+2) Conditions() None (01-03T11:00 EST, 01-03T17:00 CET) 57m""", + """2024-01-03T18:00:00Z Hourly horde superBlitz(3+0) Conditions() None (01-03T13:00 EST, 01-03T19:00 CET) 57m""", + """2024-01-03T20:00:00Z Hourly horde bullet(1+0) Conditions() None (01-03T15:00 EST, 01-03T21:00 CET) 27m""", + """2024-01-03T20:30:00Z Hourly horde bullet(1+0) Conditions() None (01-03T15:30 EST, 01-03T21:30 CET) 27m""", + """2024-01-03T22:00:00Z Hourly horde blitz(4+2) Conditions() None (01-03T17:00 EST, 01-03T23:00 CET) 57m""", + """2024-01-03T01:00:00Z Hourly racingKings blitz(4+2) Conditions() None (01-02T20:00 EST, 01-03T02:00 CET) 57m""", """2024-01-03T03:00:00Z Daily racingKings superBlitz(3+0) Conditions() None (01-02T22:00 EST, 01-03T04:00 CET) 60m""", - """2024-01-03T05:00:00Z Hourly racingKings blitz(5+0) Conditions() None (01-03T00:00 EST, 01-03T06:00 CET) 57m""", - """2024-01-03T08:00:00Z Hourly racingKings blitz(5+0) Conditions() None (01-03T03:00 EST, 01-03T09:00 CET) 57m""", - """2024-01-03T11:00:00Z Hourly racingKings superBlitz(3+0) Conditions() None (01-03T06:00 EST, 01-03T12:00 CET) 57m""", - """2024-01-03T14:00:00Z Hourly racingKings superBlitz(3+0) Conditions() None (01-03T09:00 EST, 01-03T15:00 CET) 57m""", + """2024-01-03T05:00:00Z Hourly racingKings bullet(1+0) Conditions() None (01-03T00:00 EST, 01-03T06:00 CET) 27m""", + """2024-01-03T05:30:00Z Hourly racingKings bullet(1+0) Conditions() None (01-03T00:30 EST, 01-03T06:30 CET) 27m""", + """2024-01-03T07:00:00Z Hourly racingKings blitz(4+2) Conditions() None (01-03T02:00 EST, 01-03T08:00 CET) 57m""", + """2024-01-03T09:00:00Z Hourly racingKings hippoBullet(2+1) Conditions() None (01-03T04:00 EST, 01-03T10:00 CET) 57m""", + """2024-01-03T11:00:00Z Hourly racingKings bullet(1+0) Conditions() None (01-03T06:00 EST, 01-03T12:00 CET) 27m""", + """2024-01-03T11:30:00Z Hourly racingKings bullet(1+0) Conditions() None (01-03T06:30 EST, 01-03T12:30 CET) 27m""", + """2024-01-03T13:00:00Z Hourly racingKings blitz(4+2) Conditions() None (01-03T08:00 EST, 01-03T14:00 CET) 57m""", + """2024-01-03T15:00:00Z Hourly racingKings hippoBullet(2+1) Conditions() None (01-03T10:00 EST, 01-03T16:00 CET) 57m""", """2024-01-03T17:00:00Z Hourly racingKings bullet(1+0) Conditions() None (01-03T12:00 EST, 01-03T18:00 CET) 27m""", """2024-01-03T17:30:00Z Hourly racingKings bullet(1+0) Conditions() None (01-03T12:30 EST, 01-03T18:30 CET) 27m""", - """2024-01-03T20:00:00Z Hourly racingKings bullet(1+0) Conditions() None (01-03T15:00 EST, 01-03T21:00 CET) 27m""", - """2024-01-03T20:30:00Z Hourly racingKings bullet(1+0) Conditions() None (01-03T15:30 EST, 01-03T21:30 CET) 27m""", - """2024-01-03T23:00:00Z Hourly racingKings hippoBullet(2+0) Conditions() None (01-03T18:00 EST, 01-04T00:00 CET) 57m""", - """2024-01-03T02:00:00Z Hourly crazyhouse superBlitz(3+1) Conditions() None (01-02T21:00 EST, 01-03T03:00 CET) 57m""", - """2024-01-03T05:00:00Z Hourly crazyhouse superBlitz(3+0) Conditions() None (01-03T00:00 EST, 01-03T06:00 CET) 57m""", - """2024-01-03T08:00:00Z Hourly crazyhouse bullet(1+0) Conditions() None (01-03T03:00 EST, 01-03T09:00 CET) 27m""", - """2024-01-03T08:30:00Z Hourly crazyhouse bullet(1+0) Conditions() None (01-03T03:30 EST, 01-03T09:30 CET) 27m""", - """2024-01-03T11:00:00Z Hourly crazyhouse bullet(1+0) Conditions() None (01-03T06:00 EST, 01-03T12:00 CET) 27m""", - """2024-01-03T11:30:00Z Hourly crazyhouse bullet(1+0) Conditions() None (01-03T06:30 EST, 01-03T12:30 CET) 27m""", - """2024-01-03T14:00:00Z Hourly crazyhouse hippoBullet(2+0) Conditions() None (01-03T09:00 EST, 01-03T15:00 CET) 57m""", - """2024-01-03T17:00:00Z Hourly crazyhouse blitz(5+0) Conditions() None (01-03T12:00 EST, 01-03T18:00 CET) 57m""", + """2024-01-03T19:00:00Z Hourly racingKings blitz(4+2) Conditions() None (01-03T14:00 EST, 01-03T20:00 CET) 57m""", + """2024-01-03T21:00:00Z Hourly racingKings hippoBullet(2+1) Conditions() None (01-03T16:00 EST, 01-03T22:00 CET) 57m""", + """2024-01-03T23:00:00Z Hourly racingKings bullet(1+0) Conditions() None (01-03T18:00 EST, 01-04T00:00 CET) 27m""", + """2024-01-03T23:30:00Z Hourly racingKings bullet(1+0) Conditions() None (01-03T18:30 EST, 01-04T00:30 CET) 27m""", + """2024-01-03T00:00:00Z Hourly crazyhouse superBlitz(3+0) Conditions() None (01-02T19:00 EST, 01-03T01:00 CET) 57m""", + """2024-01-03T01:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None (01-02T20:00 EST, 01-03T02:00 CET) 57m""", + """2024-01-03T03:00:00Z Hourly crazyhouse hippoBullet(2+1) Conditions() None (01-02T22:00 EST, 01-03T04:00 CET) 57m""", + """2024-01-03T04:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None (01-02T23:00 EST, 01-03T05:00 CET) 57m""", + """2024-01-03T06:00:00Z Hourly crazyhouse hippoBullet(2+1) Conditions() None (01-03T01:00 EST, 01-03T07:00 CET) 57m""", + """2024-01-03T07:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None (01-03T02:00 EST, 01-03T08:00 CET) 57m""", + """2024-01-03T09:00:00Z Hourly crazyhouse bullet(1+0) Conditions() None (01-03T04:00 EST, 01-03T10:00 CET) 27m""", + """2024-01-03T09:30:00Z Hourly crazyhouse bullet(1+0) Conditions() None (01-03T04:30 EST, 01-03T10:30 CET) 27m""", + """2024-01-03T10:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None (01-03T05:00 EST, 01-03T11:00 CET) 57m""", + """2024-01-03T12:00:00Z Hourly crazyhouse superBlitz(3+0) Conditions() None (01-03T07:00 EST, 01-03T13:00 CET) 57m""", + """2024-01-03T13:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None (01-03T08:00 EST, 01-03T14:00 CET) 57m""", + """2024-01-03T15:00:00Z Hourly crazyhouse hippoBullet(2+1) Conditions() None (01-03T10:00 EST, 01-03T16:00 CET) 57m""", + """2024-01-03T16:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None (01-03T11:00 EST, 01-03T17:00 CET) 57m""", + """2024-01-03T18:00:00Z Hourly crazyhouse hippoBullet(2+1) Conditions() None (01-03T13:00 EST, 01-03T19:00 CET) 57m""", + """2024-01-03T19:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None (01-03T14:00 EST, 01-03T20:00 CET) 57m""", """2024-01-03T20:00:00Z Daily crazyhouse blitz(5+0) Conditions() None (01-03T15:00 EST, 01-03T21:00 CET) 90m""", - """2024-01-03T23:00:00Z Hourly crazyhouse superBlitz(3+0) Conditions() None (01-03T18:00 EST, 01-04T00:00 CET) 57m""" + """2024-01-03T21:30:00Z Hourly crazyhouse bullet(1+0) Conditions() None (01-03T16:30 EST, 01-03T22:30 CET) 27m""", + """2024-01-03T22:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None (01-03T17:00 EST, 01-03T23:00 CET) 57m""" ).mkString("\n") ) test("end of year -- unfiltered and with conflicts"): // uncomment to print text for updating snapshot. - // _printSnapshot(schedulesAt(LocalDateTime.of(2022, 12, 31, 21, 43))) + // _printSnapshot(allSchedulesAt(LocalDateTime.of(2022, 12, 31, 21, 43))) assertEquals( allSchedulesAt(LocalDateTime.of(2022, 12, 31, 21, 43)).mkString("\n"), List( @@ -968,65 +1073,79 @@ class SchedulerTest extends munit.FunSuite: """2023-01-01T04:00:00Z Hourly standard rapid(10+0) Conditions(NbRatedGame(20),MaxRating(1500)) None""", """2023-01-01T05:00:00Z Hourly standard rapid(10+0) Conditions(NbRatedGame(20),MaxRating(1700)) None""", """2023-01-01T06:00:00Z Hourly standard rapid(10+0) Conditions(NbRatedGame(20),MaxRating(2000)) None""", - """2023-01-01T00:00:00Z Hourly chess960 hippoBullet(2+0) Conditions() None""", - """2023-01-01T03:00:00Z Hourly chess960 blitz(5+0) Conditions() None""", + """2022-12-31T22:00:00Z Hourly chess960 bullet(1+0) Conditions() None""", + """2022-12-31T22:30:00Z Hourly chess960 bullet(1+0) Conditions() None""", + """2022-12-31T23:00:00Z Hourly chess960 blitz(4+2) Conditions() None""", + """2023-01-01T01:00:00Z Hourly chess960 superBlitz(3+0) Conditions() None""", + """2023-01-01T02:00:00Z Hourly chess960 blitz(4+2) Conditions() None""", """2023-01-01T19:00:00Z Weekly chess960 blitz(5+0) Conditions() None""", """2023-01-01T21:00:00Z Daily chess960 blitz(5+0) Conditions() None""", """2023-01-11T17:00:00Z Yearly chess960 superBlitz(3+0) Conditions() None""", """2023-01-15T16:00:00Z Shield chess960 blitz(3+2) Conditions() None""", """2023-01-30T19:00:00Z Monthly chess960 blitz(5+0) Conditions() None""", """2022-12-31T22:00:00Z Daily kingOfTheHill superBlitz(3+0) Conditions() None""", - """2022-12-31T22:00:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None""", - """2022-12-31T22:30:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None""", - """2023-01-01T01:00:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None""", - """2023-01-01T01:30:00Z Hourly kingOfTheHill bullet(1+0) Conditions() None""", + """2022-12-31T22:00:00Z Hourly kingOfTheHill blitz(4+2) Conditions() None""", + """2023-01-01T00:00:00Z Hourly kingOfTheHill superBlitz(3+0) Conditions() None""", + """2023-01-01T01:00:00Z Hourly kingOfTheHill blitz(4+2) Conditions() None""", + """2023-01-01T03:00:00Z Hourly kingOfTheHill hippoBullet(2+1) Conditions() None""", """2023-01-04T19:00:00Z Weekly kingOfTheHill superBlitz(3+0) Conditions() None""", """2023-01-17T16:00:00Z Shield kingOfTheHill blitz(3+2) Conditions() None""", """2023-02-01T19:00:00Z Monthly kingOfTheHill superBlitz(3+0) Conditions() None""", """2023-03-17T17:00:00Z Yearly kingOfTheHill superBlitz(3+0) Conditions() None""", - """2023-01-01T00:00:00Z Hourly threeCheck superBlitz(3+0) Conditions() None""", + """2022-12-31T23:00:00Z Hourly threeCheck superBlitz(3+0) Conditions() None""", + """2023-01-01T00:00:00Z Hourly threeCheck blitz(4+2) Conditions() None""", """2023-01-01T01:00:00Z Daily threeCheck superBlitz(3+0) Conditions() None""", - """2023-01-01T03:00:00Z Hourly threeCheck bullet(1+0) Conditions() None""", - """2023-01-01T03:30:00Z Hourly threeCheck bullet(1+0) Conditions() None""", + """2023-01-01T02:00:00Z Hourly threeCheck hippoBullet(2+1) Conditions() None""", + """2023-01-01T03:00:00Z Hourly threeCheck blitz(4+2) Conditions() None""", """2023-01-01T19:00:00Z Monthly threeCheck superBlitz(3+0) Conditions() None""", """2023-01-02T19:00:00Z Weekly threeCheck superBlitz(3+0) Conditions() None""", """2023-01-22T16:00:00Z Shield threeCheck blitz(3+2) Conditions() None""", """2023-02-05T19:00:00Z Monthly threeCheck superBlitz(3+0) Conditions() None""", - """2022-12-31T23:00:00Z Hourly antichess bullet(1+0) Conditions() None""", - """2022-12-31T23:30:00Z Hourly antichess bullet(1+0) Conditions() None""", + """2022-12-31T23:00:00Z Hourly antichess hippoBullet(2+1) Conditions() None""", """2023-01-01T00:00:00Z Daily antichess superBlitz(3+0) Conditions() None""", - """2023-01-01T01:00:00Z Hourly antichess hippoBullet(2+0) Conditions() None""", - """2023-01-01T03:00:00Z Hourly antichess superBlitz(3+0) Conditions() None""", + """2023-01-01T00:00:00Z Hourly antichess bullet(1+0) Conditions() None""", + """2023-01-01T00:30:00Z Hourly antichess bullet(0+2) Conditions() None""", + """2023-01-01T02:00:00Z Hourly antichess blitz(4+2) Conditions() None""", + """2023-01-01T03:00:00Z Hourly antichess bullet(1+0) Conditions() None""", + """2023-01-01T03:30:00Z Hourly antichess bullet(0+2) Conditions() None""", """2023-01-06T19:00:00Z Weekly antichess superBlitz(3+0) Conditions() None""", """2023-01-19T16:00:00Z Shield antichess blitz(3+2) Conditions() None""", """2023-02-03T19:00:00Z Monthly antichess superBlitz(3+0) Conditions() None""", """2023-05-15T17:00:00Z Yearly antichess superBlitz(3+0) Conditions() None""", - """2022-12-31T22:00:00Z Hourly atomic hippoBullet(2+0) Conditions() None""", + """2022-12-31T22:00:00Z Hourly atomic superBlitz(3+0) Conditions() None""", """2022-12-31T23:00:00Z Daily atomic superBlitz(3+0) Conditions() None""", - """2023-01-01T00:00:00Z Hourly atomic blitz(5+0) Conditions() None""", + """2022-12-31T23:00:00Z Hourly atomic bullet(1+0) Conditions() None""", + """2022-12-31T23:30:00Z Hourly atomic bullet(0+2) Conditions() None""", + """2023-01-01T01:00:00Z Hourly atomic hippoBullet(2+1) Conditions() None""", """2023-01-01T02:00:00Z Hourly atomic bullet(1+0) Conditions() None""", - """2023-01-01T02:30:00Z Hourly atomic bullet(1+0) Conditions() None""", + """2023-01-01T02:30:00Z Hourly atomic bullet(0+2) Conditions() None""", """2023-01-07T19:00:00Z Weekly atomic superBlitz(3+0) Conditions() None""", """2023-01-20T16:00:00Z Shield atomic blitz(3+2) Conditions() None""", """2023-02-04T19:00:00Z Monthly atomic superBlitz(3+0) Conditions() None""", """2023-06-13T17:00:00Z Yearly atomic superBlitz(3+0) Conditions() None""", - """2022-12-31T22:00:00Z Hourly horde blitz(5+0) Conditions() None""", - """2023-01-01T01:00:00Z Hourly horde blitz(5+0) Conditions() None""", + """2022-12-31T22:00:00Z Hourly horde blitz(4+2) Conditions() None""", + """2023-01-01T00:00:00Z Hourly horde superBlitz(3+0) Conditions() None""", """2023-01-01T02:00:00Z Daily horde superBlitz(3+0) Conditions() None""", + """2023-01-01T02:00:00Z Hourly horde bullet(1+0) Conditions() None""", + """2023-01-01T02:30:00Z Hourly horde bullet(1+0) Conditions() None""", """2023-01-01T19:00:00Z Monthly horde superBlitz(3+0) Conditions() None""", """2023-01-01T19:00:00Z Weekly horde superBlitz(3+0) Conditions() None""", """2023-01-21T16:00:00Z Shield horde blitz(3+2) Conditions() None""", """2023-02-05T19:00:00Z Monthly horde superBlitz(3+0) Conditions() None""", """2023-07-12T17:00:00Z Yearly horde superBlitz(3+0) Conditions() None""", - """2022-12-31T23:00:00Z Hourly racingKings hippoBullet(2+0) Conditions() None""", - """2023-01-01T02:00:00Z Hourly racingKings hippoBullet(2+0) Conditions() None""", + """2022-12-31T23:00:00Z Hourly racingKings bullet(1+0) Conditions() None""", + """2022-12-31T23:30:00Z Hourly racingKings bullet(1+0) Conditions() None""", + """2023-01-01T01:00:00Z Hourly racingKings blitz(4+2) Conditions() None""", """2023-01-01T03:00:00Z Daily racingKings superBlitz(3+0) Conditions() None""", + """2023-01-01T03:00:00Z Hourly racingKings hippoBullet(2+1) Conditions() None""", """2023-01-05T19:00:00Z Weekly racingKings superBlitz(3+0) Conditions() None""", """2023-01-18T16:00:00Z Shield racingKings blitz(3+2) Conditions() None""", """2023-02-02T19:00:00Z Monthly racingKings superBlitz(3+0) Conditions() None""", """2023-04-15T17:00:00Z Yearly racingKings superBlitz(3+0) Conditions() None""", - """2022-12-31T23:00:00Z Hourly crazyhouse superBlitz(3+0) Conditions() None""", - """2023-01-01T02:00:00Z Hourly crazyhouse superBlitz(3+1) Conditions() None""", + """2022-12-31T22:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None""", + """2023-01-01T00:00:00Z Hourly crazyhouse superBlitz(3+0) Conditions() None""", + """2023-01-01T01:00:00Z Hourly crazyhouse blitz(4+2) Conditions() None""", + """2023-01-01T03:00:00Z Hourly crazyhouse hippoBullet(2+1) Conditions() None""", """2023-01-01T20:00:00Z Daily crazyhouse blitz(5+0) Conditions() None""", """2023-01-03T19:00:00Z Weekly crazyhouse blitz(5+0) Conditions() None""", """2023-01-16T16:00:00Z Shield crazyhouse blitz(3+2) Conditions() None""",