======Pogamut 3 Labs 2016======
We welcome you our student/s :-) or anybody who has ventured up to this point while gathering info about the Pogamut 3 platform, welcome!
This page contains materials for the practice lessons of the [[https://is.cuni.cz/studium/predmety/index.php?do=predmet&kod=NAIL068|Human-like Artificial Agents (NAIL068)]] course that is/has been taught during summer semester of 2015/2016 at [[http://www.mff.cuni.cz/|Charles University]] in [[http://www.praha.eu/jnp/cz/home/magistrat/index.html|Prague]], Czech Republic. The course is/was lead by [[http://ksvi.mff.cuni.cz/~brom/|Cyril Brom]] and [[http://gamedev.cuni.cz/contacts|Jakub Gemrot]]. Labs are/were (mainly) backed up by [[http://gamedev.cuni.cz/contacts|Jakub Gemrot]].
Lecture slides can be found at [[http://gamedev.cuni.cz/study/courses-2015-2016/human-like-artificial-agents-st-20152016/|Lecture webpage]].
======Dates======
Tuesday's lectures, 15:40, SW1, Jakub Gemrot: [[mailto:jakub.gemrot@gmail.com|jakub.gemrot@gmail.com]]
Tuesday's lectures, 17:20, SW1, Jakub Gemrot: [[mailto:jakub.gemrot@gmail.com|jakub.gemrot@gmail.com]]
======How to pass the practice======
First, you should see [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-HoursDotation.xlsx| hours-dotation (XLSX)]] for the whole course.
Then you should study [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Labs.xlsx| scoring-system (XLSX)]] for the practice that gives you hints how you can obtain points and how many you need them to pass the practice (+strategy guidelines). You know, life is a game :-)
Long story short, you have to get at least **160 points** to be admitted to Practice Final Test. If you obtain **190 points or more** you automatically pass the practice (you don't have to go to Practice Final Test). You can get points for the attendance (2 for class), short tests (done during the lesson, 6 max, if you fill them later, you will get -2 points penalization), doing your homework assignments (typically 10 points) or by having high-quality tournament bots (up to 28 points per tournament). \\
If you obtain at least **135 points** and want to pass, we will give you an extra assignment and based on your performance we will then admit you to Workshop Final Test.
Test scoring details: you get 2 points if you will fill the test at the beginning of the class (in class ~ just by attending, this means you get 4 points for free only by attending classes!), you can get extra 4 points by answering questions correctly.
In order to get to the Final Exam of the Course you have to:
* pass the Practice (by getting enough points and/or passing Practice Final Test)
* do whatever Cyril says you have to do (participating in experiments, etc.)
======Exam======
* **Final exam** will be on **3.6.2016** from **9:00** up to **17:20** (worst case, but we finish around 15:00 typically)
* Let us know if the time/date does not suit you
* To get a final grade you need to have more than 160 points from workshops!
======Tournaments======
Always send your bots to [[mailto:jakub.gemrot@gmail.com|jakub.gemrot@gmail.com]] !
======Workshops======
**Workshop 13** - [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-13-Slides-Conclusion.pptx|(PPTX)]] [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-13-Slides-Conclusion.pdf|(PDF)]] **(19.5.2015)**
* Today's topic is EXAM CHECKLISTS
* Just download the slides and see if you have missed something during workshops
* Exam will be 3.6.2016 9:00-17:00
**Workshop 12** - [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-12-Slides-CTF.pptx|(PPTX)]] [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-12-Slides-CTF.pdf|(PDF)]] **(17.5.2016)** //Test links included//
* Today's topic is Paths and Roles
* Learn how to divide the map into zones
* Learn how to find different paths between bases
* Learn how to synchronize the team
* You may form **teams of two people** for this!
* **Assigment 11**
* Full CTF Team
* CTF bot from previous lab
* Guard my flag holder behavior
* 5 points
* Team-Hunt enemy flag holder behavior
* 5 points
* Run cover path
* 5 points
* Run non-shortest path
* 10 points
* Custom CTF-Team behavior
* Be inventive!
* 10 points
* Template [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/L11-CTFBot.zip|yaPOSH CTF Stub + TeamComm]]
**Workshop 11** - [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-11-Slides-CTF.pptx|(PPTX)]] [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-11-Slides-CTF.pdf|(PDF)]] **(10.5.2016)** //Test links included//
* Today's topic is Team Communication
* Learn how to use UT2004TeamComm project to send messages between bots
* **Assigment 11**
* Introducting TeamComm into CTF!
* CTF bot from previous lab
* Plus "team item picking"
* Template [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/L11-CTFBot.zip|yaPOSH CTF Stub + TeamComm]]
**Workshop 10** - [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-10-Slides-CTF.pptx|(PPTX)]] [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-10-Slides-CTF.pdf|(PDF)]] **(3.5.2016)** //Test links included//
* Today's topic is Capture-the-Flag
* Learn CTF Rules
* Use yaPOSH to code own senses and actions
* **Assigment 10**
* Create CTF bot in yaPOSH!
* Collects weapons, ammo and armor on the map
* Fight other players
* Steal enemy flags, Defend own flag
* Use CTF-Lostfaith map
* [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/CTFBot.zip|Yaposh CTF Bot Stub]]
**Workshop 9** - [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-09-yaPOSH.pptx|(PPTX)]], [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-09-yaPOSH.pdf|(PDF)]] **(26.4.2016)** //Test links included//
* Today's topic is Behavior Oriented Design (BOD), POSH and yaPOSH
* Learn about BOD - methodology how to code intelligent behavior
* Learn about POSH - reactive planner built on top of this methodology
* Learn about POSH variation called yaPOSH
* Try it yourself, implement a (simple) DeathMatch bot, remember:
* We will start from: [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Workshop-09-DuelBot.zip|yaPOSH DM bot stub 3.7.1-SNAPSHOT]]
* **Assigment 9**
* Create (simple) DeathMatchBot in yaPOSH!
* Collects weapons, ammo and armor on the map
* Fight other players
* Does not stuck (its ok, if he occasionally freezes somewhere for a few seconds, but not forever!)
* Use DM-1on1-Albatross map
**Workshop 8** - [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-08-Slides-BOD-DeathMatch.pptx|(PPTX)]], [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-08-Slides-BOD-DeathMatch.pdf|(PDF)]] **(19.4.2016)** //Test links included//
* Today's topic is DeathMatch Bot
* We will start from: [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/DMBot.zip|DM bot stub 3.7.1-SNAPSHOT]]
* **Assigment 8**
* Create DeathMatchBot!
* Must have following behaviors: Combat, Intercept, Cover, Focus, Item Collecting behaviors
Collects weapons, ammo and armor on the map
* Does not stuck (its ok, if he occasionally freezes somewhere for a few seconds, but not forever!)
* Use DM-1on1-Roughinery-FPS map
* //10 points//
* **All your DM bots will automatically take part in DM bot tournament - deadline for bots on 1.5.2016 8:00!**
**Workshop 7** - [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-07-Slides-Items-Weapons.pptx|(PPTX)]], [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-07-Slides-Items-Weapons.pdf|(PDF)]] **(12.4.2016)** //Test links included//
* Today's topic is Weapons and Items!
* Learn about UT2004ItemType, ItemType.Category, Items and Weapons descriptors
* Know your weapons to use them well
* WeaponPreferences - how to use weapons effectively
* Modules: items, weaponry, weaponPrefs and shoot
* We will start from: [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/L07-ItemPickerBot.zip|this EmptyBot]]
* That's what we did in lab: [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/ItemPickerBot-Advanced.zip|ItemPicker]]
* **Assignment 7**
* Create CollectorBot
* Collects weapons, ammo and armor on the map
* Try to be really clever about this, prioritize items in best-you-can do order
* I.e., don't make obvious mistakes like "rocket ammo better than 50 armor"
* Does not stuck (its ok, if he occasionally freezes somewhere for a few seconds, but not forever!)
* If he sees the item he wants is not there (e.g. you run three collector bots and the other one got it first), he re-plans and goes for a different item
* Use DM-1on1-Albatross or DM-1on1-Roughinery or DM-1on1-Solitude map
* BONUS: try to "time" your picking, e.g., include "time required to travel to item respawn location" in your "decision", what item are you going to run for
* //5 + 5 points//
**Workshop 6** - [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-06-Slides-AStar+Visibility.pptx|(PPTX)]], [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-06-Slides-AStar+Visibility.pdf|(PDF)]] **(5.4.2016)** //Test links included//
* Static visibility information
* Visibility Matrix
* A-Star implementation within Pogamut 3
* UT2004AStar
* IPFMapView
* Hide&Seek Game
* Hide&Seek Tournament announcement
* We will start from: [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2014-2015/L6-HideAndSeekBot.zip|HideAndSeekBot Template 3.7.1-SNAPSHOT]]
* It contains specific DM-HideAndSeekMap.ut2 file, put that into UT2004/Maps directory in order to be able to run it
* Then you have to alter UT2004/System/startGamebotsDMServer.bat to start DM-HideAndSeekMap instead of DM-TrainingDay
* **Assignment 6**
* Implement HideAndSeek Bot, both roles
* Tournament will be held on a different map, so we do not recommend using static information, e.g. run to [1000,500,0] ... :-)
* Submit your bots before **10.4.2016 8:00** (and always send a copy to jakub.gemrot@gmail.com)
* //10 points + up to 16 from tournament ! //
**Workshop 5** [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-05-Slides-Navigation.pptx|(PPTX)]], [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture-05-Slides-Navigation.pdf|(PDF)]] **(29.3.2016)** //Test links included//
* Navigation, Navigation Graph, Navigation Mesh
* Download [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/L5-NavBot.zip|NavBot Template]]
* **Assignment 5**
* Create a bot that can run between 2 navpoints
* See and describe 5 problems (as given by your task number) from following list
* [[https://docs.google.com/spreadsheets/d/1Xp6QSAimKugGJzyW6bvLIbOqTW7TTdsqzXV4IRSjhs8/|DM-1on1-Roughinery-FPS navigation bugs]]
* Fix at least 1 bug within navigation code
* //10 points//
* //Extra 10 points// if you fix 1 hard bug within navigation code
**Workshop 4** [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture_04-Slides.pptx|(PPTX)]], [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture_04-Slides.pdf|(PDF)]] **(22.3.2016)** //Test links included//
* Steerings and Steering Game, get Steering Game 2.0 [[http://pogamut.cuni.cz/pogamut_files/misc/SteeringGame/SteeringGame2.0-install.exe|(installer EXE)]], [[http://pogamut.cuni.cz/pogamut_files/lectures/misc/SteeringGame2.0.zip|(ZIP file)]]
* Download [[http://pogamut.cuni.cz/pogamut_files/misc/SteeringGame/PracticalsScenes.zip|practical steering examples]] for the steering game
* **Assigment 4**
* Install Steering Game 2.0 [[http://pogamut.cuni.cz/pogamut_files/misc/SteeringGame/SteeringGame2.0-install.exe|(installer EXE)]], [[http://pogamut.cuni.cz/pogamut_files/lectures/misc/SteeringGame2.0.zip|(ZIP file)]], do at least 4 easy missions and 2 intermediate missions and send us proof you did them
* How to send proof - Save Scene after completing each mission, send us the resulting xml files
* Easy mission ~ 1 point (up-to 4 points)
* Intermediate mission ~ 2 points (up-to 4 points)
* (Optional) Hard mission ~ 2 points (up-to 6 points)
* // 8 points + up to 6 bonus//
**Workshop 3** [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture_03-Slides.pptx|(PPTX)]], [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture_03-Slides.pdf|(PDF)]] **(15.3.2016)** //Test links included//
* Running around UT2004 environment
* Sensors - self, players
* Effectors - move, jump, dodge
* Tag! Game
* Tag! Tournament announcement
* Download [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/AB2016-TagBot.zip|TagBot project template]] (53 MB!).
* It contains specific DM-TagMap.ut2 file, put that into UT2004/Maps directory in order to be able to run it
* Then you have to alter UT2004/System/startGamebotsDMServer.bat to start DM-TagMap instead of DM-TrainingDay
* Note that the file also contains:
* Movies with bots from Tag! 2013&14, chance to learn a few tricks!
* Files to execute match with best bots from Tag! 2014+2015 to check how good your bot is!
* **Assigment 3**
* TagBot! First real scenario that requires smart AI!
* Create the best TagBot, win the tournament and score extra points!
* Don't forget that the TagBot should implement both roles 1) seeker as well as 2) runner
* GOOD LUCK!
* //10 points//
**Workshop 02** [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture_02-Slides.pptx|(PPTX)]], [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture_02-Slides.pdf|(PDF)]] **(8.3.2016)** //Test links included//
* Pogamut gentle introduction
* Virtual worlds, virtual agents
* Basics of Pogamut - interface, API
* How to run your first bot
* Download [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2014-2015/Lecture-02-EmptyBot.zip|EmptyBot example]] and [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2014-2015/Lecture-02-ResponsiveBot.zip|ResponsiveBot example]].
* Want to know more? Or did you forget something from the lecture? Read [[http://pogamut.cuni.cz/pogamut_files/latest/doc/tutorials/00-EmptyBot.html|EmptyBot tutorial]] and [[http://pogamut.cuni.cz/pogamut_files/latest/doc/tutorials/01-ResponsiveBot.html|ResponsiveBot tutorial]]!
* **Assigment 2**
* Easy and fun! :-)
* Fool around with your first Pogamut bot
* Create a follow bot that will listen to your commands! :-)
* //5 points//
* And perhaps do a bonus stuff, return as many damage as received from others
* //2 bonus points//
**Workshop 01** [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture_01-Slides.pptx|(PPTX)]], [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture_01-Slides.pdf|(PDF)]] **(1.3.2016)** //Test links included//
* Practice scoring details - read them very carefully
* Java Revisited
* Which Java version is required (recommended for advanced users), what IDEs you can use
* How to install SVN and Maven + "how-to-use" links
* **Assignment 1**
* Install Subversion and Maven
* Finish implementation of Java classes inside the project [[svn://artemis.ms.mff.cuni.cz/pogamut/trunk/project/Incubator/Lectures/JavaRevisited]]
* Confirm that your implementation is correctly working by successfully passing all bundled JUnit tests
* Implementation of "Listeners class" is for extra points (challenging task) ~ you can let all "Flag" tests in "failing" state
* //10 points + 5 bonus//
**Promo** [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture_00-Slides.pptx|(PPTX)]], [[http://diana.ms.mff.cuni.cz/pogamut_files/lectures/2015-2016/Pogamut_3-2016-Lecture_00-Slides.pdf|(PDF)]]
* Slides that gives you an overview what ordeal (translate as 'fun') awaits you during practice lessons :-)
* Ok, we do not want to scare you - honestly, we think that practice lessons we have prepared for you are lots-of-fun and will inspire you to experiment with AI within the boundaries of UT2004 virtual environment
======Score tracking=====
* We will continually track your Attendance/Tests/Homeworks/Tournaments
* Provided as Google Doc, mail us to receive the link
======Pogamut 3 platform======
**Installers:**
* Pogamut UT2004 3.7.0 and Pogamut Emohawk Installer 3.7.0. Get them at [[http://pogamut.cuni.cz/main/tiki-index.php?page=Download|Pogamut download page]]
* Date: 23.2.2015
* For Pogamut UT2004 Installer you have to have UT2004 installed somewhere.
* Both installers will install: Maven 3.0.4, NetBeans plugins, Pogamut Example archetypes. Note that you need [[http://netbeans.org/downloads/7.3.1/index.html|NetBeans 7.3.1+]], otherwise Pogamut archetypes won't be accessible from NetBeans context menu (New Project -> Maven -> Project From Archetype -> Local Archetypes Catalog).
* Before you launch the bot, you need to start Unreal server:
* For UT2004, go to directory Unreal Anthology/UT2004/System and there launch startGamebotsDMServer.bat. To observe the bot in the environment launch startUT2004low.bat from the same directory.
* For UnrealEngine2Runtime, go to directory UnrealEngine2RuntimeDemo/System/ and there launch startEmohawkServer.bat. To observe the bot in the environment launch startUE2Runtime.bat (after the server is launched).
**Alternatively**
* If you have UT2004 installed, you can follow guidelines of tutorial Pogamut 3 quickstart tutorial found at [[http://pogamut.cuni.cz/main/tiki-index.php?page=Documentation|Pogamut Documentation page]]. However, we recommend to use installers above.
======FAQ======
**Q:** **Which version of Pogamut are we using?**\\
**A:** 3.7.0, always check your pom.xml after you download bot templates or materialize Maven archetypes
to check whether you're using correct version.
----
**Q:** **I am missing help on all methods, attributes and classes (Javadoc is not working). :-/**\\
**A:** In NetBeans open your project and right click the **Dependencies** folder, click **Download Javadoc**, NetBeans should now download Javadoc and the help should be working. If it is not, click also **Download Sources** and after it is done (watch lower right progress bar) restart NetBeans. Sometimes NetBeans refuse to show help - it can be usually resolved by trying to **Download Javadoc** several times.
----
**Q:** **How to get account in our computer laboratory for non-MFF students?** \\
**A:** \\
* **a)** Print and fill up this form: http://www.ms.mff.cuni.cz/students/externisti.html.cs
* **b)** Get the network administrator of students school to sign the form above (if you are unable to get the signature, then ask Cyril Brom)
* **c)** Go to the SISAL, Mala Strana, fourth floor - in the corridor in the back and there they will create an account for you\\
----
**Q:** **How do I create PogamutUT2004 Bot project in NetNeans from archetype?** \\
**A:** Its easy. Simply click New Project, from categories choose Maven. From projects choose Maven project. Click on Next. Click on Add... button and the NetBeans will ask you about archetype details. That is :
* **Group Id:** cz.cuni.amis.pogamut.ut2004.examples
* **Artifact Id:** 00-empty-bot-archetype
* **Version:** 3.7.0
* **Repository:** http://diana.ms.mff.cuni.cz:8081/artifactory/repo
Full list of available archetypes can be found [[http://diana.ms.mff.cuni.cz:8081/artifactory/libs-snapshot-local/archetype-catalog.xml|here]]. (always use repository above)
Also be sure that NetBeans is using Maven v3.0.4+! You can always obtain Maven from here: [[http://maven.apache.org|Maven 3.0.4]]. After unpacking, go to NetBeans->Tools->Options->Miscellaneous->sheet Maven->set Maven home directory.
----
**Q:** **I have a problem with imports - the NetBeans help doesn't work. :-/**\\
**A:** Two solutions, either add PogamutUT2004.jar and PogamutCore.jar to libraries to
your project (the help should be working), or add imports to your class manually.
Some useful imports:
import cz.cuni.amis.pogamut.base3d.worldview.object.*; //for Location, Velocity..
import cz.cuni.amis.pogamut.ut2004.communication.messages.gbcommands.*; //GB commands
import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.*; //GB messages
----
**Q:** **I am a student and want to use Pogamut, but I don't have UT2004.** \\
**A:** Unfortunately school cannot provide you with UT2004 - however you are free to use Pogamut in SW1 laboratory (when it is free) and there is one Pogamut computer in MS lab (far end against the entrance) where we can create an account for you. Second solution is to use UnrealEngine2RuntimeDemo exclusively, which is free for educational purposes and which is installed with Pogamut Emohawk installer.
----
**Q:** **How to disable master server authentication in UT2004?**\\
**A:** In UT2004/System/UT2004.ini find **[IpDrv.MasterServerUplink]** and set the following:
[IpDrv.MasterServerUplink]
DoUplink=False
UplinkToGamespy=False
SendStats=False
----
**Q:** **I'm trying to setup @EventListener or @ObjectClassEventListener in POSH actions (or senses) and they are not working, why?** \\
**A:** These listeners works only in XxxContext classes. You have to declare them there and then access them from actions or senses.
----
**Q:** **How can I tell what version of Unreal Tournament 2004 I am running (v. 3369 required)?** \\
**A:** Just start Unreal Tournament 2004 GUI, open the Join Game tab and the news page will have the number in the upper right corner.
======Acknowledgement======
Creation of this course was partially supported by the project Integration of IT Tools into Education of Humanities, which is financed by the European Social Fund, the state budget of the Czech Republic, and by the budget of Municipal House Prague.
Inovace kurzu v letech 2011/2 a 2012/3 byly podpořeny projektem CZ.2.17/3.1.00/33274 financovaným Evropským sociálním fondem a rozpočtem hlavního města Prahy.
{{:lectures:loga.png|}}
**Evropský sociální fond** \\
**Praha & EU: Investujeme do vaší budoucnosti**