
if("a".replace(/a/,function(){return"b"})!="b")(function(){var default_replace=String.prototype.replace;String.prototype.replace=function(search,replace){if(typeof replace!="function"){return default_replace.apply(this,arguments)}
var str=""+this;var callback=replace;if(!(search instanceof RegExp)){var idx=str.indexOf(search);return(idx==-1?str:default_replace.apply(str,[search,callback(search,idx,str)]))}
var reg=search;var result=[];var lastidx=reg.lastIndex;var re;while((re=reg.exec(str))!=null){var idx=re.index;var args=re.concat(idx,str);result.push(str.slice(lastidx,idx),callback.apply(null,args).toString());if(!reg.global){lastidx+=RegExp.lastMatch.length;break}else{lastidx=reg.lastIndex;}}
result.push(str.slice(lastidx));return result.join("")}})();var CodeHighlighter={styleSets:new Array};CodeHighlighter.addStyle=function(name,rules){if([].push)this.styleSets.push({name:name,rules:rules,ignoreCase:arguments[2]||false})
function setEvent(){if(typeof Event!='undefined'&&typeof Event.onReady=='function')
return Event.onReady(CodeHighlighter.init.bind(CodeHighlighter));var old=window.onload;if(typeof window.onload!='function'){window.onload=function(){CodeHighlighter.init()};}else{window.onload=function(){old();CodeHighlighter.init();}}}
if(this.styleSets.length==1)setEvent();}
CodeHighlighter.init=function(){if(!document.getElementsByTagName)return;if("a".replace(/a/,function(){return"b"})!="b")return;var codeEls=document.getElementsByTagName("CODE");codeEls.filter=function(f){var a=new Array;for(var i=0;i<this.length;i++)if(f(this[i]))a[a.length]=this[i];return a;}
var rules=new Array;rules.toString=function(){var exps=new Array;for(var i=0;i<this.length;i++)exps.push(this[i].exp);return exps.join("|");}
function addRule(className,rule){var exp=(typeof rule.exp!="string")?String(rule.exp).substr(1,String(rule.exp).length-2):rule.exp;rules.push({className:className,exp:"("+exp+")",length:(exp.match(/(^|[^\\])\([^?]/g)||"").length+1,replacement:rule.replacement||null});}
function parse(text,ignoreCase){return text.replace(new RegExp(rules,(ignoreCase)?"gi":"g"),function(){var i=0,j=1,rule;while(rule=rules[i++]){if(arguments[j]){if(!rule.replacement)return"<span class=\""+rule.className+"\">"+arguments[0]+"</span>";else{var str=rule.replacement.replace("$0",rule.className);for(var k=1;k<=rule.length-1;k++)str=str.replace("$"+k,arguments[j+k]);return str;}}else j+=rule.length;}});}
function highlightCode(styleSet){var parsed,clsRx=new RegExp("(\\s|^)"+styleSet.name+"(\\s|$)");rules.length=0;var stylableEls=codeEls.filter(function(item){return clsRx.test(item.className)});for(var className in styleSet.rules)addRule(className,styleSet.rules[className]);for(var i=0;i<stylableEls.length;i++){if(/MSIE/.test(navigator.appVersion)&&stylableEls[i].parentNode.nodeName=='PRE'){stylableEls[i]=stylableEls[i].parentNode;parsed=stylableEls[i].innerHTML.replace(/(<code[^>]*>)([^<]*)<\/code>/i,function(){return arguments[1]+parse(arguments[2],styleSet.ignoreCase)+"</code>"});parsed=parsed.replace(/\n( *)/g,function(){var spaces="";for(var i=0;i<arguments[1].length;i++)spaces+="&nbsp;";return"\n"+spaces;});parsed=parsed.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;");parsed=parsed.replace(/\n(<\/\w+>)?/g,"<br />$1").replace(/<br \/>[\n\r\s]*<br \/>/g,"<p><br></p>");}else parsed=parse(stylableEls[i].innerHTML,styleSet.ignoreCase);stylableEls[i].innerHTML=parsed;}}
for(var i=0;i<this.styleSets.length;i++){highlightCode(this.styleSets[i]);}};CodeHighlighter.addStyle("bash",{comment:{exp:/#[^\n]+/},string:{exp:/'[^']*'|"[^"]*"/},keywords:{exp:/\b(case|do|done|elif|else|esac|fi|for|function|if|in|select|set|then|time|until|while)\b/},variable:{exp:/\$[a-zA-Z_]+/}});CodeHighlighter.addStyle("css",{comment:{exp:/\/\*[^*]*\*+([^\/][^*]*\*+)*\//},keywords:{exp:/@\w[\w\s]*/},selectors:{exp:"([\\w-:\\[.#][^{};>]*)(?={)"},properties:{exp:"([\\w-]+)(?=\\s*:)"},urls:{exp:/url\([^\)]*\)/},hex_colors:{exp:/#[0-9A-Fa-f]{3,6}/},unit_values:{exp:/([0-9.]+)(em|en|px|%|pt)?\b/},text_values:{exp:/\b(aqua|azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|black|blue|border-bottom-color|border-bottom-style|border-bottom-width|border-left-color|border-left-style|border-left-width|border-right|border-right-color|border-right-style|border-right-width|border-top-color|border-top-style|border-top-width|border-bottom|border-collapse|border-left|border-width|border-color|border-spacing|border-style|border-top|border|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|line-height|letter-spacing|list-style|list-style-image|list-style-position|list-style-type|margin-bottom|margin-left|margin-right|margin-top|margin|marker-offset|marks|max-height|max-width|min-height|min-width|orphans|outline|outline-color|outline-style|outline-width|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page|page-break-after|page-break-before|page-break-inside|pause-after|pause-before|pause|pitch|pitch-range|play-during|position|quotes|richness|right|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|table-layout|text-align|text-decoration|text-indent|text-shadow|text-transform|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-spacing|z-index|bottom|left|height|above|absolute|always|armenian|aural|auto|avoid|baseline|behind|below|bidi-override|blink|block|bold|bolder|both|capitalize|center-left|center-right|center|circle|cjk-ideographic|close-quote|collapse|condensed|continuous|crop|crosshair|cross|cursive|dashed|decimal-leading-zero|decimal|default|digits|disc|dotted|double|e-resize|embed|extra-condensed|extra-expanded|expanded|fantasy|far-left|far-right|faster|fast|fixed|fuchsia|georgian|gray|green|groove|hebrew|help|hidden|hide|higher|high|hiragana-iroha|hiragana|icon|inherit|inline-table|inline|inset|inside|invert|italic|justify|katakana-iroha|katakana|landscape|larger|large|left-side|leftwards|level|lighter|lime|line-through|list-item|loud|lower-alpha|lower-greek|lower-roman|lowercase|ltr|lower|low|maroon|medium|message-box|middle|mix|monospace|n-resize|narrower|navy|ne-resize|no-close-quote|no-open-quote|no-repeat|none|normal|nowrap|nw-resize|oblique|olive|once|open-quote|outset|outside|overline|pointer|portrait|purple|px|red|relative|repeat-x|repeat-y|repeat|rgb|ridge|right-side|rightwards|s-resize|sans-serif|scroll|se-resize|semi-condensed|semi-expanded|separate|serif|show|silent|silver|slow|slower|small-caps|small-caption|smaller|soft|solid|spell-out|square|static|status-bar|super|sw-resize|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row|table-row-group|teal|text|text-bottom|text-top|thick|thin|transparent|ultra-condensed|ultra-expanded|underline|upper-alpha|upper-latin|upper-roman|uppercase|url|visible|w-resize|wait|white|wider|x-fast|x-high|x-large|x-loud|x-low|x-small|x-soft|xx-large|xx-small|yellow|yes)\b/}});CodeHighlighter.addStyle("html",{comment:{exp:/&lt;!\s*(--([^-]|[\r\n]|-[^-])*--\s*)&gt;/},tag:{exp:/(&lt;\/?)([a-zA-Z]+\s?)(&gt;\/?)?/},closing_tag:{exp:/(&gt;\/?)/},string:{exp:/'[^']*'|"[^"]*"/},attribute:{exp:/\b([a-zA-Z-:]+)(=)/,replacement:"<span class=\"$0\">$1</span>$2"},doctype:{exp:/&lt;!DOCTYPE([^&]|&[^g]|&g[^t])*&gt;/}});CodeHighlighter.addStyle("javascript",{comment:{exp:/(\/\/[^\n]*(\n|$))|(\/\*[^*]*\*+([^\/][^*]*\*+)*\/)/},brackets:{exp:/\(|\)/},string:{exp:/'[^']*'|"[^"]*"/},keywords:{exp:/\b(arguments|break|case|continue|default|delete|do|else|false|for|function|if|in|instanceof|new|null|return|switch|this|true|typeof|var|void|while|with)\b/},global:{exp:/\b(toString|valueOf|window|element|prototype|constructor|document|escape|unescape|parseInt|parseFloat|setTimeout|clearTimeout|setInterval|clearInterval|NaN|isNaN|Infinity)\b/}});CodeHighlighter.addStyle("ruby",{comment:{exp:/#[^\n]+/},brackets:{exp:/\(|\)/},string:{exp:/'[^']*'|"[^"]*"/},keywords:{exp:/\b(do|end|self|class|def|if|module|yield|then|else|for|until|unless|while|elsif|case|when|break|retry|redo|rescue|require|raise)\b/},symbols:{exp:/(:[A-Za-z0-9_!?]+)/}});