From 61d3cccdbd001b3957acb639435022d312f921e8 Mon Sep 17 00:00:00 2001 From: Florian De Rop <55103921+fderop@users.noreply.github.com> Date: Fri, 2 Oct 2026 09:34:06 -0700 Subject: [PATCH] Reduce repeated spatial grid cell calculations --- Source/System/SpatialPartitionGrid.cpp | 26 +- .../PerformanceStress.rte/Activities.ini | 10 + .../PerformanceStress.rte/Index.ini | 4 + .../PerformanceStress.rte/Stress.lua | 35 + Tools/Benchmarks/SpatialGrid-game-results.csv | 2881 +++++++++++++++++ .../Benchmarks/SpatialGrid-game-summary.json | 147 + Tools/Benchmarks/SpatialGrid-results.json | 756 +++++ Tools/Benchmarks/SpatialGrid.cpp | 181 ++ Tools/Benchmarks/SpatialGrid.md | 128 + Tools/Benchmarks/SpatialGrid.py | 66 + Tools/Benchmarks/SpatialGridGame.py | 121 + 11 files changed, 4343 insertions(+), 12 deletions(-) create mode 100644 Tools/Benchmarks/PerformanceStress.rte/Activities.ini create mode 100644 Tools/Benchmarks/PerformanceStress.rte/Index.ini create mode 100644 Tools/Benchmarks/PerformanceStress.rte/Stress.lua create mode 100644 Tools/Benchmarks/SpatialGrid-game-results.csv create mode 100644 Tools/Benchmarks/SpatialGrid-game-summary.json create mode 100644 Tools/Benchmarks/SpatialGrid-results.json create mode 100644 Tools/Benchmarks/SpatialGrid.cpp create mode 100644 Tools/Benchmarks/SpatialGrid.md create mode 100644 Tools/Benchmarks/SpatialGrid.py create mode 100644 Tools/Benchmarks/SpatialGridGame.py diff --git a/Source/System/SpatialPartitionGrid.cpp b/Source/System/SpatialPartitionGrid.cpp index 01099f5bb2..e6b0e7c869 100644 --- a/Source/System/SpatialPartitionGrid.cpp +++ b/Source/System/SpatialPartitionGrid.cpp @@ -67,28 +67,27 @@ void SpatialPartitionGrid::Add(const IntRect& rect, const MovableObject& mo) { // We handle wrapping in GetCellIdForCellCoords, so make sure we've not already been passed wrapped data... RTEAssert(topLeftCellX <= bottomRightCellX && topLeftCellY <= bottomRightCellY, "Invalidly wrapped rect passed to spatial partitioning grid!"); + std::array includedTeams; for (int team = Activity::NoTeam; team < Activity::MaxTeamCount; ++team) { bool teamActive = team == Activity::NoTeam || activity->TeamActive(team); bool ignoresThisTeam = team != Activity::NoTeam && rootParentMo.IgnoresTeamHits() && team == rootParentMo.GetTeam(); - if (!teamActive || ignoresThisTeam) { - continue; - } + includedTeams[team + 1] = teamActive && !ignoresThisTeam; + } - for (int x = topLeftCellX; x <= bottomRightCellX; x++) { - for (int y = topLeftCellY; y <= bottomRightCellY; y++) { - int cellId = GetCellIdForCellCoords(x, y); + for (int x = topLeftCellX; x <= bottomRightCellX; x++) { + for (int y = topLeftCellY; y <= bottomRightCellY; y++) { + int cellId = GetCellIdForCellCoords(x, y); + for (int team = Activity::NoTeam; team < Activity::MaxTeamCount; ++team) { + if (!includedTeams[team + 1]) { + continue; + } m_Cells[team + 1][cellId].push_back(mo.GetID()); if (mo.GetsHitByMOs()) { m_PhysicsCells[team + 1][cellId].push_back(mo.GetID()); } } - } - } - - for (int x = topLeftCellX; x <= bottomRightCellX; x++) { - for (int y = topLeftCellY; y <= bottomRightCellY; y++) { - m_UsedCellIds.insert(GetCellIdForCellCoords(x, y)); + m_UsedCellIds.insert(cellId); } } } @@ -204,6 +203,9 @@ std::vector SpatialPartitionGrid::GetMOsAtPosition(int x, int y, int SpatialPartitionGrid::GetCellIdForCellCoords(int cellX, int cellY) const { // We act like we wrap, even if the Scene doesn't. The only cost is some duplicate collision checks, but that's a minor cost to pay :) + if (cellX >= 0 && cellX < m_Width && cellY >= 0 && cellY < m_Height) { + return (cellY * m_Width) + cellX; + } int wrappedX = cellX % m_Width; if (wrappedX < 0) { wrappedX += m_Width; diff --git a/Tools/Benchmarks/PerformanceStress.rte/Activities.ini b/Tools/Benchmarks/PerformanceStress.rte/Activities.ini new file mode 100644 index 0000000000..cff322fa4d --- /dev/null +++ b/Tools/Benchmarks/PerformanceStress.rte/Activities.ini @@ -0,0 +1,10 @@ +AddActivity = GAScripted + PresetName = Debris Performance Stress + Description = Fixed debris waves for local performance measurements. + TeamOfPlayer1 = 0 + MinTeamsRequired = 1 + SceneName = Grasslands + ScriptPath = PerformanceStress.rte/Stress.lua + LuaClassName = PerformanceStress + DefaultFogOfWar = 0 + DefaultDeployUnits = 0 diff --git a/Tools/Benchmarks/PerformanceStress.rte/Index.ini b/Tools/Benchmarks/PerformanceStress.rte/Index.ini new file mode 100644 index 0000000000..559f7e0fe2 --- /dev/null +++ b/Tools/Benchmarks/PerformanceStress.rte/Index.ini @@ -0,0 +1,4 @@ +DataModule + SupportedGameVersion = 7.0.0 + ModuleName = Performance Stress + IncludeFile = PerformanceStress.rte/Activities.ini diff --git a/Tools/Benchmarks/PerformanceStress.rte/Stress.lua b/Tools/Benchmarks/PerformanceStress.rte/Stress.lua new file mode 100644 index 0000000000..be45eb81c2 --- /dev/null +++ b/Tools/Benchmarks/PerformanceStress.rte/Stress.lua @@ -0,0 +1,35 @@ +function PerformanceStress:StartActivity() + self.ActivityState = Activity.RUNNING + self.ticks = 0 + self.timer = Timer() + self.center = SceneMan:MovePointToGround(Vector(SceneMan.SceneWidth / 2, 0), 0, 3) + self.center.Y = self.center.Y - 100 + PerformanceMan.ShowPerformanceStats = true + print("PERF_START debris_waves") +end + +function PerformanceStress:UpdateActivity() + self.ticks = self.ticks + 1 + CameraMan:SetScrollTarget(self.center, 1, 0) + if self.ticks % 60 == 1 and self.ticks <= 541 then + for i = 1, 400 do + local gib = CreateMOSRotating("Gib Metal Grey Small A", "Base.rte") + gib.Pos = self.center + Vector((i * 17) % 120 - 60, (i * 23) % 80 - 40) + gib.Vel = Vector((i * 7) % 30 - 15, -((i * 11) % 20)) + gib.AngularVel = (i % 20) - 10 + gib.HFlipped = i % 2 == 0 + gib.Lifetime = 3000 + gib.GetsHitByMOs = true + MovableMan:AddParticle(gib) + end + local grenade = CreateTDExplosive("Frag Grenade", "Base.rte") + grenade.Pos = self.center + grenade:GibThis() + end + if self.ticks % 60 == 0 then + print("PERF_SAMPLE ticks=" .. self.ticks .. " real_ms=" .. self.timer.ElapsedRealTimeMS .. " particles=" .. MovableMan:GetParticleCount()) + end + if self.ticks == 600 then + print("PERF_DONE real_ms=" .. self.timer.ElapsedRealTimeMS) + end +end diff --git a/Tools/Benchmarks/SpatialGrid-game-results.csv b/Tools/Benchmarks/SpatialGrid-game-results.csv new file mode 100644 index 0000000000..5c0af5261e --- /dev/null +++ b/Tools/Benchmarks/SpatialGrid-game-results.csv @@ -0,0 +1,2881 @@ +scenario,run,variant,tick,sim_us,movable_us,particles,travel_us,color_us,clear_us,gridwait_us +collidable,1,baseline,0,27141,1266,2108,1,667,177,0 +collidable,1,baseline,1,123845,123798,2084,122590,473,6,0 +collidable,1,baseline,2,99244,99191,1849,97960,457,5,0 +collidable,1,baseline,3,75990,75934,1463,74593,417,6,0 +collidable,1,baseline,4,48434,48377,1116,47304,368,5,1 +collidable,1,baseline,5,32065,32017,892,31088,297,8,0 +collidable,1,baseline,6,21333,21288,717,20599,237,4,0 +collidable,1,baseline,7,14346,14293,624,13739,182,4,0 +collidable,1,baseline,8,9751,9702,487,9189,177,3,0 +collidable,1,baseline,9,6241,6161,388,5712,146,4,0 +collidable,1,baseline,10,4190,4064,359,3736,124,5,1 +collidable,1,baseline,11,3088,3021,405,2703,119,8,0 +collidable,1,baseline,12,2369,2315,452,2046,109,5,1 +collidable,1,baseline,13,1945,1890,472,1603,104,4,0 +collidable,1,baseline,14,1759,1715,517,1468,93,4,0 +collidable,1,baseline,15,1720,1626,524,1384,103,4,0 +collidable,1,baseline,16,1574,1530,534,1318,88,4,0 +collidable,1,baseline,17,1596,1488,549,1258,86,4,0 +collidable,1,baseline,18,1517,1424,558,1194,81,5,0 +collidable,1,baseline,19,1493,1448,608,1215,73,4,0 +collidable,1,baseline,20,1451,1405,615,1190,78,5,0 +collidable,1,baseline,21,1408,1363,599,1110,78,10,0 +collidable,1,baseline,22,1438,1388,591,1174,82,4,0 +collidable,1,baseline,23,1430,1381,581,1098,82,7,1 +collidable,1,baseline,24,1385,1249,572,1008,71,10,1 +collidable,1,baseline,25,1291,1211,561,985,72,12,0 +collidable,1,baseline,26,1326,1281,594,1061,67,3,0 +collidable,1,baseline,27,1263,1209,584,991,70,5,0 +collidable,1,baseline,28,1257,1209,574,927,72,10,0 +collidable,1,baseline,29,1213,1171,565,926,63,4,1 +collidable,1,baseline,30,1168,1121,555,948,64,4,0 +collidable,1,baseline,31,1253,1135,550,843,79,12,0 +collidable,1,baseline,32,1150,1075,536,846,63,5,0 +collidable,1,baseline,33,1085,1038,527,846,71,4,0 +collidable,1,baseline,34,1127,1065,515,841,66,12,1 +collidable,1,baseline,35,1062,1019,506,836,66,4,0 +collidable,1,baseline,36,1142,1094,526,882,67,4,0 +collidable,1,baseline,37,1173,1060,533,822,65,12,0 +collidable,1,baseline,38,1097,1041,526,818,60,4,0 +collidable,1,baseline,39,1064,1014,514,806,55,4,0 +collidable,1,baseline,40,1055,974,524,794,68,4,1 +collidable,1,baseline,41,1036,947,495,751,58,5,1 +collidable,1,baseline,42,1050,995,465,760,66,5,0 +collidable,1,baseline,43,1043,962,450,767,59,10,2 +collidable,1,baseline,44,1063,915,429,739,55,16,0 +collidable,1,baseline,45,958,880,415,699,66,6,0 +collidable,1,baseline,46,994,944,397,727,63,14,0 +collidable,1,baseline,47,950,904,386,711,60,3,1 +collidable,1,baseline,48,958,907,370,729,59,4,0 +collidable,1,baseline,49,941,894,352,711,54,6,0 +collidable,1,baseline,50,989,832,344,666,54,5,0 +collidable,1,baseline,51,945,868,336,651,57,4,0 +collidable,1,baseline,52,896,848,331,675,57,3,0 +collidable,1,baseline,53,898,844,320,654,56,4,1 +collidable,1,baseline,54,929,853,310,605,48,6,1 +collidable,1,baseline,55,827,776,309,623,48,3,0 +collidable,1,baseline,56,815,768,292,605,48,4,0 +collidable,1,baseline,57,940,711,286,554,49,4,0 +collidable,1,baseline,58,824,742,281,574,52,9,0 +collidable,1,baseline,59,856,753,268,593,48,4,0 +collidable,1,baseline,60,26928,1331,2377,515,675,4,1 +collidable,1,baseline,61,129835,129776,2351,128362,586,4,0 +collidable,1,baseline,62,101510,101427,2120,100061,561,4,0 +collidable,1,baseline,63,78451,78385,1713,76933,478,4,0 +collidable,1,baseline,64,53293,53235,1362,51913,456,7,1 +collidable,1,baseline,65,36600,36495,1123,35511,330,9,0 +collidable,1,baseline,66,20648,20597,880,19759,237,6,0 +collidable,1,baseline,67,13007,12950,755,12356,206,6,0 +collidable,1,baseline,68,8756,8712,640,8192,184,5,0 +collidable,1,baseline,69,5836,5756,611,5331,152,7,0 +collidable,1,baseline,70,4777,4219,576,3841,155,5,0 +collidable,1,baseline,71,2976,2917,566,2582,140,5,0 +collidable,1,baseline,72,2601,2529,585,2241,134,4,0 +collidable,1,baseline,73,2299,2249,593,1889,144,10,0 +collidable,1,baseline,74,2158,2100,591,1819,123,5,0 +collidable,1,baseline,75,2132,2084,589,1792,141,7,1 +collidable,1,baseline,76,2217,2105,574,1766,131,9,0 +collidable,1,baseline,77,2073,2029,563,1707,131,5,0 +collidable,1,baseline,78,1920,1874,552,1607,128,4,1 +collidable,1,baseline,79,1874,1828,545,1574,111,5,1 +collidable,1,baseline,80,1955,1890,551,1600,137,12,0 +collidable,1,baseline,81,1822,1770,548,1503,117,4,0 +collidable,1,baseline,82,1717,1670,539,1431,112,4,0 +collidable,1,baseline,83,2011,1850,528,1510,115,12,0 +collidable,1,baseline,84,1642,1595,524,1360,107,4,1 +collidable,1,baseline,85,1540,1495,519,1240,112,4,0 +collidable,1,baseline,86,1636,1583,512,1297,108,11,0 +collidable,1,baseline,87,1510,1464,497,1219,100,4,0 +collidable,1,baseline,88,1491,1412,523,1164,113,4,1 +collidable,1,baseline,89,1404,1341,519,1098,90,11,0 +collidable,1,baseline,90,1522,1377,511,1143,95,4,0 +collidable,1,baseline,91,1455,1409,505,1138,105,3,1 +collidable,1,baseline,92,1454,1411,496,1113,97,3,0 +collidable,1,baseline,93,1399,1356,488,1116,101,3,0 +collidable,1,baseline,94,1366,1269,479,1053,88,5,1 +collidable,1,baseline,95,1341,1296,469,1053,91,4,0 +collidable,1,baseline,96,1338,1291,450,1059,91,5,0 +collidable,1,baseline,97,1425,1336,441,1045,99,3,1 +collidable,1,baseline,98,1278,1227,424,997,94,4,0 +collidable,1,baseline,99,1247,1202,417,986,86,5,1 +collidable,1,baseline,100,1307,1238,407,1001,92,10,0 +collidable,1,baseline,101,1268,1225,396,967,92,4,0 +collidable,1,baseline,102,1250,1211,370,962,85,3,0 +collidable,1,baseline,103,1239,1196,353,962,80,4,1 +collidable,1,baseline,104,1309,1110,345,892,75,4,0 +collidable,1,baseline,105,1178,1131,335,916,91,4,0 +collidable,1,baseline,106,1218,1173,326,920,90,4,0 +collidable,1,baseline,107,1182,1131,322,939,83,4,0 +collidable,1,baseline,108,1191,1144,312,899,78,3,0 +collidable,1,baseline,109,1132,1086,318,894,67,3,1 +collidable,1,baseline,110,1211,1039,323,831,86,3,0 +collidable,1,baseline,111,1147,1087,336,871,82,9,0 +collidable,1,baseline,112,1076,1033,332,827,74,3,0 +collidable,1,baseline,113,1083,1036,318,809,79,3,1 +collidable,1,baseline,114,1021,979,311,778,69,3,0 +collidable,1,baseline,115,1065,974,311,738,76,7,1 +collidable,1,baseline,116,1033,989,299,794,73,3,0 +collidable,1,baseline,117,1078,945,296,760,74,8,0 +collidable,1,baseline,118,1046,994,285,756,76,23,1 +collidable,1,baseline,119,1114,1019,280,771,64,11,0 +collidable,1,baseline,120,25916,1500,2386,670,680,4,0 +collidable,1,baseline,121,120047,119988,2359,118683,548,4,0 +collidable,1,baseline,122,92253,92130,2138,90801,550,4,1 +collidable,1,baseline,123,77316,77263,1693,75778,459,4,1 +collidable,1,baseline,124,47059,46964,1421,45723,463,16,0 +collidable,1,baseline,125,35330,35267,1191,34258,368,11,0 +collidable,1,baseline,126,22062,22026,967,21159,265,9,0 +collidable,1,baseline,127,14737,14635,900,13973,222,11,1 +collidable,1,baseline,128,10537,10487,750,9859,196,3,0 +collidable,1,baseline,129,6395,6343,658,5862,169,16,0 +collidable,1,baseline,130,4549,4462,619,4037,181,8,0 +collidable,1,baseline,131,3407,3361,596,2909,161,4,0 +collidable,1,baseline,132,2783,2748,584,2415,151,10,0 +collidable,1,baseline,133,2412,2351,606,2022,150,3,0 +collidable,1,baseline,134,2430,2246,648,1940,138,4,0 +collidable,1,baseline,135,2445,2395,644,1979,158,3,0 +collidable,1,baseline,136,2485,2408,633,1947,158,6,1 +collidable,1,baseline,137,2296,2209,626,1828,155,5,0 +collidable,1,baseline,138,2177,2124,620,1828,143,5,0 +collidable,1,baseline,139,1962,1903,609,1599,133,5,0 +collidable,1,baseline,140,1945,1789,593,1462,155,4,0 +collidable,1,baseline,141,1910,1861,585,1529,129,4,0 +collidable,1,baseline,142,1875,1829,574,1525,127,3,1 +collidable,1,baseline,143,2193,1707,564,1419,134,3,0 +collidable,1,baseline,144,1791,1702,553,1433,112,8,1 +collidable,1,baseline,145,1852,1769,551,1475,127,3,0 +collidable,1,baseline,146,1724,1671,538,1418,119,4,0 +collidable,1,baseline,147,1800,1625,528,1318,117,4,1 +collidable,1,baseline,148,1763,1705,526,1323,130,12,0 +collidable,1,baseline,149,1641,1561,561,1299,101,4,0 +collidable,1,baseline,150,1748,1698,567,1425,131,4,0 +collidable,1,baseline,151,1649,1607,559,1354,116,3,0 +collidable,1,baseline,152,1601,1553,549,1289,109,4,0 +collidable,1,baseline,153,1672,1548,579,1257,119,10,0 +collidable,1,baseline,154,1526,1452,572,1193,100,4,2 +collidable,1,baseline,155,1572,1522,560,1216,120,4,0 +collidable,1,baseline,156,1513,1467,547,1185,112,3,1 +collidable,1,baseline,157,1505,1455,529,1191,106,4,0 +collidable,1,baseline,158,1458,1408,520,1162,107,4,1 +collidable,1,baseline,159,1532,1378,531,1161,98,4,0 +collidable,1,baseline,160,1568,1521,517,1172,120,3,0 +collidable,1,baseline,161,1386,1342,509,1113,101,4,0 +collidable,1,baseline,162,1425,1381,505,1152,100,4,0 +collidable,1,baseline,163,1422,1374,499,1123,110,4,0 +collidable,1,baseline,164,1410,1360,485,1098,94,9,0 +collidable,1,baseline,165,1393,1340,478,1092,106,4,0 +collidable,1,baseline,166,1420,1332,473,1077,107,9,0 +collidable,1,baseline,167,1360,1320,471,1078,104,3,0 +collidable,1,baseline,168,1376,1327,471,1093,97,3,0 +collidable,1,baseline,169,1348,1300,465,1069,87,4,0 +collidable,1,baseline,170,1325,1276,460,1017,104,4,0 +collidable,1,baseline,171,1356,1307,448,1052,103,4,1 +collidable,1,baseline,172,1297,1201,433,988,97,5,2 +collidable,1,baseline,173,1376,1219,428,991,100,11,1 +collidable,1,baseline,174,1293,1246,420,1014,85,4,0 +collidable,1,baseline,175,1301,1195,407,944,105,4,0 +collidable,1,baseline,176,1279,1191,394,955,90,3,1 +collidable,1,baseline,177,1238,1188,382,923,86,3,0 +collidable,1,baseline,178,1200,1141,377,872,85,4,0 +collidable,1,baseline,179,1210,1107,361,900,81,6,0 +collidable,1,baseline,180,26434,1670,2428,820,641,4,1 +collidable,1,baseline,181,121537,121473,2390,120147,541,4,0 +collidable,1,baseline,182,91040,90945,2147,89591,534,3,1 +collidable,1,baseline,183,73699,73636,1767,72185,506,6,0 +collidable,1,baseline,184,53005,52898,1462,51618,476,4,1 +collidable,1,baseline,185,34247,34191,1188,33156,345,5,0 +collidable,1,baseline,186,24090,24038,987,23187,270,3,0 +collidable,1,baseline,187,16858,16765,818,16073,232,3,0 +collidable,1,baseline,188,10247,10210,656,9650,184,4,0 +collidable,1,baseline,189,6299,6255,551,5733,181,3,0 +collidable,1,baseline,190,5081,5039,537,4604,182,4,0 +collidable,1,baseline,191,3476,3431,506,3072,162,10,0 +collidable,1,baseline,192,3037,2977,505,2657,149,3,0 +collidable,1,baseline,193,2740,2540,488,2210,140,4,0 +collidable,1,baseline,194,2314,2274,486,1995,130,4,0 +collidable,1,baseline,195,2236,2175,488,1890,149,4,0 +collidable,1,baseline,196,2066,2020,481,1753,133,4,0 +collidable,1,baseline,197,2065,1971,484,1651,132,3,1 +collidable,1,baseline,198,2094,2052,483,1693,139,3,0 +collidable,1,baseline,199,1968,1881,473,1611,134,5,0 +collidable,1,baseline,200,2086,1886,502,1597,132,4,1 +collidable,1,baseline,201,1904,1814,500,1516,133,3,0 +collidable,1,baseline,202,1816,1740,493,1468,121,3,0 +collidable,1,baseline,203,1839,1755,492,1462,135,4,0 +collidable,1,baseline,204,1801,1758,506,1508,115,3,0 +collidable,1,baseline,205,1745,1700,493,1429,135,4,0 +collidable,1,baseline,206,2142,1955,482,1599,146,3,1 +collidable,1,baseline,207,1789,1712,477,1438,117,11,0 +collidable,1,baseline,208,1659,1614,465,1337,119,4,1 +collidable,1,baseline,209,1675,1583,461,1303,107,4,0 +collidable,1,baseline,210,1701,1609,457,1287,125,11,2 +collidable,1,baseline,211,1611,1564,440,1310,114,4,0 +collidable,1,baseline,212,1576,1500,435,1247,106,6,0 +collidable,1,baseline,213,1606,1477,433,1227,116,4,0 +collidable,1,baseline,214,1524,1475,435,1257,101,4,1 +collidable,1,baseline,215,1555,1461,430,1186,114,7,1 +collidable,1,baseline,216,1881,1419,422,1174,107,4,0 +collidable,1,baseline,217,1461,1418,440,1190,102,4,1 +collidable,1,baseline,218,1586,1533,438,1236,113,3,0 +collidable,1,baseline,219,1492,1397,433,1146,97,4,2 +collidable,1,baseline,220,1561,1464,419,1206,103,5,0 +collidable,1,baseline,221,1420,1373,416,1117,115,4,0 +collidable,1,baseline,222,1488,1446,414,1168,104,3,0 +collidable,1,baseline,223,1481,1436,440,1187,100,4,0 +collidable,1,baseline,224,1486,1397,451,1119,93,4,0 +collidable,1,baseline,225,1468,1414,443,1144,99,4,0 +collidable,1,baseline,226,1473,1290,438,1056,96,4,0 +collidable,1,baseline,227,1328,1279,432,1068,99,4,0 +collidable,1,baseline,228,1382,1335,427,1101,95,4,0 +collidable,1,baseline,229,1350,1302,421,1058,94,4,0 +collidable,1,baseline,230,1390,1336,411,1080,100,4,0 +collidable,1,baseline,231,1372,1321,407,1076,105,4,0 +collidable,1,baseline,232,1259,1211,401,994,92,4,1 +collidable,1,baseline,233,1337,1168,391,944,95,4,0 +collidable,1,baseline,234,1273,1229,386,1006,93,4,0 +collidable,1,baseline,235,1322,1269,377,994,99,5,0 +collidable,1,baseline,236,1283,1217,366,966,90,4,0 +collidable,1,baseline,237,1230,1183,364,963,89,4,0 +collidable,1,baseline,238,1243,1165,367,941,93,5,0 +collidable,1,baseline,239,1395,1147,362,930,78,4,0 +collidable,2,baseline,0,28985,1059,2108,0,604,181,0 +collidable,2,baseline,1,127526,127475,2084,126243,470,3,0 +collidable,2,baseline,2,100083,100031,1849,98829,463,4,0 +collidable,2,baseline,3,77514,77442,1463,76141,408,6,0 +collidable,2,baseline,4,50437,50384,1116,49294,347,4,0 +collidable,2,baseline,5,33423,33374,892,32482,291,6,1 +collidable,2,baseline,6,22084,22025,717,21332,221,6,0 +collidable,2,baseline,7,15049,14995,624,14391,186,3,0 +collidable,2,baseline,8,10149,10110,487,9649,152,3,0 +collidable,2,baseline,9,6104,6023,388,5585,134,4,0 +collidable,2,baseline,10,4384,4274,359,3959,126,4,1 +collidable,2,baseline,11,3258,3189,405,2869,103,10,0 +collidable,2,baseline,12,2493,2441,452,2175,94,4,0 +collidable,2,baseline,13,2062,1990,472,1664,97,4,1 +collidable,2,baseline,14,1887,1839,517,1586,96,9,0 +collidable,2,baseline,15,1814,1733,524,1473,90,4,0 +collidable,2,baseline,16,1625,1567,534,1357,85,8,0 +collidable,2,baseline,17,1711,1583,549,1311,93,3,0 +collidable,2,baseline,18,1555,1502,558,1297,80,5,0 +collidable,2,baseline,19,1547,1504,608,1287,73,5,0 +collidable,2,baseline,20,1611,1555,615,1260,94,5,0 +collidable,2,baseline,21,1461,1412,599,1175,81,11,0 +collidable,2,baseline,22,1485,1437,591,1175,81,4,0 +collidable,2,baseline,23,1422,1303,581,1054,78,4,0 +collidable,2,baseline,24,1368,1318,572,1056,73,4,1 +collidable,2,baseline,25,1379,1295,561,1063,75,5,0 +collidable,2,baseline,26,1429,1314,594,1043,85,4,1 +collidable,2,baseline,27,1280,1225,584,969,75,16,0 +collidable,2,baseline,28,1205,1144,574,936,73,11,0 +collidable,2,baseline,29,1187,1139,565,930,70,12,0 +collidable,2,baseline,30,1352,1193,555,895,77,4,0 +collidable,2,baseline,31,1215,1166,550,927,69,4,0 +collidable,2,baseline,32,1165,1088,536,874,64,4,1 +collidable,2,baseline,33,1134,1087,527,856,65,5,0 +collidable,2,baseline,34,1210,1153,515,917,67,6,0 +collidable,2,baseline,35,1128,1074,506,887,64,4,0 +collidable,2,baseline,36,1243,1092,526,888,60,8,1 +collidable,2,baseline,37,1134,1090,533,886,60,5,0 +collidable,2,baseline,38,1073,1025,526,818,64,4,0 +collidable,2,baseline,39,1065,1020,514,799,60,6,0 +collidable,2,baseline,40,1076,1028,524,831,64,5,1 +collidable,2,baseline,41,1057,1009,495,789,64,5,0 +collidable,2,baseline,42,1138,965,465,723,63,5,0 +collidable,2,baseline,43,1047,991,450,778,65,4,1 +collidable,2,baseline,44,989,946,429,743,57,4,0 +collidable,2,baseline,45,1025,978,415,780,64,5,0 +collidable,2,baseline,46,984,908,397,712,63,4,0 +collidable,2,baseline,47,966,923,386,723,60,5,0 +collidable,2,baseline,48,1064,918,370,670,63,4,0 +collidable,2,baseline,49,1146,1094,352,706,68,5,0 +collidable,2,baseline,50,955,862,344,669,57,6,0 +collidable,2,baseline,51,921,877,336,692,58,4,0 +collidable,2,baseline,52,912,866,331,688,54,4,0 +collidable,2,baseline,53,911,819,320,634,49,6,1 +collidable,2,baseline,54,888,839,310,644,50,4,0 +collidable,2,baseline,55,1040,792,309,584,48,4,1 +collidable,2,baseline,56,846,796,292,598,48,5,0 +collidable,2,baseline,57,916,870,286,624,50,12,0 +collidable,2,baseline,58,854,798,281,605,53,5,1 +collidable,2,baseline,59,950,843,268,581,48,7,0 +collidable,2,baseline,60,28009,1384,2377,537,698,4,0 +collidable,2,baseline,61,129691,129573,2351,128092,560,4,0 +collidable,2,baseline,62,101343,101241,2120,99861,538,4,0 +collidable,2,baseline,63,76312,76260,1713,74808,479,4,0 +collidable,2,baseline,64,52310,52264,1362,50954,434,7,0 +collidable,2,baseline,65,36296,36175,1123,35176,323,7,1 +collidable,2,baseline,66,20105,20053,880,19206,240,7,0 +collidable,2,baseline,67,12740,12686,755,12087,203,10,0 +collidable,2,baseline,68,8435,8367,640,7778,202,8,0 +collidable,2,baseline,69,5925,5878,611,5375,156,6,0 +collidable,2,baseline,70,4467,4298,576,3874,157,3,0 +collidable,2,baseline,71,2980,2924,566,2579,132,13,0 +collidable,2,baseline,72,2646,2595,585,2287,135,4,0 +collidable,2,baseline,73,2353,2292,593,2002,129,5,0 +collidable,2,baseline,74,2219,2127,591,1839,131,9,0 +collidable,2,baseline,75,2232,2135,589,1837,135,6,1 +collidable,2,baseline,76,2121,2037,574,1722,126,5,0 +collidable,2,baseline,77,2123,2012,563,1728,123,7,0 +collidable,2,baseline,78,1896,1848,552,1554,127,7,1 +collidable,2,baseline,79,1894,1850,545,1538,116,6,0 +collidable,2,baseline,80,1916,1864,551,1523,138,3,0 +collidable,2,baseline,81,1906,1859,548,1500,120,12,0 +collidable,2,baseline,82,1713,1667,539,1400,112,4,0 +collidable,2,baseline,83,1779,1669,528,1387,110,7,0 +collidable,2,baseline,84,1651,1603,524,1354,113,4,0 +collidable,2,baseline,85,1642,1591,519,1304,116,10,1 +collidable,2,baseline,86,1673,1581,512,1270,111,6,0 +collidable,2,baseline,87,1541,1471,497,1214,101,4,1 +collidable,2,baseline,88,1509,1461,523,1225,105,4,0 +collidable,2,baseline,89,1528,1351,519,1125,97,4,0 +collidable,2,baseline,90,1521,1474,511,1203,106,3,0 +collidable,2,baseline,91,1463,1411,505,1181,103,4,1 +collidable,2,baseline,92,1471,1426,496,1197,100,5,0 +collidable,2,baseline,93,1439,1392,488,1162,97,4,0 +collidable,2,baseline,94,1397,1354,479,1091,90,4,0 +collidable,2,baseline,95,1448,1357,469,1105,100,18,1 +collidable,2,baseline,96,1347,1296,450,1067,98,4,1 +collidable,2,baseline,97,1344,1294,441,1035,94,4,0 +collidable,2,baseline,98,1309,1260,424,1025,91,3,0 +collidable,2,baseline,99,1275,1231,417,1019,85,4,0 +collidable,2,baseline,100,1432,1358,407,1029,97,3,0 +collidable,2,baseline,101,1290,1242,396,1004,87,5,0 +collidable,2,baseline,102,1351,1185,370,943,89,3,0 +collidable,2,baseline,103,1261,1196,353,944,85,14,0 +collidable,2,baseline,104,1241,1193,345,974,77,9,0 +collidable,2,baseline,105,1198,1138,335,902,93,4,0 +collidable,2,baseline,106,1226,1149,326,914,88,6,1 +collidable,2,baseline,107,1212,1165,322,931,82,13,1 +collidable,2,baseline,108,1233,1142,312,913,79,13,1 +collidable,2,baseline,109,1264,1051,318,855,72,3,0 +collidable,2,baseline,110,1124,1084,323,899,80,3,1 +collidable,2,baseline,111,1528,1038,336,834,84,4,0 +collidable,2,baseline,112,1135,1086,332,870,87,4,0 +collidable,2,baseline,113,1110,1063,318,845,75,3,0 +collidable,2,baseline,114,1096,1006,311,795,77,3,1 +collidable,2,baseline,115,1177,1005,311,771,81,4,0 +collidable,2,baseline,116,1098,1053,299,841,76,4,1 +collidable,2,baseline,117,1054,1007,296,801,75,3,0 +collidable,2,baseline,118,985,924,285,727,66,9,0 +collidable,2,baseline,119,1112,962,280,742,68,3,0 +collidable,2,baseline,120,26370,1509,2386,698,662,4,0 +collidable,2,baseline,121,126479,126367,2359,125049,553,4,0 +collidable,2,baseline,122,97517,97431,2138,96123,536,4,0 +collidable,2,baseline,123,78594,78551,1693,76935,462,4,0 +collidable,2,baseline,124,50511,50414,1421,49129,469,7,0 +collidable,2,baseline,125,34317,34256,1191,33251,339,16,0 +collidable,2,baseline,126,23026,22983,967,22116,263,7,0 +collidable,2,baseline,127,15107,15009,900,14355,225,9,0 +collidable,2,baseline,128,10348,10306,750,9748,201,3,0 +collidable,2,baseline,129,6670,6629,658,6137,172,17,0 +collidable,2,baseline,130,4601,4554,619,4112,185,3,1 +collidable,2,baseline,131,3310,3255,596,2874,158,3,0 +collidable,2,baseline,132,2872,2832,584,2501,147,4,0 +collidable,2,baseline,133,2419,2372,606,2054,151,3,1 +collidable,2,baseline,134,2516,2337,648,2016,147,4,0 +collidable,2,baseline,135,2327,2233,644,1910,164,5,0 +collidable,2,baseline,136,2302,2222,633,1849,142,4,0 +collidable,2,baseline,137,2102,2007,626,1705,135,9,1 +collidable,2,baseline,138,2092,2042,620,1739,139,4,0 +collidable,2,baseline,139,1971,1885,609,1577,133,4,1 +collidable,2,baseline,140,1978,1926,593,1603,153,4,0 +collidable,2,baseline,141,2024,1891,585,1567,136,5,0 +collidable,2,baseline,142,1928,1878,574,1563,140,3,0 +collidable,2,baseline,143,1895,1841,564,1552,134,4,1 +collidable,2,baseline,144,1902,1823,553,1527,115,3,1 +collidable,2,baseline,145,1871,1816,551,1508,129,4,1 +collidable,2,baseline,146,1749,1691,538,1422,122,3,1 +collidable,2,baseline,147,1808,1615,528,1353,113,3,0 +collidable,2,baseline,148,1618,1547,526,1303,115,3,0 +collidable,2,baseline,149,1752,1696,561,1440,111,5,0 +collidable,2,baseline,150,1781,1675,567,1411,121,9,1 +collidable,2,baseline,151,1684,1612,559,1344,114,11,0 +collidable,2,baseline,152,1636,1542,549,1281,114,4,0 +collidable,2,baseline,153,1698,1604,579,1316,112,8,1 +collidable,2,baseline,154,1661,1555,572,1263,108,14,0 +collidable,2,baseline,155,1679,1624,560,1280,129,5,1 +collidable,2,baseline,156,1567,1519,547,1240,113,4,1 +collidable,2,baseline,157,1559,1481,529,1181,107,3,0 +collidable,2,baseline,158,1504,1453,520,1192,113,11,0 +collidable,2,baseline,159,1517,1472,531,1193,102,4,0 +collidable,2,baseline,160,1538,1484,517,1222,116,4,0 +collidable,2,baseline,161,1546,1413,509,1157,114,9,0 +collidable,2,baseline,162,1455,1409,505,1144,111,5,0 +collidable,2,baseline,163,1442,1394,499,1153,102,4,1 +collidable,2,baseline,164,1451,1351,485,1125,92,10,2 +collidable,2,baseline,165,1434,1380,478,1119,107,3,0 +collidable,2,baseline,166,1442,1365,473,1128,108,4,0 +collidable,2,baseline,167,1428,1326,471,1082,105,4,1 +collidable,2,baseline,168,1498,1400,471,1128,106,11,0 +collidable,2,baseline,169,1398,1352,465,1101,91,3,1 +collidable,2,baseline,170,1355,1255,460,1026,103,4,2 +collidable,2,baseline,171,1394,1344,448,1118,96,4,0 +collidable,2,baseline,172,1364,1317,433,1074,95,3,0 +collidable,2,baseline,173,1336,1225,428,1006,105,4,1 +collidable,2,baseline,174,1361,1232,420,1006,86,7,0 +collidable,2,baseline,175,1343,1282,407,1036,104,4,1 +collidable,2,baseline,176,1324,1278,394,1030,91,7,0 +collidable,2,baseline,177,1315,1262,382,962,96,5,0 +collidable,2,baseline,178,1249,1199,377,965,87,4,0 +collidable,2,baseline,179,1285,1161,361,875,86,4,1 +collidable,2,baseline,180,26290,1723,2428,838,655,5,0 +collidable,2,baseline,181,128935,128766,2390,127388,552,4,0 +collidable,2,baseline,182,95215,95128,2147,93713,579,3,0 +collidable,2,baseline,183,74793,74729,1767,73306,491,4,0 +collidable,2,baseline,184,56131,55588,1462,54339,465,3,0 +collidable,2,baseline,185,35619,35561,1188,34518,359,5,0 +collidable,2,baseline,186,25618,25571,987,24721,294,3,0 +collidable,2,baseline,187,16686,16607,818,15924,227,3,0 +collidable,2,baseline,188,10332,10296,656,9689,201,3,0 +collidable,2,baseline,189,6257,6213,551,5737,169,4,1 +collidable,2,baseline,190,4985,4944,537,4518,183,3,0 +collidable,2,baseline,191,3537,3461,506,3059,173,4,1 +collidable,2,baseline,192,3082,3043,505,2697,156,4,0 +collidable,2,baseline,193,2863,2631,488,2261,162,3,0 +collidable,2,baseline,194,2393,2345,486,2036,137,4,0 +collidable,2,baseline,195,2237,2156,488,1853,151,10,0 +collidable,2,baseline,196,2144,2068,481,1748,144,4,0 +collidable,2,baseline,197,2038,1988,484,1683,141,11,0 +collidable,2,baseline,198,1999,1948,483,1682,130,3,0 +collidable,2,baseline,199,2181,2130,473,1779,132,5,1 +collidable,2,baseline,200,2256,2042,502,1714,154,3,0 +collidable,2,baseline,201,2107,2024,500,1739,138,4,0 +collidable,2,baseline,202,1951,1898,493,1611,135,7,0 +collidable,2,baseline,203,2080,2032,492,1667,134,6,1 +collidable,2,baseline,204,2043,1943,506,1660,122,4,1 +collidable,2,baseline,205,1982,1925,493,1585,141,4,1 +collidable,2,baseline,206,1931,1869,482,1556,129,4,1 +collidable,2,baseline,207,1959,1792,477,1523,125,6,1 +collidable,2,baseline,208,1750,1702,465,1419,120,3,1 +collidable,2,baseline,209,1697,1651,461,1369,111,3,0 +collidable,2,baseline,210,1685,1638,457,1341,123,4,0 +collidable,2,baseline,211,1723,1670,440,1362,122,3,0 +collidable,2,baseline,212,1636,1597,435,1296,110,3,0 +collidable,2,baseline,213,1605,1551,433,1300,112,4,0 +collidable,2,baseline,214,1587,1474,435,1240,103,4,1 +collidable,2,baseline,215,1551,1500,430,1253,116,4,0 +collidable,2,baseline,216,1601,1491,422,1225,114,7,2 +collidable,2,baseline,217,1529,1479,440,1244,106,4,0 +collidable,2,baseline,218,1555,1508,438,1262,111,4,0 +collidable,2,baseline,219,1504,1457,433,1218,100,4,0 +collidable,2,baseline,220,1595,1544,419,1259,110,4,1 +collidable,2,baseline,221,1523,1423,416,1174,107,12,0 +collidable,2,baseline,222,1499,1447,414,1173,98,3,0 +collidable,2,baseline,223,1516,1466,440,1202,103,4,0 +collidable,2,baseline,224,1588,1541,451,1233,99,4,0 +collidable,2,baseline,225,1571,1487,443,1171,108,3,0 +collidable,2,baseline,226,1381,1323,438,1084,100,4,0 +collidable,2,baseline,227,1438,1258,432,1037,92,4,1 +collidable,2,baseline,228,1403,1353,427,1112,103,3,0 +collidable,2,baseline,229,1387,1341,421,1092,88,4,0 +collidable,2,baseline,230,1450,1342,411,1054,109,4,1 +collidable,2,baseline,231,1364,1316,407,1089,100,3,1 +collidable,2,baseline,232,1319,1269,401,1032,101,4,0 +collidable,2,baseline,233,1380,1329,391,1027,106,4,1 +collidable,2,baseline,234,1330,1218,386,1002,83,11,0 +collidable,2,baseline,235,1306,1257,377,1027,93,3,0 +collidable,2,baseline,236,1288,1236,366,990,94,3,0 +collidable,2,baseline,237,1243,1197,364,974,87,4,0 +collidable,2,baseline,238,1314,1249,367,991,93,12,0 +collidable,2,baseline,239,1262,1136,362,925,79,3,1 +collidable,3,baseline,0,29717,1104,2108,1,641,188,0 +collidable,3,baseline,1,128829,128773,2084,127465,480,5,0 +collidable,3,baseline,2,99882,99829,1849,98581,465,4,0 +collidable,3,baseline,3,77242,77175,1463,75895,410,6,1 +collidable,3,baseline,4,50457,50411,1116,49383,334,4,1 +collidable,3,baseline,5,33298,33236,892,32380,290,5,0 +collidable,3,baseline,6,22127,22068,717,21380,216,7,0 +collidable,3,baseline,7,14941,14888,624,14308,191,3,0 +collidable,3,baseline,8,10209,10165,487,9695,142,7,0 +collidable,3,baseline,9,6028,5981,388,5566,128,11,0 +collidable,3,baseline,10,4830,4648,359,4261,168,10,0 +collidable,3,baseline,11,3221,3163,405,2902,106,4,0 +collidable,3,baseline,12,2503,2452,452,2168,96,22,1 +collidable,3,baseline,13,1997,1929,472,1668,95,4,1 +collidable,3,baseline,14,1891,1818,517,1555,94,10,1 +collidable,3,baseline,15,1773,1667,524,1426,83,5,0 +collidable,3,baseline,16,1622,1580,534,1357,93,4,0 +collidable,3,baseline,17,1658,1527,549,1307,80,4,1 +collidable,3,baseline,18,1540,1492,558,1227,83,8,0 +collidable,3,baseline,19,1529,1457,608,1246,74,6,0 +collidable,3,baseline,20,1471,1429,615,1225,76,4,0 +collidable,3,baseline,21,1457,1390,599,1164,90,13,1 +collidable,3,baseline,22,1480,1425,591,1115,83,4,0 +collidable,3,baseline,23,1230,1189,581,992,68,4,0 +collidable,3,baseline,24,1442,1218,572,975,76,27,0 +collidable,3,baseline,25,1328,1244,561,1020,74,17,0 +collidable,3,baseline,26,1367,1291,594,1085,71,5,1 +collidable,3,baseline,27,1262,1204,584,975,68,12,0 +collidable,3,baseline,28,1224,1172,574,944,81,9,0 +collidable,3,baseline,29,1253,1149,565,893,71,10,1 +collidable,3,baseline,30,1229,1112,555,902,69,15,0 +collidable,3,baseline,31,1169,1120,550,909,63,5,0 +collidable,3,baseline,32,1155,1110,536,882,65,4,0 +collidable,3,baseline,33,1133,1088,527,857,72,4,1 +collidable,3,baseline,34,1186,1138,515,890,71,5,1 +collidable,3,baseline,35,1124,1055,506,851,67,3,1 +collidable,3,baseline,36,1295,1139,526,860,71,5,1 +collidable,3,baseline,37,1081,1039,533,841,67,5,0 +collidable,3,baseline,38,1124,1066,526,833,69,4,1 +collidable,3,baseline,39,1083,1032,514,793,62,5,0 +collidable,3,baseline,40,1044,1002,524,795,65,4,0 +collidable,3,baseline,41,1044,995,495,774,66,6,0 +collidable,3,baseline,42,1129,948,465,704,70,3,1 +collidable,3,baseline,43,1009,961,450,765,57,13,1 +collidable,3,baseline,44,993,945,429,740,56,4,1 +collidable,3,baseline,45,998,946,415,730,62,9,0 +collidable,3,baseline,46,1050,997,397,719,66,4,0 +collidable,3,baseline,47,983,941,386,694,59,4,0 +collidable,3,baseline,48,930,885,370,666,57,4,0 +collidable,3,baseline,49,1072,828,352,641,55,4,0 +collidable,3,baseline,50,995,948,344,711,55,4,0 +collidable,3,baseline,51,1004,956,336,704,55,4,0 +collidable,3,baseline,52,943,899,331,673,58,3,0 +collidable,3,baseline,53,899,826,320,625,51,6,1 +collidable,3,baseline,54,857,816,310,621,49,5,0 +collidable,3,baseline,55,984,760,309,578,50,5,0 +collidable,3,baseline,56,830,785,292,605,48,5,0 +collidable,3,baseline,57,817,772,286,611,48,5,0 +collidable,3,baseline,58,812,769,281,584,55,4,0 +collidable,3,baseline,59,838,730,268,570,51,5,0 +collidable,3,baseline,60,27834,1362,2377,507,678,4,0 +collidable,3,baseline,61,130287,130175,2351,128725,595,4,0 +collidable,3,baseline,62,102373,102225,2120,100779,555,4,1 +collidable,3,baseline,63,78583,78535,1713,77059,492,4,0 +collidable,3,baseline,64,52480,52423,1362,51065,461,7,0 +collidable,3,baseline,65,36319,36215,1123,35215,337,11,0 +collidable,3,baseline,66,19900,19844,880,18959,253,6,0 +collidable,3,baseline,67,12842,12801,755,12173,209,6,0 +collidable,3,baseline,68,8966,8922,640,8216,190,96,0 +collidable,3,baseline,69,5720,5637,611,5184,162,6,0 +collidable,3,baseline,70,4390,4226,576,3763,164,11,0 +collidable,3,baseline,71,3087,3042,566,2667,144,5,0 +collidable,3,baseline,72,2694,2607,585,2249,143,8,1 +collidable,3,baseline,73,2288,2235,593,1933,140,5,0 +collidable,3,baseline,74,2137,2094,591,1784,124,10,0 +collidable,3,baseline,75,2162,2116,589,1841,127,6,0 +collidable,3,baseline,76,2047,2002,574,1725,128,5,0 +collidable,3,baseline,77,2034,1920,563,1609,130,26,0 +collidable,3,baseline,78,1852,1806,552,1485,139,4,0 +collidable,3,baseline,79,1815,1761,545,1489,121,4,0 +collidable,3,baseline,80,1832,1766,551,1470,129,4,1 +collidable,3,baseline,81,1722,1681,548,1407,113,4,0 +collidable,3,baseline,82,1686,1608,539,1355,119,4,0 +collidable,3,baseline,83,1739,1629,528,1381,108,10,1 +collidable,3,baseline,84,1774,1733,524,1360,114,4,0 +collidable,3,baseline,85,1668,1609,519,1335,109,14,0 +collidable,3,baseline,86,1631,1537,512,1253,103,12,0 +collidable,3,baseline,87,1509,1431,497,1191,107,4,0 +collidable,3,baseline,88,1545,1491,523,1217,112,4,0 +collidable,3,baseline,89,1491,1409,519,1143,104,13,0 +collidable,3,baseline,90,1536,1375,511,1129,108,4,0 +collidable,3,baseline,91,1395,1351,505,1123,100,4,0 +collidable,3,baseline,92,1477,1385,496,1135,102,5,1 +collidable,3,baseline,93,1439,1341,488,1057,107,5,1 +collidable,3,baseline,94,1404,1362,479,1083,85,4,0 +collidable,3,baseline,95,1373,1328,469,1094,97,6,1 +collidable,3,baseline,96,1362,1309,450,1069,94,3,1 +collidable,3,baseline,97,1342,1235,441,995,97,12,0 +collidable,3,baseline,98,1266,1177,424,942,89,3,0 +collidable,3,baseline,99,1272,1225,417,1012,85,4,0 +collidable,3,baseline,100,1261,1217,407,984,92,4,0 +collidable,3,baseline,101,1293,1247,396,985,86,12,0 +collidable,3,baseline,102,1337,1287,370,980,92,4,0 +collidable,3,baseline,103,1342,1160,353,926,84,3,0 +collidable,3,baseline,104,1182,1140,345,933,79,4,0 +collidable,3,baseline,105,1171,1089,335,879,93,8,0 +collidable,3,baseline,106,1168,1126,326,900,83,3,0 +collidable,3,baseline,107,1129,1084,322,897,78,3,0 +collidable,3,baseline,108,1160,1111,312,887,86,5,0 +collidable,3,baseline,109,1227,1049,318,842,76,6,0 +collidable,3,baseline,110,1095,1052,323,873,80,4,0 +collidable,3,baseline,111,1501,1031,336,820,76,3,0 +collidable,3,baseline,112,1051,982,332,802,73,4,0 +collidable,3,baseline,113,1054,1011,318,802,73,3,0 +collidable,3,baseline,114,1061,1019,311,831,67,4,0 +collidable,3,baseline,115,1112,977,311,769,79,12,0 +collidable,3,baseline,116,1062,1017,299,816,77,4,0 +collidable,3,baseline,117,1084,1037,296,835,77,4,1 +collidable,3,baseline,118,1035,989,285,787,74,4,0 +collidable,3,baseline,119,1051,946,280,747,63,8,0 +collidable,3,baseline,120,26793,1566,2386,681,667,4,0 +collidable,3,baseline,121,127390,127267,2359,125936,560,4,0 +collidable,3,baseline,122,98250,98148,2138,96679,605,3,1 +collidable,3,baseline,123,77944,77898,1693,76436,485,8,0 +collidable,3,baseline,124,50234,50111,1421,48861,481,11,1 +collidable,3,baseline,125,34187,34132,1191,33145,365,8,0 +collidable,3,baseline,126,23493,23449,967,22603,259,4,0 +collidable,3,baseline,127,15193,15067,900,14443,222,11,0 +collidable,3,baseline,128,10326,10278,750,9715,188,4,0 +collidable,3,baseline,129,6501,6435,658,5927,184,10,0 +collidable,3,baseline,130,4531,4484,619,4025,184,4,0 +collidable,3,baseline,131,3346,3282,596,2877,168,4,1 +collidable,3,baseline,132,2910,2867,584,2485,147,4,0 +collidable,3,baseline,133,2549,2397,606,2076,143,4,0 +collidable,3,baseline,134,2308,2255,648,1934,135,4,0 +collidable,3,baseline,135,2235,2182,644,1878,157,4,0 +collidable,3,baseline,136,2228,2131,633,1799,141,5,1 +collidable,3,baseline,137,2100,2036,626,1689,128,9,0 +collidable,3,baseline,138,2068,1968,620,1680,157,4,0 +collidable,3,baseline,139,2051,1869,609,1575,125,4,0 +collidable,3,baseline,140,1853,1802,593,1512,141,4,0 +collidable,3,baseline,141,1931,1882,585,1602,131,3,0 +collidable,3,baseline,142,1838,1794,574,1507,129,3,0 +collidable,3,baseline,143,1873,1831,564,1467,134,3,0 +collidable,3,baseline,144,1856,1811,553,1525,115,3,0 +collidable,3,baseline,145,1857,1810,551,1499,130,3,0 +collidable,3,baseline,146,2017,1793,538,1471,127,6,1 +collidable,3,baseline,147,1852,1784,528,1431,122,7,1 +collidable,3,baseline,148,1774,1693,526,1396,128,5,0 +collidable,3,baseline,149,1672,1627,561,1332,119,5,1 +collidable,3,baseline,150,1854,1750,567,1467,127,10,1 +collidable,3,baseline,151,1718,1668,559,1392,125,4,1 +collidable,3,baseline,152,1634,1588,549,1304,108,3,0 +collidable,3,baseline,153,1710,1656,579,1356,120,4,0 +collidable,3,baseline,154,1583,1525,572,1243,101,10,0 +collidable,3,baseline,155,1647,1602,560,1268,123,4,0 +collidable,3,baseline,156,1520,1470,547,1185,112,5,1 +collidable,3,baseline,157,1535,1488,529,1204,109,4,1 +collidable,3,baseline,158,1458,1365,520,1108,103,12,1 +collidable,3,baseline,159,1526,1369,531,1143,103,4,0 +collidable,3,baseline,160,1426,1363,517,1104,111,4,1 +collidable,3,baseline,161,1489,1438,509,1163,108,3,1 +collidable,3,baseline,162,1465,1377,505,1115,108,12,1 +collidable,3,baseline,163,1416,1364,499,1114,102,4,0 +collidable,3,baseline,164,1494,1448,485,1068,105,3,0 +collidable,3,baseline,165,1524,1430,478,1106,112,13,1 +collidable,3,baseline,166,1405,1359,473,1126,99,3,0 +collidable,3,baseline,167,1490,1447,471,1132,100,4,0 +collidable,3,baseline,168,1336,1294,471,1071,90,5,0 +collidable,3,baseline,169,1386,1316,465,1010,91,4,1 +collidable,3,baseline,170,1336,1287,460,1054,105,4,0 +collidable,3,baseline,171,1369,1270,448,1037,98,4,0 +collidable,3,baseline,172,1369,1249,433,996,98,11,0 +collidable,3,baseline,173,1326,1274,428,1043,93,3,0 +collidable,3,baseline,174,1338,1239,420,968,87,9,1 +collidable,3,baseline,175,1267,1218,407,992,102,4,1 +collidable,3,baseline,176,1328,1276,394,1022,98,4,0 +collidable,3,baseline,177,1239,1193,382,955,92,4,0 +collidable,3,baseline,178,1310,1107,377,877,89,4,1 +collidable,3,baseline,179,1247,1126,361,855,78,8,0 +collidable,3,baseline,180,26413,1713,2428,798,664,4,1 +collidable,3,baseline,181,128834,128790,2390,127380,591,12,1 +collidable,3,baseline,182,97736,97605,2147,95878,646,4,1 +collidable,3,baseline,183,74285,74215,1767,72753,506,4,1 +collidable,3,baseline,184,57324,56823,1462,55556,480,3,0 +collidable,3,baseline,185,36707,36666,1188,35592,359,4,0 +collidable,3,baseline,186,25700,25654,987,24809,278,9,0 +collidable,3,baseline,187,17258,17180,818,16508,230,3,0 +collidable,3,baseline,188,10434,10386,656,9728,198,3,0 +collidable,3,baseline,189,6214,6165,551,5677,185,4,1 +collidable,3,baseline,190,5273,5217,537,4752,181,8,0 +collidable,3,baseline,191,3683,3612,506,3195,159,4,0 +collidable,3,baseline,192,3006,2959,505,2626,142,3,0 +collidable,3,baseline,193,2905,2698,488,2292,161,4,0 +collidable,3,baseline,194,2332,2275,486,1978,132,12,1 +collidable,3,baseline,195,2219,2172,488,1856,148,3,1 +collidable,3,baseline,196,2136,2074,481,1750,139,11,0 +collidable,3,baseline,197,2048,2000,484,1723,138,4,1 +collidable,3,baseline,198,2032,1984,483,1712,140,4,0 +collidable,3,baseline,199,1987,1899,473,1614,123,3,1 +collidable,3,baseline,200,2166,1954,502,1640,140,4,0 +collidable,3,baseline,201,1894,1841,500,1562,139,3,0 +collidable,3,baseline,202,1920,1877,493,1566,123,4,0 +collidable,3,baseline,203,1916,1833,492,1542,146,10,0 +collidable,3,baseline,204,1980,1904,506,1621,120,12,0 +collidable,3,baseline,205,1813,1750,493,1431,128,12,0 +collidable,3,baseline,206,1809,1728,482,1449,123,8,0 +collidable,3,baseline,207,1879,1692,477,1385,113,4,0 +collidable,3,baseline,208,1737,1681,465,1401,129,3,0 +collidable,3,baseline,209,1707,1663,461,1415,104,4,0 +collidable,3,baseline,210,1666,1574,457,1286,131,4,0 +collidable,3,baseline,211,1725,1674,440,1358,109,4,1 +collidable,3,baseline,212,1613,1555,435,1309,113,4,1 +collidable,3,baseline,213,1650,1602,433,1287,109,5,1 +collidable,3,baseline,214,1617,1444,435,1198,104,3,1 +collidable,3,baseline,215,1623,1566,430,1281,118,4,0 +collidable,3,baseline,216,1545,1449,422,1204,111,5,0 +collidable,3,baseline,217,1477,1393,440,1167,100,3,0 +collidable,3,baseline,218,1520,1472,438,1237,114,4,0 +collidable,3,baseline,219,1522,1473,433,1261,99,4,0 +collidable,3,baseline,220,1655,1561,419,1230,114,10,1 +collidable,3,baseline,221,1475,1422,416,1173,114,3,0 +collidable,3,baseline,222,1489,1444,414,1174,98,3,0 +collidable,3,baseline,223,1477,1393,440,1156,97,10,1 +collidable,3,baseline,224,1419,1377,451,1150,87,4,0 +collidable,3,baseline,225,1491,1407,443,1110,113,3,0 +collidable,3,baseline,226,1459,1251,438,1024,94,3,0 +collidable,3,baseline,227,1288,1229,432,1019,94,3,0 +collidable,3,baseline,228,1425,1380,427,1090,93,3,0 +collidable,3,baseline,229,1375,1329,421,1083,86,4,1 +collidable,3,baseline,230,1336,1261,411,1029,106,3,0 +collidable,3,baseline,231,1328,1251,407,1020,102,4,0 +collidable,3,baseline,232,1350,1197,401,958,89,6,0 +collidable,3,baseline,233,1272,1184,391,939,100,4,0 +collidable,3,baseline,234,1339,1290,386,1029,84,3,0 +collidable,3,baseline,235,1334,1228,377,993,96,4,0 +collidable,3,baseline,236,1221,1131,366,923,88,3,1 +collidable,3,baseline,237,1279,1231,364,984,95,3,0 +collidable,3,baseline,238,1213,1110,367,902,89,4,0 +collidable,3,baseline,239,1355,1103,362,896,80,3,0 +collidable,1,changed,0,28713,1060,2108,1,604,168,0 +collidable,1,changed,1,127717,127671,2084,126427,476,4,0 +collidable,1,changed,2,98389,98341,1849,97073,462,4,0 +collidable,1,changed,3,75422,75365,1463,74079,397,6,0 +collidable,1,changed,4,49077,49021,1116,47963,339,4,0 +collidable,1,changed,5,32393,32333,892,31512,289,8,1 +collidable,1,changed,6,21310,21263,717,20567,228,4,0 +collidable,1,changed,7,14592,14540,624,13908,185,3,0 +collidable,1,changed,8,9804,9762,487,9297,152,9,0 +collidable,1,changed,9,5906,5859,388,5467,131,4,0 +collidable,1,changed,10,4327,4229,359,3896,120,3,0 +collidable,1,changed,11,3125,3076,405,2804,107,4,0 +collidable,1,changed,12,2421,2372,452,2118,87,5,1 +collidable,1,changed,13,1973,1925,472,1654,101,4,0 +collidable,1,changed,14,1840,1754,517,1542,88,5,0 +collidable,1,changed,15,1765,1671,524,1440,81,9,0 +collidable,1,changed,16,1651,1529,534,1298,89,3,0 +collidable,1,changed,17,1625,1546,549,1310,79,11,0 +collidable,1,changed,18,1514,1445,558,1226,80,5,0 +collidable,1,changed,19,1530,1482,608,1251,79,4,0 +collidable,1,changed,20,1452,1409,615,1208,78,4,1 +collidable,1,changed,21,1455,1412,599,1181,73,10,0 +collidable,1,changed,22,1517,1348,591,1128,76,4,0 +collidable,1,changed,23,1313,1257,581,1039,83,5,1 +collidable,1,changed,24,1339,1246,572,1011,70,11,0 +collidable,1,changed,25,1363,1256,561,996,82,5,1 +collidable,1,changed,26,1454,1398,594,1087,77,15,0 +collidable,1,changed,27,1277,1182,584,949,70,4,0 +collidable,1,changed,28,1194,1115,574,912,65,5,0 +collidable,1,changed,29,1290,1142,565,918,69,3,1 +collidable,1,changed,30,1192,1148,555,942,67,5,0 +collidable,1,changed,31,1162,1120,550,913,69,8,0 +collidable,1,changed,32,1203,1157,536,944,64,7,0 +collidable,1,changed,33,1192,1145,527,910,64,4,0 +collidable,1,changed,34,1138,1056,515,862,63,13,0 +collidable,1,changed,35,1210,1094,506,854,63,14,0 +collidable,1,changed,36,1195,1134,526,928,71,4,1 +collidable,1,changed,37,1126,1083,533,886,61,4,1 +collidable,1,changed,38,1083,1039,526,824,60,4,1 +collidable,1,changed,39,1052,971,514,774,56,3,0 +collidable,1,changed,40,1179,1127,524,876,67,4,0 +collidable,1,changed,41,1126,952,495,713,61,7,1 +collidable,1,changed,42,1126,1074,465,801,61,4,0 +collidable,1,changed,43,1019,975,450,772,61,4,1 +collidable,1,changed,44,1042,995,429,785,54,4,0 +collidable,1,changed,45,988,943,415,711,61,4,0 +collidable,1,changed,46,1000,927,397,725,60,5,0 +collidable,1,changed,47,968,921,386,715,60,3,0 +collidable,1,changed,48,1025,854,370,665,57,3,0 +collidable,1,changed,49,949,897,352,686,52,12,0 +collidable,1,changed,50,963,884,344,700,54,14,0 +collidable,1,changed,51,948,899,336,711,58,5,0 +collidable,1,changed,52,955,909,331,685,58,4,0 +collidable,1,changed,53,946,903,320,656,52,14,1 +collidable,1,changed,54,893,841,310,652,46,10,0 +collidable,1,changed,55,1002,771,309,583,47,5,1 +collidable,1,changed,56,892,796,292,583,47,7,1 +collidable,1,changed,57,813,764,286,603,50,5,0 +collidable,1,changed,58,837,790,281,610,51,4,0 +collidable,1,changed,59,1251,737,268,549,49,4,0 +collidable,1,changed,60,28138,1368,2377,539,682,4,1 +collidable,1,changed,61,127248,127120,2351,125724,559,4,0 +collidable,1,changed,62,98183,98078,2120,96647,540,3,0 +collidable,1,changed,63,75869,75802,1713,74304,481,5,0 +collidable,1,changed,64,51041,50970,1362,49699,426,6,1 +collidable,1,changed,65,35410,35367,1123,34386,318,9,0 +collidable,1,changed,66,19764,19723,880,18872,242,3,0 +collidable,1,changed,67,12833,12717,755,12024,204,5,0 +collidable,1,changed,68,8632,8577,640,8035,187,6,0 +collidable,1,changed,69,5814,5731,611,5253,165,11,1 +collidable,1,changed,70,4301,4247,576,3834,163,4,0 +collidable,1,changed,71,3017,2924,566,2584,134,11,0 +collidable,1,changed,72,2486,2439,585,2190,130,5,0 +collidable,1,changed,73,2306,2256,593,1936,133,5,0 +collidable,1,changed,74,2454,2314,591,1988,131,8,0 +collidable,1,changed,75,2264,2172,589,1819,139,7,0 +collidable,1,changed,76,2139,2046,574,1716,126,6,0 +collidable,1,changed,77,2105,2057,563,1759,122,12,0 +collidable,1,changed,78,2002,1950,552,1610,127,5,0 +collidable,1,changed,79,1913,1861,545,1539,122,4,0 +collidable,1,changed,80,1866,1810,551,1529,134,4,0 +collidable,1,changed,81,1919,1748,548,1467,114,4,0 +collidable,1,changed,82,1697,1647,539,1408,109,4,1 +collidable,1,changed,83,1783,1688,528,1373,113,9,1 +collidable,1,changed,84,1648,1576,524,1312,102,4,0 +collidable,1,changed,85,1710,1655,519,1307,124,3,0 +collidable,1,changed,86,1618,1569,512,1302,109,4,0 +collidable,1,changed,87,1524,1479,497,1234,106,3,0 +collidable,1,changed,88,1670,1486,523,1212,103,4,1 +collidable,1,changed,89,1482,1431,519,1176,102,4,0 +collidable,1,changed,90,1526,1478,511,1189,113,4,1 +collidable,1,changed,91,1421,1373,505,1122,96,4,0 +collidable,1,changed,92,1648,1600,496,1286,105,4,0 +collidable,1,changed,93,1412,1366,488,1118,93,4,0 +collidable,1,changed,94,1395,1349,479,1120,85,4,0 +collidable,1,changed,95,1412,1330,469,1092,102,4,1 +collidable,1,changed,96,1368,1325,450,1078,93,4,0 +collidable,1,changed,97,1295,1222,441,1005,94,12,0 +collidable,1,changed,98,1325,1276,424,1027,99,4,0 +collidable,1,changed,99,1294,1249,417,1022,87,4,0 +collidable,1,changed,100,1377,1263,407,1011,95,10,1 +collidable,1,changed,101,1248,1202,396,1008,83,3,1 +collidable,1,changed,102,1331,1277,370,1012,89,4,0 +collidable,1,changed,103,1358,1257,353,953,91,4,0 +collidable,1,changed,104,1249,1172,345,922,75,10,0 +collidable,1,changed,105,1212,1164,335,945,87,4,1 +collidable,1,changed,106,1324,1121,326,895,82,3,0 +collidable,1,changed,107,1244,1193,322,948,87,4,0 +collidable,1,changed,108,1221,1174,312,913,81,3,1 +collidable,1,changed,109,1163,1117,318,918,71,4,0 +collidable,1,changed,110,1168,1115,323,907,78,5,0 +collidable,1,changed,111,1175,1125,336,915,82,4,0 +collidable,1,changed,112,1117,1069,332,857,80,3,0 +collidable,1,changed,113,1217,1063,318,818,80,4,0 +collidable,1,changed,114,1074,1027,311,851,69,4,0 +collidable,1,changed,115,1078,1027,311,830,74,4,0 +collidable,1,changed,116,1087,1041,299,826,80,4,0 +collidable,1,changed,117,1090,1047,296,785,77,3,0 +collidable,1,changed,118,1005,964,285,766,68,4,0 +collidable,1,changed,119,1190,945,280,743,65,3,0 +collidable,1,changed,120,27833,1514,2386,695,665,3,0 +collidable,1,changed,121,127349,127294,2359,125917,542,4,1 +collidable,1,changed,122,93613,93514,2138,92182,533,4,0 +collidable,1,changed,123,73994,73926,1693,72463,463,3,0 +collidable,1,changed,124,47427,47318,1421,46177,449,8,0 +collidable,1,changed,125,34061,34019,1191,33003,350,7,0 +collidable,1,changed,126,23070,23016,967,22154,263,4,1 +collidable,1,changed,127,15328,15209,900,14573,230,7,0 +collidable,1,changed,128,10282,10224,750,9628,205,7,0 +collidable,1,changed,129,6559,6489,658,5933,190,16,0 +collidable,1,changed,130,4774,4723,619,4161,189,4,0 +collidable,1,changed,131,3387,3310,596,2914,170,5,0 +collidable,1,changed,132,3233,2789,584,2446,155,4,1 +collidable,1,changed,133,2630,2404,606,2056,158,3,1 +collidable,1,changed,134,2362,2278,648,1973,135,9,0 +collidable,1,changed,135,2223,2172,644,1874,160,5,0 +collidable,1,changed,136,2235,2150,633,1818,148,10,0 +collidable,1,changed,137,2021,1987,626,1681,126,4,0 +collidable,1,changed,138,2018,1932,620,1632,141,3,0 +collidable,1,changed,139,1857,1797,609,1518,126,3,1 +collidable,1,changed,140,1980,1795,593,1475,144,4,0 +collidable,1,changed,141,1881,1835,585,1518,129,4,0 +collidable,1,changed,142,1861,1817,574,1536,128,4,0 +collidable,1,changed,143,1835,1790,564,1477,128,4,0 +collidable,1,changed,144,1833,1788,553,1520,114,5,0 +collidable,1,changed,145,1793,1748,551,1470,129,4,0 +collidable,1,changed,146,1739,1664,538,1361,124,12,0 +collidable,1,changed,147,1807,1590,528,1344,107,4,0 +collidable,1,changed,148,1645,1574,526,1330,117,7,0 +collidable,1,changed,149,1686,1589,561,1340,104,5,1 +collidable,1,changed,150,1714,1663,567,1390,121,4,0 +collidable,1,changed,151,1712,1669,559,1383,118,4,0 +collidable,1,changed,152,1675,1624,549,1358,112,4,0 +collidable,1,changed,153,1696,1587,579,1314,111,15,0 +collidable,1,changed,154,1864,1759,572,1390,115,4,0 +collidable,1,changed,155,1575,1523,560,1251,120,4,0 +collidable,1,changed,156,1535,1442,547,1188,112,3,1 +collidable,1,changed,157,1533,1456,529,1167,99,4,2 +collidable,1,changed,158,1422,1381,520,1160,100,3,0 +collidable,1,changed,159,1609,1439,531,1176,106,5,1 +collidable,1,changed,160,1543,1451,517,1202,104,8,0 +collidable,1,changed,161,1807,1736,509,1420,115,12,0 +collidable,1,changed,162,1682,1632,505,1311,110,4,0 +collidable,1,changed,163,1596,1541,499,1230,116,4,0 +collidable,1,changed,164,1616,1542,485,1176,103,7,1 +collidable,1,changed,165,1510,1432,478,1134,117,5,0 +collidable,1,changed,166,1609,1471,473,1181,113,5,1 +collidable,1,changed,167,1583,1481,471,1159,112,5,0 +collidable,1,changed,168,1572,1493,471,1129,110,4,0 +collidable,1,changed,169,1592,1483,465,1112,105,9,0 +collidable,1,changed,170,1442,1377,460,1123,113,6,0 +collidable,1,changed,171,1487,1428,448,1061,105,5,0 +collidable,1,changed,172,1525,1443,433,1071,104,6,0 +collidable,1,changed,173,1536,1345,428,1047,116,5,0 +collidable,1,changed,174,1307,1256,420,1027,87,4,0 +collidable,1,changed,175,1376,1324,407,1082,105,3,0 +collidable,1,changed,176,1377,1326,394,1022,104,3,1 +collidable,1,changed,177,1265,1212,382,979,90,4,0 +collidable,1,changed,178,1184,1108,377,895,89,4,0 +collidable,1,changed,179,1264,1154,361,902,82,9,0 +collidable,1,changed,180,28096,1750,2428,865,662,4,0 +collidable,1,changed,181,123168,123122,2390,121792,550,4,0 +collidable,1,changed,182,92312,92193,2147,90814,570,4,0 +collidable,1,changed,183,71504,71449,1767,70068,495,9,0 +collidable,1,changed,184,53165,53040,1462,51764,471,3,1 +collidable,1,changed,185,34500,34441,1188,33407,343,8,0 +collidable,1,changed,186,23788,23739,987,22882,276,3,0 +collidable,1,changed,187,16904,16817,818,16122,229,5,0 +collidable,1,changed,188,10112,10069,656,9447,197,4,0 +collidable,1,changed,189,6376,6330,551,5844,174,4,0 +collidable,1,changed,190,4914,4864,537,4459,172,3,0 +collidable,1,changed,191,3456,3417,506,3064,158,4,0 +collidable,1,changed,192,2979,2933,505,2613,135,4,0 +collidable,1,changed,193,2799,2581,488,2203,146,4,0 +collidable,1,changed,194,2241,2197,486,1932,138,3,0 +collidable,1,changed,195,2284,2238,488,1924,152,3,0 +collidable,1,changed,196,2160,2121,481,1784,134,4,0 +collidable,1,changed,197,2049,2001,484,1741,141,3,0 +collidable,1,changed,198,2066,2019,483,1728,131,4,0 +collidable,1,changed,199,1961,1882,473,1616,117,4,0 +collidable,1,changed,200,2199,1916,502,1613,142,4,1 +collidable,1,changed,201,1834,1787,500,1524,126,6,0 +collidable,1,changed,202,1884,1799,493,1516,139,8,0 +collidable,1,changed,203,1820,1775,492,1530,124,4,0 +collidable,1,changed,204,1864,1812,506,1514,113,12,0 +collidable,1,changed,205,2177,1672,493,1410,127,4,1 +collidable,1,changed,206,1930,1716,482,1421,119,3,0 +collidable,1,changed,207,1831,1784,477,1511,125,3,0 +collidable,1,changed,208,1701,1654,465,1387,110,4,1 +collidable,1,changed,209,1679,1585,461,1323,112,11,0 +collidable,1,changed,210,1730,1677,457,1369,128,4,0 +collidable,1,changed,211,1801,1727,440,1394,106,12,0 +collidable,1,changed,212,1595,1545,435,1294,109,4,0 +collidable,1,changed,213,1677,1518,433,1260,103,4,0 +collidable,1,changed,214,1613,1537,435,1239,101,8,0 +collidable,1,changed,215,1563,1514,430,1264,109,4,0 +collidable,1,changed,216,1579,1507,422,1254,112,3,0 +collidable,1,changed,217,1495,1449,440,1225,99,5,0 +collidable,1,changed,218,1418,1377,438,1170,98,4,0 +collidable,1,changed,219,1603,1499,433,1230,104,10,0 +collidable,1,changed,220,1559,1510,419,1215,106,4,0 +collidable,1,changed,221,1507,1460,416,1199,109,3,0 +collidable,1,changed,222,1460,1414,414,1184,95,4,0 +collidable,1,changed,223,1508,1460,440,1208,96,4,0 +collidable,1,changed,224,1424,1382,451,1166,89,4,0 +collidable,1,changed,225,1463,1411,443,1142,102,5,0 +collidable,1,changed,226,1558,1328,438,1047,100,4,0 +collidable,1,changed,227,1337,1289,432,1075,99,5,0 +collidable,1,changed,228,1405,1357,427,1124,96,3,0 +collidable,1,changed,229,1335,1286,421,1076,92,4,0 +collidable,1,changed,230,1387,1295,411,1039,101,10,1 +collidable,1,changed,231,1418,1373,407,1095,99,3,0 +collidable,1,changed,232,1344,1203,401,969,87,10,0 +collidable,1,changed,233,1317,1262,391,1022,98,3,0 +collidable,1,changed,234,1274,1232,386,1029,82,4,0 +collidable,1,changed,235,1328,1277,377,1030,89,3,1 +collidable,1,changed,236,1270,1225,366,1003,91,4,0 +collidable,1,changed,237,1335,1263,364,1024,85,12,0 +collidable,1,changed,238,1268,1185,367,932,85,4,0 +collidable,1,changed,239,1416,1163,362,940,84,4,0 +collidable,2,changed,0,27616,1091,2108,0,609,173,0 +collidable,2,changed,1,126316,125872,2084,124612,466,5,0 +collidable,2,changed,2,98560,98494,1849,97272,459,4,1 +collidable,2,changed,3,75888,75830,1463,74532,419,6,0 +collidable,2,changed,4,49912,49858,1116,48774,326,3,0 +collidable,2,changed,5,32892,32836,892,31996,275,5,0 +collidable,2,changed,6,21676,21620,717,20897,224,6,0 +collidable,2,changed,7,14618,14579,624,13994,179,5,0 +collidable,2,changed,8,9956,9902,487,9395,163,8,0 +collidable,2,changed,9,5917,5847,388,5419,121,7,0 +collidable,2,changed,10,4256,4131,359,3834,127,3,1 +collidable,2,changed,11,3164,3089,405,2760,103,4,1 +collidable,2,changed,12,2401,2344,452,2080,103,4,0 +collidable,2,changed,13,1857,1790,472,1559,87,4,1 +collidable,2,changed,14,1775,1719,517,1486,95,4,0 +collidable,2,changed,15,1787,1695,524,1431,98,4,0 +collidable,2,changed,16,1620,1571,534,1337,90,5,0 +collidable,2,changed,17,1606,1494,549,1246,75,10,0 +collidable,2,changed,18,1536,1431,558,1166,83,8,1 +collidable,2,changed,19,1630,1586,608,1191,89,4,0 +collidable,2,changed,20,1448,1372,615,1151,77,9,1 +collidable,2,changed,21,1360,1302,599,1059,77,4,1 +collidable,2,changed,22,1383,1303,591,1066,79,4,0 +collidable,2,changed,23,1320,1250,581,1017,70,13,0 +collidable,2,changed,24,1339,1184,572,969,69,4,0 +collidable,2,changed,25,1257,1183,561,978,69,11,0 +collidable,2,changed,26,1331,1267,594,1024,79,14,0 +collidable,2,changed,27,1265,1162,584,953,75,9,2 +collidable,2,changed,28,1335,1279,574,988,76,8,0 +collidable,2,changed,29,1171,1078,565,885,68,5,0 +collidable,2,changed,30,1499,1406,555,970,173,8,0 +collidable,2,changed,31,1366,1233,550,947,77,4,1 +collidable,2,changed,32,1200,1113,536,837,71,10,0 +collidable,2,changed,33,1094,1030,527,828,64,16,0 +collidable,2,changed,34,1097,1055,515,827,65,3,1 +collidable,2,changed,35,1113,1067,506,853,61,5,0 +collidable,2,changed,36,1171,1068,526,835,60,9,0 +collidable,2,changed,37,1162,988,533,786,66,4,1 +collidable,2,changed,38,1092,1045,526,821,65,5,1 +collidable,2,changed,39,1152,1097,514,773,65,5,1 +collidable,2,changed,40,1072,1017,524,796,64,4,1 +collidable,2,changed,41,1000,956,495,739,61,4,1 +collidable,2,changed,42,997,954,465,748,57,4,0 +collidable,2,changed,43,1096,995,450,723,66,9,1 +collidable,2,changed,44,1078,888,429,678,54,4,0 +collidable,2,changed,45,965,916,415,729,60,7,0 +collidable,2,changed,46,968,925,397,724,56,4,0 +collidable,2,changed,47,925,877,386,695,59,12,0 +collidable,2,changed,48,933,890,370,689,54,4,0 +collidable,2,changed,49,915,874,352,688,51,3,0 +collidable,2,changed,50,907,859,344,682,55,3,0 +collidable,2,changed,51,958,787,336,613,52,4,0 +collidable,2,changed,52,910,856,331,675,50,4,0 +collidable,2,changed,53,880,794,320,602,52,12,1 +collidable,2,changed,54,851,808,310,625,47,4,0 +collidable,2,changed,55,942,879,309,629,51,13,0 +collidable,2,changed,56,797,751,292,555,47,5,0 +collidable,2,changed,57,816,768,286,608,52,4,0 +collidable,2,changed,58,922,688,281,531,49,4,0 +collidable,2,changed,59,857,732,268,560,49,10,0 +collidable,2,changed,60,27473,1333,2377,494,681,3,0 +collidable,2,changed,61,123879,123834,2351,122501,552,4,0 +collidable,2,changed,62,98581,98500,2120,97191,524,4,0 +collidable,2,changed,63,74179,74136,1713,72726,461,3,0 +collidable,2,changed,64,51218,51156,1362,49888,453,4,0 +collidable,2,changed,65,35620,35518,1123,34542,314,6,0 +collidable,2,changed,66,19863,19800,880,18871,252,7,0 +collidable,2,changed,67,12471,12420,755,11834,201,6,0 +collidable,2,changed,68,8469,8418,640,7889,172,5,0 +collidable,2,changed,69,5641,5581,611,5120,155,4,1 +collidable,2,changed,70,4214,4027,576,3642,160,5,1 +collidable,2,changed,71,3053,2997,566,2668,140,6,0 +collidable,2,changed,72,2709,2653,585,2271,138,5,1 +collidable,2,changed,73,2928,2427,593,2011,146,5,0 +collidable,2,changed,74,2273,2191,591,1834,125,7,0 +collidable,2,changed,75,2196,2128,589,1793,130,7,0 +collidable,2,changed,76,2166,2092,574,1726,123,5,0 +collidable,2,changed,77,2255,2116,563,1709,130,6,0 +collidable,2,changed,78,1985,1924,552,1563,123,5,0 +collidable,2,changed,79,1852,1760,545,1435,121,6,1 +collidable,2,changed,80,1795,1744,551,1477,122,4,0 +collidable,2,changed,81,1838,1784,548,1462,126,4,0 +collidable,2,changed,82,1696,1652,539,1376,121,4,0 +collidable,2,changed,83,1736,1681,528,1396,115,8,0 +collidable,2,changed,84,1693,1564,524,1326,106,3,0 +collidable,2,changed,85,1616,1564,519,1277,112,4,1 +collidable,2,changed,86,1621,1572,512,1289,105,5,0 +collidable,2,changed,87,1550,1503,497,1198,109,4,0 +collidable,2,changed,88,1531,1472,523,1230,107,4,0 +collidable,2,changed,89,1439,1391,519,1157,95,5,1 +collidable,2,changed,90,1519,1387,511,1142,107,7,0 +collidable,2,changed,91,1365,1322,505,1096,99,3,0 +collidable,2,changed,92,1401,1355,496,1094,91,4,0 +collidable,2,changed,93,1402,1351,488,1111,102,5,1 +collidable,2,changed,94,1437,1388,479,1101,95,5,0 +collidable,2,changed,95,1402,1343,469,1105,103,4,0 +collidable,2,changed,96,1314,1267,450,1035,93,4,0 +collidable,2,changed,97,1361,1266,441,1000,103,7,0 +collidable,2,changed,98,1384,1286,424,963,91,5,0 +collidable,2,changed,99,1285,1242,417,1014,90,3,1 +collidable,2,changed,100,1283,1230,407,1010,86,4,0 +collidable,2,changed,101,1250,1203,396,983,85,4,0 +collidable,2,changed,102,1230,1166,370,922,83,11,1 +collidable,2,changed,103,1347,1149,353,913,89,4,0 +collidable,2,changed,104,1259,1183,345,922,78,5,0 +collidable,2,changed,105,1214,1163,335,923,87,3,0 +collidable,2,changed,106,1287,1239,326,923,92,4,0 +collidable,2,changed,107,1135,1090,322,878,75,4,0 +collidable,2,changed,108,1141,1093,312,875,74,3,0 +collidable,2,changed,109,1261,1084,318,849,75,4,0 +collidable,2,changed,110,1129,1078,323,869,78,3,1 +collidable,2,changed,111,1131,1055,336,852,76,5,1 +collidable,2,changed,112,1058,1015,332,805,79,4,0 +collidable,2,changed,113,1081,1034,318,848,72,3,0 +collidable,2,changed,114,1100,1060,311,808,67,3,0 +collidable,2,changed,115,1179,1105,311,842,82,4,0 +collidable,2,changed,116,1134,974,299,772,74,4,1 +collidable,2,changed,117,1097,1051,296,831,75,3,0 +collidable,2,changed,118,1025,974,285,770,72,6,0 +collidable,2,changed,119,1086,970,280,724,71,10,0 +collidable,2,changed,120,27224,1508,2386,679,666,4,1 +collidable,2,changed,121,125746,125698,2359,124377,549,4,0 +collidable,2,changed,122,97432,97305,2138,95996,527,4,0 +collidable,2,changed,123,74589,74520,1693,73038,453,4,0 +collidable,2,changed,124,49255,49137,1421,47947,456,8,0 +collidable,2,changed,125,33307,33253,1191,32273,340,12,0 +collidable,2,changed,126,22491,22442,967,21482,271,3,1 +collidable,2,changed,127,14798,14700,900,14075,226,8,0 +collidable,2,changed,128,10626,10575,750,9978,204,5,0 +collidable,2,changed,129,6284,6207,658,5722,172,10,1 +collidable,2,changed,130,4468,4425,619,4003,172,4,0 +collidable,2,changed,131,3347,3269,596,2877,150,7,0 +collidable,2,changed,132,2788,2709,584,2377,140,4,0 +collidable,2,changed,133,2355,2304,606,1998,135,3,0 +collidable,2,changed,134,2400,2238,648,1961,136,4,0 +collidable,2,changed,135,2204,2157,644,1827,155,4,0 +collidable,2,changed,136,2184,2107,633,1793,139,4,1 +collidable,2,changed,137,2003,1948,626,1652,133,4,0 +collidable,2,changed,138,2091,2040,620,1697,155,4,0 +collidable,2,changed,139,1885,1815,609,1534,118,12,1 +collidable,2,changed,140,2105,1963,593,1642,153,13,1 +collidable,2,changed,141,1957,1908,585,1516,134,5,0 +collidable,2,changed,142,1854,1808,574,1511,131,5,0 +collidable,2,changed,143,1820,1724,564,1428,139,11,1 +collidable,2,changed,144,1759,1693,553,1424,113,4,0 +collidable,2,changed,145,2191,1682,551,1405,123,5,0 +collidable,2,changed,146,1692,1635,538,1354,119,12,0 +collidable,2,changed,147,1885,1698,528,1406,111,5,1 +collidable,2,changed,148,1608,1522,526,1268,118,10,0 +collidable,2,changed,149,1647,1576,561,1324,114,10,1 +collidable,2,changed,150,1686,1630,567,1351,126,4,1 +collidable,2,changed,151,1649,1606,559,1339,113,4,0 +collidable,2,changed,152,1724,1644,549,1314,108,5,0 +collidable,2,changed,153,1659,1560,579,1262,109,5,1 +collidable,2,changed,154,1592,1476,572,1226,97,13,0 +collidable,2,changed,155,1470,1426,560,1177,110,5,0 +collidable,2,changed,156,1508,1458,547,1187,111,4,0 +collidable,2,changed,157,1479,1382,529,1140,100,5,0 +collidable,2,changed,158,1460,1412,520,1172,101,5,0 +collidable,2,changed,159,1461,1408,531,1167,106,5,0 +collidable,2,changed,160,1478,1379,517,1134,108,4,1 +collidable,2,changed,161,1467,1419,509,1160,106,5,0 +collidable,2,changed,162,1432,1387,505,1140,95,4,0 +collidable,2,changed,163,1397,1347,499,1114,105,3,0 +collidable,2,changed,164,1347,1305,485,1051,89,4,0 +collidable,2,changed,165,1387,1332,478,1094,111,4,0 +collidable,2,changed,166,1378,1325,473,1088,103,4,0 +collidable,2,changed,167,1413,1333,471,1088,103,4,0 +collidable,2,changed,168,1355,1310,471,1079,94,3,0 +collidable,2,changed,169,1372,1322,465,1081,103,5,0 +collidable,2,changed,170,1310,1224,460,994,97,4,0 +collidable,2,changed,171,1307,1260,448,1013,95,3,0 +collidable,2,changed,172,1391,1351,433,1028,96,4,0 +collidable,2,changed,173,1239,1192,428,975,85,4,0 +collidable,2,changed,174,1391,1217,420,976,88,3,0 +collidable,2,changed,175,1303,1203,407,958,105,5,1 +collidable,2,changed,176,1252,1202,394,970,93,4,0 +collidable,2,changed,177,1225,1174,382,934,89,4,1 +collidable,2,changed,178,1200,1097,377,879,88,4,1 +collidable,2,changed,179,1228,1087,361,873,82,3,0 +collidable,2,changed,180,27985,1747,2428,816,727,5,0 +collidable,2,changed,181,123096,123052,2390,121745,547,5,0 +collidable,2,changed,182,96137,96031,2147,94629,544,4,0 +collidable,2,changed,183,70608,70546,1767,69175,479,10,0 +collidable,2,changed,184,54233,54115,1462,52782,497,5,0 +collidable,2,changed,185,36224,36165,1188,35098,350,5,0 +collidable,2,changed,186,23762,23728,987,22920,259,3,0 +collidable,2,changed,187,16588,16491,818,15732,232,3,1 +collidable,2,changed,188,10086,10041,656,9458,188,3,0 +collidable,2,changed,189,6157,6108,551,5637,166,4,0 +collidable,2,changed,190,4827,4759,537,4360,173,4,0 +collidable,2,changed,191,3354,3314,506,2964,170,4,0 +collidable,2,changed,192,3061,3008,505,2631,158,4,0 +collidable,2,changed,193,2726,2513,488,2192,150,4,1 +collidable,2,changed,194,2358,2309,486,1925,144,4,0 +collidable,2,changed,195,2178,2097,488,1794,156,4,0 +collidable,2,changed,196,2104,2056,481,1741,138,4,0 +collidable,2,changed,197,2120,2068,484,1796,148,4,0 +collidable,2,changed,198,2055,2003,483,1723,143,3,0 +collidable,2,changed,199,2260,2061,473,1597,144,4,0 +collidable,2,changed,200,1977,1927,502,1633,142,4,0 +collidable,2,changed,201,1869,1821,500,1527,130,4,1 +collidable,2,changed,202,1911,1860,493,1541,126,4,1 +collidable,2,changed,203,1828,1782,492,1513,126,3,0 +collidable,2,changed,204,1916,1867,506,1595,118,4,0 +collidable,2,changed,205,1882,1668,493,1394,136,4,1 +collidable,2,changed,206,1796,1743,482,1439,136,5,0 +collidable,2,changed,207,1796,1744,477,1466,127,4,0 +collidable,2,changed,208,1680,1630,465,1365,121,4,0 +collidable,2,changed,209,1701,1647,461,1402,110,4,0 +collidable,2,changed,210,1655,1602,457,1324,122,3,0 +collidable,2,changed,211,1582,1514,440,1261,114,4,0 +collidable,2,changed,212,1615,1504,435,1263,106,11,0 +collidable,2,changed,213,1717,1667,433,1289,122,4,0 +collidable,2,changed,214,1478,1431,435,1222,94,4,0 +collidable,2,changed,215,1616,1561,430,1247,112,3,0 +collidable,2,changed,216,1490,1442,422,1211,102,3,0 +collidable,2,changed,217,1889,1421,440,1167,105,4,0 +collidable,2,changed,218,1448,1401,438,1181,105,4,0 +collidable,2,changed,219,1565,1441,433,1199,102,4,0 +collidable,2,changed,220,1644,1593,419,1251,118,3,0 +collidable,2,changed,221,1495,1437,416,1173,112,3,0 +collidable,2,changed,222,1500,1447,414,1160,98,3,0 +collidable,2,changed,223,1481,1385,440,1157,95,5,0 +collidable,2,changed,224,1453,1405,451,1150,92,4,0 +collidable,2,changed,225,1553,1323,443,1080,99,4,0 +collidable,2,changed,226,1409,1364,438,1061,97,4,0 +collidable,2,changed,227,1374,1271,432,1033,102,4,0 +collidable,2,changed,228,1414,1367,427,1108,102,4,0 +collidable,2,changed,229,1322,1276,421,1053,87,3,0 +collidable,2,changed,230,1305,1253,411,1036,102,5,0 +collidable,2,changed,231,1389,1235,407,993,99,4,0 +collidable,2,changed,232,1289,1241,401,1007,95,3,0 +collidable,2,changed,233,1306,1258,391,993,95,4,1 +collidable,2,changed,234,1250,1193,386,986,84,3,1 +collidable,2,changed,235,1235,1159,377,942,93,3,0 +collidable,2,changed,236,1267,1215,366,973,90,3,0 +collidable,2,changed,237,1300,1125,364,913,80,3,0 +collidable,2,changed,238,1253,1199,367,978,87,4,0 +collidable,2,changed,239,1277,1179,362,948,82,11,0 +collidable,3,changed,0,28129,1073,2108,0,589,170,0 +collidable,3,changed,1,126773,126720,2084,125461,454,4,0 +collidable,3,changed,2,99793,99738,1849,98504,467,4,0 +collidable,3,changed,3,76473,76407,1463,75077,408,5,0 +collidable,3,changed,4,50121,50068,1116,48925,341,4,0 +collidable,3,changed,5,32742,32695,892,31865,278,4,0 +collidable,3,changed,6,21125,21064,717,20377,228,7,0 +collidable,3,changed,7,14478,14436,624,13905,179,3,0 +collidable,3,changed,8,9930,9888,487,9373,140,4,0 +collidable,3,changed,9,5834,5778,388,5376,126,4,1 +collidable,3,changed,10,4217,4081,359,3763,132,3,0 +collidable,3,changed,11,3019,2966,405,2710,111,5,0 +collidable,3,changed,12,2331,2285,452,2043,99,3,1 +collidable,3,changed,13,1941,1846,472,1595,103,9,0 +collidable,3,changed,14,1795,1735,517,1472,97,4,0 +collidable,3,changed,15,1729,1640,524,1383,89,9,0 +collidable,3,changed,16,1628,1517,534,1281,89,9,0 +collidable,3,changed,17,1615,1567,549,1352,77,4,1 +collidable,3,changed,18,1549,1489,558,1238,83,4,0 +collidable,3,changed,19,1463,1417,608,1224,74,5,0 +collidable,3,changed,20,1527,1473,615,1180,90,5,0 +collidable,3,changed,21,1403,1356,599,1130,74,4,0 +collidable,3,changed,22,1449,1328,591,1100,73,4,0 +collidable,3,changed,23,1251,1174,581,958,79,4,0 +collidable,3,changed,24,1339,1284,572,1008,76,10,0 +collidable,3,changed,25,1318,1262,561,1022,71,4,0 +collidable,3,changed,26,1382,1333,594,1062,76,4,0 +collidable,3,changed,27,1188,1108,584,892,76,4,0 +collidable,3,changed,28,1228,1148,574,911,72,10,0 +collidable,3,changed,29,1244,1131,565,914,67,11,1 +collidable,3,changed,30,1234,1131,555,880,72,7,1 +collidable,3,changed,31,1157,1101,550,906,72,13,1 +collidable,3,changed,32,1144,1096,536,876,68,4,0 +collidable,3,changed,33,1100,1052,527,845,66,4,0 +collidable,3,changed,34,1116,1069,515,867,62,5,0 +collidable,3,changed,35,1138,1047,506,813,69,4,0 +collidable,3,changed,36,1249,1056,526,864,64,5,0 +collidable,3,changed,37,1129,1075,533,874,64,5,0 +collidable,3,changed,38,1067,1003,526,800,62,15,0 +collidable,3,changed,39,1080,1035,514,798,60,4,0 +collidable,3,changed,40,1055,1005,524,810,62,4,0 +collidable,3,changed,41,1057,1004,495,780,63,4,0 +collidable,3,changed,42,1054,920,465,720,60,6,0 +collidable,3,changed,43,1032,984,450,781,61,4,1 +collidable,3,changed,44,975,931,429,749,54,4,0 +collidable,3,changed,45,990,911,415,715,58,11,0 +collidable,3,changed,46,942,872,397,691,57,4,0 +collidable,3,changed,47,993,946,386,716,60,4,0 +collidable,3,changed,48,986,840,370,641,60,5,1 +collidable,3,changed,49,1007,959,352,695,51,4,0 +collidable,3,changed,50,917,835,344,648,56,15,1 +collidable,3,changed,51,960,913,336,703,56,3,0 +collidable,3,changed,52,914,872,331,682,52,4,0 +collidable,3,changed,53,960,895,320,614,56,4,0 +collidable,3,changed,54,918,873,310,641,45,5,0 +collidable,3,changed,55,934,739,309,556,48,12,0 +collidable,3,changed,56,835,786,292,606,49,4,0 +collidable,3,changed,57,793,750,286,598,48,5,1 +collidable,3,changed,58,809,760,281,589,54,3,0 +collidable,3,changed,59,842,705,268,527,48,4,0 +collidable,3,changed,60,27428,1404,2377,513,665,4,0 +collidable,3,changed,61,129456,129354,2351,127930,564,4,0 +collidable,3,changed,62,99115,99012,2120,97535,535,4,1 +collidable,3,changed,63,77764,77706,1713,76076,489,4,0 +collidable,3,changed,64,52080,52017,1362,50761,421,6,0 +collidable,3,changed,65,35875,35750,1123,34798,315,4,0 +collidable,3,changed,66,20223,20181,880,19268,236,5,0 +collidable,3,changed,67,12614,12558,755,12009,194,8,0 +collidable,3,changed,68,8707,8663,640,8102,188,11,1 +collidable,3,changed,69,5726,5662,611,5215,161,4,0 +collidable,3,changed,70,4394,4178,576,3725,153,5,0 +collidable,3,changed,71,3009,2958,566,2584,144,4,0 +collidable,3,changed,72,2571,2506,585,2195,142,4,0 +collidable,3,changed,73,2308,2206,593,1898,137,5,0 +collidable,3,changed,74,2169,2126,591,1801,124,8,0 +collidable,3,changed,75,2103,2056,589,1777,131,11,0 +collidable,3,changed,76,2058,2010,574,1713,129,6,0 +collidable,3,changed,77,2027,1876,563,1607,126,6,0 +collidable,3,changed,78,1893,1846,552,1553,129,4,0 +collidable,3,changed,79,1869,1821,545,1518,111,4,0 +collidable,3,changed,80,1972,1924,551,1589,133,3,0 +collidable,3,changed,81,1753,1702,548,1436,117,4,0 +collidable,3,changed,82,1765,1722,539,1443,113,4,0 +collidable,3,changed,83,1702,1608,528,1343,110,6,0 +collidable,3,changed,84,1703,1538,524,1303,104,4,0 +collidable,3,changed,85,1608,1544,519,1211,112,3,0 +collidable,3,changed,86,1648,1561,512,1280,103,13,1 +collidable,3,changed,87,1558,1519,497,1234,98,3,0 +collidable,3,changed,88,1596,1548,523,1266,110,4,0 +collidable,3,changed,89,1449,1350,519,1112,102,7,1 +collidable,3,changed,90,1516,1386,511,1143,112,4,1 +collidable,3,changed,91,1501,1456,505,1201,104,4,0 +collidable,3,changed,92,1402,1307,496,1087,92,4,1 +collidable,3,changed,93,1322,1282,488,1063,94,3,0 +collidable,3,changed,94,1397,1348,479,1119,87,4,0 +collidable,3,changed,95,1371,1295,469,1067,98,4,0 +collidable,3,changed,96,1425,1333,450,1073,93,3,1 +collidable,3,changed,97,1314,1261,441,1030,98,3,0 +collidable,3,changed,98,1280,1226,424,969,102,3,0 +collidable,3,changed,99,1315,1272,417,1057,86,4,0 +collidable,3,changed,100,1369,1277,407,1002,102,7,0 +collidable,3,changed,101,1266,1168,396,943,87,9,1 +collidable,3,changed,102,1348,1207,370,984,82,4,0 +collidable,3,changed,103,1239,1173,353,940,84,10,1 +collidable,3,changed,104,1195,1103,345,893,76,6,1 +collidable,3,changed,105,1191,1144,335,937,87,5,0 +collidable,3,changed,106,1182,1142,326,905,80,3,0 +collidable,3,changed,107,1188,1111,322,897,82,7,0 +collidable,3,changed,108,1090,1050,312,858,71,3,0 +collidable,3,changed,109,1704,1068,318,868,72,3,0 +collidable,3,changed,110,1156,1061,323,841,77,9,1 +collidable,3,changed,111,1135,1092,336,905,79,3,0 +collidable,3,changed,112,1077,1029,332,822,70,11,1 +collidable,3,changed,113,1089,993,318,776,71,7,1 +collidable,3,changed,114,1059,1017,311,821,64,3,1 +collidable,3,changed,115,1094,997,311,764,76,9,1 +collidable,3,changed,116,1144,954,299,761,84,3,1 +collidable,3,changed,117,1051,1006,296,795,77,4,0 +collidable,3,changed,118,990,944,285,756,68,4,0 +collidable,3,changed,119,1098,988,280,742,65,3,0 +collidable,3,changed,120,28117,1574,2386,713,700,4,0 +collidable,3,changed,121,126195,126155,2359,124817,539,4,0 +collidable,3,changed,122,97401,97251,2138,95972,526,3,1 +collidable,3,changed,123,77295,77231,1693,75794,454,4,0 +collidable,3,changed,124,49561,49447,1421,48239,444,3,0 +collidable,3,changed,125,35223,35165,1191,34127,330,9,0 +collidable,3,changed,126,23542,23505,967,22569,271,4,0 +collidable,3,changed,127,15398,15297,900,14666,229,4,0 +collidable,3,changed,128,10974,10939,750,10343,208,3,0 +collidable,3,changed,129,6281,6229,658,5751,170,11,0 +collidable,3,changed,130,4520,4435,619,4032,175,5,0 +collidable,3,changed,131,3248,3175,596,2788,163,4,0 +collidable,3,changed,132,3014,2968,584,2583,146,13,1 +collidable,3,changed,133,2544,2323,606,1985,148,4,1 +collidable,3,changed,134,2324,2270,648,1963,133,11,0 +collidable,3,changed,135,2225,2176,644,1867,161,3,0 +collidable,3,changed,136,2207,2159,633,1842,146,4,0 +collidable,3,changed,137,2059,2008,626,1698,141,4,0 +collidable,3,changed,138,2041,1995,620,1702,147,4,0 +collidable,3,changed,139,2019,1843,609,1550,128,4,0 +collidable,3,changed,140,1896,1845,593,1503,150,4,1 +collidable,3,changed,141,1906,1860,585,1568,136,3,0 +collidable,3,changed,142,1824,1778,574,1503,124,3,0 +collidable,3,changed,143,1835,1786,564,1499,134,4,0 +collidable,3,changed,144,1747,1703,553,1459,112,4,0 +collidable,3,changed,145,1807,1756,551,1471,124,4,0 +collidable,3,changed,146,1864,1681,538,1374,120,4,0 +collidable,3,changed,147,1782,1729,528,1417,130,5,0 +collidable,3,changed,148,1682,1635,526,1373,116,4,1 +collidable,3,changed,149,1731,1685,561,1430,109,3,0 +collidable,3,changed,150,1671,1622,567,1379,116,4,0 +collidable,3,changed,151,1797,1750,559,1391,109,3,0 +collidable,3,changed,152,1707,1655,549,1353,121,17,0 +collidable,3,changed,153,1875,1777,579,1434,122,16,0 +collidable,3,changed,154,1570,1525,572,1279,104,9,0 +collidable,3,changed,155,1575,1490,560,1220,123,4,0 +collidable,3,changed,156,1502,1452,547,1154,114,5,1 +collidable,3,changed,157,1436,1392,529,1148,95,4,0 +collidable,3,changed,158,1477,1423,520,1182,120,4,0 +collidable,3,changed,159,1500,1358,531,1123,98,4,0 +collidable,3,changed,160,1485,1432,517,1153,115,4,1 +collidable,3,changed,161,1480,1429,509,1186,103,4,0 +collidable,3,changed,162,1443,1400,505,1158,100,4,0 +collidable,3,changed,163,1389,1338,499,1097,103,4,1 +collidable,3,changed,164,1498,1419,485,1174,99,8,0 +collidable,3,changed,165,1447,1397,478,1092,107,4,0 +collidable,3,changed,166,1547,1453,473,1165,106,12,0 +collidable,3,changed,167,1355,1269,471,1031,100,8,1 +collidable,3,changed,168,1402,1355,471,1138,97,4,0 +collidable,3,changed,169,1322,1272,465,1042,89,9,0 +collidable,3,changed,170,1354,1310,460,1050,104,4,0 +collidable,3,changed,171,1340,1289,448,1056,102,3,0 +collidable,3,changed,172,1401,1326,433,1008,104,4,1 +collidable,3,changed,173,1418,1280,428,1051,96,11,0 +collidable,3,changed,174,1277,1232,420,1015,85,4,0 +collidable,3,changed,175,1259,1214,407,994,92,3,0 +collidable,3,changed,176,1309,1262,394,1011,86,3,0 +collidable,3,changed,177,1227,1179,382,967,84,3,0 +collidable,3,changed,178,1198,1153,377,932,88,3,0 +collidable,3,changed,179,1260,1106,361,883,85,4,0 +collidable,3,changed,180,28378,1799,2428,882,684,4,0 +collidable,3,changed,181,126616,126573,2390,125234,540,5,0 +collidable,3,changed,182,95168,95082,2147,93655,548,4,0 +collidable,3,changed,183,73161,73116,1767,71739,494,3,0 +collidable,3,changed,184,55749,55626,1462,54358,467,9,0 +collidable,3,changed,185,35979,35925,1188,34891,345,3,0 +collidable,3,changed,186,25037,24983,987,24178,266,4,1 +collidable,3,changed,187,16870,16770,818,16084,228,4,0 +collidable,3,changed,188,10574,10539,656,9965,190,4,0 +collidable,3,changed,189,6349,6280,551,5752,172,4,0 +collidable,3,changed,190,5028,4942,537,4485,171,7,1 +collidable,3,changed,191,3413,3359,506,3010,163,3,1 +collidable,3,changed,192,3037,2997,505,2670,149,3,0 +collidable,3,changed,193,2824,2570,488,2209,146,4,0 +collidable,3,changed,194,2302,2261,486,1982,132,3,0 +collidable,3,changed,195,2385,2274,488,1923,156,6,2 +collidable,3,changed,196,2094,2048,481,1761,146,3,0 +collidable,3,changed,197,2125,2073,484,1747,137,4,0 +collidable,3,changed,198,2038,1988,483,1702,137,4,1 +collidable,3,changed,199,2079,1892,473,1603,138,5,0 +collidable,3,changed,200,2022,1966,502,1672,141,4,0 +collidable,3,changed,201,1873,1829,500,1533,138,5,0 +collidable,3,changed,202,1894,1841,493,1567,131,13,0 +collidable,3,changed,203,1939,1890,492,1603,136,4,0 +collidable,3,changed,204,1792,1748,506,1471,113,3,1 +collidable,3,changed,205,1801,1748,493,1475,135,4,0 +collidable,3,changed,206,1891,1704,482,1406,120,4,1 +collidable,3,changed,207,1784,1734,477,1462,119,4,1 +collidable,3,changed,208,1754,1704,465,1390,123,4,0 +collidable,3,changed,209,1658,1612,461,1358,105,5,0 +collidable,3,changed,210,1666,1616,457,1356,119,4,0 +collidable,3,changed,211,1612,1532,440,1268,113,9,0 +collidable,3,changed,212,1619,1486,435,1248,102,11,1 +collidable,3,changed,213,1668,1619,433,1334,110,3,0 +collidable,3,changed,214,1662,1577,435,1313,100,9,0 +collidable,3,changed,215,1553,1500,430,1226,112,4,0 +collidable,3,changed,216,1518,1470,422,1221,107,3,0 +collidable,3,changed,217,1505,1461,440,1224,105,5,0 +collidable,3,changed,218,1530,1481,438,1209,113,3,0 +collidable,3,changed,219,1541,1394,433,1173,94,3,1 +collidable,3,changed,220,1582,1530,419,1208,108,3,0 +collidable,3,changed,221,1499,1452,416,1175,104,3,0 +collidable,3,changed,222,1570,1458,414,1221,109,5,0 +collidable,3,changed,223,1547,1498,440,1186,106,3,1 +collidable,3,changed,224,1438,1391,451,1133,90,3,0 +collidable,3,changed,225,1599,1484,443,1183,105,4,0 +collidable,3,changed,226,1467,1274,438,1048,101,3,1 +collidable,3,changed,227,1364,1317,432,1089,97,3,1 +collidable,3,changed,228,1397,1346,427,1114,102,4,1 +collidable,3,changed,229,1343,1292,421,1078,88,4,0 +collidable,3,changed,230,1425,1373,411,1136,95,4,0 +collidable,3,changed,231,1358,1311,407,1059,101,3,0 +collidable,3,changed,232,1302,1257,401,1045,95,3,0 +collidable,3,changed,233,1405,1258,391,1018,97,11,0 +collidable,3,changed,234,1327,1224,386,984,85,6,1 +collidable,3,changed,235,1303,1249,377,1014,96,3,0 +collidable,3,changed,236,1274,1221,366,968,91,3,0 +collidable,3,changed,237,1228,1178,364,953,89,9,1 +collidable,3,changed,238,1303,1251,367,1006,90,3,0 +collidable,3,changed,239,1443,1177,362,938,79,4,0 +stock-default,1,baseline,0,28292,1070,2108,0,627,176,0 +stock-default,1,baseline,1,3979,3927,2108,2935,504,4,0 +stock-default,1,baseline,2,3718,3651,2108,2756,519,5,0 +stock-default,1,baseline,3,3747,3683,2108,2766,545,4,0 +stock-default,1,baseline,4,3780,3685,2109,2727,593,7,0 +stock-default,1,baseline,5,3766,3721,2151,2797,558,6,0 +stock-default,1,baseline,6,3760,3674,2179,2784,529,9,0 +stock-default,1,baseline,7,3774,3736,2161,2819,513,11,0 +stock-default,1,baseline,8,3663,3600,2139,2705,535,17,0 +stock-default,1,baseline,9,3696,3644,2130,2739,584,5,1 +stock-default,1,baseline,10,3651,3596,2132,2680,547,16,0 +stock-default,1,baseline,11,3544,3482,2137,2639,517,11,0 +stock-default,1,baseline,12,3598,3552,2130,2690,513,6,0 +stock-default,1,baseline,13,3553,3511,2132,2654,529,5,1 +stock-default,1,baseline,14,3665,3610,2127,2690,581,15,0 +stock-default,1,baseline,15,3601,3498,2117,2621,526,9,1 +stock-default,1,baseline,16,3563,3518,2115,2625,546,5,0 +stock-default,1,baseline,17,3541,3496,2106,2632,518,4,0 +stock-default,1,baseline,18,3600,3559,2099,2594,539,4,0 +stock-default,1,baseline,19,3622,3575,2094,2625,613,5,1 +stock-default,1,baseline,20,3473,3431,2091,2562,534,5,0 +stock-default,1,baseline,21,3984,3516,2088,2635,504,3,0 +stock-default,1,baseline,22,3629,3537,2083,2636,524,9,1 +stock-default,1,baseline,23,3596,3541,2080,2673,544,5,0 +stock-default,1,baseline,24,3677,3605,2075,2625,620,11,0 +stock-default,1,baseline,25,3522,3480,2070,2583,549,5,0 +stock-default,1,baseline,26,3732,3683,2068,2692,533,15,0 +stock-default,1,baseline,27,3655,3565,2066,2674,530,11,0 +stock-default,1,baseline,28,3622,3536,2066,2659,538,5,1 +stock-default,1,baseline,29,3641,3569,2064,2640,581,4,0 +stock-default,1,baseline,30,3687,3634,2059,2702,566,5,0 +stock-default,1,baseline,31,3702,3654,2096,2771,524,5,1 +stock-default,1,baseline,32,3648,3605,2095,2750,529,5,0 +stock-default,1,baseline,33,3696,3637,2097,2695,543,13,0 +stock-default,1,baseline,34,3639,3598,2095,2696,572,4,0 +stock-default,1,baseline,35,3681,3632,2081,2736,535,6,0 +stock-default,1,baseline,36,3767,3723,2077,2771,546,7,0 +stock-default,1,baseline,37,3680,3636,2077,2767,535,5,0 +stock-default,1,baseline,38,3700,3657,2075,2781,536,4,0 +stock-default,1,baseline,39,3868,3826,2075,2798,635,4,1 +stock-default,1,baseline,40,3726,3689,2073,2781,554,4,0 +stock-default,1,baseline,41,3818,3716,2075,2786,529,14,0 +stock-default,1,baseline,42,3799,3758,2106,2865,535,4,1 +stock-default,1,baseline,43,3773,3717,2119,2790,552,6,0 +stock-default,1,baseline,44,3734,3691,2135,2765,578,4,0 +stock-default,1,baseline,45,3824,3758,2162,2828,555,4,1 +stock-default,1,baseline,46,3777,3725,2185,2811,533,5,0 +stock-default,1,baseline,47,3749,3674,2218,2798,534,4,0 +stock-default,1,baseline,48,3906,3853,2261,2921,554,5,0 +stock-default,1,baseline,49,4218,4142,2292,2947,613,6,0 +stock-default,1,baseline,50,3862,3820,2310,2878,577,14,0 +stock-default,1,baseline,51,4002,3959,2333,2965,533,4,0 +stock-default,1,baseline,52,3946,3884,2354,2907,528,15,1 +stock-default,1,baseline,53,3873,3831,2378,2925,547,5,0 +stock-default,1,baseline,54,4206,4085,2403,2978,662,14,1 +stock-default,1,baseline,55,4009,3960,2418,2976,561,5,0 +stock-default,1,baseline,56,3941,3897,2431,2948,541,5,0 +stock-default,1,baseline,57,3937,3896,2448,2960,545,5,1 +stock-default,1,baseline,58,3949,3911,2464,2939,560,5,1 +stock-default,1,baseline,59,4037,3920,2479,2931,593,13,0 +stock-default,1,baseline,60,31243,4705,4591,2977,1122,5,0 +stock-default,1,baseline,61,8214,8050,4616,6004,1113,12,0 +stock-default,1,baseline,62,7816,7736,4611,5736,1106,6,0 +stock-default,1,baseline,63,7795,7723,4613,5722,1172,5,0 +stock-default,1,baseline,64,7843,7801,4634,5753,1206,8,1 +stock-default,1,baseline,65,7843,7770,4693,5808,1131,4,0 +stock-default,1,baseline,66,7990,7940,4806,5996,1129,18,0 +stock-default,1,baseline,67,8082,7901,4844,5792,1153,6,1 +stock-default,1,baseline,68,8274,8190,4795,5932,1250,13,0 +stock-default,1,baseline,69,8680,8634,4784,6398,1253,9,0 +stock-default,1,baseline,70,7761,7689,4771,5670,1183,10,0 +stock-default,1,baseline,71,7767,7721,4760,5728,1137,12,0 +stock-default,1,baseline,72,7676,7594,4726,5652,1096,11,0 +stock-default,1,baseline,73,7709,7487,4697,5492,1131,12,0 +stock-default,1,baseline,74,7738,7667,4676,5638,1189,11,0 +stock-default,1,baseline,75,7592,7519,4675,5547,1113,20,1 +stock-default,1,baseline,76,7591,7548,4635,5593,1084,11,0 +stock-default,1,baseline,77,7677,7630,4601,5527,1138,66,0 +stock-default,1,baseline,78,7405,7331,4567,5406,1101,6,1 +stock-default,1,baseline,79,7536,7488,4532,5382,1243,23,0 +stock-default,1,baseline,80,7600,7392,4508,5416,1116,6,0 +stock-default,1,baseline,81,7652,7557,4485,5587,1062,13,0 +stock-default,1,baseline,82,7351,7308,4475,5436,1048,10,0 +stock-default,1,baseline,83,7455,7394,4435,5499,1062,10,0 +stock-default,1,baseline,84,7494,7417,4391,5393,1219,11,2 +stock-default,1,baseline,85,7548,7475,4358,5544,1098,14,0 +stock-default,1,baseline,86,7408,7360,4332,5430,1080,11,0 +stock-default,1,baseline,87,7542,7298,4304,5371,1046,6,1 +stock-default,1,baseline,88,7536,7442,4262,5538,1076,15,2 +stock-default,1,baseline,89,7973,7502,4268,5516,1155,7,0 +stock-default,1,baseline,90,7553,7479,4228,5496,1081,6,0 +stock-default,1,baseline,91,7204,7158,4180,5301,1036,8,0 +stock-default,1,baseline,92,7366,7325,4122,5393,1044,9,0 +stock-default,1,baseline,93,7366,7159,4091,5247,1127,11,0 +stock-default,1,baseline,94,7203,7156,4053,5244,1144,8,1 +stock-default,1,baseline,95,7160,7089,4028,5273,1051,8,1 +stock-default,1,baseline,96,7112,7032,3968,5222,1027,13,0 +stock-default,1,baseline,97,7097,7019,3936,5256,1025,16,0 +stock-default,1,baseline,98,7128,7036,3910,5156,1082,19,1 +stock-default,1,baseline,99,7118,7073,3887,5212,1120,10,0 +stock-default,1,baseline,100,7587,7351,3864,5345,1079,17,0 +stock-default,1,baseline,101,6868,6799,3848,5002,1062,12,1 +stock-default,1,baseline,102,7237,7198,3768,5248,999,8,0 +stock-default,1,baseline,103,6885,6809,3742,5032,1022,12,0 +stock-default,1,baseline,104,6868,6790,3716,4962,1108,11,1 +stock-default,1,baseline,105,6901,6829,3677,5022,1016,11,1 +stock-default,1,baseline,106,7121,6870,3691,5192,980,9,0 +stock-default,1,baseline,107,7036,6941,3678,5143,982,22,1 +stock-default,1,baseline,108,6606,6566,3681,4926,1009,9,0 +stock-default,1,baseline,109,6923,6848,3637,4947,1096,6,1 +stock-default,1,baseline,110,6700,6655,3646,4914,1030,10,0 +stock-default,1,baseline,111,6573,6514,3627,4894,962,8,0 +stock-default,1,baseline,112,6795,6550,3592,4904,955,7,0 +stock-default,1,baseline,113,6780,6722,3576,5047,985,6,0 +stock-default,1,baseline,114,6744,6700,3533,4861,1101,12,0 +stock-default,1,baseline,115,6550,6464,3519,4761,986,31,0 +stock-default,1,baseline,116,6527,6467,3490,4784,953,5,0 +stock-default,1,baseline,117,6452,6406,3443,4763,898,10,0 +stock-default,1,baseline,118,6239,6150,3424,4601,927,6,1 +stock-default,1,baseline,119,6609,6328,3392,4546,1047,6,1 +stock-default,1,baseline,120,32000,6684,5490,4470,1530,5,0 +stock-default,1,baseline,121,10462,10401,5462,7578,1516,10,0 +stock-default,1,baseline,122,10002,9957,5404,7311,1470,6,0 +stock-default,1,baseline,123,9935,9885,5357,7291,1510,13,0 +stock-default,1,baseline,124,10240,10103,5351,7400,1668,6,0 +stock-default,1,baseline,125,10060,9977,5345,7371,1506,13,0 +stock-default,1,baseline,126,9879,9838,5369,7253,1478,6,1 +stock-default,1,baseline,127,9660,9602,5344,7166,1440,6,0 +stock-default,1,baseline,128,9590,9543,5277,6989,1489,6,0 +stock-default,1,baseline,129,9886,9809,5232,7092,1676,9,1 +stock-default,1,baseline,130,9438,9376,5185,6804,1480,5,1 +stock-default,1,baseline,131,9454,9225,5152,6799,1452,6,0 +stock-default,1,baseline,132,9470,9381,5130,6922,1414,10,1 +stock-default,1,baseline,133,9114,9073,5126,6666,1473,5,0 +stock-default,1,baseline,134,9375,9306,5118,6812,1596,16,1 +stock-default,1,baseline,135,9306,9239,5096,6794,1509,5,0 +stock-default,1,baseline,136,8974,8899,5049,6555,1419,5,0 +stock-default,1,baseline,137,9253,9033,4985,6617,1400,5,0 +stock-default,1,baseline,138,9182,9142,4951,6688,1438,6,1 +stock-default,1,baseline,139,9134,9072,4931,6552,1548,5,0 +stock-default,1,baseline,140,9224,9172,4891,6698,1444,5,1 +stock-default,1,baseline,141,9034,8994,4874,6651,1455,5,1 +stock-default,1,baseline,142,8915,8875,4849,6538,1357,5,0 +stock-default,1,baseline,143,9123,8790,4828,6511,1397,9,0 +stock-default,1,baseline,144,9214,9153,4790,6639,1522,6,0 +stock-default,1,baseline,145,9063,8992,4729,6385,1549,7,0 +stock-default,1,baseline,146,8657,8606,4716,6401,1367,5,0 +stock-default,1,baseline,147,8700,8659,4691,6340,1437,6,0 +stock-default,1,baseline,148,8731,8688,4676,6387,1390,5,0 +stock-default,1,baseline,149,8944,8896,4603,6343,1542,5,0 +stock-default,1,baseline,150,8825,8643,4555,6296,1373,6,0 +stock-default,1,baseline,151,8330,8289,4521,6136,1281,6,1 +stock-default,1,baseline,152,8343,8298,4489,6128,1277,4,0 +stock-default,1,baseline,153,8352,8314,4441,6092,1307,5,0 +stock-default,1,baseline,154,8431,8357,4396,6010,1437,6,1 +stock-default,1,baseline,155,8262,8221,4325,5846,1415,5,0 +stock-default,1,baseline,156,8209,7979,4289,5912,1239,5,0 +stock-default,1,baseline,157,8389,7964,4226,5784,1225,5,0 +stock-default,1,baseline,158,8235,8196,4173,6002,1269,5,0 +stock-default,1,baseline,159,8224,8149,4132,5836,1350,12,1 +stock-default,1,baseline,160,8043,7976,4104,5928,1234,9,0 +stock-default,1,baseline,161,7883,7811,4075,5786,1219,5,1 +stock-default,1,baseline,162,8399,7969,4066,6021,1179,5,0 +stock-default,1,baseline,163,7852,7795,4028,5764,1214,17,0 +stock-default,1,baseline,164,7861,7796,3996,5668,1333,5,0 +stock-default,1,baseline,165,7714,7640,3949,5577,1214,5,0 +stock-default,1,baseline,166,7615,7575,3913,5495,1178,6,0 +stock-default,1,baseline,167,7578,7538,3867,5513,1155,5,0 +stock-default,1,baseline,168,7552,7512,3828,5415,1289,5,0 +stock-default,1,baseline,169,7888,7620,3803,5550,1291,5,0 +stock-default,1,baseline,170,7403,7335,3767,5393,1160,5,0 +stock-default,1,baseline,171,7522,7454,3708,5454,1140,5,0 +stock-default,1,baseline,172,7137,7095,3685,5258,1098,4,0 +stock-default,1,baseline,173,7371,7317,3635,5316,1179,4,1 +stock-default,1,baseline,174,7582,7508,3584,5354,1240,14,0 +stock-default,1,baseline,175,7053,6833,3549,4987,1106,5,0 +stock-default,1,baseline,176,6923,6877,3492,5036,1054,17,0 +stock-default,1,baseline,177,6708,6658,3470,4923,1062,12,0 +stock-default,1,baseline,178,6886,6825,3441,5029,1082,4,1 +stock-default,1,baseline,179,6864,6760,3410,4820,1240,5,0 +stock-default,1,baseline,180,31864,7561,5234,4769,1615,5,0 +stock-default,1,baseline,181,10023,9820,5215,7174,1527,9,0 +stock-default,1,baseline,182,9790,9727,5193,7083,1575,5,0 +stock-default,1,baseline,183,10015,9975,5165,7319,1582,6,1 +stock-default,1,baseline,184,9968,9923,5130,7157,1713,5,0 +stock-default,1,baseline,185,9451,9402,5157,6966,1546,5,0 +stock-default,1,baseline,186,9669,9593,5132,7031,1517,6,0 +stock-default,1,baseline,187,9661,9426,5153,6885,1581,6,0 +stock-default,1,baseline,188,9841,9750,5138,7138,1641,5,0 +stock-default,1,baseline,189,9660,9616,5095,6843,1698,5,0 +stock-default,1,baseline,190,9518,9479,5099,7042,1557,6,0 +stock-default,1,baseline,191,9591,9547,5084,7045,1521,6,0 +stock-default,1,baseline,192,9304,9240,5071,6756,1571,4,1 +stock-default,1,baseline,193,9440,9201,5023,6601,1554,6,1 +stock-default,1,baseline,194,9364,9289,4978,6505,1691,9,1 +stock-default,1,baseline,195,9180,9137,4942,6507,1715,5,0 +stock-default,1,baseline,196,8818,8780,4912,6435,1444,4,0 +stock-default,1,baseline,197,8993,8949,4881,6564,1442,7,0 +stock-default,1,baseline,198,8949,8906,4839,6476,1454,8,0 +stock-default,1,baseline,199,9256,9191,4780,6532,1586,10,0 +stock-default,1,baseline,200,9210,8994,4742,6585,1462,5,0 +stock-default,1,baseline,201,9254,9165,4704,6694,1456,8,1 +stock-default,1,baseline,202,8656,8582,4691,6357,1394,6,0 +stock-default,1,baseline,203,8950,8912,4643,6478,1426,4,1 +stock-default,1,baseline,204,9013,8972,4598,6399,1555,6,0 +stock-default,1,baseline,205,8663,8622,4597,6355,1418,5,0 +stock-default,1,baseline,206,8900,8708,4535,6344,1397,5,0 +stock-default,1,baseline,207,8652,8582,4488,6248,1332,12,0 +stock-default,1,baseline,208,8593,8525,4456,6207,1388,5,0 +stock-default,1,baseline,209,8703,8642,4415,6279,1481,5,0 +stock-default,1,baseline,210,8364,8323,4392,6102,1383,4,0 +stock-default,1,baseline,211,8263,8227,4363,6051,1325,5,0 +stock-default,1,baseline,212,8377,8332,4334,6143,1299,5,0 +stock-default,1,baseline,213,8671,8230,4297,6056,1289,5,0 +stock-default,1,baseline,214,8200,8154,4279,5895,1436,5,0 +stock-default,1,baseline,215,8250,8210,4228,5898,1412,5,0 +stock-default,1,baseline,216,8252,8181,4148,5911,1266,4,0 +stock-default,1,baseline,217,8016,7942,4112,5913,1242,6,0 +stock-default,1,baseline,218,8124,8044,4093,5923,1300,12,1 +stock-default,1,baseline,219,8448,8410,4053,5950,1558,6,1 +stock-default,1,baseline,220,8247,8049,3987,5766,1297,8,0 +stock-default,1,baseline,221,8055,7981,3917,5737,1210,5,1 +stock-default,1,baseline,222,7800,7736,3900,5686,1202,5,0 +stock-default,1,baseline,223,7755,7716,3864,5613,1251,5,1 +stock-default,1,baseline,224,8112,8066,3830,5800,1364,5,0 +stock-default,1,baseline,225,7783,7362,3788,5357,1183,4,0 +stock-default,1,baseline,226,7504,7299,3754,5387,1130,5,0 +stock-default,1,baseline,227,8742,8691,3721,6275,1436,7,0 +stock-default,1,baseline,228,7722,7645,3651,5526,1225,4,1 +stock-default,1,baseline,229,7396,7320,3598,5213,1301,5,1 +stock-default,1,baseline,230,7285,7238,3540,5265,1107,4,0 +stock-default,1,baseline,231,7011,6924,3508,5125,1072,9,1 +stock-default,1,baseline,232,6944,6896,3498,5202,1084,6,1 +stock-default,1,baseline,233,7088,6863,3472,5022,1132,5,0 +stock-default,1,baseline,234,7454,7382,3429,5271,1223,5,1 +stock-default,1,baseline,235,6783,6699,3413,4938,1118,5,0 +stock-default,1,baseline,236,7040,6986,3368,5116,1092,5,0 +stock-default,1,baseline,237,6875,6831,3334,5009,1042,12,0 +stock-default,1,baseline,238,6888,6842,3300,5057,1059,4,0 +stock-default,1,baseline,239,6871,6769,3273,4933,1160,3,0 +stock-default,2,baseline,0,27755,1109,2108,0,621,212,0 +stock-default,2,baseline,1,4058,4009,2108,3024,507,4,0 +stock-default,2,baseline,2,3951,3898,2108,2986,512,5,0 +stock-default,2,baseline,3,3975,3891,2108,3020,540,5,0 +stock-default,2,baseline,4,4127,4040,2109,3052,641,5,1 +stock-default,2,baseline,5,4056,3980,2151,3010,545,7,0 +stock-default,2,baseline,6,3976,3905,2179,3031,526,4,0 +stock-default,2,baseline,7,3975,3897,2161,2955,529,4,0 +stock-default,2,baseline,8,3941,3858,2139,2963,558,5,0 +stock-default,2,baseline,9,4021,3940,2130,2967,588,6,1 +stock-default,2,baseline,10,3984,3910,2132,2930,545,5,0 +stock-default,2,baseline,11,3904,3851,2137,2976,527,4,0 +stock-default,2,baseline,12,4011,3962,2130,2993,547,4,0 +stock-default,2,baseline,13,3949,3873,2132,2929,554,13,0 +stock-default,2,baseline,14,3908,3858,2127,2907,584,3,0 +stock-default,2,baseline,15,3843,3792,2117,2878,563,4,0 +stock-default,2,baseline,16,3808,3715,2115,2835,530,12,1 +stock-default,2,baseline,17,3837,3786,2106,2896,531,18,1 +stock-default,2,baseline,18,3796,3710,2099,2820,542,11,1 +stock-default,2,baseline,19,3831,3783,2094,2854,578,15,1 +stock-default,2,baseline,20,3829,3740,2091,2847,559,5,0 +stock-default,2,baseline,21,3856,3809,2088,2934,530,4,0 +stock-default,2,baseline,22,3709,3628,2083,2767,525,4,0 +stock-default,2,baseline,23,3738,3665,2080,2795,537,4,1 +stock-default,2,baseline,24,3853,3810,2075,2844,607,4,1 +stock-default,2,baseline,25,3753,3708,2070,2799,555,5,0 +stock-default,2,baseline,26,3714,3653,2068,2763,536,4,0 +stock-default,2,baseline,27,3756,3706,2066,2808,549,7,1 +stock-default,2,baseline,28,3784,3742,2066,2835,542,5,0 +stock-default,2,baseline,29,4005,3932,2064,2909,592,8,1 +stock-default,2,baseline,30,3770,3727,2059,2842,541,5,0 +stock-default,2,baseline,31,3854,3800,2096,2897,521,5,1 +stock-default,2,baseline,32,3814,3769,2095,2899,527,14,0 +stock-default,2,baseline,33,3839,3763,2097,2854,551,5,0 +stock-default,2,baseline,34,3836,3791,2095,2871,576,14,0 +stock-default,2,baseline,35,3874,3832,2081,2948,542,4,0 +stock-default,2,baseline,36,3940,3900,2077,2994,534,5,1 +stock-default,2,baseline,37,3957,3910,2077,2978,536,5,1 +stock-default,2,baseline,38,3829,3754,2075,2872,542,4,1 +stock-default,2,baseline,39,3967,3892,2075,2935,596,11,1 +stock-default,2,baseline,40,3953,3872,2073,2939,553,11,0 +stock-default,2,baseline,41,3881,3831,2075,2947,539,6,0 +stock-default,2,baseline,42,3765,3725,2106,2922,514,4,0 +stock-default,2,baseline,43,3967,3906,2119,2943,540,4,0 +stock-default,2,baseline,44,3922,3849,2135,2901,592,5,0 +stock-default,2,baseline,45,3981,3914,2162,3024,553,4,0 +stock-default,2,baseline,46,3899,3855,2185,2972,546,4,0 +stock-default,2,baseline,47,3917,3872,2218,3001,534,4,1 +stock-default,2,baseline,48,4094,4026,2261,3070,570,8,0 +stock-default,2,baseline,49,4124,4076,2292,3076,606,14,0 +stock-default,2,baseline,50,3924,3877,2310,2990,547,4,0 +stock-default,2,baseline,51,4441,3982,2333,3042,537,4,0 +stock-default,2,baseline,52,4179,3986,2354,3081,533,5,0 +stock-default,2,baseline,53,4160,4070,2378,3151,550,12,1 +stock-default,2,baseline,54,4195,4119,2403,3116,616,4,0 +stock-default,2,baseline,55,4212,4172,2418,3147,575,5,0 +stock-default,2,baseline,56,4108,4062,2431,3102,528,4,1 +stock-default,2,baseline,57,4002,3960,2448,3017,533,4,0 +stock-default,2,baseline,58,3997,3958,2464,3021,549,5,0 +stock-default,2,baseline,59,4232,4000,2479,3031,603,5,1 +stock-default,2,baseline,60,30943,4816,4591,3023,1146,5,2 +stock-default,2,baseline,61,8187,8149,4616,6082,1095,8,0 +stock-default,2,baseline,62,7979,7900,4611,5946,1109,12,0 +stock-default,2,baseline,63,8181,8130,4613,6079,1233,13,0 +stock-default,2,baseline,64,8169,8106,4634,6093,1191,5,1 +stock-default,2,baseline,65,8267,8083,4693,6058,1178,5,0 +stock-default,2,baseline,66,8257,8179,4806,6233,1134,6,1 +stock-default,2,baseline,67,8202,8124,4844,6115,1110,6,1 +stock-default,2,baseline,68,8126,8077,4795,6013,1118,6,1 +stock-default,2,baseline,69,8069,8027,4784,5977,1199,13,1 +stock-default,2,baseline,70,7985,7919,4771,5928,1139,13,0 +stock-default,2,baseline,71,7844,7799,4760,5851,1104,10,0 +stock-default,2,baseline,72,8064,7864,4726,5911,1094,9,1 +stock-default,2,baseline,73,7950,7884,4697,5978,1082,8,1 +stock-default,2,baseline,74,8107,8022,4676,5952,1211,21,1 +stock-default,2,baseline,75,8126,8068,4675,5970,1115,10,0 +stock-default,2,baseline,76,8036,7987,4635,5939,1149,24,0 +stock-default,2,baseline,77,7846,7772,4601,5811,1081,10,0 +stock-default,2,baseline,78,7819,7737,4567,5836,1078,16,0 +stock-default,2,baseline,79,8269,8064,4532,5960,1206,15,1 +stock-default,2,baseline,80,7969,7909,4508,5950,1099,10,1 +stock-default,2,baseline,81,7943,7881,4485,5940,1065,11,0 +stock-default,2,baseline,82,7784,7745,4475,5909,1038,13,0 +stock-default,2,baseline,83,7896,7802,4435,5894,1062,14,1 +stock-default,2,baseline,84,7924,7878,4391,5817,1190,8,1 +stock-default,2,baseline,85,7959,7872,4358,5859,1133,54,1 +stock-default,2,baseline,86,8123,7909,4332,5918,1146,7,1 +stock-default,2,baseline,87,7897,7829,4304,5883,1088,11,0 +stock-default,2,baseline,88,7903,7856,4262,5932,1106,8,0 +stock-default,2,baseline,89,7820,7759,4268,5769,1162,5,0 +stock-default,2,baseline,90,7843,7802,4228,5850,1055,6,0 +stock-default,2,baseline,91,7791,7744,4180,5822,1106,6,0 +stock-default,2,baseline,92,7934,7700,4122,5751,1036,8,0 +stock-default,2,baseline,93,7721,7669,4091,5688,1032,15,1 +stock-default,2,baseline,94,7806,7741,4053,5737,1191,19,1 +stock-default,2,baseline,95,7470,7425,4028,5599,1056,4,0 +stock-default,2,baseline,96,7562,7498,3968,5638,1051,15,1 +stock-default,2,baseline,97,7447,7384,3936,5543,1084,7,0 +stock-default,2,baseline,98,7308,7267,3910,5449,1041,8,1 +stock-default,2,baseline,99,7699,7422,3887,5503,1167,13,1 +stock-default,2,baseline,100,7612,7567,3864,5558,1138,8,1 +stock-default,2,baseline,101,7387,7327,3848,5468,1055,16,2 +stock-default,2,baseline,102,7456,7396,3768,5460,1019,8,0 +stock-default,2,baseline,103,7112,7060,3742,5309,1001,8,1 +stock-default,2,baseline,104,7447,7369,3716,5488,1120,14,0 +stock-default,2,baseline,105,7282,7230,3677,5415,1042,10,0 +stock-default,2,baseline,106,7495,7194,3691,5502,981,10,1 +stock-default,2,baseline,107,7407,7365,3678,5530,976,7,0 +stock-default,2,baseline,108,7126,7052,3681,5325,1011,13,1 +stock-default,2,baseline,109,7493,7422,3637,5417,1087,16,0 +stock-default,2,baseline,110,7130,7076,3646,5354,999,9,0 +stock-default,2,baseline,111,7076,7021,3627,5335,996,8,1 +stock-default,2,baseline,112,6967,6921,3592,5161,958,7,0 +stock-default,2,baseline,113,7097,6869,3576,5202,1003,5,1 +stock-default,2,baseline,114,7330,7255,3533,5319,1116,11,1 +stock-default,2,baseline,115,6983,6944,3519,5159,1064,10,1 +stock-default,2,baseline,116,6820,6776,3490,5099,966,10,0 +stock-default,2,baseline,117,6828,6787,3443,5082,945,7,0 +stock-default,2,baseline,118,6905,6859,3424,5195,994,10,0 +stock-default,2,baseline,119,7156,6481,3392,4734,1029,4,1 +stock-default,2,baseline,120,32809,7003,5490,4752,1539,4,0 +stock-default,2,baseline,121,10446,10401,5462,7626,1468,10,0 +stock-default,2,baseline,122,10728,10683,5404,7843,1500,6,0 +stock-default,2,baseline,123,10528,10483,5357,7832,1524,6,0 +stock-default,2,baseline,124,10437,10256,5351,7572,1643,6,0 +stock-default,2,baseline,125,10224,10150,5345,7606,1483,16,1 +stock-default,2,baseline,126,10362,10320,5369,7762,1477,6,0 +stock-default,2,baseline,127,10166,10089,5344,7481,1575,5,0 +stock-default,2,baseline,128,10034,9956,5277,7413,1477,8,1 +stock-default,2,baseline,129,9908,9839,5232,7143,1610,5,1 +stock-default,2,baseline,130,10045,9843,5185,7223,1517,5,0 +stock-default,2,baseline,131,9756,9679,5152,7305,1378,5,0 +stock-default,2,baseline,132,9679,9636,5130,7196,1392,5,0 +stock-default,2,baseline,133,9443,9377,5126,6992,1437,12,1 +stock-default,2,baseline,134,9589,9527,5118,6965,1636,5,0 +stock-default,2,baseline,135,9470,9400,5096,6956,1483,5,0 +stock-default,2,baseline,136,9457,9385,5049,7066,1399,4,0 +stock-default,2,baseline,137,9861,9621,4985,7174,1398,5,1 +stock-default,2,baseline,138,9655,9585,4951,7158,1426,4,1 +stock-default,2,baseline,139,9379,9329,4931,6854,1547,15,0 +stock-default,2,baseline,140,9529,9443,4891,7016,1469,5,3 +stock-default,2,baseline,141,9556,9513,4874,7172,1385,6,0 +stock-default,2,baseline,142,9400,9314,4849,6962,1346,6,2 +stock-default,2,baseline,143,9370,9327,4828,7043,1384,16,0 +stock-default,2,baseline,144,9746,9475,4790,6907,1534,5,1 +stock-default,2,baseline,145,9220,9179,4729,6747,1370,5,1 +stock-default,2,baseline,146,9024,8952,4716,6643,1340,6,0 +stock-default,2,baseline,147,8886,8820,4691,6598,1335,7,2 +stock-default,2,baseline,148,9089,9049,4676,6615,1543,5,0 +stock-default,2,baseline,149,9429,9386,4603,6861,1480,6,0 +stock-default,2,baseline,150,8854,8812,4555,6483,1375,5,0 +stock-default,2,baseline,151,9121,8922,4521,6709,1292,5,0 +stock-default,2,baseline,152,8719,8650,4489,6435,1335,6,1 +stock-default,2,baseline,153,8956,8915,4441,6604,1352,5,0 +stock-default,2,baseline,154,9251,9197,4396,6547,1636,8,0 +stock-default,2,baseline,155,9295,9232,4325,6742,1413,5,0 +stock-default,2,baseline,156,8656,8609,4289,6375,1368,6,0 +stock-default,2,baseline,157,8464,8420,4226,6226,1232,5,0 +stock-default,2,baseline,158,8922,8511,4173,6351,1264,5,0 +stock-default,2,baseline,159,8593,8529,4132,6191,1368,12,0 +stock-default,2,baseline,160,8061,7996,4104,5966,1230,14,0 +stock-default,2,baseline,161,8001,7960,4075,5983,1197,5,0 +stock-default,2,baseline,162,7946,7883,4066,5986,1164,5,0 +stock-default,2,baseline,163,8186,8144,4028,6120,1193,4,0 +stock-default,2,baseline,164,8171,7956,3996,5834,1329,5,0 +stock-default,2,baseline,165,7938,7898,3949,5859,1193,5,0 +stock-default,2,baseline,166,7717,7675,3913,5717,1139,5,0 +stock-default,2,baseline,167,8012,7919,3867,5880,1150,5,0 +stock-default,2,baseline,168,7597,7523,3828,5589,1160,11,1 +stock-default,2,baseline,169,7852,7811,3803,5716,1351,5,0 +stock-default,2,baseline,170,7648,7602,3767,5634,1154,4,1 +stock-default,2,baseline,171,7814,7588,3708,5561,1119,5,0 +stock-default,2,baseline,172,7357,7317,3685,5532,1089,4,1 +stock-default,2,baseline,173,7643,7589,3635,5635,1145,5,0 +stock-default,2,baseline,174,7527,7448,3584,5405,1238,13,2 +stock-default,2,baseline,175,7203,7124,3549,5280,1123,5,0 +stock-default,2,baseline,176,7179,7109,3492,5249,1063,5,0 +stock-default,2,baseline,177,7081,6848,3470,5134,1048,4,0 +stock-default,2,baseline,178,7115,7058,3441,5173,1102,7,0 +stock-default,2,baseline,179,7127,7028,3410,5110,1213,4,0 +stock-default,2,baseline,180,33465,7837,5234,5034,1595,5,0 +stock-default,2,baseline,181,10130,10058,5215,7390,1529,16,1 +stock-default,2,baseline,182,10189,9985,5193,7397,1588,5,0 +stock-default,2,baseline,183,10545,10081,5165,7475,1597,5,0 +stock-default,2,baseline,184,10361,10292,5130,7419,1711,5,1 +stock-default,2,baseline,185,9974,9928,5157,7418,1562,5,1 +stock-default,2,baseline,186,10144,10074,5132,7574,1500,5,0 +stock-default,2,baseline,187,9780,9735,5153,7261,1516,5,0 +stock-default,2,baseline,188,9746,9699,5138,7137,1616,5,0 +stock-default,2,baseline,189,10301,10074,5095,7317,1696,6,0 +stock-default,2,baseline,190,10001,9945,5099,7441,1604,9,0 +stock-default,2,baseline,191,9688,9614,5084,7063,1502,15,1 +stock-default,2,baseline,192,9846,9802,5071,7328,1540,5,0 +stock-default,2,baseline,193,9732,9653,5023,6951,1656,13,1 +stock-default,2,baseline,194,9735,9676,4978,6948,1666,5,1 +stock-default,2,baseline,195,9484,9288,4942,6838,1512,6,0 +stock-default,2,baseline,196,9383,9306,4912,6832,1484,6,0 +stock-default,2,baseline,197,9860,9779,4881,7333,1454,6,0 +stock-default,2,baseline,198,9346,9273,4839,6800,1469,8,0 +stock-default,2,baseline,199,9516,9473,4780,6851,1585,5,1 +stock-default,2,baseline,200,9594,9513,4742,6985,1516,6,1 +stock-default,2,baseline,201,9496,9454,4704,7031,1421,5,0 +stock-default,2,baseline,202,9099,8877,4691,6630,1400,5,1 +stock-default,2,baseline,203,9187,9124,4643,6651,1460,5,1 +stock-default,2,baseline,204,9200,9128,4598,6562,1523,6,0 +stock-default,2,baseline,205,8923,8877,4597,6583,1452,6,0 +stock-default,2,baseline,206,9127,9074,4535,6705,1364,4,0 +stock-default,2,baseline,207,9036,8956,4488,6661,1338,8,0 +stock-default,2,baseline,208,9395,9114,4456,6687,1370,4,0 +stock-default,2,baseline,209,8921,8875,4415,6488,1490,14,0 +stock-default,2,baseline,210,8795,8748,4392,6497,1351,17,0 +stock-default,2,baseline,211,8524,8465,4363,6295,1322,5,1 +stock-default,2,baseline,212,8883,8842,4334,6550,1351,5,0 +stock-default,2,baseline,213,8573,8492,4297,6307,1306,6,1 +stock-default,2,baseline,214,8980,8481,4279,6120,1623,4,0 +stock-default,2,baseline,215,8455,8415,4228,6207,1301,4,0 +stock-default,2,baseline,216,8571,8490,4148,6202,1275,7,1 +stock-default,2,baseline,217,8412,8371,4112,6135,1284,5,0 +stock-default,2,baseline,218,8210,8156,4093,6069,1276,5,0 +stock-default,2,baseline,219,8775,8699,4053,6320,1421,13,1 +stock-default,2,baseline,220,8337,8137,3987,5956,1259,5,0 +stock-default,2,baseline,221,8490,8418,3917,6153,1225,4,0 +stock-default,2,baseline,222,8055,8015,3900,6016,1179,4,0 +stock-default,2,baseline,223,8133,8092,3864,6027,1247,5,0 +stock-default,2,baseline,224,8299,8225,3830,5933,1464,6,2 +stock-default,2,baseline,225,8005,7960,3788,5915,1201,4,1 +stock-default,2,baseline,226,7866,7826,3754,5875,1134,4,0 +stock-default,2,baseline,227,7714,7575,3721,5664,1130,4,0 +stock-default,2,baseline,228,8132,8062,3651,5846,1291,5,0 +stock-default,2,baseline,229,8494,8431,3598,5988,1431,6,1 +stock-default,2,baseline,230,8554,8492,3540,6004,1349,6,1 +stock-default,2,baseline,231,8272,8216,3508,5947,1299,6,0 +stock-default,2,baseline,232,7933,7881,3498,5805,1233,5,0 +stock-default,2,baseline,233,8273,8016,3472,5782,1313,7,1 +stock-default,2,baseline,234,7885,7806,3429,5577,1331,6,1 +stock-default,2,baseline,235,7653,7564,3413,5551,1245,7,0 +stock-default,2,baseline,236,7824,7767,3368,5708,1171,6,0 +stock-default,2,baseline,237,7716,7662,3334,5825,1045,5,1 +stock-default,2,baseline,238,7027,6969,3300,5174,1048,5,0 +stock-default,2,baseline,239,7167,7046,3273,5130,1169,5,1 +stock-default,3,baseline,0,28741,1137,2108,0,665,180,1 +stock-default,3,baseline,1,4208,4156,2108,3116,527,4,0 +stock-default,3,baseline,2,3759,3676,2108,2752,524,8,0 +stock-default,3,baseline,3,3894,3845,2108,2856,567,6,1 +stock-default,3,baseline,4,3857,3809,2109,2880,591,5,1 +stock-default,3,baseline,5,3899,3847,2151,2897,559,5,1 +stock-default,3,baseline,6,3864,3815,2179,2885,531,5,0 +stock-default,3,baseline,7,3808,3763,2161,2845,534,5,0 +stock-default,3,baseline,8,3765,3670,2139,2743,549,5,0 +stock-default,3,baseline,9,3788,3706,2130,2749,585,4,0 +stock-default,3,baseline,10,3696,3645,2132,2738,547,4,0 +stock-default,3,baseline,11,3725,3647,2137,2747,534,5,1 +stock-default,3,baseline,12,3722,3648,2130,2683,535,6,0 +stock-default,3,baseline,13,3733,3687,2132,2749,547,5,0 +stock-default,3,baseline,14,3694,3620,2127,2671,617,6,1 +stock-default,3,baseline,15,3694,3648,2117,2714,542,5,0 +stock-default,3,baseline,16,3699,3653,2115,2733,533,5,1 +stock-default,3,baseline,17,3639,3593,2106,2685,527,6,0 +stock-default,3,baseline,18,3605,3548,2099,2615,540,4,1 +stock-default,3,baseline,19,4050,3570,2094,2633,575,4,0 +stock-default,3,baseline,20,3597,3556,2091,2662,539,3,0 +stock-default,3,baseline,21,3604,3518,2088,2644,529,13,1 +stock-default,3,baseline,22,3760,3713,2083,2761,530,5,0 +stock-default,3,baseline,23,3627,3581,2080,2681,555,4,0 +stock-default,3,baseline,24,3524,3470,2075,2555,581,5,1 +stock-default,3,baseline,25,3490,3442,2070,2551,545,8,1 +stock-default,3,baseline,26,3481,3435,2068,2578,518,10,0 +stock-default,3,baseline,27,3570,3521,2066,2644,528,6,0 +stock-default,3,baseline,28,4123,4067,2066,3123,601,15,0 +stock-default,3,baseline,29,3686,3637,2064,2668,586,7,0 +stock-default,3,baseline,30,3634,3591,2059,2649,546,5,0 +stock-default,3,baseline,31,3642,3565,2096,2684,528,5,1 +stock-default,3,baseline,32,3667,3619,2095,2726,534,15,1 +stock-default,3,baseline,33,3636,3594,2097,2692,532,4,0 +stock-default,3,baseline,34,3544,3500,2095,2598,578,5,0 +stock-default,3,baseline,35,3621,3557,2081,2667,530,5,0 +stock-default,3,baseline,36,3727,3626,2077,2735,513,6,1 +stock-default,3,baseline,37,3669,3628,2077,2723,538,6,0 +stock-default,3,baseline,38,3673,3632,2075,2735,535,5,0 +stock-default,3,baseline,39,3594,3551,2075,2640,587,5,0 +stock-default,3,baseline,40,3646,3554,2073,2658,547,6,0 +stock-default,3,baseline,41,3743,3670,2075,2773,514,5,0 +stock-default,3,baseline,42,3687,3596,2106,2703,520,5,0 +stock-default,3,baseline,43,3813,3740,2119,2786,546,5,1 +stock-default,3,baseline,44,3771,3728,2135,2811,595,5,1 +stock-default,3,baseline,45,3881,3782,2162,2778,569,5,1 +stock-default,3,baseline,46,3794,3744,2185,2831,533,16,0 +stock-default,3,baseline,47,3812,3719,2218,2828,546,5,0 +stock-default,3,baseline,48,3841,3749,2261,2842,554,6,1 +stock-default,3,baseline,49,3900,3808,2292,2826,627,6,2 +stock-default,3,baseline,50,3786,3730,2310,2787,557,5,1 +stock-default,3,baseline,51,3847,3762,2333,2825,533,5,0 +stock-default,3,baseline,52,3899,3855,2354,2956,516,4,0 +stock-default,3,baseline,53,3912,3867,2378,2955,541,6,0 +stock-default,3,baseline,54,3995,3948,2403,2970,596,5,0 +stock-default,3,baseline,55,3978,3864,2418,2872,558,4,0 +stock-default,3,baseline,56,3903,3860,2431,2912,555,5,1 +stock-default,3,baseline,57,3863,3819,2448,2846,554,6,0 +stock-default,3,baseline,58,3862,3821,2464,2865,557,13,1 +stock-default,3,baseline,59,3994,3879,2479,2870,612,14,1 +stock-default,3,baseline,60,31243,4512,4591,2846,1121,5,0 +stock-default,3,baseline,61,8187,8009,4616,5959,1100,8,0 +stock-default,3,baseline,62,7569,7527,4611,5552,1105,16,0 +stock-default,3,baseline,63,7765,7719,4613,5764,1112,16,0 +stock-default,3,baseline,64,7894,7815,4634,5765,1207,15,0 +stock-default,3,baseline,65,7814,7754,4693,5775,1129,10,0 +stock-default,3,baseline,66,7856,7809,4806,5839,1129,14,1 +stock-default,3,baseline,67,7936,7888,4844,5827,1124,6,1 +stock-default,3,baseline,68,7824,7575,4795,5538,1151,6,1 +stock-default,3,baseline,69,7888,7814,4784,5621,1356,13,0 +stock-default,3,baseline,70,7558,7496,4771,5488,1155,11,0 +stock-default,3,baseline,71,7533,7491,4760,5556,1108,11,0 +stock-default,3,baseline,72,7792,7749,4726,5689,1083,14,1 +stock-default,3,baseline,73,7584,7504,4697,5546,1111,9,0 +stock-default,3,baseline,74,7716,7618,4676,5630,1196,12,1 +stock-default,3,baseline,75,7780,7570,4675,5578,1115,10,0 +stock-default,3,baseline,76,7604,7564,4635,5624,1097,6,0 +stock-default,3,baseline,77,7501,7459,4601,5532,1114,11,0 +stock-default,3,baseline,78,7477,7430,4567,5463,1142,12,0 +stock-default,3,baseline,79,7768,7723,4532,5641,1224,9,0 +stock-default,3,baseline,80,7565,7525,4508,5549,1109,12,0 +stock-default,3,baseline,81,7692,7446,4485,5529,1079,5,0 +stock-default,3,baseline,82,7576,7517,4475,5616,1103,11,0 +stock-default,3,baseline,83,7438,7389,4435,5449,1089,7,1 +stock-default,3,baseline,84,8010,7949,4391,5709,1254,9,0 +stock-default,3,baseline,85,7899,7850,4358,5730,1182,18,0 +stock-default,3,baseline,86,7829,7782,4332,5759,1089,9,0 +stock-default,3,baseline,87,8061,7587,4304,5648,1096,10,1 +stock-default,3,baseline,88,7819,7605,4262,5598,1146,10,0 +stock-default,3,baseline,89,7708,7623,4268,5580,1185,22,1 +stock-default,3,baseline,90,7644,7588,4228,5541,1140,10,0 +stock-default,3,baseline,91,7340,7297,4180,5422,1083,8,0 +stock-default,3,baseline,92,7550,7499,4122,5509,1071,11,0 +stock-default,3,baseline,93,7480,7411,4091,5438,1127,11,0 +stock-default,3,baseline,94,7532,7463,4053,5460,1179,9,0 +stock-default,3,baseline,95,7476,7225,4028,5340,1074,25,0 +stock-default,3,baseline,96,7321,7279,3968,5408,1045,10,1 +stock-default,3,baseline,97,7207,7112,3936,5334,1033,18,1 +stock-default,3,baseline,98,7251,7185,3910,5238,1123,12,1 +stock-default,3,baseline,99,7496,7398,3887,5376,1164,15,1 +stock-default,3,baseline,100,7276,7228,3864,5307,1081,15,0 +stock-default,3,baseline,101,6984,6940,3848,5189,1048,7,0 +stock-default,3,baseline,102,7393,7170,3768,5200,1030,7,1 +stock-default,3,baseline,103,7000,6958,3742,5130,1047,14,1 +stock-default,3,baseline,104,7113,7027,3716,5195,1118,19,1 +stock-default,3,baseline,105,7107,7006,3677,5194,1034,10,1 +stock-default,3,baseline,106,7036,6960,3691,5280,976,10,0 +stock-default,3,baseline,107,6986,6945,3678,5193,978,8,0 +stock-default,3,baseline,108,7110,6820,3681,5094,997,6,1 +stock-default,3,baseline,109,7110,7072,3637,5114,1138,11,1 +stock-default,3,baseline,110,6825,6759,3646,5060,995,9,0 +stock-default,3,baseline,111,6854,6811,3627,5140,971,7,0 +stock-default,3,baseline,112,6683,6628,3592,4944,943,9,1 +stock-default,3,baseline,113,6808,6764,3576,5087,999,5,0 +stock-default,3,baseline,114,7047,6971,3533,5042,1116,7,1 +stock-default,3,baseline,115,6851,6616,3519,4910,1011,8,0 +stock-default,3,baseline,116,6618,6575,3490,4920,960,10,0 +stock-default,3,baseline,117,6703,6655,3443,4855,1044,8,0 +stock-default,3,baseline,118,6597,6553,3424,4870,1001,12,1 +stock-default,3,baseline,119,6754,6663,3392,4850,1068,5,0 +stock-default,3,baseline,120,33364,6976,5490,4691,1630,8,1 +stock-default,3,baseline,121,10242,10052,5462,7333,1489,12,0 +stock-default,3,baseline,122,10052,10008,5404,7293,1558,6,1 +stock-default,3,baseline,123,9790,9745,5357,7154,1517,5,0 +stock-default,3,baseline,124,10197,10153,5351,7487,1658,6,0 +stock-default,3,baseline,125,9695,9654,5345,7088,1538,6,0 +stock-default,3,baseline,126,9802,9730,5369,7178,1466,6,0 +stock-default,3,baseline,127,9432,9386,5344,6936,1438,5,1 +stock-default,3,baseline,128,9627,9436,5277,6830,1505,5,1 +stock-default,3,baseline,129,9492,9450,5232,6805,1615,5,0 +stock-default,3,baseline,130,9297,9243,5185,6685,1484,5,0 +stock-default,3,baseline,131,9383,9316,5152,6867,1421,5,1 +stock-default,3,baseline,132,9250,9173,5130,6792,1407,10,1 +stock-default,3,baseline,133,9135,9078,5126,6633,1515,15,0 +stock-default,3,baseline,134,9326,9132,5118,6608,1612,5,0 +stock-default,3,baseline,135,9186,9134,5096,6687,1502,5,1 +stock-default,3,baseline,136,9263,9222,5049,6894,1419,4,0 +stock-default,3,baseline,137,9187,9107,4985,6610,1411,6,0 +stock-default,3,baseline,138,9106,9043,4951,6594,1483,5,0 +stock-default,3,baseline,139,9081,9013,4931,6545,1554,9,0 +stock-default,3,baseline,140,8866,8819,4891,6452,1423,5,0 +stock-default,3,baseline,141,9505,9271,4874,6880,1428,6,0 +stock-default,3,baseline,142,9406,9364,4849,6832,1548,5,0 +stock-default,3,baseline,143,8882,8840,4828,6482,1472,5,0 +stock-default,3,baseline,144,9273,9202,4790,6643,1550,14,0 +stock-default,3,baseline,145,8812,8733,4729,6304,1419,17,0 +stock-default,3,baseline,146,8558,8478,4716,6264,1369,15,1 +stock-default,3,baseline,147,9018,8775,4691,6471,1418,5,0 +stock-default,3,baseline,148,8832,8779,4676,6493,1368,8,0 +stock-default,3,baseline,149,8872,8829,4603,6300,1501,4,0 +stock-default,3,baseline,150,8664,8619,4555,6260,1368,5,0 +stock-default,3,baseline,151,8583,8504,4521,6340,1289,13,0 +stock-default,3,baseline,152,8411,8338,4489,6105,1265,7,1 +stock-default,3,baseline,153,8494,8309,4441,6075,1324,5,0 +stock-default,3,baseline,154,8532,8489,4396,6101,1457,5,0 +stock-default,3,baseline,155,8585,8158,4325,5937,1280,5,0 +stock-default,3,baseline,156,8234,8192,4289,6094,1307,13,0 +stock-default,3,baseline,157,7970,7929,4226,5776,1227,4,0 +stock-default,3,baseline,158,8040,7954,4173,5799,1259,14,0 +stock-default,3,baseline,159,8784,8301,4132,6025,1371,5,0 +stock-default,3,baseline,160,7837,7793,4104,5734,1235,5,0 +stock-default,3,baseline,161,7795,7737,4075,5705,1220,4,0 +stock-default,3,baseline,162,7609,7568,4066,5662,1170,8,0 +stock-default,3,baseline,163,7808,7738,4028,5731,1193,5,0 +stock-default,3,baseline,164,7882,7816,3996,5597,1357,6,0 +stock-default,3,baseline,165,7778,7547,3949,5476,1191,4,0 +stock-default,3,baseline,166,7558,7515,3913,5527,1149,5,0 +stock-default,3,baseline,167,7761,7696,3867,5660,1170,5,0 +stock-default,3,baseline,168,7429,7384,3828,5319,1223,5,0 +stock-default,3,baseline,169,7667,7625,3803,5580,1297,5,0 +stock-default,3,baseline,170,7316,7271,3767,5315,1169,5,0 +stock-default,3,baseline,171,7428,7334,3708,5352,1134,6,1 +stock-default,3,baseline,172,7259,7020,3685,5192,1103,5,1 +stock-default,3,baseline,173,7278,7233,3635,5284,1127,4,0 +stock-default,3,baseline,174,7219,7165,3584,5129,1254,15,0 +stock-default,3,baseline,175,6999,6954,3549,5092,1128,4,0 +stock-default,3,baseline,176,7138,7099,3492,5214,1084,4,1 +stock-default,3,baseline,177,7017,6970,3470,5151,1124,18,0 +stock-default,3,baseline,178,7074,7010,3441,5128,1088,5,0 +stock-default,3,baseline,179,7110,6820,3410,4880,1178,5,0 +stock-default,3,baseline,180,33369,7844,5234,5041,1637,5,1 +stock-default,3,baseline,181,9871,9820,5215,7061,1537,6,0 +stock-default,3,baseline,182,9719,9647,5193,7083,1559,5,0 +stock-default,3,baseline,183,9933,9855,5165,7262,1598,5,0 +stock-default,3,baseline,184,10032,9836,5130,7066,1715,8,0 +stock-default,3,baseline,185,9558,9512,5157,6946,1640,6,0 +stock-default,3,baseline,186,9825,9781,5132,6996,1701,19,1 +stock-default,3,baseline,187,9624,9582,5153,7072,1528,5,1 +stock-default,3,baseline,188,9675,9597,5138,7110,1569,5,0 +stock-default,3,baseline,189,9706,9660,5095,6862,1685,6,0 +stock-default,3,baseline,190,9492,9424,5099,6987,1538,7,1 +stock-default,3,baseline,191,9469,9245,5084,6704,1537,6,0 +stock-default,3,baseline,192,9389,9340,5071,6895,1533,5,0 +stock-default,3,baseline,193,9377,9304,5023,6691,1562,15,1 +stock-default,3,baseline,194,9569,9514,4978,6852,1645,22,0 +stock-default,3,baseline,195,9360,9288,4942,6758,1555,4,1 +stock-default,3,baseline,196,9261,9195,4912,6780,1455,10,0 +stock-default,3,baseline,197,9081,9012,4881,6577,1501,8,1 +stock-default,3,baseline,198,9102,8867,4839,6456,1463,6,0 +stock-default,3,baseline,199,9295,9235,4780,6501,1594,15,0 +stock-default,3,baseline,200,8880,8810,4742,6367,1479,4,1 +stock-default,3,baseline,201,8907,8866,4704,6489,1412,5,0 +stock-default,3,baseline,202,8673,8631,4691,6330,1421,4,0 +stock-default,3,baseline,203,8755,8680,4643,6267,1422,17,1 +stock-default,3,baseline,204,9289,9061,4598,6521,1569,5,0 +stock-default,3,baseline,205,8756,8716,4597,6452,1407,6,0 +stock-default,3,baseline,206,8682,8642,4535,6284,1355,5,0 +stock-default,3,baseline,207,8932,8891,4488,6446,1452,5,0 +stock-default,3,baseline,208,9150,9099,4456,6760,1412,5,1 +stock-default,3,baseline,209,8580,8538,4415,6153,1507,4,0 +stock-default,3,baseline,210,8430,8382,4392,6169,1376,4,0 +stock-default,3,baseline,211,8635,8187,4363,6015,1324,5,0 +stock-default,3,baseline,212,8551,8513,4334,6320,1297,4,0 +stock-default,3,baseline,213,8313,8267,4297,6105,1282,5,0 +stock-default,3,baseline,214,8418,8372,4279,6072,1469,5,0 +stock-default,3,baseline,215,8133,8052,4228,5842,1296,12,1 +stock-default,3,baseline,216,8306,8264,4148,5993,1258,5,0 +stock-default,3,baseline,217,7945,7872,4112,5775,1276,6,1 +stock-default,3,baseline,218,8254,8032,4093,5886,1343,4,1 +stock-default,3,baseline,219,8080,8043,4053,5853,1391,6,0 +stock-default,3,baseline,220,8163,8121,3987,5856,1289,4,0 +stock-default,3,baseline,221,7959,7894,3917,5715,1218,4,0 +stock-default,3,baseline,222,7920,7840,3900,5827,1185,13,1 +stock-default,3,baseline,223,7885,7458,3864,5420,1218,4,0 +stock-default,3,baseline,224,7902,7851,3830,5722,1323,7,0 +stock-default,3,baseline,225,7753,7543,3788,5490,1205,9,0 +stock-default,3,baseline,226,7462,7424,3754,5504,1129,4,0 +stock-default,3,baseline,227,7574,7499,3721,5587,1123,6,1 +stock-default,3,baseline,228,7602,7530,3651,5393,1165,6,1 +stock-default,3,baseline,229,7540,7470,3598,5417,1254,4,0 +stock-default,3,baseline,230,7107,7062,3540,5125,1133,5,0 +stock-default,3,baseline,231,7338,7094,3508,5235,1097,5,0 +stock-default,3,baseline,232,7017,6979,3498,5280,1062,4,0 +stock-default,3,baseline,233,7246,7198,3472,5267,1162,8,0 +stock-default,3,baseline,234,7258,7204,3429,5188,1223,5,0 +stock-default,3,baseline,235,6922,6879,3413,4952,1163,4,0 +stock-default,3,baseline,236,6845,6792,3368,4922,1063,5,0 +stock-default,3,baseline,237,6824,6782,3334,5003,1041,5,0 +stock-default,3,baseline,238,7107,6848,3300,4946,1101,5,0 +stock-default,3,baseline,239,7053,6948,3273,5107,1155,6,0 +stock-default,1,changed,0,28430,1119,2108,0,626,182,0 +stock-default,1,changed,1,4222,4165,2108,3090,525,4,1 +stock-default,1,changed,2,4168,4106,2108,3145,559,4,0 +stock-default,1,changed,3,3864,3781,2108,2826,546,7,0 +stock-default,1,changed,4,3759,3694,2109,2764,603,5,1 +stock-default,1,changed,5,4171,3679,2151,2807,537,4,0 +stock-default,1,changed,6,3741,3695,2179,2798,525,4,0 +stock-default,1,changed,7,3638,3588,2161,2683,506,6,0 +stock-default,1,changed,8,3683,3621,2139,2682,537,4,0 +stock-default,1,changed,9,3738,3646,2130,2685,584,6,0 +stock-default,1,changed,10,3751,3702,2132,2797,525,6,0 +stock-default,1,changed,11,3538,3491,2137,2610,526,4,0 +stock-default,1,changed,12,3586,3512,2130,2613,543,9,0 +stock-default,1,changed,13,3667,3625,2132,2662,576,4,0 +stock-default,1,changed,14,3707,3648,2127,2674,591,10,0 +stock-default,1,changed,15,3508,3435,2117,2577,528,4,0 +stock-default,1,changed,16,3600,3551,2115,2649,557,5,0 +stock-default,1,changed,17,3491,3447,2106,2559,511,12,0 +stock-default,1,changed,18,3483,3412,2099,2537,522,5,0 +stock-default,1,changed,19,3739,3644,2094,2543,602,7,1 +stock-default,1,changed,20,3468,3427,2091,2559,540,4,0 +stock-default,1,changed,21,3503,3459,2088,2608,520,5,0 +stock-default,1,changed,22,3382,3334,2083,2486,511,5,1 +stock-default,1,changed,23,3458,3414,2080,2543,531,5,1 +stock-default,1,changed,24,3539,3450,2075,2547,575,11,0 +stock-default,1,changed,25,3449,3407,2070,2533,549,5,1 +stock-default,1,changed,26,3500,3425,2068,2527,542,6,0 +stock-default,1,changed,27,3495,3448,2066,2592,535,9,1 +stock-default,1,changed,28,3454,3396,2066,2523,533,4,0 +stock-default,1,changed,29,3506,3439,2064,2493,585,5,0 +stock-default,1,changed,30,3430,3381,2059,2507,529,11,0 +stock-default,1,changed,31,3583,3543,2096,2679,517,4,0 +stock-default,1,changed,32,3642,3599,2095,2688,521,5,0 +stock-default,1,changed,33,3591,3545,2097,2657,541,3,0 +stock-default,1,changed,34,3585,3544,2095,2575,621,5,0 +stock-default,1,changed,35,3829,3786,2081,2774,525,4,0 +stock-default,1,changed,36,3682,3616,2077,2702,516,10,0 +stock-default,1,changed,37,3633,3591,2077,2723,554,5,1 +stock-default,1,changed,38,3585,3489,2075,2553,574,4,1 +stock-default,1,changed,39,3711,3627,2075,2653,588,5,1 +stock-default,1,changed,40,3712,3665,2073,2745,560,4,0 +stock-default,1,changed,41,3739,3624,2075,2720,537,12,1 +stock-default,1,changed,42,3701,3654,2106,2758,525,5,0 +stock-default,1,changed,43,3568,3528,2119,2671,531,3,0 +stock-default,1,changed,44,3807,3755,2135,2806,616,5,0 +stock-default,1,changed,45,3727,3689,2162,2787,566,4,0 +stock-default,1,changed,46,3733,3666,2185,2759,521,4,0 +stock-default,1,changed,47,3792,3707,2218,2787,533,10,1 +stock-default,1,changed,48,3851,3809,2261,2881,549,4,1 +stock-default,1,changed,49,3959,3905,2292,2887,616,4,0 +stock-default,1,changed,50,3867,3809,2310,2820,567,6,1 +stock-default,1,changed,51,3978,3924,2333,2851,581,4,0 +stock-default,1,changed,52,3859,3807,2354,2908,539,3,1 +stock-default,1,changed,53,3962,3912,2378,2930,559,4,0 +stock-default,1,changed,54,4029,3906,2403,2877,613,3,0 +stock-default,1,changed,55,3961,3920,2418,2879,562,4,0 +stock-default,1,changed,56,3936,3890,2431,2917,551,4,0 +stock-default,1,changed,57,3901,3852,2448,2879,562,8,1 +stock-default,1,changed,58,4000,3960,2464,2920,578,15,0 +stock-default,1,changed,59,4047,3946,2479,2956,600,5,0 +stock-default,1,changed,60,31955,4690,4591,2942,1145,5,0 +stock-default,1,changed,61,8015,7961,4616,5912,1107,13,1 +stock-default,1,changed,62,7834,7759,4611,5752,1109,13,1 +stock-default,1,changed,63,7871,7830,4613,5833,1178,5,0 +stock-default,1,changed,64,7881,7804,4634,5706,1231,7,0 +stock-default,1,changed,65,7830,7786,4693,5747,1179,6,0 +stock-default,1,changed,66,8055,7840,4806,5884,1111,6,0 +stock-default,1,changed,67,7805,7723,4844,5679,1128,11,0 +stock-default,1,changed,68,7833,7752,4795,5740,1139,10,0 +stock-default,1,changed,69,7611,7566,4784,5528,1194,12,1 +stock-default,1,changed,70,7591,7544,4771,5605,1135,13,0 +stock-default,1,changed,71,7606,7561,4760,5661,1092,16,0 +stock-default,1,changed,72,7627,7432,4726,5508,1096,6,0 +stock-default,1,changed,73,8011,7564,4697,5572,1120,21,0 +stock-default,1,changed,74,7730,7650,4676,5582,1214,13,0 +stock-default,1,changed,75,7586,7540,4675,5578,1113,10,1 +stock-default,1,changed,76,7808,7757,4635,5764,1099,9,0 +stock-default,1,changed,77,7638,7580,4601,5614,1165,12,1 +stock-default,1,changed,78,7489,7439,4567,5484,1123,14,0 +stock-default,1,changed,79,7800,7617,4532,5584,1180,11,1 +stock-default,1,changed,80,7632,7583,4508,5608,1119,6,0 +stock-default,1,changed,81,7613,7544,4485,5630,1075,14,0 +stock-default,1,changed,82,7763,7688,4475,5709,1092,11,1 +stock-default,1,changed,83,7479,7437,4435,5474,1100,8,1 +stock-default,1,changed,84,7796,7731,4391,5592,1260,17,0 +stock-default,1,changed,85,7682,7641,4358,5589,1199,8,0 +stock-default,1,changed,86,7717,7486,4332,5597,1069,9,0 +stock-default,1,changed,87,7461,7416,4304,5518,1065,9,0 +stock-default,1,changed,88,7619,7569,4262,5576,1084,20,0 +stock-default,1,changed,89,7539,7473,4268,5493,1211,9,0 +stock-default,1,changed,90,7695,7619,4228,5505,1200,19,0 +stock-default,1,changed,91,7390,7302,4180,5470,1073,11,0 +stock-default,1,changed,92,7581,7308,4122,5352,1072,11,0 +stock-default,1,changed,93,7463,7421,4091,5471,1082,11,0 +stock-default,1,changed,94,7382,7335,4053,5410,1147,9,0 +stock-default,1,changed,95,7370,7327,4028,5457,1089,5,1 +stock-default,1,changed,96,7230,7162,3968,5320,1034,11,0 +stock-default,1,changed,97,7190,7109,3936,5304,1068,16,0 +stock-default,1,changed,98,7057,6980,3910,5181,1044,11,0 +stock-default,1,changed,99,7516,7290,3887,5368,1149,15,1 +stock-default,1,changed,100,7315,7270,3864,5369,1079,10,1 +stock-default,1,changed,101,7021,6964,3848,5196,1003,9,0 +stock-default,1,changed,102,7173,7116,3768,5175,1019,6,0 +stock-default,1,changed,103,6963,6922,3742,5144,1028,15,0 +stock-default,1,changed,104,7113,7039,3716,5135,1169,10,0 +stock-default,1,changed,105,6983,6938,3677,5071,1054,10,0 +stock-default,1,changed,106,7257,7001,3691,5222,1022,7,1 +stock-default,1,changed,107,7026,6981,3678,5238,989,8,0 +stock-default,1,changed,108,6742,6702,3681,4996,1015,8,1 +stock-default,1,changed,109,7294,7199,3637,5098,1156,10,1 +stock-default,1,changed,110,6738,6673,3646,4970,1019,8,0 +stock-default,1,changed,111,6759,6714,3627,4991,1029,10,0 +stock-default,1,changed,112,6865,6635,3592,4953,961,5,1 +stock-default,1,changed,113,6822,6778,3576,5048,1006,6,0 +stock-default,1,changed,114,7010,6953,3533,5004,1160,9,1 +stock-default,1,changed,115,6533,6475,3519,4822,999,9,0 +stock-default,1,changed,116,6652,6598,3490,4927,982,6,1 +stock-default,1,changed,117,6640,6557,3443,4789,968,11,0 +stock-default,1,changed,118,6300,6260,3424,4624,911,5,1 +stock-default,1,changed,119,6635,6320,3392,4519,1042,5,1 +stock-default,1,changed,120,33301,7061,5490,4739,1625,5,0 +stock-default,1,changed,121,10157,10117,5462,7456,1469,6,0 +stock-default,1,changed,122,9943,9881,5404,7271,1450,12,0 +stock-default,1,changed,123,10220,10150,5357,7387,1532,5,0 +stock-default,1,changed,124,10294,10158,5351,7434,1649,5,0 +stock-default,1,changed,125,9848,9772,5345,7163,1567,6,0 +stock-default,1,changed,126,9648,9613,5369,7104,1481,5,1 +stock-default,1,changed,127,9411,9362,5344,6865,1458,5,1 +stock-default,1,changed,128,9737,9691,5277,7151,1479,6,0 +stock-default,1,changed,129,9553,9463,5232,6849,1576,4,1 +stock-default,1,changed,130,9345,9298,5185,6720,1493,5,0 +stock-default,1,changed,131,9443,9228,5152,6857,1403,5,0 +stock-default,1,changed,132,9223,9183,5130,6779,1417,16,0 +stock-default,1,changed,133,9214,9145,5126,6777,1429,6,0 +stock-default,1,changed,134,9167,9118,5118,6642,1572,5,0 +stock-default,1,changed,135,9351,9271,5096,6787,1510,6,0 +stock-default,1,changed,136,9278,9236,5049,6771,1455,6,0 +stock-default,1,changed,137,9393,9153,4985,6667,1408,5,0 +stock-default,1,changed,138,9073,9030,4951,6621,1423,5,0 +stock-default,1,changed,139,9214,9174,4931,6488,1733,5,0 +stock-default,1,changed,140,8890,8802,4891,6435,1418,11,0 +stock-default,1,changed,141,9620,9194,4874,6801,1499,4,0 +stock-default,1,changed,142,9020,8961,4849,6649,1376,5,0 +stock-default,1,changed,143,8937,8885,4828,6622,1379,5,0 +stock-default,1,changed,144,9368,9165,4790,6661,1551,5,0 +stock-default,1,changed,145,9048,9005,4729,6567,1417,5,0 +stock-default,1,changed,146,8502,8460,4716,6247,1351,5,0 +stock-default,1,changed,147,8561,8498,4691,6292,1344,5,1 +stock-default,1,changed,148,8711,8645,4676,6360,1386,5,0 +stock-default,1,changed,149,8938,8891,4603,6349,1494,5,0 +stock-default,1,changed,150,8942,8749,4555,6377,1357,5,0 +stock-default,1,changed,151,8284,8236,4521,6036,1330,5,0 +stock-default,1,changed,152,8351,8308,4489,6167,1273,5,0 +stock-default,1,changed,153,8394,8310,4441,5989,1322,7,0 +stock-default,1,changed,154,8716,8660,4396,6264,1465,5,1 +stock-default,1,changed,155,8209,8132,4325,5820,1304,5,1 +stock-default,1,changed,156,8089,8007,4289,5869,1254,6,2 +stock-default,1,changed,157,8113,7895,4226,5709,1230,5,1 +stock-default,1,changed,158,8214,8149,4173,5828,1329,14,1 +stock-default,1,changed,159,8111,8070,4132,5814,1380,5,0 +stock-default,1,changed,160,7842,7798,4104,5675,1274,4,0 +stock-default,1,changed,161,7635,7595,4075,5565,1195,5,0 +stock-default,1,changed,162,7582,7527,4066,5590,1171,13,0 +stock-default,1,changed,163,7999,7545,4028,5516,1209,4,0 +stock-default,1,changed,164,7883,7820,3996,5674,1340,19,0 +stock-default,1,changed,165,7809,7767,3949,5692,1209,5,1 +stock-default,1,changed,166,7456,7414,3913,5413,1176,5,0 +stock-default,1,changed,167,7475,7435,3867,5350,1236,4,0 +stock-default,1,changed,168,7467,7413,3828,5469,1164,4,0 +stock-default,1,changed,169,7763,7517,3803,5429,1308,5,1 +stock-default,1,changed,170,7300,7258,3767,5282,1160,4,0 +stock-default,1,changed,171,7373,7290,3708,5334,1123,12,1 +stock-default,1,changed,172,7240,7166,3685,5336,1102,6,0 +stock-default,1,changed,173,7281,7244,3635,5271,1108,4,0 +stock-default,1,changed,174,7253,7210,3584,5161,1247,6,1 +stock-default,1,changed,175,7088,6868,3549,5025,1099,4,0 +stock-default,1,changed,176,7093,7052,3492,5100,1093,4,0 +stock-default,1,changed,177,7054,6998,3470,5067,1135,12,1 +stock-default,1,changed,178,6788,6730,3441,4896,1103,7,0 +stock-default,1,changed,179,6818,6720,3410,4776,1208,13,0 +stock-default,1,changed,180,33292,7683,5234,4880,1658,5,0 +stock-default,1,changed,181,9876,9664,5215,7008,1564,5,0 +stock-default,1,changed,182,10065,9999,5193,7246,1669,5,0 +stock-default,1,changed,183,9836,9763,5165,7069,1651,6,0 +stock-default,1,changed,184,9943,9869,5130,6990,1810,5,0 +stock-default,1,changed,185,9488,9449,5157,6947,1592,6,0 +stock-default,1,changed,186,9685,9645,5132,7026,1552,5,1 +stock-default,1,changed,187,9728,9504,5153,6958,1548,5,0 +stock-default,1,changed,188,9312,9264,5138,6815,1537,5,0 +stock-default,1,changed,189,9645,9582,5095,6867,1684,5,0 +stock-default,1,changed,190,9403,9338,5099,6870,1579,5,0 +stock-default,1,changed,191,9514,9436,5084,6939,1536,10,0 +stock-default,1,changed,192,9488,9404,5071,6920,1568,8,1 +stock-default,1,changed,193,9374,9298,5023,6665,1593,5,0 +stock-default,1,changed,194,9327,9108,4978,6471,1675,6,1 +stock-default,1,changed,195,9111,9044,4942,6561,1543,5,1 +stock-default,1,changed,196,8865,8824,4912,6409,1482,5,0 +stock-default,1,changed,197,9095,9051,4881,6589,1474,10,0 +stock-default,1,changed,198,9400,9358,4839,6619,1739,6,0 +stock-default,1,changed,199,9309,9219,4780,6543,1609,6,2 +stock-default,1,changed,200,8836,8769,4742,6317,1484,6,1 +stock-default,1,changed,201,9411,9226,4704,6591,1560,4,0 +stock-default,1,changed,202,8683,8638,4691,6333,1452,6,0 +stock-default,1,changed,203,8695,8641,4643,6223,1462,11,1 +stock-default,1,changed,204,8791,8736,4598,6189,1539,19,0 +stock-default,1,changed,205,8520,8461,4597,6209,1426,19,1 +stock-default,1,changed,206,8802,8730,4535,6274,1409,12,1 +stock-default,1,changed,207,8710,8500,4488,6144,1378,5,0 +stock-default,1,changed,208,8562,8507,4456,6215,1392,11,0 +stock-default,1,changed,209,8931,8500,4415,6073,1519,5,0 +stock-default,1,changed,210,8441,8392,4392,6120,1403,9,0 +stock-default,1,changed,211,8354,8309,4363,6108,1338,14,0 +stock-default,1,changed,212,8313,8257,4334,6035,1333,4,1 +stock-default,1,changed,213,8259,8215,4297,6006,1334,5,0 +stock-default,1,changed,214,8634,8143,4279,5837,1461,5,0 +stock-default,1,changed,215,8179,8096,4228,5881,1304,6,1 +stock-default,1,changed,216,8297,8258,4148,5958,1274,4,0 +stock-default,1,changed,217,7827,7770,4112,5702,1242,5,1 +stock-default,1,changed,218,7903,7862,4093,5778,1286,5,1 +stock-default,1,changed,219,7970,7935,4053,5661,1424,5,0 +stock-default,1,changed,220,8096,8027,3987,5843,1246,4,0 +stock-default,1,changed,221,8141,7937,3917,5691,1277,5,1 +stock-default,1,changed,222,7630,7589,3900,5630,1195,5,0 +stock-default,1,changed,223,7603,7512,3864,5480,1234,4,0 +stock-default,1,changed,224,7937,7894,3830,5633,1452,5,0 +stock-default,1,changed,225,7701,7626,3788,5573,1247,5,0 +stock-default,1,changed,226,7378,7329,3754,5373,1161,5,0 +stock-default,1,changed,227,7475,7437,3721,5382,1234,4,1 +stock-default,1,changed,228,7552,7390,3651,5297,1160,5,0 +stock-default,1,changed,229,7401,7351,3598,5209,1299,6,0 +stock-default,1,changed,230,7240,7195,3540,5152,1147,5,1 +stock-default,1,changed,231,6972,6929,3508,5042,1100,4,0 +stock-default,1,changed,232,6875,6835,3498,5121,1087,4,0 +stock-default,1,changed,233,6873,6807,3472,4973,1121,13,0 +stock-default,1,changed,234,7117,7070,3429,5072,1222,4,0 +stock-default,1,changed,235,7011,6795,3413,5016,1114,5,0 +stock-default,1,changed,236,6826,6762,3368,4925,1059,5,1 +stock-default,1,changed,237,6791,6746,3334,4914,1035,4,0 +stock-default,1,changed,238,6982,6912,3300,5079,1065,4,0 +stock-default,1,changed,239,6850,6732,3273,4844,1183,4,0 +stock-default,2,changed,0,28330,1067,2108,1,619,179,0 +stock-default,2,changed,1,4149,4099,2108,3032,509,4,0 +stock-default,2,changed,2,3747,3695,2108,2786,524,6,1 +stock-default,2,changed,3,3738,3645,2108,2765,552,5,1 +stock-default,2,changed,4,3973,3879,2109,2822,639,6,1 +stock-default,2,changed,5,4252,3762,2151,2828,544,5,0 +stock-default,2,changed,6,3850,3802,2179,2850,543,5,0 +stock-default,2,changed,7,3861,3798,2161,2809,518,4,1 +stock-default,2,changed,8,3722,3649,2139,2747,552,5,0 +stock-default,2,changed,9,3711,3666,2130,2728,587,4,0 +stock-default,2,changed,10,3697,3651,2132,2734,546,4,0 +stock-default,2,changed,11,3795,3754,2137,2807,506,8,0 +stock-default,2,changed,12,3666,3616,2130,2724,542,5,1 +stock-default,2,changed,13,3728,3654,2132,2700,566,8,1 +stock-default,2,changed,14,3724,3658,2127,2651,621,11,1 +stock-default,2,changed,15,3674,3633,2117,2694,547,5,0 +stock-default,2,changed,16,3591,3525,2115,2666,519,10,1 +stock-default,2,changed,17,3566,3514,2106,2637,527,5,1 +stock-default,2,changed,18,3574,3503,2099,2608,539,9,0 +stock-default,2,changed,19,3562,3480,2094,2580,577,5,0 +stock-default,2,changed,20,3566,3515,2091,2619,550,5,1 +stock-default,2,changed,21,3566,3496,2088,2619,532,16,0 +stock-default,2,changed,22,3543,3460,2083,2590,516,9,0 +stock-default,2,changed,23,3540,3498,2080,2620,537,4,1 +stock-default,2,changed,24,3603,3556,2075,2618,573,11,1 +stock-default,2,changed,25,3517,3474,2070,2564,548,5,0 +stock-default,2,changed,26,3539,3492,2068,2598,541,17,1 +stock-default,2,changed,27,3580,3536,2066,2667,522,5,0 +stock-default,2,changed,28,3648,3603,2066,2683,545,4,0 +stock-default,2,changed,29,3573,3527,2064,2587,589,5,0 +stock-default,2,changed,30,3589,3528,2059,2587,559,4,0 +stock-default,2,changed,31,3572,3530,2096,2683,528,4,0 +stock-default,2,changed,32,3670,3632,2095,2764,526,5,1 +stock-default,2,changed,33,3630,3587,2097,2695,542,4,1 +stock-default,2,changed,34,3614,3572,2095,2625,600,4,0 +stock-default,2,changed,35,3614,3526,2081,2640,552,5,1 +stock-default,2,changed,36,3658,3617,2077,2706,548,5,0 +stock-default,2,changed,37,3617,3546,2077,2677,532,11,0 +stock-default,2,changed,38,3703,3662,2075,2750,564,5,0 +stock-default,2,changed,39,3706,3614,2075,2674,590,15,0 +stock-default,2,changed,40,3772,3727,2073,2799,545,4,1 +stock-default,2,changed,41,3696,3650,2075,2782,537,5,0 +stock-default,2,changed,42,3691,3646,2106,2781,528,5,0 +stock-default,2,changed,43,3703,3654,2119,2722,544,4,1 +stock-default,2,changed,44,3745,3702,2135,2765,596,5,0 +stock-default,2,changed,45,3838,3789,2162,2853,567,5,1 +stock-default,2,changed,46,3728,3685,2185,2810,535,5,0 +stock-default,2,changed,47,3712,3622,2218,2727,524,12,1 +stock-default,2,changed,48,3773,3730,2261,2801,538,13,1 +stock-default,2,changed,49,3984,3935,2292,2947,594,4,0 +stock-default,2,changed,50,3837,3786,2310,2838,558,5,0 +stock-default,2,changed,51,3820,3771,2333,2779,537,4,0 +stock-default,2,changed,52,3893,3745,2354,2816,515,4,0 +stock-default,2,changed,53,3903,3804,2378,2844,553,11,1 +stock-default,2,changed,54,4089,4040,2403,2974,613,5,0 +stock-default,2,changed,55,3944,3902,2418,2870,582,3,0 +stock-default,2,changed,56,3884,3837,2431,2896,535,5,0 +stock-default,2,changed,57,3960,3916,2448,2990,529,6,1 +stock-default,2,changed,58,3933,3765,2464,2815,562,4,0 +stock-default,2,changed,59,4158,4001,2479,2941,648,3,0 +stock-default,2,changed,60,32303,4589,4591,2932,1100,5,0 +stock-default,2,changed,61,8158,8116,4616,6041,1101,13,0 +stock-default,2,changed,62,7773,7694,4611,5679,1122,7,0 +stock-default,2,changed,63,7841,7685,4613,5725,1137,5,0 +stock-default,2,changed,64,8037,7946,4634,5735,1254,5,0 +stock-default,2,changed,65,7870,7787,4693,5759,1160,7,0 +stock-default,2,changed,66,7975,7936,4806,5962,1111,6,0 +stock-default,2,changed,67,8001,7899,4844,5839,1130,6,0 +stock-default,2,changed,68,7791,7712,4795,5686,1138,12,1 +stock-default,2,changed,69,7827,7784,4784,5713,1215,10,0 +stock-default,2,changed,70,7737,7503,4771,5549,1130,11,1 +stock-default,2,changed,71,7677,7635,4760,5661,1135,9,0 +stock-default,2,changed,72,7637,7594,4726,5632,1119,9,1 +stock-default,2,changed,73,8283,7770,4697,5690,1186,10,0 +stock-default,2,changed,74,7749,7704,4676,5614,1257,21,0 +stock-default,2,changed,75,7807,7726,4675,5720,1156,13,1 +stock-default,2,changed,76,7674,7597,4635,5604,1102,10,1 +stock-default,2,changed,77,7694,7465,4601,5567,1086,6,0 +stock-default,2,changed,78,7646,7587,4567,5564,1144,10,0 +stock-default,2,changed,79,7867,7800,4532,5661,1247,12,0 +stock-default,2,changed,80,7597,7544,4508,5600,1114,14,0 +stock-default,2,changed,81,7686,7623,4485,5643,1097,13,0 +stock-default,2,changed,82,7587,7515,4475,5596,1116,17,1 +stock-default,2,changed,83,7631,7578,4435,5596,1088,12,1 +stock-default,2,changed,84,7766,7538,4391,5509,1190,5,1 +stock-default,2,changed,85,7675,7622,4358,5551,1219,10,1 +stock-default,2,changed,86,7696,7636,4332,5653,1092,16,0 +stock-default,2,changed,87,7570,7528,4304,5619,1095,13,0 +stock-default,2,changed,88,7640,7593,4262,5593,1120,9,0 +stock-default,2,changed,89,7736,7649,4268,5602,1220,11,1 +stock-default,2,changed,90,7801,7577,4228,5550,1103,9,0 +stock-default,2,changed,91,7363,7325,4180,5482,1056,8,0 +stock-default,2,changed,92,7488,7431,4122,5503,1061,16,0 +stock-default,2,changed,93,7415,7341,4091,5413,1073,10,1 +stock-default,2,changed,94,7503,7462,4053,5443,1247,12,1 +stock-default,2,changed,95,7307,7214,4028,5362,1080,8,0 +stock-default,2,changed,96,7362,7316,3968,5422,1058,19,0 +stock-default,2,changed,97,7330,7121,3936,5283,1054,6,0 +stock-default,2,changed,98,7349,7299,3910,5348,1128,11,1 +stock-default,2,changed,99,7453,7384,3887,5387,1186,8,0 +stock-default,2,changed,100,7343,7289,3864,5362,1075,14,0 +stock-default,2,changed,101,7019,6977,3848,5189,1042,7,0 +stock-default,2,changed,102,7295,7245,3768,5250,1023,25,0 +stock-default,2,changed,103,7099,6827,3742,5008,1045,10,1 +stock-default,2,changed,104,7151,7054,3716,5172,1127,13,0 +stock-default,2,changed,105,7102,7021,3677,5161,1050,14,1 +stock-default,2,changed,106,7103,7060,3691,5309,1011,7,0 +stock-default,2,changed,107,7026,6968,3678,5184,995,7,0 +stock-default,2,changed,108,6961,6917,3681,5115,1067,8,0 +stock-default,2,changed,109,7470,7182,3637,5234,1111,13,1 +stock-default,2,changed,110,6821,6748,3646,5082,1016,10,0 +stock-default,2,changed,111,6873,6788,3627,5076,1000,12,1 +stock-default,2,changed,112,6721,6676,3592,4996,968,8,1 +stock-default,2,changed,113,6843,6800,3576,5106,988,19,1 +stock-default,2,changed,114,7011,6932,3533,5017,1136,19,0 +stock-default,2,changed,115,6615,6574,3519,4880,1013,12,0 +stock-default,2,changed,116,6613,6464,3490,4718,976,68,0 +stock-default,2,changed,117,6460,6417,3443,4738,931,10,0 +stock-default,2,changed,118,6400,6360,3424,4709,967,6,0 +stock-default,2,changed,119,6502,6406,3392,4547,1066,4,0 +stock-default,2,changed,120,32165,6705,5490,4491,1562,7,0 +stock-default,2,changed,121,10152,9963,5462,7353,1423,5,0 +stock-default,2,changed,122,9903,9862,5404,7184,1465,6,0 +stock-default,2,changed,123,9720,9680,5357,7112,1498,5,1 +stock-default,2,changed,124,9952,9910,5351,7221,1609,6,1 +stock-default,2,changed,125,10048,9960,5345,7370,1525,12,1 +stock-default,2,changed,126,10105,10033,5369,7410,1550,5,0 +stock-default,2,changed,127,9863,9661,5344,7183,1440,5,0 +stock-default,2,changed,128,9505,9441,5277,6874,1479,5,1 +stock-default,2,changed,129,9443,9383,5232,6770,1558,14,1 +stock-default,2,changed,130,9690,9644,5185,6984,1585,5,0 +stock-default,2,changed,131,9236,9170,5152,6734,1406,5,0 +stock-default,2,changed,132,9218,9154,5130,6721,1423,10,1 +stock-default,2,changed,133,9156,8932,5126,6586,1424,5,1 +stock-default,2,changed,134,9416,9332,5118,6794,1571,13,1 +stock-default,2,changed,135,9098,9013,5096,6550,1469,14,0 +stock-default,2,changed,136,9082,9042,5049,6611,1468,5,0 +stock-default,2,changed,137,9279,9238,4985,6834,1372,6,0 +stock-default,2,changed,138,9035,8980,4951,6555,1414,5,0 +stock-default,2,changed,139,9155,9110,4931,6549,1616,6,0 +stock-default,2,changed,140,9022,8806,4891,6431,1416,5,0 +stock-default,2,changed,141,9239,8816,4874,6588,1347,5,0 +stock-default,2,changed,142,8946,8906,4849,6570,1370,5,0 +stock-default,2,changed,143,8894,8853,4828,6451,1465,5,1 +stock-default,2,changed,144,9131,9089,4790,6638,1493,6,1 +stock-default,2,changed,145,8937,8866,4729,6427,1408,5,1 +stock-default,2,changed,146,8513,8439,4716,6243,1350,5,0 +stock-default,2,changed,147,8971,8773,4691,6526,1332,5,0 +stock-default,2,changed,148,8564,8491,4676,6242,1360,16,0 +stock-default,2,changed,149,9064,9025,4603,6520,1474,5,0 +stock-default,2,changed,150,8551,8507,4555,6151,1369,4,0 +stock-default,2,changed,151,8347,8277,4521,6079,1287,5,0 +stock-default,2,changed,152,8385,8314,4489,6128,1282,5,0 +stock-default,2,changed,153,8580,8528,4441,6248,1329,5,1 +stock-default,2,changed,154,8586,8355,4396,5987,1435,14,0 +stock-default,2,changed,155,8195,8156,4325,5888,1280,5,0 +stock-default,2,changed,156,8307,8262,4289,6179,1266,6,0 +stock-default,2,changed,157,8001,7956,4226,5758,1282,5,0 +stock-default,2,changed,158,8113,8052,4173,5852,1286,16,0 +stock-default,2,changed,159,8146,8077,4132,5839,1364,5,0 +stock-default,2,changed,160,8242,7804,4104,5679,1250,5,0 +stock-default,2,changed,161,7635,7585,4075,5607,1184,16,0 +stock-default,2,changed,162,7710,7665,4066,5662,1207,4,0 +stock-default,2,changed,163,7864,7790,4028,5719,1208,6,1 +stock-default,2,changed,164,7851,7783,3996,5576,1407,4,1 +stock-default,2,changed,165,7591,7553,3949,5481,1254,5,0 +stock-default,2,changed,166,7454,7400,3913,5432,1164,4,0 +stock-default,2,changed,167,7661,7457,3867,5488,1130,8,0 +stock-default,2,changed,168,7453,7384,3828,5391,1199,5,0 +stock-default,2,changed,169,7734,7696,3803,5626,1312,5,0 +stock-default,2,changed,170,7585,7546,3767,5506,1174,5,0 +stock-default,2,changed,171,7306,7269,3708,5313,1115,4,0 +stock-default,2,changed,172,7303,7233,3685,5346,1181,4,0 +stock-default,2,changed,173,7385,7342,3635,5361,1144,5,0 +stock-default,2,changed,174,7347,7128,3584,5119,1228,4,0 +stock-default,2,changed,175,7024,6985,3549,5131,1119,4,0 +stock-default,2,changed,176,7062,7025,3492,5147,1061,4,0 +stock-default,2,changed,177,7026,6978,3470,5098,1114,4,0 +stock-default,2,changed,178,6799,6730,3441,4914,1107,5,1 +stock-default,2,changed,179,6925,6775,3410,4872,1193,5,1 +stock-default,2,changed,180,33076,7580,5234,4763,1619,5,1 +stock-default,2,changed,181,9979,9749,5215,7098,1549,6,0 +stock-default,2,changed,182,9710,9636,5193,7084,1543,5,1 +stock-default,2,changed,183,9792,9709,5165,7073,1632,14,1 +stock-default,2,changed,184,10412,10366,5130,7111,2000,8,0 +stock-default,2,changed,185,9987,9927,5157,7280,1661,6,1 +stock-default,2,changed,186,9776,9697,5132,6961,1736,6,1 +stock-default,2,changed,187,9532,9281,5153,6819,1498,5,0 +stock-default,2,changed,188,9442,9363,5138,6861,1582,6,0 +stock-default,2,changed,189,9605,9561,5095,6887,1663,5,0 +stock-default,2,changed,190,9577,9528,5099,7036,1575,6,0 +stock-default,2,changed,191,9362,9319,5084,6809,1539,6,0 +stock-default,2,changed,192,9208,9163,5071,6733,1515,6,0 +stock-default,2,changed,193,9350,9143,5023,6582,1555,6,0 +stock-default,2,changed,194,9579,9531,4978,6819,1681,6,1 +stock-default,2,changed,195,8997,8917,4942,6489,1487,6,0 +stock-default,2,changed,196,9024,8938,4912,6473,1540,6,1 +stock-default,2,changed,197,9300,9252,4881,6746,1503,5,0 +stock-default,2,changed,198,9399,9338,4839,6698,1502,6,0 +stock-default,2,changed,199,9212,9132,4780,6464,1586,11,0 +stock-default,2,changed,200,9279,9045,4742,6554,1485,6,1 +stock-default,2,changed,201,8925,8878,4704,6518,1390,6,0 +stock-default,2,changed,202,8585,8543,4691,6299,1390,5,1 +stock-default,2,changed,203,8917,8852,4643,6407,1438,15,1 +stock-default,2,changed,204,9012,8926,4598,6405,1533,12,0 +stock-default,2,changed,205,8639,8598,4597,6341,1422,5,0 +stock-default,2,changed,206,8944,8727,4535,6341,1406,5,0 +stock-default,2,changed,207,8826,8780,4488,6414,1404,10,0 +stock-default,2,changed,208,8526,8467,4456,6125,1419,13,0 +stock-default,2,changed,209,9086,8666,4415,6145,1569,5,0 +stock-default,2,changed,210,8545,8468,4392,6250,1373,6,0 +stock-default,2,changed,211,8239,8168,4363,6012,1311,10,0 +stock-default,2,changed,212,8898,8403,4334,6186,1328,5,0 +stock-default,2,changed,213,8354,8313,4297,5965,1354,6,0 +stock-default,2,changed,214,8501,8457,4279,5968,1627,5,0 +stock-default,2,changed,215,8555,8477,4228,6071,1414,5,0 +stock-default,2,changed,216,8269,8221,4148,5886,1275,4,1 +stock-default,2,changed,217,7925,7888,4112,5734,1340,5,0 +stock-default,2,changed,218,8073,8031,4093,5957,1269,5,0 +stock-default,2,changed,219,8398,8171,4053,5826,1387,5,1 +stock-default,2,changed,220,7965,7909,3987,5698,1288,8,0 +stock-default,2,changed,221,7770,7726,3917,5586,1233,5,0 +stock-default,2,changed,222,7630,7587,3900,5643,1195,4,0 +stock-default,2,changed,223,7817,7757,3864,5654,1222,12,0 +stock-default,2,changed,224,7867,7793,3830,5623,1362,6,0 +stock-default,2,changed,225,7788,7746,3788,5536,1320,5,0 +stock-default,2,changed,226,8157,7962,3754,5707,1337,7,0 +stock-default,2,changed,227,7694,7648,3721,5613,1216,8,0 +stock-default,2,changed,228,7565,7515,3651,5329,1242,5,0 +stock-default,2,changed,229,7367,7290,3598,5232,1260,14,1 +stock-default,2,changed,230,7343,7273,3540,5301,1133,13,0 +stock-default,2,changed,231,7059,7017,3508,5194,1096,5,0 +stock-default,2,changed,232,6869,6808,3498,5088,1079,12,1 +stock-default,2,changed,233,7149,6834,3472,4998,1122,5,0 +stock-default,2,changed,234,7263,7206,3429,5114,1216,3,1 +stock-default,2,changed,235,6711,6671,3413,4901,1115,4,0 +stock-default,2,changed,236,6802,6762,3368,4959,1062,4,1 +stock-default,2,changed,237,6728,6654,3334,4867,1031,5,1 +stock-default,2,changed,238,6713,6646,3300,4848,1084,5,0 +stock-default,2,changed,239,7003,6704,3273,4821,1162,13,1 +stock-default,3,changed,0,28055,1071,2108,1,621,198,0 +stock-default,3,changed,1,4083,4031,2108,3000,504,4,0 +stock-default,3,changed,2,3744,3659,2108,2800,515,4,0 +stock-default,3,changed,3,3761,3688,2108,2795,544,4,0 +stock-default,3,changed,4,3839,3783,2109,2852,589,3,0 +stock-default,3,changed,5,3767,3672,2151,2800,562,5,0 +stock-default,3,changed,6,3847,3761,2179,2812,533,10,0 +stock-default,3,changed,7,3696,3650,2161,2730,534,4,0 +stock-default,3,changed,8,3813,3713,2139,2785,546,5,0 +stock-default,3,changed,9,3836,3735,2130,2782,584,6,0 +stock-default,3,changed,10,3686,3601,2132,2707,547,5,0 +stock-default,3,changed,11,3752,3666,2137,2753,525,4,1 +stock-default,3,changed,12,3630,3580,2130,2670,555,4,0 +stock-default,3,changed,13,3609,3568,2132,2690,542,5,0 +stock-default,3,changed,14,3634,3549,2127,2662,571,4,1 +stock-default,3,changed,15,3682,3632,2117,2683,544,4,0 +stock-default,3,changed,16,3656,3590,2115,2666,536,4,0 +stock-default,3,changed,17,4291,4227,2106,3242,557,13,0 +stock-default,3,changed,18,3627,3585,2099,2662,548,6,0 +stock-default,3,changed,19,3744,3668,2094,2653,568,4,1 +stock-default,3,changed,20,3525,3480,2091,2589,549,5,0 +stock-default,3,changed,21,3666,3586,2088,2689,553,8,1 +stock-default,3,changed,22,3578,3530,2083,2604,537,4,0 +stock-default,3,changed,23,3503,3455,2080,2585,532,4,1 +stock-default,3,changed,24,3607,3518,2075,2577,568,8,1 +stock-default,3,changed,25,3547,3470,2070,2575,546,5,0 +stock-default,3,changed,26,3504,3456,2068,2567,555,4,0 +stock-default,3,changed,27,3520,3426,2066,2576,530,5,1 +stock-default,3,changed,28,3544,3498,2066,2636,553,4,1 +stock-default,3,changed,29,3588,3546,2064,2624,577,4,0 +stock-default,3,changed,30,3540,3486,2059,2589,542,10,0 +stock-default,3,changed,31,4157,3663,2096,2722,525,5,1 +stock-default,3,changed,32,3629,3586,2095,2715,528,4,0 +stock-default,3,changed,33,3724,3681,2097,2769,548,4,0 +stock-default,3,changed,34,3669,3616,2095,2705,570,4,0 +stock-default,3,changed,35,3680,3637,2081,2672,542,5,0 +stock-default,3,changed,36,3643,3569,2077,2712,538,5,0 +stock-default,3,changed,37,3656,3615,2077,2756,532,4,1 +stock-default,3,changed,38,3681,3622,2075,2710,533,6,0 +stock-default,3,changed,39,3717,3673,2075,2742,590,4,1 +stock-default,3,changed,40,3799,3670,2073,2727,549,4,1 +stock-default,3,changed,41,3674,3628,2075,2731,524,5,0 +stock-default,3,changed,42,3777,3698,2106,2795,536,6,1 +stock-default,3,changed,43,3744,3694,2119,2790,543,4,0 +stock-default,3,changed,44,3815,3771,2135,2797,616,5,0 +stock-default,3,changed,45,3906,3858,2162,2874,558,8,1 +stock-default,3,changed,46,3746,3651,2185,2769,538,11,0 +stock-default,3,changed,47,3796,3755,2218,2877,534,5,0 +stock-default,3,changed,48,3866,3820,2261,2930,542,4,0 +stock-default,3,changed,49,4021,3978,2292,2896,595,4,0 +stock-default,3,changed,50,3911,3870,2310,2943,562,4,0 +stock-default,3,changed,51,3938,3890,2333,2934,542,4,1 +stock-default,3,changed,52,3903,3860,2354,2960,536,14,0 +stock-default,3,changed,53,3986,3858,2378,2917,558,10,0 +stock-default,3,changed,54,4053,3953,2403,2926,617,5,0 +stock-default,3,changed,55,3975,3901,2418,2909,561,4,0 +stock-default,3,changed,56,3900,3855,2431,2904,536,5,0 +stock-default,3,changed,57,3919,3872,2448,2916,549,4,0 +stock-default,3,changed,58,3901,3855,2464,2892,566,5,1 +stock-default,3,changed,59,4152,3914,2479,2863,599,4,0 +stock-default,3,changed,60,32122,4522,4591,2880,1128,5,0 +stock-default,3,changed,61,8041,8000,4616,5931,1096,13,0 +stock-default,3,changed,62,7726,7681,4611,5679,1109,14,0 +stock-default,3,changed,63,7763,7685,4613,5731,1126,6,1 +stock-default,3,changed,64,7938,7858,4634,5770,1221,5,0 +stock-default,3,changed,65,7848,7701,4693,5719,1127,5,1 +stock-default,3,changed,66,8010,7911,4806,5917,1136,5,1 +stock-default,3,changed,67,8006,7955,4844,5909,1111,10,1 +stock-default,3,changed,68,7834,7787,4795,5739,1143,13,0 +stock-default,3,changed,69,7913,7833,4784,5718,1312,13,0 +stock-default,3,changed,70,7703,7604,4771,5564,1159,6,1 +stock-default,3,changed,71,7750,7540,4760,5565,1111,8,0 +stock-default,3,changed,72,7683,7606,4726,5691,1077,9,0 +stock-default,3,changed,73,7705,7647,4697,5592,1165,12,1 +stock-default,3,changed,74,7772,7686,4676,5647,1209,11,0 +stock-default,3,changed,75,7809,7761,4675,5751,1135,14,0 +stock-default,3,changed,76,7702,7638,4635,5589,1094,14,0 +stock-default,3,changed,77,7630,7551,4601,5629,1101,16,1 +stock-default,3,changed,78,7627,7413,4567,5491,1081,9,1 +stock-default,3,changed,79,7631,7576,4532,5522,1190,10,1 +stock-default,3,changed,80,7562,7491,4508,5555,1117,11,0 +stock-default,3,changed,81,7607,7567,4485,5662,1082,10,1 +stock-default,3,changed,82,7578,7487,4475,5587,1082,17,1 +stock-default,3,changed,83,7483,7414,4435,5515,1079,10,1 +stock-default,3,changed,84,7825,7588,4391,5492,1177,10,0 +stock-default,3,changed,85,7598,7534,4358,5541,1123,10,1 +stock-default,3,changed,86,7573,7495,4332,5594,1054,9,0 +stock-default,3,changed,87,7668,7594,4304,5660,1103,7,0 +stock-default,3,changed,88,7517,7472,4262,5567,1055,10,0 +stock-default,3,changed,89,7656,7572,4268,5543,1190,9,1 +stock-default,3,changed,90,7529,7449,4228,5497,1078,6,1 +stock-default,3,changed,91,7589,7312,4180,5449,1041,8,3 +stock-default,3,changed,92,7573,7512,4122,5479,1089,18,0 +stock-default,3,changed,93,7421,7357,4091,5422,1044,10,0 +stock-default,3,changed,94,7396,7327,4053,5391,1149,8,0 +stock-default,3,changed,95,7384,7304,4028,5319,1164,8,1 +stock-default,3,changed,96,7380,7300,3968,5470,1061,8,0 +stock-default,3,changed,97,7131,7084,3936,5297,1038,8,0 +stock-default,3,changed,98,7303,7077,3910,5213,1065,5,1 +stock-default,3,changed,99,7841,7345,3887,5390,1144,9,0 +stock-default,3,changed,100,7336,7242,3864,5321,1051,8,0 +stock-default,3,changed,101,7068,7021,3848,5225,1025,8,0 +stock-default,3,changed,102,7252,7175,3768,5233,1042,11,0 +stock-default,3,changed,103,6941,6866,3742,5043,1019,15,0 +stock-default,3,changed,104,7095,7051,3716,5188,1105,9,0 +stock-default,3,changed,105,7324,7056,3677,5226,1037,14,0 +stock-default,3,changed,106,7206,7146,3691,5368,985,8,1 +stock-default,3,changed,107,7145,7073,3678,5261,986,5,0 +stock-default,3,changed,108,6889,6806,3681,5132,1014,7,0 +stock-default,3,changed,109,7086,7007,3637,5055,1109,9,0 +stock-default,3,changed,110,6937,6860,3646,5071,1047,10,0 +stock-default,3,changed,111,6912,6666,3627,4988,980,7,0 +stock-default,3,changed,112,6779,6706,3592,4997,994,8,0 +stock-default,3,changed,113,6776,6702,3576,5013,997,7,0 +stock-default,3,changed,114,7001,6958,3533,5087,1108,9,1 +stock-default,3,changed,115,6675,6632,3519,4937,1013,11,0 +stock-default,3,changed,116,6776,6688,3490,4942,1059,11,1 +stock-default,3,changed,117,6583,6420,3443,4778,889,10,0 +stock-default,3,changed,118,6399,6318,3424,4742,929,5,0 +stock-default,3,changed,119,6377,6264,3392,4473,1052,4,0 +stock-default,3,changed,120,33720,6978,5490,4677,1578,7,0 +stock-default,3,changed,121,10226,10171,5462,7395,1523,11,0 +stock-default,3,changed,122,10294,10076,5404,7291,1564,6,0 +stock-default,3,changed,123,10075,10012,5357,7388,1507,6,1 +stock-default,3,changed,124,9836,9785,5351,7131,1652,5,0 +stock-default,3,changed,125,9627,9558,5345,7057,1483,6,1 +stock-default,3,changed,126,10150,10067,5369,7424,1524,14,0 +stock-default,3,changed,127,9422,9345,5344,6921,1427,5,1 +stock-default,3,changed,128,9630,9555,5277,6889,1576,5,1 +stock-default,3,changed,129,9591,9359,5232,6744,1567,15,0 +stock-default,3,changed,130,9297,9223,5185,6706,1479,7,1 +stock-default,3,changed,131,9186,9133,5152,6738,1409,8,0 +stock-default,3,changed,132,9249,9211,5130,6851,1393,7,0 +stock-default,3,changed,133,9321,9269,5126,6920,1429,5,1 +stock-default,3,changed,134,9327,9280,5118,6676,1678,8,0 +stock-default,3,changed,135,9117,9074,5096,6586,1489,5,0 +stock-default,3,changed,136,9414,9183,5049,6717,1505,15,0 +stock-default,3,changed,137,9176,9130,4985,6685,1383,6,0 +stock-default,3,changed,138,9186,9141,4951,6668,1394,6,0 +stock-default,3,changed,139,9198,9157,4931,6715,1526,5,0 +stock-default,3,changed,140,8944,8873,4891,6366,1555,5,1 +stock-default,3,changed,141,8869,8798,4874,6527,1375,5,0 +stock-default,3,changed,142,8855,8798,4849,6473,1358,6,1 +stock-default,3,changed,143,8915,8709,4828,6422,1395,5,0 +stock-default,3,changed,144,9276,9200,4790,6654,1565,5,0 +stock-default,3,changed,145,8933,8894,4729,6436,1403,5,0 +stock-default,3,changed,146,8765,8705,4716,6505,1333,22,0 +stock-default,3,changed,147,8589,8542,4691,6281,1371,6,0 +stock-default,3,changed,148,8675,8611,4676,6379,1338,5,0 +stock-default,3,changed,149,9045,8827,4603,6244,1488,9,0 +stock-default,3,changed,150,8577,8520,4555,6183,1370,14,1 +stock-default,3,changed,151,8293,8224,4521,6078,1297,5,0 +stock-default,3,changed,152,8357,8270,4489,6111,1284,6,2 +stock-default,3,changed,153,8487,8419,4441,6175,1306,6,0 +stock-default,3,changed,154,8440,8400,4396,5995,1429,5,0 +stock-default,3,changed,155,8388,8329,4325,5994,1313,5,0 +stock-default,3,changed,156,8434,8192,4289,6150,1252,5,1 +stock-default,3,changed,157,8046,7976,4226,5765,1225,5,0 +stock-default,3,changed,158,8322,8265,4173,6091,1242,5,1 +stock-default,3,changed,159,8554,8498,4132,6058,1471,5,0 +stock-default,3,changed,160,7796,7740,4104,5640,1281,4,1 +stock-default,3,changed,161,7715,7672,4075,5567,1203,5,0 +stock-default,3,changed,162,7948,7503,4066,5564,1179,4,0 +stock-default,3,changed,163,7740,7654,4028,5544,1215,10,1 +stock-default,3,changed,164,7764,7694,3996,5526,1353,4,0 +stock-default,3,changed,165,7767,7724,3949,5572,1254,5,0 +stock-default,3,changed,166,7530,7457,3913,5463,1169,5,1 +stock-default,3,changed,167,7783,7331,3867,5271,1160,4,0 +stock-default,3,changed,168,7549,7502,3828,5465,1190,4,0 +stock-default,3,changed,169,7971,7748,3803,5612,1334,5,0 +stock-default,3,changed,170,7418,7352,3767,5362,1182,5,0 +stock-default,3,changed,171,7422,7375,3708,5320,1160,5,0 +stock-default,3,changed,172,7167,7125,3685,5247,1102,5,0 +stock-default,3,changed,173,7150,7082,3635,5177,1110,5,0 +stock-default,3,changed,174,7389,7321,3584,5177,1261,5,1 +stock-default,3,changed,175,7004,6802,3549,4915,1129,5,0 +stock-default,3,changed,176,6956,6915,3492,5000,1067,10,0 +stock-default,3,changed,177,6771,6706,3470,4975,1065,4,0 +stock-default,3,changed,178,6845,6807,3441,4920,1144,5,0 +stock-default,3,changed,179,6884,6746,3410,4782,1228,5,0 +stock-default,3,changed,180,34648,7778,5234,4977,1642,5,0 +stock-default,3,changed,181,10100,9867,5215,7127,1632,6,0 +stock-default,3,changed,182,9886,9807,5193,7056,1648,8,1 +stock-default,3,changed,183,9958,9915,5165,7139,1761,6,0 +stock-default,3,changed,184,9910,9835,5130,7053,1702,9,0 +stock-default,3,changed,185,9580,9537,5157,6980,1636,5,0 +stock-default,3,changed,186,9626,9583,5132,6987,1556,5,0 +stock-default,3,changed,187,9672,9590,5153,7067,1554,7,0 +stock-default,3,changed,188,9519,9278,5138,6787,1584,5,0 +stock-default,3,changed,189,9601,9523,5095,6812,1682,18,0 +stock-default,3,changed,190,9370,9327,5099,6797,1579,5,0 +stock-default,3,changed,191,9277,9234,5084,6665,1620,6,0 +stock-default,3,changed,192,9245,9204,5071,6693,1560,5,0 +stock-default,3,changed,193,9296,9239,5023,6663,1577,14,0 +stock-default,3,changed,194,9450,9239,4978,6595,1661,5,1 +stock-default,3,changed,195,9358,9311,4942,6702,1611,6,0 +stock-default,3,changed,196,9364,9284,4912,6711,1538,6,0 +stock-default,3,changed,197,9063,9021,4881,6553,1463,5,0 +stock-default,3,changed,198,9206,9162,4839,6663,1508,7,0 +stock-default,3,changed,199,9347,9276,4780,6525,1594,12,1 +stock-default,3,changed,200,9427,9176,4742,6615,1556,6,0 +stock-default,3,changed,201,9146,9104,4704,6654,1435,5,1 +stock-default,3,changed,202,8731,8688,4691,6324,1532,5,0 +stock-default,3,changed,203,8668,8624,4643,6268,1408,5,0 +stock-default,3,changed,204,8969,8927,4598,6379,1568,6,0 +stock-default,3,changed,205,8538,8493,4597,6222,1440,6,0 +stock-default,3,changed,206,8708,8663,4535,6305,1385,4,0 +stock-default,3,changed,207,8743,8547,4488,6205,1357,5,0 +stock-default,3,changed,208,8722,8678,4456,6380,1391,6,0 +stock-default,3,changed,209,8858,8790,4415,6289,1563,5,0 +stock-default,3,changed,210,8607,8557,4392,6313,1382,14,0 +stock-default,3,changed,211,8487,8414,4363,6202,1334,15,0 +stock-default,3,changed,212,8198,8152,4334,5973,1299,5,0 +stock-default,3,changed,213,8645,8198,4297,5998,1322,4,1 +stock-default,3,changed,214,8105,8060,4279,5805,1433,5,0 +stock-default,3,changed,215,8207,8140,4228,5909,1323,10,0 +stock-default,3,changed,216,8271,8203,4148,5896,1286,5,0 +stock-default,3,changed,217,8032,7993,4112,5813,1239,5,0 +stock-default,3,changed,218,7705,7663,4093,5625,1272,13,0 +stock-default,3,changed,219,8386,8190,4053,5957,1393,8,0 +stock-default,3,changed,220,7954,7867,3987,5686,1269,14,1 +stock-default,3,changed,221,8443,8398,3917,5873,1467,5,0 +stock-default,3,changed,222,7935,7845,3900,5828,1241,9,0 +stock-default,3,changed,223,7707,7642,3864,5518,1293,11,0 +stock-default,3,changed,224,7849,7807,3830,5655,1356,4,1 +stock-default,3,changed,225,7441,7382,3788,5328,1199,4,0 +stock-default,3,changed,226,7677,7456,3754,5504,1146,4,0 +stock-default,3,changed,227,7537,7465,3721,5522,1135,5,0 +stock-default,3,changed,228,7612,7564,3651,5494,1138,6,0 +stock-default,3,changed,229,7303,7256,3598,5205,1272,5,0 +stock-default,3,changed,230,7163,7115,3540,5132,1158,5,0 +stock-default,3,changed,231,6980,6940,3508,5119,1089,5,0 +stock-default,3,changed,232,6943,6719,3498,5024,1069,4,1 +stock-default,3,changed,233,6790,6753,3472,4949,1093,4,0 +stock-default,3,changed,234,7181,7118,3429,5097,1235,7,0 +stock-default,3,changed,235,7284,6816,3413,5030,1135,5,0 +stock-default,3,changed,236,6972,6927,3368,5105,1069,5,0 +stock-default,3,changed,237,6937,6872,3334,5111,1027,4,0 +stock-default,3,changed,238,6808,6745,3300,4956,1044,7,2 +stock-default,3,changed,239,7044,6768,3273,4882,1159,4,0 diff --git a/Tools/Benchmarks/SpatialGrid-game-summary.json b/Tools/Benchmarks/SpatialGrid-game-summary.json new file mode 100644 index 0000000000..d8b7f4b05b --- /dev/null +++ b/Tools/Benchmarks/SpatialGrid-game-summary.json @@ -0,0 +1,147 @@ +{ + "warmup_ticks": 60, + "measured_ticks_per_process": 180, + "pairs_per_scenario": 3, + "wave_size": 2000, + "particle_sequences_match": true, + "scenarios": { + "collidable": { + "baseline": { + "mean_sim_us": 9259.157407407407, + "p95_sim_us": 57324, + "max_sim_us": 130287, + "mean_travel_us": 8365.309259259258, + "mean_movable_us": 8759.75925925926, + "mean_color_us": 158.36111111111111 + }, + "changed": { + "mean_sim_us": 9169.366666666667, + "p95_sim_us": 55749, + "max_sim_us": 129456, + "mean_travel_us": 8260.057407407407, + "mean_movable_us": 8652.616666666667, + "mean_color_us": 156.30555555555554 + }, + "runs": [ + { + "variant": "baseline", + "run": 1, + "mean_sim_us": 9110.922222222222, + "p95_sim_us": 53293, + "max_sim_us": 129835, + "mean_travel_us": 8228.45 + }, + { + "variant": "baseline", + "run": 2, + "mean_sim_us": 9314.111111111111, + "p95_sim_us": 56131, + "max_sim_us": 129691, + "mean_travel_us": 8418.611111111111 + }, + { + "variant": "baseline", + "run": 3, + "mean_sim_us": 9352.43888888889, + "p95_sim_us": 57324, + "max_sim_us": 130287, + "mean_travel_us": 8448.866666666667 + }, + { + "variant": "changed", + "run": 1, + "mean_sim_us": 9128.466666666667, + "p95_sim_us": 53165, + "max_sim_us": 127349, + "mean_travel_us": 8210.583333333334 + }, + { + "variant": "changed", + "run": 2, + "mean_sim_us": 9106.877777777778, + "p95_sim_us": 54233, + "max_sim_us": 125746, + "mean_travel_us": 8201.961111111112 + }, + { + "variant": "changed", + "run": 3, + "mean_sim_us": 9272.755555555555, + "p95_sim_us": 55749, + "max_sim_us": 129456, + "mean_travel_us": 8367.627777777778 + } + ], + "mean_sim_reduction_percent": 0.9697506672573297 + }, + "stock-default": { + "baseline": { + "mean_sim_us": 8660.514814814815, + "p95_sim_us": 10052, + "max_sim_us": 33465, + "mean_travel_us": 5976.8592592592595, + "mean_movable_us": 8138.766666666666, + "mean_color_us": 1276.7925925925927 + }, + "changed": { + "mean_sim_us": 8543.277777777777, + "p95_sim_us": 9943, + "max_sim_us": 34648, + "mean_travel_us": 5846.029629629629, + "mean_movable_us": 8008.32037037037, + "mean_color_us": 1280.4648148148149 + }, + "runs": [ + { + "variant": "baseline", + "run": 1, + "mean_sim_us": 8526.783333333333, + "p95_sim_us": 9968, + "max_sim_us": 32000, + "mean_travel_us": 5858.016666666666 + }, + { + "variant": "baseline", + "run": 2, + "mean_sim_us": 8893.2, + "p95_sim_us": 10361, + "max_sim_us": 33465, + "mean_travel_us": 6195.527777777777 + }, + { + "variant": "baseline", + "run": 3, + "mean_sim_us": 8561.56111111111, + "p95_sim_us": 9825, + "max_sim_us": 33369, + "mean_travel_us": 5877.033333333334 + }, + { + "variant": "changed", + "run": 1, + "mean_sim_us": 8521.927777777777, + "p95_sim_us": 9876, + "max_sim_us": 33301, + "mean_travel_us": 5832.722222222223 + }, + { + "variant": "changed", + "run": 2, + "mean_sim_us": 8552.638888888889, + "p95_sim_us": 9952, + "max_sim_us": 33076, + "mean_travel_us": 5857.455555555555 + }, + { + "variant": "changed", + "run": 3, + "mean_sim_us": 8555.266666666666, + "p95_sim_us": 9910, + "max_sim_us": 34648, + "mean_travel_us": 5847.9111111111115 + } + ], + "mean_sim_reduction_percent": 1.3536959354481959 + } + } +} diff --git a/Tools/Benchmarks/SpatialGrid-results.json b/Tools/Benchmarks/SpatialGrid-results.json new file mode 100644 index 0000000000..cd87bd6e94 --- /dev/null +++ b/Tools/Benchmarks/SpatialGrid-results.json @@ -0,0 +1,756 @@ +{ + "baseline_ref": "41e6b7010817936e09d2929330b7519852a1fcca", + "calls_per_sample": 300000, + "runs": 3, + "correctness": { + "baseline": [ + [ + "10677385455513655016", + "9197092506928777608", + "4599624711864679340", + "1111480838622258280" + ], + [ + "10677385455513655016", + "9197092506928777608", + "4599624711864679340", + "1111480838622258280" + ], + [ + "10677385455513655016", + "9197092506928777608", + "4599624711864679340", + "1111480838622258280" + ] + ], + "changed": [ + [ + "10677385455513655016", + "9197092506928777608", + "4599624711864679340", + "1111480838622258280" + ], + [ + "10677385455513655016", + "9197092506928777608", + "4599624711864679340", + "1111480838622258280" + ], + [ + "10677385455513655016", + "9197092506928777608", + "4599624711864679340", + "1111480838622258280" + ] + ] + }, + "modes": { + "lookup": { + "baseline": { + "ms": [ + 1.018, + 0.984, + 0.985, + 0.978, + 0.979, + 0.994, + 0.978, + 1.013, + 1.003, + 1.015, + 1.036, + 1.002, + 1.019, + 1.003, + 0.979, + 0.984, + 0.982, + 0.996, + 0.982, + 0.979, + 0.982 + ], + "checksums": [ + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858 + ] + }, + "changed": { + "ms": [ + 0.751, + 0.755, + 0.713, + 0.715, + 0.716, + 0.712, + 0.711, + 0.725, + 0.717, + 0.714, + 0.72, + 0.733, + 0.723, + 0.713, + 0.757, + 0.718, + 0.715, + 0.718, + 0.717, + 0.718, + 0.713 + ], + "checksums": [ + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858, + 13690858 + ] + }, + "baseline_median_ms": 0.985, + "changed_median_ms": 0.717, + "time_reduction_percent": 27.20812182741117 + }, + "sparse-lookup": { + "baseline": { + "ms": [ + 1.124, + 1.13, + 1.126, + 1.112, + 1.123, + 1.141, + 1.115, + 1.176, + 1.14, + 1.14, + 1.141, + 1.143, + 1.163, + 1.144, + 1.171, + 1.115, + 1.115, + 1.112, + 1.132, + 1.113, + 1.115 + ], + "checksums": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + "changed": { + "ms": [ + 0.841, + 0.842, + 0.846, + 0.847, + 0.843, + 0.846, + 0.842, + 0.843, + 0.846, + 0.843, + 0.843, + 0.843, + 0.855, + 0.841, + 0.842, + 0.841, + 0.881, + 0.843, + 0.858, + 0.867, + 0.842 + ], + "checksums": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + "baseline_median_ms": 1.13, + "changed_median_ms": 0.843, + "time_reduction_percent": 25.398230088495566 + }, + "dense-pixel": { + "baseline": { + "ms": [ + 37.478, + 37.633, + 37.611, + 37.645, + 37.749, + 37.681, + 37.716, + 36.576, + 36.545, + 36.565, + 36.708, + 36.595, + 37.278, + 36.756, + 37.654, + 37.442, + 37.682, + 37.724, + 37.582, + 37.64, + 37.445 + ], + "checksums": [ + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422 + ] + }, + "changed": { + "ms": [ + 35.903, + 35.695, + 35.627, + 35.754, + 35.707, + 35.81, + 35.819, + 35.952, + 35.797, + 35.87, + 35.901, + 35.881, + 35.952, + 36.1, + 36.599, + 36.587, + 36.584, + 36.439, + 36.666, + 36.618, + 36.648 + ], + "checksums": [ + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422, + 75616422 + ] + }, + "baseline_median_ms": 37.582, + "changed_median_ms": 35.903, + "time_reduction_percent": 4.467564259485934 + }, + "sparse-pixel": { + "baseline": { + "ms": [ + 1.604, + 1.566, + 1.571, + 1.602, + 1.601, + 1.554, + 1.575, + 1.539, + 1.532, + 1.53, + 1.533, + 1.548, + 1.592, + 1.527, + 1.53, + 1.526, + 1.537, + 1.531, + 1.531, + 1.529, + 1.526 + ], + "checksums": [ + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000 + ] + }, + "changed": { + "ms": [ + 1.557, + 1.553, + 1.572, + 1.555, + 1.553, + 1.553, + 1.553, + 1.553, + 1.569, + 1.604, + 1.622, + 1.593, + 1.554, + 1.553, + 1.553, + 1.559, + 1.57, + 1.561, + 1.565, + 1.563, + 1.56 + ], + "checksums": [ + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000, + 76500000 + ] + }, + "baseline_median_ms": 1.537, + "changed_median_ms": 1.559, + "time_reduction_percent": -1.4313597918022225 + }, + "seam-pixel": { + "baseline": { + "ms": [ + 9.433, + 9.395, + 9.424, + 9.39, + 9.396, + 9.34, + 9.383, + 9.283, + 9.247, + 9.241, + 9.349, + 9.222, + 9.644, + 9.243, + 9.221, + 9.2, + 9.198, + 9.293, + 9.26, + 9.193, + 9.221 + ], + "checksums": [ + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998 + ] + }, + "changed": { + "ms": [ + 8.654, + 8.627, + 8.627, + 8.699, + 8.652, + 8.623, + 8.641, + 8.556, + 8.564, + 8.63, + 8.573, + 8.551, + 8.563, + 8.625, + 8.633, + 8.685, + 8.636, + 8.714, + 8.633, + 8.631, + 8.69 + ], + "checksums": [ + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998, + 71865998 + ] + }, + "baseline_median_ms": 9.283, + "changed_median_ms": 8.631, + "time_reduction_percent": 7.023591511364858 + }, + "build": { + "baseline": { + "ms": [ + 16.274, + 16.37, + 16.345, + 16.475, + 16.389, + 16.413, + 16.773, + 16.088, + 16.212, + 16.279, + 16.346, + 16.266, + 16.322, + 16.333, + 16.237, + 16.247, + 16.262, + 16.243, + 16.354, + 16.239, + 16.364 + ], + "checksums": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + "changed": { + "ms": [ + 8.849, + 8.822, + 8.927, + 8.912, + 8.867, + 8.923, + 8.926, + 8.949, + 8.931, + 9.109, + 8.919, + 9.024, + 8.901, + 8.967, + 8.832, + 8.825, + 8.873, + 8.893, + 8.858, + 8.841, + 8.841 + ], + "checksums": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + "baseline_median_ms": 16.322, + "changed_median_ms": 8.901, + "time_reduction_percent": 45.46624188212228 + }, + "sparse-build": { + "baseline": { + "ms": [ + 1.586, + 1.575, + 1.566, + 1.582, + 1.578, + 1.576, + 1.573, + 1.56, + 1.561, + 1.563, + 1.571, + 1.574, + 1.608, + 1.564, + 1.572, + 1.585, + 1.574, + 1.598, + 1.699, + 1.691, + 1.747 + ], + "checksums": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + "changed": { + "ms": [ + 1.557, + 1.499, + 1.544, + 1.5, + 1.496, + 1.493, + 1.499, + 1.497, + 1.52, + 1.495, + 1.508, + 1.51, + 1.522, + 1.51, + 1.509, + 1.512, + 1.613, + 1.536, + 1.511, + 1.512, + 1.509 + ], + "checksums": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + "baseline_median_ms": 1.575, + "changed_median_ms": 1.51, + "time_reduction_percent": 4.126984126984123 + } + } +} diff --git a/Tools/Benchmarks/SpatialGrid.cpp b/Tools/Benchmarks/SpatialGrid.cpp new file mode 100644 index 0000000000..271f88dfeb --- /dev/null +++ b/Tools/Benchmarks/SpatialGrid.cpp @@ -0,0 +1,181 @@ +#include "StandardIncludes.h" +#include "SLTerrain.h" +#include "SettingsMan.h" +#include "LuaMan.h" +#include "ThreadMan.h" +#include + +using namespace RTE; + +struct ActivitySlot { + using type = std::unique_ptr ActivityMan::*; + friend type fixtureMember(ActivitySlot); +}; +struct TerrainWidth { + using type = int SLTerrain::*; + friend type fixtureMember(TerrainWidth); +}; +struct TerrainHeight { + using type = int SLTerrain::*; + friend type fixtureMember(TerrainHeight); +}; +template struct FixtureMember { + friend typename Tag::type fixtureMember(Tag) { return Member; } +}; +template struct FixtureMember; +template struct FixtureMember; +template struct FixtureMember; +struct SceneAccess : SceneMan { + static Scene* SceneMan::* scene() { return &SceneAccess::m_pCurrentScene; } + static SpatialPartitionGrid SceneMan::* grid() { return &SceneAccess::m_MOIDsGrid; } +}; +struct MovableAccess : MovableMan { + static std::vector MovableMan::* index() { return &MovableAccess::m_MOIDIndex; } +}; +struct ActivityFixture : Activity { + void teams(bool all) { + for (int team = 0; team < MaxTeamCount; ++team) m_TeamActive[team] = all || team == 0; + } +}; +struct TerrainFixture : SLTerrain { + TerrainFixture(int width, int height, bool wrap) { + this->*fixtureMember(TerrainWidth{}) = width; + this->*fixtureMember(TerrainHeight{}) = height; + m_WrapX = m_WrapY = wrap; + m_MainBitmap = create_bitmap_ex(8, width, height); + m_MainBitmapOwned = true; + clear_to_color(m_MainBitmap, g_MaterialAir); + } +}; +struct SpriteFixture : MOSRotating { + SpriteFixture(BITMAP* bitmap, int id, Vector pos, float scale) { + m_aSprite = {bitmap}; + m_SpriteOffset = Vector(-4, -4); + m_SpriteRadius = 6; + m_Pos = pos; + m_MOID = m_RootMOID = id; + m_GetsHitByMOs = id % 3 != 0; + m_Team = id % 5 - 1; + m_IgnoresTeamHits = id % 2 == 0; + m_Scale = scale; + m_HFlipped = id % 2 == 0; + m_Rotation.SetRadAngle((id % 4) * 0.2F); + } +}; +static_assert(sizeof(SpriteFixture) == sizeof(MOSRotating)); +static_assert(sizeof(ActivityFixture) == sizeof(Activity)); +static_assert(sizeof(TerrainFixture) == sizeof(SLTerrain)); + +uint64_t hash = 1469598103934665603ULL; +void record(uint64_t value) { hash = (hash ^ value) * 1099511628211ULL; } +int cellId(int x, int y, int width, int height) { + int cx = (x / 20) % (width / 20), cy = (y / 20) % (height / 20); + if (cx < 0) cx += width / 20; + if (cy < 0) cy += height / 20; + return cy * (width / 20) + cx; +} + +int main(int argc, char** argv) { + const int calls = argc > 1 ? std::stoi(argv[1]) : 300000; + install_allegro(SYSTEM_NONE, &errno, atexit); + ThreadMan::Construct(); TimerMan::Construct(); SettingsMan::Construct(); + SceneMan::Construct(); MovableMan::Construct(); LuaMan::Construct(); ActivityMan::Construct(); + auto* activity = new ActivityFixture(); + (g_ActivityMan.*fixtureMember(ActivitySlot{})).reset(activity); + BITMAP* bitmap = create_bitmap_ex(8, 8, 8); + clear_to_color(bitmap, 21); + putpixel(bitmap, 2, 3, ColorKeys::g_MaskColor); + auto& grid = g_SceneMan.*SceneAccess::grid(); + auto& index = g_MovableMan.*MovableAccess::index(); + for (bool wrap : {false, true}) for (bool allTeams : {false, true}) { + const int width = wrap ? 523 : 520, height = wrap ? 267 : 260; + Scene scene; + scene.Create(new TerrainFixture(width, height, wrap)); + g_SceneMan.*SceneAccess::scene() = &scene; + grid.Create(width, height, 20); + activity->teams(true); + grid.Reset(); + activity->teams(allTeams); + index.assign(257, nullptr); + std::vector> objects; + std::vector rectangles; + std::array>, 5> expected, physics; + for (int team = 0; team < 5; ++team) { + expected[team].resize((width / 20) * (height / 20)); + physics[team].resize((width / 20) * (height / 20)); + } + auto add = [&](const IntRect& rectangle, SpriteFixture& mo) { + grid.Add(rectangle, mo); + for (int team = -1; team < 4; ++team) { + if ((team != -1 && !activity->TeamActive(team)) || + (team != -1 && mo.IgnoresTeamHits() && mo.GetTeam() == team)) continue; + for (int x = rectangle.m_Left / 20; x <= rectangle.m_Right / 20; ++x) + for (int y = rectangle.m_Top / 20; y <= rectangle.m_Bottom / 20; ++y) { + const int cell = cellId(x * 20, y * 20, width, height); + expected[team + 1][cell].push_back(mo.GetID()); + if (mo.GetsHitByMOs()) physics[team + 1][cell].push_back(mo.GetID()); + } + } + }; + for (int id = 1; id <= 256; ++id) { + Vector pos(240 + (id * 17) % 40, 120 + (id * 23) % 40); + if (id <= 8) pos = Vector(id % 2 ? 1 : width - 2, id % 3 ? 1 : height - 2); + const float scale = id % 13 == 0 ? 0 : id % 7 == 0 ? 0.25F : id % 11 == 0 ? 2 : 1; + auto mo = std::make_unique(bitmap, id, pos, scale); + const int radius = static_cast(std::ceil(mo->GetRadius() * scale)); + IntRect rect(pos.GetFloorIntX() - radius, pos.GetFloorIntY() - radius, + pos.GetFloorIntX() + radius, pos.GetFloorIntY() + radius); + rectangles.push_back(rect); + add(rect, *mo); + if (id % 17 == 0) add(rect, *mo); + if (id == 1) add(IntRect(-1080, -540, 1080, 540), *mo); + index[id] = mo.get(); objects.push_back(std::move(mo)); + } + for (int x = -1041; x <= 1043; x += 7) for (int y = -521; y <= 533; y += 11) + for (int team = -2; team <= 4; ++team) for (bool hitOnly : {false, true}) { + const int normalizedTeam = team < -1 || team >= 4 ? -1 : team; + const auto& actual = grid.GetMOIDsAtPosition(x, y, team, hitOnly); + const auto& reference = (hitOnly ? physics : expected)[normalizedTeam + 1][cellId(x, y, width, height)]; + if (actual != reference) { std::cerr << "Cell contents differ\n"; return 1; } + record(actual.size()); for (int id : actual) record(id); + } + for (int x = -20; x <= width + 20; ++x) for (int y = -20; y <= height + 20; y += 3) + for (int team = -1; team < 4; ++team) record(g_SceneMan.GetMOIDPixel(x, y, team)); + std::cout << "mode=correctness wrap=" << wrap << " all_teams=" << allTeams << " behavior_hash=" << hash << '\n'; + if (allTeams && !wrap) { + grid.Reset(); + for (int i = 0; i < 256; ++i) grid.Add(rectangles[i], *objects[i]); + for (const std::string mode : {"lookup", "sparse-lookup", "dense-pixel", "sparse-pixel", "seam-pixel", "build", "sparse-build"}) { + auto run = [&] { + uint64_t total = 0; + if (mode.ends_with("build")) { + for (int tick = 0; tick < calls / 256; ++tick) { + grid.Reset(); + for (int i = 0; i < (mode == "build" ? 256 : 8); ++i) grid.Add(rectangles[i], *objects[i]); + } + } else for (int i = 0; i < calls; ++i) { + int x = 235 + (i * 17) % 55, y = 115 + (i * 23) % 55; + if (mode.starts_with("sparse")) { x = 100 + i % 55; y = 70 + i % 55; } + if (mode.ends_with("lookup")) total += grid.GetMOIDsAtPosition(x, y, -1, true).size(); + else if (mode == "seam-pixel") total += g_SceneMan.GetMOIDPixel((i % 3 - 1) * width + (i % 23 - 11), (i % 3 - 1) * height + (i % 17 - 8), -1); + else total += g_SceneMan.GetMOIDPixel(x, y, -1); + } + return total; + }; + run(); + for (int sample = 0; sample < 7; ++sample) { + const auto start = std::chrono::steady_clock::now(); + auto total = run(); + const double ms = std::chrono::duration(std::chrono::steady_clock::now() - start).count(); + std::cout << "mode=" << mode << " sample=" << sample << " checksum=" << total << " ms=" << std::fixed << std::setprecision(3) << ms << '\n'; + } + } + } + activity->teams(true); grid.Reset(); + for (int team = -1; team < 4; ++team) for (int x = 0; x < width; x += 20) for (int y = 0; y < height; y += 20) + if (!grid.GetMOIDsAtPosition(x, y, team, false).empty() || !grid.GetMOIDsAtPosition(x, y, team, true).empty()) return 2; + index.clear(); objects.clear(); + g_SceneMan.*SceneAccess::scene() = nullptr; + } + destroy_bitmap(bitmap); +} diff --git a/Tools/Benchmarks/SpatialGrid.md b/Tools/Benchmarks/SpatialGrid.md new file mode 100644 index 0000000000..8b97e9f3ad --- /dev/null +++ b/Tools/Benchmarks/SpatialGrid.md @@ -0,0 +1,128 @@ +# Spatial grid costs + +The grid originally calculates each added cell ID once per included team and again for the used-cell set. +The change calculates that ID once and inserts the object into each included team's cell. +In-range cell coordinates also bypass the two modulo operations. + +The cell size remains 20 pixels. +The change preserves wrapping, duplicate entries, team filters, and insertion order within each cell. +`SceneMan::GetMOIDPixel` and `MovableMan::GetMOIDPixel` retain their existing behavior. +In particular, a zero-scale candidate still returns `g_NoMOID` immediately. +Smaller cells can change that behavior, so this change retains the existing cell layout. + +## Production routine fixture + +`SpatialGrid.cpp` calls the actual grid, scene pixel query, and sprite hit-test routines. +The runner links the compiled engine objects and replaces the normal entry point with this fixture. +Each heap fixture contains no additional fields and requires the same size as its pooled base class. + +An independent reference constructs the original cell vectors. +The fixture compares exact vectors, including duplicate entries and order, for each query. +It covers negative coordinates, multiple wraps, seams, nondivisible scene sizes, inactive teams, ignored teams, and both collision flags. +Multiple registrations, reset, flipped sprites, rotation, normal scale, small scale, large scale, and zero scale also receive checks. +The paired runner requires identical sprite query hashes and timing checksums. + +The timing pass removes the oversized correctness rectangles first. +Dense queries use 256 sprites in a small region. +Sparse queries address empty cells. +The rebuild pass adds all 256 sprites or eight seam sprites after each reset. +Each rebuild sample contains 1171 resets. +Each query sample contains 300000 calls. +One initial sample precedes seven timed samples per process. +Three process pairs alternate execution order. + +Results use an Apple M3 Pro, GCC 15.2, C++20, and release flags with `-O3`. +Both versions use pristine engine objects from `41e6b7010817936e09d2929330b7519852a1fcca`. +Local macOS dependency support changes remain outside this commit. +Times are medians across 21 samples. +`SpatialGrid-results.json` contains every sample and correctness hash. + +| Routine | Baseline ms | Changed ms | Time reduction | +| --- | ---: | ---: | ---: | +| Dense grid lookup | 0.985 | 0.717 | 27.21% | +| Sparse grid lookup | 1.130 | 0.843 | 25.40% | +| Dense scene pixel query | 37.582 | 35.903 | 4.47% | +| Sparse scene pixel query | 1.537 | 1.559 | -1.43% | +| Seam scene pixel query | 9.283 | 8.631 | 7.02% | +| Dense grid rebuild | 16.322 | 8.901 | 45.47% | +| Sparse grid rebuild | 1.575 | 1.510 | 4.13% | + +The sparse scene query regresses by 0.022 ms per 300000 calls. +The dense rebuild and grid lookup gains persist across all three process pairs. + +## Full game capture + +The workload creates 2000 stock metal gibs and an actual frag grenade explosion every 60 ticks. +The collidable scenario explicitly sets `GetsHitByMOs = true` on each gib. +The stock-default scenario retains the preset's `GetsHitByMOs = false` value. +Both scenarios retain `HitsMOs` from the preset. + +Each process uses a fixed random seed per simulation tick and captures 240 ticks. +The timing analysis excludes ticks 0–59. +Three process pairs alternate execution order for each scenario. +Every paired particle sequence matches across all 240 ticks. +`SpatialGrid-game-results.csv` contains all 2880 tick records. +`SpatialGrid-game-summary.json` contains the per-process and combined statistics. +Percentiles use the nearest-rank method. + +| Scenario and metric | Baseline ms | Changed ms | +| --- | ---: | ---: | +| Collidable simulation mean | 9.259 | 9.169 | +| Collidable simulation p95 | 57.324 | 55.749 | +| Collidable simulation maximum | 130.287 | 129.456 | +| Collidable travel mean | 8.365 | 8.260 | +| Stock-default simulation mean | 8.661 | 8.543 | +| Stock-default simulation p95 | 10.052 | 9.943 | +| Stock-default simulation maximum | 33.465 | 34.648 | +| Stock-default travel mean | 5.977 | 5.846 | + +Combined mean simulation time decreases by 0.97% for collidable debris and 1.35% for stock-default debris. +One collidable pair becomes 0.19% slower, while the other two become 2.23% and 0.85% faster. +The stock-default pairs improve by 0.06%, 3.83%, and 0.07%. +These small gains overlap process variation. +The stock-default maximum increases by 1.183 ms. +The measurements support lower grid costs, but three pairs do not establish a general frame-rate or latency improvement. + +## Reproduce + +Create a release build with the normal engine dependencies. +On macOS, expose the FMOD library: + +```sh +export DYLD_LIBRARY_PATH="$PWD/external/lib/macos" +``` + +Run the paired production fixture: + +```sh +python3 Tools/Benchmarks/SpatialGrid.py build /tmp/spatial-grid \ + --baseline-ref 41e6b7010817936e09d2929330b7519852a1fcca \ + --runs 3 --calls 300000 +``` + +For a build with other source changes, supply `--replace-object NAME PATH` to both helpers for each affected engine object. +The recorded runs replace `Source_System_Matrix.cpp.o` and `Source_Entities_MOSprite.cpp.o` with pristine baseline objects. + +Copy `Tools/Benchmarks/PerformanceStress.rte` into a runtime's `Mods` directory. +Configure `UserData/Settings.ini` with these properties: + +```ini +LaunchIntoActivity = 1 +DefaultActivityType = GAScripted +DefaultActivityName = Debris Performance Stress +DefaultSceneName = Grasslands +``` + +Run both game scenarios: + +```sh +python3 Tools/Benchmarks/SpatialGridGame.py build /tmp/spatial-grid /path/to/runtime \ + --runs 3 --wave-size 2000 +python3 Tools/Benchmarks/SpatialGridGame.py build /tmp/spatial-grid /path/to/runtime \ + --runs 3 --wave-size 2000 --native-default +``` + +The helper compiles temporary timing copies of `Main.cpp` and `MovableMan.cpp`. +It leaves the repository sources unchanged and restores the original workload after all captures. +Each `PERF_PROFILE` row records simulation, MovableMan, travel, color draw, clear, and grid-wait times in microseconds. +These timings cover simulation work and do not measure complete frame time. diff --git a/Tools/Benchmarks/SpatialGrid.py b/Tools/Benchmarks/SpatialGrid.py new file mode 100644 index 0000000000..92ffe9ba4a --- /dev/null +++ b/Tools/Benchmarks/SpatialGrid.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 +import argparse +import json +import pathlib +import shlex +import statistics +import subprocess + +parser = argparse.ArgumentParser(description='Compare production spatial grid routines with compiled engine objects.') +parser.add_argument('build_directory', type=pathlib.Path) +parser.add_argument('output_directory', type=pathlib.Path) +parser.add_argument('--baseline-ref', required=True) +parser.add_argument('--replace-object', nargs=2, action='append', default=[], metavar=('NAME', 'PATH')) +parser.add_argument('--runs', type=int, default=3) +parser.add_argument('--calls', type=int, default=300000) +args = parser.parse_args() +build = args.build_directory.resolve() +output = args.output_directory.resolve() +output.mkdir(parents=True, exist_ok=True) +source = pathlib.Path(__file__).with_suffix('.cpp').resolve() +repository = source.parents[2] +commands = json.loads((build / 'compile_commands.json').read_text()) +command = shlex.split(next(x['command'] for x in commands if x['file'].endswith('SpatialPartitionGrid.cpp'))) +command = command[:command.index('-MD')] +command = [arg for arg in command if arg not in {'-ICortexCommand.p', '-fpch-preprocess'}] +command = ['-I' + str(repository / arg[5:]) if arg.startswith('-I../Source') else arg for arg in command] +index = command.index('-include') +del command[index:index + 2] +benchmark_object = str(output / 'SpatialGrid.o') +subprocess.run(command + ['-c', str(source), '-o', benchmark_object], cwd=build, check=True) +baseline_source = output / 'SpatialPartitionGrid-baseline.cpp' +baseline_source.write_bytes(subprocess.check_output(['git', 'show', args.baseline_ref + ':Source/System/SpatialPartitionGrid.cpp'], cwd=repository)) +link = shlex.split(subprocess.check_output(['ninja', '-C', str(build), '-t', 'commands', 'CortexCommand'], text=True).splitlines()[-1]) +for variant, engine_source in [('baseline', baseline_source), ('changed', repository / 'Source/System/SpatialPartitionGrid.cpp')]: + engine_object = str(output / ('SpatialPartitionGrid-' + variant + '.o')) + subprocess.run(command + ['-include', str(repository / 'Source/System/StandardIncludes.h'), '-c', str(engine_source), '-o', engine_object], cwd=build, check=True) + link_command = link.copy() + link_command[link_command.index('-o') + 1] = str(output / variant) + link_command[link_command.index('CortexCommand.p/Source_Main.cpp.o')] = benchmark_object + link_command[link_command.index('CortexCommand.p/Source_System_SpatialPartitionGrid.cpp.o')] = engine_object + for name, replacement in args.replace_object: + link_command[link_command.index('CortexCommand.p/' + name)] = str(pathlib.Path(replacement).resolve()) + subprocess.run(link_command, cwd=build, check=True) +results = {'baseline_ref': args.baseline_ref, 'calls_per_sample': args.calls, 'runs': args.runs, 'correctness': {}, 'modes': {}} +for run in range(args.runs): + for variant in (['baseline', 'changed'] if run % 2 == 0 else ['changed', 'baseline']): + log = subprocess.check_output([str(output / variant), str(args.calls)], text=True) + (output / (variant + '-run' + str(run + 1) + '.txt')).write_text(log) + hashes = [] + for line in log.splitlines(): + row = dict(item.split('=', 1) for item in line.split()) + if row['mode'] == 'correctness': + hashes.append(row['behavior_hash']) + else: + entry = results['modes'].setdefault(row['mode'], {}).setdefault(variant, {'ms': [], 'checksums': []}) + entry['ms'].append(float(row['ms'])) + entry['checksums'].append(int(row['checksum'])) + results['correctness'].setdefault(variant, []).append(hashes) +assert results['correctness']['baseline'] == results['correctness']['changed'] +for mode, values in results['modes'].items(): + assert values['baseline']['checksums'] == values['changed']['checksums'], mode + for variant in ['baseline', 'changed']: + values[variant + '_median_ms'] = statistics.median(values[variant]['ms']) + values['time_reduction_percent'] = 100 * (1 - values['changed_median_ms'] / values['baseline_median_ms']) + print(mode, values['baseline_median_ms'], values['changed_median_ms'], values['time_reduction_percent']) +(output / 'summary.json').write_text(json.dumps(results, indent=2) + '\n') diff --git a/Tools/Benchmarks/SpatialGridGame.py b/Tools/Benchmarks/SpatialGridGame.py new file mode 100644 index 0000000000..95a014490a --- /dev/null +++ b/Tools/Benchmarks/SpatialGridGame.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 +"""Capture seeded simulation ticks in a configured PerformanceStress runtime.""" +import argparse +import csv +import json +import math +import os +from pathlib import Path +import shlex +import shutil +import statistics +import subprocess + +parser = argparse.ArgumentParser(description=__doc__) +parser.add_argument('build_directory', type=Path) +parser.add_argument('benchmark_directory', type=Path) +parser.add_argument('runtime_directory', type=Path) +parser.add_argument('--replace-object', nargs=2, action='append', default=[], metavar=('NAME', 'PATH')) +parser.add_argument('--runs', type=int, default=3) +parser.add_argument('--wave-size', type=int, default=2000) +parser.add_argument('--warmup-ticks', type=int, default=60) +parser.add_argument('--native-default', action='store_true') +args = parser.parse_args() +build, output, runtime = (p.resolve() for p in [args.build_directory, args.benchmark_directory, args.runtime_directory]) +repository = Path(__file__).resolve().parents[2] +prefix = 'stock' if args.native_default else 'collidable' +main = (repository / 'Source/Main.cpp').read_text() +main = main.replace('void RunGameLoop() {', '''namespace RTE { extern long long profileTravel, profileColor, profileClear; } +void RunGameLoop() { + struct CaptureSample { long long simulation, movable; int particles; long long travel, color, clear, gridWait; }; + std::vector captureSamples; + captureSamples.reserve(240);''') +main = main.replace('g_PerformanceMan.StartPerformanceMeasurement(PerformanceMan::SimTotal);', '''g_RandomGenerator.Seed(731 + captureSamples.size()); + const long long captureStart = g_TimerMan.GetAbsoluteTime(); + g_PerformanceMan.StartPerformanceMeasurement(PerformanceMan::SimTotal);''') +main = main.replace('g_MovableMan.Update();', '''const long long captureMovableStart = g_TimerMan.GetAbsoluteTime(); + g_MovableMan.Update(); + const long long captureMovableEnd = g_TimerMan.GetAbsoluteTime();''') +main = main.replace('g_PerformanceMan.StopPerformanceMeasurement(PerformanceMan::SimTotal);', '''g_PerformanceMan.StopPerformanceMeasurement(PerformanceMan::SimTotal); + captureSamples.push_back({g_TimerMan.GetAbsoluteTime() - captureStart, captureMovableEnd - captureMovableStart, + g_MovableMan.GetParticleCount(), profileTravel, profileColor, profileClear, profileWait});''') +main = main.replace('g_MovableMan.CompleteQueuedMOIDDrawings();', '''const auto profileWaitStart = g_TimerMan.GetAbsoluteTime(); + g_MovableMan.CompleteQueuedMOIDDrawings(); + const auto profileWait = g_TimerMan.GetAbsoluteTime() - profileWaitStart;''') +main = main.replace('g_PerformanceMan.UpdateMSPF(updateTotalTime, drawTotalTime);', '''g_PerformanceMan.UpdateMSPF(updateTotalTime, drawTotalTime); + if (captureSamples.size() >= 240) { + for (size_t i = 0; i < captureSamples.size(); ++i) { + const auto& value = captureSamples[i]; + std::printf("PERF_PROFILE,%zu,%lld,%lld,%d,%lld,%lld,%lld,%lld\\n", i, value.simulation, value.movable, + value.particles, value.travel, value.color, value.clear, value.gridWait); + } + std::printf("PERF_CAPTURE_DONE\\n"); + std::fflush(stdout); + System::SetQuit(true); + }''') +movable = 'namespace RTE { long long profileTravel = 0, profileColor = 0, profileClear = 0; }\n' + (repository / 'Source/Managers/MovableMan.cpp').read_text() +movable = movable.replace('void MovableMan::Update() {', 'void MovableMan::Update() {\n profileTravel = profileColor = profileClear = 0;') +for original, counter in [('g_SceneMan.ClearMOColorLayer();', 'profileClear'), ('\tTravel();', 'profileTravel'), ('Draw(g_SceneMan.GetMOColorBitmap());', 'profileColor')]: + movable = movable.replace(original, '{ const auto started = g_TimerMan.GetAbsoluteTime(); ' + original + ' ' + counter + ' = g_TimerMan.GetAbsoluteTime() - started; }') +commands = json.loads((build / 'compile_commands.json').read_text()) +for name, source in [('Main', main), ('MovableMan', movable)]: + path = output / (name + '-capture.cpp') + path.write_text(source) + command = shlex.split(next(c['command'] for c in commands if c['file'].endswith('/' + name + '.cpp'))) + command = command[:command.index('-MD')] + command = [arg for arg in command if arg not in {'-ICortexCommand.p', '-fpch-preprocess'}] + command = ['-I' + str(repository / arg[5:]) if arg.startswith('-I../Source') else arg for arg in command] + index = command.index('-include') + command[index + 1] = str(repository / 'Source/System/StandardIncludes.h') + subprocess.run(command + ['-c', str(path), '-o', str(output / (name + '-capture.o'))], cwd=build, check=True) +link = shlex.split(subprocess.check_output(['ninja', '-C', str(build), '-t', 'commands', 'CortexCommand'], text=True).splitlines()[-1]) +for variant in ['baseline', 'changed']: + command = link.copy() + command[command.index('-o') + 1] = str(output / ('game-' + variant)) + replacements = args.replace_object + [('Source_Main.cpp.o', output / 'Main-capture.o'), + ('Source_Managers_MovableMan.cpp.o', output / 'MovableMan-capture.o'), + ('Source_System_SpatialPartitionGrid.cpp.o', output / ('SpatialPartitionGrid-' + variant + '.o'))] + for name, path in replacements: + command[command.index('CortexCommand.p/' + name)] = str(Path(path).resolve()) + subprocess.run(command, cwd=build, check=True) +stress = runtime / 'Mods/PerformanceStress.rte/Stress.lua' +original = stress.read_text() +stress.write_text(original.replace('for i = 1, 400 do', 'for i = 1, ' + str(args.wave_size) + ' do').replace( + ' gib.GetsHitByMOs = true\n', '' if args.native_default else ' gib.GetsHitByMOs = true\n')) +executable = runtime / 'CortexCommand.app/Contents/MacOS/CortexCommand' +env = dict(os.environ) +results = {'wave_size': args.wave_size, 'native_default': args.native_default, 'warmup_ticks': args.warmup_ticks, 'runs': []} +rows = [] +for run in range(1, args.runs + 1): + particles = {} + for variant in (['baseline', 'changed'] if run % 2 else ['changed', 'baseline']): + shutil.copy2(output / ('game-' + variant), executable) + samples = [] + with (output / (prefix + '-' + variant + '-' + str(run) + '.log')).open('w') as log: + proc = subprocess.Popen([str(executable), '-cout'], cwd=runtime, env=env, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) + for line in proc.stdout: + log.write(line) + if line.startswith('PERF_PROFILE,'): + sample = [int(value) for value in line.strip().split(',')[1:]] + samples.append(sample) + rows.append([prefix, run, variant] + sample) + if 'PERF_CAPTURE_DONE' in line: + proc.terminate() + break + proc.wait() + assert len(samples) == 240 + particles[variant] = [sample[3] for sample in samples] + measured = samples[args.warmup_ticks:] + durations = sorted(sample[1] for sample in measured) + results['runs'].append({'run': run, 'variant': variant, 'mean_sim_us': statistics.mean(durations), + 'p95_sim_us': durations[math.ceil(0.95 * len(durations)) - 1], 'max_sim_us': max(durations), + 'mean_travel_us': statistics.mean(sample[4] for sample in measured)}) + assert particles['baseline'] == particles['changed'] +stress.write_text(original) +results['particle_sequences_match'] = True +with (output / (prefix + '-game-results.csv')).open('w') as stream: + writer = csv.writer(stream) + writer.writerow(['scenario', 'run', 'variant', 'tick', 'sim_us', 'movable_us', 'particles', 'travel_us', 'color_us', 'clear_us', 'gridwait_us']) + writer.writerows(rows) +(output / (prefix + '-game-summary.json')).write_text(json.dumps(results, indent=2) + '\n') +print(json.dumps(results, indent=2))