diff --git a/editor/editor.min.js b/editor/editor.min.js
index fcd83df..2d56aa6 100644
--- a/editor/editor.min.js
+++ b/editor/editor.min.js
@@ -1,6 +1,6 @@
/**
- * Copyright (c) 2016 by Jamie Peabody, http://www.mergely.com
+ * Copyright (c) 2017 by Jamie Peabody, http://www.mergely.com
* All rights reserved.
- * Version: 3.4.3 2016-09-07
+ * Version: 3.4.5 2017-11-04
*/
-$(document).ready(function(){function a(){var a={};return window.location.search.substr(1).split("&").forEach(function(b){if(""!==b){var c=b.split("=");2===c.length&&c[1].search(/^(true|1)$/i)>=0?a[c[0]]=!0:2===c.length&&c[1].search(/^(false|0)$/i)>=0?a[c[0]]=!1:a[c[0]]=c[1]&&decodeURIComponent(c[1].replace(/\+/g," "))}}),{get:function(b,c){return a.hasOwnProperty(b)?a[b]:c}}}function f(a){if(!a.length)return!1;var b=$("#mergely"),c=a.find(".find"),d=c.find('input[type="text"]'),e=a.attr("id").indexOf("-lhs")>0?"lhs":"rhs",f=b.mergely("options").autoupdate;c.slideDown("fast",function(){d.focus(),b.mergely("options",{autoupdate:!1}),b.mergely("unmarkup")}),c.find(".find-prev").click(function(){b.mergely("search",e,d.val(),"prev")}),c.find(".find-next").click(function(){b.mergely("search",e,d.val(),"next")}),c.find(".find-close").click(function(){c.css("display","none"),b.mergely("options",{autoupdate:f})}),d.keydown(function(a){return 13!=a.which&&27!=a.which?!0:(27==a.which&&(c.css("display","none"),b.mergely("options",{autoupdate:f})),b.mergely("search",e,d.val()),!1)})}function u(a){if("file-new"==a)window.location="/editor";else if("file-save"==a){var b=g.mergely("diff");if(-1===navigator.userAgent.toLowerCase().indexOf("msie")){""==key&&(key="".random(8));var c=jQuery("",{href:"data:application/stream;base64,"+window.btoa(unescape(encodeURIComponent(b))),target:"_blank",text:"clickme",id:key});c.attr("download",key+".diff"),jQuery("body").append(c);var d=$("a#"+key);d[0].click(),d.remove()}else{var e=new Blob([b]);window.navigator.msSaveOrOpenBlob(e,key+".diff")}}else if("file-share"==a)v(g);else if("file-import"==a)x(g);else if("edit-left-undo"==a)g.mergely("cm","lhs").getDoc().undo();else if("edit-left-redo"==a)g.mergely("cm","lhs").getDoc().redo();else if("edit-right-undo"==a)g.mergely("cm","rhs").getDoc().undo();else if("edit-right-redo"==a)g.mergely("cm","rhs").getDoc().redo();else if("edit-left-find"==a)f(g.find("#mergely-editor-lhs"));else if("edit-left-merge-right"==a)g.mergely("mergeCurrentChange","rhs");else if("edit-left-merge-right-file"==a)g.mergely("merge","rhs");else if(["edit-left-readonly","edit-right-readonly","options-autodiff","options-sidebars","options-swapmargin","options-viewport","options-ignorews","options-wrap","options-linenumbers"].indexOf(a)>=0)s[a].set(!s[a].get()),h.wickedmenu("update",a);else if("edit-left-clear"==a)g.mergely("clear","lhs");else if("edit-right-find"==a)f(g.find("#mergely-editor-rhs"));else if("edit-right-merge-left"==a)g.mergely("mergeCurrentChange","lhs");else if("edit-right-merge-left-file"==a)g.mergely("merge","lhs");else if("edit-right-clear"==a)g.mergely("clear","rhs");else if("options-colors"==a)y(g);else if("view-swap"==a)g.mergely("swap");else if("view-refresh"==a)g.mergely("update");else if("view-change-next"==a)g.mergely("scrollToDiff","next");else if("view-change-prev"==a)g.mergely("scrollToDiff","prev");else if("view-clear"==a)g.mergely("unmarkup");else if(0==a.indexOf("examples-")){var i={test1:{lhs:"one\ntwo\nthree",rhs:"two\nthree"},test2:{lhs:"two\nthree",rhs:"one\ntwo\nthree"},test3:{lhs:"one\nthree",rhs:"one\ntwo\nthree"},test4:{lhs:"one\ntwo\nthree",rhs:"one\nthree"},test5:{lhs:"to bee, or not to be",rhs:"to be, or not to bee"},test6:{lhs:"to be, or not to be z",rhs:"to be, to be"},test7:{lhs:"remained, & to assume",rhs:"and to assume"},test8:{lhs:"to be, or not to be",rhs:"to be, or not to be"}},j=a.split("examples-")[1];g.mergely("lhs",i[j].lhs),g.mergely("rhs",i[j].rhs)}return!1}function v(a){function d(a,d){$.ajax({type:"POST",async:!0,dataType:"text",url:"/ajax/handle_file.php",data:{key:key,name:a,content:d},success:function(a){if(++c,2==c){var d="/ajax/handle_save.php?key="+key;b&&(d+="&nkey="+"".random(8)),$.ajax({type:"GET",async:!1,dataType:"text",url:d,success:function(a){a.length&&(window.location.href="/"+$.trim(a)+"/")},error:function(a,b,c){}})}},error:function(a,b,c){alert(c)}})}function e(){var b=a.mergely("get","lhs"),c=a.mergely("get","rhs");d("lhs",b),d("rhs",c)}var b="fork"==$(this).attr("id");""==key&&(key="".random(8));var c=0;$("#dialog-confirm").dialog({resizable:!1,width:350,modal:!0,buttons:{"Save for Sharing":function(){$(this).dialog("close"),e()},Cancel:function(){$(this).dialog("close")}}})}function w(a,b,c){$.ajax({type:"GET",dataType:"text",data:{url:c},url:"/ajax/handle_crossdomain.php",contentType:"text/plain",success:function(c){a.mergely(b,c)},error:function(a,b,c){console.error("error",a,b,c)}})}function x(a){function b(a,b){function f(a,b){e.trigger(a,b)}var c=a.files[0],d=new FileReader,e=$(a);d.onloadstart=function(a){f("start")},d.onprogress=function(a){f("progress",a)},d.onload=function(a){f("loaded",a.target.result)},d.onerror=function(a){alert(a.target.error.name)};try{d.readAsText(c,"UTF-8")}catch(g){console.error(g),alert(g)}}var c={};$("#file-lhs, #file-rhs").change(function(a){var d=new RegExp(".*[\\\\/](.*)$"),e=d.exec($(this).val()),f=e?e[1]:"unknown",g=$("#"+a.target.id+"-progress");b(a.target),$(a.target).bind("start",function(b){$(a.target).css("display","none"),g.css("display","inline-block")}),$(a.target).bind("progress",function(a,b){var c=b.loaded/b.total*100;g.find("> .progress-label").text(c+"%"),g.progressbar("value",c)}),$(a.target).bind("loaded",function(b,d){g.progressbar("value",100),g.find("> .progress-label").text(f),c[a.target.id]=d})}),$("#file-lhs-progress").progressbar({value:0}),$("#file-rhs-progress").progressbar({value:0}),$("#dialog-upload .tabs").tabs(),$("#dialog-upload").dialog({dialogClass:"no-title",resizable:!1,width:"450px",modal:!0,buttons:{Import:function(){$(this).dialog("close");var b={lhs:$("#url-lhs").val(),rhs:$("#url-rhs").val()};for(var d in b){var e=b[d];e&&w(a,d,e)}c.hasOwnProperty("file-lhs")&&a.mergely("lhs",c["file-lhs"]),c.hasOwnProperty("file-rhs")&&a.mergely("rhs",c["file-rhs"])},Cancel:function(){$(this).dialog("close")}}})}function y(a){var b=$('C'),c=$('C'),d=$('C');$("body").append(b),$("body").append(c),$("body").append(d);var e={"c-border":{id:"#c-border",getColor:function(){return d.css("border-top-color")},setColor:function(a){$("#"+this.id).val(a)}},"c-bg":{id:"#c-bg",getColor:function(){return d.css("background-color")},setColor:function(a){$("#"+this.id).val(a)}},"a-border":{id:"#a-border",getColor:function(){return c.css("border-top-color")},setColor:function(a){$("#"+this.id).val(a)}},"a-bg":{id:"#a-bg",getColor:function(){return c.css("background-color")},setColor:function(a){$("#"+this.id).val(a)}},"d-border":{id:"#d-border",getColor:function(){return b.css("border-top-color")},setColor:function(a){$("#"+this.id).val(a)}},"d-bg":{id:"#d-bg",getColor:function(){return b.css("background-color")},setColor:function(a){$("#"+this.id).val(a)}}};$.each(e,function(a,b){$(b.id).val(b.getColor())});var f=$.farbtastic("#picker");$(".colorwell").each(function(){f.linkTo(this)}).focus(function(){var a=$(this);f.linkTo(this);var b=e[a.attr("id")];f.setColor(b.getColor())}),$("#dialog-colors").dialog({width:490,modal:!0,buttons:{Apply:function(){var a=$("#c-border").val(),b=$("#a-border").val(),c=$("#d-border").val(),d=$("#a-bg").val(),e=$("#d-bg").val(),f=$("#c-bg").val(),g=z(a,f,b,d,c,e);B(g,a,f,b,d,c,e,!0)},Reset:function(){},Close:function(){$(this).dialog("close")}}})}function z(a,b,c,d,e,f){var g=".mergely.a.rhs.start{border-top-color:"+c+";}\n .mergely.a.lhs.start.end,\n .mergely.a.rhs.end{border-bottom-color:"+c+";}\n .mergely.a.rhs{background-color:"+d+";}\n .mergely.d.lhs{background-color:"+f+";}\n .mergely.d.lhs.end,\n .mergely.d.rhs.start.end{border-bottom-color:"+e+";}\n .mergely.d.rhs.start.end.first{border-top-color:"+e+";}\n .mergely.d.lhs.start{border-top-color:"+e+";}\n .mergely.c.lhs,\n .mergely.c.rhs{background-color:"+b+";}\n .mergely.c.lhs.start,\n .mergely.c.rhs.start{border-top-color:"+a+";}\n .mergely.c.lhs.end,\n .mergely.c.rhs.end{border-bottom-color:"+a+";}\n .mergely.ch.a.rhs{background-color:"+d+";}\n .mergely.ch.d.lhs{background-color:"+f+";color: #888;}";return g}function A(a){var c="#"+b.get("cb",o.cb),d="#"+b.get("cg",o.cg),e="#"+b.get("ab",o.ab),f="#"+b.get("ag",o.ag),g="#"+b.get("db",o.db),h="#"+b.get("dg",o.dg);B(z(c,d,e,f,g,h),c,d,e,f,g,h,a)}function B(a,b,c,d,e,f,h,i){$('").appendTo("head"),g.mergely("options",{fgcolor:{a:d,c:b,d:f}});var j=D("cb",b.replace(/#/g,""),o.cb);j=D("cg",c.replace(/#/g,""),o.cg,j),j=D("ab",d.replace(/#/g,""),o.ab,j),j=D("ag",e.replace(/#/g,""),o.ag,j),j=D("db",f.replace(/#/g,""),o.db,j),j=D("dg",h.replace(/#/g,""),o.dg,j),i&&C(j)}function C(a){var b=[location.protocol,"//",location.host,location.pathname].join("");window.history.pushState({},null,b+a)}function D(a,b,c,d){d=d||document.location.search;var e=d.replace(/^\?/,"").split(/&/),f=!1;for(var g in e){if(e[g].startsWith(a+"=")){f=!0,b===c?e.splice(g,1):e[g]=a+"="+b;break}if(0===e[g].length){e.splice(g,1);break}}return f||e.push(a+"="+b),e.length?"?"+e.join("&"):""}var b=a();if(b.get("test",!1)){for(var c=$("
Tests"),d=$(""),e=1;8>=e;++e)d.append($('- Test '+e+"
"));c.append(d),$("#main-menu").append(c)}$(document).keydown(function(a){if("f"!=String.fromCharCode(a.which).toLowerCase()||!a.ctrlKey)return!0;a.preventDefault();var b=window.getSelection().getRangeAt(0),c=$(b.commonAncestorContainer).parents(".mergely-column");return f(c),!1}),String.prototype.random=function(a){for(var b="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz",c="",d=0;a>d;d++){var e=Math.floor(Math.random()*b.length);c+=b.substring(e,e+1)}return c},$("body").css("visibility","");var g=$("#mergely"),h=$("#main-menu"),i=$("#toolbar");if(g.mergely({width:"auto",height:"auto",cmsettings:{lineNumbers:!0,readOnly:isSample}}),b.get("lhs",null)){var j=b.get("lhs");w(g,"lhs",j)}if(b.get("rhs",null)){var j=b.get("rhs");w(g,"rhs",j)}var k={},l={au:"autoupdate",ws:"ignorews",sb:"sidebar",vp:"viewport",wl:"wrap_lines",ln:"line_numbers"},m=!1;for(var n in l)l.hasOwnProperty(n)&&null!==b.get(n,null)&&(k[l[n]]=b.get(n),m=!0);null!==b.get("rm",null)&&(k.rhs_margin=b.get("rm")?"left":"right"),m&&g.mergely("options",k);var o={cb:"cccccc",cg:"fafafa",ab:"a3d1ff",ag:"ddeeff",db:"ff7f7f",dg:"ffe9e9"};A(!1),window.addEventListener("popstate",function(c){c.state&&(b=a(),A(!1))}),8==key.length&&$.when($.ajax({type:"GET",async:!0,dataType:"text",data:{key:key,name:"lhs"},url:"/ajax/handle_get.php",success:function(a){g.mergely("lhs",a)},error:function(a,b,c){}}),$.ajax({type:"GET",async:!0,dataType:"text",data:{key:key,name:"rhs"},url:"/ajax/handle_get.php",success:function(a){g.mergely("rhs",a)},error:function(a,b,c){}})).done(function(){var a=window.location.hash.substring(1);if(a){var b=a.match(/([lr]hs)([0-9]+)/);b&&3==b.length&&(console.log(b),g.mergely("scrollTo",b[1],parseInt(b[2],10)))}});var p=$(".find"),q=p.clone().attr("id","mergely-editor-lhs-find"),r=p.clone().attr("id","mergely-editor-rhs-find");$("#mergely-editor-lhs").append(q),$("#mergely-editor-rhs").append(r),p.remove();var s={"options-autodiff":{get:function(){return g.mergely("options").autoupdate},set:function(a){var b=!g.mergely("options").autoupdate;g.mergely("options",{autoupdate:b});var c=D("au",b?1:0,1);C(c)}},"options-ignorews":{get:function(){return g.mergely("options").ignorews},set:function(a){var b=!g.mergely("options").ignorews;g.mergely("options",{ignorews:b});var c=D("ws",b?1:0,0);C(c)}},"options-sidebars":{get:function(){return console.log("sidebar",this),g.mergely("options").sidebar},set:function(a){var b=!g.mergely("options").sidebar;g.mergely("options",{sidebar:b});var c=D("sb",b?1:0,1);C(c)}},"options-viewport":{get:function(){return console.log("viewport",this),g.mergely("options").viewport},set:function(a){var b=!g.mergely("options").viewport;g.mergely("options",{viewport:b});var c=D("vp",b?1:0,0);C(c)}},"options-swapmargin":{get:function(){return"left"==g.mergely("options").rhs_margin},set:function(a){var b="left"==g.mergely("options").rhs_margin?"right":"left";g.mergely("options",{rhs_margin:b});var c=D("rm","left"==b?1:0,0);C(c)}},"options-linenumbers":{get:function(){return console.log("wrap",this),g.mergely("options").line_numbers},set:function(a){var b=!g.mergely("options").line_numbers;g.mergely("options",{line_numbers:b});var c=D("ln",b?1:0,1);C(c)}},"options-wrap":{get:function(){return console.log("wrap",this),g.mergely("options").wrap_lines},set:function(a){var b=!g.mergely("options").wrap_lines;g.mergely("options",{wrap_lines:b});var c=D("wl",b?1:0,0);C(c)}},"edit-left-readonly":{get:function(){return g.mergely("cm","lhs").getOption("readOnly")},set:function(a){g.mergely("cm","lhs").setOption("readOnly",a)}},"edit-right-readonly":{get:function(){return g.mergely("cm","rhs").getOption("readOnly")},set:function(a){g.mergely("cm","rhs").setOption("readOnly",a)}}},t={hasIcon:function(a){return s.hasOwnProperty(a)},getIcon:function(a){return s[a].get()?"icon-check":void 0}};h.wickedmenu(t).bind("selected",function(a,b){return u(b)}),i.wickedtoolbar({}).bind("selected",function(a,b){return b?u(b.replace(/^tb-/,"")):!1}),i.find("li[title]").tipsy({opacity:1}),h.find("li[title]").tipsy({opacity:1,delayIn:1e3,gravity:"w"})});
\ No newline at end of file
+$(document).ready(function(){function getParameters(){var parameters={};window.location.search.substr(1).split("&").forEach(function(pair){if(pair==="")return;var parts=pair.split("=");if(parts.length===2&&parts[1].search(/^(true|1)$/i)>=0){parameters[parts[0]]=true}else if(parts.length===2&&parts[1].search(/^(false|0)$/i)>=0){parameters[parts[0]]=false}else parameters[parts[0]]=parts[1]&&decodeURIComponent(parts[1].replace(/\+/g," "))});return{get:function(name,defaultValue){if(parameters.hasOwnProperty(name))return parameters[name];return defaultValue}}}var parameters=getParameters();if(parameters.get("test",false)){var li=$("- Tests
");var ul=$("");for(var i=1;i<=8;++i){ul.append($('- Test '+i+"
"))}li.append(ul);$("#main-menu").append(li)}function handleFind(column){if(!column.length){return false}var ed=$("#mergely");var find=column.find(".find");var input=find.find('input[type="text"]');var side=column.attr("id").indexOf("-lhs")>0?"lhs":"rhs";var origautoupdate=ed.mergely("options").autoupdate;find.slideDown("fast",function(){input.focus();ed.mergely("options",{autoupdate:false});ed.mergely("unmarkup")});find.find(".find-prev").click(function(){ed.mergely("search",side,input.val(),"prev")});find.find(".find-next").click(function(){ed.mergely("search",side,input.val(),"next")});find.find(".find-close").click(function(){find.css("display","none");ed.mergely("options",{autoupdate:origautoupdate})});input.keydown(function(evt){if(evt.which!=13&&evt.which!=27)return true;if(evt.which==27){find.css("display","none");ed.mergely("options",{autoupdate:origautoupdate})}ed.mergely("search",side,input.val());return false})}$(document).keydown(function(event){if(!(String.fromCharCode(event.which).toLowerCase()=="f"&&event.ctrlKey))return true;event.preventDefault();var range=window.getSelection().getRangeAt(0);var column=$(range.commonAncestorContainer).parents(".mergely-column");handleFind(column);return false});String.prototype.random=function(length){var chars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";var randomstring="";for(var i=0;i",{href:"data:application/stream;base64,"+window.btoa(unescape(encodeURIComponent(text))),target:"_blank",text:"clickme",id:key});link.attr("download",key+".diff");jQuery("body").append(link);var a=$("a#"+key);a[0].click();a.remove()}else{var blob=new Blob([text]);window.navigator.msSaveOrOpenBlob(blob,key+".diff")}}else if(id=="file-share"){handleShare(ed)}else if(id=="file-import"){importFiles(ed)}else if(id=="edit-left-undo"){ed.mergely("cm","lhs").getDoc().undo()}else if(id=="edit-left-redo"){ed.mergely("cm","lhs").getDoc().redo()}else if(id=="edit-right-undo"){ed.mergely("cm","rhs").getDoc().undo()}else if(id=="edit-right-redo"){ed.mergely("cm","rhs").getDoc().redo()}else if(id=="edit-left-find"){handleFind(ed.find("#mergely-editor-lhs"))}else if(id=="edit-left-merge-right"){ed.mergely("mergeCurrentChange","rhs")}else if(id=="edit-left-merge-right-file"){ed.mergely("merge","rhs")}else if(["edit-left-readonly","edit-right-readonly","options-autodiff","options-sidebars","options-swapmargin","options-viewport","options-ignorews","options-ignorecase","options-wrap","options-linenumbers"].indexOf(id)>=0){iconconf[id].set(!iconconf[id].get());menu.wickedmenu("update",id)}else if(id=="edit-left-clear"){ed.mergely("clear","lhs")}else if(id=="edit-right-find"){handleFind(ed.find("#mergely-editor-rhs"))}else if(id=="edit-right-merge-left"){ed.mergely("mergeCurrentChange","lhs")}else if(id=="edit-right-merge-left-file"){ed.mergely("merge","lhs")}else if(id=="edit-right-clear"){ed.mergely("clear","rhs")}else if(id=="options-colors"){colorSettings(ed)}else if(id=="view-swap"){ed.mergely("swap")}else if(id=="view-refresh"){ed.mergely("update")}else if(id=="view-change-next"){ed.mergely("scrollToDiff","next")}else if(id=="view-change-prev"){ed.mergely("scrollToDiff","prev")}else if(id=="view-clear"){ed.mergely("unmarkup")}else if(id.indexOf("examples-")==0){var test_config={test1:{lhs:"one\ntwo\nthree",rhs:"two\nthree"},test2:{lhs:"two\nthree",rhs:"one\ntwo\nthree"},test3:{lhs:"one\nthree",rhs:"one\ntwo\nthree"},test4:{lhs:"one\ntwo\nthree",rhs:"one\nthree"},test5:{lhs:"to bee, or not to be",rhs:"to be, or not to bee"},test6:{lhs:"to be, or not to be z",rhs:"to be, to be"},test7:{lhs:"remained, & to assume",rhs:"and to assume"},test8:{lhs:"to be, or not to be",rhs:"to be, or not to be"}};var test=id.split("examples-")[1];ed.mergely("lhs",test_config[test]["lhs"]);ed.mergely("rhs",test_config[test]["rhs"])}return false}menu.wickedmenu(menu_opts).bind("selected",function(ev,id){return handle_operation(id)});toolbar.wickedtoolbar({}).bind("selected",function(ev,id){if(!id)return false;return handle_operation(id.replace(/^tb-/,""))});toolbar.find("li[title]").tipsy({opacity:1});menu.find("li[title]").tipsy({opacity:1,delayIn:1e3,gravity:"w"});function handleShare(ed){var fork=$(this).attr("id")=="fork";if(key=="")key="".random(8);var count=0;function post_save(side,text){$.ajax({type:"POST",async:true,dataType:"text",url:"/ajax/handle_file.php",data:{key:key,name:side,content:text},success:function(nkey){++count;if(count==2){var url="/ajax/handle_save.php?key="+key;if(fork)url+="&nkey="+"".random(8);$.ajax({type:"GET",async:false,dataType:"text",url:url,success:function(nkey){if(nkey.length)window.location.href="/"+$.trim(nkey)+"/"},error:function(xhr,ajaxOptions,thrownError){}})}},error:function(xhr,ajaxOptions,thrownError){alert(thrownError)}})}function save_files(){var lhs=ed.mergely("get","lhs");var rhs=ed.mergely("get","rhs");post_save("lhs",lhs);post_save("rhs",rhs)}$("#dialog-confirm").dialog({resizable:false,width:350,modal:true,buttons:{"Save for Sharing":function(){$(this).dialog("close");save_files()},Cancel:function(){$(this).dialog("close")}}})}function crossdomainGET(ed,side,url){$.ajax({type:"GET",dataType:"text",data:{url:url},url:"/ajax/handle_crossdomain.php",contentType:"text/plain",success:function(response){ed.mergely(side,response)},error:function(xhr,ajaxOptions,thrownError){console.error("error",xhr,ajaxOptions,thrownError)}})}function importFiles(ed){function file_load(target,side){var file=target.files[0];var reader=new FileReader;var $target=$(target);function trigger(name,event){$target.trigger(name,event)}reader.onloadstart=function(evt){trigger("start")};reader.onprogress=function(evt){trigger("progress",evt)};reader.onload=function(evt){trigger("loaded",evt.target.result)};reader.onerror=function(evt){alert(evt.target.error.name)};try{reader.readAsText(file,"UTF-8")}catch(e){console.error(e);alert(e)}}var file_data={};$("#file-lhs, #file-rhs").change(function(evt){var re=new RegExp(".*[\\\\/](.*)$");var match=re.exec($(this).val());var fname=match?match[1]:"unknown";var progressbar=$("#"+evt.target.id+"-progress");file_load(evt.target);$(evt.target).bind("start",function(ev){$(evt.target).css("display","none");progressbar.css("display","inline-block")});$(evt.target).bind("progress",function(ev,progress){var loaded=progress.loaded/progress.total*100;progressbar.find("> .progress-label").text(loaded+"%");progressbar.progressbar("value",loaded)});$(evt.target).bind("loaded",function(ev,file){progressbar.progressbar("value",100);progressbar.find("> .progress-label").text(fname);file_data[evt.target.id]=file})});$("#file-lhs-progress").progressbar({value:0});$("#file-rhs-progress").progressbar({value:0});$("#dialog-upload .tabs").tabs();function callbackName(data){console.log("callbackName",data)}$("#dialog-upload").dialog({dialogClass:"no-title",resizable:false,width:"450px",modal:true,buttons:{Import:function(){$(this).dialog("close");var urls={lhs:$("#url-lhs").val(),rhs:$("#url-rhs").val()};for(var side in urls){var url=urls[side];if(!url)continue;crossdomainGET(ed,side,url)}if(file_data.hasOwnProperty("file-lhs")){ed.mergely("lhs",file_data["file-lhs"])}if(file_data.hasOwnProperty("file-rhs")){ed.mergely("rhs",file_data["file-rhs"])}},Cancel:function(){$(this).dialog("close")}}})}function colorSettings(ed){var sd=$('C');var sa=$('C');var sc=$('C');$("body").append(sd);$("body").append(sa);$("body").append(sc);var conf={"c-border":{id:"#c-border",getColor:function(){return sc.css("border-top-color")},setColor:function(color){$("#"+this.id).val(color)}},"c-bg":{id:"#c-bg",getColor:function(){return sc.css("background-color")},setColor:function(color){$("#"+this.id).val(color)}},"a-border":{id:"#a-border",getColor:function(){return sa.css("border-top-color")},setColor:function(color){$("#"+this.id).val(color)}},"a-bg":{id:"#a-bg",getColor:function(){return sa.css("background-color")},setColor:function(color){$("#"+this.id).val(color)}},"d-border":{id:"#d-border",getColor:function(){return sd.css("border-top-color")},setColor:function(color){$("#"+this.id).val(color)}},"d-bg":{id:"#d-bg",getColor:function(){return sd.css("background-color")},setColor:function(color){$("#"+this.id).val(color)}}};$.each(conf,function(key,item){$(item.id).val(item.getColor())});var f=$.farbtastic("#picker");$(".colorwell").each(function(){f.linkTo(this)}).focus(function(){var tthis=$(this);f.linkTo(this);var item=conf[tthis.attr("id")];f.setColor(item.getColor())});$("#dialog-colors").dialog({width:490,modal:true,buttons:{Apply:function(){var cborder=$("#c-border").val();var aborder=$("#a-border").val();var dborder=$("#d-border").val();var abg=$("#a-bg").val();var dbg=$("#d-bg").val();var cbg=$("#c-bg").val();var textCss=makeColorCss(cborder,cbg,aborder,abg,dborder,dbg);applyColorCss(textCss,cborder,cbg,aborder,abg,dborder,dbg,true)},Reset:function(){},Close:function(){$(this).dialog("close")}}})}function makeColorCss(changeBorder,changeBackground,addedBorder,addedBackground,deletedBorder,deletedBackground){var text=".mergely.a.rhs.start{border-top-color:"+addedBorder+";}\n\t\t\t.mergely.a.lhs.start.end,\n\t\t\t.mergely.a.rhs.end{border-bottom-color:"+addedBorder+";}\n\t\t\t.mergely.a.rhs{background-color:"+addedBackground+";}\n\t\t\t.mergely.d.lhs{background-color:"+deletedBackground+";}\n\t\t\t.mergely.d.lhs.end,\n\t\t\t.mergely.d.rhs.start.end{border-bottom-color:"+deletedBorder+";}\n\t\t\t.mergely.d.rhs.start.end.first{border-top-color:"+deletedBorder+";}\n\t\t\t.mergely.d.lhs.start{border-top-color:"+deletedBorder+";}\n\t\t\t.mergely.c.lhs,\n\t\t\t.mergely.c.rhs{background-color:"+changeBackground+";}\n\t\t\t.mergely.c.lhs.start,\n\t\t\t.mergely.c.rhs.start{border-top-color:"+changeBorder+";}\n\t\t\t.mergely.c.lhs.end,\n\t\t\t.mergely.c.rhs.end{border-bottom-color:"+changeBorder+";}\n\t\t\t.mergely.ch.a.rhs{background-color:"+addedBackground+";}\n\t\t\t.mergely.ch.d.lhs{background-color:"+deletedBackground+";color: #888;}";return text}function applyParameterCss(saveState){var cb="#"+parameters.get("cb",color_defaults.cb),cg="#"+parameters.get("cg",color_defaults.cg),ab="#"+parameters.get("ab",color_defaults.ab),ag="#"+parameters.get("ag",color_defaults.ag),db="#"+parameters.get("db",color_defaults.db),dg="#"+parameters.get("dg",color_defaults.dg);applyColorCss(makeColorCss(cb,cg,ab,ag,db,dg),cb,cg,ab,ag,db,dg,saveState)}function applyColorCss(cssText,changeBorder,changeBackground,addedBorder,addedBackground,deletedBorder,deletedBackground,saveState){$('").appendTo("head");ed.mergely("options",{fgcolor:{a:addedBorder,c:changeBorder,d:deletedBorder}});var params=updateQueryStringParam("cb",changeBorder.replace(/#/g,""),color_defaults.cb);params=updateQueryStringParam("cg",changeBackground.replace(/#/g,""),color_defaults.cg,params);params=updateQueryStringParam("ab",addedBorder.replace(/#/g,""),color_defaults.ab,params);params=updateQueryStringParam("ag",addedBackground.replace(/#/g,""),color_defaults.ag,params);params=updateQueryStringParam("db",deletedBorder.replace(/#/g,""),color_defaults.db,params);params=updateQueryStringParam("dg",deletedBackground.replace(/#/g,""),color_defaults.dg,params);if(saveState){updateHistory(params)}}function updateHistory(params){var baseUrl=[location.protocol,"//",location.host,location.pathname].join("");window.history.pushState({},null,baseUrl+params)}function updateQueryStringParam(key,value,defaultValue,urlQueryString){urlQueryString=urlQueryString||document.location.search;var parts=urlQueryString.replace(/^\?/,"").split(/&/),found=false;for(var i in parts){if(parts[i].startsWith(key+"=")){found=true;if(value===defaultValue){parts.splice(i,1)}else{parts[i]=key+"="+value}break}else if(parts[i].length===0){parts.splice(i,1);break}}if(!found){parts.push(key+"="+value)}return parts.length?"?"+parts.join("&"):""}});
diff --git a/lib/codemirror.min.js b/lib/codemirror.min.js
index e3fa5d0..0825a33 100755
--- a/lib/codemirror.min.js
+++ b/lib/codemirror.min.js
@@ -1,5 +1,8 @@
-!function(a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else{if("function"==typeof define&&define.amd)return define([],a);(this||window).CodeMirror=a()}}(function(){"use strict";function x(a,b){if(!(this instanceof x))return new x(a,b);this.options=b=b?mg(b):{},mg(Dd,b,!1),K(b);var c=b.value;"string"==typeof c&&(c=new df(c,b.mode,null,b.lineSeparator)),this.doc=c;var d=new x.inputStyles[b.inputStyle](this),e=this.display=new y(a,c,d);e.wrapper.CodeMirror=this,G(this),E(this),b.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),b.autofocus&&!p&&e.input.focus(),O(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,selectingText:!1,draggingText:!1,highlight:new bg,keySeq:null,specialChars:null};var i=this;f&&11>g&&setTimeout(function(){i.display.input.reset(!0)},20),sc(this),Gg(),Yb(this),this.curOp.forceUpdate=!0,hf(this,c),b.autofocus&&!p||i.hasFocus()?setTimeout(ng(ad,this),20):bd(this);for(var j in Ed)Ed.hasOwnProperty(j)&&Ed[j](this,b[j],Gd);T(this),b.finishInit&&b.finishInit(this);for(var k=0;kg&&(e.gutters.style.zIndex=-1,e.scroller.style.paddingRight=0),h||c&&p||(e.scroller.draggable=!0),a&&(a.appendChild?a.appendChild(e.wrapper):a(e.wrapper)),e.viewFrom=e.viewTo=b.first,e.reportedViewFrom=e.reportedViewTo=b.first,e.view=[],e.renderedView=null,e.externalMeasured=null,e.viewOffset=0,e.lastWrapHeight=e.lastWrapWidth=0,e.updateLineNumbers=null,e.nativeBarWidth=e.barHeight=e.barWidth=0,e.scrollbarsClipped=!1,e.lineNumWidth=e.lineNumInnerWidth=e.lineNumChars=null,e.alignWidgets=!1,e.cachedCharWidth=e.cachedTextHeight=e.cachedPaddingH=null,e.maxLine=null,e.maxLineLength=0,e.maxLineChanged=!1,e.wheelDX=e.wheelDY=e.wheelStartX=e.wheelStartY=null,e.shift=!1,e.selForContextMenu=null,e.activeTouch=null,d.init(e)}function z(a){a.doc.mode=x.getMode(a.options,a.doc.modeOption),A(a)}function A(a){a.doc.iter(function(a){a.stateAfter&&(a.stateAfter=null),a.styles&&(a.styles=null)}),a.doc.frontier=a.doc.first,lb(a,100),a.state.modeGen++,a.curOp&&lc(a)}function B(a){a.options.lineWrapping?(Cg(a.display.wrapper,"CodeMirror-wrap"),a.display.sizer.style.minWidth="",a.display.sizerWidth=null):(Bg(a.display.wrapper,"CodeMirror-wrap"),J(a)),D(a),lc(a),Ib(a),setTimeout(function(){P(a)},100)}function C(a){var b=Ub(a.display),c=a.options.lineWrapping,d=c&&Math.max(5,a.display.scroller.clientWidth/Vb(a.display)-3);return function(e){if(ze(a.doc,e))return 0;var f=0;if(e.widgets)for(var g=0;gb.maxLineLength&&(b.maxLineLength=c,b.maxLine=a)})}function K(a){var b=ig(a.gutters,"CodeMirror-linenumbers");-1==b&&a.lineNumbers?a.gutters=a.gutters.concat(["CodeMirror-linenumbers"]):b>-1&&!a.lineNumbers&&(a.gutters=a.gutters.slice(0),a.gutters.splice(b,1))}function L(a){var b=a.display,c=b.gutters.offsetWidth,d=Math.round(a.doc.height+qb(a.display));return{clientHeight:b.scroller.clientHeight,viewHeight:b.wrapper.clientHeight,scrollWidth:b.scroller.scrollWidth,clientWidth:b.scroller.clientWidth,viewWidth:b.wrapper.clientWidth,barLeft:a.options.fixedGutter?c:0,docHeight:d,scrollHeight:d+sb(a)+b.barHeight,nativeBarWidth:b.nativeBarWidth,gutterWidth:c}}function M(a,b,c){this.cm=c;var d=this.vert=ug("div",[ug("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),e=this.horiz=ug("div",[ug("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");a(d),a(e),Mf(d,"scroll",function(){d.clientHeight&&b(d.scrollTop,"vertical")}),Mf(e,"scroll",function(){e.clientWidth&&b(e.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,f&&8>g&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")}function N(){}function O(a){a.display.scrollbars&&(a.display.scrollbars.clear(),a.display.scrollbars.addClass&&Bg(a.display.wrapper,a.display.scrollbars.addClass)),a.display.scrollbars=new x.scrollbarModel[a.options.scrollbarStyle](function(b){a.display.wrapper.insertBefore(b,a.display.scrollbarFiller),Mf(b,"mousedown",function(){a.state.focused&&setTimeout(function(){a.display.input.focus()},0)}),b.setAttribute("cm-not-content","true")},function(b,c){"horizontal"==c?Lc(a,b):Kc(a,b)},a),a.display.scrollbars.addClass&&Cg(a.display.wrapper,a.display.scrollbars.addClass)}function P(a,b){b||(b=L(a));var c=a.display.barWidth,d=a.display.barHeight;Q(a,b);for(var e=0;4>e&&c!=a.display.barWidth||d!=a.display.barHeight;e++)c!=a.display.barWidth&&a.options.lineWrapping&&aa(a),Q(a,L(a)),c=a.display.barWidth,d=a.display.barHeight}function Q(a,b){var c=a.display,d=c.scrollbars.update(b);c.sizer.style.paddingRight=(c.barWidth=d.right)+"px",c.sizer.style.paddingBottom=(c.barHeight=d.bottom)+"px",d.right&&d.bottom?(c.scrollbarFiller.style.display="block",c.scrollbarFiller.style.height=d.bottom+"px",c.scrollbarFiller.style.width=d.right+"px"):c.scrollbarFiller.style.display="",d.bottom&&a.options.coverGutterNextToScrollbar&&a.options.fixedGutter?(c.gutterFiller.style.display="block",c.gutterFiller.style.height=d.bottom+"px",c.gutterFiller.style.width=b.gutterWidth+"px"):c.gutterFiller.style.display=""}function R(a,b,c){var d=c&&null!=c.top?Math.max(0,c.top):a.scroller.scrollTop;d=Math.floor(d-pb(a));var e=c&&null!=c.bottom?c.bottom:d+a.wrapper.clientHeight,f=of(b,d),g=of(b,e);if(c&&c.ensure){var h=c.ensure.from.line,i=c.ensure.to.line;f>h?(f=h,g=of(b,pf(jf(b,h))+a.wrapper.clientHeight)):Math.min(i,b.lastLine())>=g&&(f=of(b,pf(jf(b,i))-a.wrapper.clientHeight),g=i)}return{from:f,to:Math.max(g,f+1)}}function S(a){var b=a.display,c=b.view;if(b.alignWidgets||b.gutters.firstChild&&a.options.fixedGutter){for(var d=V(b)-b.scroller.scrollLeft+a.doc.scrollLeft,e=b.gutters.offsetWidth,f=d+"px",g=0;g=c.viewFrom&&b.visible.to<=c.viewTo&&(null==c.updateLineNumbers||c.updateLineNumbers>=c.viewTo)&&c.renderedView==c.view&&0==rc(a))return!1;T(a)&&(nc(a),b.dims=ca(a));var e=d.first+d.size,f=Math.max(b.visible.from-a.options.viewportMargin,d.first),g=Math.min(e,b.visible.to+a.options.viewportMargin);c.viewFromg&&c.viewTo-g<20&&(g=Math.min(e,c.viewTo)),w&&(f=xe(a.doc,f),g=ye(a.doc,g));var h=f!=c.viewFrom||g!=c.viewTo||c.lastWrapHeight!=b.wrapperHeight||c.lastWrapWidth!=b.wrapperWidth;qc(a,f,g),c.viewOffset=pf(jf(a.doc,c.viewFrom)),a.display.mover.style.top=c.viewOffset+"px";var i=rc(a);if(!h&&0==i&&!b.force&&c.renderedView==c.view&&(null==c.updateLineNumbers||c.updateLineNumbers>=c.viewTo))return!1;var j=zg();return i>4&&(c.lineDiv.style.display="none"),da(a,c.updateLineNumbers,b.dims),i>4&&(c.lineDiv.style.display=""),c.renderedView=c.view,j&&zg()!=j&&j.offsetHeight&&j.focus(),wg(c.cursorDiv),wg(c.selectionDiv),c.gutters.style.height=c.sizer.style.minHeight=0,h&&(c.lastWrapHeight=b.wrapperHeight,c.lastWrapWidth=b.wrapperWidth,lb(a,400)),c.updateLineNumbers=null,!0}function Z(a,b){for(var c=b.viewport,d=!0;(d&&a.options.lineWrapping&&b.oldDisplayWidth!=tb(a)||(c&&null!=c.top&&(c={top:Math.min(a.doc.height+qb(a.display)-ub(a),c.top)}),b.visible=R(a.display,a.doc,c),!(b.visible.from>=a.display.viewFrom&&b.visible.to<=a.display.viewTo)))&&Y(a,b);d=!1){aa(a);var e=L(a);gb(a),_(a,e),P(a,e)}b.signal(a,"update",a),(a.display.viewFrom!=a.display.reportedViewFrom||a.display.viewTo!=a.display.reportedViewTo)&&(b.signal(a,"viewportChange",a,a.display.viewFrom,a.display.viewTo),a.display.reportedViewFrom=a.display.viewFrom,a.display.reportedViewTo=a.display.viewTo)}function $(a,b){var c=new W(a,b);if(Y(a,c)){aa(a),Z(a,c);var d=L(a);gb(a),_(a,d),P(a,d),c.finish()}}function _(a,b){a.display.sizer.style.minHeight=b.docHeight+"px";var c=b.docHeight+a.display.barHeight;a.display.heightForcer.style.top=c+"px",a.display.gutters.style.height=Math.max(c+sb(a),b.clientHeight)+"px"}function aa(a){for(var b=a.display,c=b.lineDiv.offsetTop,d=0;dg){var i=e.node.offsetTop+e.node.offsetHeight;h=i-c,c=i}else{var j=e.node.getBoundingClientRect();h=j.bottom-j.top}var k=e.line.height-h;if(2>h&&(h=Ub(b)),(k>.001||-.001>k)&&(mf(e.line,h),ba(e.line),e.rest))for(var l=0;l=b&&m.lineNumber;m.changes&&(ig(m.changes,"gutter")>-1&&(o=!1),ea(a,m,k,c)),o&&(wg(m.lineNumber),m.lineNumber.appendChild(document.createTextNode(U(a.options,k)))),g=m.node.nextSibling}else{var n=ma(a,m,k,c);f.insertBefore(n,g)}k+=m.size}for(;g;)g=i(g)}function ea(a,b,c,d){for(var e=0;eg&&(a.node.style.zIndex=2)),a.node}function ga(a){var b=a.bgClass?a.bgClass+" "+(a.line.bgClass||""):a.line.bgClass;if(b&&(b+=" CodeMirror-linebackground"),a.background)b?a.background.className=b:(a.background.parentNode.removeChild(a.background),a.background=null);else if(b){var c=fa(a);a.background=c.insertBefore(ug("div",null,b),c.firstChild)}}function ha(a,b){var c=a.display.externalMeasured;return c&&c.line==b.line?(a.display.externalMeasured=null,b.measure=c.measure,c.built):Te(a,b)}function ia(a,b){var c=b.text.className,d=ha(a,b);b.text==b.node&&(b.node=d.pre),b.text.parentNode.replaceChild(d.pre,b.text),b.text=d.pre,d.bgClass!=b.bgClass||d.textClass!=b.textClass?(b.bgClass=d.bgClass,b.textClass=d.textClass,ja(b)):c&&(b.text.className=c)}function ja(a){ga(a),a.line.wrapClass?fa(a).className=a.line.wrapClass:a.node!=a.text&&(a.node.className="");var b=a.textClass?a.textClass+" "+(a.line.textClass||""):a.line.textClass;a.text.className=b||""}function ka(a,b,c,d){if(b.gutter&&(b.node.removeChild(b.gutter),b.gutter=null),b.gutterBackground&&(b.node.removeChild(b.gutterBackground),b.gutterBackground=null),b.line.gutterClass){var e=fa(b);b.gutterBackground=ug("div",null,"CodeMirror-gutter-background "+b.line.gutterClass,"left: "+(a.options.fixedGutter?d.fixedPos:-d.gutterTotalWidth)+"px; width: "+d.gutterTotalWidth+"px"),e.insertBefore(b.gutterBackground,b.text)}var f=b.line.gutterMarkers;if(a.options.lineNumbers||f){var e=fa(b),g=b.gutter=ug("div",null,"CodeMirror-gutter-wrapper","left: "+(a.options.fixedGutter?d.fixedPos:-d.gutterTotalWidth)+"px");if(a.display.input.setUneditable(g),e.insertBefore(g,b.text),b.line.gutterClass&&(g.className+=" "+b.line.gutterClass),!a.options.lineNumbers||f&&f["CodeMirror-linenumbers"]||(b.lineNumber=g.appendChild(ug("div",U(a.options,c),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+d.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+a.display.lineNumInnerWidth+"px"))),f)for(var h=0;h1)if(wa&&wa.join("\n")==b){if(d.ranges.length%wa.length==0){i=[];for(var j=0;j=0;j--){var k=d.ranges[j],l=k.from(),m=k.to();k.empty()&&(c&&c>0?l=qa(l.line,l.ch-c):a.state.overwrite&&!g&&(m=qa(m.line,Math.min(jf(f,m.line).text.length,m.ch+gg(h).length))));var n=a.curOp.updateInput,o={from:l,to:m,text:i?i[j%i.length]:h,origin:e||(g?"paste":a.state.cutIncoming?"cut":"+input")};kd(a.doc,o),Sf(a,"inputRead",a,o)}b&&!g&&za(a,b),wd(a),a.curOp.updateInput=n,a.curOp.typing=!0,a.state.pasteIncoming=a.state.cutIncoming=!1}function ya(a,b){var c=a.clipboardData&&a.clipboardData.getData("text/plain");return c?(a.preventDefault(),b.isReadOnly()||b.options.disableInput||fc(b,function(){xa(b,c,0,null,"paste")}),!0):void 0}function za(a,b){if(a.options.electricChars&&a.options.smartIndent)for(var c=a.doc.sel,d=c.ranges.length-1;d>=0;d--){var e=c.ranges[d];if(!(e.head.ch>100||d&&c.ranges[d-1].head.line==e.head.line)){var f=a.getModeAt(e.head),g=!1;if(f.electricChars){for(var h=0;h-1){g=yd(a,e.head.line,"smart");break}}else f.electricInput&&f.electricInput.test(jf(a.doc,e.head.line).text.slice(0,e.head.ch))&&(g=yd(a,e.head.line,"smart"));g&&Sf(a,"electricInput",a,e.head.line)}}}function Aa(a){for(var b=[],c=[],d=0;de?i.map:j[e],g=0;ge?a.line:a.rest[e]),l=f[g]+d;return(0>d||h!=b)&&(l=f[g+(d?1:0)]),qa(k,l)}}}var d=a.text.firstChild,e=!1;if(!b||!yg(d,b))return Ga(qa(nf(a.line),0),!0);if(b==d&&(e=!0,b=d.childNodes[c],c=0,!b)){var f=a.rest?gg(a.rest):a.line;return Ga(qa(nf(f),f.text.length),e)}var g=3==b.nodeType?b:null,h=b;for(g||1!=b.childNodes.length||3!=b.firstChild.nodeType||(g=b.firstChild,c&&(c=g.nodeValue.length));h.parentNode!=d;)h=h.parentNode;var i=a.measure,j=i.maps,l=k(g,h,c);if(l)return Ga(l,e);for(var m=h.nextSibling,n=g?g.nodeValue.length-c:0;m;m=m.nextSibling){if(l=k(m,m.firstChild,0))return Ga(qa(l.line,l.ch-n),e);n+=m.textContent.length}for(var o=h.previousSibling,n=c;o;o=o.previousSibling){if(l=k(o,o.firstChild,-1))return Ga(qa(l.line,l.ch+n),e);n+=m.textContent.length}}function Ja(a,b,c,d,e){function i(a){return function(b){return b.id==a}}function j(b){if(1==b.nodeType){var c=b.getAttribute("cm-text");if(null!=c)return""==c&&(c=b.textContent.replace(/\u200b/g,"")),void(f+=c);var l,k=b.getAttribute("cm-marker");if(k){var m=a.findMarks(qa(d,0),qa(e+1,0),i(+k));return void(m.length&&(l=m[0].find())&&(f+=kf(a.doc,l.from,l.to).join(h)))}if("false"==b.getAttribute("contenteditable"))return;for(var n=0;n=0){var g=ua(f.from(),e.from()),h=ta(f.to(),e.to()),i=f.empty()?e.from()==e.head:f.from()==f.head;b>=d&&--b,a.splice(--d,2,new La(i?h:g,i?g:h))}}return new Ka(a,b)}function Na(a,b){return new Ka([new La(a,b||a)],0)}function Oa(a,b){return Math.max(a.first,Math.min(b,a.first+a.size-1))}function Pa(a,b){if(b.linec?qa(c,jf(a,c).text.length):Qa(b,jf(a,b.line).text.length)}function Qa(a,b){var c=a.ch;return null==c||c>b?qa(a.line,b):0>c?qa(a.line,0):a}function Ra(a,b){return b>=a.first&&b=b.ch:h.to>b.ch))){if(e&&(Qf(i,"beforeCursorEnter"),i.explicitlyCleared)){if(f.markedSpans){--g;continue}break}if(!i.atomic)continue;if(c){var k,j=i.find(0>d?1:-1);if((0>d?i.inclusiveRight:i.inclusiveLeft)&&(j=fb(a,j,-d,f)),j&&j.line==b.line&&(k=ra(j,c))&&(0>d?0>k:k>0))return db(a,j,b,d,e)}var l=i.find(0>d?-1:1);return(0>d?i.inclusiveLeft:i.inclusiveRight)&&(l=fb(a,l,d,f)),l?db(a,l,b,d,e):null}}return b}function eb(a,b,c,d,e){var f=d||1,g=db(a,b,c,f,e)||!e&&db(a,b,c,f,!0)||db(a,b,c,-f,e)||!e&&db(a,b,c,-f,!0);return g?g:(a.cantEdit=!0,qa(a.first,0))}function fb(a,b,c,d){return 0>c&&0==b.ch?b.line>a.first?Pa(a,qa(b.line-1)):null:c>0&&b.ch==(d||jf(a,b.line)).text.length?b.lineb&&(b=0),b=Math.round(b),d=Math.round(d),f.appendChild(ug("div",null,"CodeMirror-selected","position: absolute; left: "+a+"px; top: "+b+"px; width: "+(null==c?i-a:c)+"px; height: "+(d-b)+"px"))}function k(b,c,d){function m(c,d){return Nb(a,qa(b,c),"div",f,d)}var k,l,f=jf(e,b),g=f.text.length;return Tg(qf(f),c||0,null==d?g:d,function(a,b,e){var n,o,p,f=m(a,"left");if(a==b)n=f,o=p=f.left;else{if(n=m(b-1,"right"),"rtl"==e){var q=f;f=n,n=q}o=f.left,p=n.right}null==c&&0==a&&(o=h),n.top-f.top>3&&(j(o,f.top,null,f.bottom),o=h,f.bottoml.bottom||n.bottom==l.bottom&&n.right>l.right)&&(l=n),h+1>o&&(o=h),j(o,n.top,p-o,n.bottom)}),{start:k,end:l}}var d=a.display,e=a.doc,f=document.createDocumentFragment(),g=rb(a.display),h=g.left,i=Math.max(d.sizerWidth,tb(a)-d.sizer.offsetLeft)-g.right,l=b.from(),m=b.to();if(l.line==m.line)k(l.line,l.ch,m.ch);else{var n=jf(e,l.line),o=jf(e,m.line),p=ve(n)==ve(o),q=k(l.line,l.ch,p?n.text.length+1:null).end,r=k(m.line,p?0:null,m.ch).start;p&&(q.top0?b.blinker=setInterval(function(){b.cursorDiv.style.visibility=(c=!c)?"":"hidden"},a.options.cursorBlinkRate):a.options.cursorBlinkRate<0&&(b.cursorDiv.style.visibility="hidden")}}function lb(a,b){a.doc.mode.startState&&a.doc.frontier=a.display.viewTo)){var c=+new Date+a.options.workTime,d=Md(b.mode,ob(a,b.frontier)),e=[];b.iter(b.frontier,Math.min(b.first+b.size,a.display.viewTo+500),function(f){if(b.frontier>=a.display.viewFrom){var g=f.styles,h=f.text.length>a.options.maxHighlightLength,i=Ne(a,f,h?Md(b.mode,d):d,!0);f.styles=i.styles;var j=f.styleClasses,k=i.classes;k?f.styleClasses=k:j&&(f.styleClasses=null);for(var l=!g||g.length!=f.styles.length||j!=k&&(!j||!k||j.bgClass!=k.bgClass||j.textClass!=k.textClass),m=0;!l&&mc?(lb(a,a.options.workDelay),!0):void 0}),e.length&&fc(a,function(){for(var b=0;bg;--h){if(h<=f.first)return f.first;var i=jf(f,h-1);if(i.stateAfter&&(!c||h<=f.frontier))return h;var j=cg(i.text,null,a.options.tabSize);(null==e||d>j)&&(e=h-1,d=j)}return e}function ob(a,b,c){var d=a.doc,e=a.display;if(!d.mode.startState)return!0;var f=nb(a,b,c),g=f>d.first&&jf(d,f-1).stateAfter;return g=g?Md(d.mode,g):Nd(d.mode),d.iter(f,b,function(c){Pe(a,c.text,g);var h=f==b-1||f%5==0||f>=e.viewFrom&&f2&&f.push((i.bottom+j.top)/2-c.top)}}f.push(c.bottom-c.top)}}function wb(a,b,c){if(a.line==b)return{map:a.measure.map,cache:a.measure.cache};for(var d=0;dc)return{map:a.measure.maps[d],cache:a.measure.caches[d],before:!0}}function xb(a,b){b=ve(b);var c=nf(b),d=a.display.externalMeasured=new jc(a.doc,b,c);d.lineN=c;var e=d.built=Te(a,d);return d.text=e.pre,xg(a.display.lineMeasure,e.pre),d}function yb(a,b,c,d){return Bb(a,Ab(a,b),c,d)}function zb(a,b){if(b>=a.display.viewFrom&&b=c.lineN&&bb?(e=0,f=1,g="left"):j>b?(e=b-i,f=e+1):(h==a.length-3||b==j&&a[h+3]>b)&&(f=j-i,e=f-1,b>=j&&(g="right")),null!=e){if(d=a[h+2],i==j&&c==(d.insertLeft?"left":"right")&&(g=c),"left"==c&&0==e)for(;h&&a[h-2]==a[h-3]&&a[h-1].insertLeft;)d=a[(h-=3)+2],
-g="left";if("right"==c&&e==j-i)for(;hm;m++){for(;i&&tg(b.line.text.charAt(e.coverStart+i));)--i;for(;e.coverStart+jg&&0==i&&j==e.coverEnd-e.coverStart)l=h.parentNode.getBoundingClientRect();else if(f&&a.options.lineWrapping){var n=vg(h,i,j).getClientRects();l=n.length?n["right"==d?n.length-1:0]:Cb}else l=vg(h,i,j).getBoundingClientRect()||Cb;if(l.left||l.right||0==i)break;j=i,i-=1,k="right"}f&&11>g&&(l=Fb(a.display.measure,l))}else{i>0&&(k=d="right");var n;l=a.options.lineWrapping&&(n=h.getClientRects()).length>1?n["right"==d?n.length-1:0]:h.getBoundingClientRect()}if(f&&9>g&&!i&&(!l||!l.left&&!l.right)){var o=h.parentNode.getClientRects()[0];l=o?{left:o.left,right:o.left+Vb(a.display),top:o.top,bottom:o.bottom}:Cb}for(var p=l.top-b.rect.top,q=l.bottom-b.rect.top,r=(p+q)/2,s=b.view.measure.heights,m=0;mc.from?g(a-1):g(a,d)}d=d||jf(a.doc,b.line),e||(e=Ab(a,d));var i=qf(d),j=b.ch;if(!i)return g(j);var k=bh(i,j),l=h(j,k);return null!=ah&&(l.other=h(j,ah)),l}function Pb(a,b){var c=0,b=Pa(a.doc,b);a.options.lineWrapping||(c=Vb(a.display)*b.ch);var d=jf(a.doc,b.line),e=pf(d)+pb(a.display);return{left:c,right:c,top:e,bottom:e+d.height}}function Qb(a,b,c,d){var e=qa(a,b);return e.xRel=d,c&&(e.outside=!0),e}function Rb(a,b,c){var d=a.doc;if(c+=a.display.viewOffset,0>c)return Qb(d.first,0,!0,-1);var e=of(d,c),f=d.first+d.size-1;if(e>f)return Qb(d.first+d.size-1,jf(d,f).text.length,!0,1);0>b&&(b=0);for(var g=jf(d,e);;){var h=Sb(a,g,e,b,c),i=te(g),j=i&&i.find(0,!0);if(!i||!(h.ch>j.from.ch||h.ch==j.from.ch&&h.xRel>0))return h;e=nf(g=j.to.line)}}function Sb(a,b,c,d,e){function j(d){var e=Ob(a,qa(c,d),"line",b,i);return g=!0,f>e.bottom?e.left-h:fq)return Qb(c,n,r,1);for(;;){if(k?n==m||n==dh(b,m,1):1>=n-m){for(var s=o>d||q-d>=d-o?m:n,t=d-(s==m?o:q);tg(b.text.charAt(s));)++s;var u=Qb(c,s,s==m?p:r,-1>t?-1:t>1?1:0);return u}var v=Math.ceil(l/2),w=m+v;if(k){w=m;for(var x=0;v>x;++x)w=dh(b,w,1)}var y=j(w);y>d?(n=w,q=y,(r=g)&&(q+=1e3),l=v):(m=w,o=y,p=g,l-=v)}}function Ub(a){if(null!=a.cachedTextHeight)return a.cachedTextHeight;if(null==Tb){Tb=ug("pre");for(var b=0;49>b;++b)Tb.appendChild(document.createTextNode("x")),Tb.appendChild(ug("br"));Tb.appendChild(document.createTextNode("x"))}xg(a.measure,Tb);var c=Tb.offsetHeight/50;return c>3&&(a.cachedTextHeight=c),wg(a.measure),c||1}function Vb(a){if(null!=a.cachedCharWidth)return a.cachedCharWidth;var b=ug("span","xxxxxxxxxx"),c=ug("pre",[b]);xg(a.measure,c);var d=b.getBoundingClientRect(),e=(d.right-d.left)/10;return e>2&&(a.cachedCharWidth=e),e||10}function Yb(a){a.curOp={cm:a,viewChanged:!1,startHeight:a.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Xb},Wb?Wb.ops.push(a.curOp):a.curOp.ownsGroup=Wb={ops:[a.curOp],delayedCallbacks:[]}}function Zb(a){var b=a.delayedCallbacks,c=0;do{for(;c=c.viewTo)||c.maxLineChanged&&b.options.lineWrapping,a.update=a.mustUpdate&&new W(b,a.mustUpdate&&{top:a.scrollTop,ensure:a.scrollToPos},a.forceUpdate)}function bc(a){a.updatedDisplay=a.mustUpdate&&Y(a.cm,a.update)}function cc(a){var b=a.cm,c=b.display;a.updatedDisplay&&aa(b),a.barMeasure=L(b),c.maxLineChanged&&!b.options.lineWrapping&&(a.adjustWidthTo=yb(b,c.maxLine,c.maxLine.text.length).left+3,b.display.sizerWidth=a.adjustWidthTo,a.barMeasure.scrollWidth=Math.max(c.scroller.clientWidth,c.sizer.offsetLeft+a.adjustWidthTo+sb(b)+b.display.barWidth),a.maxScrollLeft=Math.max(0,c.sizer.offsetLeft+a.adjustWidthTo-tb(b))),(a.updatedDisplay||a.selectionChanged)&&(a.preparedSelection=c.input.prepareSelection())}function dc(a){var b=a.cm;null!=a.adjustWidthTo&&(b.display.sizer.style.minWidth=a.adjustWidthTo+"px",a.maxScrollLeftf;f=e){var g=new jc(a.doc,jf(a.doc,f),f);e=f+g.size,d.push(g)}return d}function lc(a,b,c,d){null==b&&(b=a.doc.first),null==c&&(c=a.doc.first+a.doc.size),d||(d=0);var e=a.display;if(d&&cb)&&(e.updateLineNumbers=b),a.curOp.viewChanged=!0,b>=e.viewTo)w&&xe(a.doc,b)e.viewFrom?nc(a):(e.viewFrom+=d,e.viewTo+=d);else if(b<=e.viewFrom&&c>=e.viewTo)nc(a);else if(b<=e.viewFrom){var f=pc(a,c,c+d,1);f?(e.view=e.view.slice(f.index),e.viewFrom=f.lineN,e.viewTo+=d):nc(a)}else if(c>=e.viewTo){var f=pc(a,b,b,-1);f?(e.view=e.view.slice(0,f.index),e.viewTo=f.lineN):nc(a)}else{var g=pc(a,b,b,-1),h=pc(a,c,c+d,1);g&&h?(e.view=e.view.slice(0,g.index).concat(kc(a,g.lineN,h.lineN)).concat(e.view.slice(h.index)),e.viewTo+=d):nc(a)}var i=e.externalMeasured;i&&(c=e.lineN&&b=d.viewTo)){var f=d.view[oc(a,b)];if(null!=f.node){var g=f.changes||(f.changes=[]);-1==ig(g,c)&&g.push(c)}}}function nc(a){a.display.viewFrom=a.display.viewTo=a.doc.first,a.display.view=[],a.display.viewOffset=0}function oc(a,b){if(b>=a.display.viewTo)return null;if(b-=a.display.viewFrom,0>b)return null;for(var c=a.display.view,d=0;db)return d}function pc(a,b,c,d){var f,e=oc(a,b),g=a.display.view;if(!w||c==a.doc.first+a.doc.size)return{index:e,lineN:c};for(var h=0,i=a.display.viewFrom;e>h;h++)i+=g[h].size;if(i!=b){if(d>0){if(e==g.length-1)return null;f=i+g[e].size-b,e++}else f=i-b;b+=f,c+=f}for(;xe(a.doc,c)!=c;){if(e==(0>d?0:g.length-1))return null;c+=d*g[e-(0>d?1:0)].size,e+=d}return{index:e,lineN:c}}function qc(a,b,c){var d=a.display,e=d.view;0==e.length||b>=d.viewTo||c<=d.viewFrom?(d.view=kc(a,b,c),d.viewFrom=b):(d.viewFrom>b?d.view=kc(a,b,d.viewFrom).concat(d.view):d.viewFromc&&(d.view=d.view.slice(0,oc(a,c)))),d.viewTo=c}function rc(a){for(var b=a.display.view,c=0,d=0;d400}var b=a.display;Mf(b.scroller,"mousedown",gc(a,xc)),f&&11>g?Mf(b.scroller,"dblclick",gc(a,function(b){if(!Uf(a,b)){var c=wc(a,b);if(c&&!Ec(a,b)&&!vc(a.display,b)){Gf(b);var d=a.findWordAt(c);Ua(a.doc,d.anchor,d.head)}}})):Mf(b.scroller,"dblclick",function(b){Uf(a,b)||Gf(b)}),u||Mf(b.scroller,"contextmenu",function(b){cd(a,b)});var c,d={end:0};Mf(b.scroller,"touchstart",function(e){if(!Uf(a,e)&&!h(e)){clearTimeout(c);var f=+new Date;b.activeTouch={start:f,moved:!1,prev:f-d.end<=300?d:null},1==e.touches.length&&(b.activeTouch.left=e.touches[0].pageX,b.activeTouch.top=e.touches[0].pageY)}}),Mf(b.scroller,"touchmove",function(){b.activeTouch&&(b.activeTouch.moved=!0)}),Mf(b.scroller,"touchend",function(c){var d=b.activeTouch;if(d&&!vc(b,c)&&null!=d.left&&!d.moved&&new Date-d.start<300){var g,f=a.coordsChar(b.activeTouch,"page");g=!d.prev||i(d,d.prev)?new La(f,f):!d.prev.prev||i(d,d.prev.prev)?a.findWordAt(f):new La(qa(f.line,0),Pa(a.doc,qa(f.line+1,0))),a.setSelection(g.anchor,g.head),a.focus(),Gf(c)}e()}),Mf(b.scroller,"touchcancel",e),Mf(b.scroller,"scroll",function(){b.scroller.clientHeight&&(Kc(a,b.scroller.scrollTop),Lc(a,b.scroller.scrollLeft,!0),Qf(a,"scroll",a))}),Mf(b.scroller,"mousewheel",function(b){Pc(a,b)}),Mf(b.scroller,"DOMMouseScroll",function(b){Pc(a,b)}),Mf(b.wrapper,"scroll",function(){b.wrapper.scrollTop=b.wrapper.scrollLeft=0}),b.dragFunctions={enter:function(b){Uf(a,b)||Jf(b)},over:function(b){Uf(a,b)||(Ic(a,b),Jf(b))},start:function(b){Hc(a,b)},drop:gc(a,Gc),leave:function(){Jc(a)}};var j=b.input.getField();Mf(j,"keyup",function(b){Zc.call(a,b)}),Mf(j,"keydown",gc(a,Xc)),Mf(j,"keypress",gc(a,$c)),Mf(j,"focus",ng(ad,a)),Mf(j,"blur",ng(bd,a))}function tc(a,b,c){var d=c&&c!=x.Init;if(!b!=!d){var e=a.display.dragFunctions,f=b?Mf:Pf;f(a.display.scroller,"dragstart",e.start),f(a.display.scroller,"dragenter",e.enter),f(a.display.scroller,"dragover",e.over),f(a.display.scroller,"dragleave",e.leave),f(a.display.scroller,"drop",e.drop)}}function uc(a){var b=a.display;(b.lastWrapHeight!=b.wrapper.clientHeight||b.lastWrapWidth!=b.wrapper.clientWidth)&&(b.cachedCharWidth=b.cachedTextHeight=b.cachedPaddingH=null,b.scrollbarsClipped=!1,a.setSize())}function vc(a,b){for(var c=Kf(b);c!=a.wrapper;c=c.parentNode)if(!c||1==c.nodeType&&"true"==c.getAttribute("cm-ignore-events")||c.parentNode==a.sizer&&c!=a.mover)return!0}function wc(a,b,c,d){var e=a.display;if(!c&&"true"==Kf(b).getAttribute("cm-not-content"))return null;var f,g,h=e.lineSpace.getBoundingClientRect();try{f=b.clientX-h.left,g=b.clientY-h.top}catch(b){return null}var j,i=Rb(a,f,g);if(d&&1==i.xRel&&(j=jf(a.doc,i.line).text).length==i.ch){var k=cg(j,j.length,a.options.tabSize)-j.length;i=qa(i.line,Math.max(0,Math.round((f-rb(a.display).left)/Vb(a.display))-k))}return i}function xc(a){var b=this,c=b.display;if(!(Uf(b,a)||c.activeTouch&&c.input.supportsTouch())){if(c.shift=a.shiftKey,vc(c,a))return void(h||(c.scroller.draggable=!1,setTimeout(function(){c.scroller.draggable=!0},100)));if(!Ec(b,a)){var d=wc(b,a);switch(window.focus(),Lf(a)){case 1:b.state.selectingText?b.state.selectingText(a):d?Ac(b,a,d):Kf(a)==c.scroller&&Gf(a);break;case 2:h&&(b.state.lastMiddleDown=+new Date),d&&Ua(b.doc,d),setTimeout(function(){c.input.focus()},20),Gf(a);break;case 3:u?cd(b,a):_c(b)}}}}function Ac(a,b,c){f?setTimeout(ng(va,a),0):a.curOp.focus=zg();var e,d=+new Date;zc&&zc.time>d-400&&0==ra(zc.pos,c)?e="triple":yc&&yc.time>d-400&&0==ra(yc.pos,c)?(e="double",zc={time:d,pos:c}):(e="single",yc={time:d,pos:c});var i,g=a.doc.sel,h=q?b.metaKey:b.ctrlKey;a.options.dragDrop&&Ig&&!a.isReadOnly()&&"single"==e&&(i=g.contains(c))>-1&&(ra((i=g.ranges[i]).from(),c)<0||c.xRel>0)&&(ra(i.to(),c)>0||c.xRel<0)?Bc(a,b,c,h):Cc(a,b,c,e,h)}function Bc(a,b,c,d){var e=a.display,i=+new Date,j=gc(a,function(k){h&&(e.scroller.draggable=!1),a.state.draggingText=!1,Pf(document,"mouseup",j),Pf(e.scroller,"drop",j),Math.abs(b.clientX-k.clientX)+Math.abs(b.clientY-k.clientY)<10&&(Gf(k),!d&&+new Date-200=p;p++){var r=jf(g,p).text,s=dg(r,m,f);m==o?e.push(new La(qa(p,s),qa(p,s))):r.length>s&&e.push(new La(qa(p,s),qa(p,dg(r,o,f))))}e.length||e.push(new La(c,c)),$a(g,Ma(j.ranges.slice(0,i).concat(e),i),{origin:"*mouse",scroll:!1}),a.scrollIntoView(b)}else{var t=h,u=t.anchor,v=b;if("single"!=d){if("double"==d)var w=a.findWordAt(b);else var w=new La(qa(b.line,0),Pa(g,qa(b.line+1,0)));ra(w.anchor,u)>0?(v=w.head,u=ua(t.from(),w.anchor)):(v=w.anchor,u=ta(t.to(),w.head))}var e=j.ranges.slice(0);e[i]=new La(Pa(g,u),v),$a(g,Ma(e,i),_f)}}function r(b){var c=++q,e=wc(a,b,!0,"rect"==d);if(e)if(0!=ra(e,n)){a.curOp.focus=zg(),o(e);var h=R(f,g);(e.line>=h.to||e.linep.bottom?20:0;i&&setTimeout(gc(a,function(){q==c&&(f.scroller.scrollTop+=i,r(b))}),50)}}function s(b){a.state.selectingText=!1,q=1/0,Gf(b),f.input.focus(),Pf(document,"mousemove",t),Pf(document,"mouseup",u),g.history.lastSelOrigin=null}var f=a.display,g=a.doc;Gf(b);var h,i,j=g.sel,k=j.ranges;if(e&&!b.shiftKey?(i=g.sel.contains(c),h=i>-1?k[i]:new La(c,c)):(h=g.sel.primary(),i=g.sel.primIndex),b.altKey)d="rect",e||(h=new La(c,c)),c=wc(a,b,!0,!0),i=-1;else if("double"==d){var l=a.findWordAt(c);h=a.display.shift||g.extend?Ta(g,h,l.anchor,l.head):l}else if("triple"==d){var m=new La(qa(c.line,0),Pa(g,qa(c.line+1,0)));h=a.display.shift||g.extend?Ta(g,h,m.anchor,m.head):m}else h=Ta(g,h,c);e?-1==i?(i=k.length,$a(g,Ma(k.concat([h]),i),{scroll:!1,origin:"*mouse"})):k.length>1&&k[i].empty()&&"single"==d&&!b.shiftKey?($a(g,Ma(k.slice(0,i).concat(k.slice(i+1)),0),{scroll:!1,origin:"*mouse"}),j=g.sel):Wa(g,i,h,_f):(i=0,$a(g,new Ka([h],0),_f),j=g.sel);var n=c,p=f.wrapper.getBoundingClientRect(),q=0,t=gc(a,function(a){Lf(a)?r(a):s(a)}),u=gc(a,s);a.state.selectingText=u,Mf(document,"mousemove",t),Mf(document,"mouseup",u)}function Dc(a,b,c,d){try{var e=b.clientX,f=b.clientY}catch(b){return!1}if(e>=Math.floor(a.display.gutters.getBoundingClientRect().right))return!1;d&&Gf(b);var g=a.display,h=g.lineDiv.getBoundingClientRect();if(f>h.bottom||!Wf(a,c))return If(b);f-=h.top-g.viewOffset;for(var i=0;i=e){var k=of(a.doc,f),l=a.options.gutters[i];return Qf(a,c,a,k,l,b),If(b)}}}function Ec(a,b){return Dc(a,b,"gutterClick",!0)}function Gc(a){var b=this;if(Jc(b),!Uf(b,a)&&!vc(b.display,a)){Gf(a),f&&(Fc=+new Date);var c=wc(b,a,!0),d=a.dataTransfer.files;if(c&&!b.isReadOnly())if(d&&d.length&&window.FileReader&&window.File)for(var e=d.length,g=Array(e),h=0,i=function(a,d){if(!b.options.allowDropFileTypes||-1!=ig(b.options.allowDropFileTypes,a.type)){var f=new FileReader;f.onload=gc(b,function(){var a=f.result;if(/[\x00-\x08\x0e-\x1f]{2}/.test(a)&&(a=""),g[d]=a,++h==e){c=Pa(b.doc,c);var i={from:c,to:c,text:b.doc.splitLines(g.join(b.doc.lineSeparator())),origin:"paste"};kd(b.doc,i),Za(b.doc,Na(c,ed(i)))}}),f.readAsText(a)}},j=0;e>j;++j)i(d[j],j);else{if(b.state.draggingText&&b.doc.sel.contains(c)>-1)return b.state.draggingText(a),void setTimeout(function(){b.display.input.focus()},20);try{var g=a.dataTransfer.getData("Text");if(g){if(b.state.draggingText&&!(q?a.altKey:a.ctrlKey))var k=b.listSelections();if(_a(b.doc,Na(c,c)),k)for(var j=0;ji.clientWidth,l=i.scrollHeight>i.clientHeight;if(e&&j||f&&l){if(f&&q&&h)a:for(var m=b.target,n=g.view;m!=i;m=m.parentNode)for(var o=0;op?r=Math.max(0,r+p-50):s=Math.min(a.doc.height,s+p+50),$(a,{top:r,bottom:s})}20>Mc&&(null==g.wheelStartX?(g.wheelStartX=i.scrollLeft,g.wheelStartY=i.scrollTop,g.wheelDX=e,g.wheelDY=f,setTimeout(function(){if(null!=g.wheelStartX){var a=i.scrollLeft-g.wheelStartX,b=i.scrollTop-g.wheelStartY,c=b&&g.wheelDY&&b/g.wheelDY||a&&g.wheelDX&&a/g.wheelDX;g.wheelStartX=g.wheelStartY=null,c&&(Nc=(Nc*Mc+c)/(Mc+1),++Mc)}},200)):(g.wheelDX+=e,g.wheelDY+=f))}}function Qc(a,b,c){if("string"==typeof b&&(b=Od[b],!b))return!1;a.display.input.ensurePolled();var d=a.display.shift,e=!1;try{a.isReadOnly()&&(a.state.suppressEdits=!0),c&&(a.display.shift=!1),e=b(a)!=Zf}finally{a.display.shift=d,a.state.suppressEdits=!1}return e}function Rc(a,b,c){for(var d=0;dg&&27==a.keyCode&&(a.returnValue=!1);var c=a.keyCode;b.display.shift=16==c||a.shiftKey;var d=Uc(b,a);k&&(Wc=d?c:null,!d&&88==c&&!Pg&&(q?a.metaKey:a.ctrlKey)&&b.replaceSelection("",null,"cut")),18!=c||/\bCodeMirror-crosshair\b/.test(b.display.lineDiv.className)||Yc(b)}}function Yc(a){function c(a){18!=a.keyCode&&a.altKey||(Bg(b,"CodeMirror-crosshair"),Pf(document,"keyup",c),Pf(document,"mouseover",c))}var b=a.display.lineDiv;Cg(b,"CodeMirror-crosshair"),Mf(document,"keyup",c),Mf(document,"mouseover",c)}function Zc(a){16==a.keyCode&&(this.doc.sel.shift=!1),Uf(this,a)}function $c(a){var b=this;if(!(vc(b.display,a)||Uf(b,a)||a.ctrlKey&&!a.altKey||q&&a.metaKey)){var c=a.keyCode,d=a.charCode;if(k&&c==Wc)return Wc=null,void Gf(a);if(!k||a.which&&!(a.which<10)||!Uc(b,a)){var e=String.fromCharCode(null==d?c:d);Vc(b,a,e)||b.display.input.onKeyPress(a)}}}function _c(a){a.state.delayingBlurEvent=!0,setTimeout(function(){a.state.delayingBlurEvent&&(a.state.delayingBlurEvent=!1,bd(a))},100)}function ad(a){a.state.delayingBlurEvent&&(a.state.delayingBlurEvent=!1),"nocursor"!=a.options.readOnly&&(a.state.focused||(Qf(a,"focus",a),a.state.focused=!0,Cg(a.display.wrapper,"CodeMirror-focused"),a.curOp||a.display.selForContextMenu==a.doc.sel||(a.display.input.reset(),h&&setTimeout(function(){a.display.input.reset(!0)},20)),a.display.input.receivedFocus()),kb(a))}function bd(a){a.state.delayingBlurEvent||(a.state.focused&&(Qf(a,"blur",a),a.state.focused=!1,Bg(a.display.wrapper,"CodeMirror-focused")),clearInterval(a.display.blinker),setTimeout(function(){a.state.focused||(a.display.shift=!1)},150))}function cd(a,b){vc(a.display,b)||dd(a,b)||Uf(a,b,"contextmenu")||a.display.input.onContextMenu(b)}function dd(a,b){return Wf(a,"gutterContextMenu")?Dc(a,b,"gutterContextMenu",!1):!1}function fd(a,b){if(ra(a,b.from)<0)return a;if(ra(a,b.to)<=0)return ed(b);var c=a.line+b.text.length-(b.to.line-b.from.line)-1,d=a.ch;return a.line==b.to.line&&(d+=ed(b).ch-b.to.ch),qa(c,d)}function gd(a,b){for(var c=[],d=0;d=0;--e)ld(a,{from:d[e].from,to:d[e].to,text:e?[""]:b.text});else ld(a,b)}}function ld(a,b){if(1!=b.text.length||""!=b.text[0]||0!=ra(b.from,b.to)){var c=gd(a,b);vf(a,b,c,a.cm?a.cm.curOp.id:NaN),od(a,b,c,ie(a,b));var d=[];gf(a,function(a,c){c||-1!=ig(d,a.history)||(Ff(a.history,b),d.push(a.history)),od(a,b,null,ie(a,b))})}}function md(a,b,c){if(!a.cm||!a.cm.state.suppressEdits){for(var e,d=a.history,f=a.sel,g="undo"==b?d.done:d.undone,h="undo"==b?d.undone:d.done,i=0;i=0;--i){var l=e.changes[i];if(l.origin=b,k&&!jd(a,l,!1))return void(g.length=0);j.push(sf(a,l));var m=i?gd(a,l):gg(g);od(a,l,m,ke(a,l)),!i&&a.cm&&a.cm.scrollIntoView({from:l.from,to:ed(l)});var n=[];gf(a,function(a,b){b||-1!=ig(n,a.history)||(Ff(a.history,l),n.push(a.history)),od(a,l,null,ke(a,l))})}}}}function nd(a,b){if(0!=b&&(a.first+=b,a.sel=new Ka(jg(a.sel.ranges,function(a){return new La(qa(a.anchor.line+b,a.anchor.ch),qa(a.head.line+b,a.head.ch))}),a.sel.primIndex),a.cm)){lc(a.cm,a.first,a.first-b,b);for(var c=a.cm.display,d=c.viewFrom;da.lastLine())){if(b.from.linef&&(b={from:b.from,to:qa(f,jf(a,f).text.length),text:[b.text[0]],origin:b.origin}),b.removed=kf(a,b.from,b.to),c||(c=gd(a,b)),a.cm?pd(a.cm,b,d):_e(a,b,d),_a(a,c,$f)}}function pd(a,b,c){var d=a.doc,e=a.display,f=b.from,g=b.to,h=!1,i=f.line;a.options.lineWrapping||(i=nf(ve(jf(d,f.line))),d.iter(i,g.line+1,function(a){return a==e.maxLine?(h=!0,!0):void 0})),d.sel.contains(b.from,b.to)>-1&&Vf(a),_e(d,b,c,C(a)),a.options.lineWrapping||(d.iter(i,f.line+b.text.length,function(a){var b=I(a);b>e.maxLineLength&&(e.maxLine=a,e.maxLineLength=b,e.maxLineChanged=!0,h=!1)}),h&&(a.curOp.updateMaxLine=!0)),d.frontier=Math.min(d.frontier,f.line),lb(a,400);var j=b.text.length-(g.line-f.line)-1;b.full?lc(a):f.line!=g.line||1!=b.text.length||$e(a.doc,b)?lc(a,f.line,g.line+1,j):mc(a,f.line,"text");var k=Wf(a,"changes"),l=Wf(a,"change");if(l||k){var m={from:f,to:g,text:b.text,removed:b.removed,origin:b.origin};l&&Sf(a,"change",a,m),k&&(a.curOp.changeObjs||(a.curOp.changeObjs=[])).push(m)}a.display.selForContextMenu=null}function qd(a,b,c,d,e){if(d||(d=c),ra(d,c)<0){var f=d;d=c,c=f}"string"==typeof b&&(b=a.splitLines(b)),kd(a,{from:c,to:d,text:b,origin:e})}function rd(a,b){if(!Uf(a,"scrollCursorIntoView")){var c=a.display,d=c.sizer.getBoundingClientRect(),e=null;if(b.top+d.top<0?e=!0:b.bottom+d.top>(window.innerHeight||document.documentElement.clientHeight)&&(e=!1),null!=e&&!n){var f=ug("div","\u200b",null,"position: absolute; top: "+(b.top-c.viewOffset-pb(a.display))+"px; height: "+(b.bottom-b.top+sb(a)+c.barHeight)+"px; left: "+b.left+"px; width: 2px;");a.display.lineSpace.appendChild(f),f.scrollIntoView(e),a.display.lineSpace.removeChild(f)}}}function sd(a,b,c,d){null==d&&(d=0);for(var e=0;5>e;e++){var f=!1,g=Ob(a,b),h=c&&c!=b?Ob(a,c):g,i=ud(a,Math.min(g.left,h.left),Math.min(g.top,h.top)-d,Math.max(g.left,h.left),Math.max(g.bottom,h.bottom)+d),j=a.doc.scrollTop,k=a.doc.scrollLeft;if(null!=i.scrollTop&&(Kc(a,i.scrollTop),Math.abs(a.doc.scrollTop-j)>1&&(f=!0)),null!=i.scrollLeft&&(Lc(a,i.scrollLeft),Math.abs(a.doc.scrollLeft-k)>1&&(f=!0)),!f)break}return g}function td(a,b,c,d,e){var f=ud(a,b,c,d,e);null!=f.scrollTop&&Kc(a,f.scrollTop),null!=f.scrollLeft&&Lc(a,f.scrollLeft)}function ud(a,b,c,d,e){var f=a.display,g=Ub(a.display);0>c&&(c=0);var h=a.curOp&&null!=a.curOp.scrollTop?a.curOp.scrollTop:f.scroller.scrollTop,i=ub(a),j={};e-c>i&&(e=c+i);var k=a.doc.height+qb(f),l=g>c,m=e>k-g;if(h>c)j.scrollTop=l?0:c;else if(e>h+i){var n=Math.min(c,(m?k:e)-i);n!=h&&(j.scrollTop=n)}var o=a.curOp&&null!=a.curOp.scrollLeft?a.curOp.scrollLeft:f.scroller.scrollLeft,p=tb(a)-(a.options.fixedGutter?f.gutters.offsetWidth:0),q=d-b>p;return q&&(d=b+p),10>b?j.scrollLeft=0:o>b?j.scrollLeft=Math.max(0,b-(q?0:10)):d>p+o-3&&(j.scrollLeft=d+(q?0:10)-p),j}function vd(a,b,c){(null!=b||null!=c)&&xd(a),null!=b&&(a.curOp.scrollLeft=(null==a.curOp.scrollLeft?a.doc.scrollLeft:a.curOp.scrollLeft)+b),null!=c&&(a.curOp.scrollTop=(null==a.curOp.scrollTop?a.doc.scrollTop:a.curOp.scrollTop)+c)}function wd(a){xd(a);var b=a.getCursor(),c=b,d=b;a.options.lineWrapping||(c=b.ch?qa(b.line,b.ch-1):b,d=qa(b.line,b.ch+1)),a.curOp.scrollToPos={from:c,to:d,margin:a.options.cursorScrollMargin,isCursor:!0}}function xd(a){var b=a.curOp.scrollToPos;if(b){a.curOp.scrollToPos=null;var c=Pb(a,b.from),d=Pb(a,b.to),e=ud(a,Math.min(c.left,d.left),Math.min(c.top,d.top)-b.margin,Math.max(c.right,d.right),Math.max(c.bottom,d.bottom)+b.margin);
-a.scrollTo(e.scrollLeft,e.scrollTop)}}function yd(a,b,c,d){var f,e=a.doc;null==c&&(c="add"),"smart"==c&&(e.mode.indent?f=ob(a,b):c="prev");var g=a.options.tabSize,h=jf(e,b),i=cg(h.text,null,g);h.stateAfter&&(h.stateAfter=null);var k,j=h.text.match(/^\s*/)[0];if(d||/\S/.test(h.text)){if("smart"==c&&(k=e.mode.indent(f,h.text.slice(j.length),h.text),k==Zf||k>150)){if(!d)return;c="prev"}}else k=0,c="not";"prev"==c?k=b>e.first?cg(jf(e,b-1).text,null,g):0:"add"==c?k=i+a.options.indentUnit:"subtract"==c?k=i-a.options.indentUnit:"number"==typeof c&&(k=i+c),k=Math.max(0,k);var l="",m=0;if(a.options.indentWithTabs)for(var n=Math.floor(k/g);n;--n)m+=g,l+=" ";if(k>m&&(l+=fg(k-m)),l!=j)return qd(e,l,qa(b,0),qa(b,j.length),"+input"),h.stateAfter=null,!0;for(var n=0;n=0;b--)qd(a.doc,"",d[b].from,d[b].to,"+delete");wd(a)})}function Bd(a,b,c,d,e){function j(){var b=f+c;return b=a.first+a.size?!1:(f=b,i=jf(a,b))}function k(a){var b=(e?dh:eh)(i,g,c,!0);if(null==b){if(a||!j())return!1;g=e?(0>c?Xg:Wg)(i):0>c?i.text.length:0}else g=b;return!0}var f=b.line,g=b.ch,h=c,i=jf(a,f);if("char"==d)k();else if("column"==d)k(!0);else if("word"==d||"group"==d)for(var l=null,m="group"==d,n=a.cm&&a.cm.getHelper(b,"wordChars"),o=!0;!(0>c)||k(!o);o=!1){var p=i.text.charAt(g)||"\n",q=qg(p,n)?"w":m&&"\n"==p?"n":!m||/\s/.test(p)?null:"p";if(!m||o||q||(q="s"),l&&l!=q){0>c&&(c=1,k());break}if(q&&(l=q),c>0&&!k(!o))break}var r=eb(a,qa(f,g),b,h,!0);return ra(b,r)||(r.hitSide=!0),r}function Cd(a,b,c,d){var g,e=a.doc,f=b.left;if("page"==d){var h=Math.min(a.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight);g=b.top+c*(h-(0>c?1.5:.5)*Ub(a.display))}else"line"==d&&(g=c>0?b.bottom+3:b.top-3);for(;;){var i=Rb(a,f,g);if(!i.outside)break;if(0>c?0>=g:g>=e.height){i.hitSide=!0;break}g+=5*c}return i}function Fd(a,b,c,d){x.defaults[a]=b,c&&(Ed[a]=d?function(a,b,d){d!=Gd&&c(a,b,d)}:c)}function Qd(a){for(var c,d,e,f,b=a.split(/-(?!$)/),a=b[b.length-1],g=0;g0||0==g&&f.clearWhenEmpty!==!1)return f;if(f.replacedWith&&(f.collapsed=!0,f.widgetNode=ug("span",[f.replacedWith],"CodeMirror-widget"),d.handleMouseEvents||f.widgetNode.setAttribute("cm-ignore-events","true"),d.insertLeft&&(f.widgetNode.insertLeft=!0)),f.collapsed){if(ue(a,b.line,b,c,f)||b.line!=c.line&&ue(a,c.line,b,c,f))throw new Error("Inserting collapsed marker partially overlapping an existing one");w=!0}f.addToHistory&&vf(a,{from:b,to:c,origin:"markText"},a.sel,NaN);var j,h=b.line,i=a.cm;if(a.iter(h,c.line+1,function(a){i&&f.collapsed&&!i.options.lineWrapping&&ve(a)==i.display.maxLine&&(j=!0),f.collapsed&&h!=b.line&&mf(a,0),fe(a,new ce(f,h==b.line?b.ch:null,h==c.line?c.ch:null)),++h}),f.collapsed&&a.iter(b.line,c.line+1,function(b){ze(a,b)&&mf(b,0)}),f.clearOnEnter&&Mf(f,"beforeCursorEnter",function(){f.clear()}),f.readOnly&&(v=!0,(a.history.done.length||a.history.undone.length)&&a.clearHistory()),f.collapsed&&(f.id=++Wd,f.atomic=!0),i){if(j&&(i.curOp.updateMaxLine=!0),f.collapsed)lc(i,b.line,c.line+1);else if(f.className||f.title||f.startStyle||f.endStyle||f.css)for(var k=b.line;k<=c.line;k++)mc(i,k,"text");f.atomic&&bb(i.doc),Sf(i,"markerAdded",i,f)}return f}function $d(a,b,c,d,e){d=mg(d),d.shared=!1;var f=[Yd(a,b,c,d,e)],g=f[0],h=d.widgetNode;return gf(a,function(a){h&&(d.widgetNode=h.cloneNode(!0)),f.push(Yd(a,Pa(a,b),Pa(a,c),d,e));for(var i=0;i=b:f.to>b);(e||(e=[])).push(new ce(g,f.from,i?null:f.to))}}return e}function he(a,b,c){if(a)for(var e,d=0;d=b:f.to>b);if(h||f.from==b&&"bookmark"==g.type&&(!c||f.marker.insertLeft)){var i=null==f.from||(g.inclusiveLeft?f.from<=b:f.from0&&h)for(var l=0;ll;++l)o.push(q);o.push(i)}return o}function je(a){for(var b=0;b0)){var k=[i,1],l=ra(j.from,h.from),m=ra(j.to,h.to);(0>l||!g.inclusiveLeft&&!l)&&k.push({from:j.from,to:h.from}),(m>0||!g.inclusiveRight&&!m)&&k.push({from:h.to,to:j.to}),e.splice.apply(e,k),i+=k.length-1}}return e}function me(a){var b=a.markedSpans;if(b){for(var c=0;c=0&&0>=l||0>=k&&l>=0)&&(0>=k&&(ra(j.to,c)>0||i.marker.inclusiveRight&&e.inclusiveLeft)||k>=0&&(ra(j.from,d)<0||i.marker.inclusiveLeft&&e.inclusiveRight)))return!0}}}function ve(a){for(var b;b=se(a);)a=b.find(-1,!0).line;return a}function we(a){for(var b,c;b=te(a);)a=b.find(1,!0).line,(c||(c=[])).push(a);return c}function xe(a,b){var c=jf(a,b),d=ve(c);return c==d?b:nf(d)}function ye(a,b){if(b>a.lastLine())return b;var d,c=jf(a,b);if(!ze(a,c))return b;for(;d=te(c);)c=d.find(1,!0).line;return nf(c)+1}function ze(a,b){var c=w&&b.markedSpans;if(c)for(var d,e=0;ee;e++){d&&(d[0]=x.innerMode(a,c).mode);var f=a.token(b,c);if(b.pos>b.start)return f}throw new Error("Mode "+a.name+" failed to advance stream.")}function Le(a,b,c,d){function e(a){return{start:k.start,end:k.pos,string:k.current(),type:h||null,state:a?Md(f.mode,j):j}}var h,f=a.doc,g=f.mode;b=Pa(f,b);var l,i=jf(f,b.line),j=ob(a,b.line,c),k=new Vd(i.text,a.options.tabSize);for(d&&(l=[]);(d||k.posa.options.maxHighlightLength?(h=!1,g&&Pe(a,b,d,k.pos),k.pos=b.length,l=null):l=Ie(Ke(c,k,d,m),f),m){var n=m[0].name;n&&(l="m-"+(l?n+" "+l:n))}if(!h||j!=l){for(;ij;){var d=e[i];d>a&&e.splice(i,1,a,e[i+1],d),i+=2,j=Math.min(a,d)}if(b)if(h.opaque)e.splice(c,i-c,a,"cm-overlay "+b),i=c+2;else for(;i>c;c+=2){var f=e[c+1];e[c+1]=(f?f+" ":"")+"cm-overlay "+b}},f)}return{styles:e,classes:f.bgClass||f.textClass?f:null}}function Oe(a,b,c){if(!b.styles||b.styles[0]!=a.state.modeGen){var d=ob(a,nf(b)),e=Ne(a,b,b.text.length>a.options.maxHighlightLength?Md(a.doc.mode,d):d);b.stateAfter=d,b.styles=e.styles,e.classes?b.styleClasses=e.classes:b.styleClasses&&(b.styleClasses=null),c===a.doc.frontier&&a.doc.frontier++}return b.styles}function Pe(a,b,c,d){var e=a.doc.mode,f=new Vd(b,a.options.tabSize);for(f.start=f.pos=d||0,""==b&&Je(e,c);!f.eol();)Ke(e,f,c),f.start=f.pos}function Se(a,b){if(!a||/^\s*$/.test(a))return null;var c=b.addModeClass?Re:Qe;return c[a]||(c[a]=a.replace(/\S+/g,"cm-$&"))}function Te(a,b){var c=ug("span",null,null,h?"padding-right: .1px":null),d={pre:ug("pre",[c],"CodeMirror-line"),content:c,col:0,pos:0,cm:a,splitSpaces:(f||h)&&a.getOption("lineWrapping")};b.measure={};for(var e=0;e<=(b.rest?b.rest.length:0);e++){var i,g=e?b.rest[e-1]:b.line;d.pos=0,d.addToken=Ve,Mg(a.display.measure)&&(i=qf(g))&&(d.addToken=Xe(d.addToken,i)),d.map=[];var j=b!=a.display.externalMeasured&&nf(g);Ze(g,d,Oe(a,g,j)),g.styleClasses&&(g.styleClasses.bgClass&&(d.bgClass=Dg(g.styleClasses.bgClass,d.bgClass||"")),g.styleClasses.textClass&&(d.textClass=Dg(g.styleClasses.textClass,d.textClass||""))),0==d.map.length&&d.map.push(0,0,d.content.appendChild(Kg(a.display.measure))),0==e?(b.measure.map=d.map,b.measure.cache={}):((b.measure.maps||(b.measure.maps=[])).push(d.map),(b.measure.caches||(b.measure.caches=[])).push({}))}return h&&/\bcm-tab\b/.test(d.content.lastChild.className)&&(d.content.className="cm-tab-wrap-hack"),Qf(a,"renderLine",a,b.line,d.pre),d.pre.className&&(d.textClass=Dg(d.pre.className,d.textClass||"")),d}function Ue(a){var b=ug("span","\u2022","cm-invalidchar");return b.title="\\u"+a.charCodeAt(0).toString(16),b.setAttribute("aria-label",b.title),b}function Ve(a,b,c,d,e,h,i){if(b){var j=a.splitSpaces?b.replace(/ {3,}/g,We):b,k=a.cm.state.specialChars,l=!1;if(k.test(b))for(var m=document.createDocumentFragment(),n=0;;){k.lastIndex=n;var o=k.exec(b),p=o?o.index-n:b.length-n;if(p){var q=document.createTextNode(j.slice(n,n+p));f&&9>g?m.appendChild(ug("span",[q])):m.appendChild(q),a.map.push(a.pos,a.pos+p,q),a.col+=p,a.pos+=p}if(!o)break;if(n+=p+1," "==o[0]){var r=a.cm.options.tabSize,s=r-a.col%r,q=m.appendChild(ug("span",fg(s),"cm-tab"));q.setAttribute("role","presentation"),q.setAttribute("cm-text"," "),a.col+=s}else if("\r"==o[0]||"\n"==o[0]){var q=m.appendChild(ug("span","\r"==o[0]?"\u240d":"\u2424","cm-invalidchar"));q.setAttribute("cm-text",o[0]),a.col+=1}else{var q=a.cm.options.specialCharPlaceholder(o[0]);q.setAttribute("cm-text",o[0]),f&&9>g?m.appendChild(ug("span",[q])):m.appendChild(q),a.col+=1}a.map.push(a.pos,a.pos+1,q),a.pos++}else{a.col+=b.length;var m=document.createTextNode(j);a.map.push(a.pos,a.pos+b.length,m),f&&9>g&&(l=!0),a.pos+=b.length}if(c||d||e||l||i){var t=c||"";d&&(t+=d),e&&(t+=e);var u=ug("span",[m],t,i);return h&&(u.title=h),a.content.appendChild(u)}a.content.appendChild(m)}}function We(a){for(var b=" ",c=0;cj&&m.from<=j)break}if(m.to>=k)return a(c,d,e,f,g,h,i);a(c,d.slice(0,m.to-j),e,f,null,h,i),f=null,d=d.slice(m.to-j),j=m.to}}}function Ye(a,b,c,d){var e=!d&&c.widgetNode;e&&a.map.push(a.pos,a.pos+b,e),!d&&a.cm.display.input.needsContentAttribute&&(e||(e=a.content.appendChild(document.createElement("span"))),e.setAttribute("cm-marker",c.id)),e&&(a.cm.display.input.setUneditable(e),a.content.appendChild(e)),a.pos+=b}function Ze(a,b,c){var d=a.markedSpans,e=a.text,f=0;if(d)for(var k,l,n,o,p,q,r,h=e.length,i=0,g=1,j="",m=0;;){if(m==i){n=o=p=q=l="",r=null,m=1/0;for(var t,s=[],u=0;ui||w.collapsed&&v.to==i&&v.from==i)?(null!=v.to&&v.to!=i&&m>v.to&&(m=v.to,o=""),w.className&&(n+=" "+w.className),w.css&&(l=(l?l+";":"")+w.css),w.startStyle&&v.from==i&&(p+=" "+w.startStyle),w.endStyle&&v.to==m&&(t||(t=[])).push(w.endStyle,v.to),w.title&&!q&&(q=w.title),w.collapsed&&(!r||qe(r.marker,w)<0)&&(r=v)):v.from>i&&m>v.from&&(m=v.from)}if(t)for(var u=0;u=h)break;for(var x=Math.min(h,m);;){if(j){var y=i+j.length;if(!r){var z=y>x?j.slice(0,x-i):j;b.addToken(b,z,k?k+n:n,p,i+z.length==m?o:"",q,l)}if(y>=x){j=j.slice(x-i),i=x;break}i=y,p=""}j=e.slice(f,f=c[g++]),k=Se(c[g++],b.cm.options)}}else for(var g=1;gc;++c)f.push(new Fe(j[c],e(c),d));return f}var h=b.from,i=b.to,j=b.text,k=jf(a,h.line),l=jf(a,i.line),m=gg(j),n=e(j.length-1),o=i.line-h.line;if(b.full)a.insert(0,g(0,j.length)),a.remove(j.length,a.size-j.length);else if($e(a,b)){var p=g(0,j.length-1);f(l,l.text,n),o&&a.remove(h.line,o),p.length&&a.insert(h.line,p)}else if(k==l)if(1==j.length)f(k,k.text.slice(0,h.ch)+m+k.text.slice(i.ch),n);else{var p=g(1,j.length-1);p.push(new Fe(m+k.text.slice(i.ch),n,d)),f(k,k.text.slice(0,h.ch)+j[0],e(0)),a.insert(h.line+1,p)}else if(1==j.length)f(k,k.text.slice(0,h.ch)+j[0]+l.text.slice(i.ch),e(0)),a.remove(h.line+1,o);else{f(k,k.text.slice(0,h.ch)+j[0],e(0)),f(l,m+l.text.slice(i.ch),n);var p=g(1,j.length-1);o>1&&a.remove(h.line+1,o-1),a.insert(h.line+1,p)}Sf(a,"change",a,b)}function af(a){this.lines=a,this.parent=null;for(var b=0,c=0;bb||b>=a.size)throw new Error("There is no line "+(b+a.first)+" in the document.");for(var c=a;!c.lines;)for(var d=0;;++d){var e=c.children[d],f=e.chunkSize();if(f>b){c=e;break}b-=f}return c.lines[b]}function kf(a,b,c){var d=[],e=b.line;return a.iter(b.line,c.line+1,function(a){var f=a.text;e==c.line&&(f=f.slice(0,c.ch)),e==b.line&&(f=f.slice(b.ch)),d.push(f),++e}),d}function lf(a,b,c){var d=[];return a.iter(b,c,function(a){d.push(a.text)}),d}function mf(a,b){var c=b-a.height;if(c)for(var d=a;d;d=d.parent)d.height+=c}function nf(a){if(null==a.parent)return null;for(var b=a.parent,c=ig(b.lines,a),d=b.parent;d;b=d,d=d.parent)for(var e=0;d.children[e]!=b;++e)c+=d.children[e].chunkSize();return c+b.first}function of(a,b){var c=a.first;a:do{for(var d=0;db){a=e;continue a}b-=f,c+=e.chunkSize()}return c}while(!a.lines);for(var d=0;db)break;b-=h}return c+d}function pf(a){a=ve(a);for(var b=0,c=a.parent,d=0;d1&&!a.done[a.done.length-2].ranges?(a.done.pop(),gg(a.done)):void 0}function vf(a,b,c,d){var e=a.history;e.undone.length=0;var g,f=+new Date;if((e.lastOp==d||e.lastOrigin==b.origin&&b.origin&&("+"==b.origin.charAt(0)&&a.cm&&e.lastModTime>f-a.cm.options.historyEventDelay||"*"==b.origin.charAt(0)))&&(g=uf(e,e.lastOp==d))){var h=gg(g.changes);0==ra(b.from,b.to)&&0==ra(b.from,h.to)?h.to=ed(b):g.changes.push(sf(a,b))}else{var i=gg(e.done);for(i&&i.ranges||yf(a.sel,e.done),g={changes:[sf(a,b)],generation:e.generation},e.done.push(g);e.done.length>e.undoDepth;)e.done.shift(),e.done[0].ranges||e.done.shift()}e.done.push(c),e.generation=++e.maxGeneration,e.lastModTime=e.lastSelTime=f,e.lastOp=e.lastSelOp=d,e.lastOrigin=e.lastSelOrigin=b.origin,h||Qf(a,"historyAdded")}function wf(a,b,c,d){var e=b.charAt(0);return"*"==e||"+"==e&&c.ranges.length==d.ranges.length&&c.somethingSelected()==d.somethingSelected()&&new Date-a.history.lastSelTime<=(a.cm?a.cm.options.historyEventDelay:500)}function xf(a,b,c,d){var e=a.history,f=d&&d.origin;c==e.lastSelOp||f&&e.lastSelOrigin==f&&(e.lastModTime==e.lastSelTime&&e.lastOrigin==f||wf(a,f,gg(e.done),b))?e.done[e.done.length-1]=b:yf(b,e.done),e.lastSelTime=+new Date,e.lastSelOrigin=f,e.lastSelOp=c,d&&d.clearRedo!==!1&&tf(e.undone)}function yf(a,b){var c=gg(b);c&&c.ranges&&c.equals(a)||b.push(a)}function zf(a,b,c,d){var e=b["spans_"+a.id],f=0;a.iter(Math.max(a.first,c),Math.min(a.first+a.size,d),function(c){c.markedSpans&&((e||(e=b["spans_"+a.id]={}))[f]=c.markedSpans),++f})}function Af(a){if(!a)return null;for(var c,b=0;b-1&&(gg(h)[l]=j[l],delete j[l])}}}return e}function Df(a,b,c,d){c0?d.slice():Nf:d||Nf}function Sf(a,b){function f(a){return function(){a.apply(null,d)}}var c=Of(a,b,!1);if(c.length){var e,d=Array.prototype.slice.call(arguments,2);Wb?e=Wb.delayedCallbacks:Rf?e=Rf:(e=Rf=[],setTimeout(Tf,0));for(var g=0;g0}function Xf(a){a.prototype.on=function(a,b){Mf(this,a,b)},a.prototype.off=function(a,b){Pf(this,a,b)}}function bg(){this.id=null}function fg(a){for(;eg.length<=a;)eg.push(gg(eg)+" ");return eg[a]}function gg(a){return a[a.length-1]}function ig(a,b){for(var c=0;c-1&&pg(a)?!0:b.test(a):pg(a)}function rg(a){for(var b in a)if(a.hasOwnProperty(b)&&a[b])return!1;return!0}function tg(a){return a.charCodeAt(0)>=768&&sg.test(a)}function ug(a,b,c,d){var e=document.createElement(a);if(c&&(e.className=c),d&&(e.style.cssText=d),"string"==typeof b)e.appendChild(document.createTextNode(b));else if(b)for(var f=0;f0;--b)a.removeChild(a.firstChild);return a}function xg(a,b){return wg(a).appendChild(b)}function zg(){for(var a=document.activeElement;a&&a.root&&a.root.activeElement;)a=a.root.activeElement;return a}function Ag(a){return new RegExp("(^|\\s)"+a+"(?:$|\\s)\\s*")}function Dg(a,b){for(var c=a.split(" "),d=0;d2&&!(f&&8>g))}var c=Jg?ug("span","\u200b"):ug("span","\xa0",null,"display: inline-block; width: 1px; margin-right: -1px");return c.setAttribute("cm-text",""),c}function Mg(a){if(null!=Lg)return Lg;var b=xg(a,document.createTextNode("A\u062eA")),c=vg(b,0,1).getBoundingClientRect();if(!c||c.left==c.right)return!1;var d=vg(b,1,2).getBoundingClientRect();return Lg=d.right-c.right<3}function Rg(a){if(null!=Qg)return Qg;var b=xg(a,ug("span","x")),c=b.getBoundingClientRect(),d=vg(b,0,1).getBoundingClientRect();return Qg=Math.abs(c.left-d.left)>1}function Tg(a,b,c,d){if(!a)return d(b,c,"ltr");for(var e=!1,f=0;fb||b==c&&g.to==b)&&(d(Math.max(g.from,b),Math.min(g.to,c),1==g.level?"rtl":"ltr"),e=!0)}e||d(b,c,"ltr")}function Ug(a){return a.level%2?a.to:a.from}function Vg(a){return a.level%2?a.from:a.to}function Wg(a){var b=qf(a);return b?Ug(b[0]):0}function Xg(a){var b=qf(a);return b?Vg(gg(b)):a.text.length}function Yg(a,b){var c=jf(a.doc,b),d=ve(c);d!=c&&(b=nf(d));var e=qf(d),f=e?e[0].level%2?Xg(d):Wg(d):0;return qa(b,f)}function Zg(a,b){for(var c,d=jf(a.doc,b);c=te(d);)d=c.find(1,!0).line,b=null;var e=qf(d),f=e?e[0].level%2?Wg(d):Xg(d):d.text.length;return qa(null==b?nf(d):b,f)}function $g(a,b){var c=Yg(a,b.line),d=jf(a.doc,c.line),e=qf(d);if(!e||0==e[0].level){var f=Math.max(0,d.text.search(/\S/)),g=b.line==c.line&&b.ch<=f&&b.ch;return qa(c.line,g?0:f)}return c}function _g(a,b,c){var d=a[0].level;return b==d?!0:c==d?!1:c>b}function bh(a,b){ah=null;for(var d,c=0;cb)return c;if(e.from==b||e.to==b){if(null!=d)return _g(a,e.level,a[d].level)?(e.from!=e.to&&(ah=d),c):(e.from!=e.to&&(ah=c),d);d=c}}return d}function ch(a,b,c,d){if(!d)return b+c;do b+=c;while(b>0&&tg(a.text.charAt(b)));return b}function dh(a,b,c,d){var e=qf(a);if(!e)return eh(a,b,c,d);for(var f=bh(e,b),g=e[f],h=ch(a,b,g.level%2?-c:c,d);;){if(h>g.from&&h0==g.level%2?g.to:g.from);if(g=e[f+=c],!g)return null;h=c>0==g.level%2?ch(a,g.to,-1,d):ch(a,g.from,1,d)}}function eh(a,b,c,d){var e=b+c;if(d)for(;e>0&&tg(a.text.charAt(e));)e+=c;return 0>e||e>a.text.length?null:e}var a=navigator.userAgent,b=navigator.platform,c=/gecko\/\d/i.test(a),d=/MSIE \d/.test(a),e=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(a),f=d||e,g=f&&(d?document.documentMode||6:e[1]),h=/WebKit\//.test(a),i=h&&/Qt\/\d+\.\d+/.test(a),j=/Chrome\//.test(a),k=/Opera\//.test(a),l=/Apple Computer/.test(navigator.vendor),m=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(a),n=/PhantomJS/.test(a),o=/AppleWebKit/.test(a)&&/Mobile\/\w+/.test(a),p=o||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(a),q=o||/Mac/.test(b),r=/win/i.test(b),s=k&&a.match(/Version\/(\d*\.\d*)/);s&&(s=Number(s[1])),s&&s>=15&&(k=!1,h=!0);var t=q&&(i||k&&(null==s||12.11>s)),u=c||f&&g>=9,v=!1,w=!1;M.prototype=mg({update:function(a){var b=a.scrollWidth>a.clientWidth+1,c=a.scrollHeight>a.clientHeight+1,d=a.nativeBarWidth;if(c){this.vert.style.display="block",this.vert.style.bottom=b?d+"px":"0";var e=a.viewHeight-(b?d:0);this.vert.firstChild.style.height=Math.max(0,a.scrollHeight-a.clientHeight+e)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(b){this.horiz.style.display="block",this.horiz.style.right=c?d+"px":"0",this.horiz.style.left=a.barLeft+"px";var f=a.viewWidth-a.barLeft-(c?d:0);this.horiz.firstChild.style.width=a.scrollWidth-a.clientWidth+f+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&a.clientHeight>0&&(0==d&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:c?d:0,bottom:b?d:0}},setScrollLeft:function(a){this.horiz.scrollLeft!=a&&(this.horiz.scrollLeft=a),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz)},setScrollTop:function(a){this.vert.scrollTop!=a&&(this.vert.scrollTop=a),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert)},zeroWidthHack:function(){var a=q&&!m?"12px":"18px";this.horiz.style.height=this.vert.style.width=a,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new bg,this.disableVert=new bg},enableZeroWidthBar:function(a,b){function c(){var d=a.getBoundingClientRect(),e=document.elementFromPoint(d.left+1,d.bottom-1);e!=a?a.style.pointerEvents="none":b.set(1e3,c)}a.style.pointerEvents="auto",b.set(1e3,c)},clear:function(){var a=this.horiz.parentNode;a.removeChild(this.horiz),a.removeChild(this.vert)}},M.prototype),N.prototype=mg({update:function(){return{bottom:0,right:0}},setScrollLeft:function(){},setScrollTop:function(){},clear:function(){}},N.prototype),x.scrollbarModel={"native":M,"null":N},W.prototype.signal=function(a,b){Wf(a,b)&&this.events.push(arguments)},W.prototype.finish=function(){for(var a=0;a=9&&b.hasSelection&&(b.hasSelection=null),b.poll()}),Mf(e,"paste",function(a){Uf(c,a)||ya(a,c)||(c.state.pasteIncoming=!0,b.fastPoll())}),Mf(e,"cut",h),Mf(e,"copy",h),Mf(a.scroller,"paste",function(d){vc(a,d)||Uf(c,d)||(c.state.pasteIncoming=!0,b.focus())}),Mf(a.lineSpace,"selectstart",function(b){vc(a,b)||Gf(b)}),Mf(e,"compositionstart",function(){var a=c.getCursor("from");b.composing&&b.composing.range.clear(),b.composing={start:a,range:c.markText(a,c.getCursor("to"),{className:"CodeMirror-composing"})}}),Mf(e,"compositionend",function(){b.composing&&(b.poll(),b.composing.range.clear(),b.composing=null)})},prepareSelection:function(){var a=this.cm,b=a.display,c=a.doc,d=hb(a);if(a.options.moveInputWithCursor){var e=Ob(a,c.sel.primary().head,"div"),f=b.wrapper.getBoundingClientRect(),g=b.lineDiv.getBoundingClientRect();d.teTop=Math.max(0,Math.min(b.wrapper.clientHeight-10,e.top+g.top-f.top)),d.teLeft=Math.max(0,Math.min(b.wrapper.clientWidth-10,e.left+g.left-f.left))}return d},showSelection:function(a){var b=this.cm,c=b.display;xg(c.cursorDiv,a.cursors),xg(c.selectionDiv,a.selection),null!=a.teTop&&(this.wrapper.style.top=a.teTop+"px",this.wrapper.style.left=a.teLeft+"px")},reset:function(a){if(!this.contextMenuPending){var b,c,d=this.cm,e=d.doc;if(d.somethingSelected()){this.prevInput="";var h=e.sel.primary();b=Pg&&(h.to().line-h.from().line>100||(c=d.getSelection()).length>1e3);var i=b?"-":c||d.getSelection();this.textarea.value=i,d.state.focused&&hg(this.textarea),f&&g>=9&&(this.hasSelection=i)}else a||(this.prevInput=this.textarea.value="",f&&g>=9&&(this.hasSelection=null));this.inaccurateSelection=b}},getField:function(){return this.textarea},supportsTouch:function(){return!1},focus:function(){if("nocursor"!=this.cm.options.readOnly&&(!p||zg()!=this.textarea))try{this.textarea.focus()}catch(a){}},blur:function(){this.textarea.blur()},resetPosition:function(){this.wrapper.style.top=this.wrapper.style.left=0},receivedFocus:function(){this.slowPoll()},slowPoll:function(){var a=this;a.pollingFast||a.polling.set(this.cm.options.pollInterval,function(){a.poll(),a.cm.state.focused&&a.slowPoll()})},fastPoll:function(){function c(){var d=b.poll();d||a?(b.pollingFast=!1,b.slowPoll()):(a=!0,b.polling.set(60,c))}var a=!1,b=this;b.pollingFast=!0,b.polling.set(20,c)},poll:function(){var a=this.cm,b=this.textarea,c=this.prevInput;if(this.contextMenuPending||!a.state.focused||Og(b)&&!c&&!this.composing||a.isReadOnly()||a.options.disableInput||a.state.keySeq)return!1;var d=b.value;if(d==c&&!a.somethingSelected())return!1;if(f&&g>=9&&this.hasSelection===d||q&&/[\uf700-\uf7ff]/.test(d))return a.display.input.reset(),!1;if(a.doc.sel==a.display.selForContextMenu){var e=d.charCodeAt(0);if(8203!=e||c||(c="\u200b"),8666==e)return this.reset(),this.cm.execCommand("undo")}for(var h=0,i=Math.min(c.length,d.length);i>h&&c.charCodeAt(h)==d.charCodeAt(h);)++h;var j=this;return fc(a,function(){xa(a,d.slice(h),c.length-h,null,j.composing?"*compose":null),d.length>1e3||d.indexOf("\n")>-1?b.value=j.prevInput="":j.prevInput=d,j.composing&&(j.composing.range.clear(),j.composing.range=a.markText(j.composing.start,a.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},ensurePolled:function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},onKeyPress:function(){f&&g>=9&&(this.hasSelection=null),this.fastPoll()},onContextMenu:function(a){function o(){if(null!=e.selectionStart){var a=c.somethingSelected(),f="\u200b"+(a?e.value:"");e.value="\u21da",e.value=f,b.prevInput=a?"":"\u200b",e.selectionStart=1,e.selectionEnd=f.length,d.selForContextMenu=c.doc.sel}}function p(){if(b.contextMenuPending=!1,b.wrapper.style.position="relative",e.style.cssText=m,f&&9>g&&d.scrollbars.setScrollTop(d.scroller.scrollTop=j),null!=e.selectionStart){(!f||f&&9>g)&&o();var a=0,h=function(){d.selForContextMenu==c.doc.sel&&0==e.selectionStart&&e.selectionEnd>0&&"\u200b"==b.prevInput?gc(c,Od.selectAll)(c):a++<10?d.detectingSelectAll=setTimeout(h,500):d.input.reset()};d.detectingSelectAll=setTimeout(h,200)}}var b=this,c=b.cm,d=c.display,e=b.textarea,i=wc(c,a),j=d.scroller.scrollTop;if(i&&!k){var l=c.options.resetSelectionOnContextMenu;l&&-1==c.doc.sel.contains(i)&&gc(c,$a)(c.doc,Na(i),$f);var m=e.style.cssText;if(b.wrapper.style.position="absolute",e.style.cssText="position: fixed; width: 30px; height: 30px; top: "+(a.clientY-5)+"px; left: "+(a.clientX-5)+"px; z-index: 1000; background: "+(f?"rgba(255, 255, 255, .05)":"transparent")+"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",h)var n=window.scrollY;if(d.input.focus(),h&&window.scrollTo(null,n),d.input.reset(),c.somethingSelected()||(e.value=b.prevInput=" "),b.contextMenuPending=!0,d.selForContextMenu=c.doc.sel,clearTimeout(d.detectingSelectAll),f&&g>=9&&o(),u){Jf(a);var q=function(){Pf(window,"mouseup",q),setTimeout(p,20)};Mf(window,"mouseup",q)}else setTimeout(p,50)}},readOnlyChanged:function(a){a||this.reset()},setUneditable:kg,needsContentAttribute:!1},Ca.prototype),Ea.prototype=mg({init:function(a){function e(a){if(!Uf(c,a)){if(c.somethingSelected())wa=c.getSelections(),"cut"==a.type&&c.replaceSelection("",null,"cut");else{if(!c.options.lineWiseCopyCut)return;var b=Aa(c);wa=b.text,"cut"==a.type&&c.operation(function(){c.setSelections(b.ranges,0,$f),c.replaceSelection("",null,"cut")})}if(a.clipboardData&&!o)a.preventDefault(),a.clipboardData.clearData(),a.clipboardData.setData("text/plain",wa.join("\n"));else{var d=Da(),e=d.firstChild;c.display.lineSpace.insertBefore(d,c.display.lineSpace.firstChild),e.value=wa.join("\n");var f=document.activeElement;hg(e),setTimeout(function(){c.display.lineSpace.removeChild(d),f.focus()},50)}}}var b=this,c=b.cm,d=b.div=a.lineDiv;Ba(d),Mf(d,"paste",function(a){Uf(c,a)||ya(a,c)}),Mf(d,"compositionstart",function(a){var d=a.data;if(b.composing={sel:c.doc.sel,data:d,startData:d},d){var e=c.doc.sel.primary(),f=c.getLine(e.head.line),g=f.indexOf(d,Math.max(0,e.head.ch-d.length));g>-1&&g<=e.head.ch&&(b.composing.sel=Na(qa(e.head.line,g),qa(e.head.line,g+d.length)))}}),Mf(d,"compositionupdate",function(a){b.composing.data=a.data}),Mf(d,"compositionend",function(a){var c=b.composing;c&&(a.data==c.startData||/\u200b/.test(a.data)||(c.data=a.data),setTimeout(function(){c.handled||b.applyComposition(c),b.composing==c&&(b.composing=null)},50))}),Mf(d,"touchstart",function(){b.forceCompositionEnd()}),Mf(d,"input",function(){b.composing||(c.isReadOnly()||!b.pollContent())&&fc(b.cm,function(){lc(c)})}),Mf(d,"copy",e),Mf(d,"cut",e)},prepareSelection:function(){var a=hb(this.cm,!1);return a.focus=this.cm.state.focused,a},showSelection:function(a){a&&this.cm.display.view.length&&(a.focus&&this.showPrimarySelection(),this.showMultipleSelections(a))},showPrimarySelection:function(){var a=window.getSelection(),b=this.cm.doc.sel.primary(),d=Ha(this.cm,a.anchorNode,a.anchorOffset),e=Ha(this.cm,a.focusNode,a.focusOffset);if(!d||d.bad||!e||e.bad||0!=ra(ua(d,e),b.from())||0!=ra(ta(d,e),b.to())){var f=Fa(this.cm,b.from()),g=Fa(this.cm,b.to());if(f||g){var h=this.cm.display.view,i=a.rangeCount&&a.getRangeAt(0);if(f){if(!g){var j=h[h.length-1].measure,k=j.maps?j.maps[j.maps.length-1]:j.map;g={node:k[k.length-1],offset:k[k.length-2]-k[k.length-3]}}}else f={node:h[0].measure.map[2],offset:0};try{var l=vg(f.node,f.offset,g.offset,g.node)}catch(m){}l&&(!c&&this.cm.state.focused?(a.collapse(f.node,f.offset),l.collapsed||a.addRange(l)):(a.removeAllRanges(),a.addRange(l)),i&&null==a.anchorNode?a.addRange(i):c&&this.startGracePeriod()),this.rememberSelection()}}},startGracePeriod:function(){var a=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){a.gracePeriod=!1,a.selectionChanged()&&a.cm.operation(function(){a.cm.curOp.selectionChanged=!0})},20)},showMultipleSelections:function(a){xg(this.cm.display.cursorDiv,a.cursors),xg(this.cm.display.selectionDiv,a.selection)},rememberSelection:function(){var a=window.getSelection();this.lastAnchorNode=a.anchorNode,this.lastAnchorOffset=a.anchorOffset,this.lastFocusNode=a.focusNode,this.lastFocusOffset=a.focusOffset},selectionInEditor:function(){var a=window.getSelection();if(!a.rangeCount)return!1;var b=a.getRangeAt(0).commonAncestorContainer;return yg(this.div,b)},focus:function(){"nocursor"!=this.cm.options.readOnly&&this.div.focus()},blur:function(){this.div.blur()},getField:function(){return this.div},supportsTouch:function(){return!0},receivedFocus:function(){function b(){a.cm.state.focused&&(a.pollSelection(),a.polling.set(a.cm.options.pollInterval,b))}var a=this;this.selectionInEditor()?this.pollSelection():fc(this.cm,function(){a.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,b)},selectionChanged:function(){var a=window.getSelection();return a.anchorNode!=this.lastAnchorNode||a.anchorOffset!=this.lastAnchorOffset||a.focusNode!=this.lastFocusNode||a.focusOffset!=this.lastFocusOffset},pollSelection:function(){if(!this.composing&&!this.gracePeriod&&this.selectionChanged()){var a=window.getSelection(),b=this.cm;this.rememberSelection();var c=Ha(b,a.anchorNode,a.anchorOffset),d=Ha(b,a.focusNode,a.focusOffset);c&&d&&fc(b,function(){$a(b.doc,Na(c,d),$f),(c.bad||d.bad)&&(b.curOp.selectionChanged=!0)})}},pollContent:function(){var a=this.cm,b=a.display,c=a.doc.sel.primary(),d=c.from(),e=c.to();if(d.lineb.viewTo-1)return!1;var f;if(d.line==b.viewFrom||0==(f=oc(a,d.line)))var g=nf(b.view[0].line),h=b.view[0].node;else var g=nf(b.view[f].line),h=b.view[f-1].node.nextSibling;var i=oc(a,e.line);if(i==b.view.length-1)var j=b.viewTo-1,k=b.lineDiv.lastChild;else var j=nf(b.view[i+1].line)-1,k=b.view[i+1].node.previousSibling;for(var l=a.doc.splitLines(Ja(a,h,k,g,j)),m=kf(a.doc,qa(g,0),qa(j,jf(a.doc,j).text.length));l.length>1&&m.length>1;)if(gg(l)==gg(m))l.pop(),m.pop(),j--;else{if(l[0]!=m[0])break;l.shift(),m.shift(),g++}for(var n=0,o=0,p=l[0],q=m[0],r=Math.min(p.length,q.length);r>n&&p.charCodeAt(n)==q.charCodeAt(n);)++n;for(var s=gg(l),t=gg(m),u=Math.min(s.length-(1==l.length?n:0),t.length-(1==m.length?n:0));u>o&&s.charCodeAt(s.length-o-1)==t.charCodeAt(t.length-o-1);)++o;l[l.length-1]=s.slice(0,s.length-o),l[0]=l[0].slice(n);var v=qa(g,n),w=qa(j,m.length?gg(m).length-o:0);return l.length>1||l[0]||ra(v,w)?(qd(a.doc,l,v,w,"+input"),!0):void 0},ensurePolled:function(){this.forceCompositionEnd()},reset:function(){this.forceCompositionEnd()},forceCompositionEnd:function(){this.composing&&!this.composing.handled&&(this.applyComposition(this.composing),this.composing.handled=!0,this.div.blur(),this.div.focus())},applyComposition:function(a){this.cm.isReadOnly()?gc(this.cm,lc)(this.cm):a.data&&a.data!=a.startData&&gc(this.cm,xa)(this.cm,a.data,0,a.sel)},setUneditable:function(a){a.contentEditable="false"},onKeyPress:function(a){a.preventDefault(),this.cm.isReadOnly()||gc(this.cm,xa)(this.cm,String.fromCharCode(null==a.charCode?a.keyCode:a.charCode),0)},readOnlyChanged:function(a){this.div.contentEditable=String("nocursor"!=a)},onContextMenu:kg,resetPosition:kg,needsContentAttribute:!0},Ea.prototype),x.inputStyles={textarea:Ca,contenteditable:Ea},Ka.prototype={primary:function(){return this.ranges[this.primIndex]},equals:function(a){if(a==this)return!0;if(a.primIndex!=this.primIndex||a.ranges.length!=this.ranges.length)return!1;for(var b=0;b=0&&ra(a,d.to())<=0)return c}return-1}},La.prototype={from:function(){return ua(this.anchor,this.head)},to:function(){return ta(this.anchor,this.head)},empty:function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch}};var Tb,yc,zc,Cb={left:0,right:0,top:0,bottom:0},Wb=null,Xb=0,Fc=0,Mc=0,Nc=null;f?Nc=-.53:c?Nc=15:j?Nc=-.7:l&&(Nc=-1/3);var Oc=function(a){var b=a.wheelDeltaX,c=a.wheelDeltaY;return null==b&&a.detail&&a.axis==a.HORIZONTAL_AXIS&&(b=a.detail),null==c&&a.detail&&a.axis==a.VERTICAL_AXIS?c=a.detail:null==c&&(c=a.wheelDelta),{x:b,y:c}};x.wheelEventPixels=function(a){var b=Oc(a);return b.x*=Nc,b.y*=Nc,b};var Sc=new bg,Wc=null,ed=x.changeEnd=function(a){return a.text?qa(a.from.line+a.text.length-1,gg(a.text).length+(1==a.text.length?a.from.ch:0)):a.to};x.prototype={constructor:x,focus:function(){window.focus(),this.display.input.focus()},setOption:function(a,b){var c=this.options,d=c[a];(c[a]!=b||"mode"==a)&&(c[a]=b,Ed.hasOwnProperty(a)&&gc(this,Ed[a])(this,b,d))},getOption:function(a){return this.options[a]},getDoc:function(){return this.doc},addKeyMap:function(a,b){this.state.keyMaps[b?"push":"unshift"](Ud(a))},removeKeyMap:function(a){for(var b=this.state.keyMaps,c=0;cc&&(yd(this,e.head.line,a,!0),c=e.head.line,d==this.doc.sel.primIndex&&wd(this));else{var f=e.from(),g=e.to(),h=Math.max(c,f.line);c=Math.min(this.lastLine(),g.line-(g.ch?0:1))+1;for(var i=h;c>i;++i)yd(this,i,a);var j=this.doc.sel.ranges;0==f.ch&&b.length==j.length&&j[d].from().ch>0&&Wa(this.doc,d,new La(f,j[d].to()),$f)}}}),getTokenAt:function(a,b){return Le(this,a,b)},getLineTokens:function(a,b){return Le(this,qa(a),b,!0)},getTokenTypeAt:function(a){a=Pa(this.doc,a);var f,b=Oe(this,jf(this.doc,a.line)),c=0,d=(b.length-1)/2,e=a.ch;if(0==e)f=b[2];else for(;;){var g=c+d>>1;if((g?b[2*g-1]:0)>=e)d=g;else{if(!(b[2*g+1]h?f:0==h?null:f.slice(0,h-1)},getModeAt:function(a){var b=this.doc.mode;return b.innerMode?x.innerMode(b,this.getTokenAt(a).state).mode:b},getHelper:function(a,b){return this.getHelpers(a,b)[0]},getHelpers:function(a,b){var c=[];if(!Ld.hasOwnProperty(b))return c;var d=Ld[b],e=this.getModeAt(a);if("string"==typeof e[b])d[e[b]]&&c.push(d[e[b]]);else if(e[b])for(var f=0;fe&&(a=e,c=!0),d=jf(this.doc,a)}else d=a;return Lb(this,d,{top:0,left:0},b||"page").top+(c?this.doc.height-pf(d):0)},defaultTextHeight:function(){return Ub(this.display)},defaultCharWidth:function(){return Vb(this.display)},setGutterMarker:hc(function(a,b,c){return zd(this.doc,a,"gutter",function(a){var d=a.gutterMarkers||(a.gutterMarkers={});return d[b]=c,!c&&rg(d)&&(a.gutterMarkers=null),!0})}),clearGutter:hc(function(a){var b=this,c=b.doc,d=c.first;c.iter(function(c){c.gutterMarkers&&c.gutterMarkers[a]&&(c.gutterMarkers[a]=null,mc(b,d,"gutter"),rg(c.gutterMarkers)&&(c.gutterMarkers=null)),++d})}),lineInfo:function(a){if("number"==typeof a){if(!Ra(this.doc,a))return null;var b=a;if(a=jf(this.doc,a),!a)return null}else{var b=nf(a);if(null==b)return null}return{line:b,handle:a,text:a.text,gutterMarkers:a.gutterMarkers,textClass:a.textClass,bgClass:a.bgClass,wrapClass:a.wrapClass,widgets:a.widgets}},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(a,b,c,d,e){var f=this.display;a=Ob(this,Pa(this.doc,a));var g=a.bottom,h=a.left;if(b.style.position="absolute",b.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(b),f.sizer.appendChild(b),"over"==d)g=a.top;else if("above"==d||"near"==d){var i=Math.max(f.wrapper.clientHeight,this.doc.height),j=Math.max(f.sizer.clientWidth,f.lineSpace.clientWidth);("above"==d||a.bottom+b.offsetHeight>i)&&a.top>b.offsetHeight?g=a.top-b.offsetHeight:a.bottom+b.offsetHeight<=i&&(g=a.bottom),h+b.offsetWidth>j&&(h=j-b.offsetWidth)}b.style.top=g+"px",b.style.left=b.style.right="","right"==e?(h=f.sizer.clientWidth-b.offsetWidth,b.style.right="0px"):("left"==e?h=0:"middle"==e&&(h=(f.sizer.clientWidth-b.offsetWidth)/2),b.style.left=h+"px"),c&&td(this,h,g,h+b.offsetWidth,g+b.offsetHeight)},triggerOnKeyDown:hc(Xc),triggerOnKeyPress:hc($c),triggerOnKeyUp:Zc,execCommand:function(a){return Od.hasOwnProperty(a)?Od[a].call(null,this):void 0},triggerElectric:hc(function(a){za(this,a)}),findPosH:function(a,b,c,d){var e=1;0>b&&(e=-1,b=-b);for(var f=0,g=Pa(this.doc,a);b>f&&(g=Bd(this.doc,g,e,c,d),!g.hitSide);++f);return g},moveH:hc(function(a,b){var c=this;c.extendSelectionsBy(function(d){return c.display.shift||c.doc.extend||d.empty()?Bd(c.doc,d.head,a,b,c.options.rtlMoveVisually):0>a?d.from():d.to()},ag)}),deleteH:hc(function(a,b){var c=this.doc.sel,d=this.doc;c.somethingSelected()?d.replaceSelection("",null,"+delete"):Ad(this,function(c){var e=Bd(d,c.head,a,b,!1);return 0>a?{from:e,to:c.head}:{from:c.head,to:e}})}),findPosV:function(a,b,c,d){var e=1,f=d;0>b&&(e=-1,b=-b);for(var g=0,h=Pa(this.doc,a);b>g;++g){var i=Ob(this,h,"div");if(null==f?f=i.left:i.left=f,h=Cd(this,i,e,c),h.hitSide)break}return h},moveV:hc(function(a,b){var c=this,d=this.doc,e=[],f=!c.display.shift&&!d.extend&&d.sel.somethingSelected();if(d.extendSelectionsBy(function(g){if(f)return 0>a?g.from():g.to();var h=Ob(c,g.head,"div");null!=g.goalColumn&&(h.left=g.goalColumn),e.push(h.left);var i=Cd(c,h,a,b);return"page"==b&&g==d.sel.primary()&&vd(c,null,Nb(c,i,"div").top-h.top),i},ag),e.length)for(var g=0;g0&&h(c.charAt(d-1));)--d;for(;e.5)&&D(this),Qf(this,"refresh",this)}),swapDoc:hc(function(a){var b=this.doc;return b.cm=null,hf(this,a),Ib(this),this.display.input.reset(),this.scrollTo(a.scrollLeft,a.scrollTop),this.curOp.forceScroll=!0,Sf(this,"swapDoc",this,b),b}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Xf(x);var Dd=x.defaults={},Ed=x.optionHandlers={},Gd=x.Init={toString:function(){return"CodeMirror.Init"}};Fd("value","",function(a,b){a.setValue(b)},!0),Fd("mode",null,function(a,b){a.doc.modeOption=b,z(a)},!0),Fd("indentUnit",2,z,!0),Fd("indentWithTabs",!1),Fd("smartIndent",!0),Fd("tabSize",4,function(a){A(a),Ib(a),lc(a)},!0),Fd("lineSeparator",null,function(a,b){if(a.doc.lineSep=b,b){var c=[],d=a.doc.first;a.doc.iter(function(a){for(var e=0;;){var f=a.text.indexOf(b,e);if(-1==f)break;e=f+b.length,c.push(qa(d,f))}d++});for(var e=c.length-1;e>=0;e--)qd(a.doc,b,c[e],qa(c[e].line,c[e].ch+b.length))}}),Fd("specialChars",/[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g,function(a,b,c){a.state.specialChars=new RegExp(b.source+(b.test(" ")?"":"| "),"g"),c!=x.Init&&a.refresh()}),Fd("specialCharPlaceholder",Ue,function(a){a.refresh()},!0),Fd("electricChars",!0),Fd("inputStyle",p?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),Fd("rtlMoveVisually",!r),Fd("wholeLineUpdateBefore",!0),Fd("theme","default",function(a){E(a),F(a)},!0),Fd("keyMap","default",function(a,b,c){var d=Ud(b),e=c!=x.Init&&Ud(c);e&&e.detach&&e.detach(a,d),d.attach&&d.attach(a,e||null)}),Fd("extraKeys",null),Fd("lineWrapping",!1,B,!0),Fd("gutters",[],function(a){K(a.options),F(a)},!0),Fd("fixedGutter",!0,function(a,b){a.display.gutters.style.left=b?V(a.display)+"px":"0",a.refresh()},!0),Fd("coverGutterNextToScrollbar",!1,function(a){P(a)},!0),Fd("scrollbarStyle","native",function(a){O(a),P(a),a.display.scrollbars.setScrollTop(a.doc.scrollTop),a.display.scrollbars.setScrollLeft(a.doc.scrollLeft)},!0),Fd("lineNumbers",!1,function(a){K(a.options),F(a)},!0),Fd("firstLineNumber",1,F,!0),Fd("lineNumberFormatter",function(a){return a},F,!0),Fd("showCursorWhenSelecting",!1,gb,!0),Fd("resetSelectionOnContextMenu",!0),Fd("lineWiseCopyCut",!0),Fd("readOnly",!1,function(a,b){"nocursor"==b?(bd(a),a.display.input.blur(),a.display.disabled=!0):a.display.disabled=!1,a.display.input.readOnlyChanged(b)}),Fd("disableInput",!1,function(a,b){b||a.display.input.reset()},!0),Fd("dragDrop",!0,tc),Fd("allowDropFileTypes",null),Fd("cursorBlinkRate",530),Fd("cursorScrollMargin",0),Fd("cursorHeight",1,gb,!0),Fd("singleCursorHeightPerLine",!0,gb,!0),Fd("workTime",100),Fd("workDelay",100),Fd("flattenSpans",!0,A,!0),Fd("addModeClass",!1,A,!0),Fd("pollInterval",100),Fd("undoDepth",200,function(a,b){a.doc.history.undoDepth=b}),Fd("historyEventDelay",1250),Fd("viewportMargin",10,function(a){a.refresh()},!0),Fd("maxHighlightLength",1e4,A,!0),Fd("moveInputWithCursor",!0,function(a,b){b||a.display.input.resetPosition()}),Fd("tabindex",null,function(a,b){a.display.input.getField().tabIndex=b||""}),Fd("autofocus",null);var Hd=x.modes={},Id=x.mimeModes={};x.defineMode=function(a,b){x.defaults.mode||"null"==a||(x.defaults.mode=a),arguments.length>2&&(b.dependencies=Array.prototype.slice.call(arguments,2)),Hd[a]=b},x.defineMIME=function(a,b){Id[a]=b},x.resolveMode=function(a){if("string"==typeof a&&Id.hasOwnProperty(a))a=Id[a];else if(a&&"string"==typeof a.name&&Id.hasOwnProperty(a.name)){var b=Id[a.name];"string"==typeof b&&(b={name:b}),a=lg(b,a),a.name=b.name}else if("string"==typeof a&&/^[\w\-]+\/[\w\-]+\+xml$/.test(a))return x.resolveMode("application/xml");return"string"==typeof a?{name:a}:a||{name:"null"}},x.getMode=function(a,b){var b=x.resolveMode(b),c=Hd[b.name];if(!c)return x.getMode(a,"text/plain");var d=c(a,b);if(Jd.hasOwnProperty(b.name)){var e=Jd[b.name];for(var f in e)e.hasOwnProperty(f)&&(d.hasOwnProperty(f)&&(d["_"+f]=d[f]),d[f]=e[f])}if(d.name=b.name,b.helperType&&(d.helperType=b.helperType),b.modeProps)for(var f in b.modeProps)d[f]=b.modeProps[f];return d},x.defineMode("null",function(){return{token:function(a){a.skipToEnd()}}}),x.defineMIME("text/plain","null");var Jd=x.modeExtensions={};x.extendMode=function(a,b){var c=Jd.hasOwnProperty(a)?Jd[a]:Jd[a]={};mg(b,c)},x.defineExtension=function(a,b){x.prototype[a]=b},x.defineDocExtension=function(a,b){df.prototype[a]=b},x.defineOption=Fd;var Kd=[];x.defineInitHook=function(a){Kd.push(a)};var Ld=x.helpers={};x.registerHelper=function(a,b,c){Ld.hasOwnProperty(a)||(Ld[a]=x[a]={_global:[]}),Ld[a][b]=c},x.registerGlobalHelper=function(a,b,c,d){x.registerHelper(a,b,d),Ld[a]._global.push({pred:c,val:d})};var Md=x.copyState=function(a,b){if(b===!0)return b;if(a.copyState)return a.copyState(b);var c={};for(var d in b){var e=b[d];e instanceof Array&&(e=e.concat([])),c[d]=e}return c},Nd=x.startState=function(a,b,c){return a.startState?a.startState(b,c):!0};x.innerMode=function(a,b){for(;a.innerMode;){var c=a.innerMode(b);if(!c||c.mode==a)break;b=c.state,a=c.mode}return c||{mode:a,state:b}};var Od=x.commands={selectAll:function(a){a.setSelection(qa(a.firstLine(),0),qa(a.lastLine()),$f)},singleSelection:function(a){a.setSelection(a.getCursor("anchor"),a.getCursor("head"),$f)},killLine:function(a){Ad(a,function(b){if(b.empty()){var c=jf(a.doc,b.head.line).text.length;return b.head.ch==c&&b.head.line0)e=new qa(e.line,e.ch+1),a.replaceRange(f.charAt(e.ch-1)+f.charAt(e.ch-2),qa(e.line,e.ch-2),e,"+transpose");else if(e.line>a.doc.first){var g=jf(a.doc,e.line-1).text;g&&a.replaceRange(f.charAt(0)+a.doc.lineSeparator()+g.charAt(g.length-1),qa(e.line-1,g.length-1),qa(e.line,1),"+transpose")}c.push(new La(e,e))}a.setSelections(c)})},newlineAndIndent:function(a){fc(a,function(){for(var b=a.listSelections().length,c=0;b>c;c++){var d=a.listSelections()[c];a.replaceRange(a.doc.lineSeparator(),d.anchor,d.head,"+input"),a.indentLine(d.from().line+1,null,!0)}wd(a)})},toggleOverwrite:function(a){a.toggleOverwrite()}},Pd=x.keyMap={};Pd.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},Pd.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find",
-"Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},Pd.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars"},Pd.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},Pd["default"]=q?Pd.macDefault:Pd.pcDefault,x.normalizeKeyMap=function(a){var b={};for(var c in a)if(a.hasOwnProperty(c)){var d=a[c];if(/^(name|fallthrough|(de|at)tach)$/.test(c))continue;if("..."==d){delete a[c];continue}for(var e=jg(c.split(" "),Qd),f=0;f=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||void 0},next:function(){return this.posb},eatSpace:function(){for(var a=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>a},skipToEnd:function(){this.pos=this.string.length},skipTo:function(a){var b=this.string.indexOf(a,this.pos);return b>-1?(this.pos=b,!0):void 0},backUp:function(a){this.pos-=a},column:function(){return this.lastColumnPos0?null:(f&&b!==!1&&(this.pos+=f[0].length),f)}var d=function(a){return c?a.toLowerCase():a},e=this.string.substr(this.pos,a.length);return d(e)==d(a)?(b!==!1&&(this.pos+=a.length),!0):void 0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(a,b){this.lineStart+=a;try{return b()}finally{this.lineStart-=a}}};var Wd=0,Xd=x.TextMarker=function(a,b){this.lines=[],this.type=b,this.doc=a,this.id=++Wd};Xf(Xd),Xd.prototype.clear=function(){if(!this.explicitlyCleared){var a=this.doc.cm,b=a&&!a.curOp;if(b&&Yb(a),Wf(this,"clear")){var c=this.find();c&&Sf(this,"clear",c.from,c.to)}for(var d=null,e=null,f=0;fa.display.maxLineLength&&(a.display.maxLine=i,a.display.maxLineLength=j,a.display.maxLineChanged=!0)}null!=d&&a&&this.collapsed&&lc(a,d,e+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,a&&bb(a.doc)),a&&Sf(a,"markerCleared",a,this),b&&$b(a),this.parent&&this.parent.clear()}},Xd.prototype.find=function(a,b){null==a&&"bookmark"==this.type&&(a=1);for(var c,d,e=0;ec;++c){var e=this.lines[c];this.height-=e.height,He(e),Sf(e,"delete")}this.lines.splice(a,b)},collapse:function(a){a.push.apply(a,this.lines)},insertInner:function(a,b,c){this.height+=c,this.lines=this.lines.slice(0,a).concat(b).concat(this.lines.slice(a));for(var d=0;da;++a)if(c(this.lines[a]))return!0}},bf.prototype={chunkSize:function(){return this.size},removeInner:function(a,b){this.size-=b;for(var c=0;ca){var f=Math.min(b,e-a),g=d.height;if(d.removeInner(a,f),this.height-=g-d.height,e==f&&(this.children.splice(c--,1),d.parent=null),0==(b-=f))break;a=0}else a-=e}if(this.size-b<25&&(this.children.length>1||!(this.children[0]instanceof af))){var h=[];this.collapse(h),this.children=[new af(h)],this.children[0].parent=this}},collapse:function(a){for(var b=0;b=a){if(e.insertInner(a,b,c),e.lines&&e.lines.length>50){for(;e.lines.length>50;){var g=e.lines.splice(e.lines.length-25,25),h=new af(g);e.height-=h.height,this.children.splice(d+1,0,h),h.parent=this}this.maybeSpill()}break}a-=f}},maybeSpill:function(){if(!(this.children.length<=10)){var a=this;do{var b=a.children.splice(a.children.length-5,5),c=new bf(b);if(a.parent){a.size-=c.size,a.height-=c.height;var e=ig(a.parent.children,a);a.parent.children.splice(e+1,0,c)}else{var d=new bf(a.children);d.parent=a,a.children=[d,c],a=d}c.parent=a.parent}while(a.children.length>10);a.parent.maybeSpill()}},iterN:function(a,b,c){for(var d=0;da){var g=Math.min(b,f-a);if(e.iterN(a,g,c))return!0;if(0==(b-=g))break;a=0}else a-=f}}};var cf=0,df=x.Doc=function(a,b,c,d){if(!(this instanceof df))return new df(a,b,c,d);null==c&&(c=0),bf.call(this,[new af([new Fe("",null)])]),this.first=c,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.frontier=c;var e=qa(c,0);this.sel=Na(e),this.history=new rf(null),this.id=++cf,this.modeOption=b,this.lineSep=d,this.extend=!1,"string"==typeof a&&(a=this.splitLines(a)),_e(this,{from:e,to:e,text:a}),$a(this,Na(e),$f)};df.prototype=lg(bf.prototype,{constructor:df,iter:function(a,b,c){c?this.iterN(a-this.first,b-a,c):this.iterN(this.first,this.first+this.size,a)},insert:function(a,b){for(var c=0,d=0;d=0;f--)kd(this,d[f]);h?Za(this,h):this.cm&&wd(this.cm)}),undo:ic(function(){md(this,"undo")}),redo:ic(function(){md(this,"redo")}),undoSelection:ic(function(){md(this,"undo",!0)}),redoSelection:ic(function(){md(this,"redo",!0)}),setExtending:function(a){this.extend=a},getExtending:function(){return this.extend},historySize:function(){for(var a=this.history,b=0,c=0,d=0;d=a.ch)&&b.push(e.marker.parent||e.marker)}return b},findMarks:function(a,b,c){a=Pa(this,a),b=Pa(this,b);var d=[],e=a.line;return this.iter(a.line,b.line+1,function(f){var g=f.markedSpans;if(g)for(var h=0;hi.to||null==i.from&&e!=a.line||e==b.line&&i.from>b.ch||c&&!c(i.marker)||d.push(i.marker.parent||i.marker)}++e}),d},getAllMarks:function(){var a=[];return this.iter(function(b){var c=b.markedSpans;if(c)for(var d=0;da?(b=a,!0):(a-=e,void++c)}),Pa(this,qa(c,b))},indexFromPos:function(a){a=Pa(this,a);var b=a.ch;return a.lineb&&(b=a.from),null!=a.to&&a.toh||h>=b)return g+(b-f);g+=h-f,g+=c-g%c,f=h+1}},dg=x.findColumn=function(a,b,c){for(var d=0,e=0;;){var f=a.indexOf(" ",d);-1==f&&(f=a.length);var g=f-d;if(f==a.length||e+g>=b)return d+Math.min(g,b-e);if(e+=f-d,e+=c-e%c,d=f+1,e>=b)return d}},eg=[""],hg=function(a){a.select()};o?hg=function(a){a.selectionStart=0,a.selectionEnd=a.value.length}:f&&(hg=function(a){try{a.select()}catch(b){}});var vg,og=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,pg=x.isWordChar=function(a){return/\w/.test(a)||a>"\x80"&&(a.toUpperCase()!=a.toLowerCase()||og.test(a))},sg=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;vg=document.createRange?function(a,b,c,d){var e=document.createRange();return e.setEnd(d||a,c),e.setStart(a,b),e}:function(a,b,c){var d=document.body.createTextRange();try{d.moveToElementText(a.parentNode)}catch(e){return d}return d.collapse(!0),d.moveEnd("character",c),d.moveStart("character",b),d};var yg=x.contains=function(a,b){if(3==b.nodeType&&(b=b.parentNode),a.contains)return a.contains(b);do if(11==b.nodeType&&(b=b.host),b==a)return!0;while(b=b.parentNode)};f&&11>g&&(zg=function(){try{return document.activeElement}catch(a){return document.body}});var Jg,Lg,Bg=x.rmClass=function(a,b){var c=a.className,d=Ag(b).exec(c);if(d){var e=c.slice(d.index+d[0].length);a.className=c.slice(0,d.index)+(e?d[1]+e:"")}},Cg=x.addClass=function(a,b){var c=a.className;Ag(b).test(c)||(a.className+=(c?" ":"")+b)},Fg=!1,Ig=function(){if(f&&9>g)return!1;var a=ug("div");return"draggable"in a||"dragDrop"in a}(),Ng=x.splitLines=3!="\n\nb".split(/\n/).length?function(a){for(var b=0,c=[],d=a.length;d>=b;){var e=a.indexOf("\n",b);-1==e&&(e=a.length);var f=a.slice(b,"\r"==a.charAt(e-1)?e-1:e),g=f.indexOf("\r");-1!=g?(c.push(f.slice(0,g)),b+=g+1):(c.push(f),b=e+1)}return c}:function(a){return a.split(/\r\n?|\n/)},Og=window.getSelection?function(a){try{return a.selectionStart!=a.selectionEnd}catch(b){return!1}}:function(a){try{var b=a.ownerDocument.selection.createRange()}catch(c){}return b&&b.parentElement()==a?0!=b.compareEndPoints("StartToEnd",b):!1},Pg=function(){var a=ug("div");return"oncopy"in a?!0:(a.setAttribute("oncopy","return;"),"function"==typeof a.oncopy)}(),Qg=null,Sg=x.keyNames={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",106:"*",107:"=",109:"-",110:".",111:"/",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"};!function(){for(var a=0;10>a;a++)Sg[a+48]=Sg[a+96]=String(a);for(var a=65;90>=a;a++)Sg[a]=String.fromCharCode(a);for(var a=1;12>=a;a++)Sg[a+111]=Sg[a+63235]="F"+a}();var ah,fh=function(){function c(c){return 247>=c?a.charAt(c):c>=1424&&1524>=c?"R":c>=1536&&1773>=c?b.charAt(c-1536):c>=1774&&2220>=c?"r":c>=8192&&8203>=c?"w":8204==c?"b":"L"}function j(a,b,c){this.level=a,this.from=b,this.to=c}var a="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",b="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm",d=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,e=/[stwN]/,f=/[LRr]/,g=/[Lb1n]/,h=/[1n]/,i="L";return function(a){if(!d.test(a))return!1;for(var m,b=a.length,k=[],l=0;b>l;++l)k.push(m=c(a.charCodeAt(l)));for(var l=0,n=i;b>l;++l){var m=k[l];"m"==m?k[l]=n:n=m}for(var l=0,o=i;b>l;++l){var m=k[l];"1"==m&&"r"==o?k[l]="n":f.test(m)&&(o=m,"r"==m&&(k[l]="R"))}for(var l=1,n=k[0];b-1>l;++l){var m=k[l];"+"==m&&"1"==n&&"1"==k[l+1]?k[l]="1":","!=m||n!=k[l+1]||"1"!=n&&"n"!=n||(k[l]=n),n=m}for(var l=0;b>l;++l){var m=k[l];if(","==m)k[l]="N";else if("%"==m){for(var p=l+1;b>p&&"%"==k[p];++p);for(var q=l&&"!"==k[l-1]||b>p&&"1"==k[p]?"1":"N",r=l;p>r;++r)k[r]=q;l=p-1}}for(var l=0,o=i;b>l;++l){var m=k[l];"L"==o&&"1"==m?k[l]="L":f.test(m)&&(o=m)}for(var l=0;b>l;++l)if(e.test(k[l])){for(var p=l+1;b>p&&e.test(k[p]);++p);for(var s="L"==(l?k[l-1]:i),t="L"==(b>p?k[p]:i),q=s||t?"L":"R",r=l;p>r;++r)k[r]=q;l=p-1}for(var v,u=[],l=0;b>l;)if(g.test(k[l])){var w=l;for(++l;b>l&&g.test(k[l]);++l);u.push(new j(0,w,l))}else{var x=l,y=u.length;for(++l;b>l&&"L"!=k[l];++l);for(var r=x;l>r;)if(h.test(k[r])){r>x&&u.splice(y,0,new j(1,x,r));var z=r;for(++r;l>r&&h.test(k[r]);++r);u.splice(y,0,new j(2,z,r)),x=r}else++r;l>x&&u.splice(y,0,new j(1,x,l))}return 1==u[0].level&&(v=a.match(/^\s+/))&&(u[0].from=v[0].length,u.unshift(new j(0,0,v[0].length))),1==gg(u).level&&(v=a.match(/\s+$/))&&(gg(u).to-=v[0].length,u.push(new j(0,b-v[0].length,b))),2==u[0].level&&u.unshift(new j(1,u[0].to,u[0].to)),u[0].level!=gg(u).level&&u.push(new j(u[0].level,b,b)),u}}();return x.version="5.11.0",x});
\ No newline at end of file
+(function(mod){if(typeof exports=="object"&&typeof module=="object")module.exports=mod();else if(typeof define=="function"&&define.amd)return define([],mod);else(this||window).CodeMirror=mod()})(function(){"use strict";var userAgent=navigator.userAgent;var platform=navigator.platform;var gecko=/gecko\/\d/i.test(userAgent);var ie_upto10=/MSIE \d/.test(userAgent);var ie_11up=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent);var ie=ie_upto10||ie_11up;var ie_version=ie&&(ie_upto10?document.documentMode||6:ie_11up[1]);var webkit=/WebKit\//.test(userAgent);var qtwebkit=webkit&&/Qt\/\d+\.\d+/.test(userAgent);var chrome=/Chrome\//.test(userAgent);var presto=/Opera\//.test(userAgent);var safari=/Apple Computer/.test(navigator.vendor);var mac_geMountainLion=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent);var phantom=/PhantomJS/.test(userAgent);var ios=/AppleWebKit/.test(userAgent)&&/Mobile\/\w+/.test(userAgent);var mobile=ios||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);var mac=ios||/Mac/.test(platform);var windows=/win/i.test(platform);var presto_version=presto&&userAgent.match(/Version\/(\d*\.\d*)/);if(presto_version)presto_version=Number(presto_version[1]);if(presto_version&&presto_version>=15){presto=false;webkit=true}var flipCtrlCmd=mac&&(qtwebkit||presto&&(presto_version==null||presto_version<12.11));var captureRightClick=gecko||ie&&ie_version>=9;var sawReadOnlySpans=false,sawCollapsedSpans=false;function CodeMirror(place,options){if(!(this instanceof CodeMirror))return new CodeMirror(place,options);this.options=options=options?copyObj(options):{};copyObj(defaults,options,false);setGuttersForLineNumbers(options);var doc=options.value;if(typeof doc=="string")doc=new Doc(doc,options.mode,null,options.lineSeparator);this.doc=doc;var input=new CodeMirror.inputStyles[options.inputStyle](this);var display=this.display=new Display(place,doc,input);display.wrapper.CodeMirror=this;updateGutters(this);themeChanged(this);if(options.lineWrapping)this.display.wrapper.className+=" CodeMirror-wrap";if(options.autofocus&&!mobile)display.input.focus();initScrollbars(this);this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:false,delayingBlurEvent:false,focused:false,suppressEdits:false,pasteIncoming:false,cutIncoming:false,selectingText:false,draggingText:false,highlight:new Delayed,keySeq:null,specialChars:null};var cm=this;if(ie&&ie_version<11)setTimeout(function(){cm.display.input.reset(true)},20);registerEventHandlers(this);ensureGlobalHandlers();startOperation(this);this.curOp.forceUpdate=true;attachDoc(this,doc);if(options.autofocus&&!mobile||cm.hasFocus())setTimeout(bind(onFocus,this),20);else onBlur(this);for(var opt in optionHandlers)if(optionHandlers.hasOwnProperty(opt))optionHandlers[opt](this,options[opt],Init);maybeUpdateLineNumberWidth(this);if(options.finishInit)options.finishInit(this);for(var i=0;id.maxLineLength){d.maxLineLength=len;d.maxLine=line}})}function setGuttersForLineNumbers(options){var found=indexOf(options.gutters,"CodeMirror-linenumbers");if(found==-1&&options.lineNumbers){options.gutters=options.gutters.concat(["CodeMirror-linenumbers"])}else if(found>-1&&!options.lineNumbers){options.gutters=options.gutters.slice(0);options.gutters.splice(found,1)}}function measureForScrollbars(cm){var d=cm.display,gutterW=d.gutters.offsetWidth;var docH=Math.round(cm.doc.height+paddingVert(cm.display));return{clientHeight:d.scroller.clientHeight,viewHeight:d.wrapper.clientHeight,scrollWidth:d.scroller.scrollWidth,clientWidth:d.scroller.clientWidth,viewWidth:d.wrapper.clientWidth,barLeft:cm.options.fixedGutter?gutterW:0,docHeight:docH,scrollHeight:docH+scrollGap(cm)+d.barHeight,nativeBarWidth:d.nativeBarWidth,gutterWidth:gutterW}}function NativeScrollbars(place,scroll,cm){this.cm=cm;var vert=this.vert=elt("div",[elt("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar");var horiz=this.horiz=elt("div",[elt("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");place(vert);place(horiz);on(vert,"scroll",function(){if(vert.clientHeight)scroll(vert.scrollTop,"vertical")});on(horiz,"scroll",function(){if(horiz.clientWidth)scroll(horiz.scrollLeft,"horizontal")});this.checkedZeroWidth=false;if(ie&&ie_version<8)this.horiz.style.minHeight=this.vert.style.minWidth="18px"}NativeScrollbars.prototype=copyObj({update:function(measure){var needsH=measure.scrollWidth>measure.clientWidth+1;var needsV=measure.scrollHeight>measure.clientHeight+1;var sWidth=measure.nativeBarWidth;if(needsV){this.vert.style.display="block";this.vert.style.bottom=needsH?sWidth+"px":"0";var totalHeight=measure.viewHeight-(needsH?sWidth:0);this.vert.firstChild.style.height=Math.max(0,measure.scrollHeight-measure.clientHeight+totalHeight)+"px"}else{this.vert.style.display="";this.vert.firstChild.style.height="0"}if(needsH){this.horiz.style.display="block";this.horiz.style.right=needsV?sWidth+"px":"0";this.horiz.style.left=measure.barLeft+"px";var totalWidth=measure.viewWidth-measure.barLeft-(needsV?sWidth:0);this.horiz.firstChild.style.width=measure.scrollWidth-measure.clientWidth+totalWidth+"px"}else{this.horiz.style.display="";this.horiz.firstChild.style.width="0"}if(!this.checkedZeroWidth&&measure.clientHeight>0){if(sWidth==0)this.zeroWidthHack();this.checkedZeroWidth=true}return{right:needsV?sWidth:0,bottom:needsH?sWidth:0}},setScrollLeft:function(pos){if(this.horiz.scrollLeft!=pos)this.horiz.scrollLeft=pos;if(this.disableHoriz)this.enableZeroWidthBar(this.horiz,this.disableHoriz)},setScrollTop:function(pos){if(this.vert.scrollTop!=pos)this.vert.scrollTop=pos;if(this.disableVert)this.enableZeroWidthBar(this.vert,this.disableVert)},zeroWidthHack:function(){var w=mac&&!mac_geMountainLion?"12px":"18px";this.horiz.style.height=this.vert.style.width=w;this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none";this.disableHoriz=new Delayed;this.disableVert=new Delayed},enableZeroWidthBar:function(bar,delay){bar.style.pointerEvents="auto";function maybeDisable(){var box=bar.getBoundingClientRect();var elt=document.elementFromPoint(box.left+1,box.bottom-1);if(elt!=bar)bar.style.pointerEvents="none";else delay.set(1e3,maybeDisable)}delay.set(1e3,maybeDisable)},clear:function(){var parent=this.horiz.parentNode;parent.removeChild(this.horiz);parent.removeChild(this.vert)}},NativeScrollbars.prototype);function NullScrollbars(){}NullScrollbars.prototype=copyObj({update:function(){return{bottom:0,right:0}},setScrollLeft:function(){},setScrollTop:function(){},clear:function(){}},NullScrollbars.prototype);CodeMirror.scrollbarModel={native:NativeScrollbars,null:NullScrollbars};function initScrollbars(cm){if(cm.display.scrollbars){cm.display.scrollbars.clear();if(cm.display.scrollbars.addClass)rmClass(cm.display.wrapper,cm.display.scrollbars.addClass)}cm.display.scrollbars=new CodeMirror.scrollbarModel[cm.options.scrollbarStyle](function(node){cm.display.wrapper.insertBefore(node,cm.display.scrollbarFiller);on(node,"mousedown",function(){if(cm.state.focused)setTimeout(function(){cm.display.input.focus()},0)});node.setAttribute("cm-not-content","true")},function(pos,axis){if(axis=="horizontal")setScrollLeft(cm,pos);else setScrollTop(cm,pos)},cm);if(cm.display.scrollbars.addClass)addClass(cm.display.wrapper,cm.display.scrollbars.addClass)}function updateScrollbars(cm,measure){if(!measure)measure=measureForScrollbars(cm);var startWidth=cm.display.barWidth,startHeight=cm.display.barHeight;updateScrollbarsInner(cm,measure);for(var i=0;i<4&&startWidth!=cm.display.barWidth||startHeight!=cm.display.barHeight;i++){if(startWidth!=cm.display.barWidth&&cm.options.lineWrapping)updateHeightsInViewport(cm);updateScrollbarsInner(cm,measureForScrollbars(cm));startWidth=cm.display.barWidth;startHeight=cm.display.barHeight}}function updateScrollbarsInner(cm,measure){var d=cm.display;var sizes=d.scrollbars.update(measure);d.sizer.style.paddingRight=(d.barWidth=sizes.right)+"px";d.sizer.style.paddingBottom=(d.barHeight=sizes.bottom)+"px";if(sizes.right&&sizes.bottom){d.scrollbarFiller.style.display="block";d.scrollbarFiller.style.height=sizes.bottom+"px";d.scrollbarFiller.style.width=sizes.right+"px"}else d.scrollbarFiller.style.display="";if(sizes.bottom&&cm.options.coverGutterNextToScrollbar&&cm.options.fixedGutter){d.gutterFiller.style.display="block";d.gutterFiller.style.height=sizes.bottom+"px";d.gutterFiller.style.width=measure.gutterWidth+"px"}else d.gutterFiller.style.display=""}function visibleLines(display,doc,viewport){var top=viewport&&viewport.top!=null?Math.max(0,viewport.top):display.scroller.scrollTop;top=Math.floor(top-paddingTop(display));var bottom=viewport&&viewport.bottom!=null?viewport.bottom:top+display.wrapper.clientHeight;var from=lineAtHeight(doc,top),to=lineAtHeight(doc,bottom);if(viewport&&viewport.ensure){var ensureFrom=viewport.ensure.from.line,ensureTo=viewport.ensure.to.line;if(ensureFrom=to){from=lineAtHeight(doc,heightAtLine(getLine(doc,ensureTo))-display.wrapper.clientHeight);to=ensureTo}}return{from:from,to:Math.max(to,from+1)}}function alignHorizontally(cm){var display=cm.display,view=display.view;if(!display.alignWidgets&&(!display.gutters.firstChild||!cm.options.fixedGutter))return;var comp=compensateForHScroll(display)-display.scroller.scrollLeft+cm.doc.scrollLeft;var gutterW=display.gutters.offsetWidth,left=comp+"px";for(var i=0;i=display.viewFrom&&update.visible.to<=display.viewTo&&(display.updateLineNumbers==null||display.updateLineNumbers>=display.viewTo)&&display.renderedView==display.view&&countDirtyView(cm)==0)return false;if(maybeUpdateLineNumberWidth(cm)){resetView(cm);update.dims=getDimensions(cm)}var end=doc.first+doc.size;var from=Math.max(update.visible.from-cm.options.viewportMargin,doc.first);var to=Math.min(end,update.visible.to+cm.options.viewportMargin);if(display.viewFromto&&display.viewTo-to<20)to=Math.min(end,display.viewTo);if(sawCollapsedSpans){from=visualLineNo(cm.doc,from);to=visualLineEndNo(cm.doc,to)}var different=from!=display.viewFrom||to!=display.viewTo||display.lastWrapHeight!=update.wrapperHeight||display.lastWrapWidth!=update.wrapperWidth;adjustView(cm,from,to);display.viewOffset=heightAtLine(getLine(cm.doc,display.viewFrom));cm.display.mover.style.top=display.viewOffset+"px";var toUpdate=countDirtyView(cm);if(!different&&toUpdate==0&&!update.force&&display.renderedView==display.view&&(display.updateLineNumbers==null||display.updateLineNumbers>=display.viewTo))return false;var focused=activeElt();if(toUpdate>4)display.lineDiv.style.display="none";patchDisplay(cm,display.updateLineNumbers,update.dims);if(toUpdate>4)display.lineDiv.style.display="";display.renderedView=display.view;if(focused&&activeElt()!=focused&&focused.offsetHeight)focused.focus();removeChildren(display.cursorDiv);removeChildren(display.selectionDiv);display.gutters.style.height=display.sizer.style.minHeight=0;if(different){display.lastWrapHeight=update.wrapperHeight;display.lastWrapWidth=update.wrapperWidth;startWorker(cm,400)}display.updateLineNumbers=null;return true}function postUpdateDisplay(cm,update){var viewport=update.viewport;for(var first=true;;first=false){if(!first||!cm.options.lineWrapping||update.oldDisplayWidth==displayWidth(cm)){if(viewport&&viewport.top!=null)viewport={top:Math.min(cm.doc.height+paddingVert(cm.display)-displayHeight(cm),viewport.top)};update.visible=visibleLines(cm.display,cm.doc,viewport);if(update.visible.from>=cm.display.viewFrom&&update.visible.to<=cm.display.viewTo)break}if(!updateDisplayIfNeeded(cm,update))break;updateHeightsInViewport(cm);var barMeasure=measureForScrollbars(cm);updateSelection(cm);setDocumentHeight(cm,barMeasure);updateScrollbars(cm,barMeasure)}update.signal(cm,"update",cm);if(cm.display.viewFrom!=cm.display.reportedViewFrom||cm.display.viewTo!=cm.display.reportedViewTo){update.signal(cm,"viewportChange",cm,cm.display.viewFrom,cm.display.viewTo);cm.display.reportedViewFrom=cm.display.viewFrom;cm.display.reportedViewTo=cm.display.viewTo}}function updateDisplaySimple(cm,viewport){var update=new DisplayUpdate(cm,viewport);if(updateDisplayIfNeeded(cm,update)){updateHeightsInViewport(cm);postUpdateDisplay(cm,update);var barMeasure=measureForScrollbars(cm);updateSelection(cm);setDocumentHeight(cm,barMeasure);updateScrollbars(cm,barMeasure);update.finish()}}function setDocumentHeight(cm,measure){cm.display.sizer.style.minHeight=measure.docHeight+"px";var total=measure.docHeight+cm.display.barHeight;cm.display.heightForcer.style.top=total+"px";cm.display.gutters.style.height=Math.max(total+scrollGap(cm),measure.clientHeight)+"px"}function updateHeightsInViewport(cm){var display=cm.display;var prevBottom=display.lineDiv.offsetTop;for(var i=0;i.001||diff<-.001){updateLineHeight(cur.line,height);updateWidgetHeight(cur.line);if(cur.rest)for(var j=0;j-1)updateNumber=false;updateLineForChanges(cm,lineView,lineN,dims)}if(updateNumber){removeChildren(lineView.lineNumber);lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options,lineN)))}cur=lineView.node.nextSibling}lineN+=lineView.size}while(cur)cur=rm(cur)}function updateLineForChanges(cm,lineView,lineN,dims){for(var j=0;j1){if(lastCopied&&lastCopied.join("\n")==inserted){if(sel.ranges.length%lastCopied.length==0){multiPaste=[];for(var i=0;i=0;i--){var range=sel.ranges[i];var from=range.from(),to=range.to();if(range.empty()){if(deleted&&deleted>0)from=Pos(from.line,from.ch-deleted);else if(cm.state.overwrite&&!paste)to=Pos(to.line,Math.min(getLine(doc,to.line).text.length,to.ch+lst(textLines).length))}var updateInput=cm.curOp.updateInput;var changeEvent={from:from,to:to,text:multiPaste?multiPaste[i%multiPaste.length]:textLines,origin:origin||(paste?"paste":cm.state.cutIncoming?"cut":"+input")};makeChange(cm.doc,changeEvent);signalLater(cm,"inputRead",cm,changeEvent)}if(inserted&&!paste)triggerElectric(cm,inserted);ensureCursorVisible(cm);cm.curOp.updateInput=updateInput;cm.curOp.typing=true;cm.state.pasteIncoming=cm.state.cutIncoming=false}function handlePaste(e,cm){var pasted=e.clipboardData&&e.clipboardData.getData("text/plain");if(pasted){e.preventDefault();if(!cm.isReadOnly()&&!cm.options.disableInput)runInOp(cm,function(){applyTextInput(cm,pasted,0,null,"paste")});return true}}function triggerElectric(cm,inserted){if(!cm.options.electricChars||!cm.options.smartIndent)return;var sel=cm.doc.sel;for(var i=sel.ranges.length-1;i>=0;i--){var range=sel.ranges[i];if(range.head.ch>100||i&&sel.ranges[i-1].head.line==range.head.line)continue;var mode=cm.getModeAt(range.head);var indented=false;if(mode.electricChars){for(var j=0;j-1){indented=indentLine(cm,range.head.line,"smart");break}}else if(mode.electricInput){if(mode.electricInput.test(getLine(cm.doc,range.head.line).text.slice(0,range.head.ch)))indented=indentLine(cm,range.head.line,"smart")}if(indented)signalLater(cm,"electricInput",cm,range.head.line)}}function copyableRanges(cm){var text=[],ranges=[];for(var i=0;i=9&&input.hasSelection)input.hasSelection=null;input.poll()});on(te,"paste",function(e){if(signalDOMEvent(cm,e)||handlePaste(e,cm))return;cm.state.pasteIncoming=true;input.fastPoll()});function prepareCopyCut(e){if(signalDOMEvent(cm,e))return;if(cm.somethingSelected()){lastCopied=cm.getSelections();if(input.inaccurateSelection){input.prevInput="";input.inaccurateSelection=false;te.value=lastCopied.join("\n");selectInput(te)}}else if(!cm.options.lineWiseCopyCut){return}else{var ranges=copyableRanges(cm);lastCopied=ranges.text;if(e.type=="cut"){cm.setSelections(ranges.ranges,null,sel_dontScroll)}else{input.prevInput="";te.value=ranges.text.join("\n");selectInput(te)}}if(e.type=="cut")cm.state.cutIncoming=true}on(te,"cut",prepareCopyCut);on(te,"copy",prepareCopyCut);on(display.scroller,"paste",function(e){if(eventInWidget(display,e)||signalDOMEvent(cm,e))return;cm.state.pasteIncoming=true;input.focus()});on(display.lineSpace,"selectstart",function(e){if(!eventInWidget(display,e))e_preventDefault(e)});on(te,"compositionstart",function(){var start=cm.getCursor("from");if(input.composing)input.composing.range.clear();input.composing={start:start,range:cm.markText(start,cm.getCursor("to"),{className:"CodeMirror-composing"})}});on(te,"compositionend",function(){if(input.composing){input.poll();input.composing.range.clear();input.composing=null}})},prepareSelection:function(){var cm=this.cm,display=cm.display,doc=cm.doc;var result=prepareSelection(cm);if(cm.options.moveInputWithCursor){var headPos=cursorCoords(cm,doc.sel.primary().head,"div");var wrapOff=display.wrapper.getBoundingClientRect(),lineOff=display.lineDiv.getBoundingClientRect();result.teTop=Math.max(0,Math.min(display.wrapper.clientHeight-10,headPos.top+lineOff.top-wrapOff.top));result.teLeft=Math.max(0,Math.min(display.wrapper.clientWidth-10,headPos.left+lineOff.left-wrapOff.left))}return result},showSelection:function(drawn){var cm=this.cm,display=cm.display;removeChildrenAndAdd(display.cursorDiv,drawn.cursors);removeChildrenAndAdd(display.selectionDiv,drawn.selection);if(drawn.teTop!=null){this.wrapper.style.top=drawn.teTop+"px";this.wrapper.style.left=drawn.teLeft+"px"}},reset:function(typing){if(this.contextMenuPending)return;var minimal,selected,cm=this.cm,doc=cm.doc;if(cm.somethingSelected()){this.prevInput="";var range=doc.sel.primary();minimal=hasCopyEvent&&(range.to().line-range.from().line>100||(selected=cm.getSelection()).length>1e3);var content=minimal?"-":selected||cm.getSelection();this.textarea.value=content;if(cm.state.focused)selectInput(this.textarea);if(ie&&ie_version>=9)this.hasSelection=content}else if(!typing){this.prevInput=this.textarea.value="";if(ie&&ie_version>=9)this.hasSelection=null}this.inaccurateSelection=minimal},getField:function(){return this.textarea},supportsTouch:function(){return false},focus:function(){if(this.cm.options.readOnly!="nocursor"&&(!mobile||activeElt()!=this.textarea)){try{this.textarea.focus()}catch(e){}}},blur:function(){this.textarea.blur()},resetPosition:function(){this.wrapper.style.top=this.wrapper.style.left=0},receivedFocus:function(){this.slowPoll()},slowPoll:function(){var input=this;if(input.pollingFast)return;input.polling.set(this.cm.options.pollInterval,function(){input.poll();if(input.cm.state.focused)input.slowPoll()})},fastPoll:function(){var missed=false,input=this;input.pollingFast=true;function p(){var changed=input.poll();if(!changed&&!missed){missed=true;input.polling.set(60,p)}else{input.pollingFast=false;input.slowPoll()}}input.polling.set(20,p)},poll:function(){var cm=this.cm,input=this.textarea,prevInput=this.prevInput;if(this.contextMenuPending||!cm.state.focused||hasSelection(input)&&!prevInput&&!this.composing||cm.isReadOnly()||cm.options.disableInput||cm.state.keySeq)return false;var text=input.value;if(text==prevInput&&!cm.somethingSelected())return false;if(ie&&ie_version>=9&&this.hasSelection===text||mac&&/[\uf700-\uf7ff]/.test(text)){cm.display.input.reset();return false}if(cm.doc.sel==cm.display.selForContextMenu){var first=text.charCodeAt(0);if(first==8203&&!prevInput)prevInput="";if(first==8666){this.reset();return this.cm.execCommand("undo")}}var same=0,l=Math.min(prevInput.length,text.length);while(same1e3||text.indexOf("\n")>-1)input.value=self.prevInput="";else self.prevInput=text;if(self.composing){self.composing.range.clear();self.composing.range=cm.markText(self.composing.start,cm.getCursor("to"),{className:"CodeMirror-composing"})}});return true},ensurePolled:function(){if(this.pollingFast&&this.poll())this.pollingFast=false},onKeyPress:function(){if(ie&&ie_version>=9)this.hasSelection=null;this.fastPoll()},onContextMenu:function(e){var input=this,cm=input.cm,display=cm.display,te=input.textarea;var pos=posFromMouse(cm,e),scrollPos=display.scroller.scrollTop;if(!pos||presto)return;var reset=cm.options.resetSelectionOnContextMenu;if(reset&&cm.doc.sel.contains(pos)==-1)operation(cm,setSelection)(cm.doc,simpleSelection(pos),sel_dontScroll);var oldCSS=te.style.cssText;input.wrapper.style.position="absolute";te.style.cssText="position: fixed; width: 30px; height: 30px; top: "+(e.clientY-5)+"px; left: "+(e.clientX-5)+"px; z-index: 1000; background: "+(ie?"rgba(255, 255, 255, .05)":"transparent")+"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";if(webkit)var oldScrollY=window.scrollY;display.input.focus();if(webkit)window.scrollTo(null,oldScrollY);display.input.reset();if(!cm.somethingSelected())te.value=input.prevInput=" ";input.contextMenuPending=true;display.selForContextMenu=cm.doc.sel;clearTimeout(display.detectingSelectAll);function prepareSelectAllHack(){if(te.selectionStart!=null){var selected=cm.somethingSelected();var extval=""+(selected?te.value:"");te.value="⇚";te.value=extval;input.prevInput=selected?"":"";te.selectionStart=1;te.selectionEnd=extval.length;display.selForContextMenu=cm.doc.sel}}function rehide(){input.contextMenuPending=false;input.wrapper.style.position="relative";te.style.cssText=oldCSS;if(ie&&ie_version<9)display.scrollbars.setScrollTop(display.scroller.scrollTop=scrollPos);if(te.selectionStart!=null){if(!ie||ie&&ie_version<9)prepareSelectAllHack();var i=0,poll=function(){if(display.selForContextMenu==cm.doc.sel&&te.selectionStart==0&&te.selectionEnd>0&&input.prevInput=="")operation(cm,commands.selectAll)(cm);else if(i++<10)display.detectingSelectAll=setTimeout(poll,500);else display.input.reset()};display.detectingSelectAll=setTimeout(poll,200)}}if(ie&&ie_version>=9)prepareSelectAllHack();if(captureRightClick){e_stop(e);var mouseup=function(){off(window,"mouseup",mouseup);setTimeout(rehide,20)};on(window,"mouseup",mouseup)}else{setTimeout(rehide,50)}},readOnlyChanged:function(val){if(!val)this.reset()},setUneditable:nothing,needsContentAttribute:false},TextareaInput.prototype);function ContentEditableInput(cm){this.cm=cm;this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null;this.polling=new Delayed;this.gracePeriod=false}ContentEditableInput.prototype=copyObj({init:function(display){var input=this,cm=input.cm;var div=input.div=display.lineDiv;disableBrowserMagic(div);on(div,"paste",function(e){if(!signalDOMEvent(cm,e))handlePaste(e,cm)});on(div,"compositionstart",function(e){var data=e.data;input.composing={sel:cm.doc.sel,data:data,startData:data};if(!data)return;var prim=cm.doc.sel.primary();var line=cm.getLine(prim.head.line);var found=line.indexOf(data,Math.max(0,prim.head.ch-data.length));if(found>-1&&found<=prim.head.ch)input.composing.sel=simpleSelection(Pos(prim.head.line,found),Pos(prim.head.line,found+data.length))});on(div,"compositionupdate",function(e){input.composing.data=e.data});on(div,"compositionend",function(e){var ours=input.composing;if(!ours)return;if(e.data!=ours.startData&&!/\u200b/.test(e.data))ours.data=e.data;setTimeout(function(){if(!ours.handled)input.applyComposition(ours);if(input.composing==ours)input.composing=null},50)});on(div,"touchstart",function(){input.forceCompositionEnd()});on(div,"input",function(){if(input.composing)return;if(cm.isReadOnly()||!input.pollContent())runInOp(input.cm,function(){regChange(cm)})});function onCopyCut(e){if(signalDOMEvent(cm,e))return;if(cm.somethingSelected()){lastCopied=cm.getSelections();if(e.type=="cut")cm.replaceSelection("",null,"cut")}else if(!cm.options.lineWiseCopyCut){return}else{var ranges=copyableRanges(cm);lastCopied=ranges.text;if(e.type=="cut"){cm.operation(function(){cm.setSelections(ranges.ranges,0,sel_dontScroll);cm.replaceSelection("",null,"cut")})}}if(e.clipboardData&&!ios){e.preventDefault();e.clipboardData.clearData();e.clipboardData.setData("text/plain",lastCopied.join("\n"))}else{var kludge=hiddenTextarea(),te=kludge.firstChild;cm.display.lineSpace.insertBefore(kludge,cm.display.lineSpace.firstChild);te.value=lastCopied.join("\n");var hadFocus=document.activeElement;selectInput(te);setTimeout(function(){cm.display.lineSpace.removeChild(kludge);hadFocus.focus()},50)}}on(div,"copy",onCopyCut);on(div,"cut",onCopyCut)},prepareSelection:function(){var result=prepareSelection(this.cm,false);result.focus=this.cm.state.focused;return result},showSelection:function(info){if(!info||!this.cm.display.view.length)return;if(info.focus)this.showPrimarySelection();this.showMultipleSelections(info)},showPrimarySelection:function(){var sel=window.getSelection(),prim=this.cm.doc.sel.primary();var curAnchor=domToPos(this.cm,sel.anchorNode,sel.anchorOffset);var curFocus=domToPos(this.cm,sel.focusNode,sel.focusOffset);if(curAnchor&&!curAnchor.bad&&curFocus&&!curFocus.bad&&cmp(minPos(curAnchor,curFocus),prim.from())==0&&cmp(maxPos(curAnchor,curFocus),prim.to())==0)return;var start=posToDOM(this.cm,prim.from());var end=posToDOM(this.cm,prim.to());if(!start&&!end)return;var view=this.cm.display.view;var old=sel.rangeCount&&sel.getRangeAt(0);if(!start){start={node:view[0].measure.map[2],offset:0}}else if(!end){var measure=view[view.length-1].measure;var map=measure.maps?measure.maps[measure.maps.length-1]:measure.map;end={node:map[map.length-1],offset:map[map.length-2]-map[map.length-3]}}try{var rng=range(start.node,start.offset,end.offset,end.node)}catch(e){}if(rng){if(!gecko&&this.cm.state.focused){sel.collapse(start.node,start.offset);if(!rng.collapsed)sel.addRange(rng)}else{sel.removeAllRanges();sel.addRange(rng)}if(old&&sel.anchorNode==null)sel.addRange(old);else if(gecko)this.startGracePeriod()}this.rememberSelection()},startGracePeriod:function(){var input=this;clearTimeout(this.gracePeriod);this.gracePeriod=setTimeout(function(){input.gracePeriod=false;if(input.selectionChanged())input.cm.operation(function(){input.cm.curOp.selectionChanged=true})},20)},showMultipleSelections:function(info){removeChildrenAndAdd(this.cm.display.cursorDiv,info.cursors);removeChildrenAndAdd(this.cm.display.selectionDiv,info.selection)},rememberSelection:function(){var sel=window.getSelection();this.lastAnchorNode=sel.anchorNode;this.lastAnchorOffset=sel.anchorOffset;this.lastFocusNode=sel.focusNode;this.lastFocusOffset=sel.focusOffset},selectionInEditor:function(){var sel=window.getSelection();if(!sel.rangeCount)return false;var node=sel.getRangeAt(0).commonAncestorContainer;return contains(this.div,node)},focus:function(){if(this.cm.options.readOnly!="nocursor")this.div.focus()},blur:function(){this.div.blur()},getField:function(){return this.div},supportsTouch:function(){return true},receivedFocus:function(){var input=this;if(this.selectionInEditor())this.pollSelection();else runInOp(this.cm,function(){input.cm.curOp.selectionChanged=true});function poll(){if(input.cm.state.focused){input.pollSelection();input.polling.set(input.cm.options.pollInterval,poll)}}this.polling.set(this.cm.options.pollInterval,poll)},selectionChanged:function(){var sel=window.getSelection();return sel.anchorNode!=this.lastAnchorNode||sel.anchorOffset!=this.lastAnchorOffset||sel.focusNode!=this.lastFocusNode||sel.focusOffset!=this.lastFocusOffset},pollSelection:function(){if(!this.composing&&!this.gracePeriod&&this.selectionChanged()){var sel=window.getSelection(),cm=this.cm;this.rememberSelection();var anchor=domToPos(cm,sel.anchorNode,sel.anchorOffset);var head=domToPos(cm,sel.focusNode,sel.focusOffset);if(anchor&&head)runInOp(cm,function(){setSelection(cm.doc,simpleSelection(anchor,head),sel_dontScroll);if(anchor.bad||head.bad)cm.curOp.selectionChanged=true})}},pollContent:function(){var cm=this.cm,display=cm.display,sel=cm.doc.sel.primary();var from=sel.from(),to=sel.to();if(from.linedisplay.viewTo-1)return false;var fromIndex;if(from.line==display.viewFrom||(fromIndex=findViewIndex(cm,from.line))==0){var fromLine=lineNo(display.view[0].line);var fromNode=display.view[0].node}else{var fromLine=lineNo(display.view[fromIndex].line);var fromNode=display.view[fromIndex-1].node.nextSibling}var toIndex=findViewIndex(cm,to.line);if(toIndex==display.view.length-1){var toLine=display.viewTo-1;var toNode=display.lineDiv.lastChild}else{var toLine=lineNo(display.view[toIndex+1].line)-1;var toNode=display.view[toIndex+1].node.previousSibling}var newText=cm.doc.splitLines(domTextBetween(cm,fromNode,toNode,fromLine,toLine));var oldText=getBetween(cm.doc,Pos(fromLine,0),Pos(toLine,getLine(cm.doc,toLine).text.length));while(newText.length>1&&oldText.length>1){if(lst(newText)==lst(oldText)){newText.pop();oldText.pop();toLine--}else if(newText[0]==oldText[0]){newText.shift();oldText.shift();fromLine++}else break}var cutFront=0,cutEnd=0;var newTop=newText[0],oldTop=oldText[0],maxCutFront=Math.min(newTop.length,oldTop.length);while(cutFront1||newText[0]||cmp(chFrom,chTo)){replaceRange(cm.doc,newText,chFrom,chTo,"+input");return true}},ensurePolled:function(){this.forceCompositionEnd()},reset:function(){this.forceCompositionEnd()},forceCompositionEnd:function(){if(!this.composing||this.composing.handled)return;this.applyComposition(this.composing);this.composing.handled=true;this.div.blur();this.div.focus()},applyComposition:function(composing){if(this.cm.isReadOnly())operation(this.cm,regChange)(this.cm);else if(composing.data&&composing.data!=composing.startData)operation(this.cm,applyTextInput)(this.cm,composing.data,0,composing.sel)},setUneditable:function(node){node.contentEditable="false"},onKeyPress:function(e){e.preventDefault();if(!this.cm.isReadOnly())operation(this.cm,applyTextInput)(this.cm,String.fromCharCode(e.charCode==null?e.keyCode:e.charCode),0)},readOnlyChanged:function(val){this.div.contentEditable=String(val!="nocursor")},onContextMenu:nothing,resetPosition:nothing,needsContentAttribute:true},ContentEditableInput.prototype);function posToDOM(cm,pos){var view=findViewForLine(cm,pos.line);if(!view||view.hidden)return null;var line=getLine(cm.doc,pos.line);var info=mapFromLineView(view,line,pos.line);var order=getOrder(line),side="left";if(order){var partPos=getBidiPartAt(order,pos.ch);side=partPos%2?"right":"left"}var result=nodeAndOffsetInLineMap(info.map,pos.ch,side);result.offset=result.collapse=="right"?result.end:result.start;return result}function badPos(pos,bad){if(bad)pos.bad=true;return pos}function domToPos(cm,node,offset){var lineNode;if(node==cm.display.lineDiv){lineNode=cm.display.lineDiv.childNodes[offset];if(!lineNode)return badPos(cm.clipPos(Pos(cm.display.viewTo-1)),true);node=null;offset=0}else{for(lineNode=node;;lineNode=lineNode.parentNode){if(!lineNode||lineNode==cm.display.lineDiv)return null;if(lineNode.parentNode&&lineNode.parentNode==cm.display.lineDiv)break}}for(var i=0;i=0&&cmp(pos,range.to())<=0)return i}return-1}};function Range(anchor,head){this.anchor=anchor;this.head=head}Range.prototype={from:function(){return minPos(this.anchor,this.head)},to:function(){return maxPos(this.anchor,this.head)},empty:function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch}};function normalizeSelection(ranges,primIndex){var prim=ranges[primIndex];ranges.sort(function(a,b){return cmp(a.from(),b.from())});primIndex=indexOf(ranges,prim);for(var i=1;i=0){var from=minPos(prev.from(),cur.from()),to=maxPos(prev.to(),cur.to());var inv=prev.empty()?cur.from()==cur.head:prev.from()==prev.head;if(i<=primIndex)--primIndex;ranges.splice(--i,2,new Range(inv?to:from,inv?from:to))}}return new Selection(ranges,primIndex)}function simpleSelection(anchor,head){return new Selection([new Range(anchor,head||anchor)],0)}function clipLine(doc,n){return Math.max(doc.first,Math.min(n,doc.first+doc.size-1))}function clipPos(doc,pos){if(pos.linelast)return Pos(last,getLine(doc,last).text.length);return clipToLen(pos,getLine(doc,pos.line).text.length)}function clipToLen(pos,linelen){var ch=pos.ch;if(ch==null||ch>linelen)return Pos(pos.line,linelen);else if(ch<0)return Pos(pos.line,0);else return pos}function isLine(doc,l){return l>=doc.first&&l=pos.ch:sp.to>pos.ch))){if(mayClear){signal(m,"beforeCursorEnter");if(m.explicitlyCleared){if(!line.markedSpans)break;else{--i;continue}}}if(!m.atomic)continue;if(oldPos){var near=m.find(dir<0?1:-1),diff;if(dir<0?m.inclusiveRight:m.inclusiveLeft)near=movePos(doc,near,-dir,line);if(near&&near.line==pos.line&&(diff=cmp(near,oldPos))&&(dir<0?diff<0:diff>0))return skipAtomicInner(doc,near,pos,dir,mayClear)}var far=m.find(dir<0?-1:1);if(dir<0?m.inclusiveLeft:m.inclusiveRight)far=movePos(doc,far,dir,line);return far?skipAtomicInner(doc,far,pos,dir,mayClear):null}}return pos}function skipAtomic(doc,pos,oldPos,bias,mayClear){var dir=bias||1;var found=skipAtomicInner(doc,pos,oldPos,dir,mayClear)||!mayClear&&skipAtomicInner(doc,pos,oldPos,dir,true)||skipAtomicInner(doc,pos,oldPos,-dir,mayClear)||!mayClear&&skipAtomicInner(doc,pos,oldPos,-dir,true);if(!found){doc.cantEdit=true;return Pos(doc.first,0)}return found}function movePos(doc,pos,dir,line){if(dir<0&&pos.ch==0){if(pos.line>doc.first)return clipPos(doc,Pos(pos.line-1));else return null}else if(dir>0&&pos.ch==(line||getLine(doc,pos.line)).text.length){if(pos.line3){add(left,leftPos.top,null,leftPos.bottom);left=leftSide;if(leftPos.bottomend.bottom||rightPos.bottom==end.bottom&&rightPos.right>end.right)end=rightPos;if(left0)display.blinker=setInterval(function(){display.cursorDiv.style.visibility=(on=!on)?"":"hidden"},cm.options.cursorBlinkRate);else if(cm.options.cursorBlinkRate<0)display.cursorDiv.style.visibility="hidden"}function startWorker(cm,time){if(cm.doc.mode.startState&&cm.doc.frontier=cm.display.viewTo)return;var end=+new Date+cm.options.workTime;var state=copyState(doc.mode,getStateBefore(cm,doc.frontier));var changedLines=[];doc.iter(doc.frontier,Math.min(doc.first+doc.size,cm.display.viewTo+500),function(line){if(doc.frontier>=cm.display.viewFrom){var oldStyles=line.styles,tooLong=line.text.length>cm.options.maxHighlightLength;var highlighted=highlightLine(cm,line,tooLong?copyState(doc.mode,state):state,true);line.styles=highlighted.styles;var oldCls=line.styleClasses,newCls=highlighted.classes;if(newCls)line.styleClasses=newCls;else if(oldCls)line.styleClasses=null;var ischange=!oldStyles||oldStyles.length!=line.styles.length||oldCls!=newCls&&(!oldCls||!newCls||oldCls.bgClass!=newCls.bgClass||oldCls.textClass!=newCls.textClass);for(var i=0;!ischange&&iend){startWorker(cm,cm.options.workDelay);return true}});if(changedLines.length)runInOp(cm,function(){for(var i=0;ilim;--search){
+if(search<=doc.first)return doc.first;var line=getLine(doc,search-1);if(line.stateAfter&&(!precise||search<=doc.frontier))return search;var indented=countColumn(line.text,null,cm.options.tabSize);if(minline==null||minindent>indented){minline=search-1;minindent=indented}}return minline}function getStateBefore(cm,n,precise){var doc=cm.doc,display=cm.display;if(!doc.mode.startState)return true;var pos=findStartLine(cm,n,precise),state=pos>doc.first&&getLine(doc,pos-1).stateAfter;if(!state)state=startState(doc.mode);else state=copyState(doc.mode,state);doc.iter(pos,n,function(line){processLine(cm,line.text,state);var save=pos==n-1||pos%5==0||pos>=display.viewFrom&&pos2)heights.push((cur.bottom+next.top)/2-rect.top)}}heights.push(rect.bottom-rect.top)}}function mapFromLineView(lineView,line,lineN){if(lineView.line==line)return{map:lineView.measure.map,cache:lineView.measure.cache};for(var i=0;ilineN)return{map:lineView.measure.maps[i],cache:lineView.measure.caches[i],before:true}}function updateExternalMeasurement(cm,line){line=visualLine(line);var lineN=lineNo(line);var view=cm.display.externalMeasured=new LineView(cm.doc,line,lineN);view.lineN=lineN;var built=view.built=buildLineContent(cm,view);view.text=built.pre;removeChildrenAndAdd(cm.display.lineMeasure,built.pre);return view}function measureChar(cm,line,ch,bias){return measureCharPrepared(cm,prepareMeasureForLine(cm,line),ch,bias)}function findViewForLine(cm,lineN){if(lineN>=cm.display.viewFrom&&lineN=ext.lineN&&lineNch){end=mEnd-mStart;start=end-1;if(ch>=mEnd)collapse="right"}if(start!=null){node=map[i+2];if(mStart==mEnd&&bias==(node.insertLeft?"left":"right"))collapse=bias;if(bias=="left"&&start==0)while(i&&map[i-2]==map[i-3]&&map[i-1].insertLeft){node=map[(i-=3)+2];collapse="left"}if(bias=="right"&&start==mEnd-mStart)while(i0)collapse=bias="right";var rects;if(cm.options.lineWrapping&&(rects=node.getClientRects()).length>1)rect=rects[bias=="right"?rects.length-1:0];else rect=node.getBoundingClientRect()}if(ie&&ie_version<9&&!start&&(!rect||!rect.left&&!rect.right)){var rSpan=node.parentNode.getClientRects()[0];if(rSpan)rect={left:rSpan.left,right:rSpan.left+charWidth(cm.display),top:rSpan.top,bottom:rSpan.bottom};else rect=nullRect}var rtop=rect.top-prepared.rect.top,rbot=rect.bottom-prepared.rect.top;var mid=(rtop+rbot)/2;var heights=prepared.view.measure.heights;for(var i=0;ipart.from)return get(ch-1);return get(ch,right)}var order=getOrder(lineObj),ch=pos.ch;if(!order)return get(ch);var partPos=getBidiPartAt(order,ch);var val=getBidi(ch,partPos);if(bidiOther!=null)val.other=getBidi(ch,bidiOther);return val}function estimateCoords(cm,pos){var left=0,pos=clipPos(cm.doc,pos);if(!cm.options.lineWrapping)left=charWidth(cm.display)*pos.ch;var lineObj=getLine(cm.doc,pos.line);var top=heightAtLine(lineObj)+paddingTop(cm.display);return{left:left,right:left,top:top,bottom:top+lineObj.height}}function PosWithInfo(line,ch,outside,xRel){var pos=Pos(line,ch);pos.xRel=xRel;if(outside)pos.outside=true;return pos}function coordsChar(cm,x,y){var doc=cm.doc;y+=cm.display.viewOffset;if(y<0)return PosWithInfo(doc.first,0,true,-1);var lineN=lineAtHeight(doc,y),last=doc.first+doc.size-1;if(lineN>last)return PosWithInfo(doc.first+doc.size-1,getLine(doc,last).text.length,true,1);if(x<0)x=0;var lineObj=getLine(doc,lineN);for(;;){var found=coordsCharInner(cm,lineObj,lineN,x,y);var merged=collapsedSpanAtEnd(lineObj);var mergedPos=merged&&merged.find(0,true);if(merged&&(found.ch>mergedPos.from.ch||found.ch==mergedPos.from.ch&&found.xRel>0))lineN=lineNo(lineObj=mergedPos.to.line);else return found}}function coordsCharInner(cm,lineObj,lineNo,x,y){var innerOff=y-heightAtLine(lineObj);var wrongLine=false,adjust=2*cm.display.wrapper.clientWidth;var preparedMeasure=prepareMeasureForLine(cm,lineObj);function getX(ch){var sp=cursorCoords(cm,Pos(lineNo,ch),"line",lineObj,preparedMeasure);wrongLine=true;if(innerOff>sp.bottom)return sp.left-adjust;else if(innerOfftoX)return PosWithInfo(lineNo,to,toOutside,1);for(;;){if(bidi?to==from||to==moveVisually(lineObj,from,1):to-from<=1){var ch=x1?1:0);return pos}var step=Math.ceil(dist/2),middle=from+step;if(bidi){middle=from;for(var i=0;ix){to=middle;toX=middleX;if(toOutside=wrongLine)toX+=1e3;dist=step}else{from=middle;fromX=middleX;fromOutside=wrongLine;dist-=step}}}var measureText;function textHeight(display){if(display.cachedTextHeight!=null)return display.cachedTextHeight;if(measureText==null){measureText=elt("pre");for(var i=0;i<49;++i){measureText.appendChild(document.createTextNode("x"));measureText.appendChild(elt("br"))}measureText.appendChild(document.createTextNode("x"))}removeChildrenAndAdd(display.measure,measureText);var height=measureText.offsetHeight/50;if(height>3)display.cachedTextHeight=height;removeChildren(display.measure);return height||1}function charWidth(display){if(display.cachedCharWidth!=null)return display.cachedCharWidth;var anchor=elt("span","xxxxxxxxxx");var pre=elt("pre",[anchor]);removeChildrenAndAdd(display.measure,pre);var rect=anchor.getBoundingClientRect(),width=(rect.right-rect.left)/10;if(width>2)display.cachedCharWidth=width;return width||10}var operationGroup=null;var nextOpId=0;function startOperation(cm){cm.curOp={cm:cm,viewChanged:false,startHeight:cm.doc.height,forceUpdate:false,updateInput:null,typing:false,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:false,updateMaxLine:false,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:false,id:++nextOpId};if(operationGroup){operationGroup.ops.push(cm.curOp)}else{cm.curOp.ownsGroup=operationGroup={ops:[cm.curOp],delayedCallbacks:[]}}}function fireCallbacksForOps(group){var callbacks=group.delayedCallbacks,i=0;do{for(;i=display.viewTo)||display.maxLineChanged&&cm.options.lineWrapping;op.update=op.mustUpdate&&new DisplayUpdate(cm,op.mustUpdate&&{top:op.scrollTop,ensure:op.scrollToPos},op.forceUpdate)}function endOperation_W1(op){op.updatedDisplay=op.mustUpdate&&updateDisplayIfNeeded(op.cm,op.update)}function endOperation_R2(op){var cm=op.cm,display=cm.display;if(op.updatedDisplay)updateHeightsInViewport(cm);op.barMeasure=measureForScrollbars(cm);if(display.maxLineChanged&&!cm.options.lineWrapping){op.adjustWidthTo=measureChar(cm,display.maxLine,display.maxLine.text.length).left+3;cm.display.sizerWidth=op.adjustWidthTo;op.barMeasure.scrollWidth=Math.max(display.scroller.clientWidth,display.sizer.offsetLeft+op.adjustWidthTo+scrollGap(cm)+cm.display.barWidth);op.maxScrollLeft=Math.max(0,display.sizer.offsetLeft+op.adjustWidthTo-displayWidth(cm))}if(op.updatedDisplay||op.selectionChanged)op.preparedSelection=display.input.prepareSelection()}function endOperation_W2(op){var cm=op.cm;if(op.adjustWidthTo!=null){cm.display.sizer.style.minWidth=op.adjustWidthTo+"px";if(op.maxScrollLeftfrom))display.updateLineNumbers=from;cm.curOp.viewChanged=true;if(from>=display.viewTo){if(sawCollapsedSpans&&visualLineNo(cm.doc,from)display.viewFrom){resetView(cm)}else{display.viewFrom+=lendiff;display.viewTo+=lendiff}}else if(from<=display.viewFrom&&to>=display.viewTo){resetView(cm)}else if(from<=display.viewFrom){var cut=viewCuttingPoint(cm,to,to+lendiff,1);if(cut){display.view=display.view.slice(cut.index);display.viewFrom=cut.lineN;display.viewTo+=lendiff}else{resetView(cm)}}else if(to>=display.viewTo){var cut=viewCuttingPoint(cm,from,from,-1);if(cut){display.view=display.view.slice(0,cut.index);display.viewTo=cut.lineN}else{resetView(cm)}}else{var cutTop=viewCuttingPoint(cm,from,from,-1);var cutBot=viewCuttingPoint(cm,to,to+lendiff,1);if(cutTop&&cutBot){display.view=display.view.slice(0,cutTop.index).concat(buildViewArray(cm,cutTop.lineN,cutBot.lineN)).concat(display.view.slice(cutBot.index));display.viewTo+=lendiff}else{resetView(cm)}}var ext=display.externalMeasured;if(ext){if(to=ext.lineN&&line=display.viewTo)return;var lineView=display.view[findViewIndex(cm,line)];if(lineView.node==null)return;var arr=lineView.changes||(lineView.changes=[]);if(indexOf(arr,type)==-1)arr.push(type)}function resetView(cm){cm.display.viewFrom=cm.display.viewTo=cm.doc.first;cm.display.view=[];cm.display.viewOffset=0}function findViewIndex(cm,n){if(n>=cm.display.viewTo)return null;n-=cm.display.viewFrom;if(n<0)return null;var view=cm.display.view;for(var i=0;i0){if(index==view.length-1)return null;diff=n+view[index].size-oldN;index++}else{diff=n-oldN}oldN+=diff;newN+=diff}while(visualLineNo(cm.doc,newN)!=newN){if(index==(dir<0?0:view.length-1))return null;newN+=dir*view[index-(dir<0?1:0)].size;index+=dir}return{index:index,lineN:newN}}function adjustView(cm,from,to){var display=cm.display,view=display.view;if(view.length==0||from>=display.viewTo||to<=display.viewFrom){display.view=buildViewArray(cm,from,to);display.viewFrom=from}else{if(display.viewFrom>from)display.view=buildViewArray(cm,from,display.viewFrom).concat(display.view);else if(display.viewFromto)display.view=display.view.slice(0,findViewIndex(cm,to))}display.viewTo=to}function countDirtyView(cm){var view=cm.display.view,dirty=0;for(var i=0;i20*20}on(d.scroller,"touchstart",function(e){if(!signalDOMEvent(cm,e)&&!isMouseLikeTouchEvent(e)){clearTimeout(touchFinished);var now=+new Date;d.activeTouch={start:now,moved:false,prev:now-prevTouch.end<=300?prevTouch:null};if(e.touches.length==1){d.activeTouch.left=e.touches[0].pageX;d.activeTouch.top=e.touches[0].pageY}}});on(d.scroller,"touchmove",function(){if(d.activeTouch)d.activeTouch.moved=true});on(d.scroller,"touchend",function(e){var touch=d.activeTouch;if(touch&&!eventInWidget(d,e)&&touch.left!=null&&!touch.moved&&new Date-touch.start<300){var pos=cm.coordsChar(d.activeTouch,"page"),range;if(!touch.prev||farAway(touch,touch.prev))range=new Range(pos,pos);else if(!touch.prev.prev||farAway(touch,touch.prev.prev))range=cm.findWordAt(pos);else range=new Range(Pos(pos.line,0),clipPos(cm.doc,Pos(pos.line+1,0)));cm.setSelection(range.anchor,range.head);cm.focus();e_preventDefault(e)}finishTouch()});on(d.scroller,"touchcancel",finishTouch);on(d.scroller,"scroll",function(){if(d.scroller.clientHeight){setScrollTop(cm,d.scroller.scrollTop);setScrollLeft(cm,d.scroller.scrollLeft,true);signal(cm,"scroll",cm)}});on(d.scroller,"mousewheel",function(e){onScrollWheel(cm,e)});on(d.scroller,"DOMMouseScroll",function(e){onScrollWheel(cm,e)});on(d.wrapper,"scroll",function(){d.wrapper.scrollTop=d.wrapper.scrollLeft=0});d.dragFunctions={enter:function(e){if(!signalDOMEvent(cm,e))e_stop(e)},over:function(e){if(!signalDOMEvent(cm,e)){onDragOver(cm,e);e_stop(e)}},start:function(e){onDragStart(cm,e)},drop:operation(cm,onDrop),leave:function(){clearDragCursor(cm)}};var inp=d.input.getField();on(inp,"keyup",function(e){onKeyUp.call(cm,e)});on(inp,"keydown",operation(cm,onKeyDown));on(inp,"keypress",operation(cm,onKeyPress));on(inp,"focus",bind(onFocus,cm));on(inp,"blur",bind(onBlur,cm))}function dragDropChanged(cm,value,old){var wasOn=old&&old!=CodeMirror.Init;if(!value!=!wasOn){var funcs=cm.display.dragFunctions;var toggle=value?on:off;toggle(cm.display.scroller,"dragstart",funcs.start);toggle(cm.display.scroller,"dragenter",funcs.enter);toggle(cm.display.scroller,"dragover",funcs.over);toggle(cm.display.scroller,"dragleave",funcs.leave);toggle(cm.display.scroller,"drop",funcs.drop)}}function onResize(cm){var d=cm.display;if(d.lastWrapHeight==d.wrapper.clientHeight&&d.lastWrapWidth==d.wrapper.clientWidth)return;d.cachedCharWidth=d.cachedTextHeight=d.cachedPaddingH=null;d.scrollbarsClipped=false;cm.setSize()}function eventInWidget(display,e){for(var n=e_target(e);n!=display.wrapper;n=n.parentNode){if(!n||n.nodeType==1&&n.getAttribute("cm-ignore-events")=="true"||n.parentNode==display.sizer&&n!=display.mover)return true}}function posFromMouse(cm,e,liberal,forRect){var display=cm.display;if(!liberal&&e_target(e).getAttribute("cm-not-content")=="true")return null;var x,y,space=display.lineSpace.getBoundingClientRect();try{x=e.clientX-space.left;y=e.clientY-space.top}catch(e){return null}var coords=coordsChar(cm,x,y),line;if(forRect&&coords.xRel==1&&(line=getLine(cm.doc,coords.line).text).length==coords.ch){var colDiff=countColumn(line,line.length,cm.options.tabSize)-line.length;coords=Pos(coords.line,Math.max(0,Math.round((x-paddingH(cm.display).left)/charWidth(cm.display))-colDiff))}return coords}function onMouseDown(e){var cm=this,display=cm.display;if(signalDOMEvent(cm,e)||display.activeTouch&&display.input.supportsTouch())return;display.shift=e.shiftKey;if(eventInWidget(display,e)){if(!webkit){display.scroller.draggable=false;setTimeout(function(){display.scroller.draggable=true},100)}return}if(clickInGutter(cm,e))return;var start=posFromMouse(cm,e);window.focus();switch(e_button(e)){case 1:if(cm.state.selectingText)cm.state.selectingText(e);else if(start)leftButtonDown(cm,e,start);else if(e_target(e)==display.scroller)e_preventDefault(e);break;case 2:if(webkit)cm.state.lastMiddleDown=+new Date;if(start)extendSelection(cm.doc,start);setTimeout(function(){display.input.focus()},20);e_preventDefault(e);break;case 3:if(captureRightClick)onContextMenu(cm,e);else delayBlurEvent(cm);break}}var lastClick,lastDoubleClick;function leftButtonDown(cm,e,start){if(ie)setTimeout(bind(ensureFocus,cm),0);else cm.curOp.focus=activeElt();var now=+new Date,type;if(lastDoubleClick&&lastDoubleClick.time>now-400&&cmp(lastDoubleClick.pos,start)==0){type="triple"}else if(lastClick&&lastClick.time>now-400&&cmp(lastClick.pos,start)==0){type="double";lastDoubleClick={time:now,pos:start}}else{type="single";lastClick={time:now,pos:start}}var sel=cm.doc.sel,modifier=mac?e.metaKey:e.ctrlKey,contained;if(cm.options.dragDrop&&dragAndDrop&&!cm.isReadOnly()&&type=="single"&&(contained=sel.contains(start))>-1&&(cmp((contained=sel.ranges[contained]).from(),start)<0||start.xRel>0)&&(cmp(contained.to(),start)>0||start.xRel<0))leftButtonStartDrag(cm,e,start,modifier);else leftButtonSelect(cm,e,start,type,modifier)}function leftButtonStartDrag(cm,e,start,modifier){var display=cm.display,startTime=+new Date;var dragEnd=operation(cm,function(e2){if(webkit)display.scroller.draggable=false;cm.state.draggingText=false;off(document,"mouseup",dragEnd);off(display.scroller,"drop",dragEnd);if(Math.abs(e.clientX-e2.clientX)+Math.abs(e.clientY-e2.clientY)<10){e_preventDefault(e2);if(!modifier&&+new Date-200-1)ourRange=ranges[ourIndex];else ourRange=new Range(start,start)}else{ourRange=doc.sel.primary();ourIndex=doc.sel.primIndex}if(e.altKey){type="rect";if(!addNew)ourRange=new Range(start,start);start=posFromMouse(cm,e,true,true);ourIndex=-1}else if(type=="double"){var word=cm.findWordAt(start);if(cm.display.shift||doc.extend)ourRange=extendRange(doc,ourRange,word.anchor,word.head);else ourRange=word}else if(type=="triple"){var line=new Range(Pos(start.line,0),clipPos(doc,Pos(start.line+1,0)));if(cm.display.shift||doc.extend)ourRange=extendRange(doc,ourRange,line.anchor,line.head);else ourRange=line}else{ourRange=extendRange(doc,ourRange,start)}if(!addNew){ourIndex=0;setSelection(doc,new Selection([ourRange],0),sel_mouse);startSel=doc.sel}else if(ourIndex==-1){ourIndex=ranges.length;setSelection(doc,normalizeSelection(ranges.concat([ourRange]),ourIndex),{scroll:false,origin:"*mouse"})}else if(ranges.length>1&&ranges[ourIndex].empty()&&type=="single"&&!e.shiftKey){setSelection(doc,normalizeSelection(ranges.slice(0,ourIndex).concat(ranges.slice(ourIndex+1)),0),{scroll:false,origin:"*mouse"});startSel=doc.sel}else{replaceOneSelection(doc,ourIndex,ourRange,sel_mouse)}var lastPos=start;function extendTo(pos){if(cmp(lastPos,pos)==0)return;lastPos=pos;if(type=="rect"){var ranges=[],tabSize=cm.options.tabSize;var startCol=countColumn(getLine(doc,start.line).text,start.ch,tabSize);var posCol=countColumn(getLine(doc,pos.line).text,pos.ch,tabSize);var left=Math.min(startCol,posCol),right=Math.max(startCol,posCol);for(var line=Math.min(start.line,pos.line),end=Math.min(cm.lastLine(),Math.max(start.line,pos.line));line<=end;line++){var text=getLine(doc,line).text,leftPos=findColumn(text,left,tabSize);if(left==right)ranges.push(new Range(Pos(line,leftPos),Pos(line,leftPos)));else if(text.length>leftPos)ranges.push(new Range(Pos(line,leftPos),Pos(line,findColumn(text,right,tabSize))))}if(!ranges.length)ranges.push(new Range(start,start));setSelection(doc,normalizeSelection(startSel.ranges.slice(0,ourIndex).concat(ranges),ourIndex),{origin:"*mouse",scroll:false});cm.scrollIntoView(pos)}else{var oldRange=ourRange;var anchor=oldRange.anchor,head=pos;if(type!="single"){if(type=="double")var range=cm.findWordAt(pos);else var range=new Range(Pos(pos.line,0),clipPos(doc,Pos(pos.line+1,0)));if(cmp(range.anchor,anchor)>0){
+head=range.head;anchor=minPos(oldRange.from(),range.anchor)}else{head=range.anchor;anchor=maxPos(oldRange.to(),range.head)}}var ranges=startSel.ranges.slice(0);ranges[ourIndex]=new Range(clipPos(doc,anchor),head);setSelection(doc,normalizeSelection(ranges,ourIndex),sel_mouse)}}var editorSize=display.wrapper.getBoundingClientRect();var counter=0;function extend(e){var curCount=++counter;var cur=posFromMouse(cm,e,true,type=="rect");if(!cur)return;if(cmp(cur,lastPos)!=0){cm.curOp.focus=activeElt();extendTo(cur);var visible=visibleLines(display,doc);if(cur.line>=visible.to||cur.lineeditorSize.bottom?20:0;if(outside)setTimeout(operation(cm,function(){if(counter!=curCount)return;display.scroller.scrollTop+=outside;extend(e)}),50)}}function done(e){cm.state.selectingText=false;counter=Infinity;e_preventDefault(e);display.input.focus();off(document,"mousemove",move);off(document,"mouseup",up);doc.history.lastSelOrigin=null}var move=operation(cm,function(e){if(!e_button(e))done(e);else extend(e)});var up=operation(cm,done);cm.state.selectingText=up;on(document,"mousemove",move);on(document,"mouseup",up)}function gutterEvent(cm,e,type,prevent){try{var mX=e.clientX,mY=e.clientY}catch(e){return false}if(mX>=Math.floor(cm.display.gutters.getBoundingClientRect().right))return false;if(prevent)e_preventDefault(e);var display=cm.display;var lineBox=display.lineDiv.getBoundingClientRect();if(mY>lineBox.bottom||!hasHandler(cm,type))return e_defaultPrevented(e);mY-=lineBox.top-display.viewOffset;for(var i=0;i=mX){var line=lineAtHeight(cm.doc,mY);var gutter=cm.options.gutters[i];signal(cm,type,cm,line,gutter,e);return e_defaultPrevented(e)}}}function clickInGutter(cm,e){return gutterEvent(cm,e,"gutterClick",true)}var lastDrop=0;function onDrop(e){var cm=this;clearDragCursor(cm);if(signalDOMEvent(cm,e)||eventInWidget(cm.display,e))return;e_preventDefault(e);if(ie)lastDrop=+new Date;var pos=posFromMouse(cm,e,true),files=e.dataTransfer.files;if(!pos||cm.isReadOnly())return;if(files&&files.length&&window.FileReader&&window.File){var n=files.length,text=Array(n),read=0;var loadFile=function(file,i){if(cm.options.allowDropFileTypes&&indexOf(cm.options.allowDropFileTypes,file.type)==-1)return;var reader=new FileReader;reader.onload=operation(cm,function(){var content=reader.result;if(/[\x00-\x08\x0e-\x1f]{2}/.test(content))content="";text[i]=content;if(++read==n){pos=clipPos(cm.doc,pos);var change={from:pos,to:pos,text:cm.doc.splitLines(text.join(cm.doc.lineSeparator())),origin:"paste"};makeChange(cm.doc,change);setSelectionReplaceHistory(cm.doc,simpleSelection(pos,changeEnd(change)))}});reader.readAsText(file)};for(var i=0;i-1){cm.state.draggingText(e);setTimeout(function(){cm.display.input.focus()},20);return}try{var text=e.dataTransfer.getData("Text");if(text){if(cm.state.draggingText&&!(mac?e.altKey:e.ctrlKey))var selected=cm.listSelections();setSelectionNoUndo(cm.doc,simpleSelection(pos,pos));if(selected)for(var i=0;iscroll.clientWidth;var canScrollY=scroll.scrollHeight>scroll.clientHeight;if(!(dx&&canScrollX||dy&&canScrollY))return;if(dy&&mac&&webkit){outer:for(var cur=e.target,view=display.view;cur!=scroll;cur=cur.parentNode){for(var i=0;i=0;--i)makeChangeInner(doc,{from:split[i].from,to:split[i].to,text:i?[""]:change.text})}else{makeChangeInner(doc,change)}}function makeChangeInner(doc,change){if(change.text.length==1&&change.text[0]==""&&cmp(change.from,change.to)==0)return;var selAfter=computeSelAfterChange(doc,change);addChangeToHistory(doc,change,selAfter,doc.cm?doc.cm.curOp.id:NaN);makeChangeSingleDoc(doc,change,selAfter,stretchSpansOverChange(doc,change));var rebased=[];linkedDocs(doc,function(doc,sharedHist){if(!sharedHist&&indexOf(rebased,doc.history)==-1){rebaseHist(doc.history,change);rebased.push(doc.history)}makeChangeSingleDoc(doc,change,null,stretchSpansOverChange(doc,change))})}function makeChangeFromHistory(doc,type,allowSelectionOnly){if(doc.cm&&doc.cm.state.suppressEdits)return;var hist=doc.history,event,selAfter=doc.sel;var source=type=="undo"?hist.done:hist.undone,dest=type=="undo"?hist.undone:hist.done;for(var i=0;i=0;--i){var change=event.changes[i];change.origin=type;if(filter&&!filterChange(doc,change,false)){source.length=0;return}antiChanges.push(historyChangeFromChange(doc,change));var after=i?computeSelAfterChange(doc,change):lst(source);makeChangeSingleDoc(doc,change,after,mergeOldSpans(doc,change));if(!i&&doc.cm)doc.cm.scrollIntoView({from:change.from,to:changeEnd(change)});var rebased=[];linkedDocs(doc,function(doc,sharedHist){if(!sharedHist&&indexOf(rebased,doc.history)==-1){rebaseHist(doc.history,change);rebased.push(doc.history)}makeChangeSingleDoc(doc,change,null,mergeOldSpans(doc,change))})}}function shiftDoc(doc,distance){if(distance==0)return;doc.first+=distance;doc.sel=new Selection(map(doc.sel.ranges,function(range){return new Range(Pos(range.anchor.line+distance,range.anchor.ch),Pos(range.head.line+distance,range.head.ch))}),doc.sel.primIndex);if(doc.cm){regChange(doc.cm,doc.first,doc.first-distance,distance);for(var d=doc.cm.display,l=d.viewFrom;ldoc.lastLine())return;if(change.from.linelast){change={from:change.from,to:Pos(last,getLine(doc,last).text.length),text:[change.text[0]],origin:change.origin}}change.removed=getBetween(doc,change.from,change.to);if(!selAfter)selAfter=computeSelAfterChange(doc,change);if(doc.cm)makeChangeSingleDocInEditor(doc.cm,change,spans);else updateDoc(doc,change,spans);setSelectionNoUndo(doc,selAfter,sel_dontScroll)}function makeChangeSingleDocInEditor(cm,change,spans){var doc=cm.doc,display=cm.display,from=change.from,to=change.to;var recomputeMaxLength=false,checkWidthStart=from.line;if(!cm.options.lineWrapping){checkWidthStart=lineNo(visualLine(getLine(doc,from.line)));doc.iter(checkWidthStart,to.line+1,function(line){if(line==display.maxLine){recomputeMaxLength=true;return true}})}if(doc.sel.contains(change.from,change.to)>-1)signalCursorActivity(cm);updateDoc(doc,change,spans,estimateHeight(cm));if(!cm.options.lineWrapping){doc.iter(checkWidthStart,from.line+change.text.length,function(line){var len=lineLength(line);if(len>display.maxLineLength){display.maxLine=line;display.maxLineLength=len;display.maxLineChanged=true;recomputeMaxLength=false}});if(recomputeMaxLength)cm.curOp.updateMaxLine=true}doc.frontier=Math.min(doc.frontier,from.line);startWorker(cm,400);var lendiff=change.text.length-(to.line-from.line)-1;if(change.full)regChange(cm);else if(from.line==to.line&&change.text.length==1&&!isWholeLineUpdate(cm.doc,change))regLineChange(cm,from.line,"text");else regChange(cm,from.line,to.line+1,lendiff);var changesHandler=hasHandler(cm,"changes"),changeHandler=hasHandler(cm,"change");if(changeHandler||changesHandler){var obj={from:from,to:to,text:change.text,removed:change.removed,origin:change.origin};if(changeHandler)signalLater(cm,"change",cm,obj);if(changesHandler)(cm.curOp.changeObjs||(cm.curOp.changeObjs=[])).push(obj)}cm.display.selForContextMenu=null}function replaceRange(doc,code,from,to,origin){if(!to)to=from;if(cmp(to,from)<0){var tmp=to;to=from;from=tmp}if(typeof code=="string")code=doc.splitLines(code);makeChange(doc,{from:from,to:to,text:code,origin:origin})}function maybeScrollWindow(cm,coords){if(signalDOMEvent(cm,"scrollCursorIntoView"))return;var display=cm.display,box=display.sizer.getBoundingClientRect(),doScroll=null;if(coords.top+box.top<0)doScroll=true;else if(coords.bottom+box.top>(window.innerHeight||document.documentElement.clientHeight))doScroll=false;if(doScroll!=null&&!phantom){var scrollNode=elt("div","",null,"position: absolute; top: "+(coords.top-display.viewOffset-paddingTop(cm.display))+"px; height: "+(coords.bottom-coords.top+scrollGap(cm)+display.barHeight)+"px; left: "+coords.left+"px; width: 2px;");cm.display.lineSpace.appendChild(scrollNode);scrollNode.scrollIntoView(doScroll);cm.display.lineSpace.removeChild(scrollNode)}}function scrollPosIntoView(cm,pos,end,margin){if(margin==null)margin=0;for(var limit=0;limit<5;limit++){var changed=false,coords=cursorCoords(cm,pos);var endCoords=!end||end==pos?coords:cursorCoords(cm,end);var scrollPos=calculateScrollPos(cm,Math.min(coords.left,endCoords.left),Math.min(coords.top,endCoords.top)-margin,Math.max(coords.left,endCoords.left),Math.max(coords.bottom,endCoords.bottom)+margin);var startTop=cm.doc.scrollTop,startLeft=cm.doc.scrollLeft;if(scrollPos.scrollTop!=null){setScrollTop(cm,scrollPos.scrollTop);if(Math.abs(cm.doc.scrollTop-startTop)>1)changed=true}if(scrollPos.scrollLeft!=null){setScrollLeft(cm,scrollPos.scrollLeft);if(Math.abs(cm.doc.scrollLeft-startLeft)>1)changed=true}if(!changed)break}return coords}function scrollIntoView(cm,x1,y1,x2,y2){var scrollPos=calculateScrollPos(cm,x1,y1,x2,y2);if(scrollPos.scrollTop!=null)setScrollTop(cm,scrollPos.scrollTop);if(scrollPos.scrollLeft!=null)setScrollLeft(cm,scrollPos.scrollLeft)}function calculateScrollPos(cm,x1,y1,x2,y2){var display=cm.display,snapMargin=textHeight(cm.display);if(y1<0)y1=0;var screentop=cm.curOp&&cm.curOp.scrollTop!=null?cm.curOp.scrollTop:display.scroller.scrollTop;var screen=displayHeight(cm),result={};if(y2-y1>screen)y2=y1+screen;var docBottom=cm.doc.height+paddingVert(display);var atTop=y1docBottom-snapMargin;if(y1screentop+screen){var newTop=Math.min(y1,(atBottom?docBottom:y2)-screen);if(newTop!=screentop)result.scrollTop=newTop}var screenleft=cm.curOp&&cm.curOp.scrollLeft!=null?cm.curOp.scrollLeft:display.scroller.scrollLeft;var screenw=displayWidth(cm)-(cm.options.fixedGutter?display.gutters.offsetWidth:0);var tooWide=x2-x1>screenw;if(tooWide)x2=x1+screenw;if(x1<10)result.scrollLeft=0;else if(x1screenw+screenleft-3)result.scrollLeft=x2+(tooWide?0:10)-screenw;return result}function addToScrollPos(cm,left,top){if(left!=null||top!=null)resolveScrollToPos(cm);if(left!=null)cm.curOp.scrollLeft=(cm.curOp.scrollLeft==null?cm.doc.scrollLeft:cm.curOp.scrollLeft)+left;if(top!=null)cm.curOp.scrollTop=(cm.curOp.scrollTop==null?cm.doc.scrollTop:cm.curOp.scrollTop)+top}function ensureCursorVisible(cm){resolveScrollToPos(cm);var cur=cm.getCursor(),from=cur,to=cur;if(!cm.options.lineWrapping){from=cur.ch?Pos(cur.line,cur.ch-1):cur;to=Pos(cur.line,cur.ch+1)}cm.curOp.scrollToPos={from:from,to:to,margin:cm.options.cursorScrollMargin,isCursor:true}}function resolveScrollToPos(cm){var range=cm.curOp.scrollToPos;if(range){cm.curOp.scrollToPos=null;var from=estimateCoords(cm,range.from),to=estimateCoords(cm,range.to);var sPos=calculateScrollPos(cm,Math.min(from.left,to.left),Math.min(from.top,to.top)-range.margin,Math.max(from.right,to.right),Math.max(from.bottom,to.bottom)+range.margin);cm.scrollTo(sPos.scrollLeft,sPos.scrollTop)}}function indentLine(cm,n,how,aggressive){var doc=cm.doc,state;if(how==null)how="add";if(how=="smart"){if(!doc.mode.indent)how="prev";else state=getStateBefore(cm,n)}var tabSize=cm.options.tabSize;var line=getLine(doc,n),curSpace=countColumn(line.text,null,tabSize);if(line.stateAfter)line.stateAfter=null;var curSpaceString=line.text.match(/^\s*/)[0],indentation;if(!aggressive&&!/\S/.test(line.text)){indentation=0;how="not"}else if(how=="smart"){indentation=doc.mode.indent(state,line.text.slice(curSpaceString.length),line.text);if(indentation==Pass||indentation>150){if(!aggressive)return;how="prev"}}if(how=="prev"){if(n>doc.first)indentation=countColumn(getLine(doc,n-1).text,null,tabSize);else indentation=0}else if(how=="add"){indentation=curSpace+cm.options.indentUnit}else if(how=="subtract"){indentation=curSpace-cm.options.indentUnit}else if(typeof how=="number"){indentation=curSpace+how}indentation=Math.max(0,indentation);var indentString="",pos=0;if(cm.options.indentWithTabs)for(var i=Math.floor(indentation/tabSize);i;--i){pos+=tabSize;indentString+="\t"}if(pos=0;i--)replaceRange(cm.doc,"",kill[i].from,kill[i].to,"+delete");ensureCursorVisible(cm)})}function findPosH(doc,pos,dir,unit,visually){var line=pos.line,ch=pos.ch,origDir=dir;var lineObj=getLine(doc,line);function findNextLine(){var l=line+dir;if(l=doc.first+doc.size)return false;line=l;return lineObj=getLine(doc,l)}function moveOnce(boundToLine){var next=(visually?moveVisually:moveLogically)(lineObj,ch,dir,true);if(next==null){if(!boundToLine&&findNextLine()){if(visually)ch=(dir<0?lineRight:lineLeft)(lineObj);else ch=dir<0?lineObj.text.length:0}else return false}else ch=next;return true}if(unit=="char"){moveOnce()}else if(unit=="column"){moveOnce(true)}else if(unit=="word"||unit=="group"){var sawType=null,group=unit=="group";var helper=doc.cm&&doc.cm.getHelper(pos,"wordChars");for(var first=true;;first=false){if(dir<0&&!moveOnce(!first))break;var cur=lineObj.text.charAt(ch)||"\n";var type=isWordChar(cur,helper)?"w":group&&cur=="\n"?"n":!group||/\s/.test(cur)?null:"p";if(group&&!first&&!type)type="s";if(sawType&&sawType!=type){if(dir<0){dir=1;moveOnce()}break}if(type)sawType=type;if(dir>0&&!moveOnce(!first))break}}var result=skipAtomic(doc,Pos(line,ch),pos,origDir,true);if(!cmp(pos,result))result.hitSide=true;return result}function findPosV(cm,pos,dir,unit){var doc=cm.doc,x=pos.left,y;if(unit=="page"){var pageSize=Math.min(cm.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight);y=pos.top+dir*(pageSize-(dir<0?1.5:.5)*textHeight(cm.display))}else if(unit=="line"){y=dir>0?pos.bottom+3:pos.top-3}for(;;){var target=coordsChar(cm,x,y);if(!target.outside)break;if(dir<0?y<=0:y>=doc.height){target.hitSide=true;break}y+=dir*5}return target}CodeMirror.prototype={constructor:CodeMirror,focus:function(){window.focus();this.display.input.focus()},setOption:function(option,value){var options=this.options,old=options[option];if(options[option]==value&&option!="mode")return;options[option]=value;if(optionHandlers.hasOwnProperty(option))operation(this,optionHandlers[option])(this,value,old)},getOption:function(option){return this.options[option]},getDoc:function(){return this.doc},addKeyMap:function(map,bottom){this.state.keyMaps[bottom?"push":"unshift"](getKeyMap(map))},removeKeyMap:function(map){var maps=this.state.keyMaps;for(var i=0;i0)replaceOneSelection(this.doc,i,new Range(from,newRanges[i].to()),sel_dontScroll)}else if(range.head.line>end){indentLine(this,range.head.line,how,true);end=range.head.line;if(i==this.doc.sel.primIndex)ensureCursorVisible(this)}}}),getTokenAt:function(pos,precise){return takeToken(this,pos,precise)},getLineTokens:function(line,precise){return takeToken(this,Pos(line),precise,true)},getTokenTypeAt:function(pos){pos=clipPos(this.doc,pos);var styles=getLineStyles(this,getLine(this.doc,pos.line));var before=0,after=(styles.length-1)/2,ch=pos.ch;var type;if(ch==0)type=styles[2];else for(;;){var mid=before+after>>1;if((mid?styles[mid*2-1]:0)>=ch)after=mid;else if(styles[mid*2+1]last){line=last;end=true}lineObj=getLine(this.doc,line)}else{lineObj=line}return intoCoordSystem(this,lineObj,{top:0,left:0},mode||"page").top+(end?this.doc.height-heightAtLine(lineObj):0)},defaultTextHeight:function(){return textHeight(this.display)},defaultCharWidth:function(){return charWidth(this.display)},setGutterMarker:methodOp(function(line,gutterID,value){return changeLine(this.doc,line,"gutter",function(line){var markers=line.gutterMarkers||(line.gutterMarkers={});markers[gutterID]=value;if(!value&&isEmpty(markers))line.gutterMarkers=null;return true})}),clearGutter:methodOp(function(gutterID){var cm=this,doc=cm.doc,i=doc.first;doc.iter(function(line){
+if(line.gutterMarkers&&line.gutterMarkers[gutterID]){line.gutterMarkers[gutterID]=null;regLineChange(cm,i,"gutter");if(isEmpty(line.gutterMarkers))line.gutterMarkers=null}++i})}),lineInfo:function(line){if(typeof line=="number"){if(!isLine(this.doc,line))return null;var n=line;line=getLine(this.doc,line);if(!line)return null}else{var n=lineNo(line);if(n==null)return null}return{line:n,handle:line,text:line.text,gutterMarkers:line.gutterMarkers,textClass:line.textClass,bgClass:line.bgClass,wrapClass:line.wrapClass,widgets:line.widgets}},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(pos,node,scroll,vert,horiz){var display=this.display;pos=cursorCoords(this,clipPos(this.doc,pos));var top=pos.bottom,left=pos.left;node.style.position="absolute";node.setAttribute("cm-ignore-events","true");this.display.input.setUneditable(node);display.sizer.appendChild(node);if(vert=="over"){top=pos.top}else if(vert=="above"||vert=="near"){var vspace=Math.max(display.wrapper.clientHeight,this.doc.height),hspace=Math.max(display.sizer.clientWidth,display.lineSpace.clientWidth);if((vert=="above"||pos.bottom+node.offsetHeight>vspace)&&pos.top>node.offsetHeight)top=pos.top-node.offsetHeight;else if(pos.bottom+node.offsetHeight<=vspace)top=pos.bottom;if(left+node.offsetWidth>hspace)left=hspace-node.offsetWidth}node.style.top=top+"px";node.style.left=node.style.right="";if(horiz=="right"){left=display.sizer.clientWidth-node.offsetWidth;node.style.right="0px"}else{if(horiz=="left")left=0;else if(horiz=="middle")left=(display.sizer.clientWidth-node.offsetWidth)/2;node.style.left=left+"px"}if(scroll)scrollIntoView(this,left,top,left+node.offsetWidth,top+node.offsetHeight)},triggerOnKeyDown:methodOp(onKeyDown),triggerOnKeyPress:methodOp(onKeyPress),triggerOnKeyUp:onKeyUp,execCommand:function(cmd){if(commands.hasOwnProperty(cmd))return commands[cmd].call(null,this)},triggerElectric:methodOp(function(text){triggerElectric(this,text)}),findPosH:function(from,amount,unit,visually){var dir=1;if(amount<0){dir=-1;amount=-amount}for(var i=0,cur=clipPos(this.doc,from);i0&&check(line.charAt(start-1)))--start;while(end.5)estimateLineHeights(this);signal(this,"refresh",this)}),swapDoc:methodOp(function(doc){var old=this.doc;old.cm=null;attachDoc(this,doc);clearCaches(this);this.display.input.reset();this.scrollTo(doc.scrollLeft,doc.scrollTop);this.curOp.forceScroll=true;signalLater(this,"swapDoc",this,old);return old}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}};eventMixin(CodeMirror);var defaults=CodeMirror.defaults={};var optionHandlers=CodeMirror.optionHandlers={};function option(name,deflt,handle,notOnInit){CodeMirror.defaults[name]=deflt;if(handle)optionHandlers[name]=notOnInit?function(cm,val,old){if(old!=Init)handle(cm,val,old)}:handle}var Init=CodeMirror.Init={toString:function(){return"CodeMirror.Init"}};option("value","",function(cm,val){cm.setValue(val)},true);option("mode",null,function(cm,val){cm.doc.modeOption=val;loadMode(cm)},true);option("indentUnit",2,loadMode,true);option("indentWithTabs",false);option("smartIndent",true);option("tabSize",4,function(cm){resetModeState(cm);clearCaches(cm);regChange(cm)},true);option("lineSeparator",null,function(cm,val){cm.doc.lineSep=val;if(!val)return;var newBreaks=[],lineNo=cm.doc.first;cm.doc.iter(function(line){for(var pos=0;;){var found=line.text.indexOf(val,pos);if(found==-1)break;pos=found+val.length;newBreaks.push(Pos(lineNo,found))}lineNo++});for(var i=newBreaks.length-1;i>=0;i--)replaceRange(cm.doc,val,newBreaks[i],Pos(newBreaks[i].line,newBreaks[i].ch+val.length))});option("specialChars",/[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g,function(cm,val,old){cm.state.specialChars=new RegExp(val.source+(val.test("\t")?"":"|\t"),"g");if(old!=CodeMirror.Init)cm.refresh()});option("specialCharPlaceholder",defaultSpecialCharPlaceholder,function(cm){cm.refresh()},true);option("electricChars",true);option("inputStyle",mobile?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},true);option("rtlMoveVisually",!windows);option("wholeLineUpdateBefore",true);option("theme","default",function(cm){themeChanged(cm);guttersChanged(cm)},true);option("keyMap","default",function(cm,val,old){var next=getKeyMap(val);var prev=old!=CodeMirror.Init&&getKeyMap(old);if(prev&&prev.detach)prev.detach(cm,next);if(next.attach)next.attach(cm,prev||null)});option("extraKeys",null);option("lineWrapping",false,wrappingChanged,true);option("gutters",[],function(cm){setGuttersForLineNumbers(cm.options);guttersChanged(cm)},true);option("fixedGutter",true,function(cm,val){cm.display.gutters.style.left=val?compensateForHScroll(cm.display)+"px":"0";cm.refresh()},true);option("coverGutterNextToScrollbar",false,function(cm){updateScrollbars(cm)},true);option("scrollbarStyle","native",function(cm){initScrollbars(cm);updateScrollbars(cm);cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft)},true);option("lineNumbers",false,function(cm){setGuttersForLineNumbers(cm.options);guttersChanged(cm)},true);option("firstLineNumber",1,guttersChanged,true);option("lineNumberFormatter",function(integer){return integer},guttersChanged,true);option("showCursorWhenSelecting",false,updateSelection,true);option("resetSelectionOnContextMenu",true);option("lineWiseCopyCut",true);option("readOnly",false,function(cm,val){if(val=="nocursor"){onBlur(cm);cm.display.input.blur();cm.display.disabled=true}else{cm.display.disabled=false}cm.display.input.readOnlyChanged(val)});option("disableInput",false,function(cm,val){if(!val)cm.display.input.reset()},true);option("dragDrop",true,dragDropChanged);option("allowDropFileTypes",null);option("cursorBlinkRate",530);option("cursorScrollMargin",0);option("cursorHeight",1,updateSelection,true);option("singleCursorHeightPerLine",true,updateSelection,true);option("workTime",100);option("workDelay",100);option("flattenSpans",true,resetModeState,true);option("addModeClass",false,resetModeState,true);option("pollInterval",100);option("undoDepth",200,function(cm,val){cm.doc.history.undoDepth=val});option("historyEventDelay",1250);option("viewportMargin",10,function(cm){cm.refresh()},true);option("maxHighlightLength",1e4,resetModeState,true);option("moveInputWithCursor",true,function(cm,val){if(!val)cm.display.input.resetPosition()});option("tabindex",null,function(cm,val){cm.display.input.getField().tabIndex=val||""});option("autofocus",null);var modes=CodeMirror.modes={},mimeModes=CodeMirror.mimeModes={};CodeMirror.defineMode=function(name,mode){if(!CodeMirror.defaults.mode&&name!="null")CodeMirror.defaults.mode=name;if(arguments.length>2)mode.dependencies=Array.prototype.slice.call(arguments,2);modes[name]=mode};CodeMirror.defineMIME=function(mime,spec){mimeModes[mime]=spec};CodeMirror.resolveMode=function(spec){if(typeof spec=="string"&&mimeModes.hasOwnProperty(spec)){spec=mimeModes[spec]}else if(spec&&typeof spec.name=="string"&&mimeModes.hasOwnProperty(spec.name)){var found=mimeModes[spec.name];if(typeof found=="string")found={name:found};spec=createObj(found,spec);spec.name=found.name}else if(typeof spec=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(spec)){return CodeMirror.resolveMode("application/xml")}if(typeof spec=="string")return{name:spec};else return spec||{name:"null"}};CodeMirror.getMode=function(options,spec){var spec=CodeMirror.resolveMode(spec);var mfactory=modes[spec.name];if(!mfactory)return CodeMirror.getMode(options,"text/plain");var modeObj=mfactory(options,spec);if(modeExtensions.hasOwnProperty(spec.name)){var exts=modeExtensions[spec.name];for(var prop in exts){if(!exts.hasOwnProperty(prop))continue;if(modeObj.hasOwnProperty(prop))modeObj["_"+prop]=modeObj[prop];modeObj[prop]=exts[prop]}}modeObj.name=spec.name;if(spec.helperType)modeObj.helperType=spec.helperType;if(spec.modeProps)for(var prop in spec.modeProps)modeObj[prop]=spec.modeProps[prop];return modeObj};CodeMirror.defineMode("null",function(){return{token:function(stream){stream.skipToEnd()}}});CodeMirror.defineMIME("text/plain","null");var modeExtensions=CodeMirror.modeExtensions={};CodeMirror.extendMode=function(mode,properties){var exts=modeExtensions.hasOwnProperty(mode)?modeExtensions[mode]:modeExtensions[mode]={};copyObj(properties,exts)};CodeMirror.defineExtension=function(name,func){CodeMirror.prototype[name]=func};CodeMirror.defineDocExtension=function(name,func){Doc.prototype[name]=func};CodeMirror.defineOption=option;var initHooks=[];CodeMirror.defineInitHook=function(f){initHooks.push(f)};var helpers=CodeMirror.helpers={};CodeMirror.registerHelper=function(type,name,value){if(!helpers.hasOwnProperty(type))helpers[type]=CodeMirror[type]={_global:[]};helpers[type][name]=value};CodeMirror.registerGlobalHelper=function(type,name,predicate,value){CodeMirror.registerHelper(type,name,value);helpers[type]._global.push({pred:predicate,val:value})};var copyState=CodeMirror.copyState=function(mode,state){if(state===true)return state;if(mode.copyState)return mode.copyState(state);var nstate={};for(var n in state){var val=state[n];if(val instanceof Array)val=val.concat([]);nstate[n]=val}return nstate};var startState=CodeMirror.startState=function(mode,a1,a2){return mode.startState?mode.startState(a1,a2):true};CodeMirror.innerMode=function(mode,state){while(mode.innerMode){var info=mode.innerMode(state);if(!info||info.mode==mode)break;state=info.state;mode=info.mode}return info||{mode:mode,state:state}};var commands=CodeMirror.commands={selectAll:function(cm){cm.setSelection(Pos(cm.firstLine(),0),Pos(cm.lastLine()),sel_dontScroll)},singleSelection:function(cm){cm.setSelection(cm.getCursor("anchor"),cm.getCursor("head"),sel_dontScroll)},killLine:function(cm){deleteNearSelection(cm,function(range){if(range.empty()){var len=getLine(cm.doc,range.head.line).text.length;if(range.head.ch==len&&range.head.line0){cur=new Pos(cur.line,cur.ch+1);cm.replaceRange(line.charAt(cur.ch-1)+line.charAt(cur.ch-2),Pos(cur.line,cur.ch-2),cur,"+transpose")}else if(cur.line>cm.doc.first){var prev=getLine(cm.doc,cur.line-1).text;if(prev)cm.replaceRange(line.charAt(0)+cm.doc.lineSeparator()+prev.charAt(prev.length-1),Pos(cur.line-1,prev.length-1),Pos(cur.line,1),"+transpose")}}newSel.push(new Range(cur,cur))}cm.setSelections(newSel)})},newlineAndIndent:function(cm){runInOp(cm,function(){var len=cm.listSelections().length;for(var i=0;i=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||undefined},next:function(){if(this.posstart},eatSpace:function(){var start=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos)))++this.pos;return this.pos>start},skipToEnd:function(){this.pos=this.string.length},skipTo:function(ch){var found=this.string.indexOf(ch,this.pos);if(found>-1){this.pos=found;return true}},backUp:function(n){this.pos-=n},column:function(){if(this.lastColumnPos0)return null;if(match&&consume!==false)this.pos+=match[0].length;return match}},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(n,inner){this.lineStart+=n;try{return inner()}finally{this.lineStart-=n}}};var nextMarkerId=0;var TextMarker=CodeMirror.TextMarker=function(doc,type){this.lines=[];this.type=type;this.doc=doc;this.id=++nextMarkerId};eventMixin(TextMarker);TextMarker.prototype.clear=function(){if(this.explicitlyCleared)return;var cm=this.doc.cm,withOp=cm&&!cm.curOp;if(withOp)startOperation(cm);if(hasHandler(this,"clear")){var found=this.find();if(found)signalLater(this,"clear",found.from,found.to)}var min=null,max=null;for(var i=0;icm.display.maxLineLength){cm.display.maxLine=visual;cm.display.maxLineLength=len;cm.display.maxLineChanged=true}}if(min!=null&&cm&&this.collapsed)regChange(cm,min,max+1);this.lines.length=0;this.explicitlyCleared=true;if(this.atomic&&this.doc.cantEdit){this.doc.cantEdit=false;if(cm)reCheckSelection(cm.doc)}if(cm)signalLater(cm,"markerCleared",cm,this);if(withOp)endOperation(cm);if(this.parent)this.parent.clear()};TextMarker.prototype.find=function(side,lineObj){if(side==null&&this.type=="bookmark")side=1;var from,to;for(var i=0;i0||diff==0&&marker.clearWhenEmpty!==false)return marker;if(marker.replacedWith){marker.collapsed=true;marker.widgetNode=elt("span",[marker.replacedWith],"CodeMirror-widget");if(!options.handleMouseEvents)marker.widgetNode.setAttribute("cm-ignore-events","true");if(options.insertLeft)marker.widgetNode.insertLeft=true}if(marker.collapsed){if(conflictingCollapsedRange(doc,from.line,from,to,marker)||from.line!=to.line&&conflictingCollapsedRange(doc,to.line,from,to,marker))throw new Error("Inserting collapsed marker partially overlapping an existing one");sawCollapsedSpans=true}if(marker.addToHistory)addChangeToHistory(doc,{from:from,to:to,origin:"markText"},doc.sel,NaN);var curLine=from.line,cm=doc.cm,updateMaxLine;doc.iter(curLine,to.line+1,function(line){if(cm&&marker.collapsed&&!cm.options.lineWrapping&&visualLine(line)==cm.display.maxLine)updateMaxLine=true;if(marker.collapsed&&curLine!=from.line)updateLineHeight(line,0);addMarkedSpan(line,new MarkedSpan(marker,curLine==from.line?from.ch:null,curLine==to.line?to.ch:null));++curLine});if(marker.collapsed)doc.iter(from.line,to.line+1,function(line){if(lineIsHidden(doc,line))updateLineHeight(line,0)});if(marker.clearOnEnter)on(marker,"beforeCursorEnter",function(){marker.clear()});if(marker.readOnly){sawReadOnlySpans=true
+;if(doc.history.done.length||doc.history.undone.length)doc.clearHistory()}if(marker.collapsed){marker.id=++nextMarkerId;marker.atomic=true}if(cm){if(updateMaxLine)cm.curOp.updateMaxLine=true;if(marker.collapsed)regChange(cm,from.line,to.line+1);else if(marker.className||marker.title||marker.startStyle||marker.endStyle||marker.css)for(var i=from.line;i<=to.line;i++)regLineChange(cm,i,"text");if(marker.atomic)reCheckSelection(cm.doc);signalLater(cm,"markerAdded",cm,marker)}return marker}var SharedTextMarker=CodeMirror.SharedTextMarker=function(markers,primary){this.markers=markers;this.primary=primary;for(var i=0;i=startCh:span.to>startCh);(nw||(nw=[])).push(new MarkedSpan(marker,span.from,endsAfter?null:span.to))}}return nw}function markedSpansAfter(old,endCh,isInsert){if(old)for(var i=0,nw;i=endCh:span.to>endCh);if(endsAfter||span.from==endCh&&marker.type=="bookmark"&&(!isInsert||span.marker.insertLeft)){var startsBefore=span.from==null||(marker.inclusiveLeft?span.from<=endCh:span.from0&&first)for(var i=0;i0)continue;var newParts=[j,1],dfrom=cmp(p.from,m.from),dto=cmp(p.to,m.to);if(dfrom<0||!mk.inclusiveLeft&&!dfrom)newParts.push({from:p.from,to:m.from});if(dto>0||!mk.inclusiveRight&&!dto)newParts.push({from:m.to,to:p.to});parts.splice.apply(parts,newParts);j+=newParts.length-1}}return parts}function detachMarkedSpans(line){var spans=line.markedSpans;if(!spans)return;for(var i=0;i=0&&toCmp<=0||fromCmp<=0&&toCmp>=0)continue;if(fromCmp<=0&&(cmp(found.to,from)>0||sp.marker.inclusiveRight&&marker.inclusiveLeft)||fromCmp>=0&&(cmp(found.from,to)<0||sp.marker.inclusiveLeft&&marker.inclusiveRight))return true}}function visualLine(line){var merged;while(merged=collapsedSpanAtStart(line))line=merged.find(-1,true).line;return line}function visualLineContinued(line){var merged,lines;while(merged=collapsedSpanAtEnd(line)){line=merged.find(1,true).line;(lines||(lines=[])).push(line)}return lines}function visualLineNo(doc,lineN){var line=getLine(doc,lineN),vis=visualLine(line);if(line==vis)return lineN;return lineNo(vis)}function visualLineEndNo(doc,lineN){if(lineN>doc.lastLine())return lineN;var line=getLine(doc,lineN),merged;if(!lineIsHidden(doc,line))return lineN;while(merged=collapsedSpanAtEnd(line))line=merged.find(1,true).line;return lineNo(line)+1}function lineIsHidden(doc,line){var sps=sawCollapsedSpans&&line.markedSpans;if(sps)for(var sp,i=0;istream.start)return style}throw new Error("Mode "+mode.name+" failed to advance stream.")}function takeToken(cm,pos,precise,asArray){function getObj(copy){return{start:stream.start,end:stream.pos,string:stream.current(),type:style||null,state:copy?copyState(doc.mode,state):state}}var doc=cm.doc,mode=doc.mode,style;pos=clipPos(doc,pos);var line=getLine(doc,pos.line),state=getStateBefore(cm,pos.line,precise);var stream=new StringStream(line.text,cm.options.tabSize),tokens;if(asArray)tokens=[];while((asArray||stream.poscm.options.maxHighlightLength){flattenSpans=false;if(forceToEnd)processLine(cm,text,state,stream.pos);stream.pos=text.length;style=null}else{style=extractLineClasses(readToken(mode,stream,state,inner),lineClasses)}if(inner){var mName=inner[0].name;if(mName)style="m-"+(style?mName+" "+style:mName)}if(!flattenSpans||curStyle!=style){while(curStartend)st.splice(i,1,end,st[i+1],i_end);i+=2;at=Math.min(end,i_end)}if(!style)return;if(overlay.opaque){st.splice(start,i-start,end,"cm-overlay "+style);i=start+2}else{for(;startcm.options.maxHighlightLength?copyState(cm.doc.mode,state):state);line.stateAfter=state;line.styles=result.styles;if(result.classes)line.styleClasses=result.classes;else if(line.styleClasses)line.styleClasses=null;if(updateFrontier===cm.doc.frontier)cm.doc.frontier++}return line.styles}function processLine(cm,text,state,startAt){var mode=cm.doc.mode;var stream=new StringStream(text,cm.options.tabSize);stream.start=stream.pos=startAt||0;if(text=="")callBlankLine(mode,state);while(!stream.eol()){readToken(mode,stream,state);stream.start=stream.pos}}var styleToClassCache={},styleToClassCacheWithMode={};function interpretTokenStyle(style,options){if(!style||/^\s*$/.test(style))return null;var cache=options.addModeClass?styleToClassCacheWithMode:styleToClassCache;return cache[style]||(cache[style]=style.replace(/\S+/g,"cm-$&"))}function buildLineContent(cm,lineView){var content=elt("span",null,null,webkit?"padding-right: .1px":null);var builder={pre:elt("pre",[content],"CodeMirror-line"),content:content,col:0,pos:0,cm:cm,splitSpaces:(ie||webkit)&&cm.getOption("lineWrapping")};lineView.measure={};for(var i=0;i<=(lineView.rest?lineView.rest.length:0);i++){var line=i?lineView.rest[i-1]:lineView.line,order;builder.pos=0;builder.addToken=buildToken;if(hasBadBidiRects(cm.display.measure)&&(order=getOrder(line)))builder.addToken=buildTokenBadBidi(builder.addToken,order);builder.map=[];var allowFrontierUpdate=lineView!=cm.display.externalMeasured&&lineNo(line);insertLineContent(line,builder,getLineStyles(cm,line,allowFrontierUpdate));if(line.styleClasses){if(line.styleClasses.bgClass)builder.bgClass=joinClasses(line.styleClasses.bgClass,builder.bgClass||"");if(line.styleClasses.textClass)builder.textClass=joinClasses(line.styleClasses.textClass,builder.textClass||"")}if(builder.map.length==0)builder.map.push(0,0,builder.content.appendChild(zeroWidthElement(cm.display.measure)));if(i==0){lineView.measure.map=builder.map;lineView.measure.cache={}}else{(lineView.measure.maps||(lineView.measure.maps=[])).push(builder.map);(lineView.measure.caches||(lineView.measure.caches=[])).push({})}}if(webkit&&/\bcm-tab\b/.test(builder.content.lastChild.className))builder.content.className="cm-tab-wrap-hack";signal(cm,"renderLine",cm,lineView.line,builder.pre);if(builder.pre.className)builder.textClass=joinClasses(builder.pre.className,builder.textClass||"");return builder}function defaultSpecialCharPlaceholder(ch){var token=elt("span","•","cm-invalidchar");token.title="\\u"+ch.charCodeAt(0).toString(16);token.setAttribute("aria-label",token.title);return token}function buildToken(builder,text,style,startStyle,endStyle,title,css){if(!text)return;var displayText=builder.splitSpaces?text.replace(/ {3,}/g,splitSpaces):text;var special=builder.cm.state.specialChars,mustWrap=false;if(!special.test(text)){builder.col+=text.length;var content=document.createTextNode(displayText);builder.map.push(builder.pos,builder.pos+text.length,content);if(ie&&ie_version<9)mustWrap=true;builder.pos+=text.length}else{var content=document.createDocumentFragment(),pos=0;while(true){special.lastIndex=pos;var m=special.exec(text);var skipped=m?m.index-pos:text.length-pos;if(skipped){var txt=document.createTextNode(displayText.slice(pos,pos+skipped));if(ie&&ie_version<9)content.appendChild(elt("span",[txt]));else content.appendChild(txt);builder.map.push(builder.pos,builder.pos+skipped,txt);builder.col+=skipped;builder.pos+=skipped}if(!m)break;pos+=skipped+1;if(m[0]=="\t"){var tabSize=builder.cm.options.tabSize,tabWidth=tabSize-builder.col%tabSize;var txt=content.appendChild(elt("span",spaceStr(tabWidth),"cm-tab"));txt.setAttribute("role","presentation");txt.setAttribute("cm-text","\t");builder.col+=tabWidth}else if(m[0]=="\r"||m[0]=="\n"){var txt=content.appendChild(elt("span",m[0]=="\r"?"␍":"","cm-invalidchar"));txt.setAttribute("cm-text",m[0]);builder.col+=1}else{var txt=builder.cm.options.specialCharPlaceholder(m[0]);txt.setAttribute("cm-text",m[0]);if(ie&&ie_version<9)content.appendChild(elt("span",[txt]));else content.appendChild(txt);builder.col+=1}builder.map.push(builder.pos,builder.pos+1,txt);builder.pos++}}if(style||startStyle||endStyle||mustWrap||css){var fullStyle=style||"";if(startStyle)fullStyle+=startStyle;if(endStyle)fullStyle+=endStyle;var token=elt("span",[content],fullStyle,css);if(title)token.title=title;return builder.content.appendChild(token)}builder.content.appendChild(content)}function splitSpaces(old){var out=" ";for(var i=0;istart&&part.from<=start)break}if(part.to>=end)return inner(builder,text,style,startStyle,endStyle,title,css);inner(builder,text.slice(0,part.to-start),style,startStyle,null,title,css);startStyle=null;text=text.slice(part.to-start);start=part.to}}}function buildCollapsedSpan(builder,size,marker,ignoreWidget){var widget=!ignoreWidget&&marker.widgetNode;if(widget)builder.map.push(builder.pos,builder.pos+size,widget);if(!ignoreWidget&&builder.cm.display.input.needsContentAttribute){if(!widget)widget=builder.content.appendChild(document.createElement("span"));widget.setAttribute("cm-marker",marker.id)}if(widget){builder.cm.display.input.setUneditable(widget);builder.content.appendChild(widget)}builder.pos+=size}function insertLineContent(line,builder,styles){var spans=line.markedSpans,allText=line.text,at=0;if(!spans){for(var i=1;ipos||m.collapsed&&sp.to==pos&&sp.from==pos)){if(sp.to!=null&&sp.to!=pos&&nextChange>sp.to){nextChange=sp.to;spanEndStyle=""}if(m.className)spanStyle+=" "+m.className;if(m.css)css=(css?css+";":"")+m.css;if(m.startStyle&&sp.from==pos)spanStartStyle+=" "+m.startStyle;if(m.endStyle&&sp.to==nextChange)(endStyles||(endStyles=[])).push(m.endStyle,sp.to);if(m.title&&!title)title=m.title;if(m.collapsed&&(!collapsed||compareCollapsedMarkers(collapsed.marker,m)<0))collapsed=sp}else if(sp.from>pos&&nextChange>sp.from){nextChange=sp.from}}if(endStyles)for(var j=0;j=len)break;var upto=Math.min(len,nextChange);while(true){if(text){var end=pos+text.length;if(!collapsed){var tokenText=end>upto?text.slice(0,upto-pos):text;builder.addToken(builder,tokenText,style?style+spanStyle:spanStyle,spanStartStyle,pos+tokenText.length==nextChange?spanEndStyle:"",title,css)}if(end>=upto){text=text.slice(upto-pos);pos=upto;break}pos=end;spanStartStyle=""}text=allText.slice(at,at=styles[i++]);style=interpretTokenStyle(styles[i++],builder.cm.options)}}}function isWholeLineUpdate(doc,change){return change.from.ch==0&&change.to.ch==0&&lst(change.text)==""&&(!doc.cm||doc.cm.options.wholeLineUpdateBefore)}function updateDoc(doc,change,markedSpans,estimateHeight){function spansFor(n){return markedSpans?markedSpans[n]:null}function update(line,text,spans){updateLine(line,text,spans,estimateHeight);signalLater(line,"change",line,change)}function linesFor(start,end){for(var i=start,result=[];i1)doc.remove(from.line+1,nlines-1);doc.insert(from.line+1,added)}signalLater(doc,"change",doc,change)}function LeafChunk(lines){this.lines=lines;this.parent=null;for(var i=0,height=0;i1||!(this.children[0]instanceof LeafChunk))){var lines=[];this.collapse(lines);this.children=[new LeafChunk(lines)];this.children[0].parent=this}},collapse:function(lines){for(var i=0;i50){while(child.lines.length>50){var spilled=child.lines.splice(child.lines.length-25,25);var newleaf=new LeafChunk(spilled);child.height-=newleaf.height;this.children.splice(i+1,0,newleaf);newleaf.parent=this}this.maybeSpill()}break}at-=sz}},maybeSpill:function(){if(this.children.length<=10)return;var me=this;do{var spilled=me.children.splice(me.children.length-5,5);var sibling=new BranchChunk(spilled);if(!me.parent){var copy=new BranchChunk(me.children);copy.parent=me;me.children=[copy,sibling];me=copy}else{me.size-=sibling.size;me.height-=sibling.height;var myIndex=indexOf(me.parent.children,me);me.parent.children.splice(myIndex+1,0,sibling)}sibling.parent=me.parent}while(me.children.length>10);me.parent.maybeSpill()},iterN:function(at,n,op){for(var i=0;i=0;i--)makeChange(this,changes[i]);if(newSel)setSelectionReplaceHistory(this,newSel);else if(this.cm)ensureCursorVisible(this.cm)}),undo:docMethodOp(function(){makeChangeFromHistory(this,"undo")}),redo:docMethodOp(function(){makeChangeFromHistory(this,"redo")}),undoSelection:docMethodOp(function(){makeChangeFromHistory(this,"undo",true)}),redoSelection:docMethodOp(function(){makeChangeFromHistory(this,"redo",true)}),setExtending:function(val){this.extend=val},getExtending:function(){return this.extend},historySize:function(){var hist=this.history,done=0,undone=0;for(var i=0;i=pos.ch))markers.push(span.marker.parent||span.marker)}return markers},findMarks:function(from,to,filter){from=clipPos(this,from);to=clipPos(this,to);var found=[],lineNo=from.line;this.iter(from.line,to.line+1,function(line){var spans=line.markedSpans;if(spans)for(var i=0;ispan.to||span.from==null&&lineNo!=from.line||lineNo==to.line&&span.from>to.ch)&&(!filter||filter(span.marker)))found.push(span.marker.parent||span.marker)}++lineNo});return found},getAllMarks:function(){var markers=[];this.iter(function(line){var sps=line.markedSpans;if(sps)for(var i=0;ioff){ch=off;return true}off-=sz;++lineNo});return clipPos(this,Pos(lineNo,ch))},indexFromPos:function(coords){coords=clipPos(this,coords);var index=coords.ch;if(coords.linefrom)from=options.from;if(options.to!=null&&options.to=doc.size)throw new Error("There is no line "+(n+doc.first)+" in the document.");for(var chunk=doc;!chunk.lines;){for(var i=0;;++i){var child=chunk.children[i],sz=child.chunkSize();if(n1&&!hist.done[hist.done.length-2].ranges){hist.done.pop();return lst(hist.done)}}function addChangeToHistory(doc,change,selAfter,opId){var hist=doc.history;hist.undone.length=0;var time=+new Date,cur;if((hist.lastOp==opId||hist.lastOrigin==change.origin&&change.origin&&(change.origin.charAt(0)=="+"&&doc.cm&&hist.lastModTime>time-doc.cm.options.historyEventDelay||change.origin.charAt(0)=="*"))&&(cur=lastChangeEvent(hist,hist.lastOp==opId))){var last=lst(cur.changes);if(cmp(change.from,change.to)==0&&cmp(change.from,last.to)==0){last.to=changeEnd(change)}else{cur.changes.push(historyChangeFromChange(doc,change))}}else{var before=lst(hist.done);if(!before||!before.ranges)pushSelectionToHistory(doc.sel,hist.done);cur={changes:[historyChangeFromChange(doc,change)],generation:hist.generation};hist.done.push(cur);while(hist.done.length>hist.undoDepth){hist.done.shift();if(!hist.done[0].ranges)hist.done.shift()}}hist.done.push(selAfter);hist.generation=++hist.maxGeneration;hist.lastModTime=hist.lastSelTime=time;hist.lastOp=hist.lastSelOp=opId;hist.lastOrigin=hist.lastSelOrigin=change.origin;if(!last)signal(doc,"historyAdded")}function selectionEventCanBeMerged(doc,origin,prev,sel){var ch=origin.charAt(0);return ch=="*"||ch=="+"&&prev.ranges.length==sel.ranges.length&&prev.somethingSelected()==sel.somethingSelected()&&new Date-doc.history.lastSelTime<=(doc.cm?doc.cm.options.historyEventDelay:500)}function addSelectionToHistory(doc,sel,opId,options){var hist=doc.history,origin=options&&options.origin;if(opId==hist.lastSelOp||origin&&hist.lastSelOrigin==origin&&(hist.lastModTime==hist.lastSelTime&&hist.lastOrigin==origin||selectionEventCanBeMerged(doc,origin,lst(hist.done),sel)))hist.done[hist.done.length-1]=sel;else pushSelectionToHistory(sel,hist.done);hist.lastSelTime=+new Date;hist.lastSelOrigin=origin;hist.lastSelOp=opId;if(options&&options.clearRedo!==false)clearSelectionEvents(hist.undone)}function pushSelectionToHistory(sel,dest){var top=lst(dest);if(!(top&&top.ranges&&top.equals(sel)))dest.push(sel)}function attachLocalSpans(doc,change,from,to){var existing=change["spans_"+doc.id],n=0;doc.iter(Math.max(doc.first,from),Math.min(doc.first+doc.size,to),function(line){if(line.markedSpans)(existing||(existing=change["spans_"+doc.id]={}))[n]=line.markedSpans;++n})}function removeClearedSpans(spans){if(!spans)return null;for(var i=0,out;i-1){lst(newChanges)[prop]=change[prop];delete change[prop]}}}}return copy}function rebaseHistSelSingle(pos,from,to,diff){if(to0?arr.slice():noHandlers;else return arr||noHandlers}var off=CodeMirror.off=function(emitter,type,f){if(emitter.removeEventListener)emitter.removeEventListener(type,f,false);else if(emitter.detachEvent)emitter.detachEvent("on"+type,f);else{var handlers=getHandlers(emitter,type,false);for(var i=0;i0}function eventMixin(ctor){ctor.prototype.on=function(type,f){on(this,type,f)};ctor.prototype.off=function(type,f){off(this,type,f)}}var scrollerGap=30;var Pass=CodeMirror.Pass={toString:function(){return"CodeMirror.Pass"}};var sel_dontScroll={scroll:false},sel_mouse={origin:"*mouse"},sel_move={origin:"+move"};function Delayed(){this.id=null}Delayed.prototype.set=function(ms,f){clearTimeout(this.id);this.id=setTimeout(f,ms)};var countColumn=CodeMirror.countColumn=function(string,end,tabSize,startIndex,startValue){if(end==null){end=string.search(/[^\s\u00a0]/);if(end==-1)end=string.length}for(var i=startIndex||0,n=startValue||0;;){var nextTab=string.indexOf("\t",i);if(nextTab<0||nextTab>=end)return n+(end-i);n+=nextTab-i;n+=tabSize-n%tabSize;i=nextTab+1}};var findColumn=CodeMirror.findColumn=function(string,goal,tabSize){for(var pos=0,col=0;;){var nextTab=string.indexOf("\t",pos);if(nextTab==-1)nextTab=string.length;var skipped=nextTab-pos;if(nextTab==string.length||col+skipped>=goal)return pos+Math.min(skipped,goal-col);col+=nextTab-pos;col+=tabSize-col%tabSize;pos=nextTab+1;if(col>=goal)return pos}};var spaceStrs=[""];function spaceStr(n){while(spaceStrs.length<=n)spaceStrs.push(lst(spaceStrs)+" ");return spaceStrs[n]}function lst(arr){return arr[arr.length-1]}var selectInput=function(node){node.select()};if(ios)selectInput=function(node){node.selectionStart=0;node.selectionEnd=node.value.length};else if(ie)selectInput=function(node){try{node.select()}catch(_e){}};function indexOf(array,elt){for(var i=0;i""&&(ch.toUpperCase()!=ch.toLowerCase()||nonASCIISingleCaseWordChar.test(ch))};function isWordChar(ch,helper){if(!helper)return isWordCharBasic(ch);if(helper.source.indexOf("\\w")>-1&&isWordCharBasic(ch))return true;return helper.test(ch)}function isEmpty(obj){for(var n in obj)if(obj.hasOwnProperty(n)&&obj[n])return false;return true}var extendingChars=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function isExtendingChar(ch){return ch.charCodeAt(0)>=768&&extendingChars.test(ch)}function elt(tag,content,className,style){var e=document.createElement(tag);if(className)e.className=className;if(style)e.style.cssText=style;if(typeof content=="string")e.appendChild(document.createTextNode(content));else if(content)for(var i=0;i0;--count)e.removeChild(e.firstChild);return e}function removeChildrenAndAdd(parent,e){return removeChildren(parent).appendChild(e)}var contains=CodeMirror.contains=function(parent,child){if(child.nodeType==3)child=child.parentNode;if(parent.contains)return parent.contains(child);do{if(child.nodeType==11)child=child.host;if(child==parent)return true}while(child=child.parentNode)};function activeElt(){var activeElement=document.activeElement;while(activeElement&&activeElement.root&&activeElement.root.activeElement)activeElement=activeElement.root.activeElement;return activeElement}if(ie&&ie_version<11)activeElt=function(){try{return document.activeElement}catch(e){return document.body}};function classTest(cls){return new RegExp("(^|\\s)"+cls+"(?:$|\\s)\\s*")}var rmClass=CodeMirror.rmClass=function(node,cls){var current=node.className;var match=classTest(cls).exec(current);if(match){var after=current.slice(match.index+match[0].length);node.className=current.slice(0,match.index)+(after?match[1]+after:"")}};var addClass=CodeMirror.addClass=function(node,cls){var current=node.className;if(!classTest(cls).test(current))node.className+=(current?" ":"")+cls};function joinClasses(a,b){var as=a.split(" ");for(var i=0;i2&&!(ie&&ie_version<8)}var node=zwspSupported?elt("span",""):elt("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");node.setAttribute("cm-text","");return node}var badBidiRects;function hasBadBidiRects(measure){if(badBidiRects!=null)return badBidiRects;var txt=removeChildrenAndAdd(measure,document.createTextNode("AخA"));var r0=range(txt,0,1).getBoundingClientRect();if(!r0||r0.left==r0.right)return false;var r1=range(txt,1,2).getBoundingClientRect();return badBidiRects=r1.right-r0.right<3}var splitLinesAuto=CodeMirror.splitLines="\n\nb".split(/\n/).length!=3?function(string){var pos=0,result=[],l=string.length;while(pos<=l){var nl=string.indexOf("\n",pos);if(nl==-1)nl=string.length;var line=string.slice(pos,string.charAt(nl-1)=="\r"?nl-1:nl);var rt=line.indexOf("\r");if(rt!=-1){result.push(line.slice(0,rt));pos+=rt+1}else{result.push(line);pos=nl+1}}return result}:function(string){return string.split(/\r\n?|\n/)};var hasSelection=window.getSelection?function(te){try{return te.selectionStart!=te.selectionEnd}catch(e){return false}}:function(te){try{var range=te.ownerDocument.selection.createRange()}catch(e){}if(!range||range.parentElement()!=te)return false;return range.compareEndPoints("StartToEnd",range)!=0};var hasCopyEvent=function(){var e=elt("div");if("oncopy"in e)return true;e.setAttribute("oncopy","return;");return typeof e.oncopy=="function"}();var badZoomedRects=null;function hasBadZoomedRects(measure){if(badZoomedRects!=null)return badZoomedRects;var node=removeChildrenAndAdd(measure,elt("span","x"));var normal=node.getBoundingClientRect();var fromRange=range(node,0,1).getBoundingClientRect();return badZoomedRects=Math.abs(normal.left-fromRange.left)>1}var keyNames=CodeMirror.keyNames={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",106:"*",107:"=",109:"-",110:".",111:"/",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"};(function(){for(var i=0;i<10;i++)keyNames[i+48]=keyNames[i+96]=String(i);for(var i=65;i<=90;i++)keyNames[i]=String.fromCharCode(i);for(var i=1;i<=12;i++)keyNames[i+111]=keyNames[i+63235]="F"+i})();function iterateBidiSections(order,from,to,f){if(!order)return f(from,to,"ltr");var found=false;for(var i=0;ifrom||from==to&&part.to==from){f(Math.max(part.from,from),Math.min(part.to,to),part.level==1?"rtl":"ltr");found=true}}if(!found)f(from,to,"ltr")}function bidiLeft(part){return part.level%2?part.to:part.from}function bidiRight(part){return part.level%2?part.from:part.to}function lineLeft(line){var order=getOrder(line);return order?bidiLeft(order[0]):0}function lineRight(line){var order=getOrder(line);if(!order)return line.text.length;return bidiRight(lst(order))}function lineStart(cm,lineN){var line=getLine(cm.doc,lineN);var visual=visualLine(line);if(visual!=line)lineN=lineNo(visual);var order=getOrder(visual);var ch=!order?0:order[0].level%2?lineRight(visual):lineLeft(visual);return Pos(lineN,ch)}function lineEnd(cm,lineN){var merged,line=getLine(cm.doc,lineN);while(merged=collapsedSpanAtEnd(line)){line=merged.find(1,true).line;lineN=null}var order=getOrder(line);var ch=!order?line.text.length:order[0].level%2?lineLeft(line):lineRight(line);return Pos(lineN==null?lineNo(line):lineN,ch)}function lineStartSmart(cm,pos){var start=lineStart(cm,pos.line);var line=getLine(cm.doc,start.line);var order=getOrder(line);if(!order||order[0].level==0){var firstNonWS=Math.max(0,line.text.search(/\S/));var inWS=pos.line==start.line&&pos.ch<=firstNonWS&&pos.ch;return Pos(start.line,inWS?0:firstNonWS)}return start}function compareBidiLevel(order,a,b){var linedir=order[0].level;if(a==linedir)return true;if(b==linedir)return false;return apos)return i;if(cur.from==pos||cur.to==pos){if(found==null){found=i}else if(compareBidiLevel(order,cur.level,order[found].level)){if(cur.from!=cur.to)bidiOther=found;return i}else{if(cur.from!=cur.to)bidiOther=i;return found}}}return found}function moveInLine(line,pos,dir,byUnit){if(!byUnit)return pos+dir;do pos+=dir;while(pos>0&&isExtendingChar(line.text.charAt(pos)));return pos}function moveVisually(line,start,dir,byUnit){var bidi=getOrder(line);if(!bidi)return moveLogically(line,start,dir,byUnit);var pos=getBidiPartAt(bidi,start),part=bidi[pos];var target=moveInLine(line,start,part.level%2?-dir:dir,byUnit);for(;;){if(target>part.from&&target0==part.level%2?part.to:part.from}else{part=bidi[pos+=dir];if(!part)return null;if(dir>0==part.level%2)target=moveInLine(line,part.to,-1,byUnit);else target=moveInLine(line,part.from,1,byUnit)}}}function moveLogically(line,start,dir,byUnit){var target=start+dir;if(byUnit)while(target>0&&isExtendingChar(line.text.charAt(target)))target+=dir;return target<0||target>line.text.length?null:target}var bidiOrdering=function(){var lowTypes="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN"
+;var arabicTypes="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm";function charType(code){if(code<=247)return lowTypes.charAt(code);else if(1424<=code&&code<=1524)return"R";else if(1536<=code&&code<=1773)return arabicTypes.charAt(code-1536);else if(1774<=code&&code<=2220)return"r";else if(8192<=code&&code<=8203)return"w";else if(code==8204)return"b";else return"L"}var bidiRE=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/;var isNeutral=/[stwN]/,isStrong=/[LRr]/,countsAsLeft=/[Lb1n]/,countsAsNum=/[1n]/;var outerType="L";function BidiSpan(level,from,to){this.level=level;this.from=from;this.to=to}return function(str){if(!bidiRE.test(str))return false;var len=str.length,types=[];for(var i=0,type;i<\-])*\d+(?:,\d+)?)([acd])(\d+(?:,\d+)?)/),e.DiffParser=function(a){for(var b=[],c=0,d=a.split(/\n/),f=0;f0&&"c"==i.op&&(f+=1),b(f,f+j.length)}if("d"!=i.op){f=c.getLines("rhs").slice(0,i["rhs-line-from"]).join(" ").length,g=i["rhs-line-to"]+1;var k=c.getLines("rhs").slice(i["rhs-line-from"],g).join(" ");"a"==i.op?k+=" ":f>0&&"c"==i.op&&(f+=1),a(f,f+k.length)}}}}),e.CodeifyText=function(a){this._max_code=0,this._diff_codes={},this.ctxs={},this.options={ignorews:!1},c.extend(this,a),this.lhs=a.lhs.split("\n"),this.rhs=a.rhs.split("\n")},c.extend(e.CodeifyText.prototype,{getCodes:function(a){if(!this.ctxs.hasOwnProperty(a)){var b=this._diff_ctx(this[a]);this.ctxs[a]=b,b.codes.length=Object.keys(b.codes).length}return this.ctxs[a].codes},getLines:function(a){return this.ctxs[a].lines},_diff_ctx:function(a){var b={i:0,codes:{},lines:a};return this._codeify(a,b),b},_codeify:function(a,b){for(var d=(this._max_code,0);d0?f="a":c.lhs_deleted_count>0&&0==c.rhs_inserted_count&&(f="d"),d=1==c.lhs_deleted_count?c.lhs_start+1:0==c.lhs_deleted_count?c.lhs_start:c.lhs_start+1+","+(c.lhs_start+c.lhs_deleted_count),e=1==c.rhs_inserted_count?c.rhs_start+1:0==c.rhs_inserted_count?c.rhs_start:c.rhs_start+1+","+(c.rhs_start+c.rhs_inserted_count),a+=d+f+e+"\n";var g=this.getLines("lhs"),h=this.getLines("rhs");if(h&&g){var i;for(i=c.lhs_start;i "+h[i]+"\n"}}return a},_lcs:function(a,b,c,d,e,f,g,h){for(;c>b&&f>e&&a.codes[b]==d.codes[e];)++b,++e;for(;c>b&&f>e&&a.codes[c-1]==d.codes[f-1];)--c,--f;if(b==c)for(;f>e;)d.modified[e++]=!0;else if(e==f)for(;c>b;)a.modified[b++]=!0;else{var i=this._sms(a,b,c,d,e,f,g,h);this._lcs(a,b,i.x,d,e,i.y,g,h),this._lcs(a,i.x,c,d,i.y,f,g,h)}},_sms:function(a,b,c,d,e,f,g,h){var i=a.codes.length+d.codes.length+1,j=b-e,k=c-f,l=c-b-(f-e),m=0!=(1&l),n=i-j,o=i-k,p=(c-b+f-e)/2+1;h[n+j+1]=b,g[o+k-1]=c;var r,s,t,u,q={x:0,y:0};for(r=0;p>=r;++r){for(s=j-r;j+r>=s;s+=2){for(s==j-r?t=h[n+s+1]:(t=h[n+s-1]+1,j+r>s&&h[n+s+1]>=t&&(t=h[n+s+1])),u=t-s;c>t&&f>u&&a.codes[t]==d.codes[u];)t++,u++;if(h[n+s]=t,m&&s>k-r&&k+r>s&&g[o+s]<=h[n+s])return q.x=h[n+s],q.y=h[n+s]-s,q}for(s=k-r;k+r>=s;s+=2){for(s==k+r?t=g[o+s-1]:(t=g[o+s+1]-1,s>k-r&&g[o+s-1]b&&u>e&&a.codes[t-1]==d.codes[u-1];)t--,u--;if(g[o+s]=t,!m&&s>=j-r&&j+r>=s&&g[o+s]<=h[n+s])return q.x=h[n+s],q.y=h[n+s]-s,q}}throw"the algorithm should never come here."},_optimize:function(a){for(var b=0,c=0;b=b.codes.length||a.modified[f]);)f++;for(;g=a.codes.length||b.modified[g]);)g++;(f>d||g>e)&&c.push({lhs_start:d,rhs_start:e,lhs_deleted_count:f-d,rhs_inserted_count:g-e})}return c}}),e.mergely=function(a,b){a&&this.init(a,b)},c.extend(e.mergely.prototype,{name:"mergely",init:function(a,b){this.diffView=new e.CodeMirrorDiffView(a,b),this.bind(a)},bind:function(a){this.diffView.bind(a)}}),e.CodeMirrorDiffView=function(a,b){d.defineExtension("centerOnCursor",function(){var a=this.cursorCoords(null,"local");this.scrollTo(null,(a.y+a.yBot)/2-this.getScrollerElement().clientHeight/2)}),this.init(a,b)},c.extend(e.CodeMirrorDiffView.prototype,{init:function(a,b){this.settings={autoupdate:!0,autoresize:!0,rhs_margin:"right",wrap_lines:!1,line_numbers:!0,lcs:!0,sidebar:!0,viewport:!1,ignorews:!1,fadein:"fast",editor_width:"650px",editor_height:"400px",resize_timeout:500,change_timeout:150,fgcolor:{a:"#4ba3fa",c:"#a3a3a3",d:"#ff7f7f",ca:"#4b73ff",cc:"#434343",cd:"#ff4f4f"},bgcolor:"#eee",vpcolor:"rgba(0, 0, 200, 0.5)",lhs:function(a){},rhs:function(a){},loaded:function(){},_auto_width:function(a){return a},resize:function(b){var d=b?16:0,e=c(a).parent().width()+d,f=0;"auto"==this.width?e=this._auto_width(e):(e=this.width,this.editor_width=e),"auto"==this.height?f=c(a).parent().height():(f=this.height,this.editor_height=f);var g=e/2-16-8,h=f,i=c(a);i.find(".mergely-column").css({width:g+"px"}),i.find(".mergely-column, .mergely-canvas, .mergely-margin, .mergely-column textarea, .CodeMirror-scroll, .cm-s-default").css({height:h+"px"}),i.find(".mergely-canvas").css({height:h+"px"}),i.find(".mergely-column textarea").css({width:g+"px"}),i.css({width:e,height:f,clear:"both"}),"none"==i.css("display")&&(0!=this.fadein?i.fadeIn(this.fadein):i.show(),this.loaded&&this.loaded()),this.resized&&this.resized()},_debug:"",resized:function(){}};var d={mode:"text/plain",readOnly:!1,lineWrapping:this.settings.wrap_lines,lineNumbers:this.settings.line_numbers,gutters:["merge","CodeMirror-linenumbers"]};this.lhs_cmsettings={},this.rhs_cmsettings={},this.element=c(a),b&&b.cmsettings&&c.extend(this.lhs_cmsettings,d,b.cmsettings,b.lhs_cmsettings),b&&b.cmsettings&&c.extend(this.rhs_cmsettings,d,b.cmsettings,b.rhs_cmsettings),this.element.bind("destroyed",c.proxy(this.teardown,this)),c.data(a,"mergely",this),this._setOptions(b)},unbind:function(){null!=this.changed_timeout&&clearTimeout(this.changed_timeout),this.editor[this.id+"-lhs"].toTextArea(),this.editor[this.id+"-rhs"].toTextArea(),c(a).off(".mergely")},destroy:function(){this.element.unbind("destroyed",this.teardown),this.teardown()},teardown:function(){this.unbind()},lhs:function(a){this.editor[this.id+"-lhs"].setValue(a)},rhs:function(a){this.editor[this.id+"-rhs"].setValue(a)},update:function(){this._changing(this.id+"-lhs",this.id+"-rhs")},unmarkup:function(){this._clear()},scrollToDiff:function(a){this.changes.length&&("next"==a?this._current_diff=Math.min(++this._current_diff,this.changes.length-1):"prev"==a&&(this._current_diff=Math.max(--this._current_diff,0)),this._scroll_to_change(this.changes[this._current_diff]),this._changed(this.id+"-lhs",this.id+"-rhs"))},mergeCurrentChange:function(a){this.changes.length&&("lhs"!=a||this.lhs_cmsettings.readOnly?"rhs"!=a||this.rhs_cmsettings.readOnly||this._merge_change(this.changes[this._current_diff],"lhs","rhs"):this._merge_change(this.changes[this._current_diff],"rhs","lhs"))},scrollTo:function(a,b){var c=this.editor[this.id+"-lhs"],d=this.editor[this.id+"-rhs"];"lhs"==a?(c.setCursor(b),c.centerOnCursor()):(d.setCursor(b),d.centerOnCursor())},_setOptions:function(a){if(c.extend(this.settings,a),this.settings.hasOwnProperty("rhs_margin"))if("left"==this.settings.rhs_margin)this.element.find(".mergely-margin:last-child").insertAfter(this.element.find(".mergely-canvas"));else{var b=this.element.find(".mergely-margin").last();b.appendTo(b.parent())}this.settings.hasOwnProperty("sidebar")&&(this.settings.sidebar?this.element.find(".mergely-margin").css({display:"block"}):this.element.find(".mergely-margin").css({display:"none"}));var d,e;this.settings.hasOwnProperty("wrap_lines")&&this.editor&&(d=this.editor[this.id+"-lhs"],e=this.editor[this.id+"-rhs"],d.setOption("lineWrapping",this.settings.wrap_lines),e.setOption("lineWrapping",this.settings.wrap_lines)),this.settings.hasOwnProperty("line_numbers")&&this.editor&&(d=this.editor[this.id+"-lhs"],e=this.editor[this.id+"-rhs"],d.setOption("lineNumbers",this.settings.line_numbers),e.setOption("lineNumbers",this.settings.line_numbers))},options:function(a){return a?(this._setOptions(a),this.settings.autoresize&&this.resize(),this.settings.autoupdate&&this.update(),void 0):this.settings},swap:function(){if(!this.lhs_cmsettings.readOnly&&!this.rhs_cmsettings.readOnly){var a=this.editor[this.id+"-lhs"],b=this.editor[this.id+"-rhs"],c=b.getValue();b.setValue(a.getValue()),a.setValue(c)}},merge:function(a){var b=this.editor[this.id+"-lhs"],c=this.editor[this.id+"-rhs"];"lhs"!=a||this.lhs_cmsettings.readOnly?this.rhs_cmsettings.readOnly||c.setValue(b.getValue()):b.setValue(c.getValue())},get:function(a){var b=this.editor[this.id+"-"+a],c=b.getValue();return void 0==c?"":c},clear:function(a){if(!("lhs"==a&&this.lhs_cmsettings.readOnly||"rhs"==a&&this.rhs_cmsettings.readOnly)){var b=this.editor[this.id+"-"+a];b.setValue("")}},cm:function(a){return this.editor[this.id+"-"+a]},search:function(a,b,c){var f,d=this.editor[this.id+"-lhs"],e=this.editor[this.id+"-rhs"];f="lhs"==a?d:e,c="prev"==c?"findPrevious":"findNext",(0==f.getSelection().length||this.prev_query[a]!=b)&&(this.cursor[this.id]=f.getSearchCursor(b,{line:0,ch:0},!1),this.prev_query[a]=b);var g=this.cursor[this.id];g[c]()?f.setSelection(g.from(),g.to()):g=f.getSearchCursor(b,{line:0,ch:0},!1)},resize:function(){this.settings.resize(),this._changing(this.id+"-lhs",this.id+"-rhs"),this._set_top_offset(this.id+"-lhs")},diff:function(){var a=this.editor[this.id+"-lhs"].getValue(),b=this.editor[this.id+"-rhs"].getValue(),c=new e.diff(a,b,this.settings);return c.normal_form()},bind:function(b){function r(a,b,d){if(!(d.target&&c(d.target).closest(".merge-button").length>0)){var e,f;for(e=0;e=f[a+"-line-from"]&&b<=f[a+"-line-to"]){this._current_diff=e,setTimeout(function(){this.scrollToDiff()}.bind(this),10);break}}}this.element.hide(),this.id=c(b).attr("id"),this.changed_timeout=null,this.chfns={},this.chfns[this.id+"-lhs"]=[],this.chfns[this.id+"-rhs"]=[],this.prev_query=[],this.cursor=[],this._skipscroll={},this.change_exp=new RegExp(/(\d+(?:,\d+)?)([acd])(\d+(?:,\d+)?)/);var e,f;if(void 0!=c.button)e='',f='';else{var g="opacity:0.4;width:10px;height:15px;background-color:#888;cursor:pointer;text-align:center;color:#eee;border:1px solid: #222;margin-right:5px;margin-top: -2px;";e='<
',f='>
'}this.merge_rhs_button=c(f),this.merge_lhs_button=c(e);var h=this.settings.editor_height,i=this.settings.editor_width;this.element.append(c('')),this.element.append(c('')),this.element.append(c(''));var j=c('');this.settings.sidebar||this.element.find(".mergely-margin").css({display:"none"}),"left"==this.settings.rhs_margin&&this.element.append(j),this.element.append(c('')),"left"!=this.settings.rhs_margin&&this.element.append(j);var k=c('').appendTo("body").css("border-top-color");this.current_diff_color=k;var l="#"+this.id+" .CodeMirror-gutter-text { padding: 5px 0 0 0; }#"+this.id+" .CodeMirror-lines pre, #"+this.id+" .CodeMirror-gutter-text pre { line-height: 18px; }.CodeMirror-linewidget { overflow: hidden; };";this.settings.autoresize&&(l+=this.id+" .CodeMirror-scroll { height: 100%; overflow: auto; }"),l+="\n.CodeMirror { line-height: 18px; }",c('").appendTo("head");var m=this.element.find("#"+this.id+"-rhs").get(0);if(!m)return void console.error("rhs textarea not defined - Mergely not initialized properly");var n=this.element.find("#"+this.id+"-lhs").get(0);if(!m)return void console.error("lhs textarea not defined - Mergely not initialized properly");var o=this;if(this.editor=[],this.editor[this.id+"-lhs"]=d.fromTextArea(n,this.lhs_cmsettings),this.editor[this.id+"-rhs"]=d.fromTextArea(m,this.rhs_cmsettings),this.editor[this.id+"-lhs"].on("change",function(){o.settings.autoupdate&&o._changing(o.id+"-lhs",o.id+"-rhs")}),this.editor[this.id+"-lhs"].on("scroll",function(){o._scrolling(o.id+"-lhs")}),this.editor[this.id+"-rhs"].on("change",function(){o.settings.autoupdate&&o._changing(o.id+"-lhs",o.id+"-rhs")}),this.editor[this.id+"-rhs"].on("scroll",function(){o._scrolling(o.id+"-rhs")}),this.settings.autoresize){var p=null,q=function(a){o.settings.resize&&o.settings.resize(a),o.editor[o.id+"-lhs"].refresh(),o.editor[o.id+"-rhs"].refresh(),o.settings.autoupdate&&o._changing(o.id+"-lhs",o.id+"-rhs")};c(a).on("resize.mergely",function(){p&&clearTimeout(p),p=setTimeout(q,o.settings.resize_timeout)}),q(!0)}this.editor[this.id+"-lhs"].on("gutterClick",function(a,b,c,d){r.call(this,"lhs",b,d)}.bind(this)),this.editor[this.id+"-rhs"].on("gutterClick",function(a,b,c,d){r.call(this,"rhs",b,d)}.bind(this));var s;this.settings.lhs&&(s=this.editor[this.id+"-lhs"].getDoc().setValue,this.settings.lhs(s.bind(this.editor[this.id+"-lhs"].getDoc()))),this.settings.rhs&&(s=this.editor[this.id+"-rhs"].getDoc().setValue,this.settings.rhs(s.bind(this.editor[this.id+"-rhs"].getDoc())))},_scroll_to_change:function(a){if(a){var b=this,c=b.editor[b.id+"-lhs"],d=b.editor[b.id+"-rhs"];c.setCursor(Math.max(a["lhs-line-from"],0),0),d.setCursor(Math.max(a["rhs-line-from"],0),0),c.scrollIntoView({line:a["lhs-line-to"]})}},_scrolling:function(a){if(this._skipscroll[a]===!0)return void(this._skipscroll[a]=!1);var b=c(this.editor[a].getScrollerElement());void 0==this.midway&&(this.midway=(b.height()/2+b.offset().top).toFixed(2));var d=this.editor[a].coordsChar({left:0,top:this.midway}),f=b.scrollTop(),g=b.scrollLeft();this.trace("scroll","side",a),this.trace("scroll","midway",this.midway),this.trace("scroll","midline",d),this.trace("scroll","top_to",f),this.trace("scroll","left_to",g);var h=this.id+"-lhs",i=this.id+"-rhs";for(var j in this.editor)if(this.editor.hasOwnProperty(j)&&a!=j){for(var k=a.replace(this.id+"-",""),l=j.replace(this.id+"-",""),m=0,n=null,o=!1,p=0;p=q[k+"-line-from"]&&(n=q,d.line>=n[k+"-line-to"]&&(q.hasOwnProperty(k+"-y-start")&&q.hasOwnProperty(k+"-y-end")&&q.hasOwnProperty(l+"-y-start")&&q.hasOwnProperty(l+"-y-end")?m+=q[k+"-y-end"]-q[k+"-y-start"]-(q[l+"-y-end"]-q[l+"-y-start"]):o=!0))}var r=this.editor[j].getViewport(),s=!0;if(n&&(this.trace("scroll","last change before midline",n),d.line>=r.from&&d<=r.to&&(s=!1)),this.trace("scroll","scroll",s),s||o?(this.trace("scroll","scrolling other side",f-m),this._skipscroll[j]=!0,this.editor[j].scrollTo(g,f-m)):this.trace("scroll","not scrolling other side"),this.settings.autoupdate){var t=new e.Timer;this._calculate_offsets(h,i,this.changes),this.trace("change","offsets time",t.stop()),this._markup_changes(h,i,this.changes),this.trace("change","markup time",t.stop()),this._draw_diff(h,i,this.changes),this.trace("change","draw time",t.stop())}this.trace("scroll","scrolled")}},_changing:function(a,b){this.trace("change","changing-timeout",this.changed_timeout);var c=this;null!=this.changed_timeout&&clearTimeout(this.changed_timeout),this.changed_timeout=setTimeout(function(){var d=new e.Timer;c._changed(a,b),c.trace("change","total time",d.stop())},this.settings.change_timeout)},_changed:function(a,b){this._clear(),this._diff(a,b)},_clear:function(){var b,c,d,f,g,h,i,a=this,j=function(){for(f=new e.Timer,g=0,i=c.lineCount();i>g;++g)c.removeLineClass(g,"background");for(g=0;ga.from&&b["lhs-line-to"]>a.to||b["rhs-line-from"]a.from&&b["rhs-line-to"]>a.to)?!1:!0},_set_top_offset:function(a){var b=this.editor[a].getScrollInfo().top;this.editor[a].scrollTo(null,0);var c=this.element.find(".CodeMirror-measure").first(),d=c.offset().top-4;return d?(this.editor[a].scrollTo(null,b),this.draw_top_offset=.5-d,!0):!1},_calculate_offsets:function(a,b,d){if(null==this.em_height){if(!this._set_top_offset(a))return;this.em_height=this.editor[a].defaultTextHeight(),this.em_height||(console.warn("Failed to calculate offsets, using 18 by default"),this.em_height=18),this.draw_lhs_min=.5;var e=c("#"+a+"-"+b+"-canvas");if(e.length||console.error("failed to find canvas","#"+a+"-"+b+"-canvas"),!e.width())return void console.error("canvas width is 0");this.draw_mid_width=c("#"+a+"-"+b+"-canvas").width(),this.draw_rhs_max=this.draw_mid_width-.5,this.draw_lhs_width=5,this.draw_rhs_width=5,this.trace("calc","change offsets calculated",{top_offset:this.draw_top_offset,lhs_min:this.draw_lhs_min,rhs_max:this.draw_rhs_max,lhs_width:this.draw_lhs_width,rhs_width:this.draw_rhs_width})}for(var f=this.editor[a].charCoords({line:0}),g=this.editor[b].charCoords({line:0}),h=this._get_viewport(a,b),i=0;i=0?j["lhs-line-from"]:0,l=j["lhs-line-to"]>=0?j["lhs-line-to"]:0,m=j["rhs-line-from"]>=0?j["rhs-line-from"]:0,n=j["rhs-line-to"]>=0?j["rhs-line-to"]:0;this.editor[a].getOption("lineWrapping")||this.editor[b].getOption("lineWrapping")?(s=this.editor[a].cursorCoords({line:k,ch:0},"page"),v=this.editor[a].getLineHandle(k),o={top:s.top,bottom:s.top+v.height},t=this.editor[a].cursorCoords({line:l,ch:0},"page"),u=this.editor[a].getLineHandle(l),p={top:t.top,bottom:t.top+u.height},s=this.editor[b].cursorCoords({line:m,ch:0},"page"),w=this.editor[b].getLineHandle(m),q={top:s.top,bottom:s.top+w.height},t=this.editor[b].cursorCoords({line:n,ch:0},"page"),x=this.editor[b].getLineHandle(n),r={top:t.top,bottom:t.top+x.height}):(o={top:f.top+k*this.em_height,bottom:f.bottom+k*this.em_height+2},p={top:f.top+l*this.em_height,bottom:f.bottom+l*this.em_height+2},q={top:g.top+m*this.em_height,bottom:g.bottom+m*this.em_height+2},r={top:g.top+n*this.em_height,bottom:g.bottom+n*this.em_height+2}),"a"==j.op?m>0&&(o.top=o.bottom,o.bottom+=this.em_height,p=o):"d"==j.op&&k>0&&(q.top=q.bottom,q.bottom+=this.em_height,r=q),j["lhs-y-start"]=this.draw_top_offset+o.top,"c"==j.op||"d"==j.op?j["lhs-y-end"]=this.draw_top_offset+p.bottom:j["lhs-y-end"]=this.draw_top_offset+p.top,j["rhs-y-start"]=this.draw_top_offset+q.top,"c"==j.op||"a"==j.op?j["rhs-y-end"]=this.draw_top_offset+r.bottom:j["rhs-y-end"]=this.draw_top_offset+r.top,this.trace("calc","change calculated",i,j)}else delete j["lhs-y-start"],delete j["lhs-y-end"],delete j["rhs-y-start"],delete j["rhs-y-end"]}return d},_markup_changes:function(a,b,d){this.element.find(".merge-button").remove();var f=this,g=this.editor[a],h=this.editor[b],i=this._current_diff,j=new e.Timer;g.operation(function(){for(var a=0;a=0?b["lhs-line-from"]:0,e=b["lhs-line-to"]>=0?b["lhs-line-to"]:0,j=b["rhs-line-from"]>=0?b["rhs-line-from"]:0,l=(b["rhs-line-to"]>=0?b["rhs-line-to"]:0,["mergely","lhs",b.op,"cid-"+a]);if(g.addLineClass(c,"background","start"),g.addLineClass(e,"background","end"),i==a&&(c!=e&&g.addLineClass(c,"background","current"),g.addLineClass(e,"background","current")),0==c&&0==e&&0==j)g.addLineClass(c,"background",l.join(" ")),g.addLineClass(c,"background","first");else for(var m=c;e>=m;++m)g.addLineClass(m,"background",l.join(" ")),g.addLineClass(m,"background",l.join(" "));if(!h.getOption("readOnly")){var n=f.merge_rhs_button.clone();n.button&&n.button({icons:{primary:"ui-icon-triangle-1-e"},text:!1}),n.addClass("merge-button"),n.attr("id","merge-rhs-"+a),g.setGutterMarker(c,"merge",n.get(0))}}});var k=this._get_viewport(a,b);this.trace("change","markup lhs-editor time",j.stop()),h.operation(function(){for(var a=0;a=0?b["lhs-line-from"]:0,j=(b["lhs-line-to"]>=0?b["lhs-line-to"]:0,b["rhs-line-from"]>=0?b["rhs-line-from"]:0),l=b["rhs-line-to"]>=0?b["rhs-line-to"]:0;if(f._is_change_in_view(k,b)){var m=["mergely","rhs",b.op,"cid-"+a];if(h.addLineClass(j,"background","start"),h.addLineClass(l,"background","end"),i==a&&(j!=l&&h.addLineClass(j,"background","current"),h.addLineClass(l,"background","current")),0==j&&0==l&&0==c)h.addLineClass(j,"background",m.join(" ")),h.addLineClass(j,"background","first");else for(var n=j;l>=n;++n)h.addLineClass(n,"background",m.join(" ")),h.addLineClass(n,"background",m.join(" "));if(!g.getOption("readOnly")){var o=f.merge_lhs_button.clone();o.button&&o.button({icons:{primary:"ui-icon-triangle-1-w"},text:!1}),o.addClass("merge-button"),o.attr("id","merge-lhs-"+a),h.setGutterMarker(j,"merge",o.get(0))}}}}),this.trace("change","markup rhs-editor time",j.stop());var m,n,o,p,l=[];for(m=0;this.settings.lcs&&m=0?q["lhs-line-from"]:0,s=q["lhs-line-to"]>=0?q["lhs-line-to"]:0,t=q["rhs-line-from"]>=0?q["rhs-line-from"]:0,u=q["rhs-line-to"]>=0?q["rhs-line-to"]:0;if(this._is_change_in_view(k,q))if("d"==q.op){var v=r,w=s,x=g.lineInfo(w);x&&l.push([g,{line:v,ch:0},{line:w,ch:x.text.length},{className:"mergely ch d lhs"}])}else if("c"==q.op)for(n=r,o=t,p=0;n>=0&&s>=n||o>=0&&u>=o;++n,++o){var y,z;if(o+p>u)y=g.getLine(n),l.push([g,{line:n,ch:0},{line:n,ch:y.length},{className:"mergely ch d lhs"}]);else if(n+p>s)z=h.getLine(o),l.push([h,{line:o,ch:0},{line:o,ch:z.length},{className:"mergely ch a rhs"}]);else{y=g.getLine(n),z=h.getLine(o);var A=new e.LCS(y,z);A.diff(function(a,b){l.push([h,{line:o,ch:a},{line:o,ch:b},{className:"mergely ch a rhs"}])},function(a,b){l.push([g,{line:n,ch:a},{line:n,ch:b},{className:"mergely ch d lhs"}])})}}}this.trace("change","LCS marktext time",j.stop()),g.operation(function(){for(var a=0;an;n++){var G=(n+1).toString();D.filter(function(a,b){return c(b).text()===G}).addClass("mergely current")}}if(i==m&&"a"!==q.op){var q=d[m];for(E=q["lhs-line-from"],F=q["lhs-line-to"]+1,n=E;F>n;n++){var G=(n+1).toString();C.filter(function(a,b){return c(b).text()===G}).addClass("mergely current")}}}this.trace("change","markup buttons time",j.stop())},_merge_change:function(a,b,c){if(a){var h,i,j,e=this.editor[this.id+"-lhs"],f=this.editor[this.id+"-rhs"],g={lhs:e,rhs:f},k=g[b].getRange(d.Pos(a[b+"-line-from"],0),d.Pos(a[b+"-line-to"]+1,0));if("c"==a.op)g[c].replaceRange(k,d.Pos(a[c+"-line-from"],0),d.Pos(a[c+"-line-to"]+1,0));else if("rhs"==b)if("a"==a.op)g[c].replaceRange(k,d.Pos(a[c+"-line-from"]+1,0),d.Pos(a[c+"-line-to"]+1,0));else for(i=parseInt(a[c+"-line-from"],10),j=parseInt(a[c+"-line-to"],10),h=j;h>=i;--h)g[c].setCursor({line:h,ch:-1}),g[c].execCommand("deleteLine");else if("lhs"==b)if("a"==a.op)for(i=parseInt(a[c+"-line-from"],10),j=parseInt(a[c+"-line-to"],10),h=j;h>=i;--h)g[c].setCursor({line:h,ch:-1}),g[c].execCommand("deleteLine");else g[c].replaceRange(k,d.Pos(a[c+"-line-from"]+1,0));g.lhs.setValue(g.lhs.getValue()),g.rhs.setValue(g.rhs.getValue()),this._scroll_to_change(a)}},_draw_info:function(a,d){var e=c(this.editor[a].getScrollerElement()).height(),f=c(this.editor[a].getScrollerElement()).children(":first-child").height(),g=b.getElementById(a+"-"+d+"-canvas");if(void 0==g)throw"Failed to find: "+a+"-"+d+"-canvas";var h=this.element.find("#"+this.id+"-lhs-margin"),i=this.element.find("#"+this.id+"-rhs-margin");return{visible_page_height:e,gutter_height:f,visible_page_ratio:e/f,margin_ratio:e/f,lhs_scroller:c(this.editor[a].getScrollerElement()),rhs_scroller:c(this.editor[d].getScrollerElement()),lhs_lines:this.editor[a].lineCount(),rhs_lines:this.editor[d].lineCount(),dcanvas:g,clhs:h,crhs:i,lhs_xyoffset:c(h).offset(),rhs_xyoffset:c(i).offset()}},_draw_diff:function(a,b,d){var e=this._draw_info(a,b),f=e.clhs.get(0),g=e.crhs.get(0),h=e.dcanvas.getContext("2d"),i=f.getContext("2d"),j=g.getContext("2d");this.trace("draw","visible_page_height",e.visible_page_height),this.trace("draw","gutter_height",e.gutter_height),this.trace("draw","visible_page_ratio",e.visible_page_ratio),this.trace("draw","lhs-scroller-top",e.lhs_scroller.scrollTop()),this.trace("draw","rhs-scroller-top",e.rhs_scroller.scrollTop()),c.each(this.element.find("canvas"),function(){c(this).get(0).height=e.visible_page_height}),e.clhs.unbind("click"),e.crhs.unbind("click"),i.beginPath(),i.fillStyle=this.settings.bgcolor,i.strokeStyle="#888",i.fillRect(0,0,6.5,e.visible_page_height),i.strokeRect(0,0,6.5,e.visible_page_height),j.beginPath(),j.fillStyle=this.settings.bgcolor,j.strokeStyle="#888",j.fillRect(0,0,6.5,e.visible_page_height),j.strokeRect(0,0,6.5,e.visible_page_height);for(var k=this._get_viewport(a,b),l=0;l=u?h.lineTo(v+t,w):(h.arcTo(v+t,w,v+t,w+s,s),h.arcTo(v+t,w+u,v+t-s,w+u,s)),h.lineTo(v,w+u)),h.stroke(),t=this.draw_rhs_width,u=r-q-1,v=this.draw_rhs_max,w=q,h.moveTo(v,w),"Microsoft Internet Explorer"==navigator.appName?(h.lineTo(this.draw_rhs_max-this.draw_rhs_width,q),h.lineTo(this.draw_rhs_max-this.draw_rhs_width,r+1),h.lineTo(this.draw_rhs_max,r+1)):(0>=u?h.lineTo(v-t,w):(h.arcTo(v-t,w,v-t,w+s,s),h.arcTo(v-t,w+u,v-s,w+u,s)),h.lineTo(v,w+u)),h.stroke();var x=this.draw_lhs_min+this.draw_lhs_width,y=o+(p+1-o)/2,z=this.draw_rhs_max-this.draw_rhs_width,A=q+(r+1-q)/2;h.moveTo(x,y),y==A?h.lineTo(z,A):h.bezierCurveTo(x+12,y-3,z-12,A-3,z,A),h.stroke()}}i.fillStyle=this.settings.vpcolor,j.fillStyle=this.settings.vpcolor;var B=e.clhs.height()*e.visible_page_ratio,C=e.lhs_scroller.scrollTop()/e.gutter_height*e.clhs.height(),D=e.crhs.height()*e.visible_page_ratio,E=e.rhs_scroller.scrollTop()/e.gutter_height*e.crhs.height();
-this.trace("draw","cls.height",e.clhs.height()),this.trace("draw","lhs_scroller.scrollTop()",e.lhs_scroller.scrollTop()),this.trace("draw","gutter_height",e.gutter_height),this.trace("draw","visible_page_ratio",e.visible_page_ratio),this.trace("draw","lhs from",C,"lhs to",B),this.trace("draw","rhs from",E,"rhs to",D),i.fillRect(1.5,C,4.5,B),j.fillRect(1.5,E,4.5,D),e.clhs.click(function(a){var b=a.pageY-e.lhs_xyoffset.top-B/2,c=Math.max(0,b/f.height*e.lhs_scroller.get(0).scrollHeight);e.lhs_scroller.scrollTop(c)}),e.crhs.click(function(a){var b=a.pageY-e.rhs_xyoffset.top-D/2,c=Math.max(0,b/g.height*e.rhs_scroller.get(0).scrollHeight);e.rhs_scroller.scrollTop(c)})},trace:function(a){this.settings._debug.indexOf(a)>=0&&(arguments[0]=a+":",console.log([].slice.apply(arguments)))}}),c.pluginMaker=function(a){c.fn[a.prototype.name]=function(b){var f,d=c.makeArray(arguments),e=d.slice(1);return this.each(function(){var g=c.data(this,a.prototype.name);if(g){if("string"==typeof b)f=g[b].apply(g,e);else if(g.update)return g.update.apply(g,d)}else{new a(this,b)}}),void 0!=f?f:void 0}},c.pluginMaker(e.mergely)}(window,document,jQuery,CodeMirror);
\ No newline at end of file
+"use strict";(function(window,document,jQuery,CodeMirror){var Mgly={};Mgly.Timer=function(){var self=this;self.start=function(){self.t0=(new Date).getTime()};self.stop=function(){var t1=(new Date).getTime();var d=t1-self.t0;self.t0=t1;return d};self.start()};Mgly.ChangeExpression=new RegExp(/(^(?![><\-])*\d+(?:,\d+)?)([acd])(\d+(?:,\d+)?)/);Mgly.DiffParser=function(diff){var changes=[];var change_id=0;var diff_lines=diff.split(/\n/);for(var i=0;i0&&change.op=="c")li+=1;removed(li,li+lchange.length)}if(change.op!="d"){li=d.getLines("rhs").slice(0,change["rhs-line-from"]).join(" ").length;lj=change["rhs-line-to"]+1;var rchange=d.getLines("rhs").slice(change["rhs-line-from"],lj).join(" ");if(change.op=="a")rchange+=" ";else if(li>0&&change.op=="c")li+=1;added(li,li+rchange.length)}}}});Mgly.CodeifyText=function(settings){this._max_code=0;this._diff_codes={};this.ctxs={};this.options={ignorews:false};jQuery.extend(this,settings);this.lhs=settings.lhs.split("\n");this.rhs=settings.rhs.split("\n")};jQuery.extend(Mgly.CodeifyText.prototype,{getCodes:function(side){if(!this.ctxs.hasOwnProperty(side)){var ctx=this._diff_ctx(this[side]);this.ctxs[side]=ctx;ctx.codes.length=Object.keys(ctx.codes).length}return this.ctxs[side].codes},getLines:function(side){return this.ctxs[side].lines},_diff_ctx:function(lines){var ctx={i:0,codes:{},lines:lines};this._codeify(lines,ctx);return ctx},_codeify:function(lines,ctx){var code=this._max_code;for(var i=0;i0)change="a";else if(item.lhs_deleted_count>0&&item.rhs_inserted_count==0)change="d";if(item.lhs_deleted_count==1)lhs_str=item.lhs_start+1;else if(item.lhs_deleted_count==0)lhs_str=item.lhs_start;else lhs_str=item.lhs_start+1+","+(item.lhs_start+item.lhs_deleted_count);if(item.rhs_inserted_count==1)rhs_str=item.rhs_start+1;else if(item.rhs_inserted_count==0)rhs_str=item.rhs_start;else rhs_str=item.rhs_start+1+","+(item.rhs_start+item.rhs_inserted_count);nf+=lhs_str+change+rhs_str+"\n";var lhs_lines=this.getLines("lhs");var rhs_lines=this.getLines("rhs");if(rhs_lines&&lhs_lines){var i;for(i=item.lhs_start;i "+rhs_lines[i]+"\n"}}}return nf},_lcs:function(lhs_ctx,lhs_lower,lhs_upper,rhs_ctx,rhs_lower,rhs_upper,vector_u,vector_d){while(lhs_lower=x){x=vector_d[offset_down+k+1]}}y=x-k;while(xkup-d&&vector_u[offset_up+k-1]lhs_lower&&y>rhs_lower&&lhs_ctx.codes[x-1]==rhs_ctx.codes[y-1]){x--;y--}vector_u[offset_up+k]=x;if(!odd&&kdown-d<=k&&k<=kdown+d){if(vector_u[offset_up+k]<=vector_d[offset_down+k]){ret.x=vector_d[offset_down+k];ret.y=vector_d[offset_down+k]-k;return ret}}}}throw"the algorithm should never come here."},_optimize:function(ctx){var start=0,end=0;while(start=rhs_ctx.codes.length||lhs_ctx.modified[lhs_line]))lhs_line++;while(rhs_line=lhs_ctx.codes.length||rhs_ctx.modified[rhs_line]))rhs_line++;if(lhs_start';merge_rhs_button=''}else{var style="opacity:0.4;width:10px;height:15px;background-color:#888;cursor:pointer;text-align:center;color:#eee;border:1px solid: #222;margin-right:5px;margin-top: -2px;";merge_lhs_button='<
';merge_rhs_button='>
'}this.merge_rhs_button=jQuery(merge_rhs_button);this.merge_lhs_button=jQuery(merge_lhs_button);var height=this.settings.editor_height;var width=this.settings.editor_width;this.element.append(jQuery(''));this.element.append(jQuery(''));this.element.append(jQuery(''));var rmargin=jQuery('');if(!this.settings.sidebar){this.element.find(".mergely-margin").css({display:"none"})}if(this.settings.rhs_margin=="left"){this.element.append(rmargin)}this.element.append(jQuery(''));if(this.settings.rhs_margin!="left"){this.element.append(rmargin)}var color=jQuery('').appendTo("body").css("border-top-color");this.current_diff_color=color;var cmstyle="#"+this.id+" .CodeMirror-gutter-text { padding: 5px 0 0 0; }"+"#"+this.id+" .CodeMirror-lines pre, "+"#"+this.id+" .CodeMirror-gutter-text pre { line-height: 18px; }"+".CodeMirror-linewidget { overflow: hidden; };";if(this.settings.autoresize){cmstyle+=this.id+" .CodeMirror-scroll { height: 100%; overflow: auto; }"}cmstyle+="\n.CodeMirror { line-height: 18px; }";jQuery('").appendTo("head");var rhstx=this.element.find("#"+this.id+"-rhs").get(0);if(!rhstx){console.error("rhs textarea not defined - Mergely not initialized properly");return}var lhstx=this.element.find("#"+this.id+"-lhs").get(0);if(!rhstx){console.error("lhs textarea not defined - Mergely not initialized properly");return}var self=this;this.editor=[];this.editor[this.id+"-lhs"]=CodeMirror.fromTextArea(lhstx,this.lhs_cmsettings);this.editor[this.id+"-rhs"]=CodeMirror.fromTextArea(rhstx,this.rhs_cmsettings);this.editor[this.id+"-lhs"].on("change",function(){if(self.settings.autoupdate)self._changing(self.id+"-lhs",self.id+"-rhs")});this.editor[this.id+"-lhs"].on("scroll",function(){self._scrolling(self.id+"-lhs")});this.editor[this.id+"-rhs"].on("change",function(){if(self.settings.autoupdate)self._changing(self.id+"-lhs",self.id+"-rhs")});this.editor[this.id+"-rhs"].on("scroll",function(){self._scrolling(self.id+"-rhs")});if(this.settings.autoresize){var sz_timeout1=null;var sz=function(init){if(self.settings.resize)self.settings.resize(init);self.editor[self.id+"-lhs"].refresh();self.editor[self.id+"-rhs"].refresh();if(self.settings.autoupdate){self._changing(self.id+"-lhs",self.id+"-rhs")}};jQuery(window).on("resize.mergely",function(){if(sz_timeout1)clearTimeout(sz_timeout1);sz_timeout1=setTimeout(sz,self.settings.resize_timeout)});sz(true)}function gutterClicked(side,line,ev){if(ev.target&&jQuery(ev.target).closest(".merge-button").length>0){return}var i,change;for(i=0;i=change[side+"-line-from"]&&line<=change[side+"-line-to"]){this._current_diff=i;setTimeout(function(){this.scrollToDiff()}.bind(this),10);break}}}this.editor[this.id+"-lhs"].on("gutterClick",function(cm,n,gutterClass,ev){gutterClicked.call(this,"lhs",n,ev)}.bind(this));this.editor[this.id+"-rhs"].on("gutterClick",function(cm,n,gutterClass,ev){gutterClicked.call(this,"rhs",n,ev)}.bind(this));var setv;if(this.settings.lhs){setv=this.editor[this.id+"-lhs"].getDoc().setValue;this.settings.lhs(setv.bind(this.editor[this.id+"-lhs"].getDoc()))}if(this.settings.rhs){setv=this.editor[this.id+"-rhs"].getDoc().setValue;this.settings.rhs(setv.bind(this.editor[this.id+"-rhs"].getDoc()))}},_scroll_to_change:function(change){if(!change)return;var self=this;var led=self.editor[self.id+"-lhs"];var red=self.editor[self.id+"-rhs"];led.setCursor(Math.max(change["lhs-line-from"],0),0);red.setCursor(Math.max(change["rhs-line-from"],0),0);if(change["lhs-line-to"]>=0){led.scrollIntoView({line:change["lhs-line-to"]})}},_scrolling:function(editor_name){if(this._skipscroll[editor_name]===true){this._skipscroll[editor_name]=false;return}var scroller=jQuery(this.editor[editor_name].getScrollerElement());if(this.midway==undefined){this.midway=(scroller.height()/2+scroller.offset().top).toFixed(2)}var midline=this.editor[editor_name].coordsChar({left:0,top:this.midway});var top_to=scroller.scrollTop();var left_to=scroller.scrollLeft();this.trace("scroll","side",editor_name);this.trace("scroll","midway",this.midway);this.trace("scroll","midline",midline);this.trace("scroll","top_to",top_to);this.trace("scroll","left_to",left_to);var editor_name1=this.id+"-lhs";var editor_name2=this.id+"-rhs";for(var name in this.editor){if(!this.editor.hasOwnProperty(name))continue;if(editor_name==name)continue;var this_side=editor_name.replace(this.id+"-","");var other_side=name.replace(this.id+"-","");var top_adjust=0;var last_change=null;var force_scroll=false;for(var i=0;i=change[this_side+"-line-from"]){last_change=change;if(midline.line>=last_change[this_side+"-line-to"]){if(!change.hasOwnProperty(this_side+"-y-start")||!change.hasOwnProperty(this_side+"-y-end")||!change.hasOwnProperty(other_side+"-y-start")||!change.hasOwnProperty(other_side+"-y-end")){force_scroll=true}else{top_adjust+=change[this_side+"-y-end"]-change[this_side+"-y-start"]-(change[other_side+"-y-end"]-change[other_side+"-y-start"])}}}}var vp=this.editor[name].getViewport();var scroll=true;if(last_change){this.trace("scroll","last change before midline",last_change);if(midline.line>=vp.from&&midline<=vp.to){scroll=false}}this.trace("scroll","scroll",scroll);if(scroll||force_scroll){this.trace("scroll","scrolling other side",top_to-top_adjust);this._skipscroll[name]=true;this.editor[name].scrollTo(left_to,top_to-top_adjust)}else this.trace("scroll","not scrolling other side");if(this.settings.autoupdate){var timer=new Mgly.Timer;this._calculate_offsets(editor_name1,editor_name2,this.changes);this.trace("change","offsets time",timer.stop());this._markup_changes(editor_name1,editor_name2,this.changes);this.trace("change","markup time",timer.stop());this._draw_diff(editor_name1,editor_name2,this.changes);this.trace("change","draw time",timer.stop())}this.trace("scroll","scrolled")}},_changing:function(editor_name1,editor_name2){this.trace("change","changing-timeout",this.changed_timeout);var self=this;if(this.changed_timeout!=null)clearTimeout(this.changed_timeout);this.changed_timeout=setTimeout(function(){var timer=new Mgly.Timer;self._changed(editor_name1,editor_name2);self.trace("change","total time",timer.stop())},this.settings.change_timeout)},_changed:function(editor_name1,editor_name2){this._clear();this._diff(editor_name1,editor_name2)},_clear:function(){var self=this,name,editor,fns,timer,i,change,l;var clear_changes=function(){timer=new Mgly.Timer;for(i=0,l=editor.lineCount();ivp.from&&change["lhs-line-to"]>vp.to||change["rhs-line-from"]vp.from&&change["rhs-line-to"]>vp.to){return false}return true},_set_top_offset:function(editor_name1){var saveY=this.editor[editor_name1].getScrollInfo().top;this.editor[editor_name1].scrollTo(null,0);var topnode=this.element.find(".CodeMirror-measure").first();var top_offset=topnode.offset().top-4;if(!top_offset)return false;this.editor[editor_name1].scrollTo(null,saveY);this.draw_top_offset=.5-top_offset;return true},_calculate_offsets:function(editor_name1,editor_name2,changes){if(this.em_height==null){if(!this._set_top_offset(editor_name1))return;this.em_height=this.editor[editor_name1].defaultTextHeight();if(!this.em_height){console.warn("Failed to calculate offsets, using 18 by default");this.em_height=18}this.draw_lhs_min=.5;var c=jQuery("#"+editor_name1+"-"+editor_name2+"-canvas");if(!c.length){console.error("failed to find canvas","#"+editor_name1+"-"+editor_name2+"-canvas")}if(!c.width()){console.error("canvas width is 0");return}this.draw_mid_width=jQuery("#"+editor_name1+"-"+editor_name2+"-canvas").width();this.draw_rhs_max=this.draw_mid_width-.5;this.draw_lhs_width=5;this.draw_rhs_width=5;this.trace("calc","change offsets calculated",{top_offset:this.draw_top_offset,lhs_min:this.draw_lhs_min,rhs_max:this.draw_rhs_max,lhs_width:this.draw_lhs_width,rhs_width:this.draw_rhs_width})}var lhschc=this.editor[editor_name1].charCoords({line:0});var rhschc=this.editor[editor_name2].charCoords({line:0});var vp=this._get_viewport(editor_name1,editor_name2);for(var i=0;i=0?change["lhs-line-from"]:0;var llt=change["lhs-line-to"]>=0?change["lhs-line-to"]:0;var rlf=change["rhs-line-from"]>=0?change["rhs-line-from"]:0;var rlt=change["rhs-line-to"]>=0?change["rhs-line-to"]:0;var ls,le,rs,re,tls,tle,lhseh,lhssh,rhssh,rhseh;if(this.editor[editor_name1].getOption("lineWrapping")||this.editor[editor_name2].getOption("lineWrapping")){tls=this.editor[editor_name1].cursorCoords({line:llf,ch:0},"page");lhssh=this.editor[editor_name1].getLineHandle(llf);ls={top:tls.top,bottom:tls.top+lhssh.height};tle=this.editor[editor_name1].cursorCoords({line:llt,ch:0},"page");lhseh=this.editor[editor_name1].getLineHandle(llt);le={top:tle.top,bottom:tle.top+lhseh.height};tls=this.editor[editor_name2].cursorCoords({line:rlf,ch:0},"page");rhssh=this.editor[editor_name2].getLineHandle(rlf);rs={top:tls.top,bottom:tls.top+rhssh.height};tle=this.editor[editor_name2].cursorCoords({line:rlt,ch:0},"page");rhseh=this.editor[editor_name2].getLineHandle(rlt);re={top:tle.top,bottom:tle.top+rhseh.height}}else{ls={top:lhschc.top+llf*this.em_height,bottom:lhschc.bottom+llf*this.em_height+2};le={top:lhschc.top+llt*this.em_height,bottom:lhschc.bottom+llt*this.em_height+2};rs={top:rhschc.top+rlf*this.em_height,bottom:rhschc.bottom+rlf*this.em_height+2};re={top:rhschc.top+rlt*this.em_height,bottom:rhschc.bottom+rlt*this.em_height+2}}if(change["op"]=="a"){if(rlf>0){ls.top=ls.bottom;ls.bottom+=this.em_height;le=ls}}else if(change["op"]=="d"){if(llf>0){rs.top=rs.bottom;rs.bottom+=this.em_height;re=rs}}change["lhs-y-start"]=this.draw_top_offset+ls.top;if(change["op"]=="c"||change["op"]=="d"){change["lhs-y-end"]=this.draw_top_offset+le.bottom}else{change["lhs-y-end"]=this.draw_top_offset+le.top}change["rhs-y-start"]=this.draw_top_offset+rs.top;if(change["op"]=="c"||change["op"]=="a"){change["rhs-y-end"]=this.draw_top_offset+re.bottom}else{change["rhs-y-end"]=this.draw_top_offset+re.top}this.trace("calc","change calculated",i,change)}return changes},_markup_changes:function(editor_name1,editor_name2,changes){this.element.find(".merge-button").remove();var self=this;var led=this.editor[editor_name1];var red=this.editor[editor_name2];var current_diff=this._current_diff;var timer=new Mgly.Timer;led.operation(function(){for(var i=0;i=0?change["lhs-line-from"]:0;var llt=change["lhs-line-to"]>=0?change["lhs-line-to"]:0;var rlf=change["rhs-line-from"]>=0?change["rhs-line-from"]:0;var rlt=change["rhs-line-to"]>=0?change["rhs-line-to"]:0;var clazz=["mergely","lhs",change["op"],"cid-"+i];led.addLineClass(llf,"background","start");led.addLineClass(llt,"background","end");if(change["lhs-line-from"]<0){clazz.push("empty")}if(current_diff==i){if(llf!=llt){led.addLineClass(llf,"background","current")}led.addLineClass(llt,"background","current")}if(llf==0&&llt==0&&rlf==0){led.addLineClass(llf,"background",clazz.join(" "));led.addLineClass(llf,"background","first")}else{for(var j=llf;j<=llt;++j){led.addLineClass(j,"background",clazz.join(" "));led.addLineClass(j,"background",clazz.join(" "))}}if(!red.getOption("readOnly")){var rhs_button=self.merge_rhs_button.clone();if(rhs_button.button){rhs_button.button({icons:{primary:"ui-icon-triangle-1-e"},text:false})}rhs_button.addClass("merge-button");rhs_button.attr("id","merge-rhs-"+i);led.setGutterMarker(llf,"merge",rhs_button.get(0))}}});var vp=this._get_viewport(editor_name1,editor_name2);this.trace("change","markup lhs-editor time",timer.stop());red.operation(function(){for(var i=0;i=0?change["lhs-line-from"]:0;var llt=change["lhs-line-to"]>=0?change["lhs-line-to"]:0
+;var rlf=change["rhs-line-from"]>=0?change["rhs-line-from"]:0;var rlt=change["rhs-line-to"]>=0?change["rhs-line-to"]:0;if(!self._is_change_in_view(vp,change)){continue}var clazz=["mergely","rhs",change["op"],"cid-"+i];red.addLineClass(rlf,"background","start");red.addLineClass(rlt,"background","end");if(change["rhs-line-from"]<0){clazz.push("empty")}if(current_diff==i){if(rlf!=rlt){red.addLineClass(rlf,"background","current")}red.addLineClass(rlt,"background","current")}if(rlf==0&&rlt==0&&llf==0){red.addLineClass(rlf,"background",clazz.join(" "));red.addLineClass(rlf,"background","first")}else{for(var j=rlf;j<=rlt;++j){red.addLineClass(j,"background",clazz.join(" "));red.addLineClass(j,"background",clazz.join(" "))}}if(!led.getOption("readOnly")){var lhs_button=self.merge_lhs_button.clone();if(lhs_button.button){lhs_button.button({icons:{primary:"ui-icon-triangle-1-w"},text:false})}lhs_button.addClass("merge-button");lhs_button.attr("id","merge-lhs-"+i);red.setGutterMarker(rlf,"merge",lhs_button.get(0))}}});this.trace("change","markup rhs-editor time",timer.stop());var marktext=[],i,j,k,p;for(i=0;this.settings.lcs&&i=0?change["lhs-line-from"]:0;var llt=change["lhs-line-to"]>=0?change["lhs-line-to"]:0;var rlf=change["rhs-line-from"]>=0?change["rhs-line-from"]:0;var rlt=change["rhs-line-to"]>=0?change["rhs-line-to"]:0;if(!this._is_change_in_view(vp,change)){continue}if(change["op"]=="d"){var from=llf;var to=llt;var to_ln=led.lineInfo(to);if(to_ln){marktext.push([led,{line:from,ch:0},{line:to,ch:to_ln.text.length},{className:"mergely ch d lhs"}])}}else if(change["op"]=="c"){for(j=llf,k=rlf,p=0;j>=0&&j<=llt||k>=0&&k<=rlt;++j,++k){var lhs_line,rhs_line;if(k+p>rlt){lhs_line=led.getLine(j);marktext.push([led,{line:j,ch:0},{line:j,ch:lhs_line.length},{className:"mergely ch d lhs"}]);continue}if(j+p>llt){rhs_line=red.getLine(k);marktext.push([red,{line:k,ch:0},{line:k,ch:rhs_line.length},{className:"mergely ch a rhs"}]);continue}lhs_line=led.getLine(j);rhs_line=red.getLine(k);var lcs=new Mgly.LCS(lhs_line,rhs_line);lcs.diff(function added(from,to){marktext.push([red,{line:k,ch:from},{line:k,ch:to},{className:"mergely ch a rhs"}])},function removed(from,to){marktext.push([led,{line:j,ch:from},{line:j,ch:to},{className:"mergely ch d lhs"}])})}}}this.trace("change","LCS marktext time",timer.stop());led.operation(function(){for(var i=0;i=from;--i){ed[oside].setCursor({line:i,ch:-1});ed[oside].execCommand("deleteLine")}}}else if(side=="lhs"){if(change["op"]=="a"){from=parseInt(change[oside+"-line-from"],10);to=parseInt(change[oside+"-line-to"],10);for(i=to;i>=from;--i){ed[oside].setCursor({line:i,ch:-1});ed[oside].execCommand("deleteLine")}}else{ed[oside].replaceRange(text,CodeMirror.Pos(change[oside+"-line-from"]+1,0))}}ed["lhs"].setValue(ed["lhs"].getValue());ed["rhs"].setValue(ed["rhs"].getValue());this._scroll_to_change(change)},_draw_info:function(editor_name1,editor_name2){var visible_page_height=jQuery(this.editor[editor_name1].getScrollerElement()).height();var gutter_height=jQuery(this.editor[editor_name1].getScrollerElement()).children(":first-child").height();var dcanvas=document.getElementById(editor_name1+"-"+editor_name2+"-canvas");if(dcanvas==undefined)throw"Failed to find: "+editor_name1+"-"+editor_name2+"-canvas";var clhs=this.element.find("#"+this.id+"-lhs-margin");var crhs=this.element.find("#"+this.id+"-rhs-margin");return{visible_page_height:visible_page_height,gutter_height:gutter_height,visible_page_ratio:visible_page_height/gutter_height,margin_ratio:visible_page_height/gutter_height,lhs_scroller:jQuery(this.editor[editor_name1].getScrollerElement()),rhs_scroller:jQuery(this.editor[editor_name2].getScrollerElement()),lhs_lines:this.editor[editor_name1].lineCount(),rhs_lines:this.editor[editor_name2].lineCount(),dcanvas:dcanvas,clhs:clhs,crhs:crhs,lhs_xyoffset:jQuery(clhs).offset(),rhs_xyoffset:jQuery(crhs).offset()}},_draw_diff:function(editor_name1,editor_name2,changes){var ex=this._draw_info(editor_name1,editor_name2);var mcanvas_lhs=ex.clhs.get(0);var mcanvas_rhs=ex.crhs.get(0);var ctx=ex.dcanvas.getContext("2d");var ctx_lhs=mcanvas_lhs.getContext("2d");var ctx_rhs=mcanvas_rhs.getContext("2d");this.trace("draw","visible_page_height",ex.visible_page_height);this.trace("draw","gutter_height",ex.gutter_height);this.trace("draw","visible_page_ratio",ex.visible_page_ratio);this.trace("draw","lhs-scroller-top",ex.lhs_scroller.scrollTop());this.trace("draw","rhs-scroller-top",ex.rhs_scroller.scrollTop());jQuery.each(this.element.find("canvas"),function(){jQuery(this).get(0).height=ex.visible_page_height});ex.clhs.unbind("click");ex.crhs.unbind("click");ctx_lhs.beginPath();ctx_lhs.fillStyle=this.settings.bgcolor;ctx_lhs.strokeStyle="#888";ctx_lhs.fillRect(0,0,6.5,ex.visible_page_height);ctx_lhs.strokeRect(0,0,6.5,ex.visible_page_height);ctx_rhs.beginPath();ctx_rhs.fillStyle=this.settings.bgcolor;ctx_rhs.strokeStyle="#888";ctx_rhs.fillRect(0,0,6.5,ex.visible_page_height);ctx_rhs.strokeRect(0,0,6.5,ex.visible_page_height);var vp=this._get_viewport(editor_name1,editor_name2);for(var i=0;i=0){arguments[0]=name+":";console.log([].slice.apply(arguments))}}});jQuery.pluginMaker=function(plugin){jQuery.fn[plugin.prototype.name]=function(options){var args=jQuery.makeArray(arguments),after=args.slice(1);var rc;this.each(function(){var instance=jQuery.data(this,plugin.prototype.name);if(instance){if(typeof options=="string"){rc=instance[options].apply(instance,after)}else if(instance.update){return instance.update.apply(instance,args)}}else{var _plugin=new plugin(this,options)}});if(rc!=undefined)return rc}};jQuery.pluginMaker(Mgly.mergely)})(window,document,jQuery,CodeMirror);