pub static DATA: &'static str = r##"
<!DOCTYPE html>
<html dir="ltr" class="client-js" lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Flash card challenge - OpenHatch wiki</title>
<meta charset="UTF-8">
<meta name="generator" content="MediaWiki 1.20alpha">
<meta name="robots" content="noindex,follow">
<link rel="alternate" type="application/x-wiki" title="Edit" href="http://wiki.openhatch.org/index.php?title=Flash_card_challenge&action=edit">
<link rel="edit" title="Edit" href="http://wiki.openhatch.org/index.php?title=Flash_card_challenge&action=edit">
<link rel="shortcut icon" href="http://wiki.openhatch.org/favicon.ico">
<link rel="search" type="application/opensearchdescription+xml" href="http://wiki.openhatch.org/opensearch_desc.php" title="OpenHatch wiki (en)">
<link rel="EditURI" type="application/rsd+xml" href="http://wiki.openhatch.org/api.php?action=rsd">
<link rel="copyright" href="http://creativecommons.org/licenses/by/3.0/">
<link rel="alternate" type="application/atom+xml" title="OpenHatch wiki Atom feed" href="http://wiki.openhatch.org/index.php?title=Special:RecentChanges&feed=atom">
<link rel="stylesheet" href="Flash%20card%20challenge%20-%20OpenHatch%20wiki_files/load.css">
<style type="text/css">.js-messagebox{margin:1em 5%;padding:0.5em 2.5%;border:1px solid #ccc;background-color:#fcfcfc;font-size:0.8em}.js-messagebox .js-messagebox-group{margin:1px;padding:0.5em 2.5%;border-bottom:1px solid #ddd}.js-messagebox .js-messagebox-group:last-child{border-bottom:thin none transparent}
/* cache key: oh_wiki:resourceloader:filter:minify-css:7:8b08bdc91c52a9ffba396dccfb5b473c */</style><style type="text/css">.mw-collapsible-toggle{float:right} li .mw-collapsible-toggle{float:none} .mw-collapsible-toggle-li{list-style:none}
/* cache key: oh_wiki:resourceloader:filter:minify-css:7:4250852ed2349a0d4d0fc6509a3e7d4c */</style><meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" href="Flash%20card%20challenge%20-%20OpenHatch%20wiki_files/load_002.css">
<style>a:lang(ar),a:lang(ckb),a:lang(fa),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}
/* cache key: oh_wiki:resourceloader:filter:minify-css:7:d5a1bf6cbd05fc6cc2705e47f52062dc */</style>
<script src="Flash%20card%20challenge%20-%20OpenHatch%20wiki_files/load.php"></script><script src="Flash%20card%20challenge%20-%20OpenHatch%20wiki_files/load_002.php"></script>
<script>if(window.mw){
mw.config.set({"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Flash_card_challenge","wgTitle":"Flash card challenge","wgCurRevisionId":17165,"wgArticleId":934,"wgIsArticle":true,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":[],"wgBreakFrames":false,"wgPageContentLanguage":"en","wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgRelevantPageName":"Flash_card_challenge","wgRestrictionEdit":[],"wgRestrictionMove":[]});
}</script><script>if(window.mw){
mw.loader.implement("user.options",function(){mw.user.options.set({"ccmeonemails":0,"cols":80,"date":"default","diffonly":0,"disablemail":0,"disablesuggest":0,"editfont":"default","editondblclick":0,"editsection":1,"editsectiononrightclick":0,"enotifminoredits":0,"enotifrevealaddr":0,"enotifusertalkpages":1,"enotifwatchlistpages":0,"extendwatchlist":0,"externaldiff":0,"externaleditor":0,"fancysig":0,"forceeditsummary":0,"gender":"unknown","hideminor":0,"hidepatrolled":0,"imagesize":2,"justify":0,"math":1,"minordefault":0,"newpageshidepatrolled":0,"nocache":0,"noconvertlink":0,"norollbackdiff":0,"numberheadings":0,"previewonfirst":0,"previewontop":1,"quickbar":5,"rcdays":7,"rclimit":50,"rememberpassword":0,"rows":25,"searchlimit":20,"showhiddencats":0,"showjumplinks":1,"shownumberswatching":1,"showtoc":1,"showtoolbar":1,"skin":"monobook","stubthreshold":0,"thumbsize":2,"underline":2,"uselivepreview":0,"usenewrc":0,"watchcreations":0,"watchdefault":0,"watchdeletion":0,"watchlistdays":3,
"watchlisthideanons":0,"watchlisthidebots":0,"watchlisthideliu":0,"watchlisthideminor":0,"watchlisthideown":0,"watchlisthidepatrolled":0,"watchmoves":0,"wllimit":250,"variant":"en","language":"en","searchNs0":true,"searchNs1":false,"searchNs2":false,"searchNs3":false,"searchNs4":false,"searchNs5":false,"searchNs6":false,"searchNs7":false,"searchNs8":false,"searchNs9":false,"searchNs10":false,"searchNs11":false,"searchNs12":false,"searchNs13":false,"searchNs14":false,"searchNs15":false});;},{},{});mw.loader.implement("user.tokens",function(){mw.user.tokens.set({"editToken":"+\\","watchToken":false});;},{},{});
/* cache key: oh_wiki:resourceloader:filter:minify-js:7:c89fc005766e312c555f83b307d08d63 */
}</script>
<script>if(window.mw){
mw.loader.load(["mediawiki.page.startup","mediawiki.legacy.wikibits","mediawiki.legacy.ajax"]);
}</script><script type="text/javascript" src="Flash%20card%20challenge%20-%20OpenHatch%20wiki_files/load_004.php"></script>
</head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-Flash_card_challenge skin-monobook action-view">
<div id="globalWrapper">
<div id="column-content"><div id="content"><div style="display: none;" class="js-messagebox" id="mw-js-message"></div>
<a id="top"></a>
<h1 id="firstHeading" class="firstHeading"><span dir="auto">Flash card challenge</span></h1>
<div id="bodyContent" class="mw-body">
<div id="siteSub">From OpenHatch wiki</div>
<div id="contentSub"></div>
<div id="jump-to-nav" class="mw-jump">Jump to: <a href="#column-one">navigation</a>, <a href="#searchInput">search</a></div>
<!-- start content -->
<div id="mw-content-text" dir="ltr" class="mw-content-ltr" lang="en"><div class="floatright"><a href="http://wiki.openhatch.org/File:Flashcards.jpg" class="image"><img alt="Flashcards.jpg" src="Flash%20card%20challenge%20-%20OpenHatch%20wiki_files/Flashcards.jpg" width="300" height="206"></a></div>
<table id="toc" class="toc"><tbody><tr><td><div id="toctitle"><h2>Contents</h2><span class="toctoggle"> [<a href="#" class="internal" id="togglelink">hide</a>] </span></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Project"><span class="tocnumber">1</span> <span class="toctext">Project</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="#Goals"><span class="tocnumber">2</span> <span class="toctext">Goals</span></a></li>
<li class="toclevel-1 tocsection-3"><a href="#Problem_statement"><span class="tocnumber">3</span> <span class="toctext">Problem statement</span></a></li>
<li class="toclevel-1 tocsection-4"><a href="#Breaking_down_the_problem"><span class="tocnumber">4</span> <span class="toctext">Breaking down the problem</span></a>
<ul>
<li class="toclevel-2 tocsection-5"><a href="#Step_1:_Get_the_questions_from_a_fixed_flash_card_file"><span class="tocnumber">4.1</span> <span class="toctext">Step 1: Get the questions from a fixed flash card file</span></a></li>
<li class="toclevel-2 tocsection-6"><a href="#Step_2:_Randomly_select_questions_from_the_question_dictionary"><span class="tocnumber">4.2</span> <span class="toctext">Step 2: Randomly select questions from the question dictionary</span></a></li>
<li class="toclevel-2 tocsection-7"><a href="#Step_3:_Get_and_check_the_user.27s_answer"><span class="tocnumber">4.3</span> <span class="toctext">Step 3: Get and check the user's answer</span></a></li>
<li class="toclevel-2 tocsection-8"><a href="#Step_4:_Allow_the_user_to_quit_the_program"><span class="tocnumber">4.4</span> <span class="toctext">Step 4: Allow the user to quit the program</span></a></li>
<li class="toclevel-2 tocsection-9"><a href="#Step_5:_Get_the_quiz_questions_file_from_the_user"><span class="tocnumber">4.5</span> <span class="toctext">Step 5: Get the quiz questions file from the user</span></a></li>
<li class="toclevel-2 tocsection-10"><a href="#Checking_your_work"><span class="tocnumber">4.6</span> <span class="toctext">Checking your work</span></a></li>
<li class="toclevel-2 tocsection-11"><a href="#Bonus_challenge"><span class="tocnumber">4.7</span> <span class="toctext">Bonus challenge</span></a></li>
<li class="toclevel-2 tocsection-12"><a href="#Congratulations.21"><span class="tocnumber">4.8</span> <span class="toctext">Congratulations!</span></a></li>
</ul>
</li>
</ul>
</td></tr></tbody></table>
<h2> <span class="mw-headline" id="Project"> Project </span></h2>
<p>Write a flash card quizzer from scratch.
</p>
<h2> <span class="mw-headline" id="Goals"> Goals </span></h2>
<ul><li> practice breaking down a problem and solving it in Python from scratch
</li><li> practice command line option parsing
</li><li> practice reading from files
</li><li> practice working with dictionaries and for loops
</li></ul>
<h2> <span class="mw-headline" id="Problem_statement"> Problem statement </span></h2>
<p>Write a Python script that takes a file containing flash card
questions and answers as an argument and quizzes the user based on the
contents of that file until the user quits the program. Questions should
be selected randomly (as opposed to going in order through the file),
and the user should type in their guess. The script should say whether
or not a guess is correct and provide the correct answer if an incorrect
answer is given.
</p><p>The file will contain flash card challenges in the form:
</p>
<pre>question,answer
question,answer
question,answer
question,answer
...</pre>
<p>For example, a state capitals flash card file might have the form:
</p>
<pre>Alabama,Montgomery
Alaska,Juneau
Arizona,Phoenix
...</pre>
<p>Running the quizzer script with this file might look like this:
</p>
<pre>$ python quizzer.py state_capitals.txt
Texas? Austin
Correct! Nice job.
New Mexico? Santa Fe
Correct! Nice job.
Oregon? Portland
Incorrect. The correct answer is Salem.
Virginia? Richmond
Correct! Nice job.
Virginia? Exit
Goodbye</pre>
<h2> <span class="mw-headline" id="Breaking_down_the_problem"> Breaking down the problem </span></h2>
<h3> <span class="mw-headline" id="Step_1:_Get_the_questions_from_a_fixed_flash_card_file"> Step 1: Get the questions from a fixed flash card file</span></h3>
<p>Download <a rel="nofollow" class="external free" href="http://web.mit.edu/jesstess/www/IntermediatePythonWorkshop/state_capitals.txt">http://web.mit.edu/jesstess/www/IntermediatePythonWorkshop/state_capitals.txt</a>.
</p><p>Write the code to open and read <code>state_capitals.txt</code>
(we'll deal with getting a variable filename from the user later).
Create a dictionary, where each comma-separated question and answer
become a key and value in the dictionary. Note that each line in the
file ends in a newline, which you'll need to remove from the word.
</p><p><b>Step 1 resources</b>:
</p>
<ul>
<li>
File input and output: <a rel="nofollow" class="external free" href="http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-files">http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-files</a>.
</li>
<li>
Stripping characters (like whitespace and newlines) from a string: <a rel="nofollow" class="external free" href="http://docs.python.org/library/stdtypes.html#str.strip">http://docs.python.org/library/stdtypes.html#str.strip</a>.
</li>
</ul>
<p><br>
</p>
<h3> <span class="mw-headline" id="Step_2:_Randomly_select_questions_from_the_question_dictionary"> Step 2: Randomly select questions from the question dictionary </span></h3>
<p>Write a <code>while</code> loop that loops forever and at each
iteration through the loop randomly selects a key/value pair from the
questions dictionary and prints the question.
</p><p>To randomly select a key from the dictionary, you can use the <code>random</code> module, and in particular the <code>random.choice</code> function.
</p><p>When you run your script, to break out of the <tt>while</tt> loop you can press <tt>Control</tt> and then (while still holding down Control) <tt>c</tt>.
</p><p><b>Step 2 resources</b>:
</p>
<ul>
<li>
<code>while</code> loops: <a rel="nofollow" class="external free" href="http://en.wikibooks.org/wiki/Python_Programming/Flow_control#While_loops">http://en.wikibooks.org/wiki/Python_Programming/Flow_control#While_loops</a>
</li>
<li>
Dictionary manipulation: <a rel="nofollow" class="external free" href="http://docs.python.org/tutorial/datastructures.html#dictionaries">http://docs.python.org/tutorial/datastructures.html#dictionaries</a>. In particular, look at getting a list of the dictionary's keys using the <code>keys</code> method.
</li>
<p>Selecting a random value from a list using the <code>random</code> module: <a rel="nofollow" class="external free" href="http://docs.python.org/library/random.html#random.choice">http://docs.python.org/library/random.html#random.choice</a>
</p>
</ul>
<p><br>
</p>
<h3> <span class="mw-headline" id="Step_3:_Get_and_check_the_user.27s_answer"> Step 3: Get and check the user's answer </span></h3>
<p>Inside your <code>while</code> loop, write the code that gets an
answer from the user and compares it to the answer retrieved from the
questions dictionary. If the answer is correct, say so. If the answer is
incorrect, say so and print the correct answer.
</p><p>You can get input from a user using the <code>raw_input</code> function.
</p><p>It is up to you how strict you want to be with a user's answer. Do you want capitalization to matter?
</p><p><b>Step 3 resources</b>:
</p>
<ul>
<li>
Using <code>raw_input</code> to get data from the user: <a rel="nofollow" class="external free" href="http://docs.python.org/library/functions.html#raw_input">http://docs.python.org/library/functions.html#raw_input</a>
</li>
</ul>
<p><br>
</p>
<h3> <span class="mw-headline" id="Step_4:_Allow_the_user_to_quit_the_program"> Step 4: Allow the user to quit the program </span></h3>
<p>The <code>while</code> loop currently runs forever. Pick a special
phrase (like "Exit") that the user can type instead of an answer that
signals that they want to quit the program. When that special phrase is
given, print a goodbye message and <code>break</code> out of the <code>while</code> loop to end the program.
</p><p><b>Step 4 resources</b>:
</p>
<ul>
<li>
Using the <code>break</code> keyword to break out of a loop: <a rel="nofollow" class="external free" href="http://docs.python.org/tutorial/controlflow.html#break-and-continue-statements-and-else-clauses-on-loops">http://docs.python.org/tutorial/controlflow.html#break-and-continue-statements-and-else-clauses-on-loops</a>
</li>
<li>
Making decisions with <code>if</code>, <code>elif</code>, and <code>else</code>: <a rel="nofollow" class="external free" href="http://docs.python.org/tutorial/controlflow.html#if-statements">http://docs.python.org/tutorial/controlflow.html#if-statements</a>
</li>
</ul>
<p><br>
</p>
<h3> <span class="mw-headline" id="Step_5:_Get_the_quiz_questions_file_from_the_user"> Step 5: Get the quiz questions file from the user</span></h3>
<p>Write the code to get the quiz questions file from a command line
argument. Handle the case where a user forgets to supply a file; in this
case, print an error message saying they need to supply a file, and
then exit the program using the <code>exit()</code> function.
</p><p><b>Step 5 resources</b>:
</p>
<ul>
<li>
Command line argument parsing: <a rel="nofollow" class="external free" href="http://docs.python.org/library/argparse.html#module-argparse">http://docs.python.org/library/argparse.html#module-argparse</a>.
</li>
<li>
Getting and checking the number of command line arguments: <a rel="nofollow" class="external free" href="http://docs.python.org/library/sys.html">http://docs.python.org/library/sys.html</a>.
</li>
</ul>
<p><br>
</p>
<h3> <span class="mw-headline" id="Checking_your_work">Checking your work</span></h3>
<p>Try out your script on the following quiz files:
</p>
<ul><li> <a rel="nofollow" class="external free" href="http://web.mit.edu/jesstess/www/IntermediatePythonWorkshop/metric.txt">http://web.mit.edu/jesstess/www/IntermediatePythonWorkshop/metric.txt</a>
</li><li> <a rel="nofollow" class="external free" href="http://web.mit.edu/jesstess/www/IntermediatePythonWorkshop/french_food.txt">http://web.mit.edu/jesstess/www/IntermediatePythonWorkshop/french_food.txt</a>
</li></ul>
<p>Does your script handle the case where the user forgets to provide a filename?
</p><p><br>
</p>
<h3> <span class="mw-headline" id="Bonus_challenge">Bonus challenge</span></h3>
<p>Modify your script to quiz based on either the question or answer.
e.g. for state capitals, the quizzer would present either a state,
expecting its capital as the answer, or a capital, expecting its state
as the answer.
</p><p><br>
</p>
<h3> <span class="mw-headline" id="Congratulations.21">Congratulations!</span></h3>
<p>You've implemented a substantial, useful script in Python from scratch to help people study. Keep practicing!
</p><p><a href="http://wiki.openhatch.org/File:Fireworks.png" class="image"><img alt="Fireworks.png" src="Flash%20card%20challenge%20-%20OpenHatch%20wiki_files/150px-Fireworks.png" width="150" height="150"></a>
<a href="http://wiki.openhatch.org/File:Balloons.png" class="image"><img alt="Balloons.png" src="Flash%20card%20challenge%20-%20OpenHatch%20wiki_files/150px-Balloons.png" width="150" height="164"></a>
</p>
<!--
NewPP limit report
Preprocessor node count: 74/1000000
Post-expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
Highest expansion depth: 2/40
Expensive parser function count: 0/100
-->
<!-- Saved in parser cache with key oh_wiki:pcache:idhash:934-0!*!*!!en!2!* and timestamp 20160729125738 -->
</div><div class="printfooter">
Retrieved from "<a href="http://wiki.openhatch.org/index.php?title=Flash_card_challenge&oldid=17165">http://wiki.openhatch.org/index.php?title=Flash_card_challenge&oldid=17165</a>"</div>
<div id="catlinks" class="catlinks catlinks-allhidden"></div> <!-- end content -->
<div class="visualClear"></div>
</div>
</div></div>
<div id="column-one">
<div id="p-cactions" class="portlet">
<h5>Views</h5>
<div class="pBody">
<ul>
<li id="ca-nstab-main" class="selected"><a href="http://wiki.openhatch.org/Flash_card_challenge" primary="1" context="subject" title="View the content page [alt-shift-c]" accesskey="c">Page</a></li>
<li id="ca-talk" class="new"><a href="http://wiki.openhatch.org/index.php?title=Talk:Flash_card_challenge&action=edit&redlink=1" primary="1" context="talk" title="Discussion about the content page [alt-shift-t]" accesskey="t">Discussion</a></li>
<li id="ca-edit"><a href="http://wiki.openhatch.org/index.php?title=Flash_card_challenge&action=edit" primary="1" title="You can edit this page. Please use the preview button before saving [alt-shift-e]" accesskey="e">Edit</a></li>
<li id="ca-history"><a href="http://wiki.openhatch.org/index.php?title=Flash_card_challenge&action=history" rel="archives" title="Past revisions of this page [alt-shift-h]" accesskey="h">History</a></li>
</ul>
</div>
</div>
<div class="portlet" id="p-personal">
<h5>Personal tools</h5>
<div class="pBody">
<ul>
<li id="pt-login"><a href="http://wiki.openhatch.org/index.php?title=Special:UserLogin&returnto=Flash+card+challenge&returntoquery=printable%3Dyes" title="You are encouraged to log in; however, it is not mandatory [alt-shift-o]" accesskey="o">Log in / create account</a></li>
</ul>
</div>
</div>
<div class="portlet" id="p-logo">
<a href="http://wiki.openhatch.org/Main_Page" style="background-image: url(/static/images/the-logo-bluegreen-125px.png);" title="Visit the main page"></a>
</div>
<div class="generated-sidebar portlet" id="p-This_wiki">
<h5>This wiki</h5>
<div class="pBody">
<ul>
<li id="n-Wiki-front-page"><a href="http://wiki.openhatch.org/Main_Page">Wiki front page</a></li>
<li id="n-Bug-trackers"><a href="http://wiki.openhatch.org/Bug_trackers">Bug trackers</a></li>
<li id="n-randompage"><a href="http://wiki.openhatch.org/Special:Random" title="Load a random page [alt-shift-x]" accesskey="x">Random page</a></li>
<li id="n-recentchanges"><a href="http://wiki.openhatch.org/Special:RecentChanges" title="A list of recent changes in the wiki [alt-shift-r]" accesskey="r">Recent changes</a></li>
</ul>
</div>
</div>
<div class="generated-sidebar portlet" id="p-OpenHatch_elsewhere">
<h5>OpenHatch elsewhere</h5>
<div class="pBody">
<ul>
<li id="n-OpenHatch.org"><a href="https://openhatch.org/" rel="nofollow">OpenHatch.org</a></li>
<li id="n-The-OpenHatch-blog"><a href="https://openhatch.org/blog/" rel="nofollow">The OpenHatch blog</a></li>
<li id="n-About-OpenHatch"><a href="http://wiki.openhatch.org/About_OpenHatch">About OpenHatch</a></li>
<li id="n-Contact-us"><a href="https://openhatch.org/contact/" rel="nofollow">Contact us</a></li>
</ul>
</div>
</div>
<div id="p-search" class="portlet">
<h5><label for="searchInput">Search</label></h5>
<div id="searchBody" class="pBody">
<form action="/index.php" id="searchform">
<input name="title" value="Special:Search" type="hidden">
<input name="search" title="Search OpenHatch wiki [alt-shift-f]" accesskey="f" id="searchInput" type="search">
<input name="go" value="Go" title="Go to a page with this exact name if exists" id="searchGoButton" class="searchButton" type="submit">
<input name="fulltext" value="Search" title="Search the pages for this text" id="mw-searchButton" class="searchButton" type="submit">
</form>
</div>
</div>
<div class="portlet" id="p-tb">
<h5>Toolbox</h5>
<div class="pBody">
<ul>
<li id="t-whatlinkshere"><a href="http://wiki.openhatch.org/Special:WhatLinksHere/Flash_card_challenge" title="A list of all wiki pages that link here [alt-shift-j]" accesskey="j">What links here</a></li>
<li id="t-recentchangeslinked"><a href="http://wiki.openhatch.org/Special:RecentChangesLinked/Flash_card_challenge" title="Recent changes in pages linked from this page [alt-shift-k]" accesskey="k">Related changes</a></li>
<li id="t-specialpages"><a href="http://wiki.openhatch.org/Special:SpecialPages" title="A list of all special pages [alt-shift-q]" accesskey="q">Special pages</a></li>
<li id="t-permalink"><a href="http://wiki.openhatch.org/index.php?title=Flash_card_challenge&oldid=17165" title="Permanent link to this revision of the page">Permanent link</a></li>
</ul>
</div>
</div>
</div><!-- end of the left (by default at least) column -->
<div class="visualClear"></div>
<div id="footer">
<div id="f-copyrightico">
<a href="http://creativecommons.org/licenses/by/3.0/"><img src="Flash%20card%20challenge%20-%20OpenHatch%20wiki_files/88x31.png" alt="Attribution 3.0 Unported" width="88" height="31"></a>
</div>
<div id="f-poweredbyico">
<a href="http://www.mediawiki.org/"><img src="Flash%20card%20challenge%20-%20OpenHatch%20wiki_files/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" width="88" height="31"></a>
</div>
<ul id="f-list">
<li id="lastmod"> This page was last modified on 25 November 2013, at 15:38.</li>
<li id="viewcount">This page has been accessed 5,951 times.</li>
<li id="copyright">Content is available under <a class="external" href="http://creativecommons.org/licenses/by/3.0/">Attribution 3.0 Unported</a>.</li>
<li id="privacy"><a href="http://wiki.openhatch.org/OpenHatch_wiki:Privacy_policy" title="OpenHatch wiki:Privacy policy">Privacy policy</a></li>
<li id="about"><a href="http://wiki.openhatch.org/OpenHatch_wiki:About" title="OpenHatch wiki:About">About OpenHatch wiki</a></li>
<li id="disclaimer"><a href="http://wiki.openhatch.org/OpenHatch_wiki:General_disclaimer" title="OpenHatch wiki:General disclaimer">Disclaimers</a></li>
</ul>
</div>
</div>
<script>if(window.mw){
mw.loader.state({"site":"loading","user":"missing","user.groups":"ready"});
}</script>
<script>if(window.mw){
mw.loader.load(["mediawiki.user","mediawiki.page.ready"], null, true);
}</script><script type="text/javascript" src="Flash%20card%20challenge%20-%20OpenHatch%20wiki_files/load_003.php"></script>
<script src="Flash%20card%20challenge%20-%20OpenHatch%20wiki_files/load_005.php"></script>
<!-- Served in 0.042 secs. --></body></html>
"##;