git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7723 c06c8d41-db1a-0410-9941-cceddc491573
AXKSBGWB7XTER5GQN3JLA55Y6GMDCX2JY3AKROLPVKQIBRRI3TBQC # Questions;# replace rock and water by stone?# disable controlled teleports?## Todo:# some ice cave destination maps could be smaller
# These have the starting point near the exit, so you can always retreat;# a middle point where there is some loot; and the end, where there is a# big challenge and some major loot. Ideally weaker characters attempt to# overcome the midpoint and then go back to dungeon, and strong characters# can try to clear the whole cave.
# All start with a similar ice statue arrangement. These have the starting# point near the exit, so you can always retreat; a middle point where there# is some loot; and the end, where there is a big challenge and some major# loot. Ideally weaker characters attempt to overcome the midpoint and then# go back to dungeon, and strong characters can try to clear the whole cave.
NSUBST: . = 9:1 / 1:1 / *:.SHUFFLE: QZHBESUBST: Q : 2, Z : 2, H : ., B : ., E : .# TODO: Fog generators where the devils are + fitting treasureMONS: white impMONS: ice devilMONS: ice statueITEM: nothingITEM: nothingITEM: nothing
: place_fog(_G, "freezing vapour", 200)MONS: white imp, ice devil, ice statueSHUFFLE: dg, efhSUBST: e = edITEM: battleaxe ego:freezing / executioner's axe ego:freezing / \glaive ego:freezing / halberd ego:freezing / quick blade ego:freezing / \great sword ego:freezing / triple sword ego:freezing / \giant spiked club ego:freezing / demon trident ego:freezingITEM: battleaxe ego:freezing good_item / executioner's axe ego:freezing good_item /\glaive ego:freezing good_item / halberd ego:freezing good_item / \great sword ego:freezing good_item / quick blade ego:freezing good_item /\triple sword ego:freezing good_item / demon trident ego:freezing good_item /\giant spiked club ego:freezing good_itemITEM: demon whip good_item / demon blade good_item / demon trident good_itemITEM: cap ego:cold_resistance / pair of gloves ego:cold_resistance / \cloak ego:cold_resistance / buckler ego:cold_resistance / \pair of boots ego:cold_resistanceITEM: crystal plate mail ego:cold_resistance / \troll leather armour ego:cold_resistance / \ice dragon armour good_item / robe ego:resistance / \naga barding ego:cold_resistance good_item w:5 / \centaur barding ego:cold_resistance good_item w:5 / \crystal plate mail ego:cold_resistance good_item / \troll leather armour ego:cold_resistance good_item
xxxwwxx..xxxwwxx.....xx..xxxx......xxxxxxxxxwxx..xxxwwxx....x.....H..x...Z...xxxxxxxxwwx...xxwwxx..B.xxx....H.xx.Z.Z...xxxxxxxwwxx...xxwwx.B.B..xx..H...xx.......xxxxxxwwxxx...xwwxx.........x...........xxxx
xxxwwxx..xxxwwxx.....xx..xxxx..z...xxxxxxxxxwxx..xxxwwxx..b.x.....N..x...Z...xxxxxxxxwwx...xxwwxx..B.xxx..n.N.xx.ZzZ...xxxxxxxwwxx...xxwwx.BbB..xx..N...xx.......xxxxxxwwxxx...xwwxx.........x.n.........xxxx
# rather long, thight cavern with a hard challenge at the end.# you can always go back to the beginning to retreat.
# A winding, tight cavern with a hard challenge at the end. You can always# go back to the beginning to retreat.# The caverns are more rare than the caves.
xxxx.xxxxxxxxxxxxxxxxxxxxxxxwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx....xxxxxxxxx....xxxxxxxxxwwwxxxxxxxx$$xxxxxxxx...xx...xxxxxxxxxxxxxx...A.xxxxxx....xx....xxxxxxxwwwwxxxxxxx$$xx.x...xx...xx...xxxxxxxxxxxx.<....xx....xxxxxxx...xxxxxwwwwxxxxxxxxxx.xx..xxxxxxxxxx....xxxxxxxxxxx..xx....xxxxxxxx1111xxxxwwwwwwxxxxxx...xxxxx..xxxxxxxxxx..3..xxxxxxxxxxxxxxxxxxxxxx....xxxxxxwwwwwwxxxx1...x...xx..xxxxxxxxxxxx....xxxxxxxxxxxxxxxxxxx....xxxxxxwwwwwwwwxxxx51xxxxxx...xxxxxxxxxxxxx..6xxxxxxxxxxxxxxxxxx...xxxxxxxxxwwwwwwxxxx..1xxxxxxxxxxxxxxxxxxxxxxx.66xxxxxxxxxxxxxxxx....xxxxxxxxxxxxxxxwwwxx..xxxxxxxxxxxxxxxxxxxxxx....xxxxxxxxxxxxxxxx...xxxxxxxxxxxx....xxxwwxxx..xxxxxxxxxxxxx.-....x...xxxxxxxxxxxxxxxxx..xxxxxxxxxxxx...xx...xxxxxxx..xxxxxxxxxxx...--....xxxxxxxxxxxxxxxxx...xxxxxxxxxxx...x.xxxx...xxxx1.xxxxxxxxxxx..xxxx-xxxxxxxxxxx.xxxxxxxx..xxxxxxxxxxx141xxxgxxxx...xxxx511xxxxxwwxxx...xxxxxxxxxxxxx.x.xxxxxxxx..xxxxxxxxx...xxxgxxx...xxxxxxxx..xxxwwwxxxx..1.xxxxxxxxxx.xxx..xxxxxxx..xxxxxxxxx....xxxx5.xxxxxxxxx...xxxxxwwwxxxx.1.5xxxxxxx.xxx..xxxxxxx..xxxxxxxxx.x.xxxxx5..5xxxxxxxxxx1.xxxxxwwxxxxx5415.xxxxxx.xx...xxxxxx...xxxxxxx...xxxxxxx15.5xxxxxxx'''51xxxxwwxxxxxx5.41.xxxx..xxx...xxxxxx..xxxxxx..xxxxxxxxxxx5.1xxxx''xxxx1-xxxxwwwxxxxxx.5..x...xxx..U..xxxxx...xxxx..xxxxxxxxxxxxxx1.x'''xxxxx--xxxxwwwwxxxxxxx'...xxxxxx...xxxxxx...xxxxx..1xxxxxxxxxxxx..'xxxxxxxxxx--xxxwwwwxxxx*.xxxxxxxxx..xxxxxxxx...xxxxxxx..xx1xxxxxxxxx--xxxxx'''x--xxxwwwwwwxxxx*xxxx..xxxx..xxxxxxxx.11xxxxx1.x.1...2xxxx---xx.....xx..xxxxwwwwwwwwxxx-x..xx.x..xxxxxxxxx11.xxxxxxxx.xxxxx..xxxx--x.P.T.P.xxx15xxxwwwwxxxxxx..xxxxx.xxxxxxxxxxxx..xxxxxxxx2..1x.1..xxxx-........xx1.1xxwwwwwwxx...xxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxx.xxx.1xxxx...xxxxxxxxx..xxwwwxxx.xxxxxxxxxxxxxxxxxxxxxxxx..xxxx.x....xxxx...xxxxxx.-xxxxxxx.xxxxwwwxx..xxxxxxxxxxxxxxxxxxxx*x$xx..xx.*..xx..xxxxx1.xxxx'.-xxxxx15xxxwwwwxxxx..xxxxxxxxxxxxxxxxxxxx$x.xx..xx..xxxx..xxxxxx.1''xx-xxxxx11.xxwwwwwxxxx...xxxxxxxxxxxxxxxxx$x..x....xx..xxx..xxxxxxx--xxxx-xx...xxxwwwwwwxxxxx....xxxxxxxxxxxxxxxx.xx.x..xxx..xx...xxxxxxxx1.xxxx...xxxxxwwwwwwxxxxxx.2.2.xxxxxxxxxxxxxxxxxx..xxxx...xx.3.xxxxxxxx.1xx''xxxxxwwwwwwwwxxxxxx.54.2.xxxxxxxxxxxxxxxx..xxxx21.xxxx...xxxx..x..''xxxxxxwwwwwwwxxxx$$x.2465...xxxxxxxxxxxxxx...xx.12xxxx.x.xxxxx...x.xxxxxxwwwwwwwwxxxxdf$$.......xx.xxxxxxxxxxxxx..xx...xxxxxx|x.xx...xx.xxxxxwwwwwwwwwwwxxed|*$$...xxxxxx..xxxxxxxxxxx......xxxxxxxx....xxxxxxxxxxwwwwwwwwwwwwwxxfe||$$$.xxxxxxxx....xxxxxxxx...xxxxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxx...<x
xxxx.xxxxxxxxxxx-'xxxxxxxxxxwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx....xxxxxxxxx....xxxxxxxxxwwwxxxx*xxx$$xxxxxxxx...xx...xxxxxxxxgxxxxx...A.xxxxxx....xx....xxxxxxxwwwwx*x*xxx$$x-.x...xx...xx...xxxxxgxgxxxx.<....'-....xxxxxxx...xxxxxwwwwxxx*x.xxxx.'x..xxxxxxxxxx....xxxx.xxxxxx..xx....xxxxxxxx1111xxxxwwwwwwxxxxxx...xxxxx..xxxxxxxxxx..3..x.xxxxxxxxxxxxxxxxxxxx....xxxxxxxxwwwwxxxx11..x...x..xxxxwwwxxxxxx.....xxxxxxxxwxxwxwxxx.....xxxx______xxwwxxxx51xxxxxx..xxxwwwwxwxxxxx..6xxxxxxxxxxxxwxxxxx..xxxxxx___xx_____xxxx...xxxxwxxxxxxwwwxxxxxxxxx.66xxxwwwxxxxxwxxxx....xxwxx__xxxxxxxx___xx..xxxwwwxwxxxwwwxxxxxxxx....xxxxwwwxxxxxxxxx...xxxxwxx_xxxx....xxx__xxx..xxxxxwwwwwwxxxx....x...xxxxwwwxwwwxxxxxx..xxxwwwwx-xxx...xx...xxx_xxx..xxwwwwwxxxx...xx....xxxwwwxxxxxxwwxxx...xxwwwwwwxx-...x.xxxx...xx_x..xxxxwwwwxxx..xxxxxxxxxwxxxxxx.xxxxwxxx..xxxwwwwwxxx141xxxgxxxx...x_xx.11xxxwwwwxxx...xxxwwwwxx...x.x.xxxxxxxx..xxxwwwwxx...xxxgxxx...xxx_xxxx51xxxwwwxxxx..1.xxxwwx.U...xxx..xxxxxxx..xwwwwxxxx....xxxx5.xxxwxx_xx...xxxxxwwwxxxx.1.5xxxxx.x.xxx..xxxxxxx..xxxwwwwxx'x.xxxxx5..5xxwwxx_xxx1.xxxxxwwxxxxx5415.xxxxxx.xx...xxxxxx...xxwwwxx..'xxxxwxx15.5xxwwxx_xxx51xxxxwwxxxxxx5.41.xxxx..xxx454xxxxxx..-xxxxx..xxxwxwwwxxx5.1xxwwxx_--x1xxxxxwwwxxxxxx.5..x...xxx5.7.5xxxxx...-xx-..xxxwxwwxxwxx-x1.xxwwxx'''xxxxxxwwwwxxxxxxx'...xxxxxx5.5xxxxxx...x--xx..1xxxxxwxx--x-..'xxwx'x'xxxxxwxxwwwwxxxx*.xxxxx.xxx..xxx|xxxx222x''x''x..xx1xxx----xxxx'xx'''xxxxwxxxwwwwwwxxxx*xxxx.<.xxx.$defxxxxx'.'xx'xx1.x.1...2xxxxxxxxx'''xxxxwxxwwxwwwwwwwwxxx--........x|fedxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'xxxxwxwwwxwwwwwxwxxxxxxxxxx.xxxxxxxxxx
ENDMAPNAME: ice_cave_caverns_02TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixupWEIGHT: 5ORIENT: encompass: if crawl.random2(2) == 0 thenSUBST: '=x , -=.: elseSUBST: '=. , -=x: end: ice_cave_colours(_G)# two different populations: undead/demon and natural/giant: if crawl.random2(2) == 0 thenMONS: white imp / human simulacrum w:2 / elf simulacrum w:2 / \orc simulacrum w:2MONS: polar bear simulacrum / freezing wraith w:3 / nothing w:1MONS: ice statueMONS: ice devilMONS: draconian simulacrum / ogre simulacrum / centaur simulacrum / \naga simulacrum / troll simulacrumMONS: patrolling ice fiendITEM: cloak ego:fire_resistance good_item / wizard hat good_item / \pair of gloves good_item / pair of boots good_item / nothingITEM: book of ice / book of unlife / staff of cold / staff of death / \nothing w:30ITEM: ring of ice / ring of protection from fire / ring of life protection / \wand of cold / wand of draining / nothing: elseMONS: wolf / yak w:3 / nothing w:1MONS: polar bear / nothing w:5MONS: ice statueMONS: polar bear / death yak w:5MONS: polar bear / yakMONS: patrolling frost giantITEM: animal skin good_item ego:fire_resistance / \battleaxe good_item ego:freezing w:4 / \glaive good_item ego:freezing w:4 / \great sword good_item ego:freezing w:2 / nothingITEM: book of ice / \crossbow ego:frost good_item no_uniq / \longbow ego:frost good_item no_uniq / nothing w:20ITEM: ring of ice / ring of protection from fire / wand of cold / \arrow ego:ice q:25 / bolt ego:ice q:20 / nothing: endITEM: any wand / any potion w:5 / any scroll w:5# traps:SUBST: . = .:40 ^:1: place_fog(_G, "freezing vapour", 50)MAPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx..xxwwwwxxx.x.'x-.x5..5xxwwwwwxxx1...x.Wxxxxxx15415.xxxxxx......xxxxxx.<.xwwwwxx...x.x.x.x15.5xxwwxxx'''..x.xxWWxx15xx5.41.xxxx..xxx...xxxxxx..xxwwxx..xxx-.'xx.xx5.1xxxx'''xxx.-xxxxWWWxxxxxx....x...xxx..U..xxxxx.A.xxwx..xxxwxxxwwwwxxx1.x'''xxwwx---xxxxWWwxwwwxxx'...xxxxxx...xxxxxx...xwwxx...xxxxxwwwwwxx..'xxxxxxxxxx--xxwwwwwwwxx*.xxxxxxxxx..xxxxxxxx...xxwxxxx..xx1-'xxwwxxx--xxxxx'''x--xxwwwwwwwxx.x*xxxx..xxxx..xxxxxxxx.11xwwxx1.x.1.1.2xxwx---xx.*.*.xx..xxxwwwwwwwwww-x-x..xx.x..xxxxxxxxx11.xxwwwxxx1xxxxx1.xxxx--x.g.T.g.xxx..xwwwwwwwwx-xx..xxxxx.xxxxxxxxxxxx..xwwwwwxx2..1x11..xxxx-...*.*..xx...xxwwwwwwx'...xxxxxxxxxxxxxxxxxxxxx^xxwxxxxxxxxx.xxx..xwxx...xxxxxxxxx..xxwwwxxx.-xxxxxxxxxxxxxxxxxxxxxxx..xxxx.x....xxxx...xxwxxx.-xwwwxxx1xxxxwwwxx..xxxxxxxxxxxxxxxxxxxx*x$xx..xx.*..-'..xxxxx..xxx''.-xwwwx15xxxwwwwxxxx..xxxxxxxxxxxxxxxxxxxx$x.xx..xx..xxxx..xwwxxx..''xx--xxxx115xxwwwwwxxxx...xxxxxxxxxxxxxxxxx$x..x.^..xx..xxx..xwwwwxx--xxxx-xx.1.xxxwwwwwwxxxxx....xxxxxxxxxxxxxxxx.xx.x..xxx..xx...xxwwwwxx1.xxxx...xxxxxwwwwwwxxxxxx.2.2.xxxxxxxxxxxxxxxxxx..xxxx...xx.3.xxwwxx'-.1x'''xxxxxwwwwwwwwxxxxxx.54.2.xxxxxxxxxxxxxxxx..xxxx...xxxx...xxxx..x..''xxxxxxwwwwwwwxxxx$$x.2465...xxxxxxxxxxxxxx5.5xx...xxxx.x.xxxxx...x.xxxxxxwwwwwwwwxxxxdf$$.......xx.xxxxxxxxxxxxx..xx...xxwwxx|x.xx...xx.xxxxxwwwwwwwwwwwxxed|$$$...xxxxxx..xxxxxxxxxxx122...xxwwwwxx....xxxxxxxxxxwwwwwwwwwwwwwxxfe|$$$$.xxxxxxxx....xxxxxxxx1..xxxwwwwwxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxx...<xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxENDMAPNAME: ice_cave_caverns_03TAGS: ice_cave no_item_gen no_monster_gen no_pool_fixupWEIGHT: 5ORIENT: encompass# a bit of layout randomization for the middle part..: if crawl.random2(2) == 0 thenSUBST: '=x , -=.: elseSUBST: '=. , -=x: end# two different populations: undead/demon and natural/giant: if crawl.random2(2) == 0 thenMONS: white imp / human simulacrum w:2 / elf simulacrum w:2 / \orc simulacrum w:2MONS: polar bear simulacrum / freezing wraith w:3 / nothing w:1MONS: ice statueMONS: ice devilMONS: draconian simulacrum / ogre simulacrum / centaur simulacrum / \naga simulacrum / troll simulacrumMONS: freezing wraithMONS: patrolling ice fiendITEM: cloak ego:fire_resistance good_item / wizard hat good_item / \pair of gloves good_item / pair of boots good_item / nothingITEM: book of ice / book of unlife / staff of cold / staff of death / \nothing w:30ITEM: ring of ice / ring of protection from fire / ring of life protection / \wand of cold / wand of draining / nothing: elseMONS: wolf / yak w:3 / nothing w:1MONS: polar bear / nothing w:5MONS: ice statueMONS: polar bear / death yak w:5MONS: polar bear / yakMONS: wolfMONS: patrolling frost giantITEM: animal skin good_item ego:fire_resistance / \battleaxe good_item ego:freezing w:4 / \glaive good_item ego:freezing w:4 / \great sword good_item ego:freezing w:2 / nothingITEM: book of ice / \crossbow ego:frost good_item no_uniq / \longbow ego:frost good_item no_uniq / nothing w:20ITEM: ring of ice / ring of protection from fire / wand of cold / \arrow ego:ice q:25 / bolt ego:ice q:20 / nothing: endITEM: any wand / any potion w:5 / any scroll w:5# traps and colours:SUBST: 3 = 3^: place_fog(_G, "freezing vapour", 200)SUBST: . = .:100 ~:1SUBST: ~ = ^: place_fog(_G, "freezing vapour", 50): ice_cave_colours(_G)MAPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.x.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.U.x$xxxxxxxx...xx...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwxxx.xxx$x..x...xx...xx.55xxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwwxWWWxxxxxxx..x..xxxxxxxxxx.554xxxxxxxxxxxxxxxxxxxxxxxxxxxxwxxxxxWwWxWW.xxxxx..xxwwwwwwxx.2525xxxxxxxxxxxxxxxxxxxxxxwwxxxxxxxxxWWWWxW..xx..xxwwwwwwwwxx427.xxxxxxxxxxxxxxxxxxxxwwwwwxxxxxxxWWxwWwxx...xxxwwwwwwwxxx..5xxxxxxxxxxxxxxxxxxxxxxxwwwwwxxx.WWxxxxwwwxxxxxwwwwwwxxxxx...xxxxxxxxxxxxxxxxxxxxxxxxxxwwwxx.~xxxwwwwwxwwxwwwxxxxxxx....xxxxxxxxxxxxxxxxxxxxxx....xxxwwwxx..xxxwwwwwwwwwwxx<..^x...xx.xfxxxxxxxxxxxxxxxxx...xx...xxxwwxx..xxxxwwwwwwwwxxxx....xxxxxex|xxxxxxxxxxxxxx.44x.xxxx...xxwx..xxxxxxwwxwxwwwwxxxxxxxxxxdx$xdxxxxxxxxxxxx.4.xxx$xxxx...xwxx~..xxxxxwwwwwxwwwxxxxxxxxxx|xexxxxxxxxxxxx...xxx$xxx...xxxwwxxx..xxxwwwxxwwwwxwxxxxxxxxxxfxxxxxxxxxxxxxx....xxxx5.xxxwwwwxx...xxxxxwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxx.x.xxxxx51.5xxwwwwxxxx..xxxxxwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...xxxxxxx15.5xxwwxxx'''~.xxxxwwxxxxxxxxxxxxxxxxxxxxxxxxxxxx..xxxxxxxxxxx5.1xxxx''xxxx.-xxxxwwwxxxxxxxxxxxxxxxxxxxxxxxxx.1xxxxxxxxxxxxxx..x'''xxxxx---xxxwwwwxxxxxxxxxxxxxxxxxxxxxxxxx.11xxxxxxxxxxxx..''xxxxx'xxx--xxxwwwwxxxxxxxxxxxxxxxxxxxxxxxxxx1.xx.xxxxxxxxx--xxxxx''''--xxxwwwwwwxxxxxxxxxxxxxxxxxxxxxxxx..x......xxxx---xx.*.*.xx..xxxxwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxx.xxxxx..xxxx--x.g.T.g.xxx..xxxwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxx2..2x....xxxx-...*.*..xx...xxwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxx.1xxxx...xxxxxxxxx..xxwwwxxxxxxxxxxxxxxxxxxxxxxxxx.x...'xxxx.1.xxxxxx.-xxxxxxx1xxxxwwwxxxxxxxxxxxxxxxxxxxxxxxx.*66-x..xxxxx11xxxx'.--x---15xxxwwwwxxxxxxxxxxxxxxxxxxxxx..<xx..xxxx..xxxxxx..''xx-x-xxx115xxwwwwwxxxxxxxxxxxxxxxxxxxA..xxxx..xxx..xxxxxxx--xxxx-xx.11xxxwwwwwwxxxxxxxxxxxxxxxxxxx....xxx..xx...xxxxxxxx1.xxx-...xxxxxwwwwwwxxxxxxxxxxxxxxxxxxx...xxxx...xx.3.xxxxxxxx.1x'''xxxxxwwwwwwwwxxxxxxxxxxxxxxxxxxx..xxxx21.xxxx...xxxx..x..''xxxxxxwwwwwwwxxxxxxxxxxxxxxxxxxxx...xx.12xxxx.x.xxxxx...x.xxxxxxwwwwwwwwxxxxxxxxxxxxxxxxxxxxxx..xx...xxxxxx|x.xx...xx.xxxxxwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxx......xxxxxxxx....xxxxxxxxxxwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxx...xxxxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx