// Knockout JavaScript library v1.2.1
// (c) Steven Sanderson - http://knockoutjs.com/
// License: MIT (http://www.opensource.org/licenses/mit-license.php)
(function(a,b){function e(a,b){var c=a===null||typeof a in d;return c?a===b:!1}var c=a.ko={};c.exportSymbol=function(b,c){var d=b.split("."),e=a;for(var f=0;f<d.length-1;f++)e=e[d[f]];e[d[d.length-1]]=c},c.exportProperty=function(a,b,c){a[b]=c},c.utils=new function(){function n(a,b){if(a.tagName!="INPUT"||!a.type)return!1;if(b.toLowerCase()!="click")return!1;var c=a.type.toLowerCase();return c=="checkbox"||c=="radio"}var d=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,e=/MSIE 6/i.test(navigator.userAgent),f=/MSIE 7/i.test(navigator.userAgent),g={},h={},i=/Firefox\/2/i.test(navigator.userAgent)?"KeyboardEvent":"UIEvents";g[i]=["keyup","keydown","keypress"],g.MouseEvents=["click","dblclick","mousedown","mouseup","mousemove","mouseover","mouseout","mouseenter","mouseleave"];for(var j in g){var k=g[j];if(k.length)for(var l=0,m=k.length;l<m;l++)h[k[l]]=j}return{fieldsIncludedWithJsonPost:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],arrayForEach:function(a,b){for(var c=0,d=a.length;c<d;c++)b(a[c])},arrayIndexOf:function(a,b){if(typeof a.indexOf=="function")return a.indexOf(b);for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},arrayFirst:function(a,b,c){for(var d=0,e=a.length;d<e;d++)if(b.call(c,a[d]))return a[d];return null},arrayRemoveItem:function(a,b){var d=c.utils.arrayIndexOf(a,b);d>=0&&a.splice(d,1)},arrayGetDistinctValues:function(a){a=a||[];var b=[];for(var d=0,e=a.length;d<e;d++)c.utils.arrayIndexOf(b,a[d])<0&&b.push(a[d]);return b},arrayMap:function(a,b){a=a||[];var c=[];for(var d=0,e=a.length;d<e;d++)c.push(b(a[d]));return c},arrayFilter:function(a,b){a=a||[];var c=[];for(var d=0,e=a.length;d<e;d++)b(a[d])&&c.push(a[d]);return c},arrayPushAll:function(a,b){for(var c=0,d=b.length;c<d;c++)a.push(b[c])},emptyDomNode:function(a){while(a.firstChild)c.removeNode(a.firstChild)},setDomNodeChildren:function(a,b){c.utils.emptyDomNode(a),b&&c.utils.arrayForEach(b,function(b){a.appendChild(b)})},replaceDomNodes:function(a,b){var d=a.nodeType?[a]:a;if(d.length>0){var e=d[0],f=e.parentNode;for(var g=0,h=b.length;g<h;g++)f.insertBefore(b[g],e);for(var g=0,h=d.length;g<h;g++)c.removeNode(d[g])}},setOptionNodeSelectionState:function(a,b){navigator.userAgent.indexOf("MSIE 6")>=0?a.setAttribute("selected",b):a.selected=b},getElementsHavingAttribute:function(a,b){if(!a||a.nodeType!=1)return[];var c=[];a.getAttribute(b)!==null&&c.push(a);var d=a.getElementsByTagName("*");for(var e=0,f=d.length;e<f;e++)d[e].getAttribute(b)!==null&&c.push(d[e]);return c},stringTrim:function(a){return(a||"").replace(d,"")},stringTokenize:function(a,b){var d=[],e=(a||"").split(b);for(var f=0,g=e.length;f<g;f++){var h=c.utils.stringTrim(e[f]);h!==""&&d.push(h)}return d},stringStartsWith:function(a,b){return a=a||"",b.length>a.length?!1:a.substring(0,b.length)===b},evalWithinScope:function(a,c){return c===b?(new Function("return "+a))():(new Function("sc","with(sc) { return ("+a+") }"))(c)},domNodeIsContainedBy:function(a,b){if(b.compareDocumentPosition)return(b.compareDocumentPosition(a)&16)==16;while(a!=null){if(a==b)return!0;a=a.parentNode}return!1},domNodeIsAttachedToDocument:function(a){return c.utils.domNodeIsContainedBy(a,document)},registerEventHandler:function(a,b,c){if(typeof jQuery!="undefined"){if(n(a,b)){var d=c;c=function(a,b){var c=this.checked;b&&(this.checked=b.checkedStateBeforeEvent!==!0),d.call(this,a),this.checked=c}}jQuery(a).bind(b,c)}else if(typeof a.addEventListener=="function")a.addEventListener(b,c,!1);else if(typeof a.attachEvent!="undefined")a.attachEvent("on"+b,function(b){c.call(a,b)});else throw new Error("Browser doesn't support addEventListener or attachEvent")},triggerEvent:function(b,c){if(!b||!b.nodeType)throw new Error("element must be a DOM node when calling triggerEvent");if(typeof jQuery!="undefined"){var d=[];n(b,c)&&d.push({checkedStateBeforeEvent:b.checked}),jQuery(b).trigger(c,d)}else if(typeof document.createEvent=="function"){if(typeof b.dispatchEvent!="function")throw new Error("The supplied element doesn't support dispatchEvent");var e=h[c]||"HTMLEvents",f=document.createEvent(e);f.initEvent(c,!0,!0,a,0,0,0,0,0,!1,!1,!1,!1,0,b),b.dispatchEvent(f)}else if(typeof b.fireEvent!="undefined")c=="click"&&b.tagName=="INPUT"&&(b.type.toLowerCase()=="checkbox"||b.type.toLowerCase()=="radio")&&(b.checked=b.checked!==!0),b.fireEvent("on"+c);else throw new Error("Browser doesn't support triggering events")},unwrapObservable:function(a){return c.isObservable(a)?a():a},domNodeHasCssClass:function(a,b){var d=(a.className||"").split(/\s+/);return c.utils.arrayIndexOf(d,b)>=0},toggleDomNodeCssClass:function(a,b,d){var e=c.utils.domNodeHasCssClass(a,b);if(d&&!e)a.className=(a.className||"")+" "+b;else if(e&&!d){var f=(a.className||"").split(/\s+/),g="";for(var h=0;h<f.length;h++)f[h]!=b&&(g+=f[h]+" ");a.className=c.utils.stringTrim(g)}},range:function(a,b){a=c.utils.unwrapObservable(a),b=c.utils.unwrapObservable(b);var d=[];for(var e=a;e<=b;e++)d.push(e);return d},makeArray:function(a){var b=[];for(var c=0,d=a.length;c<d;c++)b.push(a[c]);return b},isIe6:e,isIe7:f,getFormFields:function(a,b){var d=c.utils.makeArray(a.getElementsByTagName("INPUT")).concat(c.utils.makeArray(a.getElementsByTagName("TEXTAREA"))),e=typeof b=="string"?function(a){return a.name===b}:function(a){return b.test(a.name)},f=[];for(var g=d.length-1;g>=0;g--)e(d[g])&&f.push(d[g]);return f},parseJson:function(b){if(typeof b=="string"){b=c.utils.stringTrim(b);if(b)return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))()}return null},stringifyJson:function(a){if(typeof JSON=="undefined"||typeof JSON.stringify=="undefined")throw new Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return JSON.stringify(c.utils.unwrapObservable(a))},postJson:function(a,b,d){d=d||{};var e=d.params||{},f=d.includeFields||this.fieldsIncludedWithJsonPost,g=a;if(typeof a=="object"&&a.tagName=="FORM"){var h=a;g=h.action;for(var i=f.length-1;i>=0;i--){var j=c.utils.getFormFields(h,f[i]);for(var k=j.length-1;k>=0;k--)e[j[k].name]=j[k].value}}b=c.utils.unwrapObservable(b);var l=document.createElement("FORM");l.style.display="none",l.action=g,l.method="post";for(var m in b){var n=document.createElement("INPUT");n.name=m,n.value=c.utils.stringifyJson(c.utils.unwrapObservable(b[m])),l.appendChild(n)}for(var m in e){var n=document.createElement("INPUT");n.name=m,n.value=e[m],l.appendChild(n)}document.body.appendChild(l),d.submitter?d.submitter(l):l.submit(),setTimeout(function(){l.parentNode.removeChild(l)},0)}}},c.exportSymbol("ko.utils",c.utils),c.exportSymbol("ko.utils.arrayForEach",c.utils.arrayForEach),c.exportSymbol("ko.utils.arrayFirst",c.utils.arrayFirst),c.exportSymbol("ko.utils.arrayFilter",c.utils.arrayFilter),c.exportSymbol("ko.utils.arrayGetDistinctValues",c.utils.arrayGetDistinctValues),c.exportSymbol("ko.utils.arrayIndexOf",c.utils.arrayIndexOf),c.exportSymbol("ko.utils.arrayMap",c.utils.arrayMap),c.exportSymbol("ko.utils.arrayPushAll",c.utils.arrayPushAll),c.exportSymbol("ko.utils.arrayRemoveItem",c.utils.arrayRemoveItem),c.exportSymbol("ko.utils.fieldsIncludedWithJsonPost",c.utils.fieldsIncludedWithJsonPost),c.exportSymbol("ko.utils.getElementsHavingAttribute",c.utils.getElementsHavingAttribute),c.exportSymbol("ko.utils.getFormFields",c.utils.getFormFields),c.exportSymbol("ko.utils.postJson",c.utils.postJson),c.exportSymbol("ko.utils.parseJson",c.utils.parseJson),c.exportSymbol("ko.utils.registerEventHandler",c.utils.registerEventHandler),c.exportSymbol("ko.utils.stringifyJson",c.utils.stringifyJson),c.exportSymbol("ko.utils.range",c.utils.range),c.exportSymbol("ko.utils.toggleDomNodeCssClass",c.utils.toggleDomNodeCssClass),c.exportSymbol("ko.utils.triggerEvent",c.utils.triggerEvent),c.exportSymbol("ko.utils.unwrapObservable",c.utils.unwrapObservable),Function.prototype.bind||(Function.prototype.bind=function(a){var b=this,c=Array.prototype.slice.call(arguments),a=c.shift();return function(){return b.apply(a,c.concat(Array.prototype.slice.call(arguments)))}}),c.utils.domData=new function(){var a=0,d="__ko__"+(new Date).getTime(),e={};return{get:function(a,d){var e=c.utils.domData.getAll(a,!1);return e===b?b:e[d]},set:function(a,d,e){if(e===b&&c.utils.domData.getAll(a,!1)===b)return;var f=c.utils.domData.getAll(a,!0);f[d]=e},getAll:function(c,f){var g=c[d];if(!g){if(!f)return b;g=c[d]="ko"+a++,e[g]={}}return e[g]},clear:function(a){var b=a[d];b&&(delete e[b],a[d]=null)}}},c.utils.domNodeDisposal=new function(){function d(d,e){var f=c.utils.domData.get(d,a);return f===b&&e&&(f=[],c.utils.domData.set(d,a,f)),f}function e(d){c.utils.domData.set(d,a,b)}function f(a){var b=d(a,!1);if(b){b=b.slice(0);for(var e=0;e<b.length;e++)b[e](a)}c.utils.domData.clear(a),typeof jQuery=="function"&&typeof jQuery.cleanData=="function"&&jQuery.cleanData([a])}var a="__ko_domNodeDisposal__"+(new Date).getTime();return{addDisposeCallback:function(a,b){if(typeof b!="function")throw new Error("Callback must be a function");d(a,!0).push(b)},removeDisposeCallback:function(a,b){var f=d(a,!1);f&&(c.utils.arrayRemoveItem(f,b),f.length==0&&e(a))},cleanNode:function(a){if(a.nodeType!=1&&a.nodeType!=9)return;f(a);var b=[];c.utils.arrayPushAll(b,a.getElementsByTagName("*"));for(var d=0,e=b.length;d<e;d++)f(b[d])},removeNode:function(a){c.cleanNode(a),a.parentNode&&a.parentNode.removeChild(a)}}},c.cleanNode=c.utils.domNodeDisposal.cleanNode,c.removeNode=c.utils.domNodeDisposal.removeNode,c.exportSymbol("ko.cleanNode",c.cleanNode),c.exportSymbol("ko.removeNode",c.removeNode),c.exportSymbol("ko.utils.domNodeDisposal",c.utils.domNodeDisposal),c.exportSymbol("ko.utils.domNodeDisposal.addDisposeCallback",c.utils.domNodeDisposal.addDisposeCallback),c.exportSymbol("ko.utils.domNodeDisposal.removeDisposeCallback",c.utils.domNodeDisposal.removeDisposeCallback),function(){function a(a){var b=c.utils.stringTrim(a).toLowerCase(),d=document.createElement("div"),e=b.match(/^<(thead|tbody|tfoot)/)&&[1,"<table>","</table>"]||!b.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!b.indexOf("<td")||!b.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||[0,"",""];d.innerHTML=e[1]+a+e[2];while(e[0]--)d=d.lastChild;return c.utils.makeArray(d.childNodes)}c.utils.parseHtmlFragment=function(b){return typeof jQuery!="undefined"?jQuery.clean([b]):a(b)},c.utils.setHtml=function(a,d){c.utils.emptyDomNode(a);if(d!==null&&d!==b){typeof d!="string"&&(d=d.toString());if(typeof jQuery!="undefined")jQuery(a).html(d);else{var e=c.utils.parseHtmlFragment(d);for(var f=0;f<e.length;f++)a.appendChild(e[f])}}}}(),c.memoization=function(){function d(){return((1+Math.random())*4294967296|0).toString(16).substring(1)}function e(){return d()+d()}function f(a,b){if(!a)return;if(a.nodeType==8){var d=c.memoization.parseMemoText(a.nodeValue);d!=null&&b.push({domNode:a,memoId:d})}else if(a.nodeType==1)for(var e=0,g=a.childNodes,h=g.length;e<h;e++)f(g[e],b)}var a={};return{memoize:function(b){if(typeof b!="function")throw new Error("You can only pass a function to ko.memoization.memoize()");var c=e();return a[c]=b,"<!--[ko_memo:"+c+"]-->"},unmemoize:function(c,d){var e=a[c];if(e===b)throw new Error("Couldn't find any memo with ID "+c+". Perhaps it's already been unmemoized.");try{return e.apply(null,d||[]),!0}finally{delete a[c]}},unmemoizeDomNodeAndDescendants:function(a,b){var d=[];f(a,d);for(var e=0,g=d.length;e<g;e++){var h=d[e].domNode,i=[h];b&&c.utils.arrayPushAll(i,b),c.memoization.unmemoize(d[e].memoId,i),h.nodeValue="",h.parentNode&&h.parentNode.removeChild(h)}},parseMemoText:function(a){var b=a.match(/^\[ko_memo\:(.*?)\]$/);return b?b[1]:null}}}(),c.exportSymbol("ko.memoization",c.memoization),c.exportSymbol("ko.memoization.memoize",c.memoization.memoize),c.exportSymbol("ko.memoization.unmemoize",c.memoization.unmemoize),c.exportSymbol("ko.memoization.parseMemoText",c.memoization.parseMemoText),c.exportSymbol("ko.memoization.unmemoizeDomNodeAndDescendants",c.memoization.unmemoizeDomNodeAndDescendants),c.subscription=function(a,b){this.callback=a,this.dispose=function(){this.isDisposed=!0,b()}.bind(this),c.exportProperty(this,"dispose",this.dispose)},c.subscribable=function(){var a=[];this.subscribe=function(b,d){var e=d?b.bind(d):b,f=new c.subscription(e,function(){c.utils.arrayRemoveItem(a,f)});return a.push(f),f},this.notifySubscribers=function(b){c.utils.arrayForEach(a.slice(0),function(a){a&&a.isDisposed!==!0&&a.callback(b)})},this.getSubscriptionsCount=function(){return a.length},c.exportProperty(this,"subscribe",this.subscribe),c.exportProperty(this,"notifySubscribers",this.notifySubscribers),c.exportProperty(this,"getSubscriptionsCount",this.getSubscriptionsCount)},c.isSubscribable=function(a){return typeof a.subscribe=="function"&&typeof a.notifySubscribers=="function"},c.exportSymbol("ko.subscribable",c.subscribable),c.exportSymbol("ko.isSubscribable",c.isSubscribable),c.dependencyDetection=function(){var a=[];return{begin:function(){a.push([])},end:function(){return a.pop()},registerDependency:function(b){if(!c.isSubscribable(b))throw"Only subscribable things can act as dependencies";a.length>0&&a[a.length-1].push(b)}}}();var d={"undefined":!0,"boolean":!0,number:!0,string:!0};c.observable=function(a){function d(){if(arguments.length>0){if(!d.equalityComparer||!d.equalityComparer(b,arguments[0]))b=arguments[0],d.notifySubscribers(b);return this}return c.dependencyDetection.registerDependency(d),b}var b=a;return d.__ko_proto__=c.observable,d.valueHasMutated=function(){d.notifySubscribers(b)},d.equalityComparer=e,c.subscribable.call(d),c.exportProperty(d,"valueHasMutated",d.valueHasMutated),d},c.isObservable=function(a){return a===null||a===b||a.__ko_proto__===b?!1:a.__ko_proto__===c.observable?!0:c.isObservable(a.__ko_proto__)},c.isWriteableObservable=function(a){return typeof a=="function"&&a.__ko_proto__===c.observable?!0:typeof a=="function"&&a.__ko_proto__===c.dependentObservable&&a.hasWriteFunction?!0:!1},c.exportSymbol("ko.observable",c.observable),c.exportSymbol("ko.isObservable",c.isObservable),c.exportSymbol("ko.isWriteableObservable",c.isWriteableObservable),c.observableArray=function(a){arguments.length==0&&(a=[]);if(a===null||a===b||"length"in a){var d=new c.observable(a);return c.utils.arrayForEach(["pop","push","reverse","shift","sort","splice","unshift"],function(a){d[a]=function(){var b=d(),c=b[a].apply(b,arguments);return d.valueHasMutated(),c}}),c.utils.arrayForEach(["slice"],function(a){d[a]=function(){var b=d();return b[a].apply(b,arguments)}}),d.remove=function(a){var b=d(),c=[],e=[],f=typeof a=="function"?a:function(b){return b===a};for(var g=0,h=b.length;g<h;g++){var i=b[g];f(i)?e.push(i):c.push(i)}return d(c),e},d.removeAll=function(a){if(a===b){var e=d();return d([]),e}return a?d.remove(function(b){return c.utils.arrayIndexOf(a,b)>=0}):[]},d.destroy=function(a){var b=d(),c=typeof a=="function"?a:function(b){return b===a};for(var e=b.length-1;e>=0;e--){var f=b[e];c(f)&&(b[e]._destroy=!0)}d.valueHasMutated()},d.destroyAll=function(a){return a===b?d.destroy(function(){return!0}):a?d.destroy(function(b){return c.utils.arrayIndexOf(a,b)>=0}):[]},d.indexOf=function(a){var b=d();return c.utils.arrayIndexOf(b,a)},d.replace=function(a,b){var c=d.indexOf(a);c>=0&&(d()[c]=b,d.valueHasMutated())},c.exportProperty(d,"remove",d.remove),c.exportProperty(d,"removeAll",d.removeAll),c.exportProperty(d,"destroy",d.destroy),c.exportProperty(d,"destroyAll",d.destroyAll),c.exportProperty(d,"indexOf",d.indexOf),d}throw new Error("The argument passed when initializing an observable array must be an array, or null, or undefined.")},c.exportSymbol("ko.observableArray",c.observableArray),c.dependentObservable=function(a,b,d){function k(){c.utils.arrayForEach(j,function(a){a.dispose()}),j=[]}function l(a){k(),c.utils.arrayForEach(a,function(a){j.push(a.subscribe(m))})}function m(){if(f&&typeof d.disposeWhen=="function"&&d.disposeWhen()){n.dispose();return}try{c.dependencyDetection.begin(),e=d.owner?d.read.call(d.owner):d.read()}finally{var a=c.utils.arrayGetDistinctValues(c.dependencyDetection.end());l(a)}n.notifySubscribers(e),f=!0}function n(){if(!(arguments.length>0))return f||m(),c.dependencyDetection.registerDependency(n),e;if(typeof d.write!="function")throw"Cannot write a value to a dependentObservable unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.";var a=arguments[0];d.owner?d.write.call(d.owner,a):d.write(a)}var e,f=!1;a&&typeof a=="object"?d=a:(d=d||{},d.read=a||d.read,d.owner=b||d.owner);if(typeof d.read!="function")throw"Pass a function that returns the value of the dependentObservable";var g=typeof d.disposeWhenNodeIsRemoved=="object"?d.disposeWhenNodeIsRemoved:null,h=null;if(g){h=function(){n.dispose()},c.utils.domNodeDisposal.addDisposeCallback(g,h);var i=d.disposeWhen;d.disposeWhen=function(){return!c.utils.domNodeIsAttachedToDocument(g)||typeof i=="function"&&i()}}var j=[];return n.__ko_proto__=c.dependentObservable,n.getDependenciesCount=function(){return j.length},n.hasWriteFunction=typeof d.write=="function",n.dispose=function(){g&&c.utils.domNodeDisposal.removeDisposeCallback(g,h),k()},c.subscribable.call(n),d.deferEvaluation!==!0&&m(),c.exportProperty(n,"dispose",n.dispose),c.exportProperty(n,"getDependenciesCount",n.getDependenciesCount),n},c.dependentObservable.__ko_proto__=c.observable,c.exportSymbol("ko.dependentObservable",c.dependentObservable),function(){function d(a,c,g){g=g||new f,a=c(a);var h=typeof a=="object"&&a!==null&&a!==b;if(!h)return a;var i=a instanceof Array?[]:{};return g.save(a,i),e(a,function(e){var f=c(a[e]);switch(typeof f){case"boolean":case"number":case"string":case"function":i[e]=f;break;case"object":case"undefined":var h=g.get(f);i[e]=h!==b?h:d(f,c,g)}}),i}function e(a,b){if(a instanceof Array)for(var c=0;c<a.length;c++)b(c);else for(var d in a)b(d)}function f(){var a=[],d=[];this.save=function(b,e){var f=c.utils.arrayIndexOf(a,b);f>=0?d[f]=e:(a.push(b),d.push(e))},this.get=function(e){var f=c.utils.arrayIndexOf(a,e);return f>=0?d[f]:b}}var a=10;c.toJS=function(b){if(arguments.length==0)throw new Error("When calling ko.toJS, pass the object you want to convert.");return d(b,function(b){for(var d=0;c.isObservable(b)&&d<a;d++)b=b();return b})},c.toJSON=function(a){var b=c.toJS(a);return c.utils.stringifyJson(b)}}(),c.exportSymbol("ko.toJS",c.toJS),c.exportSymbol("ko.toJSON",c.toJSON),function(){c.selectExtensions={readValue:function(a){return a.tagName=="OPTION"?a.__ko__hasDomDataOptionValue__===!0?c.utils.domData.get(a,c.bindingHandlers.options.optionValueDomDataKey):a.getAttribute("value"):a.tagName=="SELECT"?a.selectedIndex>=0?c.selectExtensions.readValue(a.options[a.selectedIndex]):b:a.value},writeValue:function(a,d){if(a.tagName=="OPTION")switch(typeof d){case"string":case"number":c.utils.domData.set(a,c.bindingHandlers.options.optionValueDomDataKey,b),"__ko__hasDomDataOptionValue__"in a&&delete a.__ko__hasDomDataOptionValue__,a.value=d;break;default:c.utils.domData.set(a,c.bindingHandlers.options.optionValueDomDataKey,d),a.__ko__hasDomDataOptionValue__=!0,a.value=""}else if(a.tagName=="SELECT"){for(var e=a.options.length-1;e>=0;e--)if(c.selectExtensions.readValue(a.options[e])==d){a.selectedIndex=e;break}}else{if(d===null||d===b)d="";a.value=d}}}}(),c.exportSymbol("ko.selectExtensions",c.selectExtensions),c.exportSymbol("ko.selectExtensions.readValue",c.selectExtensions.readValue),c.exportSymbol("ko.selectExtensions.writeValue",c.selectExtensions.writeValue),c.jsonExpressionRewriting=function(){function e(b,c){return b.replace(a,function(a,b){return c[b]})}function f(a){return c.utils.arrayIndexOf(d,c.utils.stringTrim(a).toLowerCase())>=0?!1:a.match(b)!==null}var a=/\[ko_token_(\d+)\]/g,b=/^[\_$a-z][\_$a-z0-9]*(\[.*?\])*(\.[\_$a-z][\_$a-z0-9]*(\[.*?\])*)*$/i,d=["true","false"];return{parseJson:function(a){a=c.utils.stringTrim(a);if(a.length<3)return{};var b=[],d=null,f;for(var g=a.charAt(0)=="{"?1:0;g<a.length;g++){var h=a.charAt(g);if(d===null)switch(h){case'"':case"'":case"/":d=g,f=h;break;case"{":d=g,f="}";break;case"[":d=g,f="]"}else if(h==f){var i=a.substring(d,g+1);b.push(i);var j="[ko_token_"+(b.length-1)+"]";a=a.substring(0,d)+j+a.substring(g+1),g-=i.length-j.length,d=null}}var k={},l=a.split(",");for(var m=0,n=l.length;m<n;m++){var o=l[m],p=o.indexOf(":");if(p>0&&p<o.length-1){var q=c.utils.stringTrim(o.substring(0,p)),r=c.utils.stringTrim(o.substring(p+1));q.charAt(0)=="{"&&(q=q.substring(1)),r.charAt(r.length-1)=="}"&&(r=r.substring(0,r.length-1)),q=c.utils.stringTrim(e(q,b)),r=c.utils.stringTrim(e(r,b)),k[q]=r}}return k},insertPropertyAccessorsIntoJson:function(a){var b=c.jsonExpressionRewriting.parseJson(a),d=[];for(var e in b){var g=b[e];f(g)&&(d.length>0&&d.push(", "),d.push(e+" : function(__ko_value) { "+g+" = __ko_value; }"))}if(d.length>0){var h=d.join("");a=a+", '_ko_property_writers' : { "+h+" } "}return a}}}(),c.exportSymbol("ko.jsonExpressionRewriting",c.jsonExpressionRewriting),c.exportSymbol("ko.jsonExpressionRewriting.parseJson",c.jsonExpressionRewriting.parseJson),c.exportSymbol("ko.jsonExpressionRewriting.insertPropertyAccessorsIntoJson",c.jsonExpressionRewriting.insertPropertyAccessorsIntoJson),function(){function e(b,d){try{var e=" { "+c.jsonExpressionRewriting.insertPropertyAccessorsIntoJson(b)+" } ";return c.utils.evalWithinScope(e,d===null?a:d)}catch(f){throw new Error("Unable to parse binding attribute.\nMessage: "+f+";\nAttribute value: "+b)}}function f(a,b,c,d,e){a(b,c,d,e)}var d="data-bind";c.bindingHandlers={},c.applyBindingsToNode=function(a,b,g,h){function k(a){return function(){return j[a]}}function l(){return j}var i=!0;h=h||d;var j;new c.dependentObservable(function(){var d=typeof b=="function"?b():b;j=d||e(a.getAttribute(h),g);if(i)for(var m in j)c.bindingHandlers[m]&&typeof c.bindingHandlers[m].init=="function"&&f(c.bindingHandlers[m].init,a,k(m),l,g);for(var m in j)c.bindingHandlers[m]&&typeof c.bindingHandlers[m].update=="function"&&f(c.bindingHandlers[m].update,a,k(m),l,g)},null,{disposeWhenNodeIsRemoved:a}),i=!1},c.applyBindings=function(e,f){if(f&&f.nodeType==b)throw new Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node (note: this is a breaking change since KO version 1.05)");f=f||a.document.body;var g=c.utils.getElementsHavingAttribute(f,d);c.utils.arrayForEach(g,function(a){c.applyBindingsToNode(a,null,e)})},c.exportSymbol("ko.bindingHandlers",c.bindingHandlers),c.exportSymbol("ko.applyBindings",c.applyBindings),c.exportSymbol("ko.applyBindingsToNode",c.applyBindingsToNode)}();var f=["click"];c.utils.arrayForEach(f,function(a){c.bindingHandlers[a]={init:function(b,d,e,f){var g=function(){var b={};return b[a]=d(),b};return c.bindingHandlers.event.init.call(this,b,g,e,f)}}}),c.bindingHandlers.event={init:function(a,b,d,e){var f=b()||{};for(var g in f)(function(){var f=g;typeof f=="string"&&c.utils.registerEventHandler(a,f,function(a){var c,g=b()[f];if(!g)return;var h=d();try{c=g.apply(e,arguments)}finally{c!==!0&&(a.preventDefault?a.preventDefault():a.returnValue=!1)}var i=h[f+"Bubble"]!==!1;i||(a.cancelBubble=!0,a.stopPropagation&&a.stopPropagation())})})()}},c.bindingHandlers.submit={init:function(a,b,d,e){if(typeof b()!="function")throw new Error("The value for a submit binding must be a function to invoke on submit");c.utils.registerEventHandler(a,"submit",function(c){var d,f=b();try{d=f.call(e,a)}finally{d!==!0&&(c.preventDefault?c.preventDefault():c.returnValue=!1)}})}},c.bindingHandlers.visible={update:function(a,b){var d=c.utils.unwrapObservable(b()),e=a.style.display!="none";d&&!e?a.style.display="":!d&&e&&(a.style.display="none")}},c.bindingHandlers.enable={update:function(a,b){var d=c.utils.unwrapObservable(b());d&&a.disabled?a.removeAttribute("disabled"):!d&&!a.disabled&&(a.disabled=!0)}},c.bindingHandlers.disable={update:function(a,b){c.bindingHandlers.enable.update(a,function(){return!c.utils.unwrapObservable(b())})}},c.bindingHandlers.value={init:function(a,b,d){var e=["change"],f=d().valueUpdate;f&&(typeof f=="string"&&(f=[f]),c.utils.arrayPushAll(e,f),e=c.utils.arrayGetDistinctValues(e)),c.utils.arrayForEach(e,function(e){var f=!1;c.utils.stringStartsWith(e,"after")&&(f=!0,e=e.substring("after".length));var g=f?function(a){setTimeout(a,0)}:function(a){a()};c.utils.registerEventHandler(a,e,function(){g(function(){var e=b(),f=c.selectExtensions.readValue(a);if(c.isWriteableObservable(e))e(f);else{var g=d();g._ko_property_writers&&g._ko_property_writers.value&&g._ko_property_writers.value(f)}})})})},update:function(a,b){var d=c.utils.unwrapObservable(b()),e=c.selectExtensions.readValue(a),f=d!=e;d===0&&e!==0&&e!=="0"&&(f=!0);if(f){var g=function(){c.selectExtensions.writeValue(a,d)};g();var h=a.tagName=="SELECT";h&&setTimeout(g,0)}a.tagName=="SELECT"&&(e=c.selectExtensions.readValue(a),e!==d&&c.utils.triggerEvent(a,"change"))}},c.bindingHandlers.options={update:function(a,d,e){if(a.tagName!="SELECT")throw new Error("options binding applies only to SELECT elements");var f=c.utils.arrayMap(c.utils.arrayFilter(a.childNodes,function(a){return a.tagName&&a.tagName=="OPTION"&&a.selected}),function(a){return c.selectExtensions.readValue(a)||a.innerText||a.textContent}),g=a.scrollTop,h=c.utils.unwrapObservable(d()),i=a.value;c.utils.emptyDomNode(a);if(h){var j=e();typeof h.length!="number"&&(h=[h]);if(j.optionsCaption){var k=document.createElement("OPTION");k.innerHTML=j.optionsCaption,c.selectExtensions.writeValue(k,b),a.appendChild(k)}for(var l=0,m=h.length;l<m;l++){var k=document.createElement("OPTION"),n=typeof j.optionsValue=="string"?h[l][j.optionsValue]:h[l];n=c.utils.unwrapObservable(n),c.selectExtensions.writeValue(k,n);var o=j.optionsText;typeof o=="function"?optionText=o(h[l]):typeof o=="string"?optionText=h[l][o]:optionText=n;if(optionText===null||optionText===b)optionText="";optionText=c.utils.unwrapObservable(optionText).toString(),typeof k.innerText=="string"?k.innerText=optionText:k.textContent=optionText,a.appendChild(k)}var p=a.getElementsByTagName("OPTION"),q=0;for(var l=0,m=p.length;l<m;l++)c.utils.arrayIndexOf(f,c.selectExtensions.readValue(p[l]))>=0&&(c.utils.setOptionNodeSelectionState(p[l],!0),q++);g&&(a.scrollTop=g)}}},c.bindingHandlers.options.optionValueDomDataKey="__ko.bindingHandlers.options.optionValueDomData__",c.bindingHandlers.selectedOptions={getSelectedValuesFromSelectNode:function(a){var b=[],d=a.childNodes;for(var e=0,f=d.length;e<f;e++){var g=d[e];g.tagName=="OPTION"&&g.selected&&b.push(c.selectExtensions.readValue(g))}return b},init:function(a,b,d){c.utils.registerEventHandler(a,"change",function(){var a=b();if(c.isWriteableObservable(a))a(c.bindingHandlers.selectedOptions.getSelectedValuesFromSelectNode(this));else{var e=d();e._ko_property_writers&&e._ko_property_writers.value&&e._ko_property_writers.value(c.bindingHandlers.selectedOptions.getSelectedValuesFromSelectNode(this))}})},update:function(a,b){if(a.tagName!="SELECT")throw new Error("values binding applies only to SELECT elements");var d=c.utils.unwrapObservable(b());if(d&&typeof d.length=="number"){var e=a.childNodes;for(var f=0,g=e.length;f<g;f++){var h=e[f];h.tagName=="OPTION"&&c.utils.setOptionNodeSelectionState(h,c.utils.arrayIndexOf(d,c.selectExtensions.readValue(h))>=0)}}}},c.bindingHandlers.text={update:function(a,d){var e=c.utils.unwrapObservable(d());if(e===null||e===b)e="";typeof a.innerText=="string"?a.innerText=e:a.textContent=e}},c.bindingHandlers.html={update:function(a,b){var d=c.utils.unwrapObservable(b());c.utils.setHtml(a,d)}},c.bindingHandlers.css={update:function(a,b){var d=c.utils.unwrapObservable(b()||{});for(var e in d)if(typeof e=="string"){var f=c.utils.unwrapObservable(d[e]);c.utils.toggleDomNodeCssClass(a,e,f)}}},c.bindingHandlers.style={update:function(a,b){var d=c.utils.unwrapObservable(b()||{});for(var e in d)if(typeof e=="string"){var f=c.utils.unwrapObservable(d[e]);a.style[e]=f||""}}},c.bindingHandlers.uniqueName={init:function(a,b){b()&&(a.name="ko_unique_"+ ++c.bindingHandlers.uniqueName.currentIndex,c.utils.isIe6&&a.mergeAttributes(document.createElement("<input name='"+a.name+"'/>"),!1))}},c.bindingHandlers.uniqueName.currentIndex=0,c.bindingHandlers.checked={init:function(a,b,d){var e=function(){var e;if(a.type=="checkbox")e=a.checked;else if(a.type=="radio"&&a.checked)e=a.value;else return;var f=b();if(a.type=="checkbox"&&c.utils.unwrapObservable(f)instanceof Array){var g=c.utils.arrayIndexOf(c.utils.unwrapObservable(f),a.value);a.checked&&g<0?f.push(a.value):!a.checked&&g>=0&&f.splice(g,1)}else if(c.isWriteableObservable(f))f()!==e&&f(e);else{var h=d();h._ko_property_writers&&h._ko_property_writers.checked&&h._ko_property_writers.checked(e)}};c.utils.registerEventHandler(a,"click",e),a.type=="radio"&&!a.name&&c.bindingHandlers.uniqueName.init(a,function(){return!0})},update:function(a,b){var d=c.utils.unwrapObservable(b());a.type=="checkbox"?(d instanceof Array?a.checked=c.utils.arrayIndexOf(d,a.value)>=0:a.checked=d,d&&c.utils.isIe6&&a.mergeAttributes(document.createElement("<input type='checkbox' checked='checked' />"),!1)):a.type=="radio"&&(a.checked=a.value==d,a.value==d&&(c.utils.isIe6||c.utils.isIe7)&&a.mergeAttributes(document.createElement("<input type='radio' checked='checked' />"),!1))}},c.bindingHandlers.attr={update:function(a,d,e){var f=c.utils.unwrapObservable(d())||{};for(var g in f)if(typeof g=="string"){var h=c.utils.unwrapObservable(f[g]);h===!1||h===null||h===b?a.removeAttribute(g):a.setAttribute(g,h.toString())}}},c.templateEngine=function(){this.renderTemplate=function(a,b,c){throw"Override renderTemplate in your ko.templateEngine subclass"},this.isTemplateRewritten=function(a){throw"Override isTemplateRewritten in your ko.templateEngine subclass"},this.rewriteTemplate=function(a,b){throw"Override rewriteTemplate in your ko.templateEngine subclass"},this.createJavaScriptEvaluatorBlock=function(a){throw"Override createJavaScriptEvaluatorBlock in your ko.templateEngine subclass"}},c.exportSymbol("ko.templateEngine",c.templateEngine),c.templateRewriting=function(){var a=/(<[a-z]+\d*(\s+(?!data-bind=)[a-z0-9\-]+(=(\"[^\"]*\"|\'[^\']*\'))?)*\s+)data-bind=(["'])([\s\S]*?)\5/gi;return{ensureTemplateIsRewritten:function(a,b){b.isTemplateRewritten(a)||b.rewriteTemplate(a,function(a){return c.templateRewriting.memoizeBindingAttributeSyntax(a,b)})},memoizeBindingAttributeSyntax:function(b,d){return b.replace(a,function(){var a=arguments[1],b=arguments[6];b=c.jsonExpressionRewriting.insertPropertyAccessorsIntoJson(b);var e="ko.templateRewriting.applyMemoizedBindingsToNextSibling(function() {                     return (function() { return { "+b+" } })()                 })";return d.createJavaScriptEvaluatorBlock(e)+a})},applyMemoizedBindingsToNextSibling:function(a){return c.memoization.memoize(function(b,d){b.nextSibling&&c.applyBindingsToNode(b.nextSibling,a,d)})}}}(),c.exportSymbol("ko.templateRewriting",c.templateRewriting),c.exportSymbol("ko.templateRewriting.applyMemoizedBindingsToNextSibling",c.templateRewriting.applyMemoizedBindingsToNextSibling),function(){function d(a){return a.nodeType?a:a.length>0?a[0]:null}function e(b,d,e,f,g){var h=c.utils.unwrapObservable(f);g=g||{};var i=g.templateEngine||a;c.templateRewriting.ensureTemplateIsRewritten(e,i);var j=i.renderTemplate(e,h,g);if(typeof j.length!="number"||j.length>0&&typeof j[0].nodeType!="number")throw"Template engine must return an array of DOM nodes";j&&c.utils.arrayForEach(j,function(a){c.memoization.unmemoizeDomNodeAndDescendants(a,[f])});switch(d){case"replaceChildren":c.utils.setDomNodeChildren(b,j);break;case"replaceNode":c.utils.replaceDomNodes(b,j);break;case"ignoreTargetNode":break;default:throw new Error("Unknown renderMode: "+d)}return g.afterRender&&g.afterRender(j,f),j}function g(a,b){var d=c.utils.domData.get(a,f);d&&typeof d.dispose=="function"&&d.dispose(),c.utils.domData.set(a,f,b)}var a;c.setTemplateEngine=function(d){if(d==b||d instanceof c.templateEngine)a=d;else throw"templateEngine must inherit from ko.templateEngine"},c.renderTemplate=function(f,g,h,i,j){h=h||{};if((h.templateEngine||a)==b)throw"Set a template engine before calling renderTemplate";j=j||"replaceChildren";if(i){var k=d(i),l=function(){return!k||!c.utils.domNodeIsAttachedToDocument(k)},m=k&&j=="replaceNode"?k.parentNode:k;return new c.dependentObservable(function(){var a=typeof f=="function"?f(g):f,b=e(i,j,a,g,h);j=="replaceNode"&&(i=b,k=d(i))},null,{disposeWhen:l,disposeWhenNodeIsRemoved
:m})}return c.memoization.memoize(function(a){c.renderTemplate(f,g,h,a,"replaceNode")})},c.renderTemplateForEach=function(a,b,d,f){return new c.dependentObservable(function(){var g=c.utils.unwrapObservable(b)||[];typeof g.length=="undefined"&&(g=[g]);var h=c.utils.arrayFilter(g,function(a){return d.includeDestroyed||!a._destroy});c.utils.setDomNodeChildrenFromArrayMapping(f,h,function(b){var c=typeof a=="function"?a(b):a;return e(null,"ignoreTargetNode",c,b,d)},d)},null,{disposeWhenNodeIsRemoved:f})};var f="__ko__templateSubscriptionDomDataKey__";c.bindingHandlers.template={update:function(a,b,d,e){var f=c.utils.unwrapObservable(b()),h=typeof f=="string"?f:f.name,i;if(typeof f.foreach!="undefined")i=c.renderTemplateForEach(h,f.foreach||[],{templateOptions:f.templateOptions,afterAdd:f.afterAdd,beforeRemove:f.beforeRemove,includeDestroyed:f.includeDestroyed,afterRender:f.afterRender},a);else{var j=f.data;i=c.renderTemplate(h,typeof j=="undefined"?e:j,{templateOptions:f.templateOptions,afterRender:f.afterRender},a)}g(a,i)}}}(),c.exportSymbol("ko.setTemplateEngine",c.setTemplateEngine),c.exportSymbol("ko.renderTemplate",c.renderTemplate),function(){function a(a,c,d){var e=[];for(var f=0;f<=c.length;f++)e[f]=[];for(var f=0,g=Math.min(a.length,d);f<=g;f++)e[0][f]=f;for(var f=1,g=Math.min(c.length,d);f<=g;f++)e[f][0]=f;var h,i=a.length,j,k=c.length,l,m;for(h=1;h<=i;h++){var n=Math.max(1,h-d),o=Math.min(k,h+d);for(j=n;j<=o;j++)if(a[h-1]===c[j-1])e[j][h]=e[j-1][h-1];else{var p=e[j-1][h]===b?Number.MAX_VALUE:e[j-1][h]+1,q=e[j][h-1]===b?Number.MAX_VALUE:e[j][h-1]+1;e[j][h]=Math.min(p,q)}}return e}function d(a,c,d){var e=c.length,f=d.length,g=[],h=a[f][e];if(h===b)return null;while(e>0||f>0){var i=a[f][e],j=f>0?a[f-1][e]:h+1,k=e>0?a[f][e-1]:h+1,l=f>0&&e>0?a[f-1][e-1]:h+1;if(j===b||j<i-1)j=h+1;if(k===b||k<i-1)k=h+1;l<i-1&&(l=h+1),j<=k&&j<l?(g.push({status:"added",value:d[f-1]}),f--):k<j&&k<l?(g.push({status:"deleted",value:c[e-1]}),e--):(g.push({status:"retained",value:c[e-1]}),f--,e--)}return g.reverse()}c.utils.compareArrays=function(e,f,g){if(g===b)return c.utils.compareArrays(e,f,1)||c.utils.compareArrays(e,f,10)||c.utils.compareArrays(e,f,Number.MAX_VALUE);e=e||[],f=f||[];var h=a(e,f,g);return d(h,e,f)}}(),c.exportSymbol("ko.utils.compareArrays",c.utils.compareArrays),function(){function a(a,b,d){var e=[],f=c.dependentObservable(function(){var a=b(d)||[];e.length>0&&c.utils.replaceDomNodes(e,a),e.splice(0,e.length),c.utils.arrayPushAll(e,a)},null,{disposeWhenNodeIsRemoved:a,disposeWhen:function(){return e.length==0||!c.utils.domNodeIsAttachedToDocument(e[0])}});return{mappedNodes:e,dependentObservable:f}}c.utils.setDomNodeChildrenFromArrayMapping=function(d,e,f,g){e=e||[],g=g||{};var h=c.utils.domData.get(d,"setDomNodeChildrenFromArrayMapping_lastMappingResult")===b,i=c.utils.domData.get(d,"setDomNodeChildrenFromArrayMapping_lastMappingResult")||[],j=c.utils.arrayMap(i,function(a){return a.arrayEntry}),k=c.utils.compareArrays(j,e),l=[],m=0,n=[],o=[],p=null;for(var q=0,r=k.length;q<r;q++)switch(k[q].status){case"retained":var s=i[m];l.push(s),s.domNodes.length>0&&(p=s.domNodes[s.domNodes.length-1]),m++;break;case"deleted":i[m].dependentObservable.dispose(),c.utils.arrayForEach(i[m].domNodes,function(a){n.push({element:a,index:q,value:k[q].value}),p=a}),m++;break;case"added":var t=a(d,f,k[q].value),u=t.mappedNodes;l.push({arrayEntry:k[q].value,domNodes:u,dependentObservable:t.dependentObservable});for(var v=0,w=u.length;v<w;v++){var x=u[v];o.push({element:x,index:q,value:k[q].value}),p==null?d.firstChild?d.insertBefore(x,d.firstChild):d.appendChild(x):p.nextSibling?d.insertBefore(x,p.nextSibling):d.appendChild(x),p=x}}c.utils.arrayForEach(n,function(a){c.cleanNode(a.element)});var y=!1;if(!h){if(g.afterAdd)for(var q=0;q<o.length;q++)g.afterAdd(o[q].element,o[q].index,o[q].value);if(g.beforeRemove){for(var q=0;q<n.length;q++)g.beforeRemove(n[q].element,n[q].index,n[q].value);y=!0}}y||c.utils.arrayForEach(n,function(a){a.element.parentNode&&a.element.parentNode.removeChild(a.element)}),c.utils.domData.set(d,"setDomNodeChildrenFromArrayMapping_lastMappingResult",l)}}(),c.exportSymbol("ko.utils.setDomNodeChildrenFromArrayMapping",c.utils.setDomNodeChildrenFromArrayMapping),c.jqueryTmplTemplateEngine=function(){this.jQueryTmplVersion=function(){if(typeof jQuery=="undefined"||!jQuery.tmpl)return 0;if(jQuery.tmpl.tag)return jQuery.tmpl.tag.tmpl&&jQuery.tmpl.tag.tmpl.open&&jQuery.tmpl.tag.tmpl.open.toString().indexOf("__")>=0?3:2;return 1}(),this.getTemplateNode=function(a){var b=document.getElementById(a);if(b==null)throw new Error("Cannot find template with ID="+a);return b};var a="__ko_apos__",b=new RegExp(a,"g");this.renderTemplate=function(a,c,d){d=d||{};if(this.jQueryTmplVersion==0)throw new Error("jquery.tmpl not detected.\nTo use KO's default template engine, reference jQuery and jquery.tmpl. See Knockout installation documentation for more details.");if(this.jQueryTmplVersion==1){var e='<script type="text/html">'+this.getTemplateNode(a).text+"</script>",f=jQuery.tmpl(e,c),g=f[0].text.replace(b,"'");return jQuery.clean([g],document)}if(!(a in jQuery.template)){var h=this.getTemplateNode(a).text;jQuery.template(a,h)}c=[c];var i=jQuery.tmpl(a,c,d.templateOptions);return i.appendTo(document.createElement("div")),jQuery.fragments={},i},this.isTemplateRewritten=function(a){return a in jQuery.template?!0:this.getTemplateNode(a).isRewritten===!0},this.rewriteTemplate=function(b,d){var e=this.getTemplateNode(b),f=d(e.text);this.jQueryTmplVersion==1&&(f=c.utils.stringTrim(f),f=f.replace(/([\s\S]*?)(\${[\s\S]*?}|{{[\=a-z][\s\S]*?}}|$)/g,function(b){var c=arguments[1],d=arguments[2];return c.replace(/\'/g,a)+d})),e.text=f,e.isRewritten=!0},this.createJavaScriptEvaluatorBlock=function(a){return this.jQueryTmplVersion==1?"{{= "+a+"}}":"{{ko_code ((function() { return "+a+" })()) }}"},this.addTemplate=function(a,b){document.write("<script type='text/html' id='"+a+"'>"+b+"</script>")},c.exportProperty(this,"addTemplate",this.addTemplate),this.jQueryTmplVersion>1&&(jQuery.tmpl.tag.ko_code={open:(this.jQueryTmplVersion<3?"_":"__")+".push($1 || '');"})},c.jqueryTmplTemplateEngine.prototype=new c.templateEngine,c.setTemplateEngine(new c.jqueryTmplTemplateEngine),c.exportSymbol("ko.jqueryTmplTemplateEngine",c.jqueryTmplTemplateEngine)})(window)
