diff --git a/Documentation/images-ext/Build Log.png b/Documentation/images-ext/Build Log.png
new file mode 100644
index 0000000..c5dc9ad
Binary files /dev/null and b/Documentation/images-ext/Build Log.png differ
diff --git a/Documentation/images-ext/Build Report.png b/Documentation/images-ext/Build Report.png
new file mode 100644
index 0000000..b80ed44
Binary files /dev/null and b/Documentation/images-ext/Build Report.png differ
diff --git a/Documentation/images-ext/Console Output.png b/Documentation/images-ext/Console Output.png
new file mode 100644
index 0000000..b333158
Binary files /dev/null and b/Documentation/images-ext/Console Output.png differ
diff --git a/Documentation/images-ext/FxCopReport.png b/Documentation/images-ext/FxCopReport.png
new file mode 100644
index 0000000..5229896
Binary files /dev/null and b/Documentation/images-ext/FxCopReport.png differ
diff --git a/Documentation/images-ext/MSBuild Log.png b/Documentation/images-ext/MSBuild Log.png
new file mode 100644
index 0000000..2484918
Binary files /dev/null and b/Documentation/images-ext/MSBuild Log.png differ
diff --git a/Documentation/images-ext/MSpec Report.png b/Documentation/images-ext/MSpec Report.png
new file mode 100644
index 0000000..54a6e1d
Binary files /dev/null and b/Documentation/images-ext/MSpec Report.png differ
diff --git a/Documentation/images-ext/MSpec-Failed.png b/Documentation/images-ext/MSpec-Failed.png
new file mode 100644
index 0000000..11a5884
Binary files /dev/null and b/Documentation/images-ext/MSpec-Failed.png differ
diff --git a/Documentation/images-ext/Parameters View.png b/Documentation/images-ext/Parameters View.png
new file mode 100644
index 0000000..b362fce
Binary files /dev/null and b/Documentation/images-ext/Parameters View.png differ
diff --git a/Documentation/images-ext/Project View.png b/Documentation/images-ext/Project View.png
new file mode 100644
index 0000000..44fc80a
Binary files /dev/null and b/Documentation/images-ext/Project View.png differ
diff --git a/Documentation/images-ext/StyleCop Report.png b/Documentation/images-ext/StyleCop Report.png
new file mode 100644
index 0000000..2f95d5f
Binary files /dev/null and b/Documentation/images-ext/StyleCop Report.png differ
diff --git a/Package/7za.exe b/Package/7za.exe
new file mode 100644
index 0000000..7f6bf86
Binary files /dev/null and b/Package/7za.exe differ
diff --git a/Package/CCNet.Plugins.CreatePackage.exe b/Package/CCNet.Plugins.CreatePackage.exe
new file mode 100644
index 0000000..32a16d3
Binary files /dev/null and b/Package/CCNet.Plugins.CreatePackage.exe differ
diff --git a/Package/build_package.bat b/Package/build_package.bat
new file mode 100644
index 0000000..d4032e4
--- /dev/null
+++ b/Package/build_package.bat
@@ -0,0 +1,14 @@
+@echo ::
+@echo :: Creating Keizen theme package
+@echo ::
+
+echo -- Creating manifest
+CCNet.Plugins.CreatePackage.exe "..\Source\Kaizen" Kaizen
+
+@echo -- Creating zip package
+7za.exe a -tzip KaizenTheme.zip "..\Source\Kaizen\*"
+7za.exe u KaizenTheme.zip package.xml
+
+
+@echo Package created.
+pause
\ No newline at end of file
diff --git a/Source/Kaizen/css/base.styles.css b/Source/Kaizen/css/base.styles.css
index 7fb3990..e2a0bbc 100644
--- a/Source/Kaizen/css/base.styles.css
+++ b/Source/Kaizen/css/base.styles.css
@@ -1,194 +1,194 @@
-/* Base
-----------------------------------*/
-BODY { margin: 0px; padding: 0px; background-color: #FFF; font-family: helvetica; font-size: 12px; }
-/* Firefox alignment hack */
-BODY { text-align: -moz-center; }
-TABLE { width: 100%; background: #FFF url("../images/menu_links_bg.png"); }
-THEAD, .strong { font-weight: bold; }
-
-.data, .label { overflow: hidden; }
-
-BR { display: none; }
-A { text-decoration: none; cursor: hand; cursor: pointer; }
-.dialog, .hidden { display: none; }
-
-.clear { clear: both; }
-.invisible { margin: 0px; padding: 0px; }
-.show-line-breaks BR { display: block; }
-
-/* Columns
-----------------------------------*/
-.even-columns-2 { width: 50%; }
-.even-columns-3 { width: 33%; }
-.even-columns-4 { width: 25%; }
-.even-columns-5 { width: 20%; }
-
-/* Icons
-----------------------------------*/
-.icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; background-image: url('../images/icons.png'); }
-
-.icon-rss { width: 30px; height: 30px; background-position: 0px 0px; }
-.icon-refresh { width: 30px; height: 30px; background-position: -30px 0px; }
-.icon-reload { width: 30px; height: 30px; background-position: -30px 0px; }
-.icon-large-logout { width: 30px; height: 30px; background-position: -60px 0px; }
-
-.icon-show-sections { width: 24px; height: 24px; background-position: 0px -30px; }
-.icon-hide-sections { width: 24px; height: 24px; background-position: -24px -30px; }
-.icon-show-errors { width: 24px; height: 24px; background-position: -48px -30px; }
-
-.icon-change-password { width: 19px; height: 19px; background-position: 0px -54px; }
-.icon-logout { width: 19px; height: 19px; background-position: -19px -54px; }
-.icon-login { width: 19px; height: 19px; background-position: -38px -54px; }
-
-.icon-large-up-arrow { width: 13px; height: 30px; background-position: 0px -73px; }
-.icon-large-down-arrow { width: 13px; height: 30px; background-position: -13px -73px; }
-
-.icon-small-up-arrow { width: 7px; height: 10px; background-position: 0px -103px; }
-.icon-small-down-arrow { width: 7px; height: 10px; background-position: -10px -103px; }
-
-/* Forms
-----------------------------------*/
-FORM { display: inline; margin: 0px; padding: 0px; border: none; vertical-align: baseline; }
-INPUT { padding: 3px; border: none; background-color: #3b3a3a; color: #ededed; }
-INPUT[type="submit"], INPUT[type="button"] { font-weight: bold; cursor: hand; cursor: pointer; }
-INPUT[type="hidden"] { display: none; }
-INPUT.invalid { background-color: #ce2a1b; }
-
-/* Messaging
-----------------------------------*/
-.message { position: absolute; top: 0px; left: 0px; width: 100%; height: 40px; margin: 0px; color: #ededed; font-weight: bold; font-size: 20px; text-align: center; cursor: hand; cursor: pointer; }
-.message SPAN { display: inline-block; margin-top: 5px; }
-.message A { color: #FFFFFF; text-decoration: underline; }
-.message INPUT[type="submit"], .message INPUT[type="button"] { margin: 6px; float: right; border: 1px solid #ededed; background-color: transparent; color: #ededed; font-weight: bold; cursor: hand; cursor: pointer; }
-
-/* Dialogs
-----------------------------------*/
-.dialog OL { text-align: left; }
-
-/* Selectbox
-----------------------------------*/
-.selection { float: left; width: 100%; padding: 0px; background-color: #3b3a3a; border-top: 1px dashed #FFF; }
-.selection-data { width: 100%; list-style-type: none; }
-.selection-data LI { display: inline-block; width: 33%; float: left; }
-.selection-data A, .selection-data SPAN { color: #FFF; font-size: 14px; font-weight: bold; text-decoration: none; }
-.selection-link-hide { clear: both; float: right; margin: 3px; }
-
-/* Alignment
-----------------------------------*/
-.left { padding-left: 0.5em; text-align: left; }
-.right { padding-right: 0.5em; text-align: right; }
-.center { text-align: center; }
-
-/* Background
-----------------------------------*/
-.exception { background-color: #ce2a1b !important; }
-.success, #content UL LI.build-passed-link { background-color: #4e800c !important; }
-.failed, #content UL LI.build-failed-link { background-color: #ce2a1b !important; }
-.warning { background-color: #f0b440 !important; }
-.success-light { background-color: #639f27 !important; }
-.failed-light { background-color: #c94b3e !important; }
-.warning-light { background-color: #f1c775 !important; }
-
-/* Text
-----------------------------------*/
-.success-text { color: #4e800c !important; }
-.failed-text { color: #ce2a1b !important; }
-.warning-text { color: #f0b440 !important; }
-.failed-underline { border-bottom: dotted 2px #ce2a1b; }
-
-/* Layout
-----------------------------------*/
-#header, #main, #footer { width: 1000px; margin: 0 auto; padding: 0px; text-align: left; }
-#header { margin-top: 10px !important; height: 65px; border-bottom: solid 2px #3b3a3a; vertical-align: top; }
-#menu { float: left; width: 200px; margin: 20px 10px 20px 0px; padding: 0px; }
-#content { float: right; clear: right; width: 790px; margin-top: 20px; }
-#footer { margin-bottom: 20px !important; border-top: solid 2px #3b3a3a; }
-
-/* Header
-----------------------------------*/
-.header-logo { float: left; color: #3b3a3a; }
-.heading { float: left; font: 30px times new roman; letter-spacing: 2px; }
-.subheading { float: left; clear: both; margin-top: -7px; margin-left: 30px; color: #3b3a3a; font: 12px trebuchet ms; }
-
-.header-login, .header-navigation { display: block; float: right; }
-
-.header-login { padding: 5px; margin-top: -10px; clear: right; background-color: #f0b440; }
-.header-login A { float: left; margin: 2px; }
-
-.header-navigation { clear: both; }
-.header-navigation UL { display: block; margin: 0px; list-style-type: none; }
-.route { float: left; padding-left: 13px; background: url("../images/separator.png") no-repeat 0px 3px; color: #919EA9; font-weight: bold; }
-.route A { color: #3b3a3a; text-decoration: none; }
-.route-dashboard { padding-left: 0px !important; background-image: none !important; }
-
-/* Menu
-----------------------------------*/
-#menu H2 { display: block; width: 100%; height: 35px; margin: 0px 0px 2px 0px; padding: 0px; background-color: #3b3a3a; color: #ededed; font: normal 15px trebuchet ms; vertical-align: middle; cursor: pointer; cursor: hand; }
-#menu H2 SPAN { display: inline-block; margin: 6px 10px 6px 10px; }
-
-#menu UL { display: block; margin: 0px; padding: 0px; list-style-type: none; }
-
-#menu .section UL { width: 100%; }
-#menu .section LI { display: block; width: 100%; height: 30px; margin: 0px 0px 1px 0px; padding: 0px; border-top: solid 1px #c9c5c5; border-bottom: solid 1px #c9c5c5; background-image: url("../images/menu_links_bg.png"); font-size: 12px; vertical-align: middle; }
-#menu .section LI SPAN { display: block; margin: 7px; }
-#menu A { color: #615e5c; font-weight: bold; }
-
-#menu .build-passed-link { background: url("../images/build_passed_link_bg.png") !important; }
-#menu .build-failed-link { background: url("../images/build_failed_link_bg.png") !important; }
-
-.build-views { display: block; height: 25px; margin: 0px 0px 3px 0px; }
-.build-views UL { float: right; height: 100%; margin-bottom: 3px !important; }
-.build-views LI { float: left; width: 24px; height: 24px; margin: 1px; cursor: pointer; cursor: hand; }
-.build-views LI SPAN { display: none; }
-
-.colors { float: left !important; margin-left: -1px !important; }
-
-#searchbox { width: 130px; margin: -4px 0px 0px 2px; background-color: #3b3a3a; color: #ededed; font: normal 15px trebuchet ms; vertical-align: middle; border-bottom: 1px solid #c9c5c5; }
-
-/* Content
-----------------------------------*/
-#content .section { margin: 0px; margin-bottom: 5px !important; }
-#content .section-content { width: 770px; margin: 0px; padding: 10px; background: #EEE; color: #3b3a3a !important; font-size: 12px; overflow: hidden; }
-
-H1.title, #content .build { display: block; width: 100%; height: 60px; margin: 0px; padding: 0px; background-color: #3b3a3a; font-size: 24px; vertical-align: middle; }
-H1.title, H1.title A, #content .build A { color: #ededed; font-family: trebuchet ms; cursor: pointer; cursor: hand; }
-
-H1.title SPAN, #content .build SPAN { float: left; margin-left: 10px !important; margin-top: 15px; }
-H1.title SPAN, H1.title A, #content .build SPAN, #content .build A { display: inline-block; }
-
-.title-data { float: right !important; margin-right: 10px !important; }
-.title-data .icon { margin: 0.1em; background-color: #FFF; }
-.title-data .icon SPAN, .title-data .icon INPUT { display: none; }
-.title-data SPAN { margin: 0px !important; }
-.button-rss, .title-data .icon-large-down-arrow { background-color: Transparent !important; }
-
-#content .build { margin-bottom: 4px !important; }
-
-.log, PRE { overflow: auto; white-space: pre-wrap; }
-
-.section-content A { color: #000000; text-decoration: underline; }
-.report-link { color: #FFFFFF !important; text-decoration: none !important; }
-
-/* Footer
-----------------------------------*/
-.version { float: left; color: #3b3a3a; font-size: 10px; }
-.authors { float: right; margin-top: 2px; }
-.authors A { display: block; float: right; margin-left: 5px; }
-.authors A.thought-works { width: 129px; height: 30px; background-image: url('../images/thoughtworks.png'); }
-.authors A.saiku { width: 34px; height: 25px; background-image: url('../images/saiku.png'); }
-.authors SPAN { display: none; }
-
-/* ------------------------------------- */
-/* Extensions
-/* ------------------------------------- */
-
-/* jQuery XPH Tooltip
-----------------------------------*/
-.tooltip, .tooltip-fixed { color: #3b3a3a; border: 1px solid #3b3a3a; background: #ffffee; text-align: left; }
-.tooltip-fixed { width: 400px; }
-.tooltip .title { display: none; }
-.tooltip .text, .tooltip .url { padding: 5px; font-size: x-small; }
-.tooltip .url { font-weight: bold; }
-.tooltip .shortcut { font-style: italic; font-weight: bold; }
-.tooltip P, .tooltip-fixed P { margin: 2px; padding: 0px; }
+/* Base
+----------------------------------*/
+BODY { margin: 0px; padding: 0px; background-color: #FFF; font-family: verdana; font-size: 11px; }
+/* Firefox alignment hack */
+BODY { text-align: -moz-center; }
+TABLE { width: 100%; background: #FFF url("../images/menu_links_bg.png"); }
+THEAD, .strong { font-weight: bold; }
+
+.data, .label { overflow: hidden; }
+
+/*BR { display: none; } */
+A { text-decoration: none; cursor: hand; cursor: pointer; }
+.dialog, .hidden { display: none; }
+
+.clear { clear: both; }
+.invisible { margin: 0px; padding: 0px; }
+.show-line-breaks BR { display: block; }
+
+/* Columns
+----------------------------------*/
+.even-columns-2 { width: 50%; }
+.even-columns-3 { width: 33%; }
+.even-columns-4 { width: 25%; }
+.even-columns-5 { width: 20%; }
+
+/* Icons
+----------------------------------*/
+.icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; background-image: url('../images/icons.png'); }
+
+.icon-rss { width: 30px; height: 30px; background-position: 0px 0px; }
+.icon-refresh { width: 30px; height: 30px; background-position: -30px 0px; }
+.icon-reload { width: 30px; height: 30px; background-position: -30px 0px; }
+.icon-large-logout { width: 30px; height: 30px; background-position: -60px 0px; }
+
+.icon-show-sections { width: 24px; height: 24px; background-position: 0px -30px; }
+.icon-hide-sections { width: 24px; height: 24px; background-position: -24px -30px; }
+.icon-show-errors { width: 24px; height: 24px; background-position: -48px -30px; }
+
+.icon-change-password { width: 19px; height: 19px; background-position: 0px -54px; }
+.icon-logout { width: 19px; height: 19px; background-position: -19px -54px; }
+.icon-login { width: 19px; height: 19px; background-position: -38px -54px; }
+
+.icon-large-up-arrow { width: 13px; height: 30px; background-position: 0px -73px; }
+.icon-large-down-arrow { width: 13px; height: 30px; background-position: -13px -73px; }
+
+.icon-small-up-arrow { width: 7px; height: 10px; background-position: 0px -103px; }
+.icon-small-down-arrow { width: 7px; height: 10px; background-position: -10px -103px; }
+
+/* Forms
+----------------------------------*/
+FORM { display: inline; margin: 0px; padding: 0px; border: none; vertical-align: baseline; }
+INPUT { padding: 3px; border: none; background-color: #3b3a3a; color: #ededed; }
+INPUT[type="submit"], INPUT[type="button"] { font-weight: bold; cursor: hand; cursor: pointer; }
+INPUT[type="hidden"] { display: none; }
+INPUT.invalid { background-color: #ce2a1b; }
+
+/* Messaging
+----------------------------------*/
+.message { position: absolute; top: 0px; left: 0px; width: 100%; height: 40px; margin: 0px; color: #ededed; font-weight: bold; font-size: 20px; text-align: center; cursor: hand; cursor: pointer; }
+.message SPAN { display: inline-block; margin-top: 5px; }
+.message A { color: #FFFFFF; text-decoration: underline; }
+.message INPUT[type="submit"], .message INPUT[type="button"] { margin: 6px; float: right; border: 1px solid #ededed; background-color: transparent; color: #ededed; font-weight: bold; cursor: hand; cursor: pointer; }
+
+/* Dialogs
+----------------------------------*/
+.dialog OL { text-align: left; }
+
+/* Selectbox
+----------------------------------*/
+.selection { float: left; width: 100%; padding: 0px; background-color: #3b3a3a; border-top: 1px dashed #FFF; }
+.selection-data { width: 100%; list-style-type: none; }
+.selection-data LI { display: inline-block; width: 33%; float: left; }
+.selection-data A, .selection-data SPAN { color: #FFF; font-size: 14px; font-weight: bold; text-decoration: none; }
+.selection-link-hide { clear: both; float: right; margin: 3px; }
+
+/* Alignment
+----------------------------------*/
+.left { padding-left: 0.5em; text-align: left; }
+.right { padding-right: 0.5em; text-align: right; }
+.center { text-align: center; }
+
+/* Background
+----------------------------------*/
+.exception { background-color: #ce2a1b !important; }
+.success, #content UL LI.build-passed-link { background-color: #4e800c !important; }
+.failed, #content UL LI.build-failed-link { background-color: #ce2a1b !important; }
+.warning { background-color: #f0b440 !important; }
+.success-light { background-color: #639f27 !important; }
+.failed-light { background-color: #c94b3e !important; }
+.warning-light { background-color: #f1c775 !important; }
+
+/* Text
+----------------------------------*/
+.success-text { color: #4e800c !important; }
+.failed-text { color: #ce2a1b !important; }
+.warning-text { color: #B77F12 !important; }
+.failed-underline { border-bottom: dotted 2px #ce2a1b; }
+
+/* Layout
+----------------------------------*/
+#header, #main, #footer { width: 1000px; margin: 0 auto; padding: 0px; text-align: left; }
+#header { margin-top: 10px !important; height: 65px; border-bottom: solid 2px #3b3a3a; vertical-align: top; }
+#menu { float: left; width: 200px; margin: 20px 10px 20px 0px; padding: 0px; }
+#content { float: right; clear: right; width: 790px; margin-top: 20px; }
+#footer { margin-bottom: 20px !important; border-top: solid 2px #3b3a3a; }
+
+/* Header
+----------------------------------*/
+.header-logo { float: left; color: #3b3a3a; }
+.heading { float: left; font: 30px times new roman; letter-spacing: 2px; }
+.subheading { float: left; clear: both; margin-top: -7px; margin-left: 30px; color: #3b3a3a; font: 12px trebuchet ms; }
+
+.header-login, .header-navigation { display: block; float: right; }
+
+.header-login { padding: 5px; margin-top: -10px; clear: right; background-color: #f0b440; }
+.header-login A { float: left; margin: 2px; }
+
+.header-navigation { clear: both; }
+.header-navigation UL { display: block; margin: 0px; list-style-type: none; }
+.route { float: left; padding-left: 13px; background: url("../images/separator.png") no-repeat 0px 3px; color: #919EA9; font-weight: bold; }
+.route A { color: #3b3a3a; text-decoration: none; }
+.route-dashboard { padding-left: 0px !important; background-image: none !important; }
+
+/* Menu
+----------------------------------*/
+#menu H2 { display: block; width: 100%; height: 35px; margin: 0px 0px 2px 0px; padding: 0px; background-color: #3b3a3a; color: #ededed; font: normal 15px trebuchet ms; vertical-align: middle; cursor: pointer; cursor: hand; }
+#menu H2 SPAN { display: inline-block; margin: 6px 10px 6px 10px; }
+
+#menu UL { display: block; margin: 0px; padding: 0px; list-style-type: none; }
+
+#menu .section UL { width: 100%; }
+#menu .section LI { display: block; width: 100%; height: 30px; margin: 0px 0px 1px 0px; padding: 0px; border-top: solid 1px #c9c5c5; border-bottom: solid 1px #c9c5c5; background-image: url("../images/menu_links_bg.png"); font-size: 12px; vertical-align: middle; }
+#menu .section LI SPAN { display: block; margin: 7px; }
+#menu A { color: #615e5c; font-weight: bold; }
+
+#menu .build-passed-link { background: url("../images/build_passed_link_bg.png") !important; }
+#menu .build-failed-link { background: url("../images/build_failed_link_bg.png") !important; }
+
+.build-views { display: block; height: 25px; margin: 0px 0px 3px 0px; }
+.build-views UL { float: right; height: 100%; margin-bottom: 3px !important; }
+.build-views LI { float: left; width: 24px; height: 24px; margin: 1px; cursor: pointer; cursor: hand; }
+.build-views LI SPAN { display: none; }
+
+.colors { float: left !important; margin-left: -1px !important; }
+
+#searchbox { width: 130px; margin: -4px 0px 0px 2px; background-color: #3b3a3a; color: #ededed; font: normal 15px trebuchet ms; vertical-align: middle; border-bottom: 1px solid #c9c5c5; }
+
+/* Content
+----------------------------------*/
+#content .section { margin: 0px; margin-bottom: 5px !important; }
+#content .section-content { width: 770px; margin: 0px; padding: 10px; background: #EEE; color: #3b3a3a !important; font-size: 12px; overflow: hidden; }
+
+H1.title, #content .build { display: block; width: 100%; height: 60px; margin: 0px; padding: 0px; background-color: #3b3a3a; font-size: 24px; vertical-align: middle; }
+H1.title, H1.title A, #content .build A { color: #ededed; font-family: trebuchet ms; cursor: pointer; cursor: hand; }
+
+H1.title SPAN, #content .build SPAN { float: left; margin-left: 10px !important; margin-top: 15px; }
+H1.title SPAN, H1.title A, #content .build SPAN, #content .build A { display: inline-block; }
+
+.title-data { float: right !important; margin-right: 10px !important; }
+.title-data .icon { margin: 0.1em; background-color: #FFF; }
+.title-data .icon SPAN, .title-data .icon INPUT { display: none; }
+.title-data SPAN { margin: 0px !important; }
+.button-rss, .title-data .icon-large-down-arrow { background-color: Transparent !important; }
+
+#content .build { margin-bottom: 4px !important; }
+
+.log, PRE { overflow: auto; white-space: pre-wrap; }
+
+.section-content A { color: #000000; text-decoration: underline; }
+.report-link { color: #FFFFFF !important; text-decoration: none !important; }
+
+/* Footer
+----------------------------------*/
+.version { float: left; color: #3b3a3a; font-size: 10px; }
+.authors { float: right; margin-top: 2px; }
+.authors A { display: block; float: right; margin-left: 5px; }
+.authors A.thought-works { width: 129px; height: 30px; background-image: url('../images/thoughtworks.png'); }
+.authors A.saiku { width: 34px; height: 25px; background-image: url('../images/saiku.png'); }
+.authors SPAN { display: none; }
+
+/* ------------------------------------- */
+/* Extensions
+/* ------------------------------------- */
+
+/* jQuery XPH Tooltip
+----------------------------------*/
+.tooltip, .tooltip-fixed { color: #3b3a3a; border: 1px solid #3b3a3a; background: #ffffee; text-align: left; }
+.tooltip-fixed { width: 400px; }
+.tooltip .title { display: none; }
+.tooltip .text, .tooltip .url { padding: 5px; font-size: x-small; }
+.tooltip .url { font-weight: bold; }
+.tooltip .shortcut { font-style: italic; font-weight: bold; }
+.tooltip P, .tooltip-fixed P { margin: 2px; padding: 0px; }
.tooltip-fixed .text { font-size: small; }
\ No newline at end of file
diff --git a/Source/Kaizen/css/ext.styles.css b/Source/Kaizen/css/ext.styles.css
new file mode 100644
index 0000000..5c0e363
--- /dev/null
+++ b/Source/Kaizen/css/ext.styles.css
@@ -0,0 +1,183 @@
+/*
+Styles version 1.0
+by sinnerinc
+
+History:
+# 2012-02-14:
+ Initial version
+*/
+
+/* General
+----------------------------------*/
+.leftBlock {
+ float: left;
+ display: block;
+}
+
+.rightBlock {
+ float: right;
+ display: block;
+}
+
+/* Main template overrides
+-----------------------------------*/
+#menu .section LI { height: auto; }
+.route a:hover { color: gray; }
+#header, #footer { border-color: #E7E3E3; }
+
+/* Alternate rows
+-----------------------------------*/
+.evenRow { background: #FFF url("../images/ext/menu_links_bg_alter.png"); }
+.inner-rule-description { background: #FFF url("../images/ext/menu_links_bg_contrast.png"); color: #787373; }
+
+/* Icons
+------------------------------------*/
+.expandRule {
+ display: block;
+ width: 24px;
+ height: 22px;
+ text-indent: -99999px;
+ overflow: hidden;
+ background-repeat: no-repeat;
+ background-image: url('../images/ext/Expand20.png');
+ float: right;
+}
+
+/* Header
+------------------------------------*/
+.title-data img{ margin-top:3px; }
+.title-data div{ float: left; }
+
+/* Misc
+------------------------------------*/
+.fxcopUsageCategory { font-style: italic; color: #a7a1a1; }
+
+div.fxcop-breaking-reason { /* actually ugly hack, otherwise FF or Chrome won't break line in long file names.... */
+ word-break:break-all;
+ word-wrap: break-word;
+ font-weight: bold;
+ width: 650px;
+}
+
+a.regularHover { text-decoration: none; }
+a.regularHover:hover { text-decoration: underline; }
+table.inner-rule-description span.NonBreaking { color: #5A9D5B; font-size: 80%; }
+table.inner-rule-description span.Breaking { color: #770606; font-size: 80%; }
+
+td.stylecop-filename-report {
+ background: #FFF url("../images/ext/menu_links_bg_red.png");
+ color: #770606;
+ font-size: 110%;
+ padding: 3px;
+ overflow: hidden;
+ word-break: break-all;
+}
+
+tr.msbuild-summary-success td, tr.msbuild-summary-failure td {
+ font-weight: bold;
+ padding: 3px;
+ vertical-align: top;
+}
+
+.table-container { table-layout: fixed; }
+.table-container tr{}
+.table-container tr td {}
+.table-container tr td span.long-text {
+ text-overflow: ellipsis;
+ overflow: hidden;
+ width: 760px;
+ display: block;
+}
+
+/*.table-container tr td span:hover {
+ overflow: visible;
+}*/
+
+tr.msbuild-summary-success td { background: #FFF url("../images/ext/menu_links_bg_green.png"); }
+tr.msbuild-summary-failure td { background: #FFF url("../images/ext/menu_links_bg_red.png"); }
+tr.msbuild-project td, tr.msbuild-target td { font-weight: bold; }
+tr.msbuild-message-normal td, tr.msbuild-message-low td, tr.msbuild-message-high td { word-break: break-all; }
+tr.msbuild-message-normal td { color: #887B72; }
+tr.msbuild-message-low td { color: #ADA39D; }
+tr.msbuild-message-high td { color: #554A43; font-style: italic; }
+tr.msbuild-warning td { color: #D26117; }
+
+div.section a.msbuildMessagesOn, div.section a.msbuildMessagesOff {
+ display: block; text-indent: -99999px; overflow: hidden; width: 32px; height: 32px;
+ background-repeat: no-repeat; background-image: url('../images/ext/MessagesSprint32.png');
+ float: left;
+}
+div.section a.msbuildMessagesOn { background-position: 0px 0px; }
+div.section a.msbuildMessagesOff { background-position: 0px -32px; }
+
+.buildLogIcon {width: 12px; height: 12px; margin-right: 4px; }
+.certaintyCell { width: 70px; }
+.lineNumberCell { width: 60px; }
+.innerWrapper {display: none; }
+.forceThin { font-weight: normal; color: #ADA39D; }
+.mspec-context-name { font-size: 110%; font-style: italic; }
+.stacktrace { font-size: 90%; font-style: italic; }
+
+/* Modifications section in report */
+.data-modification-user img {
+ width: 48px;
+}
+
+.data-modification-comment {
+ font-style: italic;
+}
+
+.data-modification-filename {
+ font-weight: bold;
+}
+
+.data-modification-date {
+ text-align: right;
+ color: #ADA39D;
+ font-style: italic;
+}
+
+.data img.filestate {
+ width: 16px;
+ margin-right: 4px;
+}
+
+/* Project report view */
+td.data a.report,
+td.data a.externalLink {
+ display: block;
+ background-repeat: no-repeat;
+ padding: 0 5px 0 36px;
+ height:32px;
+ float: left;
+ text-decoration: none;
+ font-size: 150%;
+ line-height: 32px;
+ color: #9D9999;
+}
+
+td.data a.report:hover,
+td.data a.externalLink:hover {
+ color: #000000;
+}
+
+td.data a.report {
+ background-image: url('../images/ext/report.ReportLink32.png');
+}
+
+td.data a.externalLink {
+ background-image: url('../images/ext/report.ExternalLink32.png');
+}
+
+/* Tree
+----------------------------------------*/
+.indent-tree { padding-left: 15px; }
+
+/* Log
+----------------------------------------*/
+.log-warning { color: #ff7f00; }
+.log-error { color: #CC0000; font-weight: bold; }
+.log-target { font-style: italic; }
+.log-project { font-weight: bold; }
+.log-message { color: #7f7f7f; }
+
diff --git a/Source/Kaizen/images/ext/ArrowRight22.png b/Source/Kaizen/images/ext/ArrowRight22.png
new file mode 100644
index 0000000..1ee5a29
Binary files /dev/null and b/Source/Kaizen/images/ext/ArrowRight22.png differ
diff --git a/Source/Kaizen/images/ext/CriticalError.png b/Source/Kaizen/images/ext/CriticalError.png
new file mode 100644
index 0000000..6d65902
Binary files /dev/null and b/Source/Kaizen/images/ext/CriticalError.png differ
diff --git a/Source/Kaizen/images/ext/CriticalWarning.png b/Source/Kaizen/images/ext/CriticalWarning.png
new file mode 100644
index 0000000..0cf424e
Binary files /dev/null and b/Source/Kaizen/images/ext/CriticalWarning.png differ
diff --git a/Source/Kaizen/images/ext/Error.png b/Source/Kaizen/images/ext/Error.png
new file mode 100644
index 0000000..ae8612a
Binary files /dev/null and b/Source/Kaizen/images/ext/Error.png differ
diff --git a/Source/Kaizen/images/ext/Expand.png b/Source/Kaizen/images/ext/Expand.png
new file mode 100644
index 0000000..897b1d0
Binary files /dev/null and b/Source/Kaizen/images/ext/Expand.png differ
diff --git a/Source/Kaizen/images/ext/Expand20.png b/Source/Kaizen/images/ext/Expand20.png
new file mode 100644
index 0000000..2c26ca7
Binary files /dev/null and b/Source/Kaizen/images/ext/Expand20.png differ
diff --git a/Source/Kaizen/images/ext/MessagesSprint24.png b/Source/Kaizen/images/ext/MessagesSprint24.png
new file mode 100644
index 0000000..f7dc53e
Binary files /dev/null and b/Source/Kaizen/images/ext/MessagesSprint24.png differ
diff --git a/Source/Kaizen/images/ext/MessagesSprint32.png b/Source/Kaizen/images/ext/MessagesSprint32.png
new file mode 100644
index 0000000..4c558b9
Binary files /dev/null and b/Source/Kaizen/images/ext/MessagesSprint32.png differ
diff --git a/Source/Kaizen/images/ext/Package48.png b/Source/Kaizen/images/ext/Package48.png
new file mode 100644
index 0000000..3569d9f
Binary files /dev/null and b/Source/Kaizen/images/ext/Package48.png differ
diff --git a/Source/Kaizen/images/ext/SuccessFalse.png b/Source/Kaizen/images/ext/SuccessFalse.png
new file mode 100644
index 0000000..ae8612a
Binary files /dev/null and b/Source/Kaizen/images/ext/SuccessFalse.png differ
diff --git a/Source/Kaizen/images/ext/SuccessTrue.png b/Source/Kaizen/images/ext/SuccessTrue.png
new file mode 100644
index 0000000..73d9761
Binary files /dev/null and b/Source/Kaizen/images/ext/SuccessTrue.png differ
diff --git a/Source/Kaizen/images/ext/Warning.png b/Source/Kaizen/images/ext/Warning.png
new file mode 100644
index 0000000..02a1c87
Binary files /dev/null and b/Source/Kaizen/images/ext/Warning.png differ
diff --git a/Source/Kaizen/images/ext/ccnetlogo.gif b/Source/Kaizen/images/ext/ccnetlogo.gif
new file mode 100644
index 0000000..1e405a2
Binary files /dev/null and b/Source/Kaizen/images/ext/ccnetlogo.gif differ
diff --git a/Source/Kaizen/images/ext/fplogo.gif b/Source/Kaizen/images/ext/fplogo.gif
new file mode 100644
index 0000000..d22f0b6
Binary files /dev/null and b/Source/Kaizen/images/ext/fplogo.gif differ
diff --git a/Source/Kaizen/images/ext/logo.gif b/Source/Kaizen/images/ext/logo.gif
new file mode 100644
index 0000000..a4b78a6
Binary files /dev/null and b/Source/Kaizen/images/ext/logo.gif differ
diff --git a/Source/Kaizen/images/ext/menu_links_bg_alter.png b/Source/Kaizen/images/ext/menu_links_bg_alter.png
new file mode 100644
index 0000000..b9e9842
Binary files /dev/null and b/Source/Kaizen/images/ext/menu_links_bg_alter.png differ
diff --git a/Source/Kaizen/images/ext/menu_links_bg_contrast.png b/Source/Kaizen/images/ext/menu_links_bg_contrast.png
new file mode 100644
index 0000000..efde728
Binary files /dev/null and b/Source/Kaizen/images/ext/menu_links_bg_contrast.png differ
diff --git a/Source/Kaizen/images/ext/menu_links_bg_green.png b/Source/Kaizen/images/ext/menu_links_bg_green.png
new file mode 100644
index 0000000..77b612d
Binary files /dev/null and b/Source/Kaizen/images/ext/menu_links_bg_green.png differ
diff --git a/Source/Kaizen/images/ext/menu_links_bg_red.png b/Source/Kaizen/images/ext/menu_links_bg_red.png
new file mode 100644
index 0000000..65bc764
Binary files /dev/null and b/Source/Kaizen/images/ext/menu_links_bg_red.png differ
diff --git a/Source/Kaizen/images/ext/report.ExternalLink32.png b/Source/Kaizen/images/ext/report.ExternalLink32.png
new file mode 100644
index 0000000..be4e0b4
Binary files /dev/null and b/Source/Kaizen/images/ext/report.ExternalLink32.png differ
diff --git a/Source/Kaizen/images/ext/report.ReportLink128.png b/Source/Kaizen/images/ext/report.ReportLink128.png
new file mode 100644
index 0000000..98b7f76
Binary files /dev/null and b/Source/Kaizen/images/ext/report.ReportLink128.png differ
diff --git a/Source/Kaizen/images/ext/report.ReportLink32.png b/Source/Kaizen/images/ext/report.ReportLink32.png
new file mode 100644
index 0000000..5d41212
Binary files /dev/null and b/Source/Kaizen/images/ext/report.ReportLink32.png differ
diff --git a/Source/Kaizen/images/ext/report.ReportLink64.png b/Source/Kaizen/images/ext/report.ReportLink64.png
new file mode 100644
index 0000000..b197ef9
Binary files /dev/null and b/Source/Kaizen/images/ext/report.ReportLink64.png differ
diff --git a/Source/Kaizen/images/ext/scm.Added.png b/Source/Kaizen/images/ext/scm.Added.png
new file mode 100644
index 0000000..1aed5c7
Binary files /dev/null and b/Source/Kaizen/images/ext/scm.Added.png differ
diff --git a/Source/Kaizen/images/ext/scm.Deleted.png b/Source/Kaizen/images/ext/scm.Deleted.png
new file mode 100644
index 0000000..ae8612a
Binary files /dev/null and b/Source/Kaizen/images/ext/scm.Deleted.png differ
diff --git a/Source/Kaizen/images/ext/scm.Modified.png b/Source/Kaizen/images/ext/scm.Modified.png
new file mode 100644
index 0000000..aead054
Binary files /dev/null and b/Source/Kaizen/images/ext/scm.Modified.png differ
diff --git a/Source/Kaizen/js/ccnet.js b/Source/Kaizen/js/ccnet.js
new file mode 100644
index 0000000..4f34d05
--- /dev/null
+++ b/Source/Kaizen/js/ccnet.js
@@ -0,0 +1,20 @@
+function checkForParams(buttonEl,checkUrl)
+{
+ $('#parameterEditor').replaceWith('
Loading parameters, please wait...
');
+ $('#parameterCheck').dialog('open');
+
+ jQuery.get(checkUrl,function(data){
+ if(data=='NONE'){
+
+ $('#parameterCheck').dialog('close');
+
+ var button=$(buttonEl);
+ button.after(' ');
+ buttonEl.parentNode.submit();
+
+ }
+ else{
+ $('#parameterEditor').replaceWith(''+data+'
');
+ }
+ });
+}
\ No newline at end of file
diff --git a/Source/Kaizen/js/ext_additional.js b/Source/Kaizen/js/ext_additional.js
new file mode 100644
index 0000000..568b9c1
--- /dev/null
+++ b/Source/Kaizen/js/ext_additional.js
@@ -0,0 +1,51 @@
+/* Startup
+----------------------------------*/
+$(document).ready(function() {
+ BindFxCopSlidings();
+ BindMsBuildLogActions();
+});
+
+function BindFxCopSlidings() {
+ $('a.expandRule').click(function () {
+ var msgid = $(this).attr('ref');
+ $(this).closest('tr').next().find('td.contentCell div#' + msgid).slideToggle('fast');
+ return false;
+ });
+
+ $('a.expandAllRules').click(function () {
+
+ var msgs = $(this).closest('div.section').children('div.section-content').find('div.innerWrapper');
+
+ var switchIcon = $(this).children('img');
+ if(switchIcon.hasClass('collapsed'))
+ {
+ msgs.slideDown('fast');
+ }
+ else
+ {
+ msgs.slideUp('fast');
+ }
+ switchIcon.toggleClass('collapsed');
+ return false;
+ });
+}
+
+function BindMsBuildLogActions()
+{
+ $('div.section a.msbuildHeaderIcon').click(function(e) {
+ var collection = $(this).closest('div.section').children('div.section-content').find('tr[class ^= msbuild-message]');
+
+ if( $(this).hasClass('msbuildMessagesOn') ) {
+ collection.hide();
+ $(this).removeClass('msbuildMessagesOn')
+ $(this).addClass('msbuildMessagesOff')
+ }
+ else {
+ collection.show();
+ $(this).removeClass('msbuildMessagesOff')
+ $(this).addClass('msbuildMessagesOn')
+ }
+ e.preventDefault();
+ });
+}
+
diff --git a/Source/Kaizen/js/jquery.gravatar.js b/Source/Kaizen/js/jquery.gravatar.js
new file mode 100644
index 0000000..67e2714
--- /dev/null
+++ b/Source/Kaizen/js/jquery.gravatar.js
@@ -0,0 +1,46 @@
+/*
+ * jQuery.gravatar 1.0.1 (2009-01-08)
+ *
+ * Written by Zach Leatherman
+ * http://zachleat.com
+ *
+ * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/)
+ *
+ * Requires jQuery http://jquery.com (1.2.6 at time of release)
+ * Requires http://pajhome.org.uk/crypt/md5/md5.js
+ */
+
+(function($)
+{
+ $.gravatar = function(emailAddress, overrides)
+ {
+ var options = $.extend({
+ // Defaults are not hardcoded here in case gravatar changes them on their end.
+ // integer size: between 1 and 512, default 80 (in pixels)
+ size: '',
+ // rating: g (default), pg, r, x
+ rating: '',
+ // url to define a default image (can also be one of: identicon, monsterid, wavatar)
+ image: '',
+ // secure
+ secure: false
+ }, overrides);
+
+ var baseUrl = options.secure ? 'https://secure.gravatar.com/avatar/' : 'http://www.gravatar.com/avatar/';
+
+ // Change this here, if you are given only username for example
+ var emailMod = emailAddress + '@example.com';
+
+
+ return $(' ').bind('error', function()
+ {
+ $(this).remove();
+ });
+ };
+})(jQuery);
diff --git a/Source/Kaizen/js/md5.js b/Source/Kaizen/js/md5.js
new file mode 100644
index 0000000..46d2aab
--- /dev/null
+++ b/Source/Kaizen/js/md5.js
@@ -0,0 +1,256 @@
+/*
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ * Digest Algorithm, as defined in RFC 1321.
+ * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for more info.
+ */
+
+/*
+ * Configurable variables. You may need to tweak these to be compatible with
+ * the server-side, but the defaults work in most cases.
+ */
+var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
+var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
+var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
+
+/*
+ * These are the functions you'll usually want to call
+ * They take string arguments and return either hex or base-64 encoded strings
+ */
+function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
+function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
+function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
+function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
+function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
+function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
+
+/*
+ * Perform a simple self-test to see if the VM is working
+ */
+function md5_vm_test()
+{
+ return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
+}
+
+/*
+ * Calculate the MD5 of an array of little-endian words, and a bit length
+ */
+function core_md5(x, len)
+{
+ /* append padding */
+ x[len >> 5] |= 0x80 << ((len) % 32);
+ x[(((len + 64) >>> 9) << 4) + 14] = len;
+
+ var a = 1732584193;
+ var b = -271733879;
+ var c = -1732584194;
+ var d = 271733878;
+
+ for(var i = 0; i < x.length; i += 16)
+ {
+ var olda = a;
+ var oldb = b;
+ var oldc = c;
+ var oldd = d;
+
+ a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
+ d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
+ c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
+ b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
+ a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
+ d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
+ c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
+ b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
+ a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
+ d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
+ c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
+ b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
+ a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
+ d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
+ c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
+ b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
+
+ a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
+ d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
+ c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
+ b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
+ a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
+ d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
+ c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
+ b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
+ a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
+ d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
+ c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
+ b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
+ a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
+ d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
+ c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
+ b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
+
+ a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
+ d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
+ c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
+ b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
+ a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
+ d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
+ c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
+ b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
+ a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
+ d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
+ c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
+ b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
+ a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
+ d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
+ c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
+ b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
+
+ a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
+ d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
+ c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
+ b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
+ a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
+ d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
+ c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
+ b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
+ a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
+ d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
+ c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
+ b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
+ a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
+ d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
+ c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
+ b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
+
+ a = safe_add(a, olda);
+ b = safe_add(b, oldb);
+ c = safe_add(c, oldc);
+ d = safe_add(d, oldd);
+ }
+ return Array(a, b, c, d);
+
+}
+
+/*
+ * These functions implement the four basic operations the algorithm uses.
+ */
+function md5_cmn(q, a, b, x, s, t)
+{
+ return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
+}
+function md5_ff(a, b, c, d, x, s, t)
+{
+ return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
+}
+function md5_gg(a, b, c, d, x, s, t)
+{
+ return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
+}
+function md5_hh(a, b, c, d, x, s, t)
+{
+ return md5_cmn(b ^ c ^ d, a, b, x, s, t);
+}
+function md5_ii(a, b, c, d, x, s, t)
+{
+ return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
+}
+
+/*
+ * Calculate the HMAC-MD5, of a key and some data
+ */
+function core_hmac_md5(key, data)
+{
+ var bkey = str2binl(key);
+ if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
+
+ var ipad = Array(16), opad = Array(16);
+ for(var i = 0; i < 16; i++)
+ {
+ ipad[i] = bkey[i] ^ 0x36363636;
+ opad[i] = bkey[i] ^ 0x5C5C5C5C;
+ }
+
+ var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
+ return core_md5(opad.concat(hash), 512 + 128);
+}
+
+/*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+function safe_add(x, y)
+{
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+ var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+ return (msw << 16) | (lsw & 0xFFFF);
+}
+
+/*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+function bit_rol(num, cnt)
+{
+ return (num << cnt) | (num >>> (32 - cnt));
+}
+
+/*
+ * Convert a string to an array of little-endian words
+ * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
+ */
+function str2binl(str)
+{
+ var bin = Array();
+ var mask = (1 << chrsz) - 1;
+ for(var i = 0; i < str.length * chrsz; i += chrsz)
+ bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
+ return bin;
+}
+
+/*
+ * Convert an array of little-endian words to a string
+ */
+function binl2str(bin)
+{
+ var str = "";
+ var mask = (1 << chrsz) - 1;
+ for(var i = 0; i < bin.length * 32; i += chrsz)
+ str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
+ return str;
+}
+
+/*
+ * Convert an array of little-endian words to a hex string.
+ */
+function binl2hex(binarray)
+{
+ var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
+ var str = "";
+ for(var i = 0; i < binarray.length * 4; i++)
+ {
+ str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
+ hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
+ }
+ return str;
+}
+
+/*
+ * Convert an array of little-endian words to a base-64 string
+ */
+function binl2b64(binarray)
+{
+ var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var str = "";
+ for(var i = 0; i < binarray.length * 4; i += 3)
+ {
+ var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16)
+ | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
+ | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
+ for(var j = 0; j < 4; j++)
+ {
+ if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
+ else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
+ }
+ }
+ return str;
+}
diff --git a/Source/Kaizen/templates/AdministerDashboard.vm b/Source/Kaizen/templates/AdministerDashboard.vm
index c8bc76f..10c38dd 100644
--- a/Source/Kaizen/templates/AdministerDashboard.vm
+++ b/Source/Kaizen/templates/AdministerDashboard.vm
@@ -1,251 +1,251 @@
-
-
-
-
-
-
- #foreach ($Event in $Events)
- $Event.Message
- #end
-
-
-
-
-
-
-#if ($Result.Length > 0)
-
- $Result
- #if ($Events)
-
- #end
- #if ($InstallPackage.Length > 0)
-
- #end
-
-#end
-#if ($Error != "")
-
-
$Error
- #if ($Events)
-
(View Log )
- #end
-
-#end
-
-
-
- Administration Dashboard
-
-
-
-
-
-
-
-
-
- Remote Servers
-
-
-
-
- Name
- Link
-
- #foreach ($Server in $Servers)
-
-
-
- $Server.Name
-
-
- #if ($Server.AllowForceBuild)
-
- #else
-
- #end
-
- #if ($Server.AllowStartStopBuild)
-
- #else
-
- #end
-
-
-
- $Server.Url
-
-
-
- #end
-
-
-
-
-
-
-
-
-
-
- Packages
-
-
-
-
- Name
- Description
- Status
-
- #foreach ($Package in $Packages)
-
-
-
- $Package.Name
-
- $Package.FileName
-
- $Package.Description
-
- #if ($Package.IsInstalled)
- [Installed]
- #else
- [Not installed]
- #end
-
-
- #end
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ #foreach ($Event in $Events)
+ $Event.Message
+ #end
+
+
+
+
+
+
+#if ($Result.Length > 0)
+
+ $Result
+ #if ($Events)
+
+ #end
+ #if ($InstallPackage.Length > 0)
+
+ #end
+
+#end
+#if ($Error != "")
+
+
$Error
+ #if ($Events)
+
(View Log )
+ #end
+
+#end
+
+
+
+ Administration Dashboard
+
+
+
+
+
+
+
+
+
+ Remote Servers
+
+
+
+
+ Name
+ Link
+
+ #foreach ($Server in $Servers)
+
+
+
+ $Server.Name
+
+
+ #if ($Server.AllowForceBuild)
+
+ #else
+
+ #end
+
+ #if ($Server.AllowStartStopBuild)
+
+ #else
+
+ #end
+
+
+
+ $Server.Url
+
+
+
+ #end
+
+
+
+
+
+
+
+
+
+
+ Packages
+
+
+
+
+ Name
+ Description
+ Status
+
+ #foreach ($Package in $Packages)
+
+
+
+ $Package.Name
+
+ $Package.FileName
+
+ $Package.Description
+
+ #if ($Package.IsInstalled)
+ [Installed]
+ #else
+ [Not installed]
+ #end
+
+
+ #end
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Source/Kaizen/templates/BuildLog.vm b/Source/Kaizen/templates/BuildLog.vm
index 58e55bc..5d0663b 100644
--- a/Source/Kaizen/templates/BuildLog.vm
+++ b/Source/Kaizen/templates/BuildLog.vm
@@ -1,13 +1,21 @@
+
+
Build Log
- Click here to open log in its own page
+ Click here to open log in its own page
-
$log
+
$log
+
+
+
+
diff --git a/Source/Kaizen/templates/ProjectGrid.vm b/Source/Kaizen/templates/ProjectGrid.vm
index d274db5..9144044 100644
--- a/Source/Kaizen/templates/ProjectGrid.vm
+++ b/Source/Kaizen/templates/ProjectGrid.vm
@@ -1,4 +1,23 @@
+
+
+
$translations.Translate("Loading parameters, please wait...")
+
+
#if ($forceBuildMessage.Length > 0)
$forceBuildMessage
@@ -99,7 +118,7 @@
#if ($projectGridRow.allowForceBuild)
-
+
#end
#if ($projectGridRow.AllowStartStopBuild)
diff --git a/Source/Kaizen/templates/ProjectReport.vm b/Source/Kaizen/templates/ProjectReport.vm
index 41c9092..4b37d44 100644
--- a/Source/Kaizen/templates/ProjectReport.vm
+++ b/Source/Kaizen/templates/ProjectReport.vm
@@ -1,160 +1,186 @@
-
-#if ($StatusMessage.Length > 0)
-
- $StatusMessage
-
-#end
-
-
- #if ($status.BuildStatus == "Failure")
-
- #elseif ($status.BuildStatus == "Success")
-
- #elseif ($status.BuildStatus == "Exception")
-
- #elseif ($status.BuildStatus == "Unknown")
-
- #else
-
- #end
- $projectName
- #if ($rssDataPresent)
-
-
-
- #end
-
- #if ($externalLinks.Length > 0)
-
- #end
-
-
-
- Status
-
-
-
-
- Last Build Status
- $status.BuildStatus
-
-
- Last Build Label
- $status.LastBuildLabel
-
-
- CCNet Status
- $status.Status
-
-
- Activity
- $status.Activity
-
-
-
-
-
-
-
-
-
-
-
- Build
-
-
-
- #if ($noLogsAvailable)
-
-
- There are currently no build logs available for this project - make sure your Build Server configuration is correct and that this Project's build is not throwing any exceptions
-
-
- #else
- #if ($pluginInfo)
-
- Most Recent Build Results
-
-
- $pluginInfo
-
- #end
-
- Click here for the full build report.
-
- #end
-
-
-
-#if ($highestAmountPerDay > 0)
- #set($highestViewPerDay= $highestAmountPerDay / $dateMultiPlier)
-
-
- Build Overview
-
-
-
-
- $OKPercent%
-
-
-
-
-
-
-
-
- #foreach ($dayBuildCounter in [1..$highestViewPerDay])
-
- #foreach ($currentDayInfo in $graphDayInfo)
- #foreach ($multi in [1..$dateMultiPlier])
- #set ($cellIndex = (($highestViewPerDay - $dayBuildCounter) * $dateMultiPlier) + $multi)
- #if ( $cellIndex <= $currentDayInfo.AmountOfBuilds)
- #set ($buildIndex = $cellIndex - 1 )
- #if ($currentDayInfo.Build($buildIndex).IsSuccesFull)
- #set($color = "success")
- #else
- #set($color ="failed")
- #end
-
- $cellIndex
-
- #else
-
- #end
- #end
- #end
-
- #end
-
- #foreach ($currentDayInfo in $graphDayInfo)
- $currentDayInfo.BuildDateFormatted
- #end
-
-
-
-
-
-
-
-#end
+
+
+
+
$translations.Translate("Loading parameters, please wait...")
+
+
+
+#if ($StatusMessage.Length > 0)
+
+ $StatusMessage
+
+#end
+
+
+ #if ($status.BuildStatus == "Failure")
+
+ #elseif ($status.BuildStatus == "Success")
+
+ #elseif ($status.BuildStatus == "Exception")
+
+ #elseif ($status.BuildStatus == "Unknown")
+
+ #else
+
+ #end
+ $projectName
+ #if ($rssDataPresent)
+
+
+
+ #end
+
+
+
+
+ #if ($noLogsAvailable)
+
+
+ There are currently no build logs available for this project - make sure your Build Server configuration is correct and that this Project's build is not throwing any exceptions
+
+
+ #else
+ #if ($pluginInfo)
+
+ Most Recent Build Results
+
+
+ $pluginInfo
+
+ #end
+
+
+ Full build report
+
+
+ #end
+
+
+
+
+
+
+
+
+ Status
+
+
+
+
+ Last Build Status
+ $status.BuildStatus
+
+
+ Last Build Label
+ $status.LastBuildLabel
+
+
+ CCNet Status
+ $status.Status
+
+
+ Activity
+ $status.Activity
+
+
+
+
+
+
+
+
+
+
+
+ Related links
+
+
+
+
+
+ #if ($externalLinks.Length > 0)
+ #foreach ($externalLink in $externalLinks)
+ $externalLink.Name
+ #end
+ #end
+
+
+
+
+
+#if ($highestAmountPerDay > 0)
+ #set($highestViewPerDay= $highestAmountPerDay / $dateMultiPlier)
+
+
+ Build Overview
+
+
+
+
+ $OKPercent%
+
+
+
+
+
+
+
+
+ #foreach ($dayBuildCounter in [1..$highestViewPerDay])
+
+ #foreach ($currentDayInfo in $graphDayInfo)
+ #foreach ($multi in [1..$dateMultiPlier])
+ #set ($cellIndex = (($highestViewPerDay - $dayBuildCounter) * $dateMultiPlier) + $multi)
+ #if ( $cellIndex <= $currentDayInfo.AmountOfBuilds)
+ #set ($buildIndex = $cellIndex - 1 )
+ #if ($currentDayInfo.Build($buildIndex).IsSuccesFull)
+ #set($color = "success")
+ #else
+ #set($color ="failed")
+ #end
+
+ $cellIndex
+
+ #else
+
+ #end
+ #end
+ #end
+
+ #end
+
+ #foreach ($currentDayInfo in $graphDayInfo)
+ $currentDayInfo.BuildDateFormatted
+ #end
+
+
+
+
+
+
+
+#end
\ No newline at end of file
diff --git a/Source/Kaizen/templates/SiteTemplate.vm b/Source/Kaizen/templates/SiteTemplate.vm
index dd9b4c6..4276de5 100644
--- a/Source/Kaizen/templates/SiteTemplate.vm
+++ b/Source/Kaizen/templates/SiteTemplate.vm
@@ -1,154 +1,170 @@
-
-
-
-
-
Continuous Integration - CruiseControl.NET
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Key
- Description
-
-
- D
- Navigate to dashboard
-
-
- Q
- Expands all sections
-
-
- W
- Collapses all sections
-
-
- E
- Expands sections with errors and warnings
-
-
- G
- Shows/hides green sections
-
-
- Y
- Shows/hides yellow sections
-
-
- R
- Shows/hides red sections
-
-
- 1..9
- Navigates to project (dashboard); Navigates to menu link
-
-
- F
- Find project
-
-
- L
- Navigates to project last build
-
-
- Z
- Navigates to previous build
-
-
- X
- Navigates to next build
-
-
- B
- Expands/collapses recent builds
-
-
- H
- Expands/collapses help
-
-
-
-
+
+
+
+
+
Continuous Integration - CruiseControl.NET
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Key
+ Description
+
+
+ D
+ Navigate to dashboard
+
+
+ Q
+ Expands all sections
+
+
+ W
+ Collapses all sections
+
+
+ E
+ Expands sections with errors and warnings
+
+
+ G
+ Shows/hides green sections
+
+
+ Y
+ Shows/hides yellow sections
+
+
+ R
+ Shows/hides red sections
+
+
+ 1..9
+ Navigates to project (dashboard); Navigates to menu link
+
+
+ F
+ Find project
+
+
+ L
+ Navigates to project last build
+
+
+ Z
+ Navigates to previous build
+
+
+ X
+ Navigates to next build
+
+
+ B
+ Expands/collapses recent builds
+
+
+ H
+ Expands/collapses help
+
+
+
+
\ No newline at end of file
diff --git a/Source/Kaizen/xsl/Design.xsl b/Source/Kaizen/xsl/Design.xsl
index 7e6c198..6791259 100644
--- a/Source/Kaizen/xsl/Design.xsl
+++ b/Source/Kaizen/xsl/Design.xsl
@@ -22,7 +22,7 @@
-
+
diff --git a/Source/Kaizen/xsl/DesignAnalysisSummary-FxCop.xsl b/Source/Kaizen/xsl/DesignAnalysisSummary-FxCop.xsl
index 0f82a67..b656dcf 100644
--- a/Source/Kaizen/xsl/DesignAnalysisSummary-FxCop.xsl
+++ b/Source/Kaizen/xsl/DesignAnalysisSummary-FxCop.xsl
@@ -26,7 +26,7 @@
-
+
diff --git a/Source/Kaizen/xsl/ModificationsSummary.xsl b/Source/Kaizen/xsl/ModificationsSummary.xsl
index 79e9c3d..c00516a 100644
--- a/Source/Kaizen/xsl/ModificationsSummary.xsl
+++ b/Source/Kaizen/xsl/ModificationsSummary.xsl
@@ -1,94 +1,118 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Themes/Kaizen/images/ext/scm. .png
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Source/Kaizen/xsl/compile-msbuild.xsl b/Source/Kaizen/xsl/compile-msbuild.xsl
new file mode 100644
index 0000000..b642803
--- /dev/null
+++ b/Source/Kaizen/xsl/compile-msbuild.xsl
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ( , ):
+
+ error :
+
+
+
+
+
+
+ ( , ):
+
+ warning :
+
+
+
diff --git a/Source/Kaizen/xsl/ext_ConsoleOutput.xsl b/Source/Kaizen/xsl/ext_ConsoleOutput.xsl
new file mode 100644
index 0000000..f3e0c9c
--- /dev/null
+++ b/Source/Kaizen/xsl/ext_ConsoleOutput.xsl
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+ Console output
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Target: (took: )
+
+
+
+
+ Building project: (took: )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Source/Kaizen/xsl/ext_FxCopReport.xsl b/Source/Kaizen/xsl/ext_FxCopReport.xsl
new file mode 100644
index 0000000..23e60d7
--- /dev/null
+++ b/Source/Kaizen/xsl/ext_FxCopReport.xsl
@@ -0,0 +1,227 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ evenRow
+
+
+
+
+
+
+ /Themes/Kaizen/images/ext/ .png
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ :
+
+ ( )
+
+
+
+
+
+
+ ( %)
+
+
+
+
+
+
+
+
+ oddRow
+
+
+
+
+
+
+
+
+ Found at:
+
+
+
+ \ at line
+
+
+
+
+
+
+
+ Resolution:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Description:
+
+
+
+
+
+
+
+
+ Rule File:
+
+
+ Version:
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Source/Kaizen/xsl/ext_MSBuildLog.xsl b/Source/Kaizen/xsl/ext_MSBuildLog.xsl
new file mode 100644
index 0000000..c2772c1
--- /dev/null
+++ b/Source/Kaizen/xsl/ext_MSBuildLog.xsl
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Executing target
+
+ ( )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Building project
+
+
+
+
+
+
+
+
+
+ ( )
+
+
+
+
+
+
diff --git a/Source/Kaizen/xsl/ext_MSBuildSummary.xsl b/Source/Kaizen/xsl/ext_MSBuildSummary.xsl
new file mode 100644
index 0000000..8f165b7
--- /dev/null
+++ b/Source/Kaizen/xsl/ext_MSBuildSummary.xsl
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MSBuild summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MSBuild tasks count:
+
+
+
+ (including failed)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ msbuild-summary-failure
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+ /Themes/Kaizen/images/ext/SuccessFalse.png
+
+
+ /Themes/Kaizen/images/ext/Warning.png
+
+
+ /Themes/Kaizen/images/ext/SuccessTrue.png
+
+
+
+
+
+ Build succeeded:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ( )
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Kaizen/xsl/ext_MSpecReport.xsl b/Source/Kaizen/xsl/ext_MSpecReport.xsl
new file mode 100644
index 0000000..f1d6f4a
--- /dev/null
+++ b/Source/Kaizen/xsl/ext_MSpecReport.xsl
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Concern:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ msbuild-summary-failure
+
+
+
+
+ msbuild-summary-success
+
+
+
+
+
+
+
+
+
+ /Themes/Kaizen/images/ext/Error.png
+
+
+ /Themes/Kaizen/images/ext/Warning.png
+
+
+ /Themes/Kaizen/images/ext/SuccessTrue.png
+
+
+
+
+
+
+ it
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Kaizen/xsl/ext_MSpecSummary.xsl b/Source/Kaizen/xsl/ext_MSpecSummary.xsl
new file mode 100644
index 0000000..aaf14ef
--- /dev/null
+++ b/Source/Kaizen/xsl/ext_MSpecSummary.xsl
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MSpec summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Themes/Kaizen/images/ext/Error.png
+
+
+ /Themes/Kaizen/images/ext/Warning.png
+
+
+ /Themes/Kaizen/images/ext/SuccessTrue.png
+
+
+
+
+
+
+
+
+
+ Concerns
+
+
+
+
+
+
+
+ Contexts
+
+
+
+
+
+
+
+ Specifications
+
+
+
+
+
+
+
+ Passed
+
+
+
+
+
+
+
+ Failed
+
+
+
+
+
+
+
+ Not implemented
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Kaizen/xsl/ext_StyleCopReport.xsl b/Source/Kaizen/xsl/ext_StyleCopReport.xsl
new file mode 100644
index 0000000..ffe109b
--- /dev/null
+++ b/Source/Kaizen/xsl/ext_StyleCopReport.xsl
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
section-content failed-light
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Warnings for:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ evenRow
+
+
+
+
+
+
+
+
+
+
+
+
+ ( )
+
+
+
+
+
+
+ oddRow
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Source/Kaizen/xsl/ext_StyleCopSummary.xsl b/Source/Kaizen/xsl/ext_StyleCopSummary.xsl
new file mode 100644
index 0000000..156b88b
--- /dev/null
+++ b/Source/Kaizen/xsl/ext_StyleCopSummary.xsl
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Warnings
+
+
+
+
+
+
+
+
+
+
+
+
+ Base path
+
+
+
+
+
+ Files with warnings
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Source/Kaizen/xsl/ext_Utils.xsl b/Source/Kaizen/xsl/ext_Utils.xsl
new file mode 100644
index 0000000..537e0f6
--- /dev/null
+++ b/Source/Kaizen/xsl/ext_Utils.xsl
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Source/Kaizen/xsl/msbuild.xsl b/Source/Kaizen/xsl/msbuild.xsl
new file mode 100644
index 0000000..ef95177
--- /dev/null
+++ b/Source/Kaizen/xsl/msbuild.xsl
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+
+
+
+
+
+ Log does not contain any XML output from MSBuild.
+
+ Please make sure that MSBuild is executed using the XmlLogger
+ (use the argument: /logger:Kobush.Build.Logging.XmlLogger,Kobush.Build.dll ).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Error(s)
+
+
+ Warning(s)
+
+
+ Time elapsed
+
+
+
+
+
+
+
+ Project " "
+
+
+ ( target(s)):
+
+
+ (default targets):
+
+
+
+
+
+
+ Done building project "
+
+
+
+ " -- FAILED.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Target " ":
+
+
+
+
+
+
+
+
+ Done building target " " -- FAILED.
+
+
+
+
+
+
+ Task " ":
+
+
+
+
+
+
+
+ Done executing task " "
+ -- FAILED .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ( , ):
+
+ error :
+
+
+
+
+
+
+ ( , ):
+
+ warning :
+
+
+