var Mustache=function(){var b={},c=function(){};c.prototype={otag:"{{",ctag:"}}",pragmas:{},buffer:[],pragmas_implemented:{"IMPLICIT-ITERATOR":true},context:{},render:function(a,d,f,e){if(!e){this.context=d;this.buffer=[]}if(!this.includes("",a))if(e)return a;else{this.send(a);return}a=this.render_pragmas(a);var g=this.render_section(a,d,f);if(g===false)g=this.render_tags(a,d,f,e);if(e)return g;else this.sendLines(g)},send:function(a){a!==""&&this.buffer.push(a)},sendLines:function(a){if(a){a=a.split("\n");
for(var d=0;d<a.length;d++)this.send(a[d])}},render_pragmas:function(a){if(!this.includes("%",a))return a;var d=this,f=this.getCachedRegex("render_pragmas",function(e,g){return RegExp(e+"%([\\w-]+) ?([\\w]+=[\\w]+)?"+g,"g")});return a.replace(f,function(e,g,h){if(!d.pragmas_implemented[g])throw{message:"This implementation of mustache doesn't understand the '"+g+"' pragma"};d.pragmas[g]={};if(h){e=h.split("=");d.pragmas[g][e[0]]=e[1]}return""})},render_partial:function(a,d,f){a=this.trim(a);if(!f||
f[a]===undefined)throw{message:"unknown_partial '"+a+"'"};if(typeof d[a]!="object")return this.render(f[a],d,f,true);return this.render(f[a],d[a],f,true)},render_section:function(a,d,f){if(!this.includes("#",a)&&!this.includes("^",a))return false;var e=this,g=this.getCachedRegex("render_section",function(h,j){return RegExp("^([\\s\\S]*?)"+h+"(\\^|\\#)\\s*(.+)\\s*"+j+"\n*([\\s\\S]*?)"+h+"\\/\\s*\\3\\s*"+j+"\\s*([\\s\\S]*)$","g")});return a.replace(g,function(h,j,k,p,v,l){h=j?e.render_tags(j,d,f,true):
"";l=l?e.render(l,d,f,true):"";var o;p=e.find(p,d);if(k==="^")o=!p||e.is_array(p)&&p.length===0?e.render(v,d,f,true):"";else if(k==="#")o=e.is_array(p)?e.map(p,function(m){return e.render(v,e.create_context(m),f,true)}).join(""):e.is_object(p)?e.render(v,e.create_context(p),f,true):typeof p==="function"?p.call(d,v,function(m){return e.render(m,d,f,true)}):p?e.render(v,d,f,true):"";return h+o+l})},render_tags:function(a,d,f,e){var g=this,h=function(){return g.getCachedRegex("render_tags",function(v,
l){return RegExp(v+"(=|!|>|\\{|%)?([^\\/#\\^]+?)\\1?"+l+"+","g")})},j=h(),k=function(v,l,o){switch(l){case "!":return"";case "=":g.set_delimiters(o);j=h();return"";case ">":return g.render_partial(o,d,f);case "{":return g.find(o,d);default:return g.escape(g.find(o,d))}};a=a.split("\n");for(var p=0;p<a.length;p++){a[p]=a[p].replace(j,k,this);e||this.send(a[p])}if(e)return a.join("\n")},set_delimiters:function(a){a=a.split(" ");this.otag=this.escape_regex(a[0]);this.ctag=this.escape_regex(a[1])},escape_regex:function(a){if(!arguments.callee.sRE)arguments.callee.sRE=
RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\)","g");return a.replace(arguments.callee.sRE,"\\$1")},find:function(a,d){function f(g){return g===false||g===0||g}a=this.trim(a);var e;if(a.match(/([a-z_]+)\./ig))e=f(this.walk_context(a,d));else if(f(d[a]))e=d[a];else if(f(this.context[a]))e=this.context[a];if(typeof e==="function")return e.apply(d);if(e!==undefined)return e;return""},walk_context:function(a,d){for(var f=a.split("."),e=d[f[0]]!=undefined?d:this.context,g=e[f.shift()];g!=
undefined&&f.length>0;){e=g;g=g[f.shift()]}if(typeof g==="function")return g.apply(e);return g},includes:function(a,d){return d.indexOf(this.otag+a)!=-1},escape:function(a){a=String(a===null?"":a);return a.replace(/&(?!\w+;)|["'<>\\]/g,function(d){switch(d){case "&":return"&amp;";case '"':return"&quot;";case "'":return"&#39;";case "<":return"&lt;";case ">":return"&gt;";default:return d}})},create_context:function(a){if(this.is_object(a))return a;else{var d=".";if(this.pragmas["IMPLICIT-ITERATOR"])d=
this.pragmas["IMPLICIT-ITERATOR"].iterator;var f={};f[d]=a;return f}},is_object:function(a){return a&&typeof a=="object"},is_array:function(a){return Object.prototype.toString.call(a)==="[object Array]"},trim:function(a){return a.replace(/^\s*|\s*$/g,"")},map:function(a,d){if(typeof a.map=="function")return a.map(d);else{for(var f=[],e=a.length,g=0;g<e;g++)f.push(d(a[g]));return f}},getCachedRegex:function(a,d){var f=b[this.otag];f||(f=b[this.otag]={});var e=f[this.ctag];e||(e=f[this.ctag]={});(f=
e[a])||(f=e[a]=d(this.otag,this.ctag));return f}};return{name:"mustache.js",version:"0.4.0-dev",to_html:function(a,d,f,e){var g=new c;if(e)g.send=e;g.render(a,d||{},f);if(!e)return g.buffer.join("\n")}}}();
