**************************
Converting wiki: 
To Markdown    : ./NewDocumentEditor.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Tracks progress of the new document editor project.
Consider moving it to an introductory paragraph.

Warning (line 3 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="2"/>
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

rm 'NewDocumentEditor.wiki'
[master 8f4673d] Converted NewDocumentEditor.md
 2 files changed, 85 insertions(+), 87 deletions(-)
 create mode 100644 NewDocumentEditor.md
 delete mode 100644 NewDocumentEditor.wiki
done

**************************
Converting wiki: 
To Markdown    : ./ContributionReviews.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Guidelines for contributing to Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Complete,Phase-Guidelines,Importance-Useful
Consider expressing the same information in a different manner.

Warning (line 16 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 22 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 23 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 26 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 28 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 29 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 32 of input file):
A comment was used in the wiki file, but GitHub does not currently support Markdown or HTML comments. As a work-around, the comment will be placed in a bogus and empty <a> tag.

Warning (line 44 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 45 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 47 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 49 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 56 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 57 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 66 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 67 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 77 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 81 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 88 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 95 of input file):
Code markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 101 of input file):
Code markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 111 of input file):
Italic markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 117 of input file):
A comment was used in the wiki file, but GitHub does not currently support Markdown or HTML comments. As a work-around, the comment will be placed in a bogus and empty <a> tag.

Warning (line 144 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 148 of input file):
A comment was used in the wiki file, but GitHub does not currently support Markdown or HTML comments. As a work-around, the comment will be placed in a bogus and empty <a> tag.

Warning (line 183 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 184 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 187 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 189 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 201 of input file):
Code markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 207 of input file):
Code markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 216 of input file):
Code markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 240 of input file):
Italic markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 241 of input file):
Italic markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 242 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 243 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

rm 'ContributionReviews.wiki'
[master e4857c3] Converted ContributionReviews.md
 2 files changed, 235 insertions(+), 243 deletions(-)
 create mode 100644 ContributionReviews.md
 delete mode 100644 ContributionReviews.wiki
done

**************************
Converting wiki: 
To Markdown    : ./GHOPImplementationDesign.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Designs for implementing Task-based work flow(GHOP)
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Phase-Design,Contents-Draft,Importance-Details
Consider expressing the same information in a different manner.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

Warning (line 147 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 148 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 149 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 150 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 151 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 152 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 153 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 154 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 155 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 156 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 157 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 158 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 159 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 293 of input file):
Missing space after list symbol: 1, '.' was removed instead.

Warning (line 318 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 319 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 320 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 362 of input file):
Unknown plugin was given, outputting as plain text:
	<Pawel>

Warning (line 362 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Pawel>

Warning (line 366 of input file):
Unknown plugin was given, outputting as plain text:
	<Lennard>

Warning (line 366 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Lennard>

rm 'GHOPImplementationDesign.wiki'
[master b9b6f7e] Converted GHOPImplementationDesign.md
 2 files changed, 392 insertions(+), 370 deletions(-)
 create mode 100644 GHOPImplementationDesign.md
 delete mode 100644 GHOPImplementationDesign.wiki
done

**************************
Converting wiki: 
To Markdown    : ./MelangeRoadmap2009.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	This page contains project roadmap for year 2009
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Deprecated,Importance-Useful
Consider expressing the same information in a different manner.

Warning (line 93 of input file):
Unknown plugin was given, outputting as plain text:
	<LH>

Warning (line 100 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</LH>

Warning (line 118 of input file):
Unknown plugin was given, outputting as plain text:
	<lh>

Warning (line 125 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</lh>

Warning (line 136 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 147 of input file):
Issue 44 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 44' to 'Issue 44 (on Google Code)'.

Warning (line 149 of input file):
Unknown plugin was given, outputting as plain text:
	<lh>

Warning (line 156 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</lh>

Warning (line 198 of input file):
Unknown plugin was given, outputting as plain text:
	<lh>

Warning (line 202 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</lh>

Warning (line 221 of input file):
Unknown plugin was given, outputting as plain text:
	<lh>

Warning (line 228 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</lh>

Warning (line 250 of input file):
Unknown plugin was given, outputting as plain text:
	<lh>

Warning (line 252 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</lh>

Warning (line 262 of input file):
Unknown plugin was given, outputting as plain text:
	<lh>

Warning (line 264 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</lh>

Warning (line 292 of input file):
Unknown plugin was given, outputting as plain text:
	<lh>

Warning (line 294 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</lh>

Warning (line 316 of input file):
Unknown plugin was given, outputting as plain text:
	<lh>

Warning (line 318 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</lh>

Warning (line 342 of input file):
Unknown plugin was given, outputting as plain text:
	<lh>

Warning (line 346 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</lh>

rm 'MelangeRoadmap2009.wiki'
[master 2f5f2b6] Converted MelangeRoadmap2009.md
 1 file changed, 283 insertions(+), 206 deletions(-)
 rename MelangeRoadmap2009.wiki => MelangeRoadmap2009.md (64%)
done

**************************
Converting wiki: 
To Markdown    : ./UserRoles.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Various user roles in Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Phase-Requirements,Contents-Draft,Importance-Details
Consider expressing the same information in a different manner.

rm 'UserRoles.wiki'
[master e61362d] Converted UserRoles.md
 2 files changed, 68 insertions(+), 69 deletions(-)
 create mode 100644 UserRoles.md
 delete mode 100644 UserRoles.wiki
done

**************************
Converting wiki: 
To Markdown    : ./AccessControl.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Protecting against unauthorized use.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Overview,Phase-Requirements,Contents-Draft
Consider expressing the same information in a different manner.

Warning (line 20 of input file):
Issue 385 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 385' to 'Issue 385 (on Google Code)'.

rm 'AccessControl.wiki'
[master 606b291] Converted AccessControl.md
 1 file changed, 11 insertions(+), 14 deletions(-)
 rename AccessControl.wiki => AccessControl.md (71%)
done

**************************
Converting wiki: 
To Markdown    : ./PossibleMentors.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Possible Mentors for GSoC 2011
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful
Consider expressing the same information in a different manner.

rm 'PossibleMentors.wiki'
[master 1f8236f] Converted PossibleMentors.md
 1 file changed, 3 insertions(+), 6 deletions(-)
 rename PossibleMentors.wiki => PossibleMentors.md (64%)
done

**************************
Converting wiki: 
To Markdown    : ./WorkInProgress.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Melange is a work in progress, done in the open!
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Featured,Importance-Featured,Contents-Complete
Consider expressing the same information in a different manner.

rm 'WorkInProgress.wiki'
[master e3985f1] Converted WorkInProgress.md
 1 file changed, 6 insertions(+), 9 deletions(-)
 rename WorkInProgress.wiki => WorkInProgress.md (51%)
done

**************************
Converting wiki: 
To Markdown    : ./SocParams.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	List of views helper parameters and their role in the system.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Contents-Draft
Consider expressing the same information in a different manner.

rm 'SocParams.wiki'
[master 2634dab] Converted SocParams.md
 2 files changed, 118 insertions(+), 121 deletions(-)
 create mode 100644 SocParams.md
 delete mode 100644 SocParams.wiki
done

**************************
Converting wiki: 
To Markdown    : ./MelangeIRCMeeting20080909.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Logs of our meeting on IRC on 2008-09-09
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Details,Contents-Complete
Consider expressing the same information in a different manner.

rm 'MelangeIRCMeeting20080909.wiki'
[master 543e4f8] Converted MelangeIRCMeeting20080909.md
 1 file changed, 3 insertions(+), 4 deletions(-)
 rename MelangeIRCMeeting20080909.wiki => MelangeIRCMeeting20080909.md (99%)
done

**************************
Converting wiki: 
To Markdown    : ./SourceCode.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	The Melange Source Code
Consider moving it to an introductory paragraph.

rm 'SourceCode.wiki'
[master f4e11fe] Converted SourceCode.md
 1 file changed, 3 insertions(+), 5 deletions(-)
 rename SourceCode.wiki => SourceCode.md (75%)
done

**************************
Converting wiki: 
To Markdown    : ./MelangeDemos.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	where to find and how to use demos of work in progress
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Phase-Implementation,Contents-Draft
Consider expressing the same information in a different manner.

rm 'MelangeDemos.wiki'
[master a45f9a6] Converted MelangeDemos.md
 1 file changed, 79 insertions(+), 66 deletions(-)
 rename MelangeDemos.wiki => MelangeDemos.md (65%)
done

**************************
Converting wiki: 
To Markdown    : ./BrowserRequirements.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Browser compatibility; Javascript enabled.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Phase-QA,Contents-Draft
Consider expressing the same information in a different manner.

rm 'BrowserRequirements.wiki'
[master 0880c29] Converted BrowserRequirements.md
 1 file changed, 4 insertions(+), 7 deletions(-)
 rename BrowserRequirements.wiki => BrowserRequirements.md (64%)
done

**************************
Converting wiki: 
To Markdown    : ./VendorBranches.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Maintaining third-party code using /vendor
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Details,Phase-Implementation,Contents-Draft
Consider expressing the same information in a different manner.

rm 'VendorBranches.wiki'
[master 28ab5d7] Converted VendorBranches.md
 1 file changed, 15 insertions(+), 18 deletions(-)
 rename VendorBranches.wiki => VendorBranches.md (55%)
done

**************************
Converting wiki: 
To Markdown    : ./OpenSocial.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	One-sentence summary of this page.
Consider moving it to an introductory paragraph.

rm 'OpenSocial.wiki'
[master 78cf826] Converted OpenSocial.md
 1 file changed, 1 insertion(+), 3 deletions(-)
 rename OpenSocial.wiki => OpenSocial.md (85%)
done

**************************
Converting wiki: 
To Markdown    : ./MelangeModuleArchitecture.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Melange Module Architecture
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Phase-Implementation,Importance-Useful,Contents-Draft
Consider expressing the same information in a different manner.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="2" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

Warning (line 47 of input file):
Unknown plugin was given, outputting as plain text:
	<Pawel>

Warning (line 47 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Pawel>

Warning (line 48 of input file):
Unknown plugin was given, outputting as plain text:
	<Sverre>

Warning (line 49 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Sverre>

Warning (line 62 of input file):
Unknown plugin was given, outputting as plain text:
	<Pawel>

Warning (line 62 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Pawel>

Warning (line 64 of input file):
Unknown plugin was given, outputting as plain text:
	<Sverre>

Warning (line 64 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Sverre>

rm 'MelangeModuleArchitecture.wiki'
[master 65ed823] Converted MelangeModuleArchitecture.md
 1 file changed, 157 insertions(+), 128 deletions(-)
 rename MelangeModuleArchitecture.wiki => MelangeModuleArchitecture.md (59%)
done

**************************
Converting wiki: 
To Markdown    : ./TestingGuidelines.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Guidelines for testing Melange and the SoC framework
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Draft,Phase-Guidelines,Importance-Overview
Consider expressing the same information in a different manner.

rm 'TestingGuidelines.wiki'
[master cab5325] Converted TestingGuidelines.md
 1 file changed, 52 insertions(+), 53 deletions(-)
 rename TestingGuidelines.wiki => TestingGuidelines.md (62%)
done

**************************
Converting wiki: 
To Markdown    : ./StatisticsModule.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	for planning the work on statistics in Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Details,Phase-Design,Contents-Draft
Consider expressing the same information in a different manner.

Warning (line 6 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

Warning (line 56 of input file):
Unknown plugin was given, outputting as plain text:
	<Pawel>

Warning (line 58 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Pawel>

Warning (line 510 of input file):
Unknown plugin was given, outputting as plain text:
	<Pawel>

Warning (line 510 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Pawel>

rm 'StatisticsModule.wiki'
[master dbb16d9] Converted StatisticsModule.md
 2 files changed, 539 insertions(+), 524 deletions(-)
 create mode 100644 StatisticsModule.md
 delete mode 100644 StatisticsModule.wiki
done

**************************
Converting wiki: 
To Markdown    : ./JavascriptAndCSS.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Javascript and CSS in Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels 2013DeveloperDoc
Consider expressing the same information in a different manner.

rm 'JavascriptAndCSS.wiki'
[master 168396f] Converted JavascriptAndCSS.md
 1 file changed, 22 insertions(+), 25 deletions(-)
 rename JavascriptAndCSS.wiki => JavascriptAndCSS.md (53%)
done

**************************
Converting wiki: 
To Markdown    : ./GSoC2009Ideas.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Ideas List for GSoC 2009
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Complete,Importance-Deprecated
Consider expressing the same information in a different manner.

rm 'GSoC2009Ideas.wiki'
[master 943bf07] Converted GSoC2009Ideas.md
 1 file changed, 67 insertions(+), 54 deletions(-)
 rename GSoC2009Ideas.wiki => GSoC2009Ideas.md (78%)
done

**************************
Converting wiki: 
To Markdown    : ./AcceptanceTests.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Running the Acceptance Tests (as of 22 October 2013)
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Draft
Consider expressing the same information in a different manner.

rm 'AcceptanceTests.wiki'
[master b0a0506] Converted AcceptanceTests.md
 2 files changed, 14 insertions(+), 17 deletions(-)
 create mode 100644 AcceptanceTests.md
 delete mode 100644 AcceptanceTests.wiki
done

**************************
Converting wiki: 
To Markdown    : ./WordsOfWisdom.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Some awesome statements and thoughts.
Consider moving it to an introductory paragraph.

Warning (line 34 of input file):
Issue 1921 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 1921' to 'issue 1921 (on Google Code)'.

rm 'WordsOfWisdom.wiki'
[master 764fc53] Converted WordsOfWisdom.md
 2 files changed, 112 insertions(+), 81 deletions(-)
 create mode 100644 WordsOfWisdom.md
 delete mode 100644 WordsOfWisdom.wiki
done

**************************
Converting wiki: 
To Markdown    : ./LifeOfaGhopTask.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Life of a GHOP Task
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Details,Phase-Design,Contents-Draft
Consider expressing the same information in a different manner.

rm 'LifeOfaGhopTask.wiki'
[master 57d6797] Converted LifeOfaGhopTask.md
 2 files changed, 35 insertions(+), 40 deletions(-)
 create mode 100644 LifeOfaGhopTask.md
 delete mode 100644 LifeOfaGhopTask.wiki
done

**************************
Converting wiki: 
To Markdown    : ./JavascriptRefactoring.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Proposal about Javascript refactoring
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Deprecated,Phase-Implementation,Contents-Draft
Consider expressing the same information in a different manner.

Warning (line 6 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="2" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

rm 'JavascriptRefactoring.wiki'
[master a558521] Converted JavascriptRefactoring.md
 2 files changed, 163 insertions(+), 166 deletions(-)
 create mode 100644 JavascriptRefactoring.md
 delete mode 100644 JavascriptRefactoring.wiki
done

**************************
Converting wiki: 
To Markdown    : ./MelangeIrcLogs.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Past discussions on IRC.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Contents-Draft
Consider expressing the same information in a different manner.

rm 'MelangeIrcLogs.wiki'
[master 7bd6115] Converted MelangeIrcLogs.md
 2 files changed, 11 insertions(+), 14 deletions(-)
 create mode 100644 MelangeIrcLogs.md
 delete mode 100644 MelangeIrcLogs.wiki
done

**************************
Converting wiki: 
To Markdown    : ./Modules.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Melange Modules
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels 2013DeveloperDoc
Consider expressing the same information in a different manner.

Warning (line 14 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 15 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 17 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 20 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 22 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 26 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 27 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 29 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 30 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 36 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 38 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 40 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 42 of input file):
Missing space after list symbol: *, '*' was removed instead.

rm 'Modules.wiki'
[master fa4f355] Converted Modules.md
 2 files changed, 51 insertions(+), 54 deletions(-)
 create mode 100644 Modules.md
 delete mode 100644 Modules.wiki
done

**************************
Converting wiki: 
To Markdown    : ./Docker.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Melange and Docker
Consider moving it to an introductory paragraph.

rm 'Docker.wiki'
[master 662114c] Converted Docker.md
 2 files changed, 12 insertions(+), 14 deletions(-)
 create mode 100644 Docker.md
 delete mode 100644 Docker.wiki
done

**************************
Converting wiki: 
To Markdown    : ./GSoC2012Ideas.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Ideas List for GSoC 2012
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Deprecated
Consider expressing the same information in a different manner.

rm 'GSoC2012Ideas.wiki'
[master 09000a0] Converted GSoC2012Ideas.md
 1 file changed, 22 insertions(+), 25 deletions(-)
 rename GSoC2012Ideas.wiki => GSoC2012Ideas.md (71%)
done

**************************
Converting wiki: 
To Markdown    : ./ContributingCode.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Guidelines for contributing code to Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Complete,Phase-Guidelines,Importance-Useful
Consider expressing the same information in a different manner.

Warning (line 54 of input file):
Issue 15 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 15' to 'issue 15 (on Google Code)'.

Warning (line 54 of input file):
Issue 15 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 15' to 'issue 15 (on Google Code)'.

rm 'ContributingCode.wiki'
[master 679b0be] Converted ContributingCode.md
 1 file changed, 31 insertions(+), 32 deletions(-)
 rename ContributingCode.wiki => ContributingCode.md (66%)
done

**************************
Converting wiki: 
To Markdown    : ./GettingStarted.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	How to get started with Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Featured,Phase-Guidelines,Contents-Draft,Importance-Featured
Consider expressing the same information in a different manner.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="1" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

rm 'GettingStarted.wiki'
[master 8e84afb] Converted GettingStarted.md
 1 file changed, 101 insertions(+), 104 deletions(-)
 rename GettingStarted.wiki => GettingStarted.md (58%)
done

**************************
Converting wiki: 
To Markdown    : ./GHOPUserManual.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Starter Manual for using GHOP module.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Deprecated,Phase-Support,Contents-Draft
Consider expressing the same information in a different manner.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

rm 'GHOPUserManual.wiki'
[master 0233b79] Converted GHOPUserManual.md
 1 file changed, 23 insertions(+), 26 deletions(-)
 rename GHOPUserManual.wiki => GHOPUserManual.md (73%)
done

**************************
Converting wiki: 
To Markdown    : ./Gerrit.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Gerrit and Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Featured,Importance-Featured
Consider expressing the same information in a different manner.

rm 'Gerrit.wiki'
[master a1e4aca] Converted Gerrit.md
 1 file changed, 37 insertions(+), 40 deletions(-)
 rename Gerrit.wiki => Gerrit.md (63%)
done

**************************
Converting wiki: 
To Markdown    : ./SetUpPylint.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	How to use and set up pylint under eclipse for Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Phase-QA,Contents-Review
Consider expressing the same information in a different manner.

rm 'SetUpPylint.wiki'
[master 95f2385] Converted SetUpPylint.md
 1 file changed, 28 insertions(+), 31 deletions(-)
 rename SetUpPylint.wiki => SetUpPylint.md (59%)
done

**************************
Converting wiki: 
To Markdown    : ./GCIUserManual.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Starter Manual for using GCI module.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Phase-QA,Contents-Draft
Consider expressing the same information in a different manner.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

rm 'GCIUserManual.wiki'
[master f77aec8] Converted GCIUserManual.md
 2 files changed, 158 insertions(+), 161 deletions(-)
 create mode 100644 GCIUserManual.md
 delete mode 100644 GCIUserManual.wiki
done

**************************
Converting wiki: 
To Markdown    : ./SubscriptionUserGuide.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Subscription User Guide
Consider moving it to an introductory paragraph.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

Warning (line 43 of input file):
GFM does not support embedding the YouTube player directly. Instead an image link to the video is being used, maintaining sizing options.

rm 'SubscriptionUserGuide.wiki'
[master a23f71c] Converted SubscriptionUserGuide.md
 1 file changed, 10 insertions(+), 14 deletions(-)
 rename SubscriptionUserGuide.wiki => SubscriptionUserGuide.md (65%)
done

**************************
Converting wiki: 
To Markdown    : ./LifeOfARequest.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	One-sentence summary of this page.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels 2013DeveloperDoc
Consider expressing the same information in a different manner.

Warning (line 44 of input file):
Missing space after list symbol: 1, '.' was removed instead.

rm 'LifeOfARequest.wiki'
[master e87dd3f] Converted LifeOfARequest.md
 1 file changed, 18 insertions(+), 21 deletions(-)
 rename LifeOfARequest.wiki => LifeOfARequest.md (56%)
done

**************************
Converting wiki: 
To Markdown    : ./SocialFeaturesMelangeGSoC2010.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Project Documentation for Social Features for Melange(GSoC2010)
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Phase-Design,Contents-Draft,Importance-Details
Consider expressing the same information in a different manner.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

Warning (line 724 of input file):
Issue 890 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 890' to 'issue 890 (on Google Code)'.

Warning (line 728 of input file):
Issue 890 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 890' to 'issue 890 (on Google Code)'.

rm 'SocialFeaturesMelangeGSoC2010.wiki'
[master 7310d93] Converted SocialFeaturesMelangeGSoC2010.md
 2 files changed, 776 insertions(+), 729 deletions(-)
 create mode 100644 SocialFeaturesMelangeGSoC2010.md
 delete mode 100644 SocialFeaturesMelangeGSoC2010.wiki
done

**************************
Converting wiki: 
To Markdown    : ./MelangePlan0110.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Plan for Q1-Q2 '10
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Phase-Implementation,Contents-Complete
Consider expressing the same information in a different manner.

Warning (line 12 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 24 of input file):
Issue 445 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 445' to 'Issue 445 (on Google Code)'.

rm 'MelangePlan0110.wiki'
[master 000b2f7] Converted MelangePlan0110.md
 2 files changed, 27 insertions(+), 28 deletions(-)
 create mode 100644 MelangePlan0110.md
 delete mode 100644 MelangePlan0110.wiki
done

**************************
Converting wiki: 
To Markdown    : ./ModelViewController.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Model-View-Controller pattern
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Phase-Design,Deprecated,Importance-Overview
Consider expressing the same information in a different manner.

rm 'ModelViewController.wiki'
[master 5e481f8] Converted ModelViewController.md
 1 file changed, 34 insertions(+), 35 deletions(-)
 rename ModelViewController.wiki => ModelViewController.md (55%)
done

**************************
Converting wiki: 
To Markdown    : ./TaskQueueAPI.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Describes usage tips for Task Queue API in Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Draft
Consider expressing the same information in a different manner.

Warning (line 19 of input file):
Unknown plugin was given, outputting as plain text:
	<Pawel>

Warning (line 20 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Pawel>

Warning (line 21 of input file):
Unknown plugin was given, outputting as plain text:
	<Daniel>

Warning (line 21 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Daniel>

Warning (line 29 of input file):
Unknown plugin was given, outputting as plain text:
	<Pawel>

Warning (line 30 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Pawel>

Warning (line 31 of input file):
Unknown plugin was given, outputting as plain text:
	<Daniel>

Warning (line 31 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Daniel>

Warning (line 39 of input file):
Unknown plugin was given, outputting as plain text:
	<Pawel>

Warning (line 39 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Pawel>

Warning (line 40 of input file):
Unknown plugin was given, outputting as plain text:
	<Daniel>

Warning (line 40 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Daniel>

Warning (line 57 of input file):
Unknown plugin was given, outputting as plain text:
	<Pawel>

Warning (line 57 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Pawel>

Warning (line 58 of input file):
Unknown plugin was given, outputting as plain text:
	<Daniel>

Warning (line 58 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Daniel>

Warning (line 99 of input file):
Unknown plugin was given, outputting as plain text:
	<Pawel>

Warning (line 99 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Pawel>

Warning (line 100 of input file):
Unknown plugin was given, outputting as plain text:
	<Daniel>

Warning (line 104 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Daniel>

Warning (line 106 of input file):
Unknown plugin was given, outputting as plain text:
	<Pawel>

Warning (line 108 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Pawel>

Warning (line 126 of input file):
Unknown plugin was given, outputting as plain text:
	<Pawel>

Warning (line 126 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Pawel>

Warning (line 127 of input file):
Unknown plugin was given, outputting as plain text:
	<Daniel>

Warning (line 127 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Daniel>

Warning (line 162 of input file):
Unknown plugin was given, outputting as plain text:
	<Pawel>

Warning (line 162 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Pawel>

Warning (line 163 of input file):
Unknown plugin was given, outputting as plain text:
	<Daniel>

Warning (line 164 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Daniel>

Warning (line 188 of input file):
Unknown plugin was given, outputting as plain text:
	<Pawel>

Warning (line 188 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Pawel>

Warning (line 192 of input file):
Unknown plugin was given, outputting as plain text:
	<Pawel>

Warning (line 192 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Pawel>

Warning (line 193 of input file):
Unknown plugin was given, outputting as plain text:
	<Daniel>

Warning (line 193 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</Daniel>

rm 'TaskQueueAPI.wiki'
[master 3a6a5c6] Converted TaskQueueAPI.md
 2 files changed, 341 insertions(+), 200 deletions(-)
 create mode 100644 TaskQueueAPI.md
 delete mode 100644 TaskQueueAPI.wiki
done

**************************
Converting wiki: 
To Markdown    : ./UserStoryGroups.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Common Features in User Stories
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Phase-Requirements
Consider expressing the same information in a different manner.

Warning (line 16 of input file):
Issue 8 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 8' to 'Issue 8 (on Google Code)'.

Warning (line 17 of input file):
Issue 9 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 9' to 'Issue 9 (on Google Code)'.

Warning (line 18 of input file):
Issue 28 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 28' to 'Issue 28 (on Google Code)'.

Warning (line 19 of input file):
Issue 35 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 35' to 'Issue 35 (on Google Code)'.

Warning (line 20 of input file):
Issue 36 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 36' to 'Issue 36 (on Google Code)'.

Warning (line 21 of input file):
Issue 40 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 40' to 'Issue 40 (on Google Code)'.

Warning (line 22 of input file):
Issue 41 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 41' to 'Issue 41 (on Google Code)'.

Warning (line 23 of input file):
Issue 43 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 43' to 'Issue 43 (on Google Code)'.

Warning (line 24 of input file):
Issue 54 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 54' to 'Issue 54 (on Google Code)'.

Warning (line 25 of input file):
Issue 55 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 55' to 'Issue 55 (on Google Code)'.

Warning (line 26 of input file):
Issue 56 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 56' to 'Issue 56 (on Google Code)'.

Warning (line 27 of input file):
Issue 20 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 20' to 'Issue 20 (on Google Code)'.

Warning (line 28 of input file):
Issue 19 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 19' to 'Issue 19 (on Google Code)'.

Warning (line 41 of input file):
Issue 21 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 21' to 'Issue 21 (on Google Code)'.

Warning (line 42 of input file):
Issue 22 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 22' to 'Issue 22 (on Google Code)'.

Warning (line 43 of input file):
Issue 23 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 23' to 'Issue 23 (on Google Code)'.

Warning (line 44 of input file):
Issue 26 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 26' to 'Issue 26 (on Google Code)'.

Warning (line 45 of input file):
Issue 29 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 29' to 'Issue 29 (on Google Code)'.

Warning (line 46 of input file):
Issue 57 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 57' to 'Issue 57 (on Google Code)'.

Warning (line 47 of input file):
Issue 24 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 24' to 'Issue 24 (on Google Code)'.

Warning (line 48 of input file):
Issue 30 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 30' to 'Issue 30 (on Google Code)'.

Warning (line 49 of input file):
Issue 42 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 42' to 'Issue 42 (on Google Code)'.

Warning (line 57 of input file):
Issue 1 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 1' to 'Issue 1 (on Google Code)'.

Warning (line 58 of input file):
Issue 4 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 4' to 'Issue 4 (on Google Code)'.

Warning (line 59 of input file):
Issue 5 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 5' to 'Issue 5 (on Google Code)'.

Warning (line 60 of input file):
Issue 6 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 6' to 'Issue 6 (on Google Code)'.

Warning (line 61 of input file):
Issue 7 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 7' to 'Issue 7 (on Google Code)'.

Warning (line 62 of input file):
Issue 15 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 15' to 'Issue 15 (on Google Code)'.

Warning (line 63 of input file):
Issue 17 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 17' to 'Issue 17 (on Google Code)'.

Warning (line 64 of input file):
Issue 31 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 31' to 'Issue 31 (on Google Code)'.

Warning (line 65 of input file):
Issue 32 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 32' to 'Issue 32 (on Google Code)'.

Warning (line 66 of input file):
Issue 33 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 33' to 'Issue 33 (on Google Code)'.

Warning (line 67 of input file):
Issue 37 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 37' to 'Issue 37 (on Google Code)'.

Warning (line 76 of input file):
Issue 13 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 13' to 'Issue 13 (on Google Code)'.

Warning (line 77 of input file):
Issue 16 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 16' to 'Issue 16 (on Google Code)'.

Warning (line 78 of input file):
Issue 25 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 25' to 'Issue 25 (on Google Code)'.

Warning (line 79 of input file):
Issue 34 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 34' to 'Issue 34 (on Google Code)'.

Warning (line 80 of input file):
Issue 52 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 52' to 'Issue 52 (on Google Code)'.

Warning (line 88 of input file):
Issue 38 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 38' to 'Issue 38 (on Google Code)'.

Warning (line 89 of input file):
Issue 39 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 39' to 'Issue 39 (on Google Code)'.

rm 'UserStoryGroups.wiki'
[master 571bbbe] Converted UserStoryGroups.md
 2 files changed, 91 insertions(+), 89 deletions(-)
 create mode 100644 UserStoryGroups.md
 delete mode 100644 UserStoryGroups.wiki
done

**************************
Converting wiki: 
To Markdown    : ./HowToSetupBuildbotForMelange.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	This page documents how to setup a buildbot for Melange.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Review,Importance-Useful,Phase-Deploy
Consider expressing the same information in a different manner.

rm 'HowToSetupBuildbotForMelange.wiki'
[master a7a4aab] Converted HowToSetupBuildbotForMelange.md
 1 file changed, 15 insertions(+), 18 deletions(-)
 rename HowToSetupBuildbotForMelange.wiki => HowToSetupBuildbotForMelange.md (91%)
done

**************************
Converting wiki: 
To Markdown    : ./GSoC2011GUIOverhaul.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Tracks progress for the GSoC 2011 project, GUI Overhaul (Fronted and Administration Interfaces)
Consider moving it to an introductory paragraph.

Warning (line 3 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

Warning (line 27 of input file):
The following parameter was given for the 'table' tag, but will not be present in the outputted HTML:
	'style': 'width:auto;'

Warning (line 27 of input file):
The following parameter was given for the 'td' tag, but will not be present in the outputted HTML:
	'style': 'font-family:arial,sans-serif; font-size:11px; text-align:right'

Warning (line 79 of input file):
The following parameter was given for the 'table' tag, but will not be present in the outputted HTML:
	'style': 'width:auto;'

Warning (line 79 of input file):
The following parameter was given for the 'td' tag, but will not be present in the outputted HTML:
	'style': 'font-family:arial,sans-serif; font-size:11px; text-align:right'

Warning (line 82 of input file):
The following parameter was given for the 'table' tag, but will not be present in the outputted HTML:
	'style': 'width:auto;'

Warning (line 82 of input file):
The following parameter was given for the 'td' tag, but will not be present in the outputted HTML:
	'style': 'font-family:arial,sans-serif; font-size:11px; text-align:right'

rm 'GSoC2011GUIOverhaul.wiki'
[master 67f03d9] Converted GSoC2011GUIOverhaul.md
 2 files changed, 203 insertions(+), 186 deletions(-)
 create mode 100644 GSoC2011GUIOverhaul.md
 delete mode 100644 GSoC2011GUIOverhaul.wiki
done

**************************
Converting wiki: 
To Markdown    : ./StatisticModuleObjectives.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Main objectives of the new statistic module
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Draft
Consider expressing the same information in a different manner.

rm 'StatisticModuleObjectives.wiki'
[master b913d14] Converted StatisticModuleObjectives.md
 1 file changed, 1 insertion(+), 4 deletions(-)
 rename StatisticModuleObjectives.wiki => StatisticModuleObjectives.md (87%)
done

**************************
Converting wiki: 
To Markdown    : ./GHOPTODO.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	This page lists all the TODOs for running GHOP program.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Overview,Phase-Requirements,Contents-Update
Consider expressing the same information in a different manner.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

Warning (line 35 of input file):
Issue 450 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 450' to 'Issue 450 (on Google Code)'.

rm 'GHOPTODO.wiki'
[master 0d447a3] Converted GHOPTODO.md
 1 file changed, 18 insertions(+), 21 deletions(-)
 rename GHOPTODO.wiki => GHOPTODO.md (64%)
done

**************************
Converting wiki: 
To Markdown    : ./UserPreferencesPage.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	A discussion page for what would be useful preferences for users to be able to set, and how to implement same.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Details,Phase-Design,Contents-Draft
Consider expressing the same information in a different manner.

Warning (line 21 of input file):
Issue 561 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 561' to 'Issue 561 (on Google Code)'.

Warning (line 33 of input file):
Issue 560 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 560' to 'Issue 560 (on Google Code)'.

Warning (line 35 of input file):
Issue 560 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 560' to 'Issue 560 (on Google Code)'.

Warning (line 35 of input file):
Issue 560 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 560' to 'Issue 560 (on Google Code)'.

rm 'UserPreferencesPage.wiki'
[master 954b1aa] Converted UserPreferencesPage.md
 2 files changed, 36 insertions(+), 39 deletions(-)
 create mode 100644 UserPreferencesPage.md
 delete mode 100644 UserPreferencesPage.wiki
done

**************************
Converting wiki: 
To Markdown    : ./Terminology.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	An intro to some of the vocab of Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Contents-Draft
Consider expressing the same information in a different manner.

rm 'Terminology.wiki'
[master 96a585e] Converted Terminology.md
 2 files changed, 19 insertions(+), 22 deletions(-)
 create mode 100644 Terminology.md
 delete mode 100644 Terminology.wiki
done

**************************
Converting wiki: 
To Markdown    : ./2013DeveloperDoc.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Developer Documentation (2013)
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels 2013DeveloperDoc
Consider expressing the same information in a different manner.

rm '2013DeveloperDoc.wiki'
[master 1ec1fb9] Converted 2013DeveloperDoc.md
 2 files changed, 11 insertions(+), 14 deletions(-)
 create mode 100644 2013DeveloperDoc.md
 delete mode 100644 2013DeveloperDoc.wiki
done

**************************
Converting wiki: 
To Markdown    : ./Maintainability.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	One-sentence summary of this page.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels 2013DeveloperDoc
Consider expressing the same information in a different manner.

rm 'Maintainability.wiki'
[master 9b35e1c] Converted Maintainability.md
 2 files changed, 11 insertions(+), 14 deletions(-)
 create mode 100644 Maintainability.md
 delete mode 100644 Maintainability.wiki
done

**************************
Converting wiki: 
To Markdown    : ./MailingListsGuidelines.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Guidelines for Melange mailing lists
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Complete,Phase-Guidelines,Importance-Useful
Consider expressing the same information in a different manner.

rm 'MailingListsGuidelines.wiki'
[master 1e91d62] Converted MailingListsGuidelines.md
 1 file changed, 41 insertions(+), 42 deletions(-)
 rename MailingListsGuidelines.wiki => MailingListsGuidelines.md (59%)
done

**************************
Converting wiki: 
To Markdown    : ./InformationArchitecture.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	One-sentence summary of this page.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels 2013DeveloperDoc
Consider expressing the same information in a different manner.

rm 'InformationArchitecture.wiki'
[master c4530d3] Converted InformationArchitecture.md
 1 file changed, 8 insertions(+), 11 deletions(-)
 rename InformationArchitecture.wiki => InformationArchitecture.md (90%)
done

**************************
Converting wiki: 
To Markdown    : ./MelangeIntro.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	An introduction to Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Draft,Phase-Guidelines,Importance-Overview
Consider expressing the same information in a different manner.

rm 'MelangeIntro.wiki'
[master a076e24] Converted MelangeIntro.md
 1 file changed, 34 insertions(+), 34 deletions(-)
 rename MelangeIntro.wiki => MelangeIntro.md (63%)
done

**************************
Converting wiki: 
To Markdown    : ./TagsInMelange.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Design/discussion of Tags
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Details,Phase-Design,Contents-Draft
Consider expressing the same information in a different manner.

rm 'TagsInMelange.wiki'
[master 8fef329] Converted TagsInMelange.md
 2 files changed, 112 insertions(+), 115 deletions(-)
 create mode 100644 TagsInMelange.md
 delete mode 100644 TagsInMelange.wiki
done

**************************
Converting wiki: 
To Markdown    : ./Lists.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Details about the Lists protocol
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels 2013DeveloperDoc
Consider expressing the same information in a different manner.

Warning (line 6 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue201' to 'Issue201 (on Google Code)'.

rm 'Lists.wiki'
[master 6b87c67] Converted Lists.md
 2 files changed, 324 insertions(+), 317 deletions(-)
 create mode 100644 Lists.md
 delete mode 100644 Lists.wiki
done

**************************
Converting wiki: 
To Markdown    : ./GSoC2011Ideas.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Ideas List for GSoC 2011
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Deprecated,Contents-Draft
Consider expressing the same information in a different manner.

Warning (line 39 of input file):
Issue 560 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 560' to 'issue 560 (on Google Code)'.

rm 'GSoC2011Ideas.wiki'
[master d29b1e6] Converted GSoC2011Ideas.md
 1 file changed, 60 insertions(+), 49 deletions(-)
 rename GSoC2011Ideas.wiki => GSoC2011Ideas.md (83%)
done

**************************
Converting wiki: 
To Markdown    : ./ChangeLog.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	This page contains Change Logs for Melange.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Featured,Featured
Consider expressing the same information in a different manner.

Warning (line 8 of input file):
Issue 838 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 838' to 'issue 838 (on Google Code)'.

Warning (line 815 of input file):
Issue 697 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 697' to 'issue 697 (on Google Code)'.

Warning (line 993 of input file):
Revision 11 was auto-linked. SVN revision numbers are not sensible in Git; consider updating this link or removing it altogether. Additionally, because no project name was specified the revision could not be linked to the original Google Code source page. The auto-link has been removed and the text has been modified from 'r11' to 'r11 (on Google Code)'.

Warning (line 1078 of input file):
Revision 0548101922 was auto-linked. SVN revision numbers are not sensible in Git; consider updating this link or removing it altogether. Additionally, because no project name was specified the revision could not be linked to the original Google Code source page. The auto-link has been removed and the text has been modified from 'r0548101922' to 'r0548101922 (on Google Code)'.

Warning (line 1186 of input file):
Issue 653 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 653' to 'issue 653 (on Google Code)'.

Warning (line 1497 of input file):
Revision 3012 was auto-linked. SVN revision numbers are not sensible in Git; consider updating this link or removing it altogether. Additionally, because no project name was specified the revision could not be linked to the original Google Code source page. The auto-link has been removed and the text has been modified from 'r3012' to 'r3012 (on Google Code)'.

Warning (line 1509 of input file):
Issue 389 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 389' to 'Issue 389 (on Google Code)'.

Warning (line 1597 of input file):
Revision 2953 was auto-linked. SVN revision numbers are not sensible in Git; consider updating this link or removing it altogether. Additionally, because no project name was specified the revision could not be linked to the original Google Code source page. The auto-link has been removed and the text has been modified from 'r2953' to 'r2953 (on Google Code)'.

Warning (line 1629 of input file):
Revision 2769 was auto-linked. SVN revision numbers are not sensible in Git; consider updating this link or removing it altogether. Additionally, because no project name was specified the revision could not be linked to the original Google Code source page. The auto-link has been removed and the text has been modified from 'r2769' to 'r2769 (on Google Code)'.

Warning (line 1651 of input file):
Revision 2876 was auto-linked. SVN revision numbers are not sensible in Git; consider updating this link or removing it altogether. Additionally, because no project name was specified the revision could not be linked to the original Google Code source page. The auto-link has been removed and the text has been modified from 'r2876' to 'r2876 (on Google Code)'.

Warning (line 1756 of input file):
Revision 2750 was auto-linked. SVN revision numbers are not sensible in Git; consider updating this link or removing it altogether. Additionally, because no project name was specified the revision could not be linked to the original Google Code source page. The auto-link has been removed and the text has been modified from 'r2750' to 'r2750 (on Google Code)'.

Warning (line 1779 of input file):
Issue 381 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 381' to 'Issue 381 (on Google Code)'.

Warning (line 1779 of input file):
Issue 207 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 207' to 'Issue 207 (on Google Code)'.

Warning (line 1827 of input file):
Issue 392 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 392' to 'Issue 392 (on Google Code)'.

rm 'ChangeLog.wiki'
[master a9c6b05] Converted ChangeLog.md
 2 files changed, 1859 insertions(+), 1862 deletions(-)
 create mode 100644 ChangeLog.md
 delete mode 100644 ChangeLog.wiki
done

**************************
Converting wiki: 
To Markdown    : ./MeetingAgendasNotes.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	A collection place for team meeting agendas and resulting notes.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels agendas,meetingnotes,Importance-Useful
Consider expressing the same information in a different manner.

Warning (line 14 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="2" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

Warning (line 108 of input file):
Issue 1239 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 1239' to 'Issue 1239 (on Google Code)'.

Warning (line 209 of input file):
Issue 1244 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 1244' to 'Issue 1244 (on Google Code)'.

Warning (line 379 of input file):
Issue 534 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 534' to 'Issue 534 (on Google Code)'.

Warning (line 398 of input file):
Issue 534 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 534' to 'Issue 534 (on Google Code)'.

Warning (line 447 of input file):
Issue 69 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 69' to 'issue 69 (on Google Code)'.

Warning (line 448 of input file):
Issue 999 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 999' to 'issue 999 (on Google Code)'.

Warning (line 449 of input file):
Issue 1003 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 1003' to 'issue 1003 (on Google Code)'.

Warning (line 450 of input file):
Issue 986 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 986' to 'issue 986 (on Google Code)'.

Warning (line 1098 of input file):
Blockquote markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1098 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1104 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1110 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1111 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1115 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1116 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1118 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1130 of input file):
Blockquote markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1132 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1142 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1147 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1147 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1149 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1152 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1157 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1161 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1167 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1172 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1173 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1175 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1181 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1190 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1191 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1193 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1200 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1212 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1213 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1215 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1220 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1228 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1229 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1231 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1232 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1245 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1247 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1250 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1254 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1258 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1261 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1264 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1267 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1269 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1274 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1275 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1277 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1278 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1288 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1290 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1292 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1293 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1294 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1295 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1300 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1304 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1307 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1310 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1314 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1315 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1317 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1318 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1328 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1328 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1330 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1332 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1337 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1338 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1340 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1341 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1349 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1351 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1352 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1360 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1361 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1363 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1365 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1374 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1375 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1377 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1388 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1389 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1391 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1393 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1399 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1400 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1410 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 201' to 'issue 201 (on Google Code)'.

Warning (line 1416 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1417 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1419 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1422 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1428 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1432 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 201' to 'issue 201 (on Google Code)'.

Warning (line 1438 of input file):
Issue 225 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 225' to 'Issue 225 (on Google Code)'.

Warning (line 1442 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1443 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1445 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1446 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1453 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1454 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1456 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 201' to 'issue 201 (on Google Code)'.

Warning (line 1458 of input file):
Issue 694 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 694' to 'issue 694 (on Google Code)'.

Warning (line 1468 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1473 of input file):
Issue 694 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 694' to 'issue 694 (on Google Code)'.

Warning (line 1480 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1481 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1483 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1485 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1494 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1498 of input file):
Issue 693 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 693' to 'Issue 693 (on Google Code)'.

Warning (line 1500 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1515 of input file):
Issue 692 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 692' to 'Issue 692 (on Google Code)'.

Warning (line 1516 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1520 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1521 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1523 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1524 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1532 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1547 of input file):
Issue 693 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 693' to 'Issue 693 (on Google Code)'.

Warning (line 1554 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1555 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1557 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1558 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1561 of input file):
Issue 690 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 690' to 'Issue 690 (on Google Code)'.

Warning (line 1567 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1568 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 201' to 'issue 201 (on Google Code)'.

Warning (line 1584 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1585 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1587 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1589 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1596 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1630 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1631 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1633 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1637 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1643 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1659 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 201' to 'Issue 201 (on Google Code)'.

Warning (line 1673 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1674 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1676 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1684 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1695 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 201' to 'issue 201 (on Google Code)'.

Warning (line 1696 of input file):
Issue 201 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 201' to 'issue 201 (on Google Code)'.

Warning (line 1715 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1716 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1718 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1728 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1743 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1744 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1746 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1755 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1772 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1773 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1775 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1784 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1809 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1810 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1812 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1820 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1838 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1839 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1841 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1849 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1849 of input file):
Issue 655 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 655' to 'Issue 655 (on Google Code)'.

Warning (line 1857 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1858 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1860 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1869 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1892 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1893 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1895 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1908 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1911 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1916 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1921 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1921 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1927 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1932 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1944 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1949 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1957 of input file):
Issue 653 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 653' to 'Issue 653 (on Google Code)'.

Warning (line 1959 of input file):
Issue 655 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 655' to 'Issue 655 (on Google Code)'.

Warning (line 1964 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1965 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1967 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1979 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1980 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1986 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1987 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1989 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 1999 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2001 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2002 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2005 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2018 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2026 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2030 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2031 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2032 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2035 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2038 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2040 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2051 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2059 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2071 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2072 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2073 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2074 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2076 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2078 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2085 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2131 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2133 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2134 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2135 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2138 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2142 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2142 of input file):
Issue 271 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 271' to 'Issue 271 (on Google Code)'.

Warning (line 2142 of input file):
Issue 630 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 630' to 'Issue 630 (on Google Code)'.

Warning (line 2146 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2149 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2153 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2153 of input file):
Issue 637 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 637' to 'Issue 637 (on Google Code)'.

Warning (line 2156 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2156 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2165 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2165 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2169 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2179 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2179 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2180 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2183 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2184 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2188 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2189 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2194 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2194 of input file):
Italic markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2200 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2214 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2215 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2227 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2230 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2235 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2236 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2240 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2241 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2250 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2269 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2270 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2276 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2277 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2279 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2285 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2291 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2292 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2294 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2298 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2301 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2303 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2305 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2305 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2306 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2307 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2308 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2309 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2310 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2319 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2322 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2328 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2340 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2341 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2346 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2348 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2350 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2350 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2354 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2358 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2359 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2361 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2366 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2368 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2368 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2369 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2371 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2377 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2377 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2378 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2380 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2380 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2383 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2393 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2393 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2395 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2397 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2400 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2401 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2401 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2403 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2405 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2408 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2411 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2412 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2412 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2413 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2414 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2415 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2417 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2419 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2421 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2427 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2437 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2441 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2443 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2449 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2449 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2457 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2459 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2463 of input file):
Numeric list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2464 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2469 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2472 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2472 of input file):
Bold markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2473 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2475 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2476 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2478 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2481 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2485 of input file):
Bulleted list markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

Warning (line 2486 of input file):
Link markup was used within HTML tags. Because GitHub does not support this, the tags have been translated to HTML. Please verify that the formatting is correct.

rm 'MeetingAgendasNotes.wiki'
[master 7e59503] Converted MeetingAgendasNotes.md
 2 files changed, 2477 insertions(+), 2486 deletions(-)
 create mode 100644 MeetingAgendasNotes.md
 delete mode 100644 MeetingAgendasNotes.wiki
done

**************************
Converting wiki: 
To Markdown    : ./MelangeURLs.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Url scheme in melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Skeleton
Consider expressing the same information in a different manner.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="2" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

rm 'MelangeURLs.wiki'
[master d22da03] Converted MelangeURLs.md
 2 files changed, 46 insertions(+), 49 deletions(-)
 create mode 100644 MelangeURLs.md
 delete mode 100644 MelangeURLs.wiki
done

**************************
Converting wiki: 
To Markdown    : ./IrcChannelGuidelines.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Melange discussion on IRC channel #melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Complete,Phase-Guidelines,Importance-Useful
Consider expressing the same information in a different manner.

rm 'IrcChannelGuidelines.wiki'
[master 316fe6e] Converted IrcChannelGuidelines.md
 1 file changed, 11 insertions(+), 12 deletions(-)
 rename IrcChannelGuidelines.wiki => IrcChannelGuidelines.md (54%)
done

**************************
Converting wiki: 
To Markdown    : ./Miscellany.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	One-sentence summary of this page.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels 2013DeveloperDoc
Consider expressing the same information in a different manner.

rm 'Miscellany.wiki'
[master 89fb001] Converted Miscellany.md
 2 files changed, 11 insertions(+), 14 deletions(-)
 create mode 100644 Miscellany.md
 delete mode 100644 Miscellany.wiki
done

**************************
Converting wiki: 
To Markdown    : ./UserCommunication.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	This page captures how users want to be able to send email to each within the system.
Consider moving it to an introductory paragraph.

rm 'UserCommunication.wiki'
[master 383c922] Converted UserCommunication.md
 1 file changed, 2 insertions(+), 4 deletions(-)
 rename UserCommunication.wiki => UserCommunication.md (63%)
done

**************************
Converting wiki: 
To Markdown    : ./GSoC2010Ideas.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Ideas List for GSoC 2010
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Deprecated,Contents-Complete
Consider expressing the same information in a different manner.

Warning (line 225 of input file):
Unknown plugin was given, outputting as plain text:
	<DanielPleaseConfirmYourAvailability>

Warning (line 227 of input file):
Unknown but matching plugin end was given, outputting as plain text:
	</DanielPleaseConfirmYourAvailability>

rm 'GSoC2010Ideas.wiki'
[master e813ac8] Converted GSoC2010Ideas.md
 2 files changed, 377 insertions(+), 354 deletions(-)
 create mode 100644 GSoC2010Ideas.md
 delete mode 100644 GSoC2010Ideas.wiki
done

**************************
Converting wiki: 
To Markdown    : ./GettingStartedOnTesting.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Guide on tips and tricks for writing tests for Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Draft,Importance-Useful,Phase-QA
Consider expressing the same information in a different manner.

Warning (line 6 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

rm 'GettingStartedOnTesting.wiki'
[master d0d66df] Converted GettingStartedOnTesting.md
 1 file changed, 98 insertions(+), 101 deletions(-)
 rename GettingStartedOnTesting.wiki => GettingStartedOnTesting.md (65%)
done

**************************
Converting wiki: 
To Markdown    : ./2014SummerStudentOrientation.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Melange 2014 Summer Student Orientation Topics
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Phase-Guidelines,Contents-Complete
Consider expressing the same information in a different manner.

rm '2014SummerStudentOrientation.wiki'
[master f71b782] Converted 2014SummerStudentOrientation.md
 1 file changed, 9 insertions(+), 12 deletions(-)
 rename 2014SummerStudentOrientation.wiki => 2014SummerStudentOrientation.md (82%)
done

**************************
Converting wiki: 
To Markdown    : ./SoCOverview.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Overview of SoC
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Phase-Requirements,Contents-Draft,Importance-Overview
Consider expressing the same information in a different manner.

rm 'SoCOverview.wiki'
[master b64247e] Converted SoCOverview.md
 2 files changed, 47 insertions(+), 48 deletions(-)
 create mode 100644 SoCOverview.md
 delete mode 100644 SoCOverview.wiki
done

**************************
Converting wiki: 
To Markdown    : ./GCINewArchitectureGSoC2011.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Wiki Page for the Google Code-In with new Architecture Project.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Phase-Design
Consider expressing the same information in a different manner.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

rm 'GCINewArchitectureGSoC2011.wiki'
[master e211004] Converted GCINewArchitectureGSoC2011.md
 2 files changed, 150 insertions(+), 149 deletions(-)
 create mode 100644 GCINewArchitectureGSoC2011.md
 delete mode 100644 GCINewArchitectureGSoC2011.wiki
done

**************************
Converting wiki: 
To Markdown    : ./MelangePlan0310.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Plan for Q3-Q4 '10
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Review,Importance-Useful,Phase-Implementation
Consider expressing the same information in a different manner.

Warning (line 19 of input file):
Issue 445 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 445' to 'Issue 445 (on Google Code)'.

rm 'MelangePlan0310.wiki'
[master 8d4ebf6] Converted MelangePlan0310.md
 2 files changed, 37 insertions(+), 37 deletions(-)
 create mode 100644 MelangePlan0310.md
 delete mode 100644 MelangePlan0310.wiki
done

**************************
Converting wiki: 
To Markdown    : ./ContributionTerms.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Terms for contributing to Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Complete,Phase-Guidelines,Importance-Useful
Consider expressing the same information in a different manner.

rm 'ContributionTerms.wiki'
[master b14ef20] Converted ContributionTerms.md
 1 file changed, 31 insertions(+), 32 deletions(-)
 rename ContributionTerms.wiki => ContributionTerms.md (51%)
done

**************************
Converting wiki: 
To Markdown    : ./CodingHintsAndTips.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Hints and Tips for Melange Development
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Contents-Draft
Consider expressing the same information in a different manner.

rm 'CodingHintsAndTips.wiki'
[master bce0353] Converted CodingHintsAndTips.md
 2 files changed, 33 insertions(+), 36 deletions(-)
 create mode 100644 CodingHintsAndTips.md
 delete mode 100644 CodingHintsAndTips.wiki
done

**************************
Converting wiki: 
To Markdown    : ./For_GHOP_20.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	GHOP features which we are 99% sure we do not want in the first Melange based GHOP
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Details,Phase-Design,Contents-Draft
Consider expressing the same information in a different manner.

rm 'For_GHOP_20.wiki'
[master 460dc7a] Converted For_GHOP_20.md
 1 file changed, 12 insertions(+), 15 deletions(-)
 rename For_GHOP_20.wiki => For_GHOP_20.md (77%)
done

**************************
Converting wiki: 
To Markdown    : ./WelcomeToMelange.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Welcome To Melange!
Consider moving it to an introductory paragraph.

rm 'WelcomeToMelange.wiki'
[master 04c1257] Converted WelcomeToMelange.md
 2 files changed, 15 insertions(+), 17 deletions(-)
 create mode 100644 WelcomeToMelange.md
 delete mode 100644 WelcomeToMelange.wiki
done

**************************
Converting wiki: 
To Markdown    : ./ContributorLicenseAgreements.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Contributor license agreements
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Complete,Phase-Guidelines,Importance-Details
Consider expressing the same information in a different manner.

rm 'ContributorLicenseAgreements.wiki'
[master 7e8d678] Converted ContributorLicenseAgreements.md
 2 files changed, 6 insertions(+), 9 deletions(-)
 create mode 100644 ContributorLicenseAgreements.md
 delete mode 100644 ContributorLicenseAgreements.wiki
done

**************************
Converting wiki: 
To Markdown    : ./GSoC2013Ideas.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Ideas List for GSoC 2013
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Featured
Consider expressing the same information in a different manner.

rm 'GSoC2013Ideas.wiki'
[master 28f8bca] Converted GSoC2013Ideas.md
 1 file changed, 36 insertions(+), 42 deletions(-)
 rename GSoC2013Ideas.wiki => GSoC2013Ideas.md (68%)
done

**************************
Converting wiki: 
To Markdown    : ./EnvironmentConfig.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Guidelines for setting up a virtual environment for use with Melange.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Phase-Guidelines,Contents-Draft
Consider expressing the same information in a different manner.

rm 'EnvironmentConfig.wiki'
[master 1982155] Converted EnvironmentConfig.md
 1 file changed, 22 insertions(+), 25 deletions(-)
 rename EnvironmentConfig.wiki => EnvironmentConfig.md (80%)
done

**************************
Converting wiki: 
To Markdown    : ./WikiDiscuss.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Issues from the issue tracker for discussion on this wiki
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Details,Contents-Draft,Phase-Implementation
Consider expressing the same information in a different manner.

Warning (line 17 of input file):
Issue 448 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 448' to 'Issue 448 (on Google Code)'.

Warning (line 18 of input file):
Issue 463 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 463' to 'Issue 463 (on Google Code)'.

Warning (line 19 of input file):
Issue 495 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 495' to 'Issue 495 (on Google Code)'.

Warning (line 20 of input file):
Issue 619 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 619' to 'Issue 619 (on Google Code)'.

Warning (line 32 of input file):
Issue 463 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 463' to 'Issue 463 (on Google Code)'.

Warning (line 44 of input file):
Issue 495 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 495' to 'Issue 495 (on Google Code)'.

Warning (line 56 of input file):
Issue 619 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 619' to 'Issue 619 (on Google Code)'.

rm 'WikiDiscuss.wiki'
[master 0c3bd0f] Converted WikiDiscuss.md
 2 files changed, 61 insertions(+), 59 deletions(-)
 create mode 100644 WikiDiscuss.md
 delete mode 100644 WikiDiscuss.wiki
done

**************************
Converting wiki: 
To Markdown    : ./GSoC2010MelangeTesting.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Project Progress/Log for the Testing, Code Guru, Code Quality Assurance Project (GSoC2010) of Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Phase-Design,Contents-Draft,Importance-Details
Consider expressing the same information in a different manner.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

rm 'GSoC2010MelangeTesting.wiki'
[master bde74c1] Converted GSoC2010MelangeTesting.md
 2 files changed, 83 insertions(+), 86 deletions(-)
 create mode 100644 GSoC2010MelangeTesting.md
 delete mode 100644 GSoC2010MelangeTesting.wiki
done

**************************
Converting wiki: 
To Markdown    : ./TextEditinginMelange.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Creating Documents, etc.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Details,Phase-Design,Contents-Draft
Consider expressing the same information in a different manner.

Warning (line 6 of input file):
Issue 306 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 306' to 'Issue 306 (on Google Code)'.

Warning (line 51 of input file):
Issue 448 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 448' to 'Issue 448 (on Google Code)'.

rm 'TextEditinginMelange.wiki'
[master 68d5b09] Converted TextEditinginMelange.md
 1 file changed, 14 insertions(+), 17 deletions(-)
 rename TextEditinginMelange.wiki => TextEditinginMelange.md (62%)
done

**************************
Converting wiki: 
To Markdown    : ./WhyUseGoogleAppEngine.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	What software are we building Melange on - and Why
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Phase-Design,Contents-Complete
Consider expressing the same information in a different manner.

rm 'WhyUseGoogleAppEngine.wiki'
[master bd8ae26] Converted WhyUseGoogleAppEngine.md
 2 files changed, 27 insertions(+), 30 deletions(-)
 create mode 100644 WhyUseGoogleAppEngine.md
 delete mode 100644 WhyUseGoogleAppEngine.wiki
done

**************************
Converting wiki: 
To Markdown    : ./LogicalTestingFallacies.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	"Why My Patch Doesn't Need Tests"
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Phase-QA,Contents-Complete
Consider expressing the same information in a different manner.

rm 'LogicalTestingFallacies.wiki'
[master c4bfbf3] Converted LogicalTestingFallacies.md
 1 file changed, 8 insertions(+), 11 deletions(-)
 rename LogicalTestingFallacies.wiki => LogicalTestingFallacies.md (72%)
done

**************************
Converting wiki: 
To Markdown    : ./NathanielsCodeFragrances.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Nathaniel's guidance on nice things to do in code.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Phase-Implementation,Contents-Complete
Consider expressing the same information in a different manner.

rm 'NathanielsCodeFragrances.wiki'
[master 5e3737b] Converted NathanielsCodeFragrances.md
 2 files changed, 28 insertions(+), 31 deletions(-)
 create mode 100644 NathanielsCodeFragrances.md
 delete mode 100644 NathanielsCodeFragrances.wiki
done

**************************
Converting wiki: 
To Markdown    : ./ProposalReview.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	A Place to Capture Information about how the Proposal Review UI Should Work
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Details,Phase-Design,Contents-Draft
Consider expressing the same information in a different manner.

Warning (line 8 of input file):
Issue 82 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 82' to 'Issue 82 (on Google Code)'.

Warning (line 10 of input file):
Issue 420 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 420' to 'Issue 420 (on Google Code)'.

Warning (line 12 of input file):
Issue 449 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 449' to 'Issue 449 (on Google Code)'.

Warning (line 14 of input file):
Issue 463 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 463' to 'Issue 463 (on Google Code)'.

Warning (line 16 of input file):
Issue 497 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 497' to 'Issue 497 (on Google Code)'.

Warning (line 18 of input file):
Issue 517 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 517' to 'Issue 517 (on Google Code)'.

Warning (line 20 of input file):
Issue 524 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 524' to 'Issue 524 (on Google Code)'.

Warning (line 30 of input file):
Issue 463 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 463' to 'Issue 463 (on Google Code)'.

rm 'ProposalReview.wiki'
[master fb63324] Converted ProposalReview.md
 2 files changed, 39 insertions(+), 43 deletions(-)
 create mode 100644 ProposalReview.md
 delete mode 100644 ProposalReview.wiki
done

**************************
Converting wiki: 
To Markdown    : ./GHOP.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Design/discussion for GHOP
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Contents-Review,Phase-Requirements
Consider expressing the same information in a different manner.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

Warning (line 59 of input file):
Issue 495 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 495' to 'issue 495 (on Google Code)'.

Warning (line 84 of input file):
Missing space after list symbol: *, '*' was removed instead.

Warning (line 85 of input file):
Missing space after list symbol: *, '*' was removed instead.

rm 'GHOP.wiki'
[master c498d31] Converted GHOP.md
 2 files changed, 170 insertions(+), 172 deletions(-)
 create mode 100644 GHOP.md
 delete mode 100644 GHOP.wiki
done

**************************
Converting wiki: 
To Markdown    : ./SurveysModule.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Design/discussion for Surveys
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Phase-Requirements,Contents-Draft
Consider expressing the same information in a different manner.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

Warning (line 31 of input file):
Issue 520 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 520' to 'Issue 520 (on Google Code)'.

Warning (line 31 of input file):
Issue 100 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 100' to 'Issue 100 (on Google Code)'.

rm 'SurveysModule.wiki'
[master eb8e1fb] Converted SurveysModule.md
 1 file changed, 26 insertions(+), 29 deletions(-)
 rename SurveysModule.wiki => SurveysModule.md (77%)
done

**************************
Converting wiki: 
To Markdown    : ./GSoC2010DataSeeder.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Tracks progress for the data seeder project.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels data-seeder,gsoc2010
Consider expressing the same information in a different manner.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

rm 'GSoC2010DataSeeder.wiki'
[master bfc0120] Converted GSoC2010DataSeeder.md
 2 files changed, 644 insertions(+), 647 deletions(-)
 create mode 100644 GSoC2010DataSeeder.md
 delete mode 100644 GSoC2010DataSeeder.wiki
done

**************************
Converting wiki: 
To Markdown    : ./GSoC2011MelangeTesting.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Progress tracker for Melange project: Testing, Code Guru and Quality Assurance, GSoC 2011
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Phase-QA,Importance-Details,Contents-Update
Consider expressing the same information in a different manner.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

rm 'GSoC2011MelangeTesting.wiki'
[master 01892a2] Converted GSoC2011MelangeTesting.md
 2 files changed, 149 insertions(+), 153 deletions(-)
 create mode 100644 GSoC2011MelangeTesting.md
 delete mode 100644 GSoC2011MelangeTesting.wiki
done

**************************
Converting wiki: 
To Markdown    : ./GSoC2011IntegrationWithExternalAPIs.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	tracks progress for the "integration with external apis" project.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Phase-Requirements
Consider expressing the same information in a different manner.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

Warning (line 39 of input file):
Issue 1243 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 1243' to 'issue 1243 (on Google Code)'.

Warning (line 43 of input file):
Issue 1239 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 1239' to 'issue 1239 (on Google Code)'.

Warning (line 64 of input file):
Issue 1239 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 1239' to 'issue 1239 (on Google Code)'.

Warning (line 64 of input file):
Issue 1243 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 1243' to 'issue 1243 (on Google Code)'.

rm 'GSoC2011IntegrationWithExternalAPIs.wiki'
[master 1e96ac2] Converted GSoC2011IntegrationWithExternalAPIs.md
 2 files changed, 142 insertions(+), 138 deletions(-)
 create mode 100644 GSoC2011IntegrationWithExternalAPIs.md
 delete mode 100644 GSoC2011IntegrationWithExternalAPIs.wiki
done

**************************
Converting wiki: 
To Markdown    : ./IssueTrackerUse.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	For discussions about the issue tracker
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Phase-Guidelines,Contents-Draft
Consider expressing the same information in a different manner.

rm 'IssueTrackerUse.wiki'
[master e739218] Converted IssueTrackerUse.md
 2 files changed, 88 insertions(+), 81 deletions(-)
 create mode 100644 IssueTrackerUse.md
 delete mode 100644 IssueTrackerUse.wiki
done

**************************
Converting wiki: 
To Markdown    : ./PythonStyleGuide.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Style guide for Python code contributed to Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Complete,Phase-Guidelines,Importance-Featured,Featured
Consider expressing the same information in a different manner.

Warning (line 98 of input file):
Issue 1596 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'issue 1596' to 'issue 1596 (on Google Code)'.

rm 'PythonStyleGuide.wiki'
[master 809b97c] Converted PythonStyleGuide.md
 1 file changed, 105 insertions(+), 105 deletions(-)
 rename PythonStyleGuide.wiki => PythonStyleGuide.md (50%)
done

**************************
Converting wiki: 
To Markdown    : ./NewsfeedModule.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	'Sandworm' Newsfeed Module
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Phase-Requirements,Contents-Draft
Consider expressing the same information in a different manner.

Warning (line 6 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="3" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

Warning (line 87 of input file):
Unknown plugin was given, outputting as plain text:
	<link rel="alternate" type="application/rss+xml" title="RSS" href="{{ feed_url }}"/>

Warning (line 127 of input file):
GFM does not support embedding the YouTube player directly. Instead an image link to the video is being used, maintaining sizing options.

rm 'NewsfeedModule.wiki'
[master 5b1e0bf] Converted NewsfeedModule.md
 1 file changed, 52 insertions(+), 53 deletions(-)
 rename NewsfeedModule.wiki => NewsfeedModule.md (60%)
done

**************************
Converting wiki: 
To Markdown    : ./NagEmails.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	When Should the System Send Nag Emails
Consider moving it to an introductory paragraph.

Warning (line 7 of input file):
Issue 604 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 604' to 'Issue 604 (on Google Code)'.

Warning (line 9 of input file):
Issue 562 was auto-linked. However, no issue migration map was specified. You can use issue_migration.py to migrate your Google Code issues to GitHub, and supply the resulting issue migration map file to this converter. Your old issues will be auto-linked to your migrated issues. Additionally, because no project name was specified the issue could not be linked to the original Google Code issue page.The auto-link has been removed and the text has been modified from 'Issue 562' to 'Issue 562 (on Google Code)'.

rm 'NagEmails.wiki'
[master db09911] Converted NagEmails.md
 2 files changed, 15 insertions(+), 17 deletions(-)
 create mode 100644 NagEmails.md
 delete mode 100644 NagEmails.wiki
done

**************************
Converting wiki: 
To Markdown    : ./ResponsiveLayout.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	How Melange's Responsive Layout works
Consider moving it to an introductory paragraph.

rm 'ResponsiveLayout.wiki'
[master ad7f65b] Converted ResponsiveLayout.md
 1 file changed, 3 insertions(+), 6 deletions(-)
 rename ResponsiveLayout.wiki => ResponsiveLayout.md (95%)
done

**************************
Converting wiki: 
To Markdown    : ./UserStories.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Template for User Stories
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Phase-Requirements,Contents-Draft,Importance-Useful
Consider expressing the same information in a different manner.

rm 'UserStories.wiki'
[master 1805b89] Converted UserStories.md
 2 files changed, 34 insertions(+), 37 deletions(-)
 create mode 100644 UserStories.md
 delete mode 100644 UserStories.wiki
done

**************************
Converting wiki: 
To Markdown    : ./GSoC2014Ideas.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Ideas List for GSoC 2014
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Useful,Featured
Consider expressing the same information in a different manner.

rm 'GSoC2014Ideas.wiki'
[master 1ca4856] Converted GSoC2014Ideas.md
 2 files changed, 122 insertions(+), 125 deletions(-)
 create mode 100644 GSoC2014Ideas.md
 delete mode 100644 GSoC2014Ideas.wiki
done

**************************
Converting wiki: 
To Markdown    : ./CodeReview.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Procedure for Melange Code Review.
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Contents-Draft
Consider expressing the same information in a different manner.

rm 'CodeReview.wiki'
[master 9fdb871] Converted CodeReview.md
 2 files changed, 39 insertions(+), 42 deletions(-)
 create mode 100644 CodeReview.md
 delete mode 100644 CodeReview.wiki
done

**************************
Converting wiki: 
To Markdown    : ./JavascriptStyleGuide.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Style guide for JavaScript code contributed to Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Deprecated,Phase-Guidelines,Contents-Draft
Consider expressing the same information in a different manner.

rm 'JavascriptStyleGuide.wiki'
[master 87c0366] Converted JavascriptStyleGuide.md
 2 files changed, 90 insertions(+), 93 deletions(-)
 create mode 100644 JavascriptStyleGuide.md
 delete mode 100644 JavascriptStyleGuide.wiki
done

**************************
Converting wiki: 
To Markdown    : ./ReleasingMelange.md
**************************
Warning (line 1 of input file):
A summary pragma was used for this wiki:
	Releasing Melange
Consider moving it to an introductory paragraph.

Warning (line 2 of input file):
The following pragma has been ignored:
	#labels Importance-Featured,Phase-Deploy,Contents-Complete,Featured
Consider expressing the same information in a different manner.

Warning (line 4 of input file):
A table of contents plugin was used for this wiki:
	<wiki:toc max_depth="2" />
The Gollum wiki system supports table of content generation.
See https://github.com/gollum/gollum/wiki for more information.
It has been removed.

rm 'ReleasingMelange.wiki'
[master 4aa4d2b] Converted ReleasingMelange.md
 1 file changed, 17 insertions(+), 20 deletions(-)
 rename ReleasingMelange.wiki => ReleasingMelange.md (63%)
done

