<< Back to Warzone Idle Forum   Search

Posts 1 - 20 of 27   1  2  Next >>   
Compiled Hospital Saves per map: 2023-08-31 16:59:35

deleted 
Level 62
Report
Has anyone already prepared a list of all (minimal) hospital saves per upgrade per map?

I know that https://pkmx.github.io/wzi-levels/ has all the needed base data to compile that, but did anyone made the effort so far?


Example for HCCC:
https://pkmx.github.io/wzi-levels/hardened-copper-creek-castle.html lists
Hosps lvl 1: 62K + 538K + 3M + 8.2M
Hosps lvl 2: 117.8K + 1.022M + 5.7M + 15.58M
Hosps lvl 3: 210.8K + 1.829M + 10.2M + 15.58M (as that hosps is max at lvl 2 already)

But what I would be interested in:
Hosps lvl 1: 12M
Hosps lvl 2: 22M
Hosps lvl 3: 28M
Compiled Hospital Saves per map: 2023-09-01 07:44:03

(deleted)
Level 59
Report
eh

place this in a file named filename, run
 
curl -O https://pkmx.github.io/wzi-levels/hardened-copper-creek-castle.html
node filename hardened-copper-creek-castle.html

x= require('fs').readFileSync(process.argv[2])+''
read_num= _=> ({K:1e3,M:1e6,G:1e9,T:1e12})[_[_.length-1]] * _.slice(0,-1)
write_num= _=> (_/1e6).toFixed(2)+'M'
y= x.match(/"hospitals"[\s\S]*?"markets"/)[0].split('data-placement').slice(1).map(_=> _.match(/<td>.*?<\/td>/g).map(_=> _.match(/\d.*?(?=<br)/)[0] ).map(read_num) )
r= y[0].map((_,ii)=> y.map(_=> _[ii]||0).reduce((a,b)=> a+b) ).reduce((r,_)=>( r.push(r[r.length-1]+_) ,r ),[0]).slice(1)
console.log(r.map(write_num).map((_,i)=> 'H'+(i+1)+': '+_ ).join('\n'))


Edited 9/1/2023 11:48:51
Compiled Hospital Saves per map: 2023-09-01 08:01:16


Zinthos 
Level 58
Report
The thing otto want is a thing that I also want...

Meanwhile Cosine Malady' s post makes almost no sense to me,
Really I just want a smart summation row in pkmx's current pages, so maybe smart people could help make that happen?
Compiled Hospital Saves per map: 2023-09-01 08:10:51

(deleted)
Level 59
Report
my post is a code that provides the info you want, if not in pkmx style
Compiled Hospital Saves per map: 2023-09-01 10:16:55

deleted 
Level 62
Report
Many many thanks to Cosine for giving me the ramp-up. This is what I made out of it:

Download all files which are of interest:
cd idle-levels
curl -O https://pkmx.github.io/wzi-levels/k-px.html
curl -O https://pkmx.github.io/wzi-levels/the-siege-of-feldmere.html
curl -O https://pkmx.github.io/wzi-levels/sengoku-rise-of-oda-nobunaga.html
curl -O https://pkmx.github.io/wzi-levels/copper-creek-castle.html
curl -O https://pkmx.github.io/wzi-levels/geopolitics.html
curl -O https://pkmx.github.io/wzi-levels/breaking-green.html
curl -O https://pkmx.github.io/wzi-levels/far-land.html
curl -O https://pkmx.github.io/wzi-levels/reconquest-1065.html
curl -O https://pkmx.github.io/wzi-levels/fort-harbor.html
curl -O https://pkmx.github.io/wzi-levels/europe-1066-ad.html
curl -O https://pkmx.github.io/wzi-levels/ad-1045-roads-of-silk-and-iron.html
curl -O https://pkmx.github.io/wzi-levels/old-town.html
curl -O https://pkmx.github.io/wzi-levels/orbis-veteribus-notus.html
curl -O https://pkmx.github.io/wzi-levels/scandinavia-and-the-nordic-countries.html
curl -O https://pkmx.github.io/wzi-levels/asia-population-density.html
curl -O https://pkmx.github.io/wzi-levels/africa.html
curl -O https://pkmx.github.io/wzi-levels/rise-and-fall-of-the-roman-empire.html
curl -O https://pkmx.github.io/wzi-levels/australia.html
curl -O https://pkmx.github.io/wzi-levels/netherlands.html
curl -O https://pkmx.github.io/wzi-levels/china.html
curl -O https://pkmx.github.io/wzi-levels/afro-eurasia-gargantuan.html
curl -O https://pkmx.github.io/wzi-levels/triskelion.html
curl -O https://pkmx.github.io/wzi-levels/united-states.html
curl -O https://pkmx.github.io/wzi-levels/europe-huge.html
curl -O https://pkmx.github.io/wzi-levels/hardened-siege-of-feldmere.html
curl -O https://pkmx.github.io/wzi-levels/hardened-copper-creek-castle.html
curl -O https://pkmx.github.io/wzi-levels/hardened-far-land.html
curl -O https://pkmx.github.io/wzi-levels/hardened-old-town.html
curl -O https://pkmx.github.io/wzi-levels/hardened-scandinavia-and-the-nordic-countries.html
curl -O https://pkmx.github.io/wzi-levels/hardened-rise-and-fall-of-the-roman-empire.html
curl -O https://pkmx.github.io/wzi-levels/hardened-china.html
curl -O https://pkmx.github.io/wzi-levels/hardened-triskelion.html
curl -O https://pkmx.github.io/wzi-levels/hardened-europe-huge.html
cd ..


And now do the parsing and summing but easier readable for me:
var files = require('fs').readdirSync('./idle-levels/');

for (let file_index = 0; file_index < files.length; file_index++) {
	console.log('------------------------------------------------------------------------------')
	console.log('idle map: ' + files[file_index])
	raw_data = require('fs').readFileSync('./idle-levels/' + files[file_index])+''
	parse_num= _=> ({K:1e3,M:1e6,G:1e9,T:1e12})[_[_.length-1]] * _.slice(0,-1)

	hosp_array = raw_data.match(/"hospitals"[\s\S]*?"markets"/)[0].split('data-placement').slice(1).map(_=> _.match(/<td>.*?<\/td>/g).map(_=> _.match(/\d.*?(?=<br)/)[0]).map(parse_num))

	const max_level = hosp_array[0].length
	console.log('number of hosps: ' + hosp_array.length)
	console.log('max level: ' + max_level)

	// fill hosps which dont have all levels and sum up saves by level
	let summed_hosps = []
	for (let level = 0; level < max_level; level++) {
		summed_hosps[level]=0
		for (let hosp = 0; hosp < hosp_array.length; hosp++) {
			if (!hosp_array[hosp][level]) {
				hosp_array[hosp][level]=hosp_array[hosp][level-1]
			}
			//console.log('level ' + level + ', hosp ' + hosp + ': ' + hosp_array[hosp][level])
			summed_hosps[level] += hosp_array[hosp][level]||hosp_array[hosp][level-1]
		}
		summed_hosps[level]=(summed_hosps[level]/1000/1000).toFixed(1)
	}

	console.log('summed up minimal hosp saves:')
	console.log(summed_hosps)
}
Compiled Hospital Saves per map: 2023-09-01 10:18:43

deleted 
Level 62
Report
And those are the results in rounded M of armies:

------------------------------------------------------------------------------
Idle map: ad-1045-roads-of-silk-and-iron.html with 12 hospitals
Saves (in M):
1: 66.4 2: 109.4 3: 127.7 4: 132.6 5: 133.2 6: 133.9 7: 133.9 8: 133.9

------------------------------------------------------------------------------
Idle map: africa.html with 13 hospitals
Saves (in M):
1: 86.4 2: 164.2 3: 222.5 4: 236.4 5: 244.1 6: 245.5 7: 245.8 8: 245.8

------------------------------------------------------------------------------
Idle map: afro-eurasia-gargantuan.html with 15 hospitals
Saves (in M):
1: 360.0 2: 684.0 3: 935.9 4: 1018.7 5: 1031.5 6: 1039.1 7: 1043.1 8: 1043.5

------------------------------------------------------------------------------
Idle map: asia-population-density.html with 14 hospitals
Saves (in M):
1: 107.2 2: 174.7 3: 207.3 4: 220.3 5: 224.9 6: 227.4 7: 227.4 8: 227.4

------------------------------------------------------------------------------
Idle map: australia.html with 14 hospitals
Saves (in M):
1: 168.2 2: 319.5 3: 372.5 4: 405.6 5: 408.0 6: 408.8 7: 409.0 8: 409.0

------------------------------------------------------------------------------
Idle map: breaking-green.html with 5 hospitals
Saves (in M):
1: 9.9 2: 18.7 3: 24.8 4: 27.8 5: 27.9 6: 27.9 7: 28.0

------------------------------------------------------------------------------
Idle map: china.html with 15 hospitals
Saves (in M):
1: 192.0 2: 364.8 3: 485.0 4: 506.9 5: 513.5 6: 517.2 7: 517.4 8: 517.4

------------------------------------------------------------------------------
Idle map: copper-creek-castle.html with 4 hospitals
Saves (in M):
1: 4.0 2: 7.6 3: 9.9 4: 10.3 5: 10.9 6: 10.9 7: 10.9

------------------------------------------------------------------------------
Idle map: europe-1066-ad.html with 9 hospitals
Saves (in M):
1: 31.8 2: 60.4 3: 74.9 4: 79.9 5: 82.6 6: 82.6 7: 82.6 8: 82.6

------------------------------------------------------------------------------
Idle map: europe-huge.html with 15 hospitals
Saves (in M):
1: 409.1 2: 777.3 3: 987.9 4: 1022.0 5: 1025.8 6: 1026.2 7: 1026.2 8: 1026.2

------------------------------------------------------------------------------
Idle map: far-land.html with 7 hospitals
Saves (in M):
1: 40.2 2: 57.2 3: 68.0 4: 70.7 5: 74.1 6: 75.0

------------------------------------------------------------------------------
Idle map: fort-harbor.html with 7 hospitals
Saves (in M):
1: 18.4 2: 34.9 3: 42.0 4: 46.2 5: 48.3 6: 48.3 7: 48.3

------------------------------------------------------------------------------
Idle map: geopolitics.html with 5 hospitals
Saves (in M):
1: 9.3 2: 12.4 3: 14.0 4: 14.7 5: 14.8 6: 14.8 7: 14.8

------------------------------------------------------------------------------
Idle map: hardened-china.html with 15 hospitals
Saves (in M):
1: 552.6 2: 1049.8 3: 1252.7 4: 1333.5 5: 1352.5 6: 1353.4 7: 1354.4 8: 1354.4

------------------------------------------------------------------------------
Idle map: hardened-copper-creek-castle.html with 4 hospitals
Saves (in M):
1: 11.8 2: 22.4 3: 27.8 4: 35.4 5: 37.0 6: 37.2 7: 37.4

------------------------------------------------------------------------------
Idle map: hardened-europe-huge.html with 15 hospitals
Saves (in M):
1: 1342.0 2: 2549.8 3: 3762.0 4: 4033.3 5: 4165.6 6: 4178.2 7: 4183.2 8: 4183.2

------------------------------------------------------------------------------
Idle map: hardened-far-land.html with 7 hospitals
Saves (in M):
1: 99.6 2: 136.5 3: 160.5 4: 173.7 5: 175.0 6: 176.5 7: 176.7

------------------------------------------------------------------------------
Idle map: hardened-old-town.html with 11 hospitals
Saves (in M):
1: 241.0 2: 457.8 3: 523.7 4: 551.4 5: 558.8 6: 562.6 7: 562.7 8: 562.8

------------------------------------------------------------------------------
Idle map: hardened-rise-and-fall-of-the-roman-empire.html with 14 hospitals
Saves (in M):
1: 537.3 2: 863.2 3: 1070.3 4: 1121.2 5: 1137.1 6: 1143.9 7: 1143.9 8: 1143.9

------------------------------------------------------------------------------
Idle map: hardened-scandinavia-and-the-nordic-countries.html with 13 hospitals
Saves (in M):
1: 266.7 2: 421.5 3: 501.3 4: 523.2 5: 537.3 6: 538.1 7: 539.1 8: 539.1

------------------------------------------------------------------------------
Idle map: hardened-siege-of-feldmere.html with 3 hospitals
Saves (in M):
1: 6.0 2: 11.3 3: 12.9 4: 15.1 5: 15.3 6: 15.5

------------------------------------------------------------------------------
Idle map: hardened-triskelion.html with 15 hospitals
Saves (in M):
1: 923.3 2: 1754.2 3: 2429.0 4: 2837.8 5: 2933.0 6: 2939.7 7: 2947.8 8: 2949.8

------------------------------------------------------------------------------
Idle map: k-px.html with 2 hospitals
Saves (in M):
1: 0.7 2: 1.2 3: 2.2 4: 2.3 5: 2.4

------------------------------------------------------------------------------
Idle map: netherlands.html with 15 hospitals
Saves (in M):
1: 218.6 2: 415.4 3: 498.9 4: 529.4 5: 537.3 6: 539.9 7: 540.2 8: 540.2

------------------------------------------------------------------------------
Idle map: old-town.html with 11 hospitals
Saves (in M):
1: 49.8 2: 94.5 3: 127.3 4: 136.5 5: 137.4 6: 138.6 7: 138.6 8: 138.6

------------------------------------------------------------------------------
Idle map: orbis-veteribus-notus.html with 13 hospitals
Saves (in M):
1: 67.6 2: 106.7 3: 137.7 4: 150.0 5: 151.5 6: 151.7 7: 151.7 8: 151.7

------------------------------------------------------------------------------
Idle map: reconquest-1065.html with 7 hospitals
Saves (in M):
1: 20.9 2: 39.7 3: 47.1 4: 48.1 5: 49.4 6: 49.8 7: 49.9

------------------------------------------------------------------------------
Idle map: rise-and-fall-of-the-roman-empire.html with 14 hospitals
Saves (in M):
1: 172.7 2: 275.1 3: 335.6 4: 361.4 5: 368.5 6: 370.3 7: 370.6 8: 370.6

------------------------------------------------------------------------------
Idle map: scandinavia-and-the-nordic-countries.html with 13 hospitals
Saves (in M):
1: 80.3 2: 130.0 3: 166.1 4: 178.6 5: 181.8 6: 181.9 7: 182.0 8: 182.0

------------------------------------------------------------------------------
Idle map: sengoku-rise-of-oda-nobunaga.html with 5 hospitals
Saves (in M):
1: 5.2 2: 7.3 3: 8.2 4: 8.6 5: 9.1 6: 9.1

------------------------------------------------------------------------------
Idle map: the-siege-of-feldmere.html with 3 hospitals
Saves (in M):
1: 1.4 2: 2.8 3: 4.9 4: 5.9 5: 5.9

------------------------------------------------------------------------------
Idle map: triskelion.html with 15 hospitals
Saves (in M):
1: 369.0 2: 701.1 3: 911.4 4: 965.4 5: 1009.7 6: 1016.4 7: 1016.9 8: 1016.9

------------------------------------------------------------------------------
Idle map: united-states.html with 15 hospitals
Saves (in M):
1: 488.2 2: 927.6 3: 1311.6 4: 1445.6 5: 1479.4 6: 1488.6 7: 1489.0 8: 1489.1


Edited 9/1/2023 12:23:29
Compiled Hospital Saves per map: 2023-09-01 10:20:05

deleted 
Level 62
Report
Thanks for 5S for the raw data, pkmx for the compilation into the site and Cosine for the initial code!
Compiled Hospital Saves per map: 2023-09-01 11:25:36

koning 
Level 64
Report
This is usefull to show that updating to level 3 is worth it, after that you will gain a max of 10% on top for too much money and probably unnecessary waiting time

Edited 9/1/2023 11:30:34
Compiled Hospital Saves per map: 2023-09-01 11:38:11

(deleted)
Level 59
Report
parse_num= _=> eval( _.replace(/[K-MGMT]$/,_=> '*'+{K:1e3,M:1e6,G:1e9,T:1e12}[_] ) )

btw this works with the existing data but pkmx can modify their website to injection attack u

@koning it all depends on the AM if it worth or no

Edited 9/1/2023 12:44:12
Compiled Hospital Saves per map: 2023-09-01 12:00:37

deleted 
Level 62
Report
Thx cosine, updated the numbers in the above post accordingly.
Compiled Hospital Saves per map: 2023-09-01 14:38:49

deleted 
Level 62
Report
------------------------------------------------------------------------------
Idle map: hex-earth.html with 13 hospitals
Saves (in M):
1: 404.7 2: 768.9 3: 1376.0 4: 1387.5 5: 1391.9 6: 1395.5 7: 1397.6 8: 1397.6
Compiled Hospital Saves per map: 2023-09-01 15:28:20


FiveSmith 
Level 60
Report
Looks like clan Prime saves the day for idlers again!
Compiled Hospital Saves per map: 2023-09-07 21:16:07

mr_fancy_pants
Level 56
Report
I wanted something similar to this, more specifically the total delta in armies saved from a hospital upgrade (over all remaining territories, not just one), but there isn't enough information on the pkmx site to accurately calculate it. In particular, you cannot assume that all territories will get the full savings applied to it (ie, if your hospitals save 100M and you take a 5M territory, you only saved 5M troops, not 100M). Realistically you would need the complete list of territory sizes and then you could figure out the actual number saved. This would let you calculate exactly what AM/ICA/etc values are needed to complete a level (with or without drafts, as you see fit).
Compiled Hospital Saves per map: 2023-09-07 21:22:57

mr_fancy_pants
Level 56
Report
Also, those pages are generated from data that is much easier to parse than the html, this CSV over here in particular: https://raw.githubusercontent.com/PkmX/wzi-levels/main/data.csv

Sadly, there is a lot of presentation mixed into that data so it's much harder to parse than it should be.
Compiled Hospital Saves per map: 2023-09-07 21:53:10


FiveSmith 
Level 60
Report
Realistically you would need the complete list of territory sizes and then you could figure out the actual number saved. This would let you calculate exactly what AM/ICA/etc values are needed to complete a level (with or without drafts, as you see fit).

Let's say, that there is a list of all territories with sizes. Let's even say, that you are given a list of all 3200 territories of Europe Huge with sizes. How then realistically will you calculate "the total delta in armies saved from a hospital upgrade over all remaining territories"?

Also, those pages are generated from data that is much easier to parse than the html, this CSV over here in particular: https://raw.githubusercontent.com/PkmX/wzi-levels/main/data.csv

Sadly, there is a lot of presentation mixed into that data so it's much harder to parse than it should be.

These pages are benevolently generated by pkmx from my original table (without the need for me to redo the code for table generation). What for exactly do you want to parse the source of the table?

Edited 9/7/2023 22:00:18
Compiled Hospital Saves per map: 2023-09-08 05:41:02

mr_fancy_pants
Level 56
Report
Let's say, that there is a list of all territories with sizes. Let's even say, that you are given a list of all 3200 territories of Europe Huge with sizes. How then realistically will you calculate "the total delta in armies saved from a hospital upgrade over all remaining territories"?


You loop over the list of territory sizes and apply as much of the hospital savings as possible to them, then sum all those numbers together. Example:

Hospital saves: 1M -> 2M
Territories: [500k, 1M, 1.5M, 5M, 10M]

500k: 0 (already free)
1M: 0 (already free)
1.5: +500k
5M: +1M
10M: +1M

Total delta = 2.5M

This is still a slight underestimate because it doesn't account for territories close to hospitals where they're more effective, and taking care of that would require also having the adjacency information for the territories... but I don't feel too bad about handwaving that.

These pages are benevolently generated by pkmx from my original table (without the need for me to redo the code for table generation). What for exactly do you want to parse the source of the table?


For example, in the posts above, the Idle style numbers like 25k and 1M need to first be converted to actual numbers (25000 and 1000000, respectively) before they can be added together. If you only want to display the numbers and not do any numerical operations on them, then it doesn't really matter, but this thread found a new use for this data where it does matter.

Another possible case would be if you wanted to sum up all of the resources required to buy the techs (so you could answer questions like, "How many total Nails do I have to craft on EH?" and "How many Iron and Tin Bars do I have to buy for the aforementioned Nail crafting?"). That would require parsing out the substrings for each item/bar and then also the count for them, and similar for the recipes.

In a more data oriented format, you wouldn't need to parse the data out, but merely look up the relevant keys. Having only a single CSV representing mixed data makes that a lot more difficult though. If we used JSON instead to represent this line in the CSV:

2,Huruey's Castle,Tech Recipe,!MS: Faster Smelters,"Requires: Tin Bar x184, Copper Bar x747",,


...it might look something like this:

2: {
        "name": "Huruey's Castle",
        "techs": {
                /* other techs... */
                "faster-smelters": {
                        "copper-bar": 747,
                        "tin-bar": 184
                }
        },
        "recipes": {
                /* recipes */
        },
        /* other level data */
}


Whether "faster-smelters" is a market strat tech or not would ideally be defined in a separate data structure so it doesn't need to be repeated. Similarly, the level name and ID don't need to be repeated many times (once per line in the CSV). But, most importantly, you can now just loop over data[2]["techs"] to find all the tech requirements without having to parse them out of strings. How you ultimately present this information to a human is up to your presentation layer, but it allows for a lot more flexibility for new use cases and/or desire to change presentation format (both of which tend to be fairly common).
Compiled Hospital Saves per map: 2023-09-08 06:18:06


FiveSmith 
Level 60
Report
@mr_fancy_pants
Hm... I think, the point of the questions was missed. The question is not about technical formula, but about "realistic" end-user cases.

In the territory costs scenario, how do you in practice apply the knowledge of the 3200 territories to your end-player benefit when actually playing idle? So you are in an idle level and want to calculate "the total delta in armies saved from a hospital upgrade over all remaining territories", and now you have to somehow:
- Filter the territories, that you already have conquered and that yet remain unconquered. (gonna manually tap 300-500 conquered territories in a list of 3200?)
- Apply Joint Strike saves where applicable (or not?)
...etc
(Probably, you can't statically calculate the values for a level beforehand for all the players, because of players HB artifact/advancements)

PS. Thanks for your advice on how we should store our internal data.

Edited 9/8/2023 07:36:29
Compiled Hospital Saves per map: 2023-09-08 06:51:51

(deleted)
Level 59
Report
@mr_fancy i hear ur corporate "best practices" doctrine. it's effective at getting unmotivated slaves to make software faster with less bugs

not sure how relevant it is here tho, i guess it's relevant for people who are larping as corporate slaves in all spheres of life?

hee hee i can offend people soo badly by saying simple things that everyone who has honestly thought about already knows to be true

i really need to stop doing this
Compiled Hospital Saves per map: 2023-09-08 14:53:04


Tac(ky)tical 
Level 63
Report
if you play the ladder you can work your way up to a "instant hospital" upgrade i think and it makes all ur hospital upgrades instant which is rly rly nice
Compiled Hospital Saves per map: 2023-09-08 17:04:29

mr_fancy_pants
Level 56
Report
Hm... I think, the point of the questions was missed. The question is not about technical formula, but about "realistic" end-user cases.

In the territory costs scenario, how do you in practice apply the knowledge of the 3200 territories to your end-player benefit when actually playing idle? So you are in an idle level and want to calculate "the total delta in armies saved from a hospital upgrade over all remaining territories", and now you have to somehow:
- Filter the territories, that you already have conquered and that yet remain unconquered. (gonna manually tap 300-500 conquered territories in a list of 3200?)
- Apply Joint Strike saves where applicable (or not?)
...etc
(Probably, you can't statically calculate the values for a level beforehand for all the players, because of players HB artifact/advancements)


The main goal I had in mind (that I personally would use regularly) is mentioned in my original post, "This would let you calculate exactly what AM/ICA/etc values are needed to complete a level (with or without drafts, as you see fit)." I have notes from previous plays of levels to approximate this, but it's not ideal. Hospital upgrades are part of the question too, depending on how far into advancements you are, the optimal number can vary anywhere from none to (nearly) max, and you don't really know if you undershot or overshot until the end of the level (and at that point, you can't really know how much each hospital upgrade was worth anymore).

There is also the important question of whether or not you'll have enough money to complete the level (again, taking into consideration all applicable advancements and artifacts), that's tricky though because you would need to reverse engineer the Market cost increase calculations to determine how much money you'll get from draining each Market (obviously taking into consideration your current IASV/AV artifact value).

Having a few input variables for HB, BH, JS, etc isn't too bad if you're going down the exact calculation route. JS doesn't apply 100% of the time, but there's a pretty small list of territories where it cannot apply. JS also usually is not used for the initial Hospital/Market collection, but the error introduced there is probably not too large.

Tackling the question for a partially completed level is more difficult and isn't really a use case I'm all that interested in. If I were to go down that route I would probably build something to automatically scrape out all of the taken territories from a live level so it can be fed in. That means poking at the probably minified data structures on the live level and I haven't checked how ugly that would be.
Posts 1 - 20 of 27   1  2  Next >>