<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Greg Surges</title>
	<atom:link href="http://gregsurges.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gregsurges.com</link>
	<description>Computer Musician, Programmer, Hardware Hacker</description>
	<lastBuildDate>Thu, 21 Mar 2013 18:40:42 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>PyOracle Demo #1</title>
		<link>http://gregsurges.com/programming/pyoracle-programming/pyoracle-demo-1/</link>
		<comments>http://gregsurges.com/programming/pyoracle-programming/pyoracle-demo-1/#comments</comments>
		<pubDate>Thu, 21 Mar 2013 18:39:54 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[PyOracle]]></category>
		<category><![CDATA[machine improvisation]]></category>
		<category><![CDATA[Max/MSP]]></category>
		<category><![CDATA[pyoracle]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1786</guid>
		<description><![CDATA[PyOracle is a project using Python to analyze aspects of musical structure. Audio Oracle, an algorithm based on the Factor Oracle string matching algorithm, is used to detect introductions and repetitions of musical materials. Through this analysis, aspects of musical structure can be understood, and new versions of the analyzed work can be created. This [...]]]></description>
				<content:encoded><![CDATA[<p><iframe src="http://www.youtube.com/embed/jetFn_Hm7Zw" height="315" width="420" allowfullscreen="" frameborder="0"></iframe></p>
<p>PyOracle is a project using Python to analyze aspects of musical structure. Audio Oracle, an algorithm based on the Factor Oracle string matching algorithm, is used to detect introductions and repetitions of musical materials. Through this analysis, aspects of musical structure can be understood, and new versions of the analyzed work can be created.</p>
<p>This demonstration uses PyOracle embedded in a Max/MSP patch to perform real-time machine improvisation on an input signal.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/programming/pyoracle-programming/pyoracle-demo-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparing Numba and Numpy</title>
		<link>http://gregsurges.com/programming/python-programming/numba/</link>
		<comments>http://gregsurges.com/programming/python-programming/numba/#comments</comments>
		<pubDate>Thu, 21 Mar 2013 05:12:11 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[filters]]></category>
		<category><![CDATA[ipython notebook]]></category>
		<category><![CDATA[numba]]></category>
		<category><![CDATA[numpy]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1766</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<html>
<head>
<style type="text/css">
/**
 * HTML5 ✰ Boilerplate
 *
 * style.css contains a reset, font normalization and some base styles.
 *
 * Credit is left where credit is due.
 * Much inspiration was taken from these projects:
 * - yui.yahooapis.com/2.8.1/build/base/base.css
 * - camendesign.com/design/
 * - praegnanz.de/weblog/htmlcssjs-kickstart
 */


/**
 * html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline)
 * v1.6.1 2010-09-17 | Authors: Eric Meyer & Richard Clark
 * html5doctor.com/html-5-reset-stylesheet/
 */

html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, summary,
time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: baseline;
}

sup { vertical-align: super; }
sub { vertical-align: sub; }

article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
  display: block;
}

blockquote, q { quotes: none; }

blockquote:before, blockquote:after,
q:before, q:after { content: ""; content: none; }

ins { background-color: #ff9; color: #000; text-decoration: none; }

mark { background-color: #ff9; color: #000; font-style: italic; font-weight: bold; }

del { text-decoration: line-through; }

abbr[title], dfn[title] { border-bottom: 1px dotted; cursor: help; }

table { border-collapse: collapse; border-spacing: 0; }

hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; }

input, select { vertical-align: middle; }


/**
 * Font normalization inspired by YUI Library's fonts.css: developer.yahoo.com/yui/
 */

body { font:13px/1.231 sans-serif; *font-size:small; } /* Hack retained to preserve specificity */
select, input, textarea, button { font:99% sans-serif; }

/* Normalize monospace sizing:
   en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11#Teletype_style_fix_for_Chrome */
pre, code, kbd, samp { font-family: monospace, sans-serif; }

em,i { font-style: italic; }
b,strong { font-weight: bold; }

</style>
<style type="text/css">
article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
audio:not([controls]){display:none;}
html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
a:hover,a:active{outline:0;}
sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;}
sup{top:-0.5em;}
sub{bottom:-0.25em;}
img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;}
#map_canvas img,.google-maps img{max-width:none;}
button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;}
button,input{*overflow:visible;line-height:normal;}
button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;}
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}
label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer;}
input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;}
input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;}
textarea{overflow:auto;vertical-align:top;}
@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important;} a,a:visited{text-decoration:underline;} a[href]:after{content:" (" attr(href) ")";} abbr[title]:after{content:" (" attr(title) ")";} .ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:"";} pre,blockquote{border:1px solid #999;page-break-inside:avoid;} thead{display:table-header-group;} tr,img{page-break-inside:avoid;} img{max-width:100% !important;} @page {margin:0.5cm;}p,h2,h3{orphans:3;widows:3;} h2,h3{page-break-after:avoid;}}.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}
.clearfix:after{clear:both;}
.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}
.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:20px;color:#000000;background-color:#ffffff;}
a{color:#0088cc;text-decoration:none;}
a:hover{color:#005580;text-decoration:underline;}
.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);}
.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px;}
.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;}
.row:after{clear:both;}
[class*="span"]{float:left;min-height:1px;margin-left:20px;}
.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
.span12{width:940px;}
.span11{width:860px;}
.span10{width:780px;}
.span9{width:700px;}
.span8{width:620px;}
.span7{width:540px;}
.span6{width:460px;}
.span5{width:380px;}
.span4{width:300px;}
.span3{width:220px;}
.span2{width:140px;}
.span1{width:60px;}
.offset12{margin-left:980px;}
.offset11{margin-left:900px;}
.offset10{margin-left:820px;}
.offset9{margin-left:740px;}
.offset8{margin-left:660px;}
.offset7{margin-left:580px;}
.offset6{margin-left:500px;}
.offset5{margin-left:420px;}
.offset4{margin-left:340px;}
.offset3{margin-left:260px;}
.offset2{margin-left:180px;}
.offset1{margin-left:100px;}
.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
.row-fluid:after{clear:both;}
.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;}
.row-fluid [class*="span"]:first-child{margin-left:0;}
.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;}
.row-fluid .span12{width:100%;*width:99.94680851063829%;}
.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;}
.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;}
.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;}
.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;}
.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;}
.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;}
.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;}
.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;}
.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;}
.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;}
.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;}
.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;}
.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;}
.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;}
.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;}
.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;}
.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;}
.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;}
.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;}
.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;}
.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;}
.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;}
.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;}
.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;}
.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;}
.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;}
.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;}
.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;}
.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;}
.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;}
.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;}
.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;}
.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;}
.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;}
.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;}
[class*="span"].hide,.row-fluid [class*="span"].hide{display:none;}
[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right;}
.container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";line-height:0;}
.container:after{clear:both;}
.container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;}
.container-fluid:after{clear:both;}
p{margin:0 0 10px;}
.lead{margin-bottom:20px;font-size:19.5px;font-weight:200;line-height:30px;}
small{font-size:85%;}
strong{font-weight:bold;}
em{font-style:italic;}
cite{font-style:normal;}
.muted{color:#999999;}
a.muted:hover{color:#808080;}
.text-warning{color:#c09853;}
a.text-warning:hover{color:#a47e3c;}
.text-error{color:#b94a48;}
a.text-error:hover{color:#953b39;}
.text-info{color:#3a87ad;}
a.text-info:hover{color:#2d6987;}
.text-success{color:#468847;}
a.text-success:hover{color:#356635;}
h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999999;}
h1,h2,h3{line-height:40px;}
h1{font-size:35.75px;}
h2{font-size:29.25px;}
h3{font-size:22.75px;}
h4{font-size:16.25px;}
h5{font-size:13px;}
h6{font-size:11.049999999999999px;}
h1 small{font-size:22.75px;}
h2 small{font-size:16.25px;}
h3 small{font-size:13px;}
h4 small{font-size:13px;}
.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eeeeee;}
ul,ol{padding:0;margin:0 0 10px 25px;}
ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
li{line-height:20px;}
ul.unstyled,ol.unstyled{margin-left:0;list-style:none;}
ul.inline,ol.inline{margin-left:0;list-style:none;}ul.inline>li,ol.inline>li{display:inline-block;padding-left:5px;padding-right:5px;}
dl{margin-bottom:20px;}
dt,dd{line-height:20px;}
dt{font-weight:bold;}
dd{margin-left:10px;}
.dl-horizontal{*zoom:1;}.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;}
.dl-horizontal:after{clear:both;}
.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dl-horizontal dd{margin-left:180px;}
hr{margin:20px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;}
abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999;}
abbr.initialism{font-size:90%;text-transform:uppercase;}
blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px;}
blockquote small{display:block;line-height:20px;color:#999999;}blockquote small:before{content:'\2014 \00A0';}
blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}
blockquote.pull-right small:before{content:'';}
blockquote.pull-right small:after{content:'\00A0 \2014';}
q:before,q:after,blockquote:before,blockquote:after{content:"";}
address{display:block;margin-bottom:20px;font-style:normal;line-height:20px;}
form{margin:0 0 20px;}
fieldset{padding:0;margin:0;border:0;}
legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:19.5px;line-height:40px;color:#333333;border:0;border-bottom:1px solid #e5e5e5;}legend small{font-size:15px;color:#999999;}
label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:20px;}
input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;}
label{display:block;margin-bottom:5px;}
select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:13px;line-height:20px;color:#555555;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;vertical-align:middle;}
input,textarea,.uneditable-input{width:206px;}
textarea{height:auto;}
textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#ffffff;border:1px solid #cccccc;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear .2s, box-shadow linear .2s;-moz-transition:border linear .2s, box-shadow linear .2s;-o-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82, 168, 236, 0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);}
input[type="radio"],input[type="checkbox"]{margin:4px 0 0;*margin-top:0;margin-top:1px \9;line-height:normal;}
input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto;}
select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px;}
select{width:220px;border:1px solid #cccccc;background-color:#ffffff;}
select[multiple],select[size]{height:auto;}
select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
.uneditable-input,.uneditable-textarea{color:#999999;background-color:#fcfcfc;border-color:#cccccc;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
.uneditable-input{overflow:hidden;white-space:nowrap;}
.uneditable-textarea{width:auto;height:auto;}
input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;}
input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;}
input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;}
.radio,.checkbox{min-height:20px;padding-left:20px;}
.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px;}
.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;}
.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;}
.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;}
.input-mini{width:60px;}
.input-small{width:90px;}
.input-medium{width:150px;}
.input-large{width:210px;}
.input-xlarge{width:270px;}
.input-xxlarge{width:530px;}
input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0;}
.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block;}
input,textarea,.uneditable-input{margin-left:0;}
.controls-row [class*="span"]+[class*="span"]{margin-left:20px;}
input.span12, textarea.span12, .uneditable-input.span12{width:926px;}
input.span11, textarea.span11, .uneditable-input.span11{width:846px;}
input.span10, textarea.span10, .uneditable-input.span10{width:766px;}
input.span9, textarea.span9, .uneditable-input.span9{width:686px;}
input.span8, textarea.span8, .uneditable-input.span8{width:606px;}
input.span7, textarea.span7, .uneditable-input.span7{width:526px;}
input.span6, textarea.span6, .uneditable-input.span6{width:446px;}
input.span5, textarea.span5, .uneditable-input.span5{width:366px;}
input.span4, textarea.span4, .uneditable-input.span4{width:286px;}
input.span3, textarea.span3, .uneditable-input.span3{width:206px;}
input.span2, textarea.span2, .uneditable-input.span2{width:126px;}
input.span1, textarea.span1, .uneditable-input.span1{width:46px;}
.controls-row{*zoom:1;}.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;}
.controls-row:after{clear:both;}
.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left;}
.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px;}
input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eeeeee;}
input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent;}
.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}
.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;}
.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;}
.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}
.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}
.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;}
.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;}
.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}
.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;}
.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;}
.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}
.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;}
.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;}
.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;}
.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;}
input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;}
.form-actions:after{clear:both;}
.help-block,.help-inline{color:#262626;}
.help-block{display:block;margin-bottom:10px;}
.help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;}
.input-append,.input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap;}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu{font-size:13px;}
.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2;}
.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:13px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#eeeeee;border:1px solid #ccc;}
.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546;}
.input-prepend .add-on,.input-prepend .btn{margin-right:-1px;}
.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px;}
.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
.input-prepend.input-append .btn-group:first-child{margin-left:0;}
input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;}
.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;}
.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;}
.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;}
.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;*zoom:1;margin-bottom:0;vertical-align:middle;}
.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;}
.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block;}
.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;}
.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;}
.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0;}
.control-group{margin-bottom:10px;}
legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate;}
.form-horizontal .control-group{margin-bottom:20px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;}
.form-horizontal .control-group:after{clear:both;}
.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right;}
.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0;}.form-horizontal .controls:first-child{*padding-left:180px;}
.form-horizontal .help-block{margin-bottom:0;}
.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px;}
.form-horizontal .form-actions{padding-left:180px;}
table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;}
.table{width:100%;margin-bottom:20px;}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;}
.table th{font-weight:bold;}
.table thead th{vertical-align:bottom;}
.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;}
.table tbody+tbody{border-top:2px solid #dddddd;}
.table .table{background-color:#ffffff;}
.table-condensed th,.table-condensed td{padding:4px 5px;}
.table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;}
.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;}
.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;}
.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child{-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;}
.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;}
.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;}
.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9;}
.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#f5f5f5;}
table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0;}
.table td.span1,.table th.span1{float:none;width:44px;margin-left:0;}
.table td.span2,.table th.span2{float:none;width:124px;margin-left:0;}
.table td.span3,.table th.span3{float:none;width:204px;margin-left:0;}
.table td.span4,.table th.span4{float:none;width:284px;margin-left:0;}
.table td.span5,.table th.span5{float:none;width:364px;margin-left:0;}
.table td.span6,.table th.span6{float:none;width:444px;margin-left:0;}
.table td.span7,.table th.span7{float:none;width:524px;margin-left:0;}
.table td.span8,.table th.span8{float:none;width:604px;margin-left:0;}
.table td.span9,.table th.span9{float:none;width:684px;margin-left:0;}
.table td.span10,.table th.span10{float:none;width:764px;margin-left:0;}
.table td.span11,.table th.span11{float:none;width:844px;margin-left:0;}
.table td.span12,.table th.span12{float:none;width:924px;margin-left:0;}
.table tbody tr.success td{background-color:#dff0d8;}
.table tbody tr.error td{background-color:#f2dede;}
.table tbody tr.warning td{background-color:#fcf8e3;}
.table tbody tr.info td{background-color:#d9edf7;}
.table-hover tbody tr.success:hover td{background-color:#d0e9c6;}
.table-hover tbody tr.error:hover td{background-color:#ebcccc;}
.table-hover tbody tr.warning:hover td{background-color:#faf2cc;}
.table-hover tbody tr.info:hover td{background-color:#c4e3f3;}
[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;margin-top:1px;}
.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png");}
.icon-glass{background-position:0 0;}
.icon-music{background-position:-24px 0;}
.icon-search{background-position:-48px 0;}
.icon-envelope{background-position:-72px 0;}
.icon-heart{background-position:-96px 0;}
.icon-star{background-position:-120px 0;}
.icon-star-empty{background-position:-144px 0;}
.icon-user{background-position:-168px 0;}
.icon-film{background-position:-192px 0;}
.icon-th-large{background-position:-216px 0;}
.icon-th{background-position:-240px 0;}
.icon-th-list{background-position:-264px 0;}
.icon-ok{background-position:-288px 0;}
.icon-remove{background-position:-312px 0;}
.icon-zoom-in{background-position:-336px 0;}
.icon-zoom-out{background-position:-360px 0;}
.icon-off{background-position:-384px 0;}
.icon-signal{background-position:-408px 0;}
.icon-cog{background-position:-432px 0;}
.icon-trash{background-position:-456px 0;}
.icon-home{background-position:0 -24px;}
.icon-file{background-position:-24px -24px;}
.icon-time{background-position:-48px -24px;}
.icon-road{background-position:-72px -24px;}
.icon-download-alt{background-position:-96px -24px;}
.icon-download{background-position:-120px -24px;}
.icon-upload{background-position:-144px -24px;}
.icon-inbox{background-position:-168px -24px;}
.icon-play-circle{background-position:-192px -24px;}
.icon-repeat{background-position:-216px -24px;}
.icon-refresh{background-position:-240px -24px;}
.icon-list-alt{background-position:-264px -24px;}
.icon-lock{background-position:-287px -24px;}
.icon-flag{background-position:-312px -24px;}
.icon-headphones{background-position:-336px -24px;}
.icon-volume-off{background-position:-360px -24px;}
.icon-volume-down{background-position:-384px -24px;}
.icon-volume-up{background-position:-408px -24px;}
.icon-qrcode{background-position:-432px -24px;}
.icon-barcode{background-position:-456px -24px;}
.icon-tag{background-position:0 -48px;}
.icon-tags{background-position:-25px -48px;}
.icon-book{background-position:-48px -48px;}
.icon-bookmark{background-position:-72px -48px;}
.icon-print{background-position:-96px -48px;}
.icon-camera{background-position:-120px -48px;}
.icon-font{background-position:-144px -48px;}
.icon-bold{background-position:-167px -48px;}
.icon-italic{background-position:-192px -48px;}
.icon-text-height{background-position:-216px -48px;}
.icon-text-width{background-position:-240px -48px;}
.icon-align-left{background-position:-264px -48px;}
.icon-align-center{background-position:-288px -48px;}
.icon-align-right{background-position:-312px -48px;}
.icon-align-justify{background-position:-336px -48px;}
.icon-list{background-position:-360px -48px;}
.icon-indent-left{background-position:-384px -48px;}
.icon-indent-right{background-position:-408px -48px;}
.icon-facetime-video{background-position:-432px -48px;}
.icon-picture{background-position:-456px -48px;}
.icon-pencil{background-position:0 -72px;}
.icon-map-marker{background-position:-24px -72px;}
.icon-adjust{background-position:-48px -72px;}
.icon-tint{background-position:-72px -72px;}
.icon-edit{background-position:-96px -72px;}
.icon-share{background-position:-120px -72px;}
.icon-check{background-position:-144px -72px;}
.icon-move{background-position:-168px -72px;}
.icon-step-backward{background-position:-192px -72px;}
.icon-fast-backward{background-position:-216px -72px;}
.icon-backward{background-position:-240px -72px;}
.icon-play{background-position:-264px -72px;}
.icon-pause{background-position:-288px -72px;}
.icon-stop{background-position:-312px -72px;}
.icon-forward{background-position:-336px -72px;}
.icon-fast-forward{background-position:-360px -72px;}
.icon-step-forward{background-position:-384px -72px;}
.icon-eject{background-position:-408px -72px;}
.icon-chevron-left{background-position:-432px -72px;}
.icon-chevron-right{background-position:-456px -72px;}
.icon-plus-sign{background-position:0 -96px;}
.icon-minus-sign{background-position:-24px -96px;}
.icon-remove-sign{background-position:-48px -96px;}
.icon-ok-sign{background-position:-72px -96px;}
.icon-question-sign{background-position:-96px -96px;}
.icon-info-sign{background-position:-120px -96px;}
.icon-screenshot{background-position:-144px -96px;}
.icon-remove-circle{background-position:-168px -96px;}
.icon-ok-circle{background-position:-192px -96px;}
.icon-ban-circle{background-position:-216px -96px;}
.icon-arrow-left{background-position:-240px -96px;}
.icon-arrow-right{background-position:-264px -96px;}
.icon-arrow-up{background-position:-289px -96px;}
.icon-arrow-down{background-position:-312px -96px;}
.icon-share-alt{background-position:-336px -96px;}
.icon-resize-full{background-position:-360px -96px;}
.icon-resize-small{background-position:-384px -96px;}
.icon-plus{background-position:-408px -96px;}
.icon-minus{background-position:-433px -96px;}
.icon-asterisk{background-position:-456px -96px;}
.icon-exclamation-sign{background-position:0 -120px;}
.icon-gift{background-position:-24px -120px;}
.icon-leaf{background-position:-48px -120px;}
.icon-fire{background-position:-72px -120px;}
.icon-eye-open{background-position:-96px -120px;}
.icon-eye-close{background-position:-120px -120px;}
.icon-warning-sign{background-position:-144px -120px;}
.icon-plane{background-position:-168px -120px;}
.icon-calendar{background-position:-192px -120px;}
.icon-random{background-position:-216px -120px;width:16px;}
.icon-comment{background-position:-240px -120px;}
.icon-magnet{background-position:-264px -120px;}
.icon-chevron-up{background-position:-288px -120px;}
.icon-chevron-down{background-position:-313px -119px;}
.icon-retweet{background-position:-336px -120px;}
.icon-shopping-cart{background-position:-360px -120px;}
.icon-folder-close{background-position:-384px -120px;}
.icon-folder-open{background-position:-408px -120px;width:16px;}
.icon-resize-vertical{background-position:-432px -119px;}
.icon-resize-horizontal{background-position:-456px -118px;}
.icon-hdd{background-position:0 -144px;}
.icon-bullhorn{background-position:-24px -144px;}
.icon-bell{background-position:-48px -144px;}
.icon-certificate{background-position:-72px -144px;}
.icon-thumbs-up{background-position:-96px -144px;}
.icon-thumbs-down{background-position:-120px -144px;}
.icon-hand-right{background-position:-144px -144px;}
.icon-hand-left{background-position:-168px -144px;}
.icon-hand-up{background-position:-192px -144px;}
.icon-hand-down{background-position:-216px -144px;}
.icon-circle-arrow-right{background-position:-240px -144px;}
.icon-circle-arrow-left{background-position:-264px -144px;}
.icon-circle-arrow-up{background-position:-288px -144px;}
.icon-circle-arrow-down{background-position:-312px -144px;}
.icon-globe{background-position:-336px -144px;}
.icon-wrench{background-position:-360px -144px;}
.icon-tasks{background-position:-384px -144px;}
.icon-filter{background-position:-408px -144px;}
.icon-briefcase{background-position:-432px -144px;}
.icon-fullscreen{background-position:-456px -144px;}
.dropup,.dropdown{position:relative;}
.dropdown-toggle{*margin-bottom:-3px;}
.dropdown-toggle:active,.open .dropdown-toggle{outline:0;}
.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}
.dropdown .caret{margin-top:8px;margin-left:2px;}
.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#ffffff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;}
.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;}
.dropdown-menu li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333333;white-space:nowrap;}
.dropdown-menu li>a:hover,.dropdown-menu li>a:focus,.dropdown-submenu:hover>a{text-decoration:none;color:#ffffff;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);}
.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#ffffff;text-decoration:none;outline:0;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);}
.dropdown-menu .disabled>a,.dropdown-menu .disabled>a:hover{color:#999999;}
.dropdown-menu .disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:default;}
.open{*z-index:1000;}.open>.dropdown-menu{display:block;}
.pull-right>.dropdown-menu{right:0;left:auto;}
.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000000;content:"";}
.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px;}
.dropdown-submenu{position:relative;}
.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;}
.dropdown-submenu:hover>.dropdown-menu{display:block;}
.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0;}
.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#cccccc;margin-top:5px;margin-right:-10px;}
.dropdown-submenu:hover>a:after{border-left-color:#ffffff;}
.dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;}
.dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px;}
.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}
.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;}
.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;}.collapse.in{height:auto;}
.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;filter:alpha(opacity=40);}
button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}
.btn{display:inline-block;*display:inline;*zoom:1;padding:4px 12px;margin-bottom:0;font-size:13px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333333;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(to bottom, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #bbbbbb;*border:0;border-bottom-color:#a2a2a2;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;}
.btn:active,.btn.active{background-color:#cccccc \9;}
.btn:first-child{*margin-left:0;}
.btn:hover{color:#333333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;}
.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);}
.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
.btn-large{padding:11px 19px;font-size:16.25px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px;}
.btn-small{padding:2px 10px;font-size:11.049999999999999px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0;}
.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px;}
.btn-mini{padding:0 6px;font-size:9.75px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
.btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
.btn-block+.btn-block{margin-top:5px;}
input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;}
.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);}
.btn{border-color:#c5c5c5;border-color:rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);}
.btn-primary{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#006dcc;background-image:-moz-linear-gradient(top, #0088cc, #0044cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));background-image:-webkit-linear-gradient(top, #0088cc, #0044cc);background-image:-o-linear-gradient(top, #0088cc, #0044cc);background-image:linear-gradient(to bottom, #0088cc, #0044cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);border-color:#0044cc #0044cc #002a80;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#0044cc;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0044cc;*background-color:#003bb3;}
.btn-primary:active,.btn-primary.active{background-color:#003399 \9;}
.btn-warning{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#f89406;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;}
.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;}
.btn-danger{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(to bottom, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#bd362f;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;}
.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;}
.btn-success{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(to bottom, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#51a351;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;}
.btn-success:active,.btn-success.active{background-color:#408140 \9;}
.btn-info{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(to bottom, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#2f96b4;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;}
.btn-info:active,.btn-info.active{background-color:#24748c \9;}
.btn-inverse{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#363636;background-image:-moz-linear-gradient(top, #444444, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));background-image:-webkit-linear-gradient(top, #444444, #222222);background-image:-o-linear-gradient(top, #444444, #222222);background-image:linear-gradient(to bottom, #444444, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#222222;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;}
.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;}
button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;}
button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;}
button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;}
button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;}
.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
.btn-link{border-color:transparent;cursor:pointer;color:#0088cc;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent;}
.btn-link[disabled]:hover{color:#333333;text-decoration:none;}
.btn-group{position:relative;display:inline-block;*display:inline;*zoom:1;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em;}.btn-group:first-child{*margin-left:0;}
.btn-group+.btn-group{margin-left:5px;}
.btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px;}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px;}
.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.btn-group>.btn+.btn{margin-left:-1px;}
.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:13px;}
.btn-group>.btn-mini{font-size:9.75px;}
.btn-group>.btn-small{font-size:11.049999999999999px;}
.btn-group>.btn-large{font-size:16.25px;}
.btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2;}
.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}
.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);*padding-top:5px;*padding-bottom:5px;}
.btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px;}
.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px;}
.btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px;}
.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);}
.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6;}
.btn-group.open .btn-primary.dropdown-toggle{background-color:#0044cc;}
.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406;}
.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f;}
.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351;}
.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4;}
.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222222;}
.btn .caret{margin-top:8px;margin-left:0;}
.btn-mini .caret,.btn-small .caret,.btn-large .caret{margin-top:6px;}
.btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px;}
.dropup .btn-large .caret{border-bottom-width:5px;}
.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
.btn-group-vertical{display:inline-block;*display:inline;*zoom:1;}
.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.btn-group-vertical>.btn+.btn{margin-left:0;margin-top:-1px;}
.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}
.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}
.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0;}
.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}
.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.alert,.alert h4{color:#c09853;}
.alert h4{margin:0;}
.alert .close{position:relative;top:-2px;right:-21px;line-height:20px;}
.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;}
.alert-success h4{color:#468847;}
.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;}
.alert-danger h4,.alert-error h4{color:#b94a48;}
.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;}
.alert-info h4{color:#3a87ad;}
.alert-block{padding-top:14px;padding-bottom:14px;}
.alert-block>p,.alert-block>ul{margin-bottom:0;}
.alert-block p+p{margin-top:5px;}
.nav{margin-left:0;margin-bottom:20px;list-style:none;}
.nav>li>a{display:block;}
.nav>li>a:hover{text-decoration:none;background-color:#eeeeee;}
.nav>li>a>img{max-width:none;}
.nav>.pull-right{float:right;}
.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase;}
.nav li+.nav-header{margin-top:9px;}
.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;}
.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}
.nav-list>li>a{padding:3px 15px;}
.nav-list>.active>a,.nav-list>.active>a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc;}
.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px;}
.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;}
.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;}
.nav-tabs:after,.nav-pills:after{clear:both;}
.nav-tabs>li,.nav-pills>li{float:left;}
.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;}
.nav-tabs{border-bottom:1px solid #ddd;}
.nav-tabs>li{margin-bottom:-1px;}
.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd;}
.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}
.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#ffffff;background-color:#0088cc;}
.nav-stacked>li{float:none;}
.nav-stacked>li>a{margin-right:0;}
.nav-tabs.nav-stacked{border-bottom:0;}
.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2;}
.nav-pills.nav-stacked>li>a{margin-bottom:3px;}
.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;}
.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}
.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
.nav .dropdown-toggle .caret{border-top-color:#0088cc;border-bottom-color:#0088cc;margin-top:6px;}
.nav .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580;}
.nav-tabs .dropdown-toggle .caret{margin-top:8px;}
.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff;}
.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;}
.nav>.dropdown.active>a:hover{cursor:pointer;}
.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#ffffff;background-color:#999999;border-color:#999999;}
.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100);}
.tabs-stacked .open>a:hover{border-color:#999999;}
.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;}
.tabbable:after{clear:both;}
.tab-content{overflow:auto;}
.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0;}
.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;}
.tab-content>.active,.pill-content>.active{display:block;}
.tabs-below>.nav-tabs{border-top:1px solid #ddd;}
.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0;}
.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below>.nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd;}
.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd;}
.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none;}
.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;}
.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;}
.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
.tabs-left>.nav-tabs>li>a:hover{border-color:#eeeeee #dddddd #eeeeee #eeeeee;}
.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;}
.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;}
.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
.tabs-right>.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #eeeeee #dddddd;}
.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;}
.nav>.disabled>a{color:#999999;}
.nav>.disabled>a:hover{text-decoration:none;background-color:transparent;cursor:default;}
.navbar{overflow:visible;margin-bottom:20px;*position:relative;*z-index:2;}
.navbar-inner{min-height:40px;padding-left:20px;padding-right:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top, #ffffff, #f2f2f2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));background-image:-webkit-linear-gradient(top, #ffffff, #f2f2f2);background-image:-o-linear-gradient(top, #ffffff, #f2f2f2);background-image:linear-gradient(to bottom, #ffffff, #f2f2f2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);-moz-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);*zoom:1;}.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;}
.navbar-inner:after{clear:both;}
.navbar .container{width:auto;}
.nav-collapse.collapse{height:auto;overflow:visible;}
.navbar .brand{float:left;display:block;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777777;text-shadow:0 1px 0 #ffffff;}.navbar .brand:hover{text-decoration:none;}
.navbar-text{margin-bottom:0;line-height:40px;color:#777777;}
.navbar-link{color:#777777;}.navbar-link:hover{color:#333333;}
.navbar .divider-vertical{height:40px;margin:0 9px;border-left:1px solid #f2f2f2;border-right:1px solid #ffffff;}
.navbar .btn,.navbar .btn-group{margin-top:5px;}
.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn{margin-top:0;}
.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;}
.navbar-form:after{clear:both;}
.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px;}
.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0;}
.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;}
.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;}
.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0;}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
.navbar-static-top{position:static;margin-bottom:0;}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;}
.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px;}
.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0;}
.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
.navbar-fixed-top{top:0;}
.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,.1);box-shadow:0 1px 10px rgba(0,0,0,.1);}
.navbar-fixed-bottom{bottom:0;}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,.1);box-shadow:0 -1px 10px rgba(0,0,0,.1);}
.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;}
.navbar .nav.pull-right{float:right;margin-right:0;}
.navbar .nav>li{float:left;}
.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777777;text-decoration:none;text-shadow:0 1px 0 #ffffff;}
.navbar .nav .dropdown-toggle .caret{margin-top:8px;}
.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333333;text-decoration:none;}
.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);-moz-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);}
.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#ededed;background-image:-moz-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));background-image:-webkit-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-o-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:linear-gradient(to bottom, #f2f2f2, #e5e5e5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e5e5e5;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);}.navbar .btn-navbar:hover,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#ffffff;background-color:#e5e5e5;*background-color:#d9d9d9;}
.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#cccccc \9;}
.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);}
.btn-navbar .icon-bar+.icon-bar{margin-top:3px;}
.navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;}
.navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;}
.navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);border-bottom:0;bottom:-7px;top:auto;}
.navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #ffffff;border-bottom:0;bottom:-6px;top:auto;}
.navbar .nav li.dropdown>a:hover .caret{border-top-color:#555555;border-bottom-color:#555555;}
.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:#e5e5e5;color:#555555;}
.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777777;border-bottom-color:#777777;}
.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;}
.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{left:auto;right:0;}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto;right:12px;}
.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto;right:13px;}
.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;}
.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top, #222222, #111111);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));background-image:-webkit-linear-gradient(top, #222222, #111111);background-image:-o-linear-gradient(top, #222222, #111111);background-image:linear-gradient(to bottom, #222222, #111111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);border-color:#252525;}
.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999999;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover{color:#ffffff;}
.navbar-inverse .brand{color:#999999;}
.navbar-inverse .navbar-text{color:#999999;}
.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#ffffff;}
.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#ffffff;background-color:#111111;}
.navbar-inverse .navbar-link{color:#999999;}.navbar-inverse .navbar-link:hover{color:#ffffff;}
.navbar-inverse .divider-vertical{border-left-color:#111111;border-right-color:#222222;}
.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{background-color:#111111;color:#ffffff;}
.navbar-inverse .nav li.dropdown>a:hover .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999999;border-bottom-color:#999999;}
.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
.navbar-inverse .navbar-search .search-query{color:#ffffff;background-color:#515151;border-color:#111111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;}
.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;}
.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;}
.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;}
.navbar-inverse .btn-navbar{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top, #151515, #040404);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));background-image:-webkit-linear-gradient(top, #151515, #040404);background-image:-o-linear-gradient(top, #151515, #040404);background-image:linear-gradient(to bottom, #151515, #040404);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);border-color:#040404 #040404 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#040404;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;}
.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;}
.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.breadcrumb>li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #ffffff;}.breadcrumb>li>.divider{padding:0 5px;color:#ccc;}
.breadcrumb>.active{color:#999999;}
.pagination{margin:20px 0;}
.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);}
.pagination ul>li{display:inline;}
.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#ffffff;border:1px solid #dddddd;border-left-width:0;}
.pagination ul>li>a:hover,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5;}
.pagination ul>.active>a,.pagination ul>.active>span{color:#999999;cursor:default;}
.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover{color:#999999;background-color:transparent;cursor:default;}
.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
.pagination-centered{text-align:center;}
.pagination-right{text-align:right;}
.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:16.25px;}
.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-top-left-radius:3px;-moz-border-radius-topleft:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-radius-bottomleft:3px;border-bottom-left-radius:3px;}
.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px;}
.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.049999999999999px;}
.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:9.75px;}
.pager{margin:20px 0;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";line-height:0;}
.pager:after{clear:both;}
.pager li{display:inline;}
.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
.pager li>a:hover{text-decoration:none;background-color:#f5f5f5;}
.pager .next>a,.pager .next>span{float:right;}
.pager .previous>a,.pager .previous>span{float:left;}
.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>span{color:#999999;background-color:#fff;cursor:default;}
.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;}
.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);}
.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:none;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;}
.modal.fade.in{top:10%;}
.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;}
.modal-header h3{margin:0;line-height:30px;}
.modal-body{position:relative;overflow-y:auto;max-height:400px;padding:15px;}
.modal-form{margin-bottom:0;}
.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;}
.modal-footer:after{clear:both;}
.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0;}
.modal-footer .btn-group .btn+.btn{margin-left:-1px;}
.modal-footer .btn-block+.btn-block{margin-left:0;}
.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);}
.tooltip.top{margin-top:-3px;}
.tooltip.right{margin-left:3px;}
.tooltip.bottom{margin-top:3px;}
.tooltip.left{margin-left:-3px;}
.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;}
.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;}
.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;}
.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;}
.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;}
.popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;text-align:left;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);white-space:normal;}.popover.top{margin-top:-10px;}
.popover.right{margin-left:10px;}
.popover.bottom{margin-top:10px;}
.popover.left{margin-left:-10px;}
.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}
.popover-content{padding:9px 14px;}
.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;}
.popover .arrow{border-width:11px;}
.popover .arrow:after{border-width:10px;content:"";}
.popover.top .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0, 0, 0, 0.25);bottom:-11px;}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff;}
.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0, 0, 0, 0.25);}.popover.right .arrow:after{left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff;}
.popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0, 0, 0, 0.25);top:-11px;}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff;}
.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0, 0, 0, 0.25);}.popover.left .arrow:after{right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px;}
.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;}
.thumbnails:after{clear:both;}
.row-fluid .thumbnails{margin-left:0;}
.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px;}
.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;}
a.thumbnail:hover{border-color:#0088cc;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);}
.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;}
.thumbnail .caption{padding:9px;color:#555555;}
.media,.media-body{overflow:hidden;*overflow:visible;zoom:1;}
.media,.media .media{margin-top:15px;}
.media:first-child{margin-top:0;}
.media-object{display:block;}
.media-heading{margin:0 0 5px;}
.media .pull-left{margin-right:10px;}
.media .pull-right{margin-left:10px;}
.media-list{margin-left:0;list-style:none;}
.label,.badge{display:inline-block;padding:2px 4px;font-size:10.998px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;}
.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
.badge{padding-left:9px;padding-right:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;}
.label:empty,.badge:empty{display:none;}
a.label:hover,a.badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;}
.label-important,.badge-important{background-color:#b94a48;}
.label-important[href],.badge-important[href]{background-color:#953b39;}
.label-warning,.badge-warning{background-color:#f89406;}
.label-warning[href],.badge-warning[href]{background-color:#c67605;}
.label-success,.badge-success{background-color:#468847;}
.label-success[href],.badge-success[href]{background-color:#356635;}
.label-info,.badge-info{background-color:#3a87ad;}
.label-info[href],.badge-info[href]{background-color:#2d6987;}
.label-inverse,.badge-inverse{background-color:#333333;}
.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;}
.btn .label,.btn .badge{position:relative;top:-1px;}
.btn-mini .label,.btn-mini .badge{top:0;}
@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-o-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(to bottom, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.progress .bar{width:0%;height:100%;color:#ffffff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(to bottom, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;}
.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);}
.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;}
.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;}
.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(to bottom, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);}
.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(to bottom, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);}
.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(to bottom, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);}
.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);}
.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
.accordion{margin-bottom:20px;}
.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.accordion-heading{border-bottom:0;}
.accordion-heading .accordion-toggle{display:block;padding:8px 15px;}
.accordion-toggle{cursor:pointer;}
.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;}
.carousel{position:relative;margin-bottom:20px;line-height:1;}
.carousel-inner{overflow:hidden;width:100%;position:relative;}
.carousel-inner>.item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;}
.carousel-inner>.item>img{display:block;line-height:1;}
.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block;}
.carousel-inner>.active{left:0;}
.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%;}
.carousel-inner>.next{left:100%;}
.carousel-inner>.prev{left:-100%;}
.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0;}
.carousel-inner>.active.left{left:-100%;}
.carousel-inner>.active.right{left:100%;}
.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;}
.carousel-control:hover{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);}
.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:15px;background:#333333;background:rgba(0, 0, 0, 0.75);}
.carousel-caption h4,.carousel-caption p{color:#ffffff;line-height:20px;}
.carousel-caption h4{margin:0 0 5px;}
.carousel-caption p{margin-bottom:0;}
.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eeeeee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px;}
.hero-unit li{line-height:30px;}
.pull-right{float:right;}
.pull-left{float:left;}
.hide{display:none;}
.show{display:block;}
.invisible{visibility:hidden;}
.affix{position:fixed;}
.corner-all{border-radius:4px;}
.hbox{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}
.hbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
.vbox{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;}
.vbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
.reverse{-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse;}
.box-flex0{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
.box-flex1,.box-flex{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
.box-flex2{-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;}
.box-group1{-webkit-box-flex-group:1;-moz-box-flex-group:1;box-flex-group:1;}
.box-group2{-webkit-box-flex-group:2;-moz-box-flex-group:2;box-flex-group:2;}
.start{-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;}
.end{-webkit-box-pack:end;-moz-box-pack:end;box-pack:end;}
.center{-webkit-box-pack:center;-moz-box-pack:center;box-pack:center;}
.corner-all{border-radius:4px;}
body{background-color:#ffffff;}
body.notebook_app{overflow:hidden;}
blockquote{border-left:4px solid #DDD;padding:0 15px;color:#777;}
span#save_widget{padding:5px;margin:0px 0px 0px 300px;display:inline-block;}
span#notebook_name{height:1em;line-height:1em;padding:3px;border:none;font-size:146.5%;}
.ui-menubar-item .ui-button .ui-button-text{padding:0.4em 1.0em;font-size:100%;}
.ui-menu{-moz-box-shadow:0px 6px 10px -1px #adadad;-webkit-box-shadow:0px 6px 10px -1px #adadad;box-shadow:0px 6px 10px -1px #adadad;}
.ui-menu .ui-menu-item a{border:1px solid transparent;padding:2px 1.6em;}
.ui-menu .ui-menu-item a.ui-state-focus{margin:0;}
.ui-menu hr{margin:0.3em 0;}
#menubar_container{position:relative;}
#notification_area{position:absolute;right:0px;top:0px;height:25px;padding:3px 0px;padding-right:3px;z-index:10;}
.notification_widget{float:right;right:0px;top:1px;height:25px;padding:3px 6px;z-index:10;}
.toolbar{padding:3px 15px;border-bottom:1px #ababab solid;}.toolbar button{margin-top:2px;margin-bottom:2px;}
.toolbar select,.toolbar label{height:19px;vertical-align:middle;margin-right:2px;margin-bottom:0;display:inline;font-size:92%;margin-left:0.3em;margin-right:0.3em;padding:0px;}
.toolbar select{width:auto;}
#ipython-main-app{width:100%;position:relative;font-size:110%;}
span#quick_help_area{position:static;padding:5px 0px;margin:0px 0px 0px 0px;}
.help_string{float:right;width:170px;padding:0px 5px;text-align:left;font-size:85%;}
.help_string_label{float:right;font-size:85%;}
div#notebook_panel{margin:0px 0px 0px 0px;padding:0px;}
div#notebook{overflow-y:scroll;overflow-x:auto;width:100%;padding:5px 5px 15px 5px;margin:0px;}
div#pager_splitter{height:8px;}
#pager_container{position:relative;}
div#pager{padding:15px;overflow:auto;display:none;}
div.ui-widget-content{border:1px solid #ababab;outline:none;}
.cell{border:1px solid transparent;}.cell.selected{border-radius:4px;border:thin #ababab solid;}
div.cell{width:100%;padding:5px 5px 5px 0px;margin:2px 0px 2px 0px;outline:none;}
div.prompt{width:11ex;padding:0.4em;margin:0px;font-family:monospace;text-align:right;line-height:1.231;}
div.input{page-break-inside:avoid;}
div.input_area{border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7;}
div.input_prompt{color:navy;border-top:1px solid transparent;}
div.output_wrapper{margin-top:5px;margin-left:5px;width:100%;position:relative;}
div.output_scroll{height:24em;width:100%;overflow:auto;border-radius:4px;box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);}
div.output_collapsed{margin-right:5px;}
div.out_prompt_overlay{height:100%;padding:0px;position:absolute;border-radius:4px;}
div.out_prompt_overlay:hover{box-shadow:inset 0 0 1px #000;background:rgba(240, 240, 240, 0.5);}
div.output_prompt{color:darkred;margin:0 5px 0 -5px;}
div.output_area{padding:0px;page-break-inside:avoid;}
div.output_area pre{font-family:monospace;margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;color:black;}
div.output_subarea{padding:0.44em 0.4em 0.4em 1px;}
div.output_text{text-align:left;color:#000000;font-family:monospace;line-height:1.231;}
div.output_stream{padding-top:0.0em;padding-bottom:0.0em;}
div.output_stderr{background:#fdd;}
div.output_latex{text-align:left;}
div.text_cell{padding:5px 5px 5px 5px;}
div.text_cell_input{color:#000000;border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7;}
div.text_cell_render{outline:none;resize:none;width:inherit;border-style:none;padding:5px;color:#000000;}
.CodeMirror{line-height:1.231;}
.CodeMirror-scroll{height:auto;overflow-y:hidden;overflow-x:auto;}
.ansiblack{color:#000000;}
.ansired{color:darkred;}
.ansigreen{color:darkgreen;}
.ansiyellow{color:brown;}
.ansiblue{color:darkblue;}
.ansipurple{color:darkviolet;}
.ansicyan{color:steelblue;}
.ansigrey{color:grey;}
.ansibold{font-weight:bold;}
.completions{position:absolute;z-index:10;overflow:hidden;border:1px solid #ababab;}
.completions select{background:white;outline:none;border:none;padding:0px;margin:0px;overflow:auto;font-family:monospace;}
option.context{background-color:#DEF7FF;}
option.introspection{background-color:#EBF4EB;}
.completions p b{font-weight:bold;}
.completions p{background:#DDF;border-bottom:black solid 1px;padding:1px;font-family:monospace;}
pre.dialog{background-color:#f7f7f7;border:1px solid #ddd;border-radius:4px;padding:0.4em;padding-left:2em;}
p.dialog{padding:0.2em;}
.shortcut_key{display:inline-block;width:15ex;text-align:right;font-family:monospace;}
pre,code,kbd,samp{white-space:pre-wrap;}
#fonttest{font-family:monospace;}
.js-error{color:darkred;}
a{text-decoration:underline;}
p{margin-bottom:0;}
@media print{body{overflow:visible !important;} div#notebook{overflow:visible !important;} .ui-widget-content{border:0px;} #save_widget{margin:0px !important;} #header,#pager,#pager_splitter,#menubar,#toolbar{display:none !important;} .cell{border:none !important;} .toolbar{display:none;}}.rendered_html{color:black;}.rendered_html em{font-style:italic;}
.rendered_html strong{font-weight:bold;}
.rendered_html u{text-decoration:underline;}
.rendered_html :link{text-decoration:underline;}
.rendered_html :visited{text-decoration:underline;}
.rendered_html h1{font-size:197%;margin:.65em 0;font-weight:bold;}
.rendered_html h2{font-size:153.9%;margin:.75em 0;font-weight:bold;}
.rendered_html h3{font-size:123.1%;margin:.85em 0;font-weight:bold;}
.rendered_html h4{font-size:100%;margin:0.95em 0;font-weight:bold;}
.rendered_html h5{font-size:85%;margin:1.5em 0;font-weight:bold;}
.rendered_html h6{font-size:77%;margin:1.65em 0;font-weight:bold;}
.rendered_html ul{list-style:disc;margin:1em 2em;}
.rendered_html ul ul{list-style:square;margin:0em 2em;}
.rendered_html ul ul ul{list-style:circle;margin:0em 2em;}
.rendered_html ol{list-style:decimal;margin:1em 2em;}
.rendered_html ol ol{list-style:upper-alpha;margin:0em 2em;}
.rendered_html ol ol ol{list-style:lower-alpha;margin:0em 2em;}
.rendered_html ol ol ol ol{list-style:lower-roman;margin:0em 2em;}
.rendered_html ol ol ol ol ol{list-style:decimal;margin:0em 2em;}
.rendered_html hr{color:black;background-color:black;}
.rendered_html pre{margin:1em 2em;}
.rendered_html blockquote{margin:1em 2em;}
.rendered_html table,.rendered_html tr,.rendered_html th,.rendered_html td{border:1px solid black;border-collapse:collapse;margin:1em 2em;}
.rendered_html td,.rendered_html th{text-align:left;vertical-align:middle;padding:4px;}
.rendered_html th{font-weight:bold;}
.rendered_html p{text-align:justify;}
.rendered_html p+p{margin-top:1em;}
.corner-all{border-radius:4px;}
@-moz-keyframes fadeOut{from{opacity:1;} to{opacity:0;}}@-webkit-keyframes fadeOut{from{opacity:1;} to{opacity:0;}}@-moz-keyframes fadeIn{from{opacity:0;} to{opacity:1;}}@-webkit-keyframes fadeIn{from{opacity:0;} to{opacity:1;}}.bigtooltip{overflow:auto;height:200px;-webkit-transition-property:height;-webkit-transition-duration:500ms;-moz-transition-property:height;-moz-transition-duration:500ms;transition-property:height;transition-duration:500ms;}
.smalltooltip{-webkit-transition-property:height;-webkit-transition-duration:500ms;-moz-transition-property:height;-moz-transition-duration:500ms;transition-property:height;transition-duration:500ms;text-overflow:ellipsis;overflow:hidden;height:80px;}
.tooltipbuttons{position:absolute;padding-right:15px;top:0px;right:0px;}
.tooltiptext{padding-right:30px;}
.ipython_tooltip{max-width:700px;-webkit-animation:fadeOut 400ms;-moz-animation:fadeOut 400ms;animation:fadeOut 400ms;-webkit-animation:fadeIn 400ms;-moz-animation:fadeIn 400ms;animation:fadeIn 400ms;vertical-align:middle;background-color:#f7f7f7;overflow:visible;border:#ababab 1px solid;outline:none;padding:3px;margin:0px;padding-left:7px;font-family:monospace;min-height:50px;-moz-box-shadow:0px 6px 10px -1px #adadad;-webkit-box-shadow:0px 6px 10px -1px #adadad;box-shadow:0px 6px 10px -1px #adadad;border-radius:4px;position:absolute;}.ipython_tooltip a{float:right;}
.pretooltiparrow{left:0px;margin:0px;top:-16px;width:40px;height:16px;overflow:hidden;position:absolute;}
.pretooltiparrow:before{background-color:#f7f7f7;border:1px #ababab solid;z-index:11;content:"";position:absolute;left:15px;top:10px;width:25px;height:25px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);}

</style>
<style type="text/css">
/* Overrides of notebook CSS for static HTML export

*/
body {
  overflow: visible;
  padding: 8px;
}
.input_area {
  padding: 0.4em;
}

</style>
<meta charset="UTF-8">
<style type="text/css">
.highlight .hll { background-color: #ffffcc }
.highlight  { background: #f8f8f8; } 
.highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #7D9029 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #A0A000 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
</style>
<script src="https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS_HTML" type="text/javascript">

</script>
<script type="text/javascript">
init_mathjax = function() {
    if (window.MathJax) {
        // MathJax loaded
        MathJax.Hub.Config({
            tex2jax: {
                inlineMath: [ ['$','$'], ["\\(","\\)"] ],
                displayMath: [ ['$$','$$'], ["\\[","\\]"] ]
            },
            displayAlign: 'left', // Change this to 'center' to center equations.
            "HTML-CSS": {
                styles: {'.MathJax_Display': {"margin": 0}}
            }
        });
        MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
    }
}
init_mathjax();
</script>
</head>
<body>
<div class="text_cell_render border-box-sizing rendered_html">
<h1>Comparing Numba and Numpy</h1>
<p>Greg Surges</p>
<p>surgesg at gmail dot com</p>
<p><a href="http://www.gregsurges.com">http://www.gregsurges.com</a></p>
<p>After catching Travis Oliphant's Numba talk at PyCon 2013 last week, I thought I'd test Numba out for myself. According to the docs, which can be found at <a href="http://numba.pydata.org">numba.pydata.org</a>, "Numba compiles Python code with LLVM to code which can be natively executed at runtime." So, this is supposed to give Python some siginificant speed increases, and all you have to do is decorate your functions with <code>@jit</code> or <code>@autojit</code>. Cool.</p>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>Since I'm doing my DSP work in Python, the task I've decided to test on is a simple FIR low-pass filter of Gaussian-distributed white noise. </p>
<p>I've decided to test in a couple of ways:</p>
<ul>
<li>First, I'm writing a dumb, for-loop style filter routine, without using any Numpy arrays and building my output list element by element. I'm computing the difference equation for the filter directly.</li>
<li>Second, I've used a more array-friendly, Numpy style filter method, and the <code>lfilter()</code> function. I expect this to be faster.</li>
</ul>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">In&nbsp;[58]:</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="kn">from</span> <span class="nn">numba</span> <span class="kn">import</span> <span class="n">autojit</span> <span class="c"># import numba&#39;s autojit decorator</span>
<span class="kn">from</span> <span class="nn">scipy.signal</span> <span class="kn">import</span> <span class="n">lfilter</span> <span class="c"># we&#39;ll need this for our filter </span>
<span class="kn">import</span> <span class="nn">profile</span>
</pre></div>

</div>
</div>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>Here, I'm generating the random noise. 10 seconds of it.</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">In&nbsp;[74]:</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="n">fs</span> <span class="o">=</span> <span class="mi">44100</span>
<span class="n">dur</span> <span class="o">=</span> <span class="mi">10</span>
<span class="n">noise</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">randn</span><span class="p">(</span><span class="n">dur</span> <span class="o">*</span> <span class="n">fs</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">float32</span><span class="p">)</span>
<span class="n">plot</span><span class="p">(</span><span class="n">noise</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">44100</span><span class="p">])</span>
<span class="n">xlim</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="mi">44100</span><span class="p">))</span>
</pre></div>

</div>
</div>
<div class="vbox output_wrapper">
<div class="output vbox">
<div class="hbox output_area">
<div class="prompt output_prompt">Out[74]:</div>
<div class="output_subarea output_pyout">
<pre>(0, 44100)</pre>
</div>
</div>
<div class="hbox output_area">
<div class="prompt output_prompt"></div>
<div class="output_subarea output_display_data">
<img src="data:image/png;base64,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
/XXl+VOmTBFt27YVHTp0EG+99Vbl8W3btomuXbuKtm3binvuuce2HLfffrto1qyZ6Nq1a+UxL+U4
efKkuPnmm0Xbtm1FTk6O2L9/v2O5Hn30UZGWliaysrJEVlaWWLFiRUrl+uKLL0Rubq7o3Lmz6NKl
i5g1a1YoyktPrqDL68SJE6J79+4iMzNTdOrUSTz00EOhKC89uYIuL5nTp0+LrKwscf3114eivNzi
i+I+ffq0aNOmjSguLhbl5eUiMzNT7N6924+sEmjVqpU4evRowrEJEyaI6dOnCyGEmDZtmnjwwQeF
EELs2rVLZGZmivLyclFcXCzatGkjzpw5I4QQ4oorrhBbtmwRQghx3XXXiZUrV9qSY926deKDDz5I
UJBeyjF79mwxbtw4IYQQixYtErfccotjufLz88XMmTOTzk2VXAcPHhQ7duwQQgjx3Xffifbt24vd
u3cHXl56cgVdXkII8f333wshhDh16pTIyckR69evD7y89OQKQ3kJIcTMmTPFiBEjxMCBA4UQ4Xge
3eCL4t60aZPo379/5fepU6eKqVOn+pFVAq1atRJHjhxJONahQwdx6NAhIYT0MHbo0EEIIbWqypFA
//79xfvvvy++/PJL0bFjx8rjr776qrjjjjtsy1JcXJygIL2Uo3///mLz5s1CCOkhadKkiWO58vPz
xeOPP550Xqrlkhk8eLBYvXp1aMpLLVeYyuv7778X3bp1Ex9//HGoykspVxjKq6SkRPTr10+sWbOm
sscdpvJygi+xSg4cOICWLVtWfk9PT8eBAwf8yCqBWCyGa665Bt26dcPzzz8PADh8+HCl7b158+Y4
fPgwAODLL79Eenp6kozq42lpaZ7I7qUcyvKtVasWGjZsiGPHjjmW7amnnkJmZibGjBmD48ePBybX
/v37sWPHDuTk5ISqvGS5evToASD48jpz5gyysrLQvHlz9OnTB126dAlFeWnJFYbyuu+++zBjxgzU
qBFXd2EoLzf4oriDWnizceNG7NixAytXrsTs2bOxfv36JLnCsCgoLHIAwLhx41BcXIyioiJccMEF
uP/++wORo6ysDMOGDcOsWbNQv379hN+CLK+ysjLceOONmDVrFurVqxeK8qpRowaKiopQWlqKdevW
Ye3atQm/B1VearkKCwsDL68333wTzZo1Q3Z2tu6CljA9j1bxRXGnpaWhpKSk8ntJSUlCa+UXF1xw
AQCgadOmGDJkCLZu3YrmzZtXLiI6ePAgmjVrpiljaWkp0tPTkZaWhtLS0oTjaWlprmXzQg65DNPS
0vDFF18AAE6fPo1vvvkGjRs3diRXs2bNKivu2LFjsXXr1pTLderUKQwbNgyjRo3CDTfcACAc5SXL
NXLkyEq5wlBeMg0bNsSAAQOwffv2UJSXWq5t27YFXl6bNm3CG2+8gdatW2P48OFYs2YNRo0aFary
coIvirtbt27Yt28f9u/fj/LycixevBiDBg3yI6tKfvjhB3z33XcAgO+//x5vv/02MjIyMGjQILz0
0ksAgJdeeqnyARw0aBAWLVqE8vJyFBcXY9++fejevTtatGiBBg0aYMuWLRBCYMGCBZXXuMELOQYP
HpyU1tKlS9GvXz/Hcun546dKLiEExowZg86dO+Pee+8NTXnpyRV0eR05cqTS3HDixAmsXr0a2dnZ
gZeXnlzKlddBlNeUKVNQUlKC4uJiLFq0CH379sWCBQsCLy/X+GU8X7FihWjfvr1o06aNmDJlil/Z
VPLZZ5+JzMxMkZmZKbp06VKZ59GjR0W/fv003X4KCgpEmzZtRIcOHcSqVasqj8tuP23atBF33323
bVluvfVWccEFF4jatWuL9PR0MW/ePE/lOHnypLjpppsq3Y+Ki4sdyTV37lwxatQokZGRIS699FIx
ePDgygmbVMm1fv16EYvFRGZmZqXL2MqVKwMvLy25VqxYEXh57dy5U2RnZ4vMzEyRkZEhHnvsMSGE
t/XcS7mCLi8lhYWFlV4lQZeXWzxZ8k4IISR1VMsdcAghJMpQcRNCSMSg4iaEkIhBxU0IIRGDipsQ
QiIGFTchhESM/w8VqWtChv3ngwAAAABJRU5ErkJggg==
"></img>
</div>
</div>
</div>
</div>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>Now that I have my noise, I need to define my filter coefficients.</p>
<p>My filter has a transfer function a little something like this: </p>
<p>$$ H(z) = \frac{b_0 + b_1z^{-1}}{1} $$</p>
<p>and my $b$ coefficients are $b = [1, 1]$.</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">In&nbsp;[9]:</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># coefficients for simple lowpass FIR</span>
<span class="n">b</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">]</span>
<span class="n">a</span> <span class="o">=</span> <span class="mi">1</span>
</pre></div>

</div>
</div>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>I define my functions below. They're commented to help you see which is which.</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">In&nbsp;[75]:</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># basic, stupid, iterative difference-equation method</span>
<span class="k">def</span> <span class="nf">apply_filter_d</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
    <span class="n">y</span> <span class="o">=</span> <span class="p">[]</span>
    <span class="n">x_n1</span> <span class="o">=</span> <span class="n">double</span><span class="p">(</span><span class="mf">0.0</span><span class="p">)</span>
    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)):</span>
        <span class="n">y</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">+</span> <span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span><span class="n">x_n1</span><span class="p">)</span>
        <span class="n">x_n1</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
    <span class="k">return</span> <span class="n">y</span>

<span class="c"># basic, stupid, iterative difference-equation method, but using Numba</span>
<span class="nd">@autojit</span>
<span class="k">def</span> <span class="nf">apply_filter_d2</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
    <span class="n">y</span> <span class="o">=</span> <span class="p">[]</span>
    <span class="n">x_n1</span> <span class="o">=</span> <span class="n">double</span><span class="p">(</span><span class="mf">0.0</span><span class="p">)</span>
    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)):</span>
        <span class="n">y</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">+</span> <span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span><span class="n">x_n1</span><span class="p">)</span>
        <span class="n">x_n1</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
    <span class="k">return</span> <span class="n">y</span>

<span class="c"># smarter, array-based Numpy method</span>
<span class="k">def</span> <span class="nf">apply_filter</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
    <span class="n">y</span> <span class="o">=</span> <span class="n">lfilter</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
    <span class="k">return</span> <span class="n">y</span>

<span class="c"># smarter, array-based Numpy method, using Numba</span>
<span class="nd">@autojit</span>
<span class="k">def</span> <span class="nf">apply_filter2</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
    <span class="n">y</span> <span class="o">=</span> <span class="n">lfilter</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
    <span class="k">return</span> <span class="n">y</span>
</pre></div>

</div>
</div>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>So, now using the profile module, let's try these out and see what kind of results we get. </p>
<p>Note that if you're running this on your own, the Numba functions run slower the first time you call them - that's the compilation step happening. They'll run faster after that initial call. Note that I had to remove most of the output from </p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">In&nbsp;[76]:</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># iterative method w/o Numba</span>
<span class="n">profile</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s">&#39;apply_filter_d(b, a, noise)&#39;</span><span class="p">)</span>
</pre></div>

</div>
</div>
<div class="vbox output_wrapper">
<div class="output vbox">
<div class="hbox output_area">
<div class="prompt output_prompt"></div>
<div class="output_subarea output_stream output_stdout">
<pre>         441005 function calls in 11.359 seconds...

</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">In&nbsp;[78]:</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># iterative method with Numba</span>
<span class="n">profile</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s">&#39;apply_filter_d2(b, a, noise)&#39;</span><span class="p">)</span>
</pre></div>

</div>
</div>
<div class="vbox output_wrapper">
<div class="output vbox">
<div class="hbox output_area">
<div class="prompt output_prompt"></div>
<div class="output_subarea output_stream output_stdout">
<pre>         2 function calls in 8.110 seconds...

</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">In&nbsp;[79]:</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># Numpy method w/o Numba</span>
<span class="n">profile</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s">&#39;apply_filter(b, a, noise)&#39;</span><span class="p">)</span>
</pre></div>

</div>
</div>
<div class="vbox output_wrapper">
<div class="output vbox">
<div class="hbox output_area">
<div class="prompt output_prompt"></div>
<div class="output_subarea output_stream output_stdout">
<pre>         7 function calls in 0.154 seconds...

</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">In&nbsp;[81]:</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># Numpy method with Numba</span>
<span class="n">profile</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s">&#39;apply_filter2(b, a, noise)&#39;</span><span class="p">)</span>
</pre></div>

</div>
</div>
<div class="vbox output_wrapper">
<div class="output vbox">
<div class="hbox output_area">
<div class="prompt output_prompt"></div>
<div class="output_subarea output_stream output_stdout">
<pre>         6 function calls in 0.138 seconds...

</pre>
</div>
</div>
</div>
</div>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h1>So, to collect the results:</h1>
<ul>
<li>Iterative w/o Numba: 11.359s</li>
<li>Iterative w/ Numba: 8.110s</li>
<li>Array-based w/o Numba: 0.154s</li>
<li>Array-based w/ Numba: 0.138</li>
</ul>
<p>In the iterative functions, the Numba-compiled code ran in 71% of the time of the non-Numba code.
In the array-based functions, the Numba code ran in 90% of the time of the non-Numba code.</p>
<p>There are probably ways to better optimize these examples to better exploit what Numba can do, but this shows some definite potential.</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">In&nbsp;[106]:</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="n">ax</span> <span class="o">=</span> <span class="n">figure</span><span class="p">()</span>
<span class="n">ax</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">b</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">bar</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.75</span><span class="p">),</span> <span class="p">(</span><span class="mf">11.359</span><span class="p">,</span> <span class="mf">8.11</span><span class="p">,</span> <span class="mf">0.154</span><span class="p">,</span> <span class="mf">0.138</span><span class="p">),</span> <span class="n">width</span><span class="o">=</span><span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="mf">0.1</span><span class="p">,</span> <span class="mf">0.1</span><span class="p">,</span> <span class="mf">0.1</span><span class="p">),</span> <span class="n">color</span><span class="o">=</span><span class="p">(</span><span class="s">&#39;r&#39;</span><span class="p">,</span> <span class="s">&#39;g&#39;</span><span class="p">,</span> <span class="s">&#39;b&#39;</span><span class="p">,</span> <span class="s">&#39;y&#39;</span><span class="p">))</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_xticks</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.75</span><span class="p">))</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_xticklabels</span><span class="p">((</span><span class="s">&#39;IT1&#39;</span><span class="p">,</span> <span class="s">&#39;IT2&#39;</span><span class="p">,</span> <span class="s">&#39;AR1&#39;</span><span class="p">,</span> <span class="s">&#39;AR2&#39;</span><span class="p">))</span>
<span class="n">grid</span><span class="p">()</span>
<span class="n">tight_layout</span><span class="p">()</span>
<span class="n">legend</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="p">[</span><span class="s">&#39;Iterative (no Numba)&#39;</span><span class="p">,</span> <span class="s">&#39;Iterative (Numba)&#39;</span><span class="p">,</span> <span class="s">&#39;Array (no Numba)&#39;</span><span class="p">,</span> <span class="s">&#39;Array (Numba)&#39;</span><span class="p">])</span>
<span class="n">title</span><span class="p">(</span><span class="s">&#39;Results&#39;</span><span class="p">)</span>
</pre></div>

</div>
</div>
<div class="vbox output_wrapper">
<div class="output vbox">
<div class="hbox output_area">
<div class="prompt output_prompt">Out[106]:</div>
<div class="output_subarea output_pyout">
<pre>&lt;matplotlib.text.Text at 0x14319edd0&gt;</pre>
</div>
</div>
<div class="hbox output_area">
<div class="prompt output_prompt"></div>
<div class="output_subarea output_display_data">
<img src="data:image/png;base64,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
"></img>
</div>
</div>
</div>
</div>
</div>

</body>
</html>]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/programming/python-programming/numba/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>PyCon 2013 Poster</title>
		<link>http://gregsurges.com/programming/pycon-2013-poster/</link>
		<comments>http://gregsurges.com/programming/pycon-2013-poster/#comments</comments>
		<pubDate>Tue, 19 Mar 2013 01:11:37 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[PyOracle]]></category>
		<category><![CDATA[2013]]></category>
		<category><![CDATA[machine improvisation]]></category>
		<category><![CDATA[pycon]]></category>
		<category><![CDATA[pyoracle]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1758</guid>
		<description><![CDATA[The poster on PyOracle I gave at PyCon 2013 is online here. PyCon was great, and I had fun being an unofficial computer music representative. &#160;]]></description>
				<content:encoded><![CDATA[<p>The poster on PyOracle I gave at PyCon 2013 is online <a href="http://gregsurges.com/wp-content/uploads/2013/03/PyOracle-PyCon-2013-Greg-Surges.pdf">here</a>.</p>
<p>PyCon was great, and I had fun being an unofficial computer music representative.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/programming/pycon-2013-poster/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PyOracle Notebook</title>
		<link>http://gregsurges.com/programming/pyoracle-programming/pyoracle-notebook/</link>
		<comments>http://gregsurges.com/programming/pyoracle-programming/pyoracle-notebook/#comments</comments>
		<pubDate>Fri, 01 Mar 2013 02:15:44 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[PyOracle]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1753</guid>
		<description><![CDATA[Here&#8217;s the IPython Notebook I used to demonstrate PyOracle in the 270D graduate computer music seminar at UCSD. http://nbviewer.ipython.org/urls/bitbucket.org/pucktronix/pyoracle/raw/d046b2bcf473503fa356094cfe4cff774d1aaefc/270D.ipynb Some of the linked files may not work, but they&#8217;re the same as those in this post.]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s the IPython Notebook I used to demonstrate PyOracle in the 270D graduate computer music seminar at UCSD.</p>
<p><a href="http://nbviewer.ipython.org/urls/bitbucket.org/pucktronix/pyoracle/raw/d046b2bcf473503fa356094cfe4cff774d1aaefc/270D.ipynb">http://nbviewer.ipython.org/urls/bitbucket.org/pucktronix/pyoracle/raw/d046b2bcf473503fa356094cfe4cff774d1aaefc/270D.ipynb</a></p>
<p>Some of the linked files may not work, but they&#8217;re the same as those in this <a title="Some PyOracle Recombinations" href="http://gregsurges.com/programming/pyoracle-programming/some-pyoracle-recombinations/">post</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/programming/pyoracle-programming/pyoracle-notebook/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Some PyOracle Recombinations</title>
		<link>http://gregsurges.com/programming/pyoracle-programming/some-pyoracle-recombinations/</link>
		<comments>http://gregsurges.com/programming/pyoracle-programming/some-pyoracle-recombinations/#comments</comments>
		<pubDate>Mon, 25 Feb 2013 01:09:01 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[PyOracle]]></category>
		<category><![CDATA[algorithmic composition]]></category>
		<category><![CDATA[audio oracle]]></category>
		<category><![CDATA[machine improvisation]]></category>
		<category><![CDATA[pyoracle]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1738</guid>
		<description><![CDATA[Here are some recombinations of existing music made using my PyOracle Python module. PyOracle performs an Audio Oracle analysis, which determines connections and repetitions between segments of audio. For more info, you can check out the page here. Here&#8217;s the Oracle structure for the Bach solo cello work used below: Each arc in the image [...]]]></description>
				<content:encoded><![CDATA[<p>Here are some recombinations of existing music made using my PyOracle Python module. PyOracle performs an Audio Oracle analysis, which determines connections and repetitions between segments of audio. For more info, you can check out the page <a href="http://imtr.ircam.fr/imtr/Audio_Oracle" target="_blank">here</a>.</p>
<p>Here&#8217;s the Oracle structure for the Bach solo cello work used below:</p>
<p style="text-align: center;"><a href="http://gregsurges.com/wp-content/uploads/2013/02/bach-oracle.png" rel="lightbox[1738]"><img class="aligncenter  wp-image-1748" alt="bach-oracle" src="http://gregsurges.com/wp-content/uploads/2013/02/bach-oracle.png" width="508" height="225" /></a></p>
<p>Each arc in the image indicates similarity between two segments of audio. The similarities make it possible to jump along an arc, rather than continuing linearly, and create a new ordering of the musical material &#8211; while maintaining smooth transitions between segments. During recombination, the algorithm walks through this oracle structure, and occasionally jumps either forward or backward along an arc.</p>
<p>Each file indicates a jump number, which gives a probability that, at a given point, playback will jump along an oracle transition rather than continue in a linear fashion. As the percentage increases, the output will consist of increasingly longer segments of the input.</p>
<p>Bach &#8211; 40%</p>
<p><audio controls preload><source src="http://www.pucktronix.com/media/oracle_demos/bach_test04.mp3" /><embed type="application/x-shockwave-flash" flashvars="audioUrl=http://www.pucktronix.com/media/oracle_demos/bach_test04.mp3" src="http://gregsurges.com/wp-content/plugins/oembed-html5-audio/3523697345-audio-player.swf" width="400" height="27" quality="best"></embed></audio></p>
<p>Bach &#8211; 60%</p>
<p><audio controls preload><source src="http://www.pucktronix.com/media/oracle_demos/bach_test06.mp3" /><embed type="application/x-shockwave-flash" flashvars="audioUrl=http://www.pucktronix.com/media/oracle_demos/bach_test06.mp3" src="http://gregsurges.com/wp-content/plugins/oembed-html5-audio/3523697345-audio-player.swf" width="400" height="27" quality="best"></embed></audio></p>
<p>Bach &#8211; 65%</p>
<p><audio controls preload><source src="http://www.pucktronix.com/media/oracle_demos/bach_test065.mp3" /><embed type="application/x-shockwave-flash" flashvars="audioUrl=http://www.pucktronix.com/media/oracle_demos/bach_test065.mp3" src="http://gregsurges.com/wp-content/plugins/oembed-html5-audio/3523697345-audio-player.swf" width="400" height="27" quality="best"></embed></audio></p>
<p>Bach &#8211; 85%</p>
<p><audio controls preload><source src="http://www.pucktronix.com/media/oracle_demos/bach_test085.mp3" /><embed type="application/x-shockwave-flash" flashvars="audioUrl=http://www.pucktronix.com/media/oracle_demos/bach_test085.mp3" src="http://gregsurges.com/wp-content/plugins/oembed-html5-audio/3523697345-audio-player.swf" width="400" height="27" quality="best"></embed></audio></p>
<p>Bach &#8211; 95%</p>
<p><audio controls preload><source src="http://www.pucktronix.com/media/oracle_demos/bach_test095.mp3" /><embed type="application/x-shockwave-flash" flashvars="audioUrl=http://www.pucktronix.com/media/oracle_demos/bach_test095.mp3" src="http://gregsurges.com/wp-content/plugins/oembed-html5-audio/3523697345-audio-player.swf" width="400" height="27" quality="best"></embed></audio></p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/programming/pyoracle-programming/some-pyoracle-recombinations/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
<enclosure url="http://www.pucktronix.com/media/oracle_demos/bach_test04.mp3" length="784791" type="audio/mpeg" />
<enclosure url="http://www.pucktronix.com/media/oracle_demos/bach_test06.mp3" length="785414" type="audio/mpeg" />
<enclosure url="http://www.pucktronix.com/media/oracle_demos/bach_test065.mp3" length="780447" type="audio/mpeg" />
<enclosure url="http://www.pucktronix.com/media/oracle_demos/bach_test085.mp3" length="785002" type="audio/mpeg" />
<enclosure url="http://www.pucktronix.com/media/oracle_demos/bach_test095.mp3" length="785626" type="audio/mpeg" />
		</item>
		<item>
		<title>USB-Octomod</title>
		<link>http://gregsurges.com/original-music/electronic-music/usb-control-voltage-interface-electronic-music-original-music/usb-octomod/</link>
		<comments>http://gregsurges.com/original-music/electronic-music/usb-control-voltage-interface-electronic-music-original-music/usb-octomod/#comments</comments>
		<pubDate>Wed, 06 Feb 2013 03:58:01 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[USB - Control Voltage Interface]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1735</guid>
		<description><![CDATA[Running a fundraiser for an improved USB-Octomod here: https://tindie.com/shops/pucktronix/usb-octomod-1/ There&#8217;s still about a week left to get one.]]></description>
				<content:encoded><![CDATA[<p>Running a fundraiser for an improved <a title="USB-Octomod" href="http://gregsurges.com/circuitry/usb-octomod/">USB-Octomod</a> here: <a href="https://tindie.com/shops/pucktronix/usb-octomod-1/">https://tindie.com/shops/pucktronix/usb-octomod-1/</a></p>
<p>There&#8217;s still about a week left to get one.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/original-music/electronic-music/usb-control-voltage-interface-electronic-music-original-music/usb-octomod/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>pyoracle transition matrix</title>
		<link>http://gregsurges.com/programming/pyoracle-programming/pyoracle-transition-matrix/</link>
		<comments>http://gregsurges.com/programming/pyoracle-programming/pyoracle-transition-matrix/#comments</comments>
		<pubDate>Wed, 06 Feb 2013 03:56:07 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[PyOracle]]></category>
		<category><![CDATA[mir]]></category>
		<category><![CDATA[pyoracle]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1732</guid>
		<description><![CDATA[Here&#8217;s a transition matrix from a pyoracle analysis of a solo piano work. I&#8217;ll be giving a poster on my pyoracle Python module at PyCon 2013 in March. More to come&#8230;]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s a transition matrix from a pyoracle analysis of a solo piano work. I&#8217;ll be giving a poster on my pyoracle Python module at PyCon 2013 in March. More to come&#8230;</p>
<p style="text-align: center;"><a href="http://gregsurges.com/wp-content/uploads/2013/02/image.png" rel="lightbox[1732]"><img class="aligncenter  wp-image-1733" alt="image" src="http://gregsurges.com/wp-content/uploads/2013/02/image.png" width="640" height="480" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/programming/pyoracle-programming/pyoracle-transition-matrix/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>pyoracle visualization of prokofiev &#8216;visions fugitives&#8217; no. 1</title>
		<link>http://gregsurges.com/research/pyoracle-visualization-of-prokofiev-visions-fugitives-no-1/</link>
		<comments>http://gregsurges.com/research/pyoracle-visualization-of-prokofiev-visions-fugitives-no-1/#comments</comments>
		<pubDate>Wed, 30 Jan 2013 05:07:11 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[PyOracle]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[audio oracle]]></category>
		<category><![CDATA[music information retrieval]]></category>
		<category><![CDATA[pyoracle]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1728</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://gregsurges.com/wp-content/uploads/2013/01/output.png" rel="lightbox[1728]"><img class="aligncenter  wp-image-1729" alt="output" src="http://gregsurges.com/wp-content/uploads/2013/01/output-1024x455.png" width="614" height="273" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/research/pyoracle-visualization-of-prokofiev-visions-fugitives-no-1/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Stuff I heard in 2012</title>
		<link>http://gregsurges.com/other-peoples-music/stuff-i-heard-in-2012/</link>
		<comments>http://gregsurges.com/other-peoples-music/stuff-i-heard-in-2012/#comments</comments>
		<pubDate>Tue, 01 Jan 2013 19:02:08 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[Other People's Music]]></category>
		<category><![CDATA[list]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[new year]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1717</guid>
		<description><![CDATA[Here are some recordings I enjoyed this year: David Tudor &#8211; Getty Archives. The Getty Research Library, in Los Angeles, holds David Tudor&#8217;s papers and audio/video archives. This year, the recordings of his performances were made open-access. There&#8217;s about 4.25 GB of music to be heard, including a bunch of rehearsals and unreleased compositions. The [...]]]></description>
				<content:encoded><![CDATA[<p>Here are some recordings I enjoyed this year:</p>
<p style="text-align: center;"><img class="alignright" alt="" src="http://www.getty.edu/research/exhibitions_events/events/david_tudor_symposium/images/grl_tudor070.jpg" width="314" height="252" /></p>
<p><a href="http://archives.getty.edu/view/action/nmets.do?DOCCHOICE=5714395.xml&amp;dvs=1357003844431~389&amp;locale=en_US&amp;search_terms=&amp;adjacency=&amp;VIEWER_URL=/view/action/nmets.do?&amp;DELIVERY_RULE_ID=4" target="_blank">David Tudor &#8211; Getty Archives.</a></p>
<p>The Getty Research Library, in Los Angeles, holds David Tudor&#8217;s papers and audio/video archives. This year, the recordings of his performances were made open-access. There&#8217;s about 4.25 GB of music to be heard, including a bunch of rehearsals and unreleased compositions. The most significant aspect of the performances for me was the realization that the officially released recordings are often truncations of much longer, evening-length works.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img class="alignright" alt="" src="http://2.bp.blogspot.com/_J-EF-sumvgs/TSeq2pvKLJI/AAAAAAAAAfY/8t5q0ylBEr0/s1600/roland%2B1976.jpg" width="320" height="224" /><a href="http://archive.org/details/agp164" target="_blank">Roland Kayn &#8211; <em>Simultan</em></a></p>
<p>Roland Kayn, who died in 2011, was a composer of electroacoustic music. Kayn was significantly influenced by cybernetics, the science of self-regulating systems. Due to this inspiration, his music was composed using analog synthesis systems and feedback. Kayn attempted to create electronic music systems which would be self-regulating.</p>
<p>Though I listened to most of Kayn&#8217;s output this year, I&#8217;ve selected his 5-room installation piece <em>Simultan </em>here. It&#8217;s <a href="http://archive.org/details/agp164" target="_blank">available</a> from the Avant-Garde Project as a free download, and is a good first listen.</p>
<p>&nbsp;</p>
<p><a href="http://gregdavis.bandcamp.com/album/states-1" target="_blank">Greg Davis &#8211; <em>States</em> Series<img class="alignright" alt="" src="http://f0.bcbits.com/z/14/59/1459363982-1.jpg" width="280" height="280" /></a></p>
<p>&nbsp;</p>
<p>I spent some time this year listening to Greg Davis&#8217; <em>States </em>series. <em>States </em>is a 4-cassette, 6-part series of modular synth compositions composed and released in 2011. Gradually shifting patterns, raw electronic timbres, great cover art. Unfortunately, the original release was only on cassette, and on a few different labels. However, Davis has recently put much/all of his music, including these releases, on Bandcamp as downloads.</p>
<p><a href="http://www.tinymixtapes.com/cerberus/greg-davis-states-3" target="_blank">Here&#8217;s a Tiny Mix Tapes review of <em>States </em>(3).</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://www.johnmartyn.com/?location=/web/Liner%20Notes%20-%20London%20Conversation" target="_blank"> </a></p>
<p><a href="http://www.johnmartyn.com/?location=/web/Liner%20Notes%20-%20London%20Conversation" target="_blank">John Martyn - </a><em><a href="http://www.johnmartyn.com/?location=/web/Liner%20Notes%20-%20London%20Conversation" target="_blank">London Conversation</a><img class="alignright" alt="" src="http://991.com/NewGallery/John-Martyn-London-Conversati-449455.jpg" width="300" height="298" /></em></p>
<p>Hannah and I spent some time late this year listening to John Martyn&#8217;s first two albums. Like a combination of Nick Drake and David Gilmour, with a touch of English whimsy, his music hit the spot for both of us. Beautiful finger-picked guitar and rough-edged vocals.</p>
<p>We had this on repeat basically all Thanksgiving day and it never really got old.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/other-peoples-music/stuff-i-heard-in-2012/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>New tabulaRasa Fundraiser</title>
		<link>http://gregsurges.com/original-music/electronic-music/tabularasa-wavetable-oscillator-arduino-shield/new-tabularasa-fundraiser/</link>
		<comments>http://gregsurges.com/original-music/electronic-music/tabularasa-wavetable-oscillator-arduino-shield/new-tabularasa-fundraiser/#comments</comments>
		<pubDate>Mon, 17 Dec 2012 19:55:53 +0000</pubDate>
		<dc:creator>Greg Surges</dc:creator>
				<category><![CDATA[tabulaRasa - wavetable oscillator Arduino shield]]></category>

		<guid isPermaLink="false">http://gregsurges.com/?p=1711</guid>
		<description><![CDATA[The next batch of tabulaRasa pcb/IC sets will be made available a bit differently. I&#8217;m running a small &#8216;fundraiser&#8217; on Tindie, similar to a Kickstarter. The batch will only be produced if enough people are interested. Get a tabulaRasa on Tindie!]]></description>
				<content:encoded><![CDATA[<p><a href="http://gregsurges.com/wp-content/uploads/2012/12/MG_2123.jpg" rel="lightbox[1711]"><img class="aligncenter size-medium wp-image-1712" title="_MG_2123" src="http://gregsurges.com/wp-content/uploads/2012/12/MG_2123-300x200.jpg" alt="" width="300" height="200" /></a></p>
<p>The next batch of <a title="tabulaRasa – Digital Wavetable Oscillator" href="http://gregsurges.com/circuitry/tabularasa/" target="_blank">tabulaRasa</a> pcb/IC sets will be made available a bit differently.</p>
<p>I&#8217;m running a small &#8216;fundraiser&#8217; on Tindie, similar to a Kickstarter. The batch will only be produced if enough people are interested.</p>
<p><a href="https://tindie.com/shops/pucktronix/tabularasa-pcb-and-preprogrammed-chip-set/" target="_blank">Get a tabulaRasa on Tindie!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gregsurges.com/original-music/electronic-music/tabularasa-wavetable-oscillator-arduino-shield/new-tabularasa-fundraiser/feed/</wfw:commentRss>
		<slash:comments>77</slash:comments>
		</item>
	</channel>
</rss>
