Menu Close

Month: June 2019

Welcome!

… to another new website.

I felt it was right to start it all anew, and gone is the old website, as well as the banishednorth sub site.

Going forward my Banished mods are to be purely centric towards my own vision, and workings of the game environment. This gives me better scope, imagination and ability to experiment with expressing the ideas I have. This is nothing against any of the other wonderfully talented Banished modders or the creator of Banished itself, for I have utmost respect for them all.

I started expressing these views and ideas and began implementing them six odd months ago in a couple of my mods, but time got away. Life dealt a hand that took me away and the work on modding banished halted.

With a little time, I am now back slowly modding and getting around everything I had done previously. A couple of my mods that were near completion are a little messy, and stepping back into them six months later is a little confusing at times.

I had really started to explore the creation, adaption and polishing of GUI elements with building information tabs and much more. Within the banished code framework this is all very long and exhausting code.

a lot of code? perhaps not

The image above shows a simple GUI panel with text purely for information, though if you hover over some elements you will get tooltips show up. To achieve the layout it required a large proportion of code which is posted below, but this still doesn’t include the code for the main container, other tabs, as well as much of the code that is called for with the outside code file calls:

click to view the code:
ContainerDescription content { int _topPad = 0; int _leftPad = 4; int _bottomPad = 2; int _rightPad = 0; int _width = 516; int _height = 412; int _scrollSpacing = 4; bool _allowShrinkHeight = false; //ElementDescription _horizontalScroll = "Dialog/SharedElements.rsc:horizontalScrollbar"; ElementDescription _content = "layout"; } LayoutDescription layout { int _topPad = 2; LayoutItem _elements [ { String _name = "ribbon"; ElementDescription _element = "groupContent"; LayoutHorizontal _xLayout = LeftToRight; LayoutVertical _yLayout = TopToTop; } ] } ContainerDescription groupContent { int _topPad = 6; int _leftPad = 0; int _bottomPad = 0; int _rightPad = 0; int _width = 512; int _height = 398; int _scrollSpacing = 4; bool _allowShrinkHeight = false; //ElementDescription _horizontalScroll = "Dialog/SharedElements.rsc:horizontalScrollbar"; ElementDescription _verticalScroll = "Dialog/SharedElements.rsc:verticalScrollbar"; ElementDescription _content = "groupRibbonTitle"; } RibbonDescription groupRibbonTitle : "groupCommon" { Alignment _alignment = TopCenter; ElementDescription _elements [ "groupTitle", "groupRibbon", ] ElementDescription _border = "border"; int _minWidth = 32; int _minHeight = 32; int _topPad = 2; int _bottomPad = 2; bool _vertical = true; } RibbonDescription groupTitle : "groupCommon" { Alignment _alignment = TopCenter; ElementDescription _elements [ "Title1", "Title2", ] int _minWidth = 460; int _minHeight = 48; int _topPad = 2; int _bottomPad = 2; bool _vertical = true; } TextDescription Title1 : "textCommon3" { int _leftPad = -8; int _topPad = 4; String _text = "HouseholdFuelsTitle1"; } TextDescription Title2 : "textCommon3s" { int _leftPad = -4; int _topPad = 2; String _text = "HouseholdFuelsTitle2"; } RibbonDescription groupRibbon : "groupCommon" { ElementDescription _elements [ "column1", "column2", ] //ElementDescription _border = "border"; int _minWidth = 512; int _minHeight = 72; int _topPad = 2; int _bottomPad = 2; bool _vertical = false; } RibbonDescription column1 : "groupCommon" { Alignment _alignment = TopLeft; ElementDescription _elements [ "column1text01a", "column1text01b", "column1text01c", "textBLANK", ] int _minWidth = 280; int _minHeight = 600; int _topPad = 1; int _rightPad = 1; int _bottomPad = 1; bool _vertical = true; } TextDescription column1text01a : "textCommon" { int _topPad = 2; String _text = "column1text01a"; } TextDescription column1text01b : "textCommon" { int _topPad = 2; String _text = "column1text01b"; } TextDescription column1text01c : "textCommon" { int _topPad = 2; String _text = "column1text01c"; TextDescription column1text01 : "textCommon" { int _topPad = 6; String _text = "column1text02"; } TextDescription column1text02 : "textCommon" { int _topPad = 6; String _text = "column1text02"; } TextDescription column1text03 : "textCommon" { int _topPad = 6; String _text = "column1text03"; } TextDescription column1text04 : "textCommon" { int _topPad = -4; String _text = "column1text04"; } TextDescription column1text05 : "textCommon" { int _topPad = 0; String _text = "column1text05"; } TextDescription column1text06 : "textCommon" { int _topPad = 0; String _text = "column1text06"; } TextDescription column1text07 : "textCommon" { int _leftPad = 14; int _topPad = 0; String _text = "column1text07"; int _wordWrapSize = 220; } TextDescription column1text08 : "textCommon" { int _leftPad = 24; int _topPad = 0; String _text = "column1text08"; int _wordWrapSize = 220; } TextDescription column1text08a : "textCommon" { int _leftPad = 24; int _topPad = 0; String _text = "column1text08a"; int _wordWrapSize = 220; } TextDescription column1text09 : "textCommon" { int _leftPad = 24; int _topPad = 0; String _text = "column1text09"; int _wordWrapSize = 220; } TextDescription column1text09a : "textCommon" { int _leftPad = 24; int _topPad = 0; String _text = "column1text09a"; int _wordWrapSize = 220; } TextDescription column1text10 : "textCommon" { int _leftPad = 24; int _topPad = 0; String _text = "column1text10"; int _wordWrapSize = 220; } TextDescription column1text10a : "textCommon" { int _leftPad = 24; int _topPad = 0; String _text = "column1text10a"; int _wordWrapSize = 220; } TextDescription column1text10b : "textCommon" { int _leftPad = 24; int _topPad = 0; String _text = "column1text10b"; int _wordWrapSize = 220; } TextDescription column1text10c : "textCommon" { int _leftPad = 24; int _topPad = 0; String _text = "column1text10c"; int _wordWrapSize = 220; } TextDescription column1text11 : "textCommon" { int _leftPad = 24; int _topPad = 0; String _text = "column1text11"; int _wordWrapSize = 220; } LabelDescription column1text11aa : "columnlabelDisList" { int _leftPad = 12; int _topPad = 4; SpriteSheet _spriteSheet = "UI/DSProfessions/DSProfessionsSpriteSheet.rsc:Blacksmith"; String _spriteName = "ProfessionBlacksmithWork48x32"; int _imageWidth = 24; int _imageHeight = 16; } TextDescription column1text11a : "textCommon" { int _topPad = 0; String _text = "column1text11a"; int _wordWrapSize = 240; } TextDescription column1text11b : "textCommon" { int _topPad = 0; String _text = "column1text11b"; int _wordWrapSize = 240; } TextDescription column1text12 : "textCommon" { int _topPad = 0; String _text = "column1text12"; } LabelDescription column1text13a : "columnlabelDisList" { int _leftPad = 12; int _topPad = 4; SpriteSheet _spriteSheet = "UI/DSResources/DSResourcesSpriteSheet.rsc:ToolStonecutter"; String _spriteName = "ToolStonecutter"; String _text = "column1text13a"; } TextDescription column1text13b : "textCommon" { int _leftPad = 24; int _topPad = 0; String _text = "column1text13b"; int _wordWrapSize = 220; Color _color = 0xFFcccccc; } TextDescription column1text13c { } LabelDescription column1text14a : "columnlabelDisList" { int _leftPad = 12; int _topPad = 4; SpriteSheet _spriteSheet = "UI/DSResources/DSResourcesSpriteSheet.rsc:FishingGear"; String _spriteName = "FishingGear"; String _text = "column1text14a"; } TextDescription column1text14b : "textCommon" { int _leftPad = 23; int _topPad = 0; String _text = "column1text14b"; int _wordWrapSize = 220; Color _color = 0xFFcccccc; } LabelDescription column1text15a : "columnlabelDisList" { int _leftPad = 12; int _topPad = 4; SpriteSheet _spriteSheet = "UI/DSResources/DSResourcesSpriteSheet.rsc:HuntingGear"; String _spriteName = "HuntingGear"; String _text = "column1text15a"; } TextDescription column1text15b : "textCommon" { int _leftPad = 23; int _topPad = 0; String _text = "column1text15b"; int _wordWrapSize = 220; Color _color = 0xFFcccccc; } LabelDescription column1text16a : "columnlabelDisList" { int _leftPad = 12; int _topPad = 4; SpriteSheet _spriteSheet = "UI/DSResources/DSResourcesSpriteSheet.rsc:GatheringBasket"; String _spriteName = "GatheringBasket"; String _text = "column1text16a"; } TextDescription column1text16b : "textCommon" { int _leftPad = 23; int _topPad = 0; String _text = "column1text16b"; int _wordWrapSize = 220; Color _color = 0xFFcccccc; } TextDescription column1text17 : "textCommon" { int _topPad = 0; String _text = "column1text17"; } LabelDescription column1text17a : "columnlabelDisList" { int _leftPad = 12; int _topPad = 4; SpriteSheet _spriteSheet = "UI/DSResources/DSResourcesSpriteSheet.rsc:LampOil"; String _spriteName = "LampOil"; String _text = "column1text17a"; } TextDescription column1text17b : "textCommon" { int _leftPad = 23; int _topPad = 0; String _text = "column1text17b"; int _wordWrapSize = 220; Color _color = 0xFFcccccc; } LabelDescription column1text18a : "columnlabelDisList" { int _leftPad = 12; int _topPad = 4; SpriteSheet _spriteSheet = "UI/DSResources/DSResourcesSpriteSheet.rsc:Candles"; String _spriteName = "Candles"; String _text = "column1text18a"; } TextDescription column1text18b : "textCommon" { int _leftPad = 23; int _topPad = 0; String _text = "column1text18b"; int _wordWrapSize = 220; Color _color = 0xFFcccccc; } LabelDescription column1text19a : "columnlabelDisList" { int _leftPad = 12; int _topPad = 4; SpriteSheet _spriteSheet = "UI/DSResources/DSResourcesSpriteSheet.rsc:LinSeedOil"; String _spriteName = "LinSeedOil"; String _text = "column1text19a"; } TextDescription column1text19b : "textCommon" { int _leftPad = 23; int _topPad = 0; String _text = "column1text19b"; int _wordWrapSize = 220; Color _color = 0xFFcccccc; } RibbonDescription column2 : "groupCommon" { Alignment _alignment = TopLeft; ElementDescription _elements [ "Firewood", "textBLANK", ] //String _toolTipText = "WeatherTip"; int _minWidth = 42; int _minHeight = 600; int _topPad = 1; int _rightPad = 0; int _bottomPad = 1; bool _vertical = true; } TextDescription column2MadeFrom : "textCommon" { int _leftPad = 48; int _topPad = 5; int _bottomPad = 0; String _text = "column2MadeFrom"; Color _color = 0xFFcccccc; } TextDescription column2MadeFromOr : "textCommon" { int _leftPad = 48; int _topPad = 0; String _text = "column2MadeFromOr"; Color _color = 0xFFcccccc; } TextDescription column2ToolsTITLE : "textCommonMed" { int _leftPad = 28; int _topPad = 0; String _text = "column2ToolsTITLE"; Color _color = 0xFFcccccc; } TextDescription column2CraftedTITLE : "textCommonMed" { int _leftPad = 28; int _topPad = 0; String _text = "column2CraftedTITLE"; Color _color = 0xFFcccccc; } TextDescription column2Usedby : "textCommon" { int _leftPad = 28; int _topPad = 0; String _text = "column2Usedby"; Color _color = 0xFFcccccc; } // Firewood RibbonDescription Firewood : "groupCommon" { Alignment _alignment = TopLeft; ElementDescription _elements [ "column2FirewoodHeader", "column2MadeFrom", "column2Firewood1", "column2MadeFromOr", "column2Firewood2", ] bool _vertical = true; ElementDescription _border = "Dialog/SharedElements.rsc:buttonEnabledBorder"; int _bottomPad = 3; } RibbonDescription column2FirewoodHeader : "groupCommon" { Alignment _alignment = TopCenter; ElementDescription _elements [ "column2Firewood1a", "column2FirewoodHeader2", ] bool _vertical = false; //int _minWidth = 12; int _bottomPad = 0; } LabelDescription column2Firewood1a : "column2label1" { int _leftPad = 12; int _topPad = 8; int _bottomPad = 0; SpriteSheet _spriteSheet = "Dialog/SpriteSheet.rsc"; String _spriteName = "Firewood"; String _text = "Firewood00"; String _toolTipText = "Firewood00Tip"; } RibbonDescription column2FirewoodHeader2 : "groupCommon" { Alignment _alignment = TopLeft; ElementDescription _elements [ "column2FirewoodHeader2b", "column2FirewoodHeader2c", "column2FirewoodHeader2d", ] bool _vertical = true; //int _minWidth = 12; int _leftPad = 48; int _bottomPad = 0; } LabelDescription column2FirewoodHeader2b : "columnlabelHead" { int _leftPad = 12; int _topPad = 2; String _spriteName = "ValueCoins"; String _text = "FirewoodValue"; String _toolTipText = "valueTip"; } LabelDescription column2FirewoodHeader2c : "columnlabelHead" { int _leftPad = 12; int _topPad = 2; String _spriteName = "WeightScales"; String _text = "FirewoodWeight"; String _toolTipText = "weightTip"; } LabelDescription column2FirewoodHeader2d : "columnlabelHead" { int _leftPad = -28; int _topPad = 2; int _bottomPad = 0; String _text = "FirewoodQty"; String _toolTipText = "quantityTip"; } RibbonDescription column2Firewood1 : "groupCommon" { Alignment _alignment = TopLeft; ElementDescription _elements [ "column2labelFirewood1", ] bool _vertical = false; //int _minWidth = 12; ElementDescription _border = "Dialog/SharedElements.rsc:dialogBorder"; String _toolTipText = "Firewood01Tip"; } LabelDescription column2labelFirewood1 : "column2label3" { int _leftPad = 4; int _topPad = 9; int _bottomPad = 9; SpriteSheet _spriteSheet = "Dialog/SpriteSheet.rsc"; String _spriteName = "Log"; String _text = "Firewood01"; } RibbonDescription column2Firewood2 : "groupCommon" { Alignment _alignment = TopLeft; ElementDescription _elements [ "column2labelFirewood2", ] bool _vertical = false; //int _minWidth = 12; ElementDescription _border = "Dialog/SharedElements.rsc:dialogBorder"; String _toolTipText = "Firewood02Tip"; } LabelDescription column2labelFirewood2 : "column2label2" { int _leftPad = 4; int _topPad = 9; int _bottomPad = 9; SpriteSheet _spriteSheet = "UI/DSResources/DSResourcesSpriteSheet.rsc:Timber"; String _spriteName = "Timber"; String _text = "Firewood02"; } TextDescription textBLANK { Alignment _alignment = TopLeft; Font _font = "Font\FontSmall.rsc"; StringTable _stringTable = "Dialog/DSDialog/BanishedUI/Info/BanishedUIInfoStringTable.rsc:InfoHouseholdFuels"; //int _minWidth = 142; String _text = "blank"; } LabelDescription columnlabelBUI : "columnlabel" { int _imageWidth = 64; int _imageHeight = 80; int _leftPad = 6; SpriteSheet _spriteSheet = "Dialog/DSDialog/BanishedUI/Info/BanishedUIInfoSpriteSheet.rsc:BanishedUIInfo"; } LabelDescription columnlabelDis : "columnlabel" { int _topPad = 0; int _rightPad = 2; int _bottomPad = 0; int _leftPad = 68; int _wordWrapSize = 132; } LabelDescription columnlabelDis2 : "columnlabel" { int _topPad = 0; int _rightPad = 2; int _bottomPad = 0; int _leftPad = 54; int _wordWrapSize = 132; } LabelDescription column2label3 : "columnlabel" { Alignment _textAlignment = TopLeft; SpriteSheet _spriteSheet = "Dialog/SpriteSheet.rsc"; int _imageWidth = 16; int _imageHeight = 16; int _topPad = 0; int _rightPad = 2; int _bottomPad = 0; int _leftPad = 12; int _spacing = 4; int _wordWrapSize = 80; Color _color = 0xFFffffff; } LabelDescription column2label2 : "columnlabel" { SpriteSheet _spriteSheet = "Dialog/SpriteSheet.rsc"; int _imageWidth = 16; int _imageHeight = 16; int _topPad = 0; int _rightPad = 2; int _bottomPad = 0; int _leftPad = 48; int _spacing = 4; int _wordWrapSize = 112; Color _color = 0xFFffffff; } LabelDescription column2label2pic32 : "column2label3" { int _imageWidth = 20; int _imageHeight = 20; } LabelDescription column2label2pic26x18 : "column2label3" { int _imageWidth = 26; int _imageHeight = 18; } LabelDescription column2label1 : "columnlabel" { SpriteSheet _spriteSheet = "Dialog/SpriteSheet.rsc"; int _imageWidth = 32; int _imageHeight = 32; int _topPad = 0; int _rightPad = 2; int _bottomPad = 0; int _leftPad = 48; int _spacing = 6; int _wordWrapSize = 132; Color _color = 0xFFffffff; Font _font = "Font\FontMedium.rsc"; } LabelDescription columnlabelDisList : "columnlabel" { SpriteSheet _spriteSheet = "Dialog/SpriteSheet.rsc"; int _imageWidth = 16; int _imageHeight = 16; int _topPad = 0; int _rightPad = 2; int _bottomPad = 0; int _leftPad = 48; int _spacing = 6; int _wordWrapSize = 132; Color _color = 0xFFffffff; } LabelDescription columnlabelHead1 : "columnlabelHead" { SpriteSheet _spriteSheet = "Dialog/DSDialog/BanishedUI/Info/BanishedUIInfoSpriteSheet.rsc:BanishedUIInfo"; int _imageWidth = 50; int _imageHeight = 16; int _spacing = 6; } LabelDescription columnlabelHead : "columnlabel" { SpriteSheet _spriteSheet = "Dialog/DSDialog/BanishedUI/Info/BanishedUIInfoSpriteSheet.rsc:BanishedUIInfo"; int _imageWidth = 16; int _imageHeight = 16; int _spacing = 6; Alignment _alignment = TopLeft; Alignment _textAlignment = MidLeft; bool _wordWrap = false; } LabelDescription columnlabel : "tabLabelText1" { SpriteSheet _spriteSheet = "Dialog/DSDialog/Sprite/DSUISpriteSheet.rsc:Bullets"; int _imageWidth = 8; int _imageHeight = 8; int _topPad = 0; int _rightPad = 2; int _bottomPad = 0; int _leftPad = 2; Color _color = 0xFFcccccc; Alignment _alignment = TopLeft; Font _font = "Font\FontSmall.rsc"; LabelPosition _labelPosition = TextRight; Alignment _textAlignment = MidLeft; bool _wordWrap = true; int _wordWrapSize = 102; Dialog _toolTipDialog = "Dialog/DSDialog/BanishedUI/Info/ToolTip.rsc"; StringTable _toolTipStringTable = "Dialog/DSDialog/BanishedUI/Info/BanishedUIInfoStringTable.rsc:InfoHouseholdFuels"; } LabelDescription tabTextlineBulletToolQuality : "tabTextlineBullet" { SpriteSheet _spriteSheet = "Dialog/DSDialog/BanishedUI/Info/BanishedUIInfoSpriteSheet.rsc:BanishedUIInfo"; String _spriteName = "ToolQuality"; Color _color = 0xFFcccccc; int _imageWidth = 16; int _imageHeight = 16; int _topPad = -8; int _rightPad = 44; Alignment _alignment = TopRight; } LabelDescription tabTextlineBulletBlacksmith : "tabTextlineBullet" { SpriteSheet _spriteSheet = "UI/DSProfessions/DSProfessionsSpriteSheet.rsc:Blacksmith"; String _spriteName = "ProfessionBlacksmithWork"; Color _color = 0xFFcccccc; int _imageWidth = 16; int _imageHeight = 16; int _topPad = 2; int _rightPad = 4; int _bottomPad = 0; int _leftPad = 4; } LabelDescription tabTextlineBulletTools : "tabTextlineBullet" { SpriteSheet _spriteSheet = "Dialog/SpriteSheet.rsc"; String _spriteName = "ClearResources"; Color _color = 0xFFcccccc; int _imageWidth = 16; int _imageHeight = 16; int _topPad = 2; int _rightPad = 4; int _bottomPad = 0; int _leftPad = 4; } LabelDescription tabTextlineBullet : "tabLabelText1" { SpriteSheet _spriteSheet = "Dialog/DSDialog/Sprite/DSUISpriteSheet.rsc:Bullets"; String _spriteName = "DSBullet01"; int _imageWidth = 8; int _imageHeight = 8; int _topPad = 4; int _rightPad = 4; int _bottomPad = 4; int _leftPad = 4; Color _color = 0xFF669966; Alignment _alignment = MidCenter; } LabelDescription tabLabelText1 { Alignment _alignment = MidLeft; int _topPad = 4; int _leftPad = 22; int _rightPad = 4; int _bottomPad = 0; Font _font = "Font\FontSmall.rsc"; LabelPosition _labelPosition = TextRight; Alignment _textAlignment = MidLeft; StringTable _stringTable = "Dialog/DSDialog/BanishedUI/Info/BanishedUIInfoStringTable.rsc:InfoHouseholdFuels"; } RibbonDescription groupCommon { Flags _flags = ExpandWidth; bool _vertical = false; //int _minWidth = 32; Dialog _toolTipDialog = "Dialog/DSDialog/BanishedUI/Info/ToolTip.rsc"; StringTable _toolTipStringTable = "Dialog/DSDialog/BanishedUI/Info/BanishedUIInfoStringTable.rsc:InfoHouseholdFuels"; } BorderDescription border : "Dialog/SharedElements.rsc:sunkenBorder" { int _topPad = 1; int _bottomPad = 1; int _rightPad = 1; int _leftPad = 1; } TextDescription textCommonDis : "textCommon" { int _rightPad = 2; int _leftPad = 12; int _wordWrapSize = 162; } TextDescription textCommon { Alignment _alignment = TopLeft; int _rightPad = 4; int _leftPad = 4; Font _font = "Font\FontSmall.rsc"; StringTable _stringTable = "Dialog/DSDialog/BanishedUI/Info/BanishedUIInfoStringTable.rsc:InfoHouseholdFuels"; //int _minWidth = 142; bool _wordWrap = true; int _wordWrapSize = 260; } TextDescription textCommonMed : "textCommon" { Font _font = "Font\FontMedium.rsc"; } TextDescription textCommon2 { Alignment _alignment = TopLeft; int _rightPad = 4; int _leftPad = 4; Font _font = "Font\FontSmall.rsc"; StringTable _stringTable = "Dialog/DSDialog/BanishedUI/Info/BanishedUIInfoStringTable.rsc:InfoHouseholdFuels"; //int _minWidth = 142; bool _wordWrap = true; int _wordWrapSize = 98; } TextDescription textCommon3 { Alignment _alignment = TopCenter; int _rightPad = 4; int _leftPad = 4; Font _font = "Font\FontMedium.rsc"; StringTable _stringTable = "Dialog/DSDialog/BanishedUI/Info/BanishedUIInfoStringTable.rsc:InfoHouseholdFuels"; //int _minWidth = 142; bool _wordWrap = true; int _wordWrapSize = 310; } TextDescription textCommon3s : "textCommon3" { Font _font = "Font\FontSmall.rsc"; int _wordWrapSize = 410; } ImageDescription imageCommon { int _leftPad = 2; int _rightPad = 2; int _topPad = 2; int _bottomPad = 2; SpriteSheet _spriteSheet = "Dialog/DSDialog/BanishedUI/Info/BanishedUIInfoSpriteSheet.rsc:BanishedUIInfo"; }

This might offer some a bit of insight into the amount of code is needed for something so simple in design.

Perhaps I’m being too critical… and perhaps too lazy in my outlook at it. Is it too much code for something like that? probably not. It is simple enough to see in the mind when reading it. The code speaks for itself, and looking through it now I can see parts where I could have simplified it more with template codes and better organised code structure.


For the past 4-5 months I was unable to mod banished or have access to the files to do so, but I did however pick up a few books on C# coding. But I’ll leave that for another time.

A few of the mods I was working on before I had to take a break seem to be left in ‘workable-prototype’ states (Industry Mining, Housing Collection 01, updates to Thompson Trade Merchants, DSSV: Production). I am still unsure of what yet to do…. but may just release DS Industry Mining & Housing Collection 01 as beta releases, in their unfinished form and get feedback and give me time to adjust and learn where I left off from!

I’m slowly adding information into the website, this gives me my own benefit in looking over things and learning all the changes I made to the base game. It might also give you a glimpse into the changes my mods will make to the game when you finally play with these long awaited mods. There isn’t much right now but I am concentrating on getting the basic information first.

Stay tuned,

DS

Cookies are used in this site, do you agree to the use of? more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close