/*! @fui/materials 2020-06-08 19:14:47 */

!function(){BI.Plugin.registerWidget("bi.grid_table_scrollbar",function(ob){return BI.isIE9Below()?BI.extend(ob,{type:"bi.native_table_scrollbar"}):ob}),BI.Plugin.registerWidget("bi.grid_table_horizontal_scrollbar",function(ob){return BI.isIE9Below()?BI.extend(ob,{type:"bi.native_table_horizontal_scrollbar"}):ob}),BI.Plugin.registerWidget("bi.grid_table",function(ob){return BI.isChrome()&&BI.isWindows()&&!BI.isEdge()?ob:BI.extend(ob,{type:"bi.quick_grid_table"})}),BI.Plugin.registerWidget("bi.collection_table",function(ob){return BI.isChrome()&&BI.isWindows()&&!BI.isEdge()?ob:BI.extend(ob,{type:"bi.quick_collection_table"})}),BI.Plugin.registerWidget("bi.watermark",function(ob){return BI.isIE9Below()?BI.extend(ob,{type:"bi.div.watermark"}):ob}),_global.BI.$&&BI.$(function(){BI.isIE9Below()&&(BI.GridTableScrollbar.SIZE=18)})}(),_.extend(Array.prototype,{contains:function(o){return this.indexOf(o)>-1},remove:function(o){var index=this.indexOf(o);return index!==-1&&this.splice(index,1),this},pushArray:function(array){return BI.pushArray(this,array)},pushDistinct:function(obj){return BI.pushDistinct(this,obj)},pushDistinctArray:function(array){return BI.pushDistinctArray(this,array)}}),BI.prepares.push(function(){Date._DN=[BI.i18nText("BI-Basic_Sunday"),BI.i18nText("BI-Basic_Monday"),BI.i18nText("BI-Basic_Tuesday"),BI.i18nText("BI-Basic_Wednesday"),BI.i18nText("BI-Basic_Thursday"),BI.i18nText("BI-Basic_Friday"),BI.i18nText("BI-Basic_Saturday"),BI.i18nText("BI-Basic_Sunday")],Date._SDN=[BI.i18nText("BI-Basic_Simple_Sunday"),BI.i18nText("BI-Basic_Simple_Monday"),BI.i18nText("BI-Basic_Simple_Tuesday"),BI.i18nText("BI-Basic_Simple_Wednesday"),BI.i18nText("BI-Basic_Simple_Thursday"),BI.i18nText("BI-Basic_Simple_Friday"),BI.i18nText("BI-Basic_Simple_Saturday"),BI.i18nText("BI-Basic_Simple_Sunday")],Date._FD=1,Date._MN=[BI.i18nText("BI-Basic_January"),BI.i18nText("BI-Basic_February"),BI.i18nText("BI-Basic_March"),BI.i18nText("BI-Basic_April"),BI.i18nText("BI-Basic_May"),BI.i18nText("BI-Basic_June"),BI.i18nText("BI-Basic_July"),BI.i18nText("BI-Basic_August"),BI.i18nText("BI-Basic_September"),BI.i18nText("BI-Basic_October"),BI.i18nText("BI-Basic_November"),BI.i18nText("BI-Basic_December")],Date._SMN=[0,1,2,3,4,5,6,7,8,9,10,11],Date._QN=["",BI.i18nText("BI-Quarter_1"),BI.i18nText("BI-Quarter_2"),BI.i18nText("BI-Quarter_3"),BI.i18nText("BI-Quarter_4")],Date._MD=[31,28,31,30,31,30,31,31,30,31,30,31],Date._OFFSET=[0,-1,-2,-3,-4,-5,-6]}),Date.SECOND=1e3,Date.MINUTE=60*Date.SECOND,Date.HOUR=60*Date.MINUTE,Date.DAY=24*Date.HOUR,Date.WEEK=7*Date.DAY,Date.prototype.getTimezone=function(){return BI.getTimezone(this)},Date.prototype.getMonthDays=function(month){return BI.getMonthDays(this,month)},Date.prototype.getLastDateOfMonth=function(){return BI.getLastDateOfMonth(this)},Date.prototype.getDayOfYear=function(){return BI.getDayOfYear(this)},Date.prototype.getWeekNumber=function(){return BI.getWeekNumber(this)},Date.prototype.getQuarter=function(){return BI.getQuarter(this)},Date.prototype.getOffsetDate=function(offset){return BI.getOffsetDate(this,offset)},Date.prototype.getOffsetQuarter=function(n){return BI.getOffsetQuarter(this,n)},Date.prototype.getQuarterStartMonth=function(){return BI.getQuarter(this)},Date.prototype.getQuarterStartDate=function(){return BI.getQuarterStartDate(this)},Date.prototype.getQuarterEndDate=function(){return BI.getQuarterEndDate(this)},Date.prototype.getOffsetMonth=function(n){return BI.getOffsetMonth(this,n)},Date.prototype.getWeekStartDate=function(){return BI.getWeekStartDate(this)},Date.prototype.getWeekEndDate=function(){return BI.getWeekEndDate(this)},Date.prototype.print=function(str){return BI.print(this,str)},Function.prototype.before=function(func){return BI.beforeFunc(this,func)},Function.prototype.after=function(func){return BI.afterFunc(this,func)},Number.prototype.add=function(arg){return BI.add(this,arg)},Number.prototype.sub=function(arg){return BI.sub(this,arg)},Number.prototype.mul=function(arg){return BI.mul(this,arg)},Number.prototype.div=function(arg){return BI.div(this,arg)},_.extend(String.prototype,{startWith:function(startTag){return BI.startWith(this,startTag)},endWith:function(endTag){return BI.endWith(this,endTag)},getQuery:function(name){return BI.getQuery(this,name)},appendQuery:function(paras){return BI.appendQuery(this,paras)},replaceAll:function(s1,s2){return BI.replaceAll(this,s1,s2)},perfectStart:function(start){return BI.perfectStart(this,start)},allIndexOf:function(sub){return BI.allIndexOf(this,sub)}}),!function(){var MD5=function(hexcase){this.hexcase=hexcase?1:0,this.b64pad="",this.chrsz=8};MD5.prototype.hex_md5=function(s){return this.binl2hex(this.core_md5(this.str2binl(s),s.length*this.chrsz))},MD5.prototype.hex_md5_salt=function(s){for(var md5ed=this.hex_md5(s),items1=[],items2=[],i=0;i<md5ed.length;i++)i%2===0?items1.push(md5ed.charAt(i)):items2.push(md5ed.charAt(i));var result=":"+items1.join("")+items2.join("");return result},MD5.prototype.b64_md5=function(s){return this.binl2b64(this.core_md5(this.str2binl(s),s.length*this.chrsz))},MD5.prototype.hex_hmac_md5=function(key,data){return this.binl2hex(this.core_hmac_md5(key,data))},MD5.prototype.b64_hmac_md5=function(key,data){return this.binl2b64(this.core_hmac_md5(key,data))},MD5.prototype.calcMD5=function(s){return this.binl2hex(this.core_md5(this.str2binl(s),s.length*this.chrsz))},MD5.prototype.core_md5=function(x,len){x[len>>5]|=128<<len%32,x[(len+64>>>9<<4)+14]=len;for(var a=1732584193,b=-271733879,c=-1732584194,d=271733878,i=0;i<x.length;i+=16){var olda=a,oldb=b,oldc=c,oldd=d;a=this.md5_ff(a,b,c,d,x[i+0],7,-680876936),d=this.md5_ff(d,a,b,c,x[i+1],12,-389564586),c=this.md5_ff(c,d,a,b,x[i+2],17,606105819),b=this.md5_ff(b,c,d,a,x[i+3],22,-1044525330),a=this.md5_ff(a,b,c,d,x[i+4],7,-176418897),d=this.md5_ff(d,a,b,c,x[i+5],12,1200080426),c=this.md5_ff(c,d,a,b,x[i+6],17,-1473231341),b=this.md5_ff(b,c,d,a,x[i+7],22,-45705983),a=this.md5_ff(a,b,c,d,x[i+8],7,1770035416),d=this.md5_ff(d,a,b,c,x[i+9],12,-1958414417),c=this.md5_ff(c,d,a,b,x[i+10],17,-42063),b=this.md5_ff(b,c,d,a,x[i+11],22,-1990404162),a=this.md5_ff(a,b,c,d,x[i+12],7,1804603682),d=this.md5_ff(d,a,b,c,x[i+13],12,-40341101),c=this.md5_ff(c,d,a,b,x[i+14],17,-1502002290),b=this.md5_ff(b,c,d,a,x[i+15],22,1236535329),a=this.md5_gg(a,b,c,d,x[i+1],5,-165796510),d=this.md5_gg(d,a,b,c,x[i+6],9,-1069501632),c=this.md5_gg(c,d,a,b,x[i+11],14,643717713),b=this.md5_gg(b,c,d,a,x[i+0],20,-373897302),a=this.md5_gg(a,b,c,d,x[i+5],5,-701558691),d=this.md5_gg(d,a,b,c,x[i+10],9,38016083),c=this.md5_gg(c,d,a,b,x[i+15],14,-660478335),b=this.md5_gg(b,c,d,a,x[i+4],20,-405537848),a=this.md5_gg(a,b,c,d,x[i+9],5,568446438),d=this.md5_gg(d,a,b,c,x[i+14],9,-1019803690),c=this.md5_gg(c,d,a,b,x[i+3],14,-187363961),b=this.md5_gg(b,c,d,a,x[i+8],20,1163531501),a=this.md5_gg(a,b,c,d,x[i+13],5,-1444681467),d=this.md5_gg(d,a,b,c,x[i+2],9,-51403784),c=this.md5_gg(c,d,a,b,x[i+7],14,1735328473),b=this.md5_gg(b,c,d,a,x[i+12],20,-1926607734),a=this.md5_hh(a,b,c,d,x[i+5],4,-378558),d=this.md5_hh(d,a,b,c,x[i+8],11,-2022574463),c=this.md5_hh(c,d,a,b,x[i+11],16,1839030562),b=this.md5_hh(b,c,d,a,x[i+14],23,-35309556),a=this.md5_hh(a,b,c,d,x[i+1],4,-1530992060),d=this.md5_hh(d,a,b,c,x[i+4],11,1272893353),c=this.md5_hh(c,d,a,b,x[i+7],16,-155497632),b=this.md5_hh(b,c,d,a,x[i+10],23,-1094730640),a=this.md5_hh(a,b,c,d,x[i+13],4,681279174),d=this.md5_hh(d,a,b,c,x[i+0],11,-358537222),c=this.md5_hh(c,d,a,b,x[i+3],16,-722521979),b=this.md5_hh(b,c,d,a,x[i+6],23,76029189),a=this.md5_hh(a,b,c,d,x[i+9],4,-640364487),d=this.md5_hh(d,a,b,c,x[i+12],11,-421815835),c=this.md5_hh(c,d,a,b,x[i+15],16,530742520),b=this.md5_hh(b,c,d,a,x[i+2],23,-995338651),a=this.md5_ii(a,b,c,d,x[i+0],6,-198630844),d=this.md5_ii(d,a,b,c,x[i+7],10,1126891415),c=this.md5_ii(c,d,a,b,x[i+14],15,-1416354905),b=this.md5_ii(b,c,d,a,x[i+5],21,-57434055),a=this.md5_ii(a,b,c,d,x[i+12],6,1700485571),d=this.md5_ii(d,a,b,c,x[i+3],10,-1894986606),c=this.md5_ii(c,d,a,b,x[i+10],15,-1051523),b=this.md5_ii(b,c,d,a,x[i+1],21,-2054922799),a=this.md5_ii(a,b,c,d,x[i+8],6,1873313359),d=this.md5_ii(d,a,b,c,x[i+15],10,-30611744),c=this.md5_ii(c,d,a,b,x[i+6],15,-1560198380),b=this.md5_ii(b,c,d,a,x[i+13],21,1309151649),a=this.md5_ii(a,b,c,d,x[i+4],6,-145523070),d=this.md5_ii(d,a,b,c,x[i+11],10,-1120210379),c=this.md5_ii(c,d,a,b,x[i+2],15,718787259),b=this.md5_ii(b,c,d,a,x[i+9],21,-343485551),a=this.safe_add(a,olda),b=this.safe_add(b,oldb),c=this.safe_add(c,oldc),d=this.safe_add(d,oldd)}return Array(a,b,c,d)},MD5.prototype.md5_cmn=function(q,a,b,x,s,t){return this.safe_add(this.bit_rol(this.safe_add(this.safe_add(a,q),this.safe_add(x,t)),s),b)},MD5.prototype.md5_ff=function(a,b,c,d,x,s,t){return this.md5_cmn(b&c|~b&d,a,b,x,s,t)},MD5.prototype.md5_gg=function(a,b,c,d,x,s,t){return this.md5_cmn(b&d|c&~d,a,b,x,s,t)},MD5.prototype.md5_hh=function(a,b,c,d,x,s,t){return this.md5_cmn(b^c^d,a,b,x,s,t)},MD5.prototype.md5_ii=function(a,b,c,d,x,s,t){return this.md5_cmn(c^(b|~d),a,b,x,s,t)},MD5.prototype.core_hmac_md5=function(key,data){var bkey=this.str2binl(key);bkey.length>16&&(bkey=this.core_md5(bkey,key.length*this.chrsz));for(var ipad=Array(16),opad=Array(16),i=0;i<16;i++)ipad[i]=909522486^bkey[i],opad[i]=1549556828^bkey[i];var hash=this.core_md5(ipad.concat(this.str2binl(data)),512+data.length*this.chrsz);return this.core_md5(opad.concat(hash),640)},MD5.prototype.safe_add=function(x,y){var lsw=(65535&x)+(65535&y),msw=(x>>16)+(y>>16)+(lsw>>16);return msw<<16|65535&lsw},MD5.prototype.bit_rol=function(num,cnt){return num<<cnt|num>>>32-cnt},MD5.prototype.str2binl=function(str){for(var bin=Array(),mask=(1<<this.chrsz)-1,i=0;i<str.length*this.chrsz;i+=this.chrsz)bin[i>>5]|=(str.charCodeAt(i/this.chrsz)&mask)<<i%32;return bin},MD5.prototype.binl2hex=function(binarray){for(var hex_tab=this.hexcase?"0123456789ABCDEF":"0123456789abcdef",str="",i=0;i<4*binarray.length;i++)str+=hex_tab.charAt(binarray[i>>2]>>i%4*8+4&15)+hex_tab.charAt(binarray[i>>2]>>i%4*8&15);return str},MD5.prototype.binl2b64=function(binarray){for(var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",str="",i=0;i<4*binarray.length;i+=3)for(var triplet=(binarray[i>>2]>>8*(i%4)&255)<<16|(binarray[i+1>>2]>>8*((i+1)%4)&255)<<8|binarray[i+2>>2]>>8*((i+2)%4)&255,j=0;j<4;j++)str+=8*i+6*j>32*binarray.length?this.b64pad:tab.charAt(triplet>>6*(3-j)&63);return str},BI.MD5=new MD5}(),!function(){_.extend(BI,{initSocket:function(options,cb){function reconnect(v){return v>=BI.size(ports)?(isInit=!1,void callback("fail")):(socket.io.uri=options.requestUrl+":"+ports[v]+options.webSocketNameSpace,socket.io.connect(),void socket.connect())}var ports=options.webSocketPort,portIndex=0,isInit=!0,socket=null,callback=BI.isFunction(cb)?cb:BI.emptyFn;try{return socket=io.connect(options.requestUrl+":"+ports[portIndex]+options.webSocketNameSpace,BI.extend({query:options.query,path:options.webSocketContextName},options.options)),socket.on("connect_error",function(){isInit&&reconnect(++portIndex)}),socket.on("connect",function(){isInit=!1,callback("success")}),socket}catch(e){throw new Error(e)}}})}(),!function(){function _start(value,rules,stop){var result={approved:!0,errors:[],rules:{}};return BI.each(rules,function(ruleName,rule){if(stop&&!result.approved)return!1;if(BI.has(ruleMap,ruleName)){if(rule===!1)return;var args=_getArgs(rule,ruleMap[ruleName]),res=ruleMap[ruleName].validate(value,args),errMsg=BI.has(rule,"message")?rule.message:ruleMap[ruleName].message;errMsg=BI.isFunction(errMsg)?errMsg(value,args):errMsg,result.rules[ruleName]={approved:res,errors:res?"":errMsg},res||(result.errors.push(errMsg),result.approved=!1)}else _global.console&&console.error(ruleName+" is not support")}),result}function _getArgs(constraint,rule){var pars={},options=rule.options,expects=rule.expects,len=BI.size(expects);return BI.isNotEmptyArray(expects)&&BI.each(expects,function(i,expect){BI.has(constraint,expect)?pars[expect]=constraint[expect]:len<=1&&(BI.isKey(constraint)||BI.isRegExp(constraint))?pars[expect]=constraint:len<=1&&BI.isFunction(constraint)?pars[expect]=constraint():_global.console&&console.error("expects the "+expects+" parameter")}),BI.isNotEmptyArray(options)&&BI.each(options,function(i,option){BI.has(constraint,option)&&(pars[option]=constraint[option])}),pars}var ruleMap={required:{message:"required",validate:function(value){return BI.isNotEmptyString(value)||BI.isNotEmptyArray(value)||BI.isNotEmptyObject(value)}},range:{validate:function(value,pars){return BI.isNumeric(value)?value>=pars.min&&value<=pars.max:!!BI.isString(value)&&(BI.size(value)>=pars.min&&BI.size(value)<=pars.max)},message:"not in range",expects:["min","max"]},min:{message:"not min",validate:function(value,pars){return BI.size(value)>=pars.value},expects:["value"]},max:{message:function(value,pars){return value+" max than "+pars.value},validate:function(value,pars){return BI.size(value)<=pars.value},expects:["value"]},equal:{message:"not equal",validate:function(value,pars){return BI.isEqual(value,pars.value)},expects:["value"]},regex:{message:"not match",validate:function(value,pars){return BI.isRegExp(pars.value)?pars.value.test(value):void(_global.console&&console.error(pars.value+" is not a valid regular expression"))},expects:["value"]}},validator=function(){this.init=function(rules){ruleMap=BI.extend(ruleMap,rules)},this.validate=function(val,rules,stop){if(BI.isObject(rules))return _start(val,rules,stop)},this.addRule=function(name,rule){return BI.has(ruleMap,name)?void(_global.console&&console.error("rule:["+name+"] has been registed")):void(ruleMap[name]=rule)}};BI.validator=new validator}();var _global;_global="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,null==_global.BI&&(_global.BI={prepares:[]}),null==_global.BI.prepares&&(_global.BI.prepares=[]);try{!function(f){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=f();else if("function"==typeof define&&define.amd)define([],f);else{var g;g="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,g.Clipboard=f()}}(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){function closest(element,selector){for(;element&&element.nodeType!==DOCUMENT_NODE_TYPE;){if(element.matches(selector))return element;element=element.parentNode}}var DOCUMENT_NODE_TYPE=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var proto=Element.prototype;proto.matches=proto.matchesSelector||proto.mozMatchesSelector||proto.msMatchesSelector||proto.oMatchesSelector||proto.webkitMatchesSelector}module.exports=closest},{}],2:[function(require,module,exports){function delegate(element,selector,type,callback,useCapture){var listenerFn=listener.apply(this,arguments);return element.addEventListener(type,listenerFn,useCapture),{destroy:function(){element.removeEventListener(type,listenerFn,useCapture)}}}function listener(element,selector,type,callback){return function(e){e.delegateTarget=closest(e.target,selector),e.delegateTarget&&callback.call(element,e)}}var closest=require("./closest");module.exports=delegate},{"./closest":1}],3:[function(require,module,exports){exports.node=function(value){return void 0!==value&&value instanceof HTMLElement&&1===value.nodeType},exports.nodeList=function(value){var type=Object.prototype.toString.call(value);return void 0!==value&&("[object NodeList]"===type||"[object HTMLCollection]"===type)&&"length"in value&&(0===value.length||exports.node(value[0]))},exports.string=function(value){return"string"==typeof value||value instanceof String},exports.fn=function(value){var type=Object.prototype.toString.call(value);return"[object Function]"===type}},{}],4:[function(require,module,exports){function listen(target,type,callback){if(!target&&!type&&!callback)throw new Error("Missing required arguments");if(!is.string(type))throw new TypeError("Second argument must be a String");if(!is.fn(callback))throw new TypeError("Third argument must be a Function");if(is.node(target))return listenNode(target,type,callback);if(is.nodeList(target))return listenNodeList(target,type,callback);if(is.string(target))return listenSelector(target,type,callback);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function listenNode(node,type,callback){return node.addEventListener(type,callback),{destroy:function(){node.removeEventListener(type,callback)}}}function listenNodeList(nodeList,type,callback){return Array.prototype.forEach.call(nodeList,function(node){node.addEventListener(type,callback)}),{destroy:function(){Array.prototype.forEach.call(nodeList,function(node){node.removeEventListener(type,callback)})}}}function listenSelector(selector,type,callback){return delegate(document.body,selector,type,callback)}var is=require("./is"),delegate=require("delegate");module.exports=listen},{"./is":3,delegate:2}],5:[function(require,module,exports){function select(element){var selectedText;if("SELECT"===element.nodeName)element.focus(),selectedText=element.value;else if("INPUT"===element.nodeName||"TEXTAREA"===element.nodeName){var isReadOnly=element.hasAttribute("readonly");isReadOnly||element.setAttribute("readonly",""),element.select(),element.setSelectionRange(0,element.value.length),isReadOnly||element.removeAttribute("readonly"),selectedText=element.value}else{element.hasAttribute("contenteditable")&&element.focus();var selection=window.getSelection(),range=document.createRange();range.selectNodeContents(element),selection.removeAllRanges(),selection.addRange(range),selectedText=selection.toString()}return selectedText}module.exports=select},{}],6:[function(require,module,exports){function E(){}E.prototype={on:function(name,callback,ctx){var e=this.e||(this.e={});return(e[name]||(e[name]=[])).push({fn:callback,ctx:ctx}),this},once:function(name,callback,ctx){function listener(){self.off(name,listener),callback.apply(ctx,arguments)}var self=this;return listener._=callback,this.on(name,listener,ctx)},emit:function(name){var data=[].slice.call(arguments,1),evtArr=((this.e||(this.e={}))[name]||[]).slice(),i=0,len=evtArr.length;for(i;i<len;i++)evtArr[i].fn.apply(evtArr[i].ctx,data);return this},off:function(name,callback){var e=this.e||(this.e={}),evts=e[name],liveEvents=[];if(evts&&callback)for(var i=0,len=evts.length;i<len;i++)evts[i].fn!==callback&&evts[i].fn._!==callback&&liveEvents.push(evts[i]);return liveEvents.length?e[name]=liveEvents:delete e[name],this}},module.exports=E},{}],7:[function(require,module,exports){!function(global,factory){if("function"==typeof define&&define.amd)define(["module","select"],factory);else if("undefined"!=typeof exports)factory(module,require("select"));else{var mod={exports:{}};factory(mod,global.select),global.clipboardAction=mod.exports}}(this,function(module,_select){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}var _select2=_interopRequireDefault(_select),_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),ClipboardAction=function(){function ClipboardAction(options){_classCallCheck(this,ClipboardAction),this.resolveOptions(options),this.initSelection()}return _createClass(ClipboardAction,[{key:"resolveOptions",value:function resolveOptions(){var options=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action=options.action,this.emitter=options.emitter,this.target=options.target,this.text=options.text,this.trigger=options.trigger,this.selectedText=""}},{key:"initSelection",value:function initSelection(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function selectFake(){var _this=this,isRTL="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return _this.removeFake()},this.fakeHandler=document.body.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[isRTL?"right":"left"]="-9999px";var yPosition=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=yPosition+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,document.body.appendChild(this.fakeElem),this.selectedText=(0,_select2["default"])(this.fakeElem),this.copyText()}},{key:"removeFake",value:function removeFake(){this.fakeHandler&&(document.body.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(document.body.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function selectTarget(){this.selectedText=(0,_select2["default"])(this.target),this.copyText()}},{key:"copyText",value:function copyText(){var succeeded=void 0;try{succeeded=document.execCommand(this.action)}catch(err){succeeded=!1}this.handleResult(succeeded)}},{key:"handleResult",value:function handleResult(succeeded){this.emitter.emit(succeeded?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function clearSelection(){this.target&&this.target.blur(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function destroy(){this.removeFake()}},{key:"action",set:function set(){var action=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=action,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function get(){return this._action}},{key:"target",set:function set(target){if(void 0!==target){if(!target||"object"!==("undefined"==typeof target?"undefined":_typeof(target))||1!==target.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&target.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(target.hasAttribute("readonly")||target.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=target}},get:function get(){return this._target}}]),ClipboardAction}();module.exports=ClipboardAction})},{select:5}],8:[function(require,module,exports){!function(global,factory){if("function"==typeof define&&define.amd)define(["module","./clipboard-action","tiny-emitter","good-listener"],factory);else if("undefined"!=typeof exports)factory(module,require("./clipboard-action"),require("tiny-emitter"),require("good-listener"));else{var mod={exports:{}};factory(mod,global.clipboardAction,global.tinyEmitter,global.goodListener),global.clipboard=mod.exports}}(this,function(module,_clipboardAction,_tinyEmitter,_goodListener){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(self,call){if(!self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!call||"object"!=typeof call&&"function"!=typeof call?self:call}function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass)}function getAttributeValue(suffix,element){var attribute="data-clipboard-"+suffix;if(element.hasAttribute(attribute))return element.getAttribute(attribute)}var _clipboardAction2=_interopRequireDefault(_clipboardAction),_tinyEmitter2=_interopRequireDefault(_tinyEmitter),_goodListener2=_interopRequireDefault(_goodListener),_createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),Clipboard=function(_Emitter){function Clipboard(trigger,options){_classCallCheck(this,Clipboard);var _this=_possibleConstructorReturn(this,(Clipboard.__proto__||Object.getPrototypeOf(Clipboard)).call(this));return _this.resolveOptions(options),_this.listenClick(trigger),_this}return _inherits(Clipboard,_Emitter),_createClass(Clipboard,[{key:"resolveOptions",value:function resolveOptions(){var options=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof options.action?options.action:this.defaultAction,this.target="function"==typeof options.target?options.target:this.defaultTarget,this.text="function"==typeof options.text?options.text:this.defaultText}},{key:"listenClick",value:function listenClick(trigger){var _this2=this;this.listener=(0,_goodListener2["default"])(trigger,"click",function(e){return _this2.onClick(e)})}},{key:"onClick",value:function onClick(e){var trigger=e.delegateTarget||e.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new _clipboardAction2["default"]({action:this.action(trigger),target:this.target(trigger),text:this.text(trigger),trigger:trigger,emitter:this})}},{key:"defaultAction",value:function defaultAction(trigger){return getAttributeValue("action",trigger)}},{key:"defaultTarget",value:function defaultTarget(trigger){var selector=getAttributeValue("target",trigger);if(selector)return document.querySelector(selector)}},{key:"defaultText",value:function defaultText(trigger){return getAttributeValue("text",trigger)}},{key:"destroy",value:function destroy(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function isSupported(){var action=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],actions="string"==typeof action?[action]:action,support=!!document.queryCommandSupported;return actions.forEach(function(action){support=support&&!!document.queryCommandSupported(action)}),support}}]),Clipboard}(_tinyEmitter2["default"]);module.exports=Clipboard})},{"./clipboard-action":7,"good-listener":4,"tiny-emitter":6}]},{},[8])(8)})}catch(e){}BI.ClipBoard=BI.inherit(BI.BasicButton,{_defaultConfig:function(){return BI.extend(BI.ClipBoard.superclass._defaultConfig.apply(this,arguments),{extraCls:"bi-clipboard",el:{type:"bi.layout"},copy:BI.emptyFn,afterCopy:BI.emptyFn})},_init:function(){BI.ClipBoard.superclass._init.apply(this,arguments),BI.createWidget(this.options.el,{element:this})},mounted:function(){var self=this,o=this.options;if(window.Clipboard)this.clipboard=new Clipboard(this.element[0],{text:function(){return BI.isFunction(o.copy)?o.copy():o.copy}}),this.clipboard.on("success",o.afterCopy);else{if(!window.clipboardData)throw new Error("not support");this.element.on("click",function(){var result=window.clipboardData.setData("Text",BI.isFunction(o.copy)?o.copy():o.copy);result&&o.afterCopy()})}},destroyed:function(){this.clipboard&&this.clipboard.destroy()}}),BI.shortcut("bi.clipboard",BI.ClipBoard),function(){var Widget=BI.inherit(BI.Widget,{props:{baseCls:"bi-material-search-icon-text-value-combo",height:24,text:"",items:[],iconCls:"",tipType:"",warningTitle:"",attributes:{tabIndex:0}},render:function(){var self=this,o=this.options;return{type:"bi.absolute",items:[{el:{type:"bi.combo",container:o.container,adjustLength:2,toggle:!1,ref:function(){self.combo=this},el:{type:"bi.material.search_icon_text_value_trigger",cls:"search-text-value-trigger",ref:function(){self.trigger=this},items:o.items,height:o.height-2,text:o.text,value:o.value,tipType:o.tipType,iconCls:o.iconCls,warningTitle:o.warningTitle,title:o.title,listeners:[{eventName:BI.SearchTextValueTrigger.EVENT_CHANGE,action:function(){self.setValue(this.getValue()),self.combo.hideView(),self.fireEvent("EVENT_CHANGE")}}]},popup:{el:{type:"bi.icon_text_value_combo_popup",chooseType:BI.ButtonGroup.CHOOSE_TYPE_SINGLE,value:o.value,items:o.items,ref:function(){self.popup=this,self.trigger.getSearcher().setAdapter(self.popup)},listeners:[{eventName:BI.TextValueComboPopup.EVENT_CHANGE,action:function(){self.setValue(this.getValue()),self.combo.hideView(),self.fireEvent("EVENT_CHANGE")}}]},maxHeight:252},listeners:[{eventName:BI.Combo.EVENT_AFTER_HIDEVIEW,action:function(){self.trigger.stopEditing()}},{eventName:BI.Combo.EVENT_BEFORE_POPUPVIEW,action:function(){self.fireEvent("EVENT_BEFORE_POPUPVIEW")}}],hideChecker:function(e){return 0===self.triggerBtn.element.find(e.target).length}},left:0,right:0,bottom:0,top:0},{el:{type:"bi.trigger_icon_button",cls:"trigger-icon-button",ref:function(){self.triggerBtn=this},width:o.height,height:o.height,handler:function(){self.combo.isViewVisible()?self.combo.hideView():self.combo.showView()}},right:0,bottom:0,top:0}]}},mounted:function(){var o=this.options;BI.isKey(o.value)&&this._checkError(o.value)},_checkError:function(v){if(BI.isNotNull(v)){v=BI.isArray(v)?v:[v];var result=BI.find(this.options.items,function(idx,item){return BI.contains(v,item.value)});BI.isNull(result)?(this.element.removeClass("combo-error").addClass("combo-error"),this.trigger.attr("tipType","warning")):(this.element.removeClass("combo-error"),this.trigger.attr("tipType","success"))}},populate:function(items){this.options.items=items,this.combo.populate(items)},setValue:function(v){this.combo.setValue(v),this._checkError(v)},getValue:function(){var value=this.popup.getValue();return BI.isNull(value)?[]:BI.isArray(value)?value:[value]}});BI.shortcut("bi.material.search_icon_text_value_combo",Widget)}(),function(){var Trigger=BI.inherit(BI.Trigger,{props:{extraCls:"bi-material-search-icon-text-trigger bi-border",height:24},render:function(){var self=this,o=this.options,iconCls=this._digistIcon(o.value,o.items);return{type:"bi.htape",items:[{el:{type:"bi.icon_change_button",cls:"icon-combo-trigger-icon",iconCls:iconCls,ref:function(_ref){self.icon=_ref},disableSelected:!0},vgap:3,width:BI.isKey(iconCls)?o.iconWrapperWidth||o.height:0},{el:{type:"bi.searcher",ref:function(){self.searcher=this;
},isAutoSearch:!1,el:{type:"bi.state_editor",ref:function(){self.editor=this},defaultText:this._getText(),text:o.text,value:o.value,height:o.height,tipText:""},popup:{type:"bi.icon_text_value_combo_popup",cls:"bi-card",chooseType:BI.ButtonGroup.CHOOSE_TYPE_SINGLE},onSearch:function(obj,callback){var keyword=obj.keyword,finding=BI.Func.getSearchResult(o.items,keyword),matched=finding.match,find=finding.find,items=BI.concat(find,matched);callback(items)},listeners:[{eventName:BI.Searcher.EVENT_CHANGE,action:function(){self.fireEvent("EVENT_CHANGE")}}]}},{el:{type:"bi.layout",width:24},width:24}],ref:function(_ref){self.wrapper=_ref}}},_setState:function(v){this.editor.setState(v)},_getText:function(){var o=this.options;return BI.isKey(o.value)&&o.text===this._digest(o.value,o.items)?"":o.text},_digest:function(vals,items){var o=this.options;vals=BI.isArray(vals)?vals:[vals];var result=[],formatItems=BI.Tree.transformToArrayFormat(items);return BI.each(formatItems,function(i,item){BI.deepContains(vals,item.value)&&!BI.contains(result,item.text||item.value)&&result.push(item.text||item.value)}),result.length>0?result.join(","):o.text},_digistIcon:function(vals,items){var o=this.options;vals=BI.isArray(vals)?vals:[vals];var result,formatItems=BI.Tree.transformToArrayFormat(items);return BI.any(formatItems,function(i,item){if(BI.deepContains(vals,item.value))return result={text:item.text||item.value,iconCls:item.iconCls},!0}),BI.isNotNull(result)?result.iconCls:o.iconCls},stopEditing:function(){this.searcher.stopSearch()},getSearcher:function(){return this.searcher},populate:function(items){this.options.items=items},setValue:function(vals){var iconCls=this._digistIcon(vals,this.options.items);this.setIcon(iconCls),this._setState(this._digest(vals,this.options.items))},setIcon:function(iconCls){var o=this.options;this.icon.setIcon(iconCls);var iconItem=this.wrapper.attr("items")[0];BI.isKey(iconCls)?iconItem.width!==(o.iconWrapperWidth||o.height)&&(iconItem.width=o.iconWrapperWidth||o.height,this.wrapper.resize()):0!==iconItem.width&&(iconItem.width=0,this.wrapper.resize())},getValue:function(){return this.searcher.getValue()}});BI.shortcut("bi.material.search_icon_text_value_trigger",Trigger)}(),!function(){BI.FullScreenController=BI.inherit(BI.Controller,{props:{},_init:function(){BI.FullScreenController.superclass._init.apply(this,arguments),this.exitHandlers=[]},requestFullScreen:function(target,complete,exitHandler){return BI.isNull(this.support)&&(this.support=this._checkSupportScreenHandler()),this.support?(BI.isWidget(target)&&(target=target.element[0]),this._launchFullScreen(target,exitHandler),void complete.call(this,!0)):(BI.Msg.toast(BI.i18nText("fullscreen api not support"),{level:"error"}),void complete(!1))},getFullScreenElement:function(){return document.fullscreenElement||document.webkitFullscreenElement||document.msFullscreenElement||document.mozFullScreenElement||null},isFullScreen:function(doc){return doc=doc||document,!!(doc.fullscreenElement||doc.webkitFullscreenElement||doc.mozFullScreenElement||doc.msFullscreenElement)},exitFullScreen:function(){return this._existFullscreenHandler(),document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen(),BI.each(this.exitHandlers,function(index,handler){BI.isFunction(handler)&&handler()}),this},_launchFullScreen:function(element,exitHandler){var self=this;element.requestFullscreen?element.requestFullscreen():element.mozRequestFullScreen?element.mozRequestFullScreen():element.msRequestFullscreen?element.msRequestFullscreen():element.webkitRequestFullscreen&&element.webkitRequestFullScreen(),BI.$(element).addClass("bi-fullscreen-element"),this.fullscreenElement=element,BI.$(document).bind("fullscreenchange webkitfullscreenchange mozfullscreenchange MSFullscreenChange",function(){self.isFullScreen()||(BI.isFunction(exitHandler)&&exitHandler(),self.exitHandlers=[],self._existFullscreenHandler(),BI.$(document).unbind("fullscreenchange webkitfullscreenchange mozfullscreenchange MSFullscreenChange"))})},_checkSupportScreenHandler:function(){var requestFullScreen;document.body&&(requestFullScreen=document.body.requestFullscreen||document.body.webkitRequestFullscreen||document.body.mozRequestFullScreen||document.body.msRequestFullscreen);var fullscreenEnabled=document.fullscreenEnabled||document.mozFullScreenEnabled||document.webkitFullscreenEnabled||document.msFullscreenEnabled;return!(!requestFullScreen||!fullscreenEnabled)},_existFullscreenHandler:function(){var element=this.getFullScreenElement()||this.fullscreenElement;element&&BI.$(element).removeClass("bi-fullscreen-element"),this.fullscreenElement=null}}),BI.FullScreen=new BI.FullScreenController}(),!function(){var Widget=BI.inherit(BI.Widget,{props:{baseCls:"bi-materials-draggable",onDragStart:BI.emptyFn,onDrag:BI.emptyFn,onDragEnd:BI.emptyFn,el:{}},render:function(){var self=this,o=this.options;return this.startX=0,this.startY=0,this.tracker=new BI.MouseMoveTracker(function(deltaX,deltaY){var W=BI.$("body").width(),H=BI.$("body").height(),size=self.element.bounds();self.startX+=deltaX,self.startY+=deltaY;var left=BI.clamp(self.startX,0,W-size.width),top=BI.clamp(self.startY,0,H-size.height);self.element.css({left:left+"px",top:top+"px"}),o.onDrag({left:left,top:top})},function(){self.tracker.releaseMouseMoves(),o.onDragEnd()},window),this.options.el},mounted:function(){var self=this,o=this.options;this.element.mousedown(function(e){var pos=self.element.offset();self.startX=pos.left,self.startY=pos.top,self.tracker.captureMouseMoves(e),o.onDragStart()})}});BI.shortcut("bi.materials.draggable",Widget)}(),BI.CodeEditor=BI.inherit(BI.Single,{_defaultConfig:function(){return BI.extend(BI.CodeEditor.superclass._defaultConfig.apply(),{baseCls:"bi-code-editor",value:"",watermark:"",lineHeight:2,readOnly:!1,lineNumbers:!1,paramMatch:!0,paramFormatter:function(v){return v}})},_init:function(){BI.CodeEditor.superclass._init.apply(this,arguments);var o=this.options,self=this,conf={lineWrapping:!0,lineNumbers:o.lineNumbers,readOnly:o.readOnly,specialChars:/[\u0000-\u001f\u007f\u00ad\u200c-\u200f\u2028\u2029\ufeff]/,mode:o.mode};o.readOnly&&(conf.cursorBlinkRate=-1),this.editor=CodeMirror(this.element[0],conf),1===o.lineHeight?this.element.addClass("codemirror-low-line-height"):this.element.addClass("codemirror-high-line-height"),this.editor.on("change",function(cm,change){cm.options.readOnly===!0&&"paste"===change.origin&&self.editor.setValue(o.value),self._checkWaterMark(),BI.nextTick(function(){self.fireEvent(BI.CodeEditor.EVENT_CHANGE)})}),this.editor.on("focus",function(){self._checkWaterMark(!1),self.fireEvent(BI.CodeEditor.EVENT_FOCUS)}),this.editor.on("blur",function(){self.watermark.setVisible(BI.isEmptyString(self.getValue())),self.fireEvent(BI.CodeEditor.EVENT_BLUR)}),this.editor.on("inputRead",function(cm,info){"paste"===info.origin&&BI.nextTick(function(){self.editor.replaceSelection(" ");var endPos=self.editor.getDoc().getCursor();self.editor.getDoc().replaceRange("",{line:endPos.line,ch:endPos.ch-1},endPos)})}),this.watermark=BI.createWidget({type:"bi.label",text:o.watermark,cls:"bi-water-mark",whiteSpace:"nowrap",textAlign:"left"}),this.watermark.element.bind("mousedown",function(e){self.insertString(""),self.editor.focus(),e.stopEvent()}),this.watermark.element.bind("click",function(e){self.editor.focus(),e.stopEvent()}),BI.createWidget({type:"bi.absolute",element:this,items:[{el:this.watermark,top:3,left:o.lineNumbers?36:6}]})},mounted:function(){var o=this.options;(BI.isNumber(o.value)||BI.isString(o.value))&&this.setValue(o.value),BI.isNotNull(o.style)&&this.setStyle(o.style)},_setEnable:function(b){BI.CodeEditor.superclass._setEnable.apply(this,arguments),this.editor.setOption("readOnly",b!==!0&&"nocursor")},_checkWaterMark:function(){var o=this.options;BI.isEmptyString(this.editor.getValue())&&BI.isKey(o.watermark)?this.watermark&&this.watermark.visible():this.watermark&&this.watermark.invisible()},insertParam:function(param){var value=param;param=this.options.paramFormatter(param);var from=this.editor.getCursor();this.editor.replaceSelection("​"+param+"​");var to=this.editor.getCursor(),className="param";BI.isNotNull(param.match(/^<!.*!>$/))&&(className="error-param");var options={className:className,atomic:!0,replacedWith:BI.$("<span class='"+className+" start end' />").text(param)[0]};options.value=value,this.editor.markText(from,to,options),this.editor.focus()},insertString:function(str){this.editor.replaceSelection(str),this.editor.focus()},getValue:function(){return this.editor.getValue("\n",function(line){var rawText=line.text,value=line.text,num=0;return value.text=rawText,_.forEach(_.sortBy(line.markedSpans,"from"),function(i,ms){switch(i.marker.className){case"param":case"error-param":var fieldNameLength=i.to-i.from;value=value.substr(0,i.from+num)+"${"+i.marker.value+"}"+value.substr(i.to+num,value.length),num+=3,num+=i.marker.value.length-fieldNameLength}}),value})},_analyzeContent:function(v){var regx=/\n|\$[\{][^\}]*[\}]|((?!\$\{).)*((?!\$\{).)|\$[^\{]*[^\$\{]/g;return v.match(regx)},setValue:function(v){var self=this,o=this.options,result;this.refresh(),this.options.value=v,self.editor.setValue(""),o.paramMatch?(result=this._analyzeContent(v||""),BI.each(result,function(i,item){var fieldRegx=/\$[\{][^\}]*[\}]/,str=item.match(fieldRegx);BI.isNotEmptyArray(str)?self.insertParam(str[0].substring(2,item.length-1)):self.insertString(item)})):self.editor.setValue(v),this._checkWaterMark()},focus:function(){this.editor.focus()},blur:function(){this.editor.getInputField().blur()},setStyle:function(style){this.style=style,this.element.css(style)},getStyle:function(){return this.style},refresh:function(){var self=this;BI.nextTick(function(){self.editor.refresh()})}}),BI.CodeEditor.EVENT_CHANGE="EVENT_CHANGE",BI.CodeEditor.EVENT_BLUR="EVENT_BLUR",BI.CodeEditor.EVENT_FOCUS="EVENT_FOCUS",BI.shortcut("bi.code_editor",BI.CodeEditor),function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):global.CodeMirror=factory()}(this,function(){"use strict";function classTest(cls){return new RegExp("(^|\\s)"+cls+"(?:$|\\s)\\s*")}function removeChildren(e){for(var count=e.childNodes.length;count>0;--count)e.removeChild(e.firstChild);return e}function removeChildrenAndAdd(parent,e){return removeChildren(parent).appendChild(e)}function elt(tag,content,className,style){var e=document.createElement(tag);if(className&&(e.className=className),style&&(e.style.cssText=style),"string"==typeof content)e.appendChild(document.createTextNode(content));else if(content)for(var i=0;i<content.length;++i)e.appendChild(content[i]);return e}function eltP(tag,content,className,style){var e=elt(tag,content,className,style);return e.setAttribute("role","presentation"),e}function contains(parent,child){if(3==child.nodeType&&(child=child.parentNode),parent.contains)return parent.contains(child);do if(11==child.nodeType&&(child=child.host),child==parent)return!0;while(child=child.parentNode)}function activeElt(){var activeElement;try{activeElement=document.activeElement}catch(e){activeElement=document.body||null}for(;activeElement&&activeElement.shadowRoot&&activeElement.shadowRoot.activeElement;)activeElement=activeElement.shadowRoot.activeElement;return activeElement}function addClass(node,cls){var current=node.className;classTest(cls).test(current)||(node.className+=(current?" ":"")+cls)}function joinClasses(a,b){for(var as=a.split(" "),i=0;i<as.length;i++)as[i]&&!classTest(as[i]).test(b)&&(b+=" "+as[i]);return b}function bind(f){var args=Array.prototype.slice.call(arguments,1);return function(){return f.apply(null,args)}}function copyObj(obj,target,overwrite){target||(target={});for(var prop in obj)!obj.hasOwnProperty(prop)||overwrite===!1&&target.hasOwnProperty(prop)||(target[prop]=obj[prop]);return target}function countColumn(string,end,tabSize,startIndex,startValue){null==end&&(end=string.search(/[^\s\u00a0]/),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}}function indexOf(array,elt){for(var i=0;i<array.length;++i)if(array[i]==elt)return i;return-1}function findColumn(string,goal,tabSize){for(var pos=0,col=0;;){var nextTab=string.indexOf("\t",pos);nextTab==-1&&(nextTab=string.length);var skipped=nextTab-pos;if(nextTab==string.length||col+skipped>=goal)return pos+Math.min(skipped,goal-col);if(col+=nextTab-pos,col+=tabSize-col%tabSize,pos=nextTab+1,col>=goal)return pos}}function spaceStr(n){for(;spaceStrs.length<=n;)spaceStrs.push(lst(spaceStrs)+" ");return spaceStrs[n]}function lst(arr){return arr[arr.length-1]}function map(array,f){for(var out=[],i=0;i<array.length;i++)out[i]=f(array[i],i);return out}function insertSorted(array,value,score){for(var pos=0,priority=score(value);pos<array.length&&score(array[pos])<=priority;)pos++;array.splice(pos,0,value)}function nothing(){}function createObj(base,props){var inst;return Object.create?inst=Object.create(base):(nothing.prototype=base,inst=new nothing),props&&copyObj(props,inst),inst}function isWordCharBasic(ch){return/\w/.test(ch)||ch>""&&(ch.toUpperCase()!=ch.toLowerCase()||nonASCIISingleCaseWordChar.test(ch))}function isWordChar(ch,helper){return helper?!!(helper.source.indexOf("\\w")>-1&&isWordCharBasic(ch))||helper.test(ch):isWordCharBasic(ch)}function isEmpty(obj){for(var n in obj)if(obj.hasOwnProperty(n)&&obj[n])return!1;return!0}function isExtendingChar(ch){return ch.charCodeAt(0)>=768&&extendingChars.test(ch)}function skipExtendingChars(str,pos,dir){for(;(dir<0?pos>0:pos<str.length)&&isExtendingChar(str.charAt(pos));)pos+=dir;return pos}function findFirst(pred,from,to){for(var dir=from>to?-1:1;;){if(from==to)return from;var midF=(from+to)/2,mid=dir<0?Math.ceil(midF):Math.floor(midF);if(mid==from)return pred(mid)?from:to;pred(mid)?to=mid:from=mid+dir}}function Display(place,doc,input){var d=this;this.input=input,d.scrollbarFiller=elt("div",null,"CodeMirror-scrollbar-filler"),d.scrollbarFiller.setAttribute("cm-not-content","true"),d.gutterFiller=elt("div",null,"CodeMirror-gutter-filler"),d.gutterFiller.setAttribute("cm-not-content","true"),d.lineDiv=eltP("div",null,"CodeMirror-code"),d.selectionDiv=elt("div",null,null,"position: relative; z-index: 1"),d.cursorDiv=elt("div",null,"CodeMirror-cursors"),d.measure=elt("div",null,"CodeMirror-measure"),d.lineMeasure=elt("div",null,"CodeMirror-measure"),d.lineSpace=eltP("div",[d.measure,d.lineMeasure,d.selectionDiv,d.cursorDiv,d.lineDiv],null,"position: relative; outline: none");var lines=eltP("div",[d.lineSpace],"CodeMirror-lines");d.mover=elt("div",[lines],null,"position: relative"),d.sizer=elt("div",[d.mover],"CodeMirror-sizer"),d.sizerWidth=null,d.heightForcer=elt("div",null,null,"position: absolute; height: "+scrollerGap+"px; width: 1px;"),d.gutters=elt("div",null,"CodeMirror-gutters"),d.lineGutter=null,d.scroller=elt("div",[d.sizer,d.heightForcer,d.gutters],"CodeMirror-scroll"),d.scroller.setAttribute("tabIndex","-1"),d.wrapper=elt("div",[d.scrollbarFiller,d.gutterFiller,d.scroller],"CodeMirror"),ie&&ie_version<8&&(d.gutters.style.zIndex=-1,d.scroller.style.paddingRight=0),webkit||gecko&&mobile||(d.scroller.draggable=!0),place&&(place.appendChild?place.appendChild(d.wrapper):place(d.wrapper)),d.viewFrom=d.viewTo=doc.first,d.reportedViewFrom=d.reportedViewTo=doc.first,d.view=[],d.renderedView=null,d.externalMeasured=null,d.viewOffset=0,d.lastWrapHeight=d.lastWrapWidth=0,d.updateLineNumbers=null,d.nativeBarWidth=d.barHeight=d.barWidth=0,d.scrollbarsClipped=!1,d.lineNumWidth=d.lineNumInnerWidth=d.lineNumChars=null,d.alignWidgets=!1,d.cachedCharWidth=d.cachedTextHeight=d.cachedPaddingH=null,d.maxLine=null,d.maxLineLength=0,d.maxLineChanged=!1,d.wheelDX=d.wheelDY=d.wheelStartX=d.wheelStartY=null,d.shift=!1,d.selForContextMenu=null,d.activeTouch=null,input.init(d)}function getLine(doc,n){if(n-=doc.first,n<0||n>=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(n<sz){chunk=child;break}n-=sz}return chunk.lines[n]}function getBetween(doc,start,end){var out=[],n=start.line;return doc.iter(start.line,end.line+1,function(line){var text=line.text;n==end.line&&(text=text.slice(0,end.ch)),n==start.line&&(text=text.slice(start.ch)),out.push(text),++n}),out}function getLines(doc,from,to,lineFilter){var out=[];return doc.iter(from,to,function(line){var text=line.text;lineFilter&&(text=lineFilter(line)),out.push(text)}),out}function updateLineHeight(line,height){var diff=height-line.height;if(diff)for(var n=line;n;n=n.parent)n.height+=diff}function lineNo(line){if(null==line.parent)return null;for(var cur=line.parent,no=indexOf(cur.lines,line),chunk=cur.parent;chunk;cur=chunk,chunk=chunk.parent)for(var i=0;chunk.children[i]!=cur;++i)no+=chunk.children[i].chunkSize();return no+cur.first}function lineAtHeight(chunk,h){var n=chunk.first;outer:do{for(var i$1=0;i$1<chunk.children.length;++i$1){var child=chunk.children[i$1],ch=child.height;if(h<ch){chunk=child;continue outer}h-=ch,n+=child.chunkSize()}return n}while(!chunk.lines);for(var i=0;i<chunk.lines.length;++i){var line=chunk.lines[i],lh=line.height;if(h<lh)break;h-=lh}return n+i}function isLine(doc,l){return l>=doc.first&&l<doc.first+doc.size}function lineNumberFor(options,i){return String(options.lineNumberFormatter(i+options.firstLineNumber))}function Pos(line,ch,sticky){return void 0===sticky&&(sticky=null),this instanceof Pos?(this.line=line,this.ch=ch,void(this.sticky=sticky)):new Pos(line,ch,sticky)}function cmp(a,b){return a.line-b.line||a.ch-b.ch}function equalCursorPos(a,b){return a.sticky==b.sticky&&0==cmp(a,b)}function copyPos(x){return Pos(x.line,x.ch)}function maxPos(a,b){return cmp(a,b)<0?b:a}function minPos(a,b){return cmp(a,b)<0?a:b}function clipLine(doc,n){return Math.max(doc.first,Math.min(n,doc.first+doc.size-1))}function clipPos(doc,pos){if(pos.line<doc.first)return Pos(doc.first,0);var last=doc.first+doc.size-1;return pos.line>last?Pos(last,getLine(doc,last).text.length):clipToLen(pos,getLine(doc,pos.line).text.length)}function clipToLen(pos,linelen){var ch=pos.ch;return null==ch||ch>linelen?Pos(pos.line,linelen):ch<0?Pos(pos.line,0):pos}function clipPosArray(doc,array){for(var out=[],i=0;i<array.length;i++)out[i]=clipPos(doc,array[i]);return out}function seeReadOnlySpans(){sawReadOnlySpans=!0}function seeCollapsedSpans(){sawCollapsedSpans=!0}function MarkedSpan(marker,from,to){this.marker=marker,this.from=from,this.to=to}function getMarkedSpanFor(spans,marker){if(spans)for(var i=0;i<spans.length;++i){var span=spans[i];if(span.marker==marker)return span}}function removeMarkedSpan(spans,span){for(var r,i=0;i<spans.length;++i)spans[i]!=span&&(r||(r=[])).push(spans[i]);return r}function addMarkedSpan(line,span){line.markedSpans=line.markedSpans?line.markedSpans.concat([span]):[span],span.marker.attachLine(line)}function markedSpansBefore(old,startCh,isInsert){var nw;if(old)for(var i=0;i<old.length;++i){var span=old[i],marker=span.marker,startsBefore=null==span.from||(marker.inclusiveLeft?span.from<=startCh:span.from<startCh);if(startsBefore||span.from==startCh&&"bookmark"==marker.type&&(!isInsert||!span.marker.insertLeft)){var endsAfter=null==span.to||(marker.inclusiveRight?span.to>=startCh:span.to>startCh);(nw||(nw=[])).push(new MarkedSpan(marker,span.from,endsAfter?null:span.to))}}return nw}function markedSpansAfter(old,endCh,isInsert){var nw;if(old)for(var i=0;i<old.length;++i){var span=old[i],marker=span.marker,endsAfter=null==span.to||(marker.inclusiveRight?span.to>=endCh:span.to>endCh);if(endsAfter||span.from==endCh&&"bookmark"==marker.type&&(!isInsert||span.marker.insertLeft)){var startsBefore=null==span.from||(marker.inclusiveLeft?span.from<=endCh:span.from<endCh);(nw||(nw=[])).push(new MarkedSpan(marker,startsBefore?null:span.from-endCh,null==span.to?null:span.to-endCh))}}return nw}function stretchSpansOverChange(doc,change){if(change.full)return null;var oldFirst=isLine(doc,change.from.line)&&getLine(doc,change.from.line).markedSpans,oldLast=isLine(doc,change.to.line)&&getLine(doc,change.to.line).markedSpans;if(!oldFirst&&!oldLast)return null;var startCh=change.from.ch,endCh=change.to.ch,isInsert=0==cmp(change.from,change.to),first=markedSpansBefore(oldFirst,startCh,isInsert),last=markedSpansAfter(oldLast,endCh,isInsert),sameLine=1==change.text.length,offset=lst(change.text).length+(sameLine?startCh:0);if(first)for(var i=0;i<first.length;++i){var span=first[i];if(null==span.to){var found=getMarkedSpanFor(last,span.marker);found?sameLine&&(span.to=null==found.to?null:found.to+offset):span.to=startCh}}if(last)for(var i$1=0;i$1<last.length;++i$1){var span$1=last[i$1];if(null!=span$1.to&&(span$1.to+=offset),null==span$1.from){var found$1=getMarkedSpanFor(first,span$1.marker);found$1||(span$1.from=offset,sameLine&&(first||(first=[])).push(span$1))}else span$1.from+=offset,sameLine&&(first||(first=[])).push(span$1)}first&&(first=clearEmptySpans(first)),last&&last!=first&&(last=clearEmptySpans(last));var newMarkers=[first];if(!sameLine){var gap=change.text.length-2,gapMarkers;if(gap>0&&first)for(var i$2=0;i$2<first.length;++i$2)null==first[i$2].to&&(gapMarkers||(gapMarkers=[])).push(new MarkedSpan(first[i$2].marker,null,null));for(var i$3=0;i$3<gap;++i$3)newMarkers.push(gapMarkers);newMarkers.push(last)}return newMarkers}function clearEmptySpans(spans){for(var i=0;i<spans.length;++i){var span=spans[i];null!=span.from&&span.from==span.to&&span.marker.clearWhenEmpty!==!1&&spans.splice(i--,1)}return spans.length?spans:null}function removeReadOnlyRanges(doc,from,to){var markers=null;if(doc.iter(from.line,to.line+1,function(line){if(line.markedSpans)for(var i=0;i<line.markedSpans.length;++i){var mark=line.markedSpans[i].marker;!mark.readOnly||markers&&indexOf(markers,mark)!=-1||(markers||(markers=[])).push(mark)}}),!markers)return null;for(var parts=[{from:from,to:to}],i=0;i<markers.length;++i)for(var mk=markers[i],m=mk.find(0),j=0;j<parts.length;++j){var p=parts[j];if(!(cmp(p.to,m.from)<0||cmp(p.from,m.to)>0)){var newParts=[j,1],dfrom=cmp(p.from,m.from),dto=cmp(p.to,m.to);(dfrom<0||!mk.inclusiveLeft&&!dfrom)&&newParts.push({from:p.from,to:m.from}),(dto>0||!mk.inclusiveRight&&!dto)&&newParts.push({from:m.to,to:p.to}),parts.splice.apply(parts,newParts),j+=newParts.length-3}}return parts}function detachMarkedSpans(line){var spans=line.markedSpans;if(spans){for(var i=0;i<spans.length;++i)spans[i].marker.detachLine(line);line.markedSpans=null}}function attachMarkedSpans(line,spans){if(spans){for(var i=0;i<spans.length;++i)spans[i].marker.attachLine(line);line.markedSpans=spans}}function extraLeft(marker){return marker.inclusiveLeft?-1:0}function extraRight(marker){return marker.inclusiveRight?1:0}function compareCollapsedMarkers(a,b){var lenDiff=a.lines.length-b.lines.length;if(0!=lenDiff)return lenDiff;var aPos=a.find(),bPos=b.find(),fromCmp=cmp(aPos.from,bPos.from)||extraLeft(a)-extraLeft(b);if(fromCmp)return-fromCmp;var toCmp=cmp(aPos.to,bPos.to)||extraRight(a)-extraRight(b);return toCmp?toCmp:b.id-a.id}function collapsedSpanAtSide(line,start){var sps=sawCollapsedSpans&&line.markedSpans,found;if(sps)for(var sp=void 0,i=0;i<sps.length;++i)sp=sps[i],sp.marker.collapsed&&null==(start?sp.from:sp.to)&&(!found||compareCollapsedMarkers(found,sp.marker)<0)&&(found=sp.marker);return found}function collapsedSpanAtStart(line){return collapsedSpanAtSide(line,!0)}function collapsedSpanAtEnd(line){return collapsedSpanAtSide(line,!1)}function collapsedSpanAround(line,ch){var sps=sawCollapsedSpans&&line.markedSpans,found;if(sps)for(var i=0;i<sps.length;++i){var sp=sps[i];sp.marker.collapsed&&(null==sp.from||sp.from<ch)&&(null==sp.to||sp.to>ch)&&(!found||compareCollapsedMarkers(found,sp.marker)<0)&&(found=sp.marker)}return found}function conflictingCollapsedRange(doc,lineNo$$1,from,to,marker){var line=getLine(doc,lineNo$$1),sps=sawCollapsedSpans&&line.markedSpans;if(sps)for(var i=0;i<sps.length;++i){var sp=sps[i];if(sp.marker.collapsed){var found=sp.marker.find(0),fromCmp=cmp(found.from,from)||extraLeft(sp.marker)-extraLeft(marker),toCmp=cmp(found.to,to)||extraRight(sp.marker)-extraRight(marker);if(!(fromCmp>=0&&toCmp<=0||fromCmp<=0&&toCmp>=0)&&(fromCmp<=0&&(sp.marker.inclusiveRight&&marker.inclusiveLeft?cmp(found.to,from)>=0:cmp(found.to,from)>0)||fromCmp>=0&&(sp.marker.inclusiveRight&&marker.inclusiveLeft?cmp(found.from,to)<=0:cmp(found.from,to)<0)))return!0}}}function visualLine(line){for(var merged;merged=collapsedSpanAtStart(line);)line=merged.find(-1,!0).line;return line}function visualLineEnd(line){for(var merged;merged=collapsedSpanAtEnd(line);)line=merged.find(1,!0).line;return line}function visualLineContinued(line){for(var merged,lines;merged=collapsedSpanAtEnd(line);)line=merged.find(1,!0).line,(lines||(lines=[])).push(line);return lines}function visualLineNo(doc,lineN){var line=getLine(doc,lineN),vis=visualLine(line);return line==vis?lineN:lineNo(vis)}function visualLineEndNo(doc,lineN){if(lineN>doc.lastLine())return lineN;var line=getLine(doc,lineN),merged;if(!lineIsHidden(doc,line))return lineN;for(;merged=collapsedSpanAtEnd(line);)line=merged.find(1,!0).line;return lineNo(line)+1}function lineIsHidden(doc,line){var sps=sawCollapsedSpans&&line.markedSpans;if(sps)for(var sp=void 0,i=0;i<sps.length;++i)if(sp=sps[i],sp.marker.collapsed){if(null==sp.from)return!0;if(!sp.marker.widgetNode&&0==sp.from&&sp.marker.inclusiveLeft&&lineIsHiddenInner(doc,line,sp))return!0}}function lineIsHiddenInner(doc,line,span){if(null==span.to){var end=span.marker.find(1,!0);return lineIsHiddenInner(doc,end.line,getMarkedSpanFor(end.line.markedSpans,span.marker))}if(span.marker.inclusiveRight&&span.to==line.text.length)return!0;for(var sp=void 0,i=0;i<line.markedSpans.length;++i)if(sp=line.markedSpans[i],sp.marker.collapsed&&!sp.marker.widgetNode&&sp.from==span.to&&(null==sp.to||sp.to!=span.from)&&(sp.marker.inclusiveLeft||span.marker.inclusiveRight)&&lineIsHiddenInner(doc,line,sp))return!0}function heightAtLine(lineObj){lineObj=visualLine(lineObj);for(var h=0,chunk=lineObj.parent,i=0;i<chunk.lines.length;++i){var line=chunk.lines[i];if(line==lineObj)break;h+=line.height}for(var p=chunk.parent;p;chunk=p,p=chunk.parent)for(var i$1=0;i$1<p.children.length;++i$1){var cur=p.children[i$1];if(cur==chunk)break;h+=cur.height}return h}function lineLength(line){if(0==line.height)return 0;for(var len=line.text.length,merged,cur=line;merged=collapsedSpanAtStart(cur);){var found=merged.find(0,!0);cur=found.from.line,len+=found.from.ch-found.to.ch}for(cur=line;merged=collapsedSpanAtEnd(cur);){var found$1=merged.find(0,!0);len-=cur.text.length-found$1.from.ch,cur=found$1.to.line,len+=cur.text.length-found$1.to.ch}return len}function findMaxLine(cm){var d=cm.display,doc=cm.doc;d.maxLine=getLine(doc,doc.first),d.maxLineLength=lineLength(d.maxLine),d.maxLineChanged=!0,doc.iter(function(line){var len=lineLength(line);len>d.maxLineLength&&(d.maxLineLength=len,d.maxLine=line)})}function iterateBidiSections(order,from,to,f){if(!order)return f(from,to,"ltr",0);for(var found=!1,i=0;i<order.length;++i){var part=order[i];(part.from<to&&part.to>from||from==to&&part.to==from)&&(f(Math.max(part.from,from),Math.min(part.to,to),1==part.level?"rtl":"ltr",i),found=!0)}found||f(from,to,"ltr")}function getBidiPartAt(order,ch,sticky){var found;bidiOther=null;for(var i=0;i<order.length;++i){var cur=order[i];if(cur.from<ch&&cur.to>ch)return i;cur.to==ch&&(cur.from!=cur.to&&"before"==sticky?found=i:bidiOther=i),cur.from==ch&&(cur.from!=cur.to&&"before"!=sticky?found=i:bidiOther=i)}return null!=found?found:bidiOther}function getOrder(line,direction){var order=line.order;return null==order&&(order=line.order=bidiOrdering(line.text,direction)),order}function getHandlers(emitter,type){return emitter._handlers&&emitter._handlers[type]||noHandlers}function off(emitter,type,f){if(emitter.removeEventListener)emitter.removeEventListener(type,f,!1);else if(emitter.detachEvent)emitter.detachEvent("on"+type,f);else{var map$$1=emitter._handlers,arr=map$$1&&map$$1[type];if(arr){var index=indexOf(arr,f);index>-1&&(map$$1[type]=arr.slice(0,index).concat(arr.slice(index+1)))}}}function signal(emitter,type){var handlers=getHandlers(emitter,type);if(handlers.length)for(var args=Array.prototype.slice.call(arguments,2),i=0;i<handlers.length;++i)handlers[i].apply(null,args)}function signalDOMEvent(cm,e,override){return"string"==typeof e&&(e={type:e,preventDefault:function(){this.defaultPrevented=!0}}),signal(cm,override||e.type,cm,e),e_defaultPrevented(e)||e.codemirrorIgnore}function signalCursorActivity(cm){var arr=cm._handlers&&cm._handlers.cursorActivity;if(arr)for(var set=cm.curOp.cursorActivityHandlers||(cm.curOp.cursorActivityHandlers=[]),i=0;i<arr.length;++i)indexOf(set,arr[i])==-1&&set.push(arr[i])}function hasHandler(emitter,type){return getHandlers(emitter,type).length>0}function eventMixin(ctor){ctor.prototype.on=function(type,f){on(this,type,f)},ctor.prototype.off=function(type,f){off(this,type,f)}}function e_preventDefault(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function e_stopPropagation(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function e_defaultPrevented(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function e_stop(e){e_preventDefault(e),e_stopPropagation(e)}function e_target(e){return e.target||e.srcElement}function e_button(e){var b=e.which;return null==b&&(1&e.button?b=1:2&e.button?b=3:4&e.button&&(b=2)),mac&&e.ctrlKey&&1==b&&(b=3),b}function zeroWidthElement(measure){if(null==zwspSupported){var test=elt("span","​");removeChildrenAndAdd(measure,elt("span",[test,document.createTextNode("x")])),0!=measure.firstChild.offsetHeight&&(zwspSupported=test.offsetWidth<=1&&test.offsetHeight>2&&!(ie&&ie_version<8))}var node=zwspSupported?elt("span","​"):elt("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return node.setAttribute("cm-text",""),node}function hasBadBidiRects(measure){if(null!=badBidiRects)return badBidiRects;var txt=removeChildrenAndAdd(measure,document.createTextNode("AخA")),r0=range(txt,0,1).getBoundingClientRect(),r1=range(txt,1,2).getBoundingClientRect();return removeChildren(measure),!(!r0||r0.left==r0.right)&&(badBidiRects=r1.right-r0.right<3)}function hasBadZoomedRects(measure){if(null!=badZoomedRects)return badZoomedRects;var node=removeChildrenAndAdd(measure,elt("span","x")),normal=node.getBoundingClientRect(),fromRange=range(node,0,1).getBoundingClientRect();return badZoomedRects=Math.abs(normal.left-fromRange.left)>1}function defineMode(name,mode){arguments.length>2&&(mode.dependencies=Array.prototype.slice.call(arguments,2)),modes[name]=mode}function defineMIME(mime,spec){mimeModes[mime]=spec}function resolveMode(spec){if("string"==typeof spec&&mimeModes.hasOwnProperty(spec))spec=mimeModes[spec];else if(spec&&"string"==typeof spec.name&&mimeModes.hasOwnProperty(spec.name)){var found=mimeModes[spec.name];"string"==typeof found&&(found={name:found}),spec=createObj(found,spec),spec.name=found.name}else{if("string"==typeof spec&&/^[\w\-]+\/[\w\-]+\+xml$/.test(spec))return resolveMode("application/xml");if("string"==typeof spec&&/^[\w\-]+\/[\w\-]+\+json$/.test(spec))return resolveMode("application/json")}return"string"==typeof spec?{name:spec}:spec||{name:"null"}}function getMode(options,spec){spec=resolveMode(spec);var mfactory=modes[spec.name];if(!mfactory)return getMode(options,"text/plain");var modeObj=mfactory(options,spec);if(modeExtensions.hasOwnProperty(spec.name)){var exts=modeExtensions[spec.name];for(var prop in exts)exts.hasOwnProperty(prop)&&(modeObj.hasOwnProperty(prop)&&(modeObj["_"+prop]=modeObj[prop]),
modeObj[prop]=exts[prop])}if(modeObj.name=spec.name,spec.helperType&&(modeObj.helperType=spec.helperType),spec.modeProps)for(var prop$1 in spec.modeProps)modeObj[prop$1]=spec.modeProps[prop$1];return modeObj}function extendMode(mode,properties){var exts=modeExtensions.hasOwnProperty(mode)?modeExtensions[mode]:modeExtensions[mode]={};copyObj(properties,exts)}function copyState(mode,state){if(state===!0)return state;if(mode.copyState)return mode.copyState(state);var nstate={};for(var n in state){var val=state[n];val instanceof Array&&(val=val.concat([])),nstate[n]=val}return nstate}function innerMode(mode,state){for(var info;mode.innerMode&&(info=mode.innerMode(state),info&&info.mode!=mode);)state=info.state,mode=info.mode;return info||{mode:mode,state:state}}function startState(mode,a1,a2){return!mode.startState||mode.startState(a1,a2)}function highlightLine(cm,line,context,forceToEnd){var st=[cm.state.modeGen],lineClasses={};runMode(cm,line.text,cm.doc.mode,context,function(end,style){return st.push(end,style)},lineClasses,forceToEnd);for(var state=context.state,loop=function(o){context.baseTokens=st;var overlay=cm.state.overlays[o],i=1,at=0;context.state=!0,runMode(cm,line.text,overlay.mode,context,function(end,style){for(var start=i;at<end;){var i_end=st[i];i_end>end&&st.splice(i,1,end,st[i+1],i_end),i+=2,at=Math.min(end,i_end)}if(style)if(overlay.opaque)st.splice(start,i-start,end,"overlay "+style),i=start+2;else for(;start<i;start+=2){var cur=st[start+1];st[start+1]=(cur?cur+" ":"")+"overlay "+style}},lineClasses),context.state=state,context.baseTokens=null,context.baseTokenPos=1},o=0;o<cm.state.overlays.length;++o)loop(o);return{styles:st,classes:lineClasses.bgClass||lineClasses.textClass?lineClasses:null}}function getLineStyles(cm,line,updateFrontier){if(!line.styles||line.styles[0]!=cm.state.modeGen){var context=getContextBefore(cm,lineNo(line)),resetState=line.text.length>cm.options.maxHighlightLength&&copyState(cm.doc.mode,context.state),result=highlightLine(cm,line,context);resetState&&(context.state=resetState),line.stateAfter=context.save(!resetState),line.styles=result.styles,result.classes?line.styleClasses=result.classes:line.styleClasses&&(line.styleClasses=null),updateFrontier===cm.doc.highlightFrontier&&(cm.doc.modeFrontier=Math.max(cm.doc.modeFrontier,++cm.doc.highlightFrontier))}return line.styles}function getContextBefore(cm,n,precise){var doc=cm.doc,display=cm.display;if(!doc.mode.startState)return new Context(doc,(!0),n);var start=findStartLine(cm,n,precise),saved=start>doc.first&&getLine(doc,start-1).stateAfter,context=saved?Context.fromSaved(doc,saved,start):new Context(doc,startState(doc.mode),start);return doc.iter(start,n,function(line){processLine(cm,line.text,context);var pos=context.line;line.stateAfter=pos==n-1||pos%5==0||pos>=display.viewFrom&&pos<display.viewTo?context.save():null,context.nextLine()}),precise&&(doc.modeFrontier=context.line),context}function processLine(cm,text,context,startAt){var mode=cm.doc.mode,stream=new StringStream(text,cm.options.tabSize,context);for(stream.start=stream.pos=startAt||0,""==text&&callBlankLine(mode,context.state);!stream.eol();)readToken(mode,stream,context.state),stream.start=stream.pos}function callBlankLine(mode,state){if(mode.blankLine)return mode.blankLine(state);if(mode.innerMode){var inner=innerMode(mode,state);return inner.mode.blankLine?inner.mode.blankLine(inner.state):void 0}}function readToken(mode,stream,state,inner){for(var i=0;i<10;i++){inner&&(inner[0]=innerMode(mode,state).mode);var style=mode.token(stream,state);if(stream.pos>stream.start)return style}throw new Error("Mode "+mode.name+" failed to advance stream.")}function takeToken(cm,pos,precise,asArray){var doc=cm.doc,mode=doc.mode,style;pos=clipPos(doc,pos);var line=getLine(doc,pos.line),context=getContextBefore(cm,pos.line,precise),stream=new StringStream(line.text,cm.options.tabSize,context),tokens;for(asArray&&(tokens=[]);(asArray||stream.pos<pos.ch)&&!stream.eol();)stream.start=stream.pos,style=readToken(mode,stream,context.state),asArray&&tokens.push(new Token(stream,style,copyState(doc.mode,context.state)));return asArray?tokens:new Token(stream,style,context.state)}function extractLineClasses(type,output){if(type)for(;;){var lineClass=type.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!lineClass)break;type=type.slice(0,lineClass.index)+type.slice(lineClass.index+lineClass[0].length);var prop=lineClass[1]?"bgClass":"textClass";null==output[prop]?output[prop]=lineClass[2]:new RegExp("(?:^|s)"+lineClass[2]+"(?:$|s)").test(output[prop])||(output[prop]+=" "+lineClass[2])}return type}function runMode(cm,text,mode,context,f,lineClasses,forceToEnd){var flattenSpans=mode.flattenSpans;null==flattenSpans&&(flattenSpans=cm.options.flattenSpans);var curStart=0,curStyle=null,stream=new StringStream(text,cm.options.tabSize,context),style,inner=cm.options.addModeClass&&[null];for(""==text&&extractLineClasses(callBlankLine(mode,context.state),lineClasses);!stream.eol();){if(stream.pos>cm.options.maxHighlightLength?(flattenSpans=!1,forceToEnd&&processLine(cm,text,context,stream.pos),stream.pos=text.length,style=null):style=extractLineClasses(readToken(mode,stream,context.state,inner),lineClasses),inner){var mName=inner[0].name;mName&&(style="m-"+(style?mName+" "+style:mName))}if(!flattenSpans||curStyle!=style){for(;curStart<stream.start;)curStart=Math.min(stream.start,curStart+5e3),f(curStart,curStyle);curStyle=style}stream.start=stream.pos}for(;curStart<stream.pos;){var pos=Math.min(stream.pos,curStart+5e3);f(pos,curStyle),curStart=pos}}function findStartLine(cm,n,precise){for(var minindent,minline,doc=cm.doc,lim=precise?-1:n-(cm.doc.mode.innerMode?1e3:100),search=n;search>lim;--search){if(search<=doc.first)return doc.first;var line=getLine(doc,search-1),after=line.stateAfter;if(after&&(!precise||search+(after instanceof SavedContext?after.lookAhead:0)<=doc.modeFrontier))return search;var indented=countColumn(line.text,null,cm.options.tabSize);(null==minline||minindent>indented)&&(minline=search-1,minindent=indented)}return minline}function retreatFrontier(doc,n){if(doc.modeFrontier=Math.min(doc.modeFrontier,n),!(doc.highlightFrontier<n-10)){for(var start=doc.first,line=n-1;line>start;line--){var saved=getLine(doc,line).stateAfter;if(saved&&(!(saved instanceof SavedContext)||line+saved.lookAhead<n)){start=line+1;break}}doc.highlightFrontier=Math.min(doc.highlightFrontier,start)}}function updateLine(line,text,markedSpans,estimateHeight){line.text=text,line.stateAfter&&(line.stateAfter=null),line.styles&&(line.styles=null),null!=line.order&&(line.order=null),detachMarkedSpans(line),attachMarkedSpans(line,markedSpans);var estHeight=estimateHeight?estimateHeight(line):1;estHeight!=line.height&&updateLineHeight(line,estHeight)}function cleanUpLine(line){line.parent=null,detachMarkedSpans(line)}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=eltP("span",null,null,webkit?"padding-right: .1px":null),builder={pre:eltP("pre",[content],"CodeMirror-line"),content:content,col:0,pos:0,cm:cm,trailingSpace:!1,splitSpaces: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=void 0;builder.pos=0,builder.addToken=buildToken,hasBadBidiRects(cm.display.measure)&&(order=getOrder(line,cm.doc.direction))&&(builder.addToken=buildTokenBadBidi(builder.addToken,order)),builder.map=[];var allowFrontierUpdate=lineView!=cm.display.externalMeasured&&lineNo(line);insertLineContent(line,builder,getLineStyles(cm,line,allowFrontierUpdate)),line.styleClasses&&(line.styleClasses.bgClass&&(builder.bgClass=joinClasses(line.styleClasses.bgClass,builder.bgClass||"")),line.styleClasses.textClass&&(builder.textClass=joinClasses(line.styleClasses.textClass,builder.textClass||""))),0==builder.map.length&&builder.map.push(0,0,builder.content.appendChild(zeroWidthElement(cm.display.measure))),0==i?(lineView.measure.map=builder.map,lineView.measure.cache={}):((lineView.measure.maps||(lineView.measure.maps=[])).push(builder.map),(lineView.measure.caches||(lineView.measure.caches=[])).push({}))}if(webkit){var last=builder.content.lastChild;(/\bcm-tab\b/.test(last.className)||last.querySelector&&last.querySelector(".cm-tab"))&&(builder.content.className="cm-tab-wrap-hack")}return signal(cm,"renderLine",cm,lineView.line,builder.pre),builder.pre.className&&(builder.textClass=joinClasses(builder.pre.className,builder.textClass||"")),builder}function defaultSpecialCharPlaceholder(ch){var token=elt("span","•","cm-invalidchar");return token.title="\\u"+ch.charCodeAt(0).toString(16),token.setAttribute("aria-label",token.title),token}function buildToken(builder,text,style,startStyle,endStyle,css,attributes){if(text){var displayText=builder.splitSpaces?splitSpaces(text,builder.trailingSpace):text,special=builder.cm.state.specialChars,mustWrap=!1,content;if(special.test(text)){content=document.createDocumentFragment();for(var pos=0;;){special.lastIndex=pos;var m=special.exec(text),skipped=m?m.index-pos:text.length-pos;if(skipped){var txt=document.createTextNode(displayText.slice(pos,pos+skipped));ie&&ie_version<9?content.appendChild(elt("span",[txt])):content.appendChild(txt),builder.map.push(builder.pos,builder.pos+skipped,txt),builder.col+=skipped,builder.pos+=skipped}if(!m)break;pos+=skipped+1;var txt$1=void 0;if("\t"==m[0]){var tabSize=builder.cm.options.tabSize,tabWidth=tabSize-builder.col%tabSize;txt$1=content.appendChild(elt("span",spaceStr(tabWidth),"cm-tab")),txt$1.setAttribute("role","presentation"),txt$1.setAttribute("cm-text","\t"),builder.col+=tabWidth}else"\r"==m[0]||"\n"==m[0]?(txt$1=content.appendChild(elt("span","\r"==m[0]?"␍":"␤","cm-invalidchar")),txt$1.setAttribute("cm-text",m[0]),builder.col+=1):(txt$1=builder.cm.options.specialCharPlaceholder(m[0]),txt$1.setAttribute("cm-text",m[0]),ie&&ie_version<9?content.appendChild(elt("span",[txt$1])):content.appendChild(txt$1),builder.col+=1);builder.map.push(builder.pos,builder.pos+1,txt$1),builder.pos++}}else builder.col+=text.length,content=document.createTextNode(displayText),builder.map.push(builder.pos,builder.pos+text.length,content),ie&&ie_version<9&&(mustWrap=!0),builder.pos+=text.length;if(builder.trailingSpace=32==displayText.charCodeAt(text.length-1),style||startStyle||endStyle||mustWrap||css){var fullStyle=style||"";startStyle&&(fullStyle+=startStyle),endStyle&&(fullStyle+=endStyle);var token=elt("span",[content],fullStyle,css);if(attributes)for(var attr in attributes)attributes.hasOwnProperty(attr)&&"style"!=attr&&"class"!=attr&&token.setAttribute(attr,attributes[attr]);return builder.content.appendChild(token)}builder.content.appendChild(content)}}function splitSpaces(text,trailingBefore){if(text.length>1&&!/  /.test(text))return text;for(var spaceBefore=trailingBefore,result="",i=0;i<text.length;i++){var ch=text.charAt(i);" "!=ch||!spaceBefore||i!=text.length-1&&32!=text.charCodeAt(i+1)||(ch=" "),result+=ch,spaceBefore=" "==ch}return result}function buildTokenBadBidi(inner,order){return function(builder,text,style,startStyle,endStyle,css,attributes){style=style?style+" cm-force-border":"cm-force-border";for(var start=builder.pos,end=start+text.length;;){for(var part=void 0,i=0;i<order.length&&(part=order[i],!(part.to>start&&part.from<=start));i++);if(part.to>=end)return inner(builder,text,style,startStyle,endStyle,css,attributes);inner(builder,text.slice(0,part.to-start),style,startStyle,null,css,attributes),startStyle=null,text=text.slice(part.to-start),start=part.to}}}function buildCollapsedSpan(builder,size,marker,ignoreWidget){var widget=!ignoreWidget&&marker.widgetNode;widget&&builder.map.push(builder.pos,builder.pos+size,widget),!ignoreWidget&&builder.cm.display.input.needsContentAttribute&&(widget||(widget=builder.content.appendChild(document.createElement("span"))),widget.setAttribute("cm-marker",marker.id)),widget&&(builder.cm.display.input.setUneditable(widget),builder.content.appendChild(widget)),builder.pos+=size,builder.trailingSpace=!1}function insertLineContent(line,builder,styles){var spans=line.markedSpans,allText=line.text,at=0;if(spans)for(var len=allText.length,pos=0,i=1,text="",style,css,nextChange=0,spanStyle,spanEndStyle,spanStartStyle,collapsed,attributes;;){if(nextChange==pos){spanStyle=spanEndStyle=spanStartStyle=css="",attributes=null,collapsed=null,nextChange=1/0;for(var foundBookmarks=[],endStyles=void 0,j=0;j<spans.length;++j){var sp=spans[j],m=sp.marker;if("bookmark"==m.type&&sp.from==pos&&m.widgetNode)foundBookmarks.push(m);else if(sp.from<=pos&&(null==sp.to||sp.to>pos||m.collapsed&&sp.to==pos&&sp.from==pos)){if(null!=sp.to&&sp.to!=pos&&nextChange>sp.to&&(nextChange=sp.to,spanEndStyle=""),m.className&&(spanStyle+=" "+m.className),m.css&&(css=(css?css+";":"")+m.css),m.startStyle&&sp.from==pos&&(spanStartStyle+=" "+m.startStyle),m.endStyle&&sp.to==nextChange&&(endStyles||(endStyles=[])).push(m.endStyle,sp.to),m.title&&((attributes||(attributes={})).title=m.title),m.attributes)for(var attr in m.attributes)(attributes||(attributes={}))[attr]=m.attributes[attr];m.collapsed&&(!collapsed||compareCollapsedMarkers(collapsed.marker,m)<0)&&(collapsed=sp)}else sp.from>pos&&nextChange>sp.from&&(nextChange=sp.from)}if(endStyles)for(var j$1=0;j$1<endStyles.length;j$1+=2)endStyles[j$1+1]==nextChange&&(spanEndStyle+=" "+endStyles[j$1]);if(!collapsed||collapsed.from==pos)for(var j$2=0;j$2<foundBookmarks.length;++j$2)buildCollapsedSpan(builder,0,foundBookmarks[j$2]);if(collapsed&&(collapsed.from||0)==pos){if(buildCollapsedSpan(builder,(null==collapsed.to?len+1:collapsed.to)-pos,collapsed.marker,null==collapsed.from),null==collapsed.to)return;collapsed.to==pos&&(collapsed=!1)}}if(pos>=len)break;for(var upto=Math.min(len,nextChange);;){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:"",css,attributes)}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)}}else for(var i$1=1;i$1<styles.length;i$1+=2)builder.addToken(builder,allText.slice(at,at=styles[i$1]),interpretTokenStyle(styles[i$1+1],builder.cm.options))}function LineView(doc,line,lineN){this.line=line,this.rest=visualLineContinued(line),this.size=this.rest?lineNo(lst(this.rest))-lineN+1:1,this.node=this.text=null,this.hidden=lineIsHidden(doc,line)}function buildViewArray(cm,from,to){for(var array=[],nextPos,pos=from;pos<to;pos=nextPos){var view=new LineView(cm.doc,getLine(cm.doc,pos),pos);nextPos=pos+view.size,array.push(view)}return array}function pushOperation(op){operationGroup?operationGroup.ops.push(op):op.ownsGroup=operationGroup={ops:[op],delayedCallbacks:[]}}function fireCallbacksForOps(group){var callbacks=group.delayedCallbacks,i=0;do{for(;i<callbacks.length;i++)callbacks[i].call(null);for(var j=0;j<group.ops.length;j++){var op=group.ops[j];if(op.cursorActivityHandlers)for(;op.cursorActivityCalled<op.cursorActivityHandlers.length;)op.cursorActivityHandlers[op.cursorActivityCalled++].call(null,op.cm)}}while(i<callbacks.length)}function finishOperation(op,endCb){var group=op.ownsGroup;if(group)try{fireCallbacksForOps(group)}finally{operationGroup=null,endCb(group)}}function signalLater(emitter,type){var arr=getHandlers(emitter,type);if(arr.length){var args=Array.prototype.slice.call(arguments,2),list;operationGroup?list=operationGroup.delayedCallbacks:orphanDelayedCallbacks?list=orphanDelayedCallbacks:(list=orphanDelayedCallbacks=[],setTimeout(fireOrphanDelayed,0));for(var loop=function(i){list.push(function(){return arr[i].apply(null,args)})},i=0;i<arr.length;++i)loop(i)}}function fireOrphanDelayed(){var delayed=orphanDelayedCallbacks;orphanDelayedCallbacks=null;for(var i=0;i<delayed.length;++i)delayed[i]()}function updateLineForChanges(cm,lineView,lineN,dims){for(var j=0;j<lineView.changes.length;j++){var type=lineView.changes[j];"text"==type?updateLineText(cm,lineView):"gutter"==type?updateLineGutter(cm,lineView,lineN,dims):"class"==type?updateLineClasses(cm,lineView):"widget"==type&&updateLineWidgets(cm,lineView,dims)}lineView.changes=null}function ensureLineWrapped(lineView){return lineView.node==lineView.text&&(lineView.node=elt("div",null,null,"position: relative"),lineView.text.parentNode&&lineView.text.parentNode.replaceChild(lineView.node,lineView.text),lineView.node.appendChild(lineView.text),ie&&ie_version<8&&(lineView.node.style.zIndex=2)),lineView.node}function updateLineBackground(cm,lineView){var cls=lineView.bgClass?lineView.bgClass+" "+(lineView.line.bgClass||""):lineView.line.bgClass;if(cls&&(cls+=" CodeMirror-linebackground"),lineView.background)cls?lineView.background.className=cls:(lineView.background.parentNode.removeChild(lineView.background),lineView.background=null);else if(cls){var wrap=ensureLineWrapped(lineView);lineView.background=wrap.insertBefore(elt("div",null,cls),wrap.firstChild),cm.display.input.setUneditable(lineView.background)}}function getLineContent(cm,lineView){var ext=cm.display.externalMeasured;return ext&&ext.line==lineView.line?(cm.display.externalMeasured=null,lineView.measure=ext.measure,ext.built):buildLineContent(cm,lineView)}function updateLineText(cm,lineView){var cls=lineView.text.className,built=getLineContent(cm,lineView);lineView.text==lineView.node&&(lineView.node=built.pre),lineView.text.parentNode.replaceChild(built.pre,lineView.text),lineView.text=built.pre,built.bgClass!=lineView.bgClass||built.textClass!=lineView.textClass?(lineView.bgClass=built.bgClass,lineView.textClass=built.textClass,updateLineClasses(cm,lineView)):cls&&(lineView.text.className=cls)}function updateLineClasses(cm,lineView){updateLineBackground(cm,lineView),lineView.line.wrapClass?ensureLineWrapped(lineView).className=lineView.line.wrapClass:lineView.node!=lineView.text&&(lineView.node.className="");var textClass=lineView.textClass?lineView.textClass+" "+(lineView.line.textClass||""):lineView.line.textClass;lineView.text.className=textClass||""}function updateLineGutter(cm,lineView,lineN,dims){if(lineView.gutter&&(lineView.node.removeChild(lineView.gutter),lineView.gutter=null),lineView.gutterBackground&&(lineView.node.removeChild(lineView.gutterBackground),lineView.gutterBackground=null),lineView.line.gutterClass){var wrap=ensureLineWrapped(lineView);lineView.gutterBackground=elt("div",null,"CodeMirror-gutter-background "+lineView.line.gutterClass,"left: "+(cm.options.fixedGutter?dims.fixedPos:-dims.gutterTotalWidth)+"px; width: "+dims.gutterTotalWidth+"px"),cm.display.input.setUneditable(lineView.gutterBackground),wrap.insertBefore(lineView.gutterBackground,lineView.text)}var markers=lineView.line.gutterMarkers;if(cm.options.lineNumbers||markers){var wrap$1=ensureLineWrapped(lineView),gutterWrap=lineView.gutter=elt("div",null,"CodeMirror-gutter-wrapper","left: "+(cm.options.fixedGutter?dims.fixedPos:-dims.gutterTotalWidth)+"px");if(cm.display.input.setUneditable(gutterWrap),wrap$1.insertBefore(gutterWrap,lineView.text),lineView.line.gutterClass&&(gutterWrap.className+=" "+lineView.line.gutterClass),!cm.options.lineNumbers||markers&&markers["CodeMirror-linenumbers"]||(lineView.lineNumber=gutterWrap.appendChild(elt("div",lineNumberFor(cm.options,lineN),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+dims.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+cm.display.lineNumInnerWidth+"px"))),markers)for(var k=0;k<cm.options.gutters.length;++k){var id=cm.options.gutters[k],found=markers.hasOwnProperty(id)&&markers[id];found&&gutterWrap.appendChild(elt("div",[found],"CodeMirror-gutter-elt","left: "+dims.gutterLeft[id]+"px; width: "+dims.gutterWidth[id]+"px"))}}}function updateLineWidgets(cm,lineView,dims){lineView.alignable&&(lineView.alignable=null);for(var node=lineView.node.firstChild,next=void 0;node;node=next)next=node.nextSibling,"CodeMirror-linewidget"==node.className&&lineView.node.removeChild(node);insertLineWidgets(cm,lineView,dims)}function buildLineElement(cm,lineView,lineN,dims){var built=getLineContent(cm,lineView);return lineView.text=lineView.node=built.pre,built.bgClass&&(lineView.bgClass=built.bgClass),built.textClass&&(lineView.textClass=built.textClass),updateLineClasses(cm,lineView),updateLineGutter(cm,lineView,lineN,dims),insertLineWidgets(cm,lineView,dims),lineView.node}function insertLineWidgets(cm,lineView,dims){if(insertLineWidgetsFor(cm,lineView.line,lineView,dims,!0),lineView.rest)for(var i=0;i<lineView.rest.length;i++)insertLineWidgetsFor(cm,lineView.rest[i],lineView,dims,!1)}function insertLineWidgetsFor(cm,line,lineView,dims,allowAbove){if(line.widgets)for(var wrap=ensureLineWrapped(lineView),i=0,ws=line.widgets;i<ws.length;++i){var widget=ws[i],node=elt("div",[widget.node],"CodeMirror-linewidget");widget.handleMouseEvents||node.setAttribute("cm-ignore-events","true"),positionLineWidget(widget,node,lineView,dims),cm.display.input.setUneditable(node),allowAbove&&widget.above?wrap.insertBefore(node,lineView.gutter||lineView.text):wrap.appendChild(node),signalLater(widget,"redraw")}}function positionLineWidget(widget,node,lineView,dims){if(widget.noHScroll){(lineView.alignable||(lineView.alignable=[])).push(node);var width=dims.wrapperWidth;node.style.left=dims.fixedPos+"px",widget.coverGutter||(width-=dims.gutterTotalWidth,node.style.paddingLeft=dims.gutterTotalWidth+"px"),node.style.width=width+"px"}widget.coverGutter&&(node.style.zIndex=5,node.style.position="relative",widget.noHScroll||(node.style.marginLeft=-dims.gutterTotalWidth+"px"))}function widgetHeight(widget){if(null!=widget.height)return widget.height;var cm=widget.doc.cm;if(!cm)return 0;if(!contains(document.body,widget.node)){var parentStyle="position: relative;";widget.coverGutter&&(parentStyle+="margin-left: -"+cm.display.gutters.offsetWidth+"px;"),widget.noHScroll&&(parentStyle+="width: "+cm.display.wrapper.clientWidth+"px;"),removeChildrenAndAdd(cm.display.measure,elt("div",[widget.node],null,parentStyle))}return widget.height=widget.node.parentNode.offsetHeight}function eventInWidget(display,e){for(var n=e_target(e);n!=display.wrapper;n=n.parentNode)if(!n||1==n.nodeType&&"true"==n.getAttribute("cm-ignore-events")||n.parentNode==display.sizer&&n!=display.mover)return!0}function paddingTop(display){return display.lineSpace.offsetTop}function paddingVert(display){return display.mover.offsetHeight-display.lineSpace.offsetHeight}function paddingH(display){if(display.cachedPaddingH)return display.cachedPaddingH;var e=removeChildrenAndAdd(display.measure,elt("pre","x")),style=window.getComputedStyle?window.getComputedStyle(e):e.currentStyle,data={left:parseInt(style.paddingLeft),right:parseInt(style.paddingRight)};return isNaN(data.left)||isNaN(data.right)||(display.cachedPaddingH=data),data}function scrollGap(cm){return scrollerGap-cm.display.nativeBarWidth}function displayWidth(cm){return cm.display.scroller.clientWidth-scrollGap(cm)-cm.display.barWidth}function displayHeight(cm){return cm.display.scroller.clientHeight-scrollGap(cm)-cm.display.barHeight}function ensureLineHeights(cm,lineView,rect){var wrapping=cm.options.lineWrapping,curWidth=wrapping&&displayWidth(cm);if(!lineView.measure.heights||wrapping&&lineView.measure.width!=curWidth){var heights=lineView.measure.heights=[];if(wrapping){lineView.measure.width=curWidth;for(var rects=lineView.text.firstChild.getClientRects(),i=0;i<rects.length-1;i++){var cur=rects[i],next=rects[i+1];Math.abs(cur.bottom-next.bottom)>2&&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;i<lineView.rest.length;i++)if(lineView.rest[i]==line)return{map:lineView.measure.maps[i],cache:lineView.measure.caches[i]};for(var i$1=0;i$1<lineView.rest.length;i$1++)if(lineNo(lineView.rest[i$1])>lineN)return{map:lineView.measure.maps[i$1],cache:lineView.measure.caches[i$1],before:!0}}function updateExternalMeasurement(cm,line){line=visualLine(line);var lineN=lineNo(line),view=cm.display.externalMeasured=new LineView(cm.doc,line,lineN);view.lineN=lineN;var built=view.built=buildLineContent(cm,view);return view.text=built.pre,removeChildrenAndAdd(cm.display.lineMeasure,built.pre),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<cm.display.viewTo)return cm.display.view[findViewIndex(cm,lineN)];var ext=cm.display.externalMeasured;return ext&&lineN>=ext.lineN&&lineN<ext.lineN+ext.size?ext:void 0}function prepareMeasureForLine(cm,line){var lineN=lineNo(line),view=findViewForLine(cm,lineN);view&&!view.text?view=null:view&&view.changes&&(updateLineForChanges(cm,view,lineN,getDimensions(cm)),cm.curOp.forceUpdate=!0),view||(view=updateExternalMeasurement(cm,line));var info=mapFromLineView(view,line,lineN);return{line:line,view:view,rect:null,map:info.map,cache:info.cache,before:info.before,hasHeights:!1}}function measureCharPrepared(cm,prepared,ch,bias,varHeight){prepared.before&&(ch=-1);var key=ch+(bias||""),found;return prepared.cache.hasOwnProperty(key)?found=prepared.cache[key]:(prepared.rect||(prepared.rect=prepared.view.text.getBoundingClientRect()),prepared.hasHeights||(ensureLineHeights(cm,prepared.view,prepared.rect),prepared.hasHeights=!0),found=measureCharInner(cm,prepared,ch,bias),found.bogus||(prepared.cache[key]=found)),{left:found.left,right:found.right,top:varHeight?found.rtop:found.top,bottom:varHeight?found.rbottom:found.bottom}}function nodeAndOffsetInLineMap(map$$1,ch,bias){for(var node,start,end,collapse,mStart,mEnd,i=0;i<map$$1.length;i+=3)if(mStart=map$$1[i],mEnd=map$$1[i+1],ch<mStart?(start=0,end=1,collapse="left"):ch<mEnd?(start=ch-mStart,end=start+1):(i==map$$1.length-3||ch==mEnd&&map$$1[i+3]>ch)&&(end=mEnd-mStart,start=end-1,ch>=mEnd&&(collapse="right")),null!=start){if(node=map$$1[i+2],mStart==mEnd&&bias==(node.insertLeft?"left":"right")&&(collapse=bias),"left"==bias&&0==start)for(;i&&map$$1[i-2]==map$$1[i-3]&&map$$1[i-1].insertLeft;)node=map$$1[(i-=3)+2],collapse="left";if("right"==bias&&start==mEnd-mStart)for(;i<map$$1.length-3&&map$$1[i+3]==map$$1[i+4]&&!map$$1[i+5].insertLeft;)node=map$$1[(i+=3)+2],collapse="right";break}return{node:node,start:start,end:end,collapse:collapse,coverStart:mStart,coverEnd:mEnd}}function getUsefulRect(rects,bias){var rect=nullRect;if("left"==bias)for(var i=0;i<rects.length&&(rect=rects[i]).left==rect.right;i++);else for(var i$1=rects.length-1;i$1>=0&&(rect=rects[i$1]).left==rect.right;i$1--);return rect}function measureCharInner(cm,prepared,ch,bias){var place=nodeAndOffsetInLineMap(prepared.map,ch,bias),node=place.node,start=place.start,end=place.end,collapse=place.collapse,rect;if(3==node.nodeType){for(var i$1=0;i$1<4;i$1++){for(;start&&isExtendingChar(prepared.line.text.charAt(place.coverStart+start));)--start;for(;place.coverStart+end<place.coverEnd&&isExtendingChar(prepared.line.text.charAt(place.coverStart+end));)++end;if(rect=ie&&ie_version<9&&0==start&&end==place.coverEnd-place.coverStart?node.parentNode.getBoundingClientRect():getUsefulRect(range(node,start,end).getClientRects(),bias),rect.left||rect.right||0==start)break;end=start,start-=1,collapse="right"}ie&&ie_version<11&&(rect=maybeUpdateRectForZooming(cm.display.measure,rect))}else{start>0&&(collapse=bias="right");var rects;rect=cm.options.lineWrapping&&(rects=node.getClientRects()).length>1?rects["right"==bias?rects.length-1:0]:node.getBoundingClientRect()}if(ie&&ie_version<9&&!start&&(!rect||!rect.left&&!rect.right)){var rSpan=node.parentNode.getClientRects()[0];rect=rSpan?{left:rSpan.left,right:rSpan.left+charWidth(cm.display),top:rSpan.top,bottom:rSpan.bottom}:nullRect}for(var rtop=rect.top-prepared.rect.top,rbot=rect.bottom-prepared.rect.top,mid=(rtop+rbot)/2,heights=prepared.view.measure.heights,i=0;i<heights.length-1&&!(mid<heights[i]);i++);var top=i?heights[i-1]:0,bot=heights[i],result={left:("right"==collapse?rect.right:rect.left)-prepared.rect.left,right:("left"==collapse?rect.left:rect.right)-prepared.rect.left,top:top,bottom:bot};return rect.left||rect.right||(result.bogus=!0),cm.options.singleCursorHeightPerLine||(result.rtop=rtop,result.rbottom=rbot),result}function maybeUpdateRectForZooming(measure,rect){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!hasBadZoomedRects(measure))return rect;var scaleX=screen.logicalXDPI/screen.deviceXDPI,scaleY=screen.logicalYDPI/screen.deviceYDPI;return{left:rect.left*scaleX,right:rect.right*scaleX,top:rect.top*scaleY,bottom:rect.bottom*scaleY}}function clearLineMeasurementCacheFor(lineView){if(lineView.measure&&(lineView.measure.cache={},lineView.measure.heights=null,lineView.rest))for(var i=0;i<lineView.rest.length;i++)lineView.measure.caches[i]={}}function clearLineMeasurementCache(cm){cm.display.externalMeasure=null,removeChildren(cm.display.lineMeasure);for(var i=0;i<cm.display.view.length;i++)clearLineMeasurementCacheFor(cm.display.view[i])}function clearCaches(cm){clearLineMeasurementCache(cm),cm.display.cachedCharWidth=cm.display.cachedTextHeight=cm.display.cachedPaddingH=null,cm.options.lineWrapping||(cm.display.maxLineChanged=!0),cm.display.lineNumChars=null}function pageScrollX(){return chrome&&android?-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft)):window.pageXOffset||(document.documentElement||document.body).scrollLeft}function pageScrollY(){return chrome&&android?-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop)):window.pageYOffset||(document.documentElement||document.body).scrollTop}function widgetTopHeight(lineObj){var height=0;if(lineObj.widgets)for(var i=0;i<lineObj.widgets.length;++i)lineObj.widgets[i].above&&(height+=widgetHeight(lineObj.widgets[i]));return height}function intoCoordSystem(cm,lineObj,rect,context,includeWidgets){if(!includeWidgets){var height=widgetTopHeight(lineObj);rect.top+=height,rect.bottom+=height}if("line"==context)return rect;context||(context="local");var yOff=heightAtLine(lineObj);if("local"==context?yOff+=paddingTop(cm.display):yOff-=cm.display.viewOffset,"page"==context||"window"==context){var lOff=cm.display.lineSpace.getBoundingClientRect();yOff+=lOff.top+("window"==context?0:pageScrollY());var xOff=lOff.left+("window"==context?0:pageScrollX());rect.left+=xOff,rect.right+=xOff}return rect.top+=yOff,rect.bottom+=yOff,rect}function fromCoordSystem(cm,coords,context){if("div"==context)return coords;var left=coords.left,top=coords.top;if("page"==context)left-=pageScrollX(),top-=pageScrollY();else if("local"==context||!context){var localBox=cm.display.sizer.getBoundingClientRect();left+=localBox.left,top+=localBox.top}var lineSpaceBox=cm.display.lineSpace.getBoundingClientRect();return{left:left-lineSpaceBox.left,top:top-lineSpaceBox.top}}function charCoords(cm,pos,context,lineObj,bias){return lineObj||(lineObj=getLine(cm.doc,pos.line)),intoCoordSystem(cm,lineObj,measureChar(cm,lineObj,pos.ch,bias),context)}function cursorCoords(cm,pos,context,lineObj,preparedMeasure,varHeight){function get(ch,right){var m=measureCharPrepared(cm,preparedMeasure,ch,right?"right":"left",varHeight);return right?m.left=m.right:m.right=m.left,intoCoordSystem(cm,lineObj,m,context)}function getBidi(ch,partPos,invert){var part=order[partPos],right=1==part.level;return get(invert?ch-1:ch,right!=invert)}lineObj=lineObj||getLine(cm.doc,pos.line),preparedMeasure||(preparedMeasure=prepareMeasureForLine(cm,lineObj));var order=getOrder(lineObj,cm.doc.direction),ch=pos.ch,sticky=pos.sticky;
if(ch>=lineObj.text.length?(ch=lineObj.text.length,sticky="before"):ch<=0&&(ch=0,sticky="after"),!order)return get("before"==sticky?ch-1:ch,"before"==sticky);var partPos=getBidiPartAt(order,ch,sticky),other=bidiOther,val=getBidi(ch,partPos,"before"==sticky);return null!=other&&(val.other=getBidi(ch,other,"before"!=sticky)),val}function estimateCoords(cm,pos){var left=0;pos=clipPos(cm.doc,pos),cm.options.lineWrapping||(left=charWidth(cm.display)*pos.ch);var lineObj=getLine(cm.doc,pos.line),top=heightAtLine(lineObj)+paddingTop(cm.display);return{left:left,right:left,top:top,bottom:top+lineObj.height}}function PosWithInfo(line,ch,sticky,outside,xRel){var pos=Pos(line,ch,sticky);return pos.xRel=xRel,outside&&(pos.outside=!0),pos}function coordsChar(cm,x,y){var doc=cm.doc;if(y+=cm.display.viewOffset,y<0)return PosWithInfo(doc.first,0,null,!0,-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,null,!0,1);x<0&&(x=0);for(var lineObj=getLine(doc,lineN);;){var found=coordsCharInner(cm,lineObj,lineN,x,y),collapsed=collapsedSpanAround(lineObj,found.ch+(found.xRel>0?1:0));if(!collapsed)return found;var rangeEnd=collapsed.find(1);if(rangeEnd.line==lineN)return rangeEnd;lineObj=getLine(doc,lineN=rangeEnd.line)}}function wrappedLineExtent(cm,lineObj,preparedMeasure,y){y-=widgetTopHeight(lineObj);var end=lineObj.text.length,begin=findFirst(function(ch){return measureCharPrepared(cm,preparedMeasure,ch-1).bottom<=y},end,0);return end=findFirst(function(ch){return measureCharPrepared(cm,preparedMeasure,ch).top>y},begin,end),{begin:begin,end:end}}function wrappedLineExtentChar(cm,lineObj,preparedMeasure,target){preparedMeasure||(preparedMeasure=prepareMeasureForLine(cm,lineObj));var targetTop=intoCoordSystem(cm,lineObj,measureCharPrepared(cm,preparedMeasure,target),"line").top;return wrappedLineExtent(cm,lineObj,preparedMeasure,targetTop)}function boxIsAfter(box,x,y,left){return!(box.bottom<=y)&&(box.top>y||(left?box.left:box.right)>x)}function coordsCharInner(cm,lineObj,lineNo$$1,x,y){y-=heightAtLine(lineObj);var preparedMeasure=prepareMeasureForLine(cm,lineObj),widgetHeight$$1=widgetTopHeight(lineObj),begin=0,end=lineObj.text.length,ltr=!0,order=getOrder(lineObj,cm.doc.direction);if(order){var part=(cm.options.lineWrapping?coordsBidiPartWrapped:coordsBidiPart)(cm,lineObj,lineNo$$1,preparedMeasure,order,x,y);ltr=1!=part.level,begin=ltr?part.from:part.to-1,end=ltr?part.to:part.from-1}var chAround=null,boxAround=null,ch=findFirst(function(ch){var box=measureCharPrepared(cm,preparedMeasure,ch);return box.top+=widgetHeight$$1,box.bottom+=widgetHeight$$1,!!boxIsAfter(box,x,y,!1)&&(box.top<=y&&box.left<=x&&(chAround=ch,boxAround=box),!0)},begin,end),baseX,sticky,outside=!1;if(boxAround){var atLeft=x-boxAround.left<boxAround.right-x,atStart=atLeft==ltr;ch=chAround+(atStart?0:1),sticky=atStart?"after":"before",baseX=atLeft?boxAround.left:boxAround.right}else{ltr||ch!=end&&ch!=begin||ch++,sticky=0==ch?"after":ch==lineObj.text.length?"before":measureCharPrepared(cm,preparedMeasure,ch-(ltr?1:0)).bottom+widgetHeight$$1<=y==ltr?"after":"before";var coords=cursorCoords(cm,Pos(lineNo$$1,ch,sticky),"line",lineObj,preparedMeasure);baseX=coords.left,outside=y<coords.top||y>=coords.bottom}return ch=skipExtendingChars(lineObj.text,ch,1),PosWithInfo(lineNo$$1,ch,sticky,outside,x-baseX)}function coordsBidiPart(cm,lineObj,lineNo$$1,preparedMeasure,order,x,y){var index=findFirst(function(i){var part=order[i],ltr=1!=part.level;return boxIsAfter(cursorCoords(cm,Pos(lineNo$$1,ltr?part.to:part.from,ltr?"before":"after"),"line",lineObj,preparedMeasure),x,y,!0)},0,order.length-1),part=order[index];if(index>0){var ltr=1!=part.level,start=cursorCoords(cm,Pos(lineNo$$1,ltr?part.from:part.to,ltr?"after":"before"),"line",lineObj,preparedMeasure);boxIsAfter(start,x,y,!0)&&start.top>y&&(part=order[index-1])}return part}function coordsBidiPartWrapped(cm,lineObj,_lineNo,preparedMeasure,order,x,y){var ref=wrappedLineExtent(cm,lineObj,preparedMeasure,y),begin=ref.begin,end=ref.end;/\s/.test(lineObj.text.charAt(end-1))&&end--;for(var part=null,closestDist=null,i=0;i<order.length;i++){var p=order[i];if(!(p.from>=end||p.to<=begin)){var ltr=1!=p.level,endX=measureCharPrepared(cm,preparedMeasure,ltr?Math.min(end,p.to)-1:Math.max(begin,p.from)).right,dist=endX<x?x-endX+1e9:endX-x;(!part||closestDist>dist)&&(part=p,closestDist=dist)}}return part||(part=order[order.length-1]),part.from<begin&&(part={from:begin,to:part.to,level:part.level}),part.to>end&&(part={from:part.from,to:end,level:part.level}),part}function textHeight(display){if(null!=display.cachedTextHeight)return display.cachedTextHeight;if(null==measureText){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;return height>3&&(display.cachedTextHeight=height),removeChildren(display.measure),height||1}function charWidth(display){if(null!=display.cachedCharWidth)return display.cachedCharWidth;var anchor=elt("span","xxxxxxxxxx"),pre=elt("pre",[anchor]);removeChildrenAndAdd(display.measure,pre);var rect=anchor.getBoundingClientRect(),width=(rect.right-rect.left)/10;return width>2&&(display.cachedCharWidth=width),width||10}function getDimensions(cm){for(var d=cm.display,left={},width={},gutterLeft=d.gutters.clientLeft,n=d.gutters.firstChild,i=0;n;n=n.nextSibling,++i)left[cm.options.gutters[i]]=n.offsetLeft+n.clientLeft+gutterLeft,width[cm.options.gutters[i]]=n.clientWidth;return{fixedPos:compensateForHScroll(d),gutterTotalWidth:d.gutters.offsetWidth,gutterLeft:left,gutterWidth:width,wrapperWidth:d.wrapper.clientWidth}}function compensateForHScroll(display){return display.scroller.getBoundingClientRect().left-display.sizer.getBoundingClientRect().left}function estimateHeight(cm){var th=textHeight(cm.display),wrapping=cm.options.lineWrapping,perLine=wrapping&&Math.max(5,cm.display.scroller.clientWidth/charWidth(cm.display)-3);return function(line){if(lineIsHidden(cm.doc,line))return 0;var widgetsHeight=0;if(line.widgets)for(var i=0;i<line.widgets.length;i++)line.widgets[i].height&&(widgetsHeight+=line.widgets[i].height);return wrapping?widgetsHeight+(Math.ceil(line.text.length/perLine)||1)*th:widgetsHeight+th}}function estimateLineHeights(cm){var doc=cm.doc,est=estimateHeight(cm);doc.iter(function(line){var estHeight=est(line);estHeight!=line.height&&updateLineHeight(line,estHeight)})}function posFromMouse(cm,e,liberal,forRect){var display=cm.display;if(!liberal&&"true"==e_target(e).getAttribute("cm-not-content"))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&&1==coords.xRel&&(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 findViewIndex(cm,n){if(n>=cm.display.viewTo)return null;if(n-=cm.display.viewFrom,n<0)return null;for(var view=cm.display.view,i=0;i<view.length;i++)if(n-=view[i].size,n<0)return i}function updateSelection(cm){cm.display.input.showSelection(cm.display.input.prepareSelection())}function prepareSelection(cm,primary){void 0===primary&&(primary=!0);for(var doc=cm.doc,result={},curFragment=result.cursors=document.createDocumentFragment(),selFragment=result.selection=document.createDocumentFragment(),i=0;i<doc.sel.ranges.length;i++)if(primary||i!=doc.sel.primIndex){var range$$1=doc.sel.ranges[i];if(!(range$$1.from().line>=cm.display.viewTo||range$$1.to().line<cm.display.viewFrom)){var collapsed=range$$1.empty();(collapsed||cm.options.showCursorWhenSelecting)&&drawSelectionCursor(cm,range$$1.head,curFragment),collapsed||drawSelectionRange(cm,range$$1,selFragment)}}return result}function drawSelectionCursor(cm,head,output){var pos=cursorCoords(cm,head,"div",null,null,!cm.options.singleCursorHeightPerLine),cursor=output.appendChild(elt("div"," ","CodeMirror-cursor"));if(cursor.style.left=pos.left+"px",cursor.style.top=pos.top+"px",cursor.style.height=Math.max(0,pos.bottom-pos.top)*cm.options.cursorHeight+"px",pos.other){var otherCursor=output.appendChild(elt("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));otherCursor.style.display="",otherCursor.style.left=pos.other.left+"px",otherCursor.style.top=pos.other.top+"px",otherCursor.style.height=.85*(pos.other.bottom-pos.other.top)+"px"}}function cmpCoords(a,b){return a.top-b.top||a.left-b.left}function drawSelectionRange(cm,range$$1,output){function add(left,top,width,bottom){top<0&&(top=0),top=Math.round(top),bottom=Math.round(bottom),fragment.appendChild(elt("div",null,"CodeMirror-selected","position: absolute; left: "+left+"px;\n                             top: "+top+"px; width: "+(null==width?rightSide-left:width)+"px;\n                             height: "+(bottom-top)+"px"))}function drawForLine(line,fromArg,toArg){function coords(ch,bias){return charCoords(cm,Pos(line,ch),"div",lineObj,bias)}function wrapX(pos,dir,side){var extent=wrappedLineExtentChar(cm,lineObj,null,pos),prop="ltr"==dir==("after"==side)?"left":"right",ch="after"==side?extent.begin:extent.end-(/\s/.test(lineObj.text.charAt(extent.end-1))?2:1);return coords(ch,prop)[prop]}var lineObj=getLine(doc,line),lineLen=lineObj.text.length,start,end,order=getOrder(lineObj,doc.direction);return iterateBidiSections(order,fromArg||0,null==toArg?lineLen:toArg,function(from,to,dir,i){var ltr="ltr"==dir,fromPos=coords(from,ltr?"left":"right"),toPos=coords(to-1,ltr?"right":"left"),openStart=null==fromArg&&0==from,openEnd=null==toArg&&to==lineLen,first=0==i,last=!order||i==order.length-1;if(toPos.top-fromPos.top<=3){var openLeft=(docLTR?openStart:openEnd)&&first,openRight=(docLTR?openEnd:openStart)&&last,left=openLeft?leftSide:(ltr?fromPos:toPos).left,right=openRight?rightSide:(ltr?toPos:fromPos).right;add(left,fromPos.top,right-left,fromPos.bottom)}else{var topLeft,topRight,botLeft,botRight;ltr?(topLeft=docLTR&&openStart&&first?leftSide:fromPos.left,topRight=docLTR?rightSide:wrapX(from,dir,"before"),botLeft=docLTR?leftSide:wrapX(to,dir,"after"),botRight=docLTR&&openEnd&&last?rightSide:toPos.right):(topLeft=docLTR?wrapX(from,dir,"before"):leftSide,topRight=!docLTR&&openStart&&first?rightSide:fromPos.right,botLeft=!docLTR&&openEnd&&last?leftSide:toPos.left,botRight=docLTR?wrapX(to,dir,"after"):rightSide),add(topLeft,fromPos.top,topRight-topLeft,fromPos.bottom),fromPos.bottom<toPos.top&&add(leftSide,fromPos.bottom,null,toPos.top),add(botLeft,toPos.top,botRight-botLeft,toPos.bottom)}(!start||cmpCoords(fromPos,start)<0)&&(start=fromPos),cmpCoords(toPos,start)<0&&(start=toPos),(!end||cmpCoords(fromPos,end)<0)&&(end=fromPos),cmpCoords(toPos,end)<0&&(end=toPos)}),{start:start,end:end}}var display=cm.display,doc=cm.doc,fragment=document.createDocumentFragment(),padding=paddingH(cm.display),leftSide=padding.left,rightSide=Math.max(display.sizerWidth,displayWidth(cm)-display.sizer.offsetLeft)-padding.right,docLTR="ltr"==doc.direction,sFrom=range$$1.from(),sTo=range$$1.to();if(sFrom.line==sTo.line)drawForLine(sFrom.line,sFrom.ch,sTo.ch);else{var fromLine=getLine(doc,sFrom.line),toLine=getLine(doc,sTo.line),singleVLine=visualLine(fromLine)==visualLine(toLine),leftEnd=drawForLine(sFrom.line,sFrom.ch,singleVLine?fromLine.text.length+1:null).end,rightStart=drawForLine(sTo.line,singleVLine?0:null,sTo.ch).start;singleVLine&&(leftEnd.top<rightStart.top-2?(add(leftEnd.right,leftEnd.top,null,leftEnd.bottom),add(leftSide,rightStart.top,rightStart.left,rightStart.bottom)):add(leftEnd.right,leftEnd.top,rightStart.left-leftEnd.right,leftEnd.bottom)),leftEnd.bottom<rightStart.top&&add(leftSide,leftEnd.bottom,null,rightStart.top)}output.appendChild(fragment)}function restartBlink(cm){if(cm.state.focused){var display=cm.display;clearInterval(display.blinker);var on=!0;display.cursorDiv.style.visibility="",cm.options.cursorBlinkRate>0?display.blinker=setInterval(function(){return display.cursorDiv.style.visibility=(on=!on)?"":"hidden"},cm.options.cursorBlinkRate):cm.options.cursorBlinkRate<0&&(display.cursorDiv.style.visibility="hidden")}}function ensureFocus(cm){cm.state.focused||(cm.display.input.focus(),onFocus(cm))}function delayBlurEvent(cm){cm.state.delayingBlurEvent=!0,setTimeout(function(){cm.state.delayingBlurEvent&&(cm.state.delayingBlurEvent=!1,onBlur(cm))},100)}function onFocus(cm,e){cm.state.delayingBlurEvent&&(cm.state.delayingBlurEvent=!1),"nocursor"!=cm.options.readOnly&&(cm.state.focused||(signal(cm,"focus",cm,e),cm.state.focused=!0,addClass(cm.display.wrapper,"CodeMirror-focused"),cm.curOp||cm.display.selForContextMenu==cm.doc.sel||(cm.display.input.reset(),webkit&&setTimeout(function(){return cm.display.input.reset(!0)},20)),cm.display.input.receivedFocus()),restartBlink(cm))}function onBlur(cm,e){cm.state.delayingBlurEvent||(cm.state.focused&&(signal(cm,"blur",cm,e),cm.state.focused=!1,rmClass(cm.display.wrapper,"CodeMirror-focused")),clearInterval(cm.display.blinker),setTimeout(function(){cm.state.focused||(cm.display.shift=!1)},150))}function updateHeightsInViewport(cm){for(var display=cm.display,prevBottom=display.lineDiv.offsetTop,i=0;i<display.view.length;i++){var cur=display.view[i],wrapping=cm.options.lineWrapping,height=void 0,width=0;if(!cur.hidden){if(ie&&ie_version<8){var bot=cur.node.offsetTop+cur.node.offsetHeight;height=bot-prevBottom,prevBottom=bot}else{var box=cur.node.getBoundingClientRect();height=box.bottom-box.top,!wrapping&&cur.text.firstChild&&(width=cur.text.firstChild.getBoundingClientRect().right-box.left-1)}var diff=cur.line.height-height;if(height<2&&(height=textHeight(display)),(diff>.005||diff<-.005)&&(updateLineHeight(cur.line,height),updateWidgetHeight(cur.line),cur.rest))for(var j=0;j<cur.rest.length;j++)updateWidgetHeight(cur.rest[j]);if(width>cm.display.sizerWidth){var chWidth=Math.ceil(width/charWidth(cm.display));chWidth>cm.display.maxLineLength&&(cm.display.maxLineLength=chWidth,cm.display.maxLine=cur.line,cm.display.maxLineChanged=!0)}}}}function updateWidgetHeight(line){if(line.widgets)for(var i=0;i<line.widgets.length;++i){var w=line.widgets[i],parent=w.node.parentNode;parent&&(w.height=parent.offsetHeight)}}function visibleLines(display,doc,viewport){var top=viewport&&null!=viewport.top?Math.max(0,viewport.top):display.scroller.scrollTop;top=Math.floor(top-paddingTop(display));var bottom=viewport&&null!=viewport.bottom?viewport.bottom:top+display.wrapper.clientHeight,from=lineAtHeight(doc,top),to=lineAtHeight(doc,bottom);if(viewport&&viewport.ensure){var ensureFrom=viewport.ensure.from.line,ensureTo=viewport.ensure.to.line;ensureFrom<from?(from=ensureFrom,to=lineAtHeight(doc,heightAtLine(getLine(doc,ensureFrom))+display.wrapper.clientHeight)):Math.min(ensureTo,doc.lastLine())>=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){for(var comp=compensateForHScroll(display)-display.scroller.scrollLeft+cm.doc.scrollLeft,gutterW=display.gutters.offsetWidth,left=comp+"px",i=0;i<view.length;i++)if(!view[i].hidden){cm.options.fixedGutter&&(view[i].gutter&&(view[i].gutter.style.left=left),view[i].gutterBackground&&(view[i].gutterBackground.style.left=left));var align=view[i].alignable;if(align)for(var j=0;j<align.length;j++)align[j].style.left=left}cm.options.fixedGutter&&(display.gutters.style.left=comp+gutterW+"px")}}function maybeUpdateLineNumberWidth(cm){if(!cm.options.lineNumbers)return!1;var doc=cm.doc,last=lineNumberFor(cm.options,doc.first+doc.size-1),display=cm.display;if(last.length!=display.lineNumChars){var test=display.measure.appendChild(elt("div",[elt("div",last)],"CodeMirror-linenumber CodeMirror-gutter-elt")),innerW=test.firstChild.offsetWidth,padding=test.offsetWidth-innerW;return display.lineGutter.style.width="",display.lineNumInnerWidth=Math.max(innerW,display.lineGutter.offsetWidth-padding)+1,display.lineNumWidth=display.lineNumInnerWidth+padding,display.lineNumChars=display.lineNumInnerWidth?last.length:-1,display.lineGutter.style.width=display.lineNumWidth+"px",updateGutterSpace(cm),!0}return!1}function maybeScrollWindow(cm,rect){if(!signalDOMEvent(cm,"scrollCursorIntoView")){var display=cm.display,box=display.sizer.getBoundingClientRect(),doScroll=null;if(rect.top+box.top<0?doScroll=!0:rect.bottom+box.top>(window.innerHeight||document.documentElement.clientHeight)&&(doScroll=!1),null!=doScroll&&!phantom){var scrollNode=elt("div","​",null,"position: absolute;\n                         top: "+(rect.top-display.viewOffset-paddingTop(cm.display))+"px;\n                         height: "+(rect.bottom-rect.top+scrollGap(cm)+display.barHeight)+"px;\n                         left: "+rect.left+"px; width: "+Math.max(2,rect.right-rect.left)+"px;");cm.display.lineSpace.appendChild(scrollNode),scrollNode.scrollIntoView(doScroll),cm.display.lineSpace.removeChild(scrollNode)}}}function scrollPosIntoView(cm,pos,end,margin){null==margin&&(margin=0);var rect;cm.options.lineWrapping||pos!=end||(pos=pos.ch?Pos(pos.line,"before"==pos.sticky?pos.ch-1:pos.ch,"after"):pos,end="before"==pos.sticky?Pos(pos.line,pos.ch+1,"before"):pos);for(var limit=0;limit<5;limit++){var changed=!1,coords=cursorCoords(cm,pos),endCoords=end&&end!=pos?cursorCoords(cm,end):coords;rect={left:Math.min(coords.left,endCoords.left),top:Math.min(coords.top,endCoords.top)-margin,right:Math.max(coords.left,endCoords.left),bottom:Math.max(coords.bottom,endCoords.bottom)+margin};var scrollPos=calculateScrollPos(cm,rect),startTop=cm.doc.scrollTop,startLeft=cm.doc.scrollLeft;if(null!=scrollPos.scrollTop&&(updateScrollTop(cm,scrollPos.scrollTop),Math.abs(cm.doc.scrollTop-startTop)>1&&(changed=!0)),null!=scrollPos.scrollLeft&&(setScrollLeft(cm,scrollPos.scrollLeft),Math.abs(cm.doc.scrollLeft-startLeft)>1&&(changed=!0)),!changed)break}return rect}function scrollIntoView(cm,rect){var scrollPos=calculateScrollPos(cm,rect);null!=scrollPos.scrollTop&&updateScrollTop(cm,scrollPos.scrollTop),null!=scrollPos.scrollLeft&&setScrollLeft(cm,scrollPos.scrollLeft)}function calculateScrollPos(cm,rect){var display=cm.display,snapMargin=textHeight(cm.display);rect.top<0&&(rect.top=0);var screentop=cm.curOp&&null!=cm.curOp.scrollTop?cm.curOp.scrollTop:display.scroller.scrollTop,screen=displayHeight(cm),result={};rect.bottom-rect.top>screen&&(rect.bottom=rect.top+screen);var docBottom=cm.doc.height+paddingVert(display),atTop=rect.top<snapMargin,atBottom=rect.bottom>docBottom-snapMargin;if(rect.top<screentop)result.scrollTop=atTop?0:rect.top;else if(rect.bottom>screentop+screen){var newTop=Math.min(rect.top,(atBottom?docBottom:rect.bottom)-screen);newTop!=screentop&&(result.scrollTop=newTop)}var screenleft=cm.curOp&&null!=cm.curOp.scrollLeft?cm.curOp.scrollLeft:display.scroller.scrollLeft,screenw=displayWidth(cm)-(cm.options.fixedGutter?display.gutters.offsetWidth:0),tooWide=rect.right-rect.left>screenw;return tooWide&&(rect.right=rect.left+screenw),rect.left<10?result.scrollLeft=0:rect.left<screenleft?result.scrollLeft=Math.max(0,rect.left-(tooWide?0:10)):rect.right>screenw+screenleft-3&&(result.scrollLeft=rect.right+(tooWide?0:10)-screenw),result}function addToScrollTop(cm,top){null!=top&&(resolveScrollToPos(cm),cm.curOp.scrollTop=(null==cm.curOp.scrollTop?cm.doc.scrollTop:cm.curOp.scrollTop)+top)}function ensureCursorVisible(cm){resolveScrollToPos(cm);var cur=cm.getCursor();cm.curOp.scrollToPos={from:cur,to:cur,margin:cm.options.cursorScrollMargin}}function scrollToCoords(cm,x,y){null==x&&null==y||resolveScrollToPos(cm),null!=x&&(cm.curOp.scrollLeft=x),null!=y&&(cm.curOp.scrollTop=y)}function scrollToRange(cm,range$$1){resolveScrollToPos(cm),cm.curOp.scrollToPos=range$$1}function resolveScrollToPos(cm){var range$$1=cm.curOp.scrollToPos;if(range$$1){cm.curOp.scrollToPos=null;var from=estimateCoords(cm,range$$1.from),to=estimateCoords(cm,range$$1.to);scrollToCoordsRange(cm,from,to,range$$1.margin)}}function scrollToCoordsRange(cm,from,to,margin){var sPos=calculateScrollPos(cm,{left:Math.min(from.left,to.left),top:Math.min(from.top,to.top)-margin,right:Math.max(from.right,to.right),bottom:Math.max(from.bottom,to.bottom)+margin});scrollToCoords(cm,sPos.scrollLeft,sPos.scrollTop)}function updateScrollTop(cm,val){Math.abs(cm.doc.scrollTop-val)<2||(gecko||updateDisplaySimple(cm,{top:val}),setScrollTop(cm,val,!0),gecko&&updateDisplaySimple(cm),startWorker(cm,100))}function setScrollTop(cm,val,forceScroll){val=Math.min(cm.display.scroller.scrollHeight-cm.display.scroller.clientHeight,val),(cm.display.scroller.scrollTop!=val||forceScroll)&&(cm.doc.scrollTop=val,cm.display.scrollbars.setScrollTop(val),cm.display.scroller.scrollTop!=val&&(cm.display.scroller.scrollTop=val))}function setScrollLeft(cm,val,isScroller,forceScroll){val=Math.min(val,cm.display.scroller.scrollWidth-cm.display.scroller.clientWidth),(isScroller?val==cm.doc.scrollLeft:Math.abs(cm.doc.scrollLeft-val)<2)&&!forceScroll||(cm.doc.scrollLeft=val,alignHorizontally(cm),cm.display.scroller.scrollLeft!=val&&(cm.display.scroller.scrollLeft=val),cm.display.scrollbars.setScrollLeft(val))}function measureForScrollbars(cm){var d=cm.display,gutterW=d.gutters.offsetWidth,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 updateScrollbars(cm,measure){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++)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,sizes=d.scrollbars.update(measure);d.sizer.style.paddingRight=(d.barWidth=sizes.right)+"px",d.sizer.style.paddingBottom=(d.barHeight=sizes.bottom)+"px",d.heightForcer.style.borderBottom=sizes.bottom+"px solid transparent",sizes.right&&sizes.bottom?(d.scrollbarFiller.style.display="block",d.scrollbarFiller.style.height=sizes.bottom+"px",d.scrollbarFiller.style.width=sizes.right+"px"):d.scrollbarFiller.style.display="",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"):d.gutterFiller.style.display=""}function initScrollbars(cm){cm.display.scrollbars&&(cm.display.scrollbars.clear(),cm.display.scrollbars.addClass&&rmClass(cm.display.wrapper,cm.display.scrollbars.addClass)),cm.display.scrollbars=new scrollbarModel[cm.options.scrollbarStyle](function(node){cm.display.wrapper.insertBefore(node,cm.display.scrollbarFiller),on(node,"mousedown",function(){cm.state.focused&&setTimeout(function(){return cm.display.input.focus()},0)}),node.setAttribute("cm-not-content","true")},function(pos,axis){"horizontal"==axis?setScrollLeft(cm,pos):updateScrollTop(cm,pos)},cm),cm.display.scrollbars.addClass&&addClass(cm.display.wrapper,cm.display.scrollbars.addClass)}function startOperation(cm){cm.curOp={cm:cm,viewChanged:!1,startHeight:cm.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++nextOpId},pushOperation(cm.curOp)}function endOperation(cm){var op=cm.curOp;op&&finishOperation(op,function(group){for(var i=0;i<group.ops.length;i++)group.ops[i].cm.curOp=null;endOperations(group)})}function endOperations(group){for(var ops=group.ops,i=0;i<ops.length;i++)endOperation_R1(ops[i]);for(var i$1=0;i$1<ops.length;i$1++)endOperation_W1(ops[i$1]);for(var i$2=0;i$2<ops.length;i$2++)endOperation_R2(ops[i$2]);for(var i$3=0;i$3<ops.length;i$3++)endOperation_W2(ops[i$3]);for(var i$4=0;i$4<ops.length;i$4++)endOperation_finish(ops[i$4])}function endOperation_R1(op){var cm=op.cm,display=cm.display;maybeClipScrollbars(cm),op.updateMaxLine&&findMaxLine(cm),op.mustUpdate=op.viewChanged||op.forceUpdate||null!=op.scrollTop||op.scrollToPos&&(op.scrollToPos.from.line<display.viewFrom||op.scrollToPos.to.line>=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;op.updatedDisplay&&updateHeightsInViewport(cm),op.barMeasure=measureForScrollbars(cm),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))),(op.updatedDisplay||op.selectionChanged)&&(op.preparedSelection=display.input.prepareSelection())}function endOperation_W2(op){var cm=op.cm;null!=op.adjustWidthTo&&(cm.display.sizer.style.minWidth=op.adjustWidthTo+"px",op.maxScrollLeft<cm.doc.scrollLeft&&setScrollLeft(cm,Math.min(cm.display.scroller.scrollLeft,op.maxScrollLeft),!0),cm.display.maxLineChanged=!1);var takeFocus=op.focus&&op.focus==activeElt();op.preparedSelection&&cm.display.input.showSelection(op.preparedSelection,takeFocus),(op.updatedDisplay||op.startHeight!=cm.doc.height)&&updateScrollbars(cm,op.barMeasure),op.updatedDisplay&&setDocumentHeight(cm,op.barMeasure),op.selectionChanged&&restartBlink(cm),cm.state.focused&&op.updateInput&&cm.display.input.reset(op.typing),takeFocus&&ensureFocus(op.cm)}function endOperation_finish(op){var cm=op.cm,display=cm.display,doc=cm.doc;if(op.updatedDisplay&&postUpdateDisplay(cm,op.update),null==display.wheelStartX||null==op.scrollTop&&null==op.scrollLeft&&!op.scrollToPos||(display.wheelStartX=display.wheelStartY=null),null!=op.scrollTop&&setScrollTop(cm,op.scrollTop,op.forceScroll),null!=op.scrollLeft&&setScrollLeft(cm,op.scrollLeft,!0,!0),op.scrollToPos){var rect=scrollPosIntoView(cm,clipPos(doc,op.scrollToPos.from),clipPos(doc,op.scrollToPos.to),op.scrollToPos.margin);maybeScrollWindow(cm,rect)}var hidden=op.maybeHiddenMarkers,unhidden=op.maybeUnhiddenMarkers;if(hidden)for(var i=0;i<hidden.length;++i)hidden[i].lines.length||signal(hidden[i],"hide");if(unhidden)for(var i$1=0;i$1<unhidden.length;++i$1)unhidden[i$1].lines.length&&signal(unhidden[i$1],"unhide");display.wrapper.offsetHeight&&(doc.scrollTop=cm.display.scroller.scrollTop),op.changeObjs&&signal(cm,"changes",cm,op.changeObjs),op.update&&op.update.finish()}function runInOp(cm,f){if(cm.curOp)return f();startOperation(cm);try{return f()}finally{endOperation(cm)}}function operation(cm,f){return function(){if(cm.curOp)return f.apply(cm,arguments);startOperation(cm);try{return f.apply(cm,arguments)}finally{endOperation(cm)}}}function methodOp(f){return function(){if(this.curOp)return f.apply(this,arguments);startOperation(this);try{return f.apply(this,arguments)}finally{endOperation(this)}}}function docMethodOp(f){return function(){var cm=this.cm;if(!cm||cm.curOp)return f.apply(this,arguments);startOperation(cm);try{return f.apply(this,arguments)}finally{endOperation(cm)}}}function regChange(cm,from,to,lendiff){null==from&&(from=cm.doc.first),null==to&&(to=cm.doc.first+cm.doc.size),lendiff||(lendiff=0);var display=cm.display;if(lendiff&&to<display.viewTo&&(null==display.updateLineNumbers||display.updateLineNumbers>from)&&(display.updateLineNumbers=from),cm.curOp.viewChanged=!0,from>=display.viewTo)sawCollapsedSpans&&visualLineNo(cm.doc,from)<display.viewTo&&resetView(cm);else if(to<=display.viewFrom)sawCollapsedSpans&&visualLineEndNo(cm.doc,to+lendiff)>display.viewFrom?resetView(cm):(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);cut?(display.view=display.view.slice(cut.index),display.viewFrom=cut.lineN,display.viewTo+=lendiff):resetView(cm)}else if(to>=display.viewTo){var cut$1=viewCuttingPoint(cm,from,from,-1);cut$1?(display.view=display.view.slice(0,cut$1.index),display.viewTo=cut$1.lineN):resetView(cm)}else{var cutTop=viewCuttingPoint(cm,from,from,-1),cutBot=viewCuttingPoint(cm,to,to+lendiff,1);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):resetView(cm)}var ext=display.externalMeasured;ext&&(to<ext.lineN?ext.lineN+=lendiff:from<ext.lineN+ext.size&&(display.externalMeasured=null))}function regLineChange(cm,line,type){cm.curOp.viewChanged=!0;var display=cm.display,ext=cm.display.externalMeasured;if(ext&&line>=ext.lineN&&line<ext.lineN+ext.size&&(display.externalMeasured=null),!(line<display.viewFrom||line>=display.viewTo)){var lineView=display.view[findViewIndex(cm,line)];if(null!=lineView.node){var arr=lineView.changes||(lineView.changes=[]);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 viewCuttingPoint(cm,oldN,newN,dir){var index=findViewIndex(cm,oldN),diff,view=cm.display.view;if(!sawCollapsedSpans||newN==cm.doc.first+cm.doc.size)return{index:index,lineN:newN};for(var n=cm.display.viewFrom,i=0;i<index;i++)n+=view[i].size;if(n!=oldN){if(dir>0){if(index==view.length-1)return null;diff=n+view[index].size-oldN,index++}else diff=n-oldN;oldN+=diff,newN+=diff}for(;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;0==view.length||from>=display.viewTo||to<=display.viewFrom?(display.view=buildViewArray(cm,from,to),display.viewFrom=from):(display.viewFrom>from?display.view=buildViewArray(cm,from,display.viewFrom).concat(display.view):display.viewFrom<from&&(display.view=display.view.slice(findViewIndex(cm,from))),display.viewFrom=from,display.viewTo<to?display.view=display.view.concat(buildViewArray(cm,display.viewTo,to)):display.viewTo>to&&(display.view=display.view.slice(0,findViewIndex(cm,to)))),display.viewTo=to}function countDirtyView(cm){for(var view=cm.display.view,dirty=0,i=0;i<view.length;i++){var lineView=view[i];lineView.hidden||lineView.node&&!lineView.changes||++dirty}return dirty}function startWorker(cm,time){cm.doc.highlightFrontier<cm.display.viewTo&&cm.state.highlight.set(time,bind(highlightWorker,cm))}function highlightWorker(cm){var doc=cm.doc;if(!(doc.highlightFrontier>=cm.display.viewTo)){var end=+new Date+cm.options.workTime,context=getContextBefore(cm,doc.highlightFrontier),changedLines=[];doc.iter(context.line,Math.min(doc.first+doc.size,cm.display.viewTo+500),function(line){if(context.line>=cm.display.viewFrom){var oldStyles=line.styles,resetState=line.text.length>cm.options.maxHighlightLength?copyState(doc.mode,context.state):null,highlighted=highlightLine(cm,line,context,!0);
resetState&&(context.state=resetState),line.styles=highlighted.styles;var oldCls=line.styleClasses,newCls=highlighted.classes;newCls?line.styleClasses=newCls:oldCls&&(line.styleClasses=null);for(var ischange=!oldStyles||oldStyles.length!=line.styles.length||oldCls!=newCls&&(!oldCls||!newCls||oldCls.bgClass!=newCls.bgClass||oldCls.textClass!=newCls.textClass),i=0;!ischange&&i<oldStyles.length;++i)ischange=oldStyles[i]!=line.styles[i];ischange&&changedLines.push(context.line),line.stateAfter=context.save(),context.nextLine()}else line.text.length<=cm.options.maxHighlightLength&&processLine(cm,line.text,context),line.stateAfter=context.line%5==0?context.save():null,context.nextLine();if(+new Date>end)return startWorker(cm,cm.options.workDelay),!0}),doc.highlightFrontier=context.line,doc.modeFrontier=Math.max(doc.modeFrontier,context.line),changedLines.length&&runInOp(cm,function(){for(var i=0;i<changedLines.length;i++)regLineChange(cm,changedLines[i],"text")})}}function maybeClipScrollbars(cm){var display=cm.display;!display.scrollbarsClipped&&display.scroller.offsetWidth&&(display.nativeBarWidth=display.scroller.offsetWidth-display.scroller.clientWidth,display.heightForcer.style.height=scrollGap(cm)+"px",display.sizer.style.marginBottom=-display.nativeBarWidth+"px",display.sizer.style.borderRightWidth=scrollGap(cm)+"px",display.scrollbarsClipped=!0)}function selectionSnapshot(cm){if(cm.hasFocus())return null;var active=activeElt();if(!active||!contains(cm.display.lineDiv,active))return null;var result={activeElt:active};if(window.getSelection){var sel=window.getSelection();sel.anchorNode&&sel.extend&&contains(cm.display.lineDiv,sel.anchorNode)&&(result.anchorNode=sel.anchorNode,result.anchorOffset=sel.anchorOffset,result.focusNode=sel.focusNode,result.focusOffset=sel.focusOffset)}return result}function restoreSelection(snapshot){if(snapshot&&snapshot.activeElt&&snapshot.activeElt!=activeElt()&&(snapshot.activeElt.focus(),snapshot.anchorNode&&contains(document.body,snapshot.anchorNode)&&contains(document.body,snapshot.focusNode))){var sel=window.getSelection(),range$$1=document.createRange();range$$1.setEnd(snapshot.anchorNode,snapshot.anchorOffset),range$$1.collapse(!1),sel.removeAllRanges(),sel.addRange(range$$1),sel.extend(snapshot.focusNode,snapshot.focusOffset)}}function updateDisplayIfNeeded(cm,update){var display=cm.display,doc=cm.doc;if(update.editorIsHidden)return resetView(cm),!1;if(!update.force&&update.visible.from>=display.viewFrom&&update.visible.to<=display.viewTo&&(null==display.updateLineNumbers||display.updateLineNumbers>=display.viewTo)&&display.renderedView==display.view&&0==countDirtyView(cm))return!1;maybeUpdateLineNumberWidth(cm)&&(resetView(cm),update.dims=getDimensions(cm));var end=doc.first+doc.size,from=Math.max(update.visible.from-cm.options.viewportMargin,doc.first),to=Math.min(end,update.visible.to+cm.options.viewportMargin);display.viewFrom<from&&from-display.viewFrom<20&&(from=Math.max(doc.first,display.viewFrom)),display.viewTo>to&&display.viewTo-to<20&&(to=Math.min(end,display.viewTo)),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&&0==toUpdate&&!update.force&&display.renderedView==display.view&&(null==display.updateLineNumbers||display.updateLineNumbers>=display.viewTo))return!1;var selSnapshot=selectionSnapshot(cm);return toUpdate>4&&(display.lineDiv.style.display="none"),patchDisplay(cm,display.updateLineNumbers,update.dims),toUpdate>4&&(display.lineDiv.style.display=""),display.renderedView=display.view,restoreSelection(selSnapshot),removeChildren(display.cursorDiv),removeChildren(display.selectionDiv),display.gutters.style.height=display.sizer.style.minHeight=0,different&&(display.lastWrapHeight=update.wrapperHeight,display.lastWrapWidth=update.wrapperWidth,startWorker(cm,400)),display.updateLineNumbers=null,!0}function postUpdateDisplay(cm,update){for(var viewport=update.viewport,first=!0;(first&&cm.options.lineWrapping&&update.oldDisplayWidth!=displayWidth(cm)||(viewport&&null!=viewport.top&&(viewport={top:Math.min(cm.doc.height+paddingVert(cm.display)-displayHeight(cm),viewport.top)}),update.visible=visibleLines(cm.display,cm.doc,viewport),!(update.visible.from>=cm.display.viewFrom&&update.visible.to<=cm.display.viewTo)))&&updateDisplayIfNeeded(cm,update);first=!1){updateHeightsInViewport(cm);var barMeasure=measureForScrollbars(cm);updateSelection(cm),updateScrollbars(cm,barMeasure),setDocumentHeight(cm,barMeasure),update.force=!1}update.signal(cm,"update",cm),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),updateScrollbars(cm,barMeasure),setDocumentHeight(cm,barMeasure),update.finish()}}function patchDisplay(cm,updateNumbersFrom,dims){function rm(node){var next=node.nextSibling;return webkit&&mac&&cm.display.currentWheelTarget==node?node.style.display="none":node.parentNode.removeChild(node),next}for(var display=cm.display,lineNumbers=cm.options.lineNumbers,container=display.lineDiv,cur=container.firstChild,view=display.view,lineN=display.viewFrom,i=0;i<view.length;i++){var lineView=view[i];if(lineView.hidden);else if(lineView.node&&lineView.node.parentNode==container){for(;cur!=lineView.node;)cur=rm(cur);var updateNumber=lineNumbers&&null!=updateNumbersFrom&&updateNumbersFrom<=lineN&&lineView.lineNumber;lineView.changes&&(indexOf(lineView.changes,"gutter")>-1&&(updateNumber=!1),updateLineForChanges(cm,lineView,lineN,dims)),updateNumber&&(removeChildren(lineView.lineNumber),lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options,lineN)))),cur=lineView.node.nextSibling}else{var node=buildLineElement(cm,lineView,lineN,dims);container.insertBefore(node,cur)}lineN+=lineView.size}for(;cur;)cur=rm(cur)}function updateGutterSpace(cm){var width=cm.display.gutters.offsetWidth;cm.display.sizer.style.marginLeft=width+"px"}function setDocumentHeight(cm,measure){cm.display.sizer.style.minHeight=measure.docHeight+"px",cm.display.heightForcer.style.top=measure.docHeight+"px",cm.display.gutters.style.height=measure.docHeight+cm.display.barHeight+scrollGap(cm)+"px"}function updateGutters(cm){var gutters=cm.display.gutters,specs=cm.options.gutters;removeChildren(gutters);for(var i=0;i<specs.length;++i){var gutterClass=specs[i],gElt=gutters.appendChild(elt("div",null,"CodeMirror-gutter "+gutterClass));"CodeMirror-linenumbers"==gutterClass&&(cm.display.lineGutter=gElt,gElt.style.width=(cm.display.lineNumWidth||1)+"px")}gutters.style.display=i?"":"none",updateGutterSpace(cm)}function setGuttersForLineNumbers(options){var found=indexOf(options.gutters,"CodeMirror-linenumbers");found==-1&&options.lineNumbers?options.gutters=options.gutters.concat(["CodeMirror-linenumbers"]):found>-1&&!options.lineNumbers&&(options.gutters=options.gutters.slice(0),options.gutters.splice(found,1))}function wheelEventDelta(e){var dx=e.wheelDeltaX,dy=e.wheelDeltaY;return null==dx&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(dx=e.detail),null==dy&&e.detail&&e.axis==e.VERTICAL_AXIS?dy=e.detail:null==dy&&(dy=e.wheelDelta),{x:dx,y:dy}}function wheelEventPixels(e){var delta=wheelEventDelta(e);return delta.x*=wheelPixelsPerUnit,delta.y*=wheelPixelsPerUnit,delta}function onScrollWheel(cm,e){var delta=wheelEventDelta(e),dx=delta.x,dy=delta.y,display=cm.display,scroll=display.scroller,canScrollX=scroll.scrollWidth>scroll.clientWidth,canScrollY=scroll.scrollHeight>scroll.clientHeight;if(dx&&canScrollX||dy&&canScrollY){if(dy&&mac&&webkit)outer:for(var cur=e.target,view=display.view;cur!=scroll;cur=cur.parentNode)for(var i=0;i<view.length;i++)if(view[i].node==cur){cm.display.currentWheelTarget=cur;break outer}if(dx&&!gecko&&!presto&&null!=wheelPixelsPerUnit)return dy&&canScrollY&&updateScrollTop(cm,Math.max(0,scroll.scrollTop+dy*wheelPixelsPerUnit)),setScrollLeft(cm,Math.max(0,scroll.scrollLeft+dx*wheelPixelsPerUnit)),(!dy||dy&&canScrollY)&&e_preventDefault(e),void(display.wheelStartX=null);if(dy&&null!=wheelPixelsPerUnit){var pixels=dy*wheelPixelsPerUnit,top=cm.doc.scrollTop,bot=top+display.wrapper.clientHeight;pixels<0?top=Math.max(0,top+pixels-50):bot=Math.min(cm.doc.height,bot+pixels+50),updateDisplaySimple(cm,{top:top,bottom:bot})}wheelSamples<20&&(null==display.wheelStartX?(display.wheelStartX=scroll.scrollLeft,display.wheelStartY=scroll.scrollTop,display.wheelDX=dx,display.wheelDY=dy,setTimeout(function(){if(null!=display.wheelStartX){var movedX=scroll.scrollLeft-display.wheelStartX,movedY=scroll.scrollTop-display.wheelStartY,sample=movedY&&display.wheelDY&&movedY/display.wheelDY||movedX&&display.wheelDX&&movedX/display.wheelDX;display.wheelStartX=display.wheelStartY=null,sample&&(wheelPixelsPerUnit=(wheelPixelsPerUnit*wheelSamples+sample)/(wheelSamples+1),++wheelSamples)}},200)):(display.wheelDX+=dx,display.wheelDY+=dy))}}function normalizeSelection(cm,ranges,primIndex){var mayTouch=cm&&cm.options.selectionsMayTouch,prim=ranges[primIndex];ranges.sort(function(a,b){return cmp(a.from(),b.from())}),primIndex=indexOf(ranges,prim);for(var i=1;i<ranges.length;i++){var cur=ranges[i],prev=ranges[i-1],diff=cmp(prev.to(),cur.from());if(mayTouch&&!cur.empty()?diff>0:diff>=0){var from=minPos(prev.from(),cur.from()),to=maxPos(prev.to(),cur.to()),inv=prev.empty()?cur.from()==cur.head:prev.from()==prev.head;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 changeEnd(change){return change.text?Pos(change.from.line+change.text.length-1,lst(change.text).length+(1==change.text.length?change.from.ch:0)):change.to}function adjustForChange(pos,change){if(cmp(pos,change.from)<0)return pos;if(cmp(pos,change.to)<=0)return changeEnd(change);var line=pos.line+change.text.length-(change.to.line-change.from.line)-1,ch=pos.ch;return pos.line==change.to.line&&(ch+=changeEnd(change).ch-change.to.ch),Pos(line,ch)}function computeSelAfterChange(doc,change){for(var out=[],i=0;i<doc.sel.ranges.length;i++){var range=doc.sel.ranges[i];out.push(new Range(adjustForChange(range.anchor,change),adjustForChange(range.head,change)))}return normalizeSelection(doc.cm,out,doc.sel.primIndex)}function offsetPos(pos,old,nw){return pos.line==old.line?Pos(nw.line,pos.ch-old.ch+nw.ch):Pos(nw.line+(pos.line-old.line),pos.ch)}function computeReplacedSel(doc,changes,hint){for(var out=[],oldPrev=Pos(doc.first,0),newPrev=oldPrev,i=0;i<changes.length;i++){var change=changes[i],from=offsetPos(change.from,oldPrev,newPrev),to=offsetPos(changeEnd(change),oldPrev,newPrev);if(oldPrev=change.to,newPrev=to,"around"==hint){var range=doc.sel.ranges[i],inv=cmp(range.head,range.anchor)<0;out[i]=new Range(inv?to:from,inv?from:to)}else out[i]=new Range(from,from)}return new Selection(out,doc.sel.primIndex)}function loadMode(cm){cm.doc.mode=getMode(cm.options,cm.doc.modeOption),resetModeState(cm)}function resetModeState(cm){cm.doc.iter(function(line){line.stateAfter&&(line.stateAfter=null),line.styles&&(line.styles=null)}),cm.doc.modeFrontier=cm.doc.highlightFrontier=cm.doc.first,startWorker(cm,100),cm.state.modeGen++,cm.curOp&&regChange(cm)}function isWholeLineUpdate(doc,change){return 0==change.from.ch&&0==change.to.ch&&""==lst(change.text)&&(!doc.cm||doc.cm.options.wholeLineUpdateBefore)}function updateDoc(doc,change,markedSpans,estimateHeight$$1){function spansFor(n){return markedSpans?markedSpans[n]:null}function update(line,text,spans){updateLine(line,text,spans,estimateHeight$$1),signalLater(line,"change",line,change)}function linesFor(start,end){for(var result=[],i=start;i<end;++i)result.push(new Line(text[i],spansFor(i),estimateHeight$$1));return result}var from=change.from,to=change.to,text=change.text,firstLine=getLine(doc,from.line),lastLine=getLine(doc,to.line),lastText=lst(text),lastSpans=spansFor(text.length-1),nlines=to.line-from.line;if(change.full)doc.insert(0,linesFor(0,text.length)),doc.remove(text.length,doc.size-text.length);else if(isWholeLineUpdate(doc,change)){var added=linesFor(0,text.length-1);update(lastLine,lastLine.text,lastSpans),nlines&&doc.remove(from.line,nlines),added.length&&doc.insert(from.line,added)}else if(firstLine==lastLine)if(1==text.length)update(firstLine,firstLine.text.slice(0,from.ch)+lastText+firstLine.text.slice(to.ch),lastSpans);else{var added$1=linesFor(1,text.length-1);added$1.push(new Line(lastText+firstLine.text.slice(to.ch),lastSpans,estimateHeight$$1)),update(firstLine,firstLine.text.slice(0,from.ch)+text[0],spansFor(0)),doc.insert(from.line+1,added$1)}else if(1==text.length)update(firstLine,firstLine.text.slice(0,from.ch)+text[0]+lastLine.text.slice(to.ch),spansFor(0)),doc.remove(from.line+1,nlines);else{update(firstLine,firstLine.text.slice(0,from.ch)+text[0],spansFor(0)),update(lastLine,lastText+lastLine.text.slice(to.ch),lastSpans);var added$2=linesFor(1,text.length-1);nlines>1&&doc.remove(from.line+1,nlines-1),doc.insert(from.line+1,added$2)}signalLater(doc,"change",doc,change)}function linkedDocs(doc,f,sharedHistOnly){function propagate(doc,skip,sharedHist){if(doc.linked)for(var i=0;i<doc.linked.length;++i){var rel=doc.linked[i];if(rel.doc!=skip){var shared=sharedHist&&rel.sharedHist;sharedHistOnly&&!shared||(f(rel.doc,shared),propagate(rel.doc,doc,shared))}}}propagate(doc,null,!0)}function attachDoc(cm,doc){if(doc.cm)throw new Error("This document is already in use.");cm.doc=doc,doc.cm=cm,estimateLineHeights(cm),loadMode(cm),setDirectionClass(cm),cm.options.lineWrapping||findMaxLine(cm),cm.options.mode=doc.modeOption,regChange(cm)}function setDirectionClass(cm){("rtl"==cm.doc.direction?addClass:rmClass)(cm.display.lineDiv,"CodeMirror-rtl")}function directionChanged(cm){runInOp(cm,function(){setDirectionClass(cm),regChange(cm)})}function History(startGen){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=startGen||1}function historyChangeFromChange(doc,change){var histChange={from:copyPos(change.from),to:changeEnd(change),text:getBetween(doc,change.from,change.to)};return attachLocalSpans(doc,histChange,change.from.line,change.to.line+1),linkedDocs(doc,function(doc){return attachLocalSpans(doc,histChange,change.from.line,change.to.line+1)},!0),histChange}function clearSelectionEvents(array){for(;array.length;){var last=lst(array);if(!last.ranges)break;array.pop()}}function lastChangeEvent(hist,force){return force?(clearSelectionEvents(hist.done),lst(hist.done)):hist.done.length&&!lst(hist.done).ranges?lst(hist.done):hist.done.length>1&&!hist.done[hist.done.length-2].ranges?(hist.done.pop(),lst(hist.done)):void 0}function addChangeToHistory(doc,change,selAfter,opId){var hist=doc.history;hist.undone.length=0;var time=+new Date,cur,last;if((hist.lastOp==opId||hist.lastOrigin==change.origin&&change.origin&&("+"==change.origin.charAt(0)&&hist.lastModTime>time-(doc.cm?doc.cm.options.historyEventDelay:500)||"*"==change.origin.charAt(0)))&&(cur=lastChangeEvent(hist,hist.lastOp==opId)))last=lst(cur.changes),0==cmp(change.from,change.to)&&0==cmp(change.from,last.to)?last.to=changeEnd(change):cur.changes.push(historyChangeFromChange(doc,change));else{var before=lst(hist.done);for(before&&before.ranges||pushSelectionToHistory(doc.sel,hist.done),cur={changes:[historyChangeFromChange(doc,change)],generation:hist.generation},hist.done.push(cur);hist.done.length>hist.undoDepth;)hist.done.shift(),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,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;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:pushSelectionToHistory(sel,hist.done),hist.lastSelTime=+new Date,hist.lastSelOrigin=origin,hist.lastSelOp=opId,options&&options.clearRedo!==!1&&clearSelectionEvents(hist.undone)}function pushSelectionToHistory(sel,dest){var top=lst(dest);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){line.markedSpans&&((existing||(existing=change["spans_"+doc.id]={}))[n]=line.markedSpans),++n})}function removeClearedSpans(spans){if(!spans)return null;for(var out,i=0;i<spans.length;++i)spans[i].marker.explicitlyCleared?out||(out=spans.slice(0,i)):out&&out.push(spans[i]);return out?out.length?out:null:spans}function getOldSpans(doc,change){var found=change["spans_"+doc.id];if(!found)return null;for(var nw=[],i=0;i<change.text.length;++i)nw.push(removeClearedSpans(found[i]));return nw}function mergeOldSpans(doc,change){var old=getOldSpans(doc,change),stretched=stretchSpansOverChange(doc,change);if(!old)return stretched;if(!stretched)return old;for(var i=0;i<old.length;++i){var oldCur=old[i],stretchCur=stretched[i];if(oldCur&&stretchCur)spans:for(var j=0;j<stretchCur.length;++j){for(var span=stretchCur[j],k=0;k<oldCur.length;++k)if(oldCur[k].marker==span.marker)continue spans;oldCur.push(span)}else stretchCur&&(old[i]=stretchCur)}return old}function copyHistoryArray(events,newGroup,instantiateSel){for(var copy=[],i=0;i<events.length;++i){var event=events[i];if(event.ranges)copy.push(instantiateSel?Selection.prototype.deepCopy.call(event):event);else{var changes=event.changes,newChanges=[];copy.push({changes:newChanges});for(var j=0;j<changes.length;++j){var change=changes[j],m=void 0;if(newChanges.push({from:change.from,to:change.to,text:change.text}),newGroup)for(var prop in change)(m=prop.match(/^spans_(\d+)$/))&&indexOf(newGroup,Number(m[1]))>-1&&(lst(newChanges)[prop]=change[prop],delete change[prop])}}}return copy}function extendRange(range,head,other,extend){if(extend){var anchor=range.anchor;if(other){var posBefore=cmp(head,anchor)<0;posBefore!=cmp(other,anchor)<0?(anchor=head,head=other):posBefore!=cmp(head,other)<0&&(head=other)}return new Range(anchor,head)}return new Range(other||head,head)}function extendSelection(doc,head,other,options,extend){null==extend&&(extend=doc.cm&&(doc.cm.display.shift||doc.extend)),setSelection(doc,new Selection([extendRange(doc.sel.primary(),head,other,extend)],0),options)}function extendSelections(doc,heads,options){for(var out=[],extend=doc.cm&&(doc.cm.display.shift||doc.extend),i=0;i<doc.sel.ranges.length;i++)out[i]=extendRange(doc.sel.ranges[i],heads[i],null,extend);var newSel=normalizeSelection(doc.cm,out,doc.sel.primIndex);setSelection(doc,newSel,options)}function replaceOneSelection(doc,i,range,options){var ranges=doc.sel.ranges.slice(0);ranges[i]=range,setSelection(doc,normalizeSelection(doc.cm,ranges,doc.sel.primIndex),options)}function setSimpleSelection(doc,anchor,head,options){setSelection(doc,simpleSelection(anchor,head),options)}function filterSelectionChange(doc,sel,options){var obj={ranges:sel.ranges,update:function(ranges){this.ranges=[];for(var i=0;i<ranges.length;i++)this.ranges[i]=new Range(clipPos(doc,ranges[i].anchor),clipPos(doc,ranges[i].head))},origin:options&&options.origin};return signal(doc,"beforeSelectionChange",doc,obj),doc.cm&&signal(doc.cm,"beforeSelectionChange",doc.cm,obj),obj.ranges!=sel.ranges?normalizeSelection(doc.cm,obj.ranges,obj.ranges.length-1):sel}function setSelectionReplaceHistory(doc,sel,options){var done=doc.history.done,last=lst(done);last&&last.ranges?(done[done.length-1]=sel,setSelectionNoUndo(doc,sel,options)):setSelection(doc,sel,options)}function setSelection(doc,sel,options){setSelectionNoUndo(doc,sel,options),addSelectionToHistory(doc,doc.sel,doc.cm?doc.cm.curOp.id:NaN,options)}function setSelectionNoUndo(doc,sel,options){(hasHandler(doc,"beforeSelectionChange")||doc.cm&&hasHandler(doc.cm,"beforeSelectionChange"))&&(sel=filterSelectionChange(doc,sel,options));var bias=options&&options.bias||(cmp(sel.primary().head,doc.sel.primary().head)<0?-1:1);setSelectionInner(doc,skipAtomicInSelection(doc,sel,bias,!0)),options&&options.scroll===!1||!doc.cm||ensureCursorVisible(doc.cm)}function setSelectionInner(doc,sel){sel.equals(doc.sel)||(doc.sel=sel,doc.cm&&(doc.cm.curOp.updateInput=1,doc.cm.curOp.selectionChanged=!0,signalCursorActivity(doc.cm)),signalLater(doc,"cursorActivity",doc))}function reCheckSelection(doc){setSelectionInner(doc,skipAtomicInSelection(doc,doc.sel,null,!1))}function skipAtomicInSelection(doc,sel,bias,mayClear){for(var out,i=0;i<sel.ranges.length;i++){var range=sel.ranges[i],old=sel.ranges.length==doc.sel.ranges.length&&doc.sel.ranges[i],newAnchor=skipAtomic(doc,range.anchor,old&&old.anchor,bias,mayClear),newHead=skipAtomic(doc,range.head,old&&old.head,bias,mayClear);(out||newAnchor!=range.anchor||newHead!=range.head)&&(out||(out=sel.ranges.slice(0,i)),out[i]=new Range(newAnchor,newHead))}return out?normalizeSelection(doc.cm,out,sel.primIndex):sel}function skipAtomicInner(doc,pos,oldPos,dir,mayClear){var line=getLine(doc,pos.line);if(line.markedSpans)for(var i=0;i<line.markedSpans.length;++i){var sp=line.markedSpans[i],m=sp.marker;if((null==sp.from||(m.inclusiveLeft?sp.from<=pos.ch:sp.from<pos.ch))&&(null==sp.to||(m.inclusiveRight?sp.to>=pos.ch:sp.to>pos.ch))){if(mayClear&&(signal(m,"beforeCursorEnter"),m.explicitlyCleared)){if(line.markedSpans){--i;continue}break}if(!m.atomic)continue;if(oldPos){var near=m.find(dir<0?1:-1),diff=void 0;if((dir<0?m.inclusiveRight:m.inclusiveLeft)&&(near=movePos(doc,near,-dir,near&&near.line==pos.line?line:null)),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);return(dir<0?m.inclusiveLeft:m.inclusiveRight)&&(far=movePos(doc,far,dir,far.line==pos.line?line:null)),far?skipAtomicInner(doc,far,pos,dir,mayClear):null}}return pos}function skipAtomic(doc,pos,oldPos,bias,mayClear){var dir=bias||1,found=skipAtomicInner(doc,pos,oldPos,dir,mayClear)||!mayClear&&skipAtomicInner(doc,pos,oldPos,dir,!0)||skipAtomicInner(doc,pos,oldPos,-dir,mayClear)||!mayClear&&skipAtomicInner(doc,pos,oldPos,-dir,!0);return found?found:(doc.cantEdit=!0,Pos(doc.first,0))}function movePos(doc,pos,dir,line){return dir<0&&0==pos.ch?pos.line>doc.first?clipPos(doc,Pos(pos.line-1)):null:dir>0&&pos.ch==(line||getLine(doc,pos.line)).text.length?pos.line<doc.first+doc.size-1?Pos(pos.line+1,0):null:new Pos(pos.line,pos.ch+dir)}function selectAll(cm){cm.setSelection(Pos(cm.firstLine(),0),Pos(cm.lastLine()),sel_dontScroll)}function filterChange(doc,change,update){var obj={canceled:!1,from:change.from,to:change.to,text:change.text,origin:change.origin,cancel:function(){return obj.canceled=!0}};return update&&(obj.update=function(from,to,text,origin){from&&(obj.from=clipPos(doc,from)),to&&(obj.to=clipPos(doc,to)),text&&(obj.text=text),void 0!==origin&&(obj.origin=origin)}),signal(doc,"beforeChange",doc,obj),doc.cm&&signal(doc.cm,"beforeChange",doc.cm,obj),obj.canceled?(doc.cm&&(doc.cm.curOp.updateInput=2),null):{from:obj.from,to:obj.to,text:obj.text,origin:obj.origin}}function makeChange(doc,change,ignoreReadOnly){if(doc.cm){if(!doc.cm.curOp)return operation(doc.cm,makeChange)(doc,change,ignoreReadOnly);if(doc.cm.state.suppressEdits)return}if(!(hasHandler(doc,"beforeChange")||doc.cm&&hasHandler(doc.cm,"beforeChange"))||(change=filterChange(doc,change,!0))){var split=sawReadOnlySpans&&!ignoreReadOnly&&removeReadOnlyRanges(doc,change.from,change.to);if(split)for(var i=split.length-1;i>=0;--i)makeChangeInner(doc,{from:split[i].from,to:split[i].to,text:i?[""]:change.text,origin:change.origin});else makeChangeInner(doc,change)}}function makeChangeInner(doc,change){if(1!=change.text.length||""!=change.text[0]||0!=cmp(change.from,change.to)){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){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){var suppress=doc.cm&&doc.cm.state.suppressEdits;if(!suppress||allowSelectionOnly){for(var hist=doc.history,event,selAfter=doc.sel,source="undo"==type?hist.done:hist.undone,dest="undo"==type?hist.undone:hist.done,i=0;i<source.length&&(event=source[i],allowSelectionOnly?!event.ranges||event.equals(doc.sel):event.ranges);i++);if(i!=source.length){for(hist.lastOrigin=hist.lastSelOrigin=null;;){if(event=source.pop(),!event.ranges){if(suppress)return void source.push(event);break}if(pushSelectionToHistory(event,dest),allowSelectionOnly&&!event.equals(doc.sel))return void setSelection(doc,event,{clearRedo:!1});selAfter=event}var antiChanges=[];pushSelectionToHistory(selAfter,dest),dest.push({changes:antiChanges,generation:hist.generation}),hist.generation=event.generation||++hist.maxGeneration;for(var filter=hasHandler(doc,"beforeChange")||doc.cm&&hasHandler(doc.cm,"beforeChange"),loop=function(i){var change=event.changes[i];if(change.origin=type,filter&&!filterChange(doc,change,!1))return source.length=0,{};antiChanges.push(historyChangeFromChange(doc,change));var after=i?computeSelAfterChange(doc,change):lst(source);makeChangeSingleDoc(doc,change,after,mergeOldSpans(doc,change)),!i&&doc.cm&&doc.cm.scrollIntoView({from:change.from,to:changeEnd(change)});var rebased=[];linkedDocs(doc,function(doc,sharedHist){sharedHist||indexOf(rebased,doc.history)!=-1||(rebaseHist(doc.history,change),rebased.push(doc.history)),makeChangeSingleDoc(doc,change,null,mergeOldSpans(doc,change))})},i$1=event.changes.length-1;i$1>=0;--i$1){var returned=loop(i$1);if(returned)return returned.v}}}}function shiftDoc(doc,distance){if(0!=distance&&(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),doc.cm)){regChange(doc.cm,doc.first,doc.first-distance,distance);for(var d=doc.cm.display,l=d.viewFrom;l<d.viewTo;l++)regLineChange(doc.cm,l,"gutter")}}function makeChangeSingleDoc(doc,change,selAfter,spans){if(doc.cm&&!doc.cm.curOp)return operation(doc.cm,makeChangeSingleDoc)(doc,change,selAfter,spans);if(change.to.line<doc.first)return void shiftDoc(doc,change.text.length-1-(change.to.line-change.from.line));if(!(change.from.line>doc.lastLine())){if(change.from.line<doc.first){var shift=change.text.length-1-(doc.first-change.from.line);shiftDoc(doc,shift),change={from:Pos(doc.first,0),to:Pos(change.to.line+shift,change.to.ch),text:[lst(change.text)],origin:change.origin}}var last=doc.lastLine();change.to.line>last&&(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),selAfter||(selAfter=computeSelAfterChange(doc,change)),doc.cm?makeChangeSingleDocInEditor(doc.cm,change,spans):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,recomputeMaxLength=!1,checkWidthStart=from.line;cm.options.lineWrapping||(checkWidthStart=lineNo(visualLine(getLine(doc,from.line))),doc.iter(checkWidthStart,to.line+1,function(line){if(line==display.maxLine)return recomputeMaxLength=!0,!0})),doc.sel.contains(change.from,change.to)>-1&&signalCursorActivity(cm),updateDoc(doc,change,spans,estimateHeight(cm)),cm.options.lineWrapping||(doc.iter(checkWidthStart,from.line+change.text.length,function(line){var len=lineLength(line);len>display.maxLineLength&&(display.maxLine=line,display.maxLineLength=len,display.maxLineChanged=!0,recomputeMaxLength=!1)}),recomputeMaxLength&&(cm.curOp.updateMaxLine=!0)),retreatFrontier(doc,from.line),startWorker(cm,400);var lendiff=change.text.length-(to.line-from.line)-1;change.full?regChange(cm):from.line!=to.line||1!=change.text.length||isWholeLineUpdate(cm.doc,change)?regChange(cm,from.line,to.line+1,lendiff):regLineChange(cm,from.line,"text");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};changeHandler&&signalLater(cm,"change",cm,obj),changesHandler&&(cm.curOp.changeObjs||(cm.curOp.changeObjs=[])).push(obj)}cm.display.selForContextMenu=null}function replaceRange(doc,code,from,to,origin){var assign;to||(to=from),cmp(to,from)<0&&(assign=[to,from],from=assign[0],to=assign[1]),"string"==typeof code&&(code=doc.splitLines(code)),makeChange(doc,{from:from,to:to,text:code,origin:origin})}function rebaseHistSelSingle(pos,from,to,diff){to<pos.line?pos.line+=diff:from<pos.line&&(pos.line=from,pos.ch=0)}function rebaseHistArray(array,from,to,diff){for(var i=0;i<array.length;++i){var sub=array[i],ok=!0;if(sub.ranges){sub.copied||(sub=array[i]=sub.deepCopy(),sub.copied=!0);for(var j=0;j<sub.ranges.length;j++)rebaseHistSelSingle(sub.ranges[j].anchor,from,to,diff),rebaseHistSelSingle(sub.ranges[j].head,from,to,diff)}else{for(var j$1=0;j$1<sub.changes.length;++j$1){var cur=sub.changes[j$1];if(to<cur.from.line)cur.from=Pos(cur.from.line+diff,cur.from.ch),cur.to=Pos(cur.to.line+diff,cur.to.ch);else if(from<=cur.to.line){ok=!1;break}}ok||(array.splice(0,i+1),i=0)}}}function rebaseHist(hist,change){var from=change.from.line,to=change.to.line,diff=change.text.length-(to-from)-1;rebaseHistArray(hist.done,from,to,diff),rebaseHistArray(hist.undone,from,to,diff)}function changeLine(doc,handle,changeType,op){var no=handle,line=handle;return"number"==typeof handle?line=getLine(doc,clipLine(doc,handle)):no=lineNo(handle),null==no?null:(op(line,no)&&doc.cm&&regLineChange(doc.cm,no,changeType),line)}function LeafChunk(lines){this.lines=lines,this.parent=null;for(var height=0,i=0;i<lines.length;++i)lines[i].parent=this,height+=lines[i].height;this.height=height}function BranchChunk(children){this.children=children;for(var size=0,height=0,i=0;i<children.length;++i){var ch=children[i];size+=ch.chunkSize(),height+=ch.height,ch.parent=this}this.size=size,this.height=height,this.parent=null}function adjustScrollWhenAboveVisible(cm,line,diff){heightAtLine(line)<(cm.curOp&&cm.curOp.scrollTop||cm.doc.scrollTop)&&addToScrollTop(cm,diff)}function addLineWidget(doc,handle,node,options){var widget=new LineWidget(doc,node,options),cm=doc.cm;return cm&&widget.noHScroll&&(cm.display.alignWidgets=!0),changeLine(doc,handle,"widget",function(line){var widgets=line.widgets||(line.widgets=[]);if(null==widget.insertAt?widgets.push(widget):widgets.splice(Math.min(widgets.length-1,Math.max(0,widget.insertAt)),0,widget),
widget.line=line,cm&&!lineIsHidden(doc,line)){var aboveVisible=heightAtLine(line)<doc.scrollTop;updateLineHeight(line,line.height+widgetHeight(widget)),aboveVisible&&addToScrollTop(cm,widget.height),cm.curOp.forceUpdate=!0}return!0}),cm&&signalLater(cm,"lineWidgetAdded",cm,widget,"number"==typeof handle?handle:lineNo(handle)),widget}function markText(doc,from,to,options,type){if(options&&options.shared)return markTextShared(doc,from,to,options,type);if(doc.cm&&!doc.cm.curOp)return operation(doc.cm,markText)(doc,from,to,options,type);var marker=new TextMarker(doc,type),diff=cmp(from,to);if(options&&copyObj(options,marker,!1),diff>0||0==diff&&marker.clearWhenEmpty!==!1)return marker;if(marker.replacedWith&&(marker.collapsed=!0,marker.widgetNode=eltP("span",[marker.replacedWith],"CodeMirror-widget"),options.handleMouseEvents||marker.widgetNode.setAttribute("cm-ignore-events","true"),options.insertLeft&&(marker.widgetNode.insertLeft=!0)),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");seeCollapsedSpans()}marker.addToHistory&&addChangeToHistory(doc,{from:from,to:to,origin:"markText"},doc.sel,NaN);var curLine=from.line,cm=doc.cm,updateMaxLine;if(doc.iter(curLine,to.line+1,function(line){cm&&marker.collapsed&&!cm.options.lineWrapping&&visualLine(line)==cm.display.maxLine&&(updateMaxLine=!0),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}),marker.collapsed&&doc.iter(from.line,to.line+1,function(line){lineIsHidden(doc,line)&&updateLineHeight(line,0)}),marker.clearOnEnter&&on(marker,"beforeCursorEnter",function(){return marker.clear()}),marker.readOnly&&(seeReadOnlySpans(),(doc.history.done.length||doc.history.undone.length)&&doc.clearHistory()),marker.collapsed&&(marker.id=++nextMarkerId,marker.atomic=!0),cm){if(updateMaxLine&&(cm.curOp.updateMaxLine=!0),marker.collapsed)regChange(cm,from.line,to.line+1);else if(marker.className||marker.startStyle||marker.endStyle||marker.css||marker.attributes||marker.title)for(var i=from.line;i<=to.line;i++)regLineChange(cm,i,"text");marker.atomic&&reCheckSelection(cm.doc),signalLater(cm,"markerAdded",cm,marker)}return marker}function markTextShared(doc,from,to,options,type){options=copyObj(options),options.shared=!1;var markers=[markText(doc,from,to,options,type)],primary=markers[0],widget=options.widgetNode;return linkedDocs(doc,function(doc){widget&&(options.widgetNode=widget.cloneNode(!0)),markers.push(markText(doc,clipPos(doc,from),clipPos(doc,to),options,type));for(var i=0;i<doc.linked.length;++i)if(doc.linked[i].isParent)return;primary=lst(markers)}),new SharedTextMarker(markers,primary)}function findSharedMarkers(doc){return doc.findMarks(Pos(doc.first,0),doc.clipPos(Pos(doc.lastLine())),function(m){return m.parent})}function copySharedMarkers(doc,markers){for(var i=0;i<markers.length;i++){var marker=markers[i],pos=marker.find(),mFrom=doc.clipPos(pos.from),mTo=doc.clipPos(pos.to);if(cmp(mFrom,mTo)){var subMark=markText(doc,mFrom,mTo,marker.primary,marker.primary.type);marker.markers.push(subMark),subMark.parent=marker}}}function detachSharedMarkers(markers){for(var loop=function(i){var marker=markers[i],linked=[marker.primary.doc];linkedDocs(marker.primary.doc,function(d){return linked.push(d)});for(var j=0;j<marker.markers.length;j++){var subMarker=marker.markers[j];indexOf(linked,subMarker.doc)==-1&&(subMarker.parent=null,marker.markers.splice(j--,1))}},i=0;i<markers.length;i++)loop(i)}function onDrop(e){var cm=this;if(clearDragCursor(cm),!signalDOMEvent(cm,e)&&!eventInWidget(cm.display,e)){e_preventDefault(e),ie&&(lastDrop=+new Date);var pos=posFromMouse(cm,e,!0),files=e.dataTransfer.files;if(pos&&!cm.isReadOnly())if(files&&files.length&&window.FileReader&&window.File)for(var n=files.length,text=Array(n),read=0,loadFile=function(file,i){if(!cm.options.allowDropFileTypes||indexOf(cm.options.allowDropFileTypes,file.type)!=-1){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,++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)}},i=0;i<n;++i)loadFile(files[i],i);else{if(cm.state.draggingText&&cm.doc.sel.contains(pos)>-1)return cm.state.draggingText(e),void setTimeout(function(){return cm.display.input.focus()},20);try{var text$1=e.dataTransfer.getData("Text");if(text$1){var selected;if(cm.state.draggingText&&!cm.state.draggingText.copy&&(selected=cm.listSelections()),setSelectionNoUndo(cm.doc,simpleSelection(pos,pos)),selected)for(var i$1=0;i$1<selected.length;++i$1)replaceRange(cm.doc,"",selected[i$1].anchor,selected[i$1].head,"drag");cm.replaceSelection(text$1,"around","paste"),cm.display.input.focus()}}catch(e){}}}}function onDragStart(cm,e){if(ie&&(!cm.state.draggingText||+new Date-lastDrop<100))return void e_stop(e);if(!signalDOMEvent(cm,e)&&!eventInWidget(cm.display,e)&&(e.dataTransfer.setData("Text",cm.getSelection()),e.dataTransfer.effectAllowed="copyMove",e.dataTransfer.setDragImage&&!safari)){var img=elt("img",null,null,"position: fixed; left: 0; top: 0;");img.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",presto&&(img.width=img.height=1,cm.display.wrapper.appendChild(img),img._top=img.offsetTop),e.dataTransfer.setDragImage(img,0,0),presto&&img.parentNode.removeChild(img)}}function onDragOver(cm,e){var pos=posFromMouse(cm,e);if(pos){var frag=document.createDocumentFragment();drawSelectionCursor(cm,pos,frag),cm.display.dragCursor||(cm.display.dragCursor=elt("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),cm.display.lineSpace.insertBefore(cm.display.dragCursor,cm.display.cursorDiv)),removeChildrenAndAdd(cm.display.dragCursor,frag)}}function clearDragCursor(cm){cm.display.dragCursor&&(cm.display.lineSpace.removeChild(cm.display.dragCursor),cm.display.dragCursor=null)}function forEachCodeMirror(f){if(document.getElementsByClassName){for(var byClass=document.getElementsByClassName("CodeMirror"),editors=[],i=0;i<byClass.length;i++){var cm=byClass[i].CodeMirror;cm&&editors.push(cm)}editors.length&&editors[0].operation(function(){for(var i=0;i<editors.length;i++)f(editors[i])})}}function ensureGlobalHandlers(){globalsRegistered||(registerGlobalHandlers(),globalsRegistered=!0)}function registerGlobalHandlers(){var resizeTimer;on(window,"resize",function(){null==resizeTimer&&(resizeTimer=setTimeout(function(){resizeTimer=null,forEachCodeMirror(onResize)},100))}),on(window,"blur",function(){return forEachCodeMirror(onBlur)})}function onResize(cm){var d=cm.display;d.cachedCharWidth=d.cachedTextHeight=d.cachedPaddingH=null,d.scrollbarsClipped=!1,cm.setSize()}function normalizeKeyName(name){var parts=name.split(/-(?!$)/);name=parts[parts.length-1];for(var alt,ctrl,shift,cmd,i=0;i<parts.length-1;i++){var mod=parts[i];if(/^(cmd|meta|m)$/i.test(mod))cmd=!0;else if(/^a(lt)?$/i.test(mod))alt=!0;else if(/^(c|ctrl|control)$/i.test(mod))ctrl=!0;else{if(!/^s(hift)?$/i.test(mod))throw new Error("Unrecognized modifier name: "+mod);shift=!0}}return alt&&(name="Alt-"+name),ctrl&&(name="Ctrl-"+name),cmd&&(name="Cmd-"+name),shift&&(name="Shift-"+name),name}function normalizeKeyMap(keymap){var copy={};for(var keyname in keymap)if(keymap.hasOwnProperty(keyname)){var value=keymap[keyname];if(/^(name|fallthrough|(de|at)tach)$/.test(keyname))continue;if("..."==value){delete keymap[keyname];continue}for(var keys=map(keyname.split(" "),normalizeKeyName),i=0;i<keys.length;i++){var val=void 0,name=void 0;i==keys.length-1?(name=keys.join(" "),val=value):(name=keys.slice(0,i+1).join(" "),val="...");var prev=copy[name];if(prev){if(prev!=val)throw new Error("Inconsistent bindings for "+name)}else copy[name]=val}delete keymap[keyname]}for(var prop in copy)keymap[prop]=copy[prop];return keymap}function lookupKey(key,map$$1,handle,context){map$$1=getKeyMap(map$$1);var found=map$$1.call?map$$1.call(key,context):map$$1[key];if(found===!1)return"nothing";if("..."===found)return"multi";if(null!=found&&handle(found))return"handled";if(map$$1.fallthrough){if("[object Array]"!=Object.prototype.toString.call(map$$1.fallthrough))return lookupKey(key,map$$1.fallthrough,handle,context);for(var i=0;i<map$$1.fallthrough.length;i++){var result=lookupKey(key,map$$1.fallthrough[i],handle,context);if(result)return result}}}function isModifierKey(value){var name="string"==typeof value?value:keyNames[value.keyCode];return"Ctrl"==name||"Alt"==name||"Shift"==name||"Mod"==name}function addModifierNames(name,event,noShift){var base=name;return event.altKey&&"Alt"!=base&&(name="Alt-"+name),(flipCtrlCmd?event.metaKey:event.ctrlKey)&&"Ctrl"!=base&&(name="Ctrl-"+name),(flipCtrlCmd?event.ctrlKey:event.metaKey)&&"Cmd"!=base&&(name="Cmd-"+name),!noShift&&event.shiftKey&&"Shift"!=base&&(name="Shift-"+name),name}function keyName(event,noShift){if(presto&&34==event.keyCode&&event["char"])return!1;var name=keyNames[event.keyCode];return null!=name&&!event.altGraphKey&&(3==event.keyCode&&event.code&&(name=event.code),addModifierNames(name,event,noShift))}function getKeyMap(val){return"string"==typeof val?keyMap[val]:val}function deleteNearSelection(cm,compute){for(var ranges=cm.doc.sel.ranges,kill=[],i=0;i<ranges.length;i++){for(var toKill=compute(ranges[i]);kill.length&&cmp(toKill.from,lst(kill).to)<=0;){var replaced=kill.pop();if(cmp(replaced.from,toKill.from)<0){toKill.from=replaced.from;break}}kill.push(toKill)}runInOp(cm,function(){for(var i=kill.length-1;i>=0;i--)replaceRange(cm.doc,"",kill[i].from,kill[i].to,"+delete");ensureCursorVisible(cm)})}function moveCharLogically(line,ch,dir){var target=skipExtendingChars(line.text,ch+dir,dir);return target<0||target>line.text.length?null:target}function moveLogically(line,start,dir){var ch=moveCharLogically(line,start.ch,dir);return null==ch?null:new Pos(start.line,ch,dir<0?"after":"before")}function endOfLine(visually,cm,lineObj,lineNo,dir){if(visually){var order=getOrder(lineObj,cm.doc.direction);if(order){var part=dir<0?lst(order):order[0],moveInStorageOrder=dir<0==(1==part.level),sticky=moveInStorageOrder?"after":"before",ch;if(part.level>0||"rtl"==cm.doc.direction){var prep=prepareMeasureForLine(cm,lineObj);ch=dir<0?lineObj.text.length-1:0;var targetTop=measureCharPrepared(cm,prep,ch).top;ch=findFirst(function(ch){return measureCharPrepared(cm,prep,ch).top==targetTop},dir<0==(1==part.level)?part.from:part.to-1,ch),"before"==sticky&&(ch=moveCharLogically(lineObj,ch,1))}else ch=dir<0?part.to:part.from;return new Pos(lineNo,ch,sticky)}}return new Pos(lineNo,dir<0?lineObj.text.length:0,dir<0?"before":"after")}function moveVisually(cm,line,start,dir){var bidi=getOrder(line,cm.doc.direction);if(!bidi)return moveLogically(line,start,dir);start.ch>=line.text.length?(start.ch=line.text.length,start.sticky="before"):start.ch<=0&&(start.ch=0,start.sticky="after");var partPos=getBidiPartAt(bidi,start.ch,start.sticky),part=bidi[partPos];if("ltr"==cm.doc.direction&&part.level%2==0&&(dir>0?part.to>start.ch:part.from<start.ch))return moveLogically(line,start,dir);var mv=function(pos,dir){return moveCharLogically(line,pos instanceof Pos?pos.ch:pos,dir)},prep,getWrappedLineExtent=function(ch){return cm.options.lineWrapping?(prep=prep||prepareMeasureForLine(cm,line),wrappedLineExtentChar(cm,line,prep,ch)):{begin:0,end:line.text.length}},wrappedLineExtent=getWrappedLineExtent("before"==start.sticky?mv(start,-1):start.ch);if("rtl"==cm.doc.direction||1==part.level){var moveInStorageOrder=1==part.level==dir<0,ch=mv(start,moveInStorageOrder?1:-1);if(null!=ch&&(moveInStorageOrder?ch<=part.to&&ch<=wrappedLineExtent.end:ch>=part.from&&ch>=wrappedLineExtent.begin)){var sticky=moveInStorageOrder?"before":"after";return new Pos(start.line,ch,sticky)}}var searchInVisualLine=function(partPos,dir,wrappedLineExtent){for(var getRes=function(ch,moveInStorageOrder){return moveInStorageOrder?new Pos(start.line,mv(ch,1),"before"):new Pos(start.line,ch,"after")};partPos>=0&&partPos<bidi.length;partPos+=dir){var part=bidi[partPos],moveInStorageOrder=dir>0==(1!=part.level),ch=moveInStorageOrder?wrappedLineExtent.begin:mv(wrappedLineExtent.end,-1);if(part.from<=ch&&ch<part.to)return getRes(ch,moveInStorageOrder);if(ch=moveInStorageOrder?part.from:mv(part.to,-1),wrappedLineExtent.begin<=ch&&ch<wrappedLineExtent.end)return getRes(ch,moveInStorageOrder)}},res=searchInVisualLine(partPos+dir,dir,wrappedLineExtent);if(res)return res;var nextCh=dir>0?wrappedLineExtent.end:mv(wrappedLineExtent.begin,-1);return null==nextCh||dir>0&&nextCh==line.text.length||!(res=searchInVisualLine(dir>0?0:bidi.length-1,dir,getWrappedLineExtent(nextCh)))?null:res}function lineStart(cm,lineN){var line=getLine(cm.doc,lineN),visual=visualLine(line);return visual!=line&&(lineN=lineNo(visual)),endOfLine(!0,cm,visual,lineN,1)}function lineEnd(cm,lineN){var line=getLine(cm.doc,lineN),visual=visualLineEnd(line);return visual!=line&&(lineN=lineNo(visual)),endOfLine(!0,cm,line,lineN,-1)}function lineStartSmart(cm,pos){var start=lineStart(cm,pos.line),line=getLine(cm.doc,start.line),order=getOrder(line,cm.doc.direction);if(!order||0==order[0].level){var firstNonWS=Math.max(0,line.text.search(/\S/)),inWS=pos.line==start.line&&pos.ch<=firstNonWS&&pos.ch;return Pos(start.line,inWS?0:firstNonWS,start.sticky)}return start}function doHandleBinding(cm,bound,dropShift){if("string"==typeof bound&&(bound=commands[bound],!bound))return!1;cm.display.input.ensurePolled();var prevShift=cm.display.shift,done=!1;try{cm.isReadOnly()&&(cm.state.suppressEdits=!0),dropShift&&(cm.display.shift=!1),done=bound(cm)!=Pass}finally{cm.display.shift=prevShift,cm.state.suppressEdits=!1}return done}function lookupKeyForEditor(cm,name,handle){for(var i=0;i<cm.state.keyMaps.length;i++){var result=lookupKey(name,cm.state.keyMaps[i],handle,cm);if(result)return result}return cm.options.extraKeys&&lookupKey(name,cm.options.extraKeys,handle,cm)||lookupKey(name,cm.options.keyMap,handle,cm)}function dispatchKey(cm,name,e,handle){var seq=cm.state.keySeq;if(seq){if(isModifierKey(name))return"handled";if(/\'$/.test(name)?cm.state.keySeq=null:stopSeq.set(50,function(){cm.state.keySeq==seq&&(cm.state.keySeq=null,cm.display.input.reset())}),dispatchKeyInner(cm,seq+" "+name,e,handle))return!0}return dispatchKeyInner(cm,name,e,handle)}function dispatchKeyInner(cm,name,e,handle){var result=lookupKeyForEditor(cm,name,handle);return"multi"==result&&(cm.state.keySeq=name),"handled"==result&&signalLater(cm,"keyHandled",cm,name,e),"handled"!=result&&"multi"!=result||(e_preventDefault(e),restartBlink(cm)),!!result}function handleKeyBinding(cm,e){var name=keyName(e,!0);return!!name&&(e.shiftKey&&!cm.state.keySeq?dispatchKey(cm,"Shift-"+name,e,function(b){return doHandleBinding(cm,b,!0)})||dispatchKey(cm,name,e,function(b){if("string"==typeof b?/^go[A-Z]/.test(b):b.motion)return doHandleBinding(cm,b)}):dispatchKey(cm,name,e,function(b){return doHandleBinding(cm,b)}))}function handleCharBinding(cm,e,ch){return dispatchKey(cm,"'"+ch+"'",e,function(b){return doHandleBinding(cm,b,!0)})}function onKeyDown(e){var cm=this;if(cm.curOp.focus=activeElt(),!signalDOMEvent(cm,e)){ie&&ie_version<11&&27==e.keyCode&&(e.returnValue=!1);var code=e.keyCode;cm.display.shift=16==code||e.shiftKey;var handled=handleKeyBinding(cm,e);presto&&(lastStoppedKey=handled?code:null,!handled&&88==code&&!hasCopyEvent&&(mac?e.metaKey:e.ctrlKey)&&cm.replaceSelection("",null,"cut")),18!=code||/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)||showCrossHair(cm)}}function showCrossHair(cm){function up(e){18!=e.keyCode&&e.altKey||(rmClass(lineDiv,"CodeMirror-crosshair"),off(document,"keyup",up),off(document,"mouseover",up))}var lineDiv=cm.display.lineDiv;addClass(lineDiv,"CodeMirror-crosshair"),on(document,"keyup",up),on(document,"mouseover",up)}function onKeyUp(e){16==e.keyCode&&(this.doc.sel.shift=!1),signalDOMEvent(this,e)}function onKeyPress(e){var cm=this;if(!(eventInWidget(cm.display,e)||signalDOMEvent(cm,e)||e.ctrlKey&&!e.altKey||mac&&e.metaKey)){var keyCode=e.keyCode,charCode=e.charCode;if(presto&&keyCode==lastStoppedKey)return lastStoppedKey=null,void e_preventDefault(e);if(!presto||e.which&&!(e.which<10)||!handleKeyBinding(cm,e)){var ch=String.fromCharCode(null==charCode?keyCode:charCode);"\b"!=ch&&(handleCharBinding(cm,e,ch)||cm.display.input.onKeyPress(e))}}}function clickRepeat(pos,button){var now=+new Date;return lastDoubleClick&&lastDoubleClick.compare(now,pos,button)?(lastClick=lastDoubleClick=null,"triple"):lastClick&&lastClick.compare(now,pos,button)?(lastDoubleClick=new PastClick(now,pos,button),lastClick=null,"double"):(lastClick=new PastClick(now,pos,button),lastDoubleClick=null,"single")}function onMouseDown(e){var cm=this,display=cm.display;if(!(signalDOMEvent(cm,e)||display.activeTouch&&display.input.supportsTouch())){if(display.input.ensurePolled(),display.shift=e.shiftKey,eventInWidget(display,e))return void(webkit||(display.scroller.draggable=!1,setTimeout(function(){return display.scroller.draggable=!0},100)));if(!clickInGutter(cm,e)){var pos=posFromMouse(cm,e),button=e_button(e),repeat=pos?clickRepeat(pos,button):"single";window.focus(),1==button&&cm.state.selectingText&&cm.state.selectingText(e),pos&&handleMappedButton(cm,button,pos,repeat,e)||(1==button?pos?leftButtonDown(cm,pos,repeat,e):e_target(e)==display.scroller&&e_preventDefault(e):2==button?(pos&&extendSelection(cm.doc,pos),setTimeout(function(){return display.input.focus()},20)):3==button&&(captureRightClick?cm.display.input.onContextMenu(e):delayBlurEvent(cm)))}}}function handleMappedButton(cm,button,pos,repeat,event){var name="Click";return"double"==repeat?name="Double"+name:"triple"==repeat&&(name="Triple"+name),name=(1==button?"Left":2==button?"Middle":"Right")+name,dispatchKey(cm,addModifierNames(name,event),event,function(bound){if("string"==typeof bound&&(bound=commands[bound]),!bound)return!1;var done=!1;try{cm.isReadOnly()&&(cm.state.suppressEdits=!0),done=bound(cm,pos)!=Pass}finally{cm.state.suppressEdits=!1}return done})}function configureMouse(cm,repeat,event){var option=cm.getOption("configureMouse"),value=option?option(cm,repeat,event):{};if(null==value.unit){var rect=chromeOS?event.shiftKey&&event.metaKey:event.altKey;value.unit=rect?"rectangle":"single"==repeat?"char":"double"==repeat?"word":"line"}return(null==value.extend||cm.doc.extend)&&(value.extend=cm.doc.extend||event.shiftKey),null==value.addNew&&(value.addNew=mac?event.metaKey:event.ctrlKey),null==value.moveOnDrag&&(value.moveOnDrag=!(mac?event.altKey:event.ctrlKey)),value}function leftButtonDown(cm,pos,repeat,event){ie?setTimeout(bind(ensureFocus,cm),0):cm.curOp.focus=activeElt();var behavior=configureMouse(cm,repeat,event),sel=cm.doc.sel,contained;cm.options.dragDrop&&dragAndDrop&&!cm.isReadOnly()&&"single"==repeat&&(contained=sel.contains(pos))>-1&&(cmp((contained=sel.ranges[contained]).from(),pos)<0||pos.xRel>0)&&(cmp(contained.to(),pos)>0||pos.xRel<0)?leftButtonStartDrag(cm,event,pos,behavior):leftButtonSelect(cm,event,pos,behavior)}function leftButtonStartDrag(cm,event,pos,behavior){var display=cm.display,moved=!1,dragEnd=operation(cm,function(e){webkit&&(display.scroller.draggable=!1),cm.state.draggingText=!1,off(display.wrapper.ownerDocument,"mouseup",dragEnd),off(display.wrapper.ownerDocument,"mousemove",mouseMove),off(display.scroller,"dragstart",dragStart),off(display.scroller,"drop",dragEnd),moved||(e_preventDefault(e),behavior.addNew||extendSelection(cm.doc,pos,null,null,behavior.extend),webkit||ie&&9==ie_version?setTimeout(function(){display.wrapper.ownerDocument.body.focus(),display.input.focus()},20):display.input.focus())}),mouseMove=function(e2){moved=moved||Math.abs(event.clientX-e2.clientX)+Math.abs(event.clientY-e2.clientY)>=10},dragStart=function(){return moved=!0};webkit&&(display.scroller.draggable=!0),cm.state.draggingText=dragEnd,dragEnd.copy=!behavior.moveOnDrag,display.scroller.dragDrop&&display.scroller.dragDrop(),on(display.wrapper.ownerDocument,"mouseup",dragEnd),on(display.wrapper.ownerDocument,"mousemove",mouseMove),on(display.scroller,"dragstart",dragStart),on(display.scroller,"drop",dragEnd),delayBlurEvent(cm),setTimeout(function(){return display.input.focus()},20)}function rangeForUnit(cm,pos,unit){if("char"==unit)return new Range(pos,pos);if("word"==unit)return cm.findWordAt(pos);if("line"==unit)return new Range(Pos(pos.line,0),clipPos(cm.doc,Pos(pos.line+1,0)));var result=unit(cm,pos);return new Range(result.from,result.to)}function leftButtonSelect(cm,event,start,behavior){function extendTo(pos){if(0!=cmp(lastPos,pos))if(lastPos=pos,"rectangle"==behavior.unit){for(var ranges=[],tabSize=cm.options.tabSize,startCol=countColumn(getLine(doc,start.line).text,start.ch,tabSize),posCol=countColumn(getLine(doc,pos.line).text,pos.ch,tabSize),left=Math.min(startCol,posCol),right=Math.max(startCol,posCol),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);left==right?ranges.push(new Range(Pos(line,leftPos),Pos(line,leftPos))):text.length>leftPos&&ranges.push(new Range(Pos(line,leftPos),Pos(line,findColumn(text,right,tabSize))))}ranges.length||ranges.push(new Range(start,start)),setSelection(doc,normalizeSelection(cm,startSel.ranges.slice(0,ourIndex).concat(ranges),ourIndex),{origin:"*mouse",scroll:!1}),cm.scrollIntoView(pos)}else{var oldRange=ourRange,range$$1=rangeForUnit(cm,pos,behavior.unit),anchor=oldRange.anchor,head;cmp(range$$1.anchor,anchor)>0?(head=range$$1.head,anchor=minPos(oldRange.from(),range$$1.anchor)):(head=range$$1.anchor,anchor=maxPos(oldRange.to(),range$$1.head));var ranges$1=startSel.ranges.slice(0);ranges$1[ourIndex]=bidiSimplify(cm,new Range(clipPos(doc,anchor),head)),setSelection(doc,normalizeSelection(cm,ranges$1,ourIndex),sel_mouse)}}function extend(e){var curCount=++counter,cur=posFromMouse(cm,e,!0,"rectangle"==behavior.unit);if(cur)if(0!=cmp(cur,lastPos)){cm.curOp.focus=activeElt(),extendTo(cur);var visible=visibleLines(display,doc);(cur.line>=visible.to||cur.line<visible.from)&&setTimeout(operation(cm,function(){counter==curCount&&extend(e)}),150)}else{var outside=e.clientY<editorSize.top?-20:e.clientY>editorSize.bottom?20:0;outside&&setTimeout(operation(cm,function(){counter==curCount&&(display.scroller.scrollTop+=outside,extend(e))}),50)}}function done(e){cm.state.selectingText=!1,counter=1/0,e_preventDefault(e),display.input.focus(),off(display.wrapper.ownerDocument,"mousemove",move),off(display.wrapper.ownerDocument,"mouseup",up),doc.history.lastSelOrigin=null}var display=cm.display,doc=cm.doc;e_preventDefault(event);var ourRange,ourIndex,startSel=doc.sel,ranges=startSel.ranges;if(behavior.addNew&&!behavior.extend?(ourIndex=doc.sel.contains(start),ourRange=ourIndex>-1?ranges[ourIndex]:new Range(start,start)):(ourRange=doc.sel.primary(),ourIndex=doc.sel.primIndex),"rectangle"==behavior.unit)behavior.addNew||(ourRange=new Range(start,start)),start=posFromMouse(cm,event,!0,!0),ourIndex=-1;else{var range$$1=rangeForUnit(cm,start,behavior.unit);ourRange=behavior.extend?extendRange(ourRange,range$$1.anchor,range$$1.head,behavior.extend):range$$1}behavior.addNew?ourIndex==-1?(ourIndex=ranges.length,setSelection(doc,normalizeSelection(cm,ranges.concat([ourRange]),ourIndex),{scroll:!1,origin:"*mouse"})):ranges.length>1&&ranges[ourIndex].empty()&&"char"==behavior.unit&&!behavior.extend?(setSelection(doc,normalizeSelection(cm,ranges.slice(0,ourIndex).concat(ranges.slice(ourIndex+1)),0),{scroll:!1,origin:"*mouse"}),startSel=doc.sel):replaceOneSelection(doc,ourIndex,ourRange,sel_mouse):(ourIndex=0,setSelection(doc,new Selection([ourRange],0),sel_mouse),startSel=doc.sel);var lastPos=start,editorSize=display.wrapper.getBoundingClientRect(),counter=0,move=operation(cm,function(e){0!==e.buttons&&e_button(e)?extend(e):done(e)}),up=operation(cm,done);cm.state.selectingText=up,on(display.wrapper.ownerDocument,"mousemove",move),on(display.wrapper.ownerDocument,"mouseup",up)}function bidiSimplify(cm,range$$1){var anchor=range$$1.anchor,head=range$$1.head,anchorLine=getLine(cm.doc,anchor.line);if(0==cmp(anchor,head)&&anchor.sticky==head.sticky)return range$$1;var order=getOrder(anchorLine);if(!order)return range$$1;var index=getBidiPartAt(order,anchor.ch,anchor.sticky),part=order[index];if(part.from!=anchor.ch&&part.to!=anchor.ch)return range$$1;var boundary=index+(part.from==anchor.ch==(1!=part.level)?0:1);if(0==boundary||boundary==order.length)return range$$1;var leftSide;if(head.line!=anchor.line)leftSide=(head.line-anchor.line)*("ltr"==cm.doc.direction?1:-1)>0;else{var headIndex=getBidiPartAt(order,head.ch,head.sticky),dir=headIndex-index||(head.ch-anchor.ch)*(1==part.level?-1:1);leftSide=headIndex==boundary-1||headIndex==boundary?dir<0:dir>0}var usePart=order[boundary+(leftSide?-1:0)],from=leftSide==(1==usePart.level),ch=from?usePart.from:usePart.to,sticky=from?"after":"before";return anchor.ch==ch&&anchor.sticky==sticky?range$$1:new Range(new Pos(anchor.line,ch,sticky),head)}function gutterEvent(cm,e,type,prevent){var mX,mY;if(e.touches)mX=e.touches[0].clientX,mY=e.touches[0].clientY;else try{mX=e.clientX,mY=e.clientY}catch(e){return!1}if(mX>=Math.floor(cm.display.gutters.getBoundingClientRect().right))return!1;prevent&&e_preventDefault(e);var display=cm.display,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<cm.options.gutters.length;++i){var g=display.gutters.childNodes[i];if(g&&g.getBoundingClientRect().right>=mX){var line=lineAtHeight(cm.doc,mY),gutter=cm.options.gutters[i];return signal(cm,type,cm,line,gutter,e),e_defaultPrevented(e)}}}function clickInGutter(cm,e){return gutterEvent(cm,e,"gutterClick",!0)}function onContextMenu(cm,e){eventInWidget(cm.display,e)||contextMenuInGutter(cm,e)||signalDOMEvent(cm,e,"contextmenu")||captureRightClick||cm.display.input.onContextMenu(e)}function contextMenuInGutter(cm,e){return!!hasHandler(cm,"gutterContextMenu")&&gutterEvent(cm,e,"gutterContextMenu",!1)}function themeChanged(cm){cm.display.wrapper.className=cm.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+cm.options.theme.replace(/(^|\s)\s*/g," cm-s-"),clearCaches(cm)}function defineOptions(CodeMirror){function option(name,deflt,handle,notOnInit){CodeMirror.defaults[name]=deflt,handle&&(optionHandlers[name]=notOnInit?function(cm,val,old){old!=Init&&handle(cm,val,old)}:handle)}var optionHandlers=CodeMirror.optionHandlers;CodeMirror.defineOption=option,CodeMirror.Init=Init,option("value","",function(cm,val){return cm.setValue(val)},!0),option("mode",null,function(cm,val){cm.doc.modeOption=val,loadMode(cm)},!0),option("indentUnit",2,loadMode,!0),option("indentWithTabs",!1),option("smartIndent",!0),option("tabSize",4,function(cm){resetModeState(cm),clearCaches(cm),regChange(cm)},!0),option("lineSeparator",null,function(cm,val){if(cm.doc.lineSep=val,val){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",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g,function(cm,val,old){cm.state.specialChars=new RegExp(val.source+(val.test("\t")?"":"|\t"),"g"),old!=Init&&cm.refresh()}),option("specialCharPlaceholder",defaultSpecialCharPlaceholder,function(cm){return cm.refresh()},!0),option("electricChars",!0),option("inputStyle",mobile?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),option("spellcheck",!1,function(cm,val){return cm.getInputField().spellcheck=val},!0),option("rtlMoveVisually",!windows),option("wholeLineUpdateBefore",!0),option("theme","default",function(cm){themeChanged(cm),guttersChanged(cm)},!0),option("keyMap","default",function(cm,val,old){var next=getKeyMap(val),prev=old!=Init&&getKeyMap(old);prev&&prev.detach&&prev.detach(cm,next),next.attach&&next.attach(cm,prev||null)}),option("extraKeys",null),option("configureMouse",null),option("lineWrapping",!1,wrappingChanged,!0),option("gutters",[],function(cm){setGuttersForLineNumbers(cm.options),guttersChanged(cm)},!0),option("fixedGutter",!0,function(cm,val){cm.display.gutters.style.left=val?compensateForHScroll(cm.display)+"px":"0",cm.refresh()},!0),option("coverGutterNextToScrollbar",!1,function(cm){return updateScrollbars(cm)},!0),option("scrollbarStyle","native",function(cm){initScrollbars(cm),updateScrollbars(cm),cm.display.scrollbars.setScrollTop(cm.doc.scrollTop),cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft)},!0),option("lineNumbers",!1,function(cm){setGuttersForLineNumbers(cm.options),guttersChanged(cm)},!0),option("firstLineNumber",1,guttersChanged,!0),option("lineNumberFormatter",function(integer){return integer},guttersChanged,!0),option("showCursorWhenSelecting",!1,updateSelection,!0),option("resetSelectionOnContextMenu",!0),option("lineWiseCopyCut",!0),option("pasteLinesPerSelection",!0),option("selectionsMayTouch",!1),option("readOnly",!1,function(cm,val){"nocursor"==val&&(onBlur(cm),cm.display.input.blur()),cm.display.input.readOnlyChanged(val)}),option("disableInput",!1,function(cm,val){val||cm.display.input.reset()},!0),option("dragDrop",!0,dragDropChanged),option("allowDropFileTypes",null),option("cursorBlinkRate",530),option("cursorScrollMargin",0),option("cursorHeight",1,updateSelection,!0),option("singleCursorHeightPerLine",!0,updateSelection,!0),option("workTime",100),option("workDelay",100),option("flattenSpans",!0,resetModeState,!0),option("addModeClass",!1,resetModeState,!0),option("pollInterval",100),option("undoDepth",200,function(cm,val){return cm.doc.history.undoDepth=val}),option("historyEventDelay",1250),option("viewportMargin",10,function(cm){return cm.refresh()},!0),option("maxHighlightLength",1e4,resetModeState,!0),option("moveInputWithCursor",!0,function(cm,val){val||cm.display.input.resetPosition()}),option("tabindex",null,function(cm,val){return cm.display.input.getField().tabIndex=val||""}),option("autofocus",null),option("direction","ltr",function(cm,val){return cm.doc.setDirection(val)},!0),option("phrases",null)}function guttersChanged(cm){updateGutters(cm),regChange(cm),alignHorizontally(cm)}function dragDropChanged(cm,value,old){var wasOn=old&&old!=Init;if(!value!=!wasOn){var funcs=cm.display.dragFunctions,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 wrappingChanged(cm){cm.options.lineWrapping?(addClass(cm.display.wrapper,"CodeMirror-wrap"),cm.display.sizer.style.minWidth="",cm.display.sizerWidth=null):(rmClass(cm.display.wrapper,"CodeMirror-wrap"),findMaxLine(cm)),estimateLineHeights(cm),regChange(cm),clearCaches(cm),setTimeout(function(){return updateScrollbars(cm)},100)}function CodeMirror(place,options){var this$1=this;if(!(this instanceof CodeMirror))return new CodeMirror(place,options);this.options=options=options?copyObj(options):{},copyObj(defaults,options,!1),setGuttersForLineNumbers(options);var doc=options.value;"string"==typeof doc?doc=new Doc(doc,options.mode,null,options.lineSeparator,options.direction):options.mode&&(doc.modeOption=options.mode),this.doc=doc;
var input=new CodeMirror.inputStyles[options.inputStyle](this),display=this.display=new Display(place,doc,input);display.wrapper.CodeMirror=this,updateGutters(this),themeChanged(this),options.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),initScrollbars(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 Delayed,keySeq:null,specialChars:null},options.autofocus&&!mobile&&display.input.focus(),ie&&ie_version<11&&setTimeout(function(){return this$1.display.input.reset(!0)},20),registerEventHandlers(this),ensureGlobalHandlers(),startOperation(this),this.curOp.forceUpdate=!0,attachDoc(this,doc),options.autofocus&&!mobile||this.hasFocus()?setTimeout(bind(onFocus,this),20):onBlur(this);for(var opt in optionHandlers)optionHandlers.hasOwnProperty(opt)&&optionHandlers[opt](this,options[opt],Init);maybeUpdateLineNumberWidth(this),options.finishInit&&options.finishInit(this);for(var i=0;i<initHooks.length;++i)initHooks[i](this);endOperation(this),webkit&&options.lineWrapping&&"optimizelegibility"==getComputedStyle(display.lineDiv).textRendering&&(display.lineDiv.style.textRendering="auto")}function registerEventHandlers(cm){function finishTouch(){d.activeTouch&&(touchFinished=setTimeout(function(){return d.activeTouch=null},1e3),prevTouch=d.activeTouch,prevTouch.end=+new Date)}function isMouseLikeTouchEvent(e){if(1!=e.touches.length)return!1;var touch=e.touches[0];return touch.radiusX<=1&&touch.radiusY<=1}function farAway(touch,other){if(null==other.left)return!0;var dx=other.left-touch.left,dy=other.top-touch.top;return dx*dx+dy*dy>400}var d=cm.display;on(d.scroller,"mousedown",operation(cm,onMouseDown)),ie&&ie_version<11?on(d.scroller,"dblclick",operation(cm,function(e){if(!signalDOMEvent(cm,e)){var pos=posFromMouse(cm,e);if(pos&&!clickInGutter(cm,e)&&!eventInWidget(cm.display,e)){e_preventDefault(e);var word=cm.findWordAt(pos);extendSelection(cm.doc,word.anchor,word.head)}}})):on(d.scroller,"dblclick",function(e){return signalDOMEvent(cm,e)||e_preventDefault(e)}),on(d.scroller,"contextmenu",function(e){return onContextMenu(cm,e)});var touchFinished,prevTouch={end:0};on(d.scroller,"touchstart",function(e){if(!signalDOMEvent(cm,e)&&!isMouseLikeTouchEvent(e)&&!clickInGutter(cm,e)){d.input.ensurePolled(),clearTimeout(touchFinished);var now=+new Date;d.activeTouch={start:now,moved:!1,prev:now-prevTouch.end<=300?prevTouch:null},1==e.touches.length&&(d.activeTouch.left=e.touches[0].pageX,d.activeTouch.top=e.touches[0].pageY)}}),on(d.scroller,"touchmove",function(){d.activeTouch&&(d.activeTouch.moved=!0)}),on(d.scroller,"touchend",function(e){var touch=d.activeTouch;if(touch&&!eventInWidget(d,e)&&null!=touch.left&&!touch.moved&&new Date-touch.start<300){var pos=cm.coordsChar(d.activeTouch,"page"),range;range=!touch.prev||farAway(touch,touch.prev)?new Range(pos,pos):!touch.prev.prev||farAway(touch,touch.prev.prev)?cm.findWordAt(pos):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(){d.scroller.clientHeight&&(updateScrollTop(cm,d.scroller.scrollTop),setScrollLeft(cm,d.scroller.scrollLeft,!0),signal(cm,"scroll",cm))}),on(d.scroller,"mousewheel",function(e){return onScrollWheel(cm,e)}),on(d.scroller,"DOMMouseScroll",function(e){return onScrollWheel(cm,e)}),on(d.wrapper,"scroll",function(){return d.wrapper.scrollTop=d.wrapper.scrollLeft=0}),d.dragFunctions={enter:function(e){signalDOMEvent(cm,e)||e_stop(e)},over:function(e){signalDOMEvent(cm,e)||(onDragOver(cm,e),e_stop(e))},start:function(e){return onDragStart(cm,e)},drop:operation(cm,onDrop),leave:function(e){signalDOMEvent(cm,e)||clearDragCursor(cm)}};var inp=d.input.getField();on(inp,"keyup",function(e){return onKeyUp.call(cm,e)}),on(inp,"keydown",operation(cm,onKeyDown)),on(inp,"keypress",operation(cm,onKeyPress)),on(inp,"focus",function(e){return onFocus(cm,e)}),on(inp,"blur",function(e){return onBlur(cm,e)})}function indentLine(cm,n,how,aggressive){var doc=cm.doc,state;null==how&&(how="add"),"smart"==how&&(doc.mode.indent?state=getContextBefore(cm,n).state:how="prev");var tabSize=cm.options.tabSize,line=getLine(doc,n),curSpace=countColumn(line.text,null,tabSize);line.stateAfter&&(line.stateAfter=null);var curSpaceString=line.text.match(/^\s*/)[0],indentation;if(aggressive||/\S/.test(line.text)){if("smart"==how&&(indentation=doc.mode.indent(state,line.text.slice(curSpaceString.length),line.text),indentation==Pass||indentation>150)){if(!aggressive)return;how="prev"}}else indentation=0,how="not";"prev"==how?indentation=n>doc.first?countColumn(getLine(doc,n-1).text,null,tabSize):0:"add"==how?indentation=curSpace+cm.options.indentUnit:"subtract"==how?indentation=curSpace-cm.options.indentUnit:"number"==typeof how&&(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<indentation&&(indentString+=spaceStr(indentation-pos)),indentString!=curSpaceString)return replaceRange(doc,indentString,Pos(n,0),Pos(n,curSpaceString.length),"+input"),line.stateAfter=null,!0;for(var i$1=0;i$1<doc.sel.ranges.length;i$1++){var range=doc.sel.ranges[i$1];if(range.head.line==n&&range.head.ch<curSpaceString.length){var pos$1=Pos(n,curSpaceString.length);replaceOneSelection(doc,i$1,new Range(pos$1,pos$1));break}}}function setLastCopied(newLastCopied){lastCopied=newLastCopied}function applyTextInput(cm,inserted,deleted,sel,origin){var doc=cm.doc;cm.display.shift=!1,sel||(sel=doc.sel);var paste=cm.state.pasteIncoming||"paste"==origin,textLines=splitLinesAuto(inserted),multiPaste=null;if(paste&&sel.ranges.length>1)if(lastCopied&&lastCopied.text.join("\n")==inserted){if(sel.ranges.length%lastCopied.text.length==0){multiPaste=[];for(var i=0;i<lastCopied.text.length;i++)multiPaste.push(doc.splitLines(lastCopied.text[i]))}}else textLines.length==sel.ranges.length&&cm.options.pasteLinesPerSelection&&(multiPaste=map(textLines,function(l){return[l]}));for(var updateInput=cm.curOp.updateInput,i$1=sel.ranges.length-1;i$1>=0;i$1--){var range$$1=sel.ranges[i$1],from=range$$1.from(),to=range$$1.to();range$$1.empty()&&(deleted&&deleted>0?from=Pos(from.line,from.ch-deleted):cm.state.overwrite&&!paste?to=Pos(to.line,Math.min(getLine(doc,to.line).text.length,to.ch+lst(textLines).length)):paste&&lastCopied&&lastCopied.lineWise&&lastCopied.text.join("\n")==inserted&&(from=to=Pos(from.line,0)));var changeEvent={from:from,to:to,text:multiPaste?multiPaste[i$1%multiPaste.length]:textLines,origin:origin||(paste?"paste":cm.state.cutIncoming?"cut":"+input")};makeChange(cm.doc,changeEvent),signalLater(cm,"inputRead",cm,changeEvent)}inserted&&!paste&&triggerElectric(cm,inserted),ensureCursorVisible(cm),cm.curOp.updateInput<2&&(cm.curOp.updateInput=updateInput),cm.curOp.typing=!0,cm.state.pasteIncoming=cm.state.cutIncoming=!1}function handlePaste(e,cm){var pasted=e.clipboardData&&e.clipboardData.getData("Text");if(pasted)return e.preventDefault(),cm.isReadOnly()||cm.options.disableInput||runInOp(cm,function(){return applyTextInput(cm,pasted,0,null,"paste")}),!0}function triggerElectric(cm,inserted){if(cm.options.electricChars&&cm.options.smartIndent)for(var sel=cm.doc.sel,i=sel.ranges.length-1;i>=0;i--){var range$$1=sel.ranges[i];if(!(range$$1.head.ch>100||i&&sel.ranges[i-1].head.line==range$$1.head.line)){var mode=cm.getModeAt(range$$1.head),indented=!1;if(mode.electricChars){for(var j=0;j<mode.electricChars.length;j++)if(inserted.indexOf(mode.electricChars.charAt(j))>-1){indented=indentLine(cm,range$$1.head.line,"smart");break}}else mode.electricInput&&mode.electricInput.test(getLine(cm.doc,range$$1.head.line).text.slice(0,range$$1.head.ch))&&(indented=indentLine(cm,range$$1.head.line,"smart"));indented&&signalLater(cm,"electricInput",cm,range$$1.head.line)}}}function copyableRanges(cm){for(var text=[],ranges=[],i=0;i<cm.doc.sel.ranges.length;i++){var line=cm.doc.sel.ranges[i].head.line,lineRange={anchor:Pos(line,0),head:Pos(line+1,0)};ranges.push(lineRange),text.push(cm.getRange(lineRange.anchor,lineRange.head))}return{text:text,ranges:ranges}}function disableBrowserMagic(field,spellcheck){field.setAttribute("autocorrect","off"),field.setAttribute("autocapitalize","off"),field.setAttribute("spellcheck",!!spellcheck)}function hiddenTextarea(){var te=elt("textarea",null,null,"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"),div=elt("div",[te],null,"overflow: hidden; position: relative; width: 3px; height: 0px;");return webkit?te.style.width="1000px":te.setAttribute("wrap","off"),ios&&(te.style.border="1px solid black"),disableBrowserMagic(te),div}function addEditorMethods(CodeMirror){var optionHandlers=CodeMirror.optionHandlers,helpers=CodeMirror.helpers={};CodeMirror.prototype={constructor:CodeMirror,focus:function(){window.focus(),this.display.input.focus()},setOption:function(option,value){var options=this.options,old=options[option];options[option]==value&&"mode"!=option||(options[option]=value,optionHandlers.hasOwnProperty(option)&&operation(this,optionHandlers[option])(this,value,old),signal(this,"optionChange",this,option))},getOption:function(option){return this.options[option]},getDoc:function(){return this.doc},addKeyMap:function(map$$1,bottom){this.state.keyMaps[bottom?"push":"unshift"](getKeyMap(map$$1))},removeKeyMap:function(map$$1){for(var maps=this.state.keyMaps,i=0;i<maps.length;++i)if(maps[i]==map$$1||maps[i].name==map$$1)return maps.splice(i,1),!0},addOverlay:methodOp(function(spec,options){var mode=spec.token?spec:CodeMirror.getMode(this.options,spec);if(mode.startState)throw new Error("Overlays may not be stateful.");insertSorted(this.state.overlays,{mode:mode,modeSpec:spec,opaque:options&&options.opaque,priority:options&&options.priority||0},function(overlay){return overlay.priority}),this.state.modeGen++,regChange(this)}),removeOverlay:methodOp(function(spec){for(var overlays=this.state.overlays,i=0;i<overlays.length;++i){var cur=overlays[i].modeSpec;if(cur==spec||"string"==typeof spec&&cur.name==spec)return overlays.splice(i,1),this.state.modeGen++,void regChange(this)}}),indentLine:methodOp(function(n,dir,aggressive){"string"!=typeof dir&&"number"!=typeof dir&&(dir=null==dir?this.options.smartIndent?"smart":"prev":dir?"add":"subtract"),isLine(this.doc,n)&&indentLine(this,n,dir,aggressive)}),indentSelection:methodOp(function(how){for(var ranges=this.doc.sel.ranges,end=-1,i=0;i<ranges.length;i++){var range$$1=ranges[i];if(range$$1.empty())range$$1.head.line>end&&(indentLine(this,range$$1.head.line,how,!0),end=range$$1.head.line,i==this.doc.sel.primIndex&&ensureCursorVisible(this));else{var from=range$$1.from(),to=range$$1.to(),start=Math.max(end,from.line);end=Math.min(this.lastLine(),to.line-(to.ch?0:1))+1;for(var j=start;j<end;++j)indentLine(this,j,how);var newRanges=this.doc.sel.ranges;0==from.ch&&ranges.length==newRanges.length&&newRanges[i].from().ch>0&&replaceOneSelection(this.doc,i,new Range(from,newRanges[i].to()),sel_dontScroll)}}}),getTokenAt:function(pos,precise){return takeToken(this,pos,precise)},getLineTokens:function(line,precise){return takeToken(this,Pos(line),precise,!0)},getTokenTypeAt:function(pos){pos=clipPos(this.doc,pos);var styles=getLineStyles(this,getLine(this.doc,pos.line)),before=0,after=(styles.length-1)/2,ch=pos.ch,type;if(0==ch)type=styles[2];else for(;;){var mid=before+after>>1;if((mid?styles[2*mid-1]:0)>=ch)after=mid;else{if(!(styles[2*mid+1]<ch)){type=styles[2*mid+2];break}before=mid+1}}var cut=type?type.indexOf("overlay "):-1;return cut<0?type:0==cut?null:type.slice(0,cut-1)},getModeAt:function(pos){var mode=this.doc.mode;return mode.innerMode?CodeMirror.innerMode(mode,this.getTokenAt(pos).state).mode:mode},getHelper:function(pos,type){return this.getHelpers(pos,type)[0]},getHelpers:function(pos,type){var found=[];if(!helpers.hasOwnProperty(type))return found;var help=helpers[type],mode=this.getModeAt(pos);if("string"==typeof mode[type])help[mode[type]]&&found.push(help[mode[type]]);else if(mode[type])for(var i=0;i<mode[type].length;i++){var val=help[mode[type][i]];val&&found.push(val)}else mode.helperType&&help[mode.helperType]?found.push(help[mode.helperType]):help[mode.name]&&found.push(help[mode.name]);for(var i$1=0;i$1<help._global.length;i$1++){var cur=help._global[i$1];cur.pred(mode,this)&&indexOf(found,cur.val)==-1&&found.push(cur.val)}return found},getStateAfter:function(line,precise){var doc=this.doc;return line=clipLine(doc,null==line?doc.first+doc.size-1:line),getContextBefore(this,line+1,precise).state},cursorCoords:function(start,mode){var pos,range$$1=this.doc.sel.primary();return pos=null==start?range$$1.head:"object"==typeof start?clipPos(this.doc,start):start?range$$1.from():range$$1.to(),cursorCoords(this,pos,mode||"page")},charCoords:function(pos,mode){return charCoords(this,clipPos(this.doc,pos),mode||"page")},coordsChar:function(coords,mode){return coords=fromCoordSystem(this,coords,mode||"page"),coordsChar(this,coords.left,coords.top)},lineAtHeight:function(height,mode){return height=fromCoordSystem(this,{top:height,left:0},mode||"page").top,lineAtHeight(this.doc,height+this.display.viewOffset)},heightAtLine:function(line,mode,includeWidgets){var end=!1,lineObj;if("number"==typeof line){var last=this.doc.first+this.doc.size-1;line<this.doc.first?line=this.doc.first:line>last&&(line=last,end=!0),lineObj=getLine(this.doc,line)}else lineObj=line;return intoCoordSystem(this,lineObj,{top:0,left:0},mode||"page",includeWidgets||end).top+(end?this.doc.height-heightAtLine(lineObj):0)},defaultTextHeight:function(){return textHeight(this.display)},defaultCharWidth:function(){return charWidth(this.display)},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;if(node.style.position="absolute",node.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(node),display.sizer.appendChild(node),"over"==vert)top=pos.top;else if("above"==vert||"near"==vert){var vspace=Math.max(display.wrapper.clientHeight,this.doc.height),hspace=Math.max(display.sizer.clientWidth,display.lineSpace.clientWidth);("above"==vert||pos.bottom+node.offsetHeight>vspace)&&pos.top>node.offsetHeight?top=pos.top-node.offsetHeight:pos.bottom+node.offsetHeight<=vspace&&(top=pos.bottom),left+node.offsetWidth>hspace&&(left=hspace-node.offsetWidth)}node.style.top=top+"px",node.style.left=node.style.right="","right"==horiz?(left=display.sizer.clientWidth-node.offsetWidth,node.style.right="0px"):("left"==horiz?left=0:"middle"==horiz&&(left=(display.sizer.clientWidth-node.offsetWidth)/2),node.style.left=left+"px"),scroll&&scrollIntoView(this,{left:left,top:top,right:left+node.offsetWidth,bottom:top+node.offsetHeight})},triggerOnKeyDown:methodOp(onKeyDown),triggerOnKeyPress:methodOp(onKeyPress),triggerOnKeyUp:onKeyUp,triggerOnMouseDown:methodOp(onMouseDown),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;amount<0&&(dir=-1,amount=-amount);for(var cur=clipPos(this.doc,from),i=0;i<amount&&(cur=findPosH(this.doc,cur,dir,unit,visually),!cur.hitSide);++i);return cur},moveH:methodOp(function(dir,unit){var this$1=this;this.extendSelectionsBy(function(range$$1){return this$1.display.shift||this$1.doc.extend||range$$1.empty()?findPosH(this$1.doc,range$$1.head,dir,unit,this$1.options.rtlMoveVisually):dir<0?range$$1.from():range$$1.to()},sel_move)}),deleteH:methodOp(function(dir,unit){var sel=this.doc.sel,doc=this.doc;sel.somethingSelected()?doc.replaceSelection("",null,"+delete"):deleteNearSelection(this,function(range$$1){var other=findPosH(doc,range$$1.head,dir,unit,!1);return dir<0?{from:other,to:range$$1.head}:{from:range$$1.head,to:other}})}),findPosV:function(from,amount,unit,goalColumn){var dir=1,x=goalColumn;amount<0&&(dir=-1,amount=-amount);for(var cur=clipPos(this.doc,from),i=0;i<amount;++i){var coords=cursorCoords(this,cur,"div");if(null==x?x=coords.left:coords.left=x,cur=findPosV(this,coords,dir,unit),cur.hitSide)break}return cur},moveV:methodOp(function(dir,unit){var this$1=this,doc=this.doc,goals=[],collapse=!this.display.shift&&!doc.extend&&doc.sel.somethingSelected();if(doc.extendSelectionsBy(function(range$$1){if(collapse)return dir<0?range$$1.from():range$$1.to();var headPos=cursorCoords(this$1,range$$1.head,"div");null!=range$$1.goalColumn&&(headPos.left=range$$1.goalColumn),goals.push(headPos.left);var pos=findPosV(this$1,headPos,dir,unit);return"page"==unit&&range$$1==doc.sel.primary()&&addToScrollTop(this$1,charCoords(this$1,pos,"div").top-headPos.top),pos},sel_move),goals.length)for(var i=0;i<doc.sel.ranges.length;i++)doc.sel.ranges[i].goalColumn=goals[i]}),findWordAt:function(pos){var doc=this.doc,line=getLine(doc,pos.line).text,start=pos.ch,end=pos.ch;if(line){var helper=this.getHelper(pos,"wordChars");"before"!=pos.sticky&&end!=line.length||!start?++end:--start;for(var startChar=line.charAt(start),check=isWordChar(startChar,helper)?function(ch){return isWordChar(ch,helper)}:/\s/.test(startChar)?function(ch){return/\s/.test(ch)}:function(ch){return!/\s/.test(ch)&&!isWordChar(ch)};start>0&&check(line.charAt(start-1));)--start;for(;end<line.length&&check(line.charAt(end));)++end}return new Range(Pos(pos.line,start),Pos(pos.line,end))},toggleOverwrite:function(value){null!=value&&value==this.state.overwrite||((this.state.overwrite=!this.state.overwrite)?addClass(this.display.cursorDiv,"CodeMirror-overwrite"):rmClass(this.display.cursorDiv,"CodeMirror-overwrite"),signal(this,"overwriteToggle",this,this.state.overwrite))},hasFocus:function(){return this.display.input.getField()==activeElt()},isReadOnly:function(){return!(!this.options.readOnly&&!this.doc.cantEdit)},scrollTo:methodOp(function(x,y){scrollToCoords(this,x,y)}),getScrollInfo:function(){var scroller=this.display.scroller;return{left:scroller.scrollLeft,top:scroller.scrollTop,height:scroller.scrollHeight-scrollGap(this)-this.display.barHeight,width:scroller.scrollWidth-scrollGap(this)-this.display.barWidth,clientHeight:displayHeight(this),clientWidth:displayWidth(this)}},scrollIntoView:methodOp(function(range$$1,margin){null==range$$1?(range$$1={from:this.doc.sel.primary().head,to:null},null==margin&&(margin=this.options.cursorScrollMargin)):"number"==typeof range$$1?range$$1={from:Pos(range$$1,0),to:null}:null==range$$1.from&&(range$$1={from:range$$1,to:null}),range$$1.to||(range$$1.to=range$$1.from),range$$1.margin=margin||0,null!=range$$1.from.line?scrollToRange(this,range$$1):scrollToCoordsRange(this,range$$1.from,range$$1.to,range$$1.margin)}),setSize:methodOp(function(width,height){var this$1=this,interpret=function(val){return"number"==typeof val||/^\d+$/.test(String(val))?val+"px":val};null!=width&&(this.display.wrapper.style.width=interpret(width)),null!=height&&(this.display.wrapper.style.height=interpret(height)),this.options.lineWrapping&&clearLineMeasurementCache(this);var lineNo$$1=this.display.viewFrom;this.doc.iter(lineNo$$1,this.display.viewTo,function(line){if(line.widgets)for(var i=0;i<line.widgets.length;i++)if(line.widgets[i].noHScroll){regLineChange(this$1,lineNo$$1,"widget");break}++lineNo$$1}),this.curOp.forceUpdate=!0,signal(this,"refresh",this)}),operation:function(f){return runInOp(this,f)},startOperation:function(){return startOperation(this)},endOperation:function(){return endOperation(this)},refresh:methodOp(function(){var oldHeight=this.display.cachedTextHeight;regChange(this),this.curOp.forceUpdate=!0,clearCaches(this),scrollToCoords(this,this.doc.scrollLeft,this.doc.scrollTop),updateGutterSpace(this),(null==oldHeight||Math.abs(oldHeight-textHeight(this.display))>.5)&&estimateLineHeights(this),signal(this,"refresh",this)}),swapDoc:methodOp(function(doc){var old=this.doc;return old.cm=null,attachDoc(this,doc),clearCaches(this),this.display.input.reset(),scrollToCoords(this,doc.scrollLeft,doc.scrollTop),this.curOp.forceScroll=!0,signalLater(this,"swapDoc",this,old),old}),phrase:function(phraseText){var phrases=this.options.phrases;return phrases&&Object.prototype.hasOwnProperty.call(phrases,phraseText)?phrases[phraseText]:phraseText},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),CodeMirror.registerHelper=function(type,name,value){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})}}function findPosH(doc,pos,dir,unit,visually){function findNextLine(){var l=pos.line+dir;return!(l<doc.first||l>=doc.first+doc.size)&&(pos=new Pos(l,pos.ch,pos.sticky),lineObj=getLine(doc,l))}function moveOnce(boundToLine){var next;if(next=visually?moveVisually(doc.cm,lineObj,pos,dir):moveLogically(lineObj,pos,dir),null==next){if(boundToLine||!findNextLine())return!1;pos=endOfLine(visually,doc.cm,lineObj,pos.line,dir)}else pos=next;return!0}var oldPos=pos,origDir=dir,lineObj=getLine(doc,pos.line);if("char"==unit)moveOnce();else if("column"==unit)moveOnce(!0);else if("word"==unit||"group"==unit)for(var sawType=null,group="group"==unit,helper=doc.cm&&doc.cm.getHelper(pos,"wordChars"),first=!0;!(dir<0)||moveOnce(!first);first=!1){var cur=lineObj.text.charAt(pos.ch)||"\n",type=isWordChar(cur,helper)?"w":group&&"\n"==cur?"n":!group||/\s/.test(cur)?null:"p";if(!group||first||type||(type="s"),sawType&&sawType!=type){dir<0&&(dir=1,moveOnce(),pos.sticky="after");break}if(type&&(sawType=type),dir>0&&!moveOnce(!first))break}var result=skipAtomic(doc,pos,oldPos,origDir,!0);return equalCursorPos(oldPos,result)&&(result.hitSide=!0),result}function findPosV(cm,pos,dir,unit){var doc=cm.doc,x=pos.left,y;if("page"==unit){var pageSize=Math.min(cm.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),moveAmount=Math.max(pageSize-.5*textHeight(cm.display),3);y=(dir>0?pos.bottom:pos.top)+dir*moveAmount}else"line"==unit&&(y=dir>0?pos.bottom+3:pos.top-3);for(var target;target=coordsChar(cm,x,y),target.outside;){if(dir<0?y<=0:y>=doc.height){target.hitSide=!0;break}y+=5*dir}return target}function posToDOM(cm,pos){var view=findViewForLine(cm,pos.line);if(!view||view.hidden)return null;var line=getLine(cm.doc,pos.line),info=mapFromLineView(view,line,pos.line),order=getOrder(line,cm.doc.direction),side="left";if(order){var partPos=getBidiPartAt(order,pos.ch);side=partPos%2?"right":"left"}var result=nodeAndOffsetInLineMap(info.map,pos.ch,side);return result.offset="right"==result.collapse?result.end:result.start,result}function isInGutter(node){for(var scan=node;scan;scan=scan.parentNode)if(/CodeMirror-gutter-wrapper/.test(scan.className))return!0;return!1}function badPos(pos,bad){return bad&&(pos.bad=!0),pos}function domTextBetween(cm,from,to,fromLine,toLine){function recognizeMarker(id){return function(marker){return marker.id==id}}function close(){closing&&(text+=lineSep,extraLinebreak&&(text+=lineSep),closing=extraLinebreak=!1)}function addText(str){str&&(close(),text+=str)}function walk(node){if(1==node.nodeType){var cmText=node.getAttribute("cm-text");if(cmText)return void addText(cmText);var markerID=node.getAttribute("cm-marker"),range$$1;if(markerID){var found=cm.findMarks(Pos(fromLine,0),Pos(toLine+1,0),recognizeMarker(+markerID));return void(found.length&&(range$$1=found[0].find(0))&&addText(getBetween(cm.doc,range$$1.from,range$$1.to).join(lineSep)))}if("false"==node.getAttribute("contenteditable"))return;var isBlock=/^(pre|div|p|li|table|br)$/i.test(node.nodeName);if(!/^br$/i.test(node.nodeName)&&0==node.textContent.length)return;isBlock&&close();for(var i=0;i<node.childNodes.length;i++)walk(node.childNodes[i]);/^(pre|p)$/i.test(node.nodeName)&&(extraLinebreak=!0),isBlock&&(closing=!0)}else 3==node.nodeType&&addText(node.nodeValue.replace(/\u200b/g,"").replace(/\u00a0/g," "))}for(var text="",closing=!1,lineSep=cm.doc.lineSeparator(),extraLinebreak=!1;walk(from),from!=to;)from=from.nextSibling,extraLinebreak=!1;return text}function domToPos(cm,node,offset){var lineNode;if(node==cm.display.lineDiv){if(lineNode=cm.display.lineDiv.childNodes[offset],!lineNode)return badPos(cm.clipPos(Pos(cm.display.viewTo-1)),!0);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<cm.display.view.length;i++){var lineView=cm.display.view[i];if(lineView.node==lineNode)return locateNodeInLineView(lineView,node,offset)}}function locateNodeInLineView(lineView,node,offset){function find(textNode,topNode,offset){for(var i=-1;i<(maps?maps.length:0);i++)for(var map$$1=i<0?measure.map:maps[i],j=0;j<map$$1.length;j+=3){var curNode=map$$1[j+2];if(curNode==textNode||curNode==topNode){var line=lineNo(i<0?lineView.line:lineView.rest[i]),ch=map$$1[j]+offset;return(offset<0||curNode!=textNode)&&(ch=map$$1[j+(offset?1:0)]),Pos(line,ch)}}}var wrapper=lineView.text.firstChild,bad=!1;if(!node||!contains(wrapper,node))return badPos(Pos(lineNo(lineView.line),0),!0);if(node==wrapper&&(bad=!0,node=wrapper.childNodes[offset],offset=0,!node)){var line=lineView.rest?lst(lineView.rest):lineView.line;return badPos(Pos(lineNo(line),line.text.length),bad)}var textNode=3==node.nodeType?node:null,topNode=node;for(textNode||1!=node.childNodes.length||3!=node.firstChild.nodeType||(textNode=node.firstChild,offset&&(offset=textNode.nodeValue.length));topNode.parentNode!=wrapper;)topNode=topNode.parentNode;var measure=lineView.measure,maps=measure.maps,found=find(textNode,topNode,offset);if(found)return badPos(found,bad);for(var after=topNode.nextSibling,dist=textNode?textNode.nodeValue.length-offset:0;after;after=after.nextSibling){if(found=find(after,after.firstChild,0))return badPos(Pos(found.line,found.ch-dist),bad);dist+=after.textContent.length}for(var before=topNode.previousSibling,dist$1=offset;before;before=before.previousSibling){if(found=find(before,before.firstChild,-1))return badPos(Pos(found.line,found.ch+dist$1),bad);dist$1+=before.textContent.length}}function fromTextArea(textarea,options){function save(){textarea.value=cm.getValue()}if(options=options?copyObj(options):{},options.value=textarea.value,!options.tabindex&&textarea.tabIndex&&(options.tabindex=textarea.tabIndex),!options.placeholder&&textarea.placeholder&&(options.placeholder=textarea.placeholder),null==options.autofocus){var hasFocus=activeElt();options.autofocus=hasFocus==textarea||null!=textarea.getAttribute("autofocus")&&hasFocus==document.body}var realSubmit;if(textarea.form&&(on(textarea.form,"submit",save),!options.leaveSubmitMethodAlone)){var form=textarea.form;realSubmit=form.submit;try{var wrappedSubmit=form.submit=function(){save(),form.submit=realSubmit,form.submit(),form.submit=wrappedSubmit}}catch(e){}}options.finishInit=function(cm){cm.save=save,cm.getTextArea=function(){return textarea},cm.toTextArea=function(){cm.toTextArea=isNaN,save(),textarea.parentNode.removeChild(cm.getWrapperElement()),textarea.style.display="",textarea.form&&(off(textarea.form,"submit",save),"function"==typeof textarea.form.submit&&(textarea.form.submit=realSubmit))}},textarea.style.display="none";var cm=CodeMirror(function(node){return textarea.parentNode.insertBefore(node,textarea.nextSibling)},options);return cm}function addLegacyProps(CodeMirror){CodeMirror.off=off,CodeMirror.on=on,CodeMirror.wheelEventPixels=wheelEventPixels,CodeMirror.Doc=Doc,CodeMirror.splitLines=splitLinesAuto,CodeMirror.countColumn=countColumn,CodeMirror.findColumn=findColumn,CodeMirror.isWordChar=isWordCharBasic,CodeMirror.Pass=Pass,CodeMirror.signal=signal,CodeMirror.Line=Line,CodeMirror.changeEnd=changeEnd,CodeMirror.scrollbarModel=scrollbarModel,CodeMirror.Pos=Pos,CodeMirror.cmpPos=cmp,CodeMirror.modes=modes,CodeMirror.mimeModes=mimeModes,CodeMirror.resolveMode=resolveMode,CodeMirror.getMode=getMode,CodeMirror.modeExtensions=modeExtensions,CodeMirror.extendMode=extendMode,CodeMirror.copyState=copyState,CodeMirror.startState=startState,CodeMirror.innerMode=innerMode,CodeMirror.commands=commands,CodeMirror.keyMap=keyMap,CodeMirror.keyName=keyName,CodeMirror.isModifierKey=isModifierKey,CodeMirror.lookupKey=lookupKey,CodeMirror.normalizeKeyMap=normalizeKeyMap,CodeMirror.StringStream=StringStream,CodeMirror.SharedTextMarker=SharedTextMarker,CodeMirror.TextMarker=TextMarker,CodeMirror.LineWidget=LineWidget,CodeMirror.e_preventDefault=e_preventDefault,CodeMirror.e_stopPropagation=e_stopPropagation,CodeMirror.e_stop=e_stop,CodeMirror.addClass=addClass,CodeMirror.contains=contains,CodeMirror.rmClass=rmClass,CodeMirror.keyNames=keyNames}var userAgent=navigator.userAgent,platform=navigator.platform,gecko=/gecko\/\d/i.test(userAgent),ie_upto10=/MSIE \d/.test(userAgent),ie_11up=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent),edge=/Edge\/(\d+)/.exec(userAgent),ie=ie_upto10||ie_11up||edge,ie_version=ie&&(ie_upto10?document.documentMode||6:+(edge||ie_11up)[1]),webkit=!edge&&/WebKit\//.test(userAgent),qtwebkit=webkit&&/Qt\/\d+\.\d+/.test(userAgent),chrome=!edge&&/Chrome\//.test(userAgent),presto=/Opera\//.test(userAgent),safari=/Apple Computer/.test(navigator.vendor),mac_geMountainLion=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent),phantom=/PhantomJS/.test(userAgent),ios=!edge&&/AppleWebKit/.test(userAgent)&&/Mobile\/\w+/.test(userAgent),android=/Android/.test(userAgent),mobile=ios||android||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent),mac=ios||/Mac/.test(platform),chromeOS=/\bCrOS\b/.test(userAgent),windows=/win/i.test(platform),presto_version=presto&&userAgent.match(/Version\/(\d*\.\d*)/);presto_version&&(presto_version=Number(presto_version[1])),presto_version&&presto_version>=15&&(presto=!1,webkit=!0);var flipCtrlCmd=mac&&(qtwebkit||presto&&(null==presto_version||presto_version<12.11)),captureRightClick=gecko||ie&&ie_version>=9,rmClass=function(node,cls){var current=node.className,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:"")}},range;range=document.createRange?function(node,start,end,endNode){var r=document.createRange();return r.setEnd(endNode||node,end),r.setStart(node,start),r}:function(node,start,end){var r=document.body.createTextRange();try{r.moveToElementText(node.parentNode)}catch(e){return r}return r.collapse(!0),r.moveEnd("character",end),r.moveStart("character",start),r};var selectInput=function(node){node.select()};ios?selectInput=function(node){node.selectionStart=0,node.selectionEnd=node.value.length}:ie&&(selectInput=function(node){try{node.select()}catch(_e){}});var Delayed=function(){this.id=null};Delayed.prototype.set=function(ms,f){clearTimeout(this.id),this.id=setTimeout(f,ms)};var scrollerGap=30,Pass={toString:function(){return"CodeMirror.Pass"}},sel_dontScroll={scroll:!1},sel_mouse={origin:"*mouse"},sel_move={origin:"+move"},spaceStrs=[""],nonASCIISingleCaseWordChar=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,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]/,sawReadOnlySpans=!1,sawCollapsedSpans=!1,bidiOther=null,bidiOrdering=function(){
function charType(code){return code<=247?lowTypes.charAt(code):1424<=code&&code<=1524?"R":1536<=code&&code<=1785?arabicTypes.charAt(code-1536):1774<=code&&code<=2220?"r":8192<=code&&code<=8203?"w":8204==code?"b":"L"}function BidiSpan(level,from,to){this.level=level,this.from=from,this.to=to}var lowTypes="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",arabicTypes="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111",bidiRE=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,isNeutral=/[stwN]/,isStrong=/[LRr]/,countsAsLeft=/[Lb1n]/,countsAsNum=/[1n]/;return function(str,direction){var outerType="ltr"==direction?"L":"R";if(0==str.length||"ltr"==direction&&!bidiRE.test(str))return!1;for(var len=str.length,types=[],i=0;i<len;++i)types.push(charType(str.charCodeAt(i)));for(var i$1=0,prev=outerType;i$1<len;++i$1){var type=types[i$1];"m"==type?types[i$1]=prev:prev=type}for(var i$2=0,cur=outerType;i$2<len;++i$2){var type$1=types[i$2];"1"==type$1&&"r"==cur?types[i$2]="n":isStrong.test(type$1)&&(cur=type$1,"r"==type$1&&(types[i$2]="R"))}for(var i$3=1,prev$1=types[0];i$3<len-1;++i$3){var type$2=types[i$3];"+"==type$2&&"1"==prev$1&&"1"==types[i$3+1]?types[i$3]="1":","!=type$2||prev$1!=types[i$3+1]||"1"!=prev$1&&"n"!=prev$1||(types[i$3]=prev$1),prev$1=type$2}for(var i$4=0;i$4<len;++i$4){var type$3=types[i$4];if(","==type$3)types[i$4]="N";else if("%"==type$3){var end=void 0;for(end=i$4+1;end<len&&"%"==types[end];++end);for(var replace=i$4&&"!"==types[i$4-1]||end<len&&"1"==types[end]?"1":"N",j=i$4;j<end;++j)types[j]=replace;i$4=end-1}}for(var i$5=0,cur$1=outerType;i$5<len;++i$5){var type$4=types[i$5];"L"==cur$1&&"1"==type$4?types[i$5]="L":isStrong.test(type$4)&&(cur$1=type$4)}for(var i$6=0;i$6<len;++i$6)if(isNeutral.test(types[i$6])){var end$1=void 0;for(end$1=i$6+1;end$1<len&&isNeutral.test(types[end$1]);++end$1);for(var before="L"==(i$6?types[i$6-1]:outerType),after="L"==(end$1<len?types[end$1]:outerType),replace$1=before==after?before?"L":"R":outerType,j$1=i$6;j$1<end$1;++j$1)types[j$1]=replace$1;i$6=end$1-1}for(var order=[],m,i$7=0;i$7<len;)if(countsAsLeft.test(types[i$7])){var start=i$7;for(++i$7;i$7<len&&countsAsLeft.test(types[i$7]);++i$7);order.push(new BidiSpan(0,start,i$7))}else{var pos=i$7,at=order.length;for(++i$7;i$7<len&&"L"!=types[i$7];++i$7);for(var j$2=pos;j$2<i$7;)if(countsAsNum.test(types[j$2])){pos<j$2&&order.splice(at,0,new BidiSpan(1,pos,j$2));var nstart=j$2;for(++j$2;j$2<i$7&&countsAsNum.test(types[j$2]);++j$2);order.splice(at,0,new BidiSpan(2,nstart,j$2)),pos=j$2}else++j$2;pos<i$7&&order.splice(at,0,new BidiSpan(1,pos,i$7))}return"ltr"==direction&&(1==order[0].level&&(m=str.match(/^\s+/))&&(order[0].from=m[0].length,order.unshift(new BidiSpan(0,0,m[0].length))),1==lst(order).level&&(m=str.match(/\s+$/))&&(lst(order).to-=m[0].length,order.push(new BidiSpan(0,len-m[0].length,len)))),"rtl"==direction?order.reverse():order}}(),noHandlers=[],on=function(emitter,type,f){if(emitter.addEventListener)emitter.addEventListener(type,f,!1);else if(emitter.attachEvent)emitter.attachEvent("on"+type,f);else{var map$$1=emitter._handlers||(emitter._handlers={});map$$1[type]=(map$$1[type]||noHandlers).concat(f)}},dragAndDrop=function(){if(ie&&ie_version<9)return!1;var div=elt("div");return"draggable"in div||"dragDrop"in div}(),zwspSupported,badBidiRects,splitLinesAuto=3!="\n\nb".split(/\n/).length?function(string){for(var pos=0,result=[],l=string.length;pos<=l;){var nl=string.indexOf("\n",pos);nl==-1&&(nl=string.length);var line=string.slice(pos,"\r"==string.charAt(nl-1)?nl-1:nl),rt=line.indexOf("\r");rt!=-1?(result.push(line.slice(0,rt)),pos+=rt+1):(result.push(line),pos=nl+1)}return result}:function(string){return string.split(/\r\n?|\n/)},hasSelection=window.getSelection?function(te){try{return te.selectionStart!=te.selectionEnd}catch(e){return!1}}:function(te){var range$$1;try{range$$1=te.ownerDocument.selection.createRange()}catch(e){}return!(!range$$1||range$$1.parentElement()!=te)&&0!=range$$1.compareEndPoints("StartToEnd",range$$1)},hasCopyEvent=function(){var e=elt("div");return"oncopy"in e||(e.setAttribute("oncopy","return;"),"function"==typeof e.oncopy)}(),badZoomedRects=null,modes={},mimeModes={},modeExtensions={},StringStream=function(string,tabSize,lineOracle){this.pos=this.start=0,this.string=string,this.tabSize=tabSize||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=lineOracle};StringStream.prototype.eol=function(){return this.pos>=this.string.length},StringStream.prototype.sol=function(){return this.pos==this.lineStart},StringStream.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},StringStream.prototype.next=function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},StringStream.prototype.eat=function(match){var ch=this.string.charAt(this.pos),ok;if(ok="string"==typeof match?ch==match:ch&&(match.test?match.test(ch):match(ch)))return++this.pos,ch},StringStream.prototype.eatWhile=function(match){for(var start=this.pos;this.eat(match););return this.pos>start},StringStream.prototype.eatSpace=function(){for(var start=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>start},StringStream.prototype.skipToEnd=function(){this.pos=this.string.length},StringStream.prototype.skipTo=function(ch){var found=this.string.indexOf(ch,this.pos);if(found>-1)return this.pos=found,!0},StringStream.prototype.backUp=function(n){this.pos-=n},StringStream.prototype.column=function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=countColumn(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?countColumn(this.string,this.lineStart,this.tabSize):0)},StringStream.prototype.indentation=function(){return countColumn(this.string,null,this.tabSize)-(this.lineStart?countColumn(this.string,this.lineStart,this.tabSize):0)},StringStream.prototype.match=function(pattern,consume,caseInsensitive){if("string"!=typeof pattern){var match=this.string.slice(this.pos).match(pattern);return match&&match.index>0?null:(match&&consume!==!1&&(this.pos+=match[0].length),match)}var cased=function(str){return caseInsensitive?str.toLowerCase():str},substr=this.string.substr(this.pos,pattern.length);if(cased(substr)==cased(pattern))return consume!==!1&&(this.pos+=pattern.length),!0},StringStream.prototype.current=function(){return this.string.slice(this.start,this.pos)},StringStream.prototype.hideFirstChars=function(n,inner){this.lineStart+=n;try{return inner()}finally{this.lineStart-=n}},StringStream.prototype.lookAhead=function(n){var oracle=this.lineOracle;return oracle&&oracle.lookAhead(n)},StringStream.prototype.baseToken=function(){var oracle=this.lineOracle;return oracle&&oracle.baseToken(this.pos)};var SavedContext=function(state,lookAhead){this.state=state,this.lookAhead=lookAhead},Context=function(doc,state,line,lookAhead){this.state=state,this.doc=doc,this.line=line,this.maxLookAhead=lookAhead||0,this.baseTokens=null,this.baseTokenPos=1};Context.prototype.lookAhead=function(n){var line=this.doc.getLine(this.line+n);return null!=line&&n>this.maxLookAhead&&(this.maxLookAhead=n),line},Context.prototype.baseToken=function(n){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=n;)this.baseTokenPos+=2;var type=this.baseTokens[this.baseTokenPos+1];return{type:type&&type.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-n}},Context.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},Context.fromSaved=function(doc,saved,line){return saved instanceof SavedContext?new Context(doc,copyState(doc.mode,saved.state),line,saved.lookAhead):new Context(doc,copyState(doc.mode,saved),line)},Context.prototype.save=function(copy){var state=copy!==!1?copyState(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new SavedContext(state,this.maxLookAhead):state};var Token=function(stream,type,state){this.start=stream.start,this.end=stream.pos,this.string=stream.current(),this.type=type||null,this.state=state},Line=function(text,markedSpans,estimateHeight){this.text=text,attachMarkedSpans(this,markedSpans),this.height=estimateHeight?estimateHeight(this):1};Line.prototype.lineNo=function(){return lineNo(this)},eventMixin(Line);var styleToClassCache={},styleToClassCacheWithMode={},operationGroup=null,orphanDelayedCallbacks=null,nullRect={left:0,right:0,top:0,bottom:0},measureText,NativeScrollbars=function(place,scroll,cm){this.cm=cm;var vert=this.vert=elt("div",[elt("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),horiz=this.horiz=elt("div",[elt("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");vert.tabIndex=horiz.tabIndex=-1,place(vert),place(horiz),on(vert,"scroll",function(){vert.clientHeight&&scroll(vert.scrollTop,"vertical")}),on(horiz,"scroll",function(){horiz.clientWidth&&scroll(horiz.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,ie&&ie_version<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};NativeScrollbars.prototype.update=function(measure){var needsH=measure.scrollWidth>measure.clientWidth+1,needsV=measure.scrollHeight>measure.clientHeight+1,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=Math.max(0,measure.scrollWidth-measure.clientWidth+totalWidth)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&measure.clientHeight>0&&(0==sWidth&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:needsV?sWidth:0,bottom:needsH?sWidth:0}},NativeScrollbars.prototype.setScrollLeft=function(pos){this.horiz.scrollLeft!=pos&&(this.horiz.scrollLeft=pos),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},NativeScrollbars.prototype.setScrollTop=function(pos){this.vert.scrollTop!=pos&&(this.vert.scrollTop=pos),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},NativeScrollbars.prototype.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},NativeScrollbars.prototype.enableZeroWidthBar=function(bar,delay,type){function maybeDisable(){var box=bar.getBoundingClientRect(),elt$$1="vert"==type?document.elementFromPoint(box.right-1,(box.top+box.bottom)/2):document.elementFromPoint((box.right+box.left)/2,box.bottom-1);elt$$1!=bar?bar.style.pointerEvents="none":delay.set(1e3,maybeDisable)}bar.style.pointerEvents="auto",delay.set(1e3,maybeDisable)},NativeScrollbars.prototype.clear=function(){var parent=this.horiz.parentNode;parent.removeChild(this.horiz),parent.removeChild(this.vert)};var NullScrollbars=function(){};NullScrollbars.prototype.update=function(){return{bottom:0,right:0}},NullScrollbars.prototype.setScrollLeft=function(){},NullScrollbars.prototype.setScrollTop=function(){},NullScrollbars.prototype.clear=function(){};var scrollbarModel={"native":NativeScrollbars,"null":NullScrollbars},nextOpId=0,DisplayUpdate=function(cm,viewport,force){var display=cm.display;this.viewport=viewport,this.visible=visibleLines(display,cm.doc,viewport),this.editorIsHidden=!display.wrapper.offsetWidth,this.wrapperHeight=display.wrapper.clientHeight,this.wrapperWidth=display.wrapper.clientWidth,this.oldDisplayWidth=displayWidth(cm),this.force=force,this.dims=getDimensions(cm),this.events=[]};DisplayUpdate.prototype.signal=function(emitter,type){hasHandler(emitter,type)&&this.events.push(arguments)},DisplayUpdate.prototype.finish=function(){for(var i=0;i<this.events.length;i++)signal.apply(null,this.events[i])};var wheelSamples=0,wheelPixelsPerUnit=null;ie?wheelPixelsPerUnit=-.53:gecko?wheelPixelsPerUnit=15:chrome?wheelPixelsPerUnit=-.7:safari&&(wheelPixelsPerUnit=-1/3);var Selection=function(ranges,primIndex){this.ranges=ranges,this.primIndex=primIndex};Selection.prototype.primary=function(){return this.ranges[this.primIndex]},Selection.prototype.equals=function(other){if(other==this)return!0;if(other.primIndex!=this.primIndex||other.ranges.length!=this.ranges.length)return!1;for(var i=0;i<this.ranges.length;i++){var here=this.ranges[i],there=other.ranges[i];if(!equalCursorPos(here.anchor,there.anchor)||!equalCursorPos(here.head,there.head))return!1}return!0},Selection.prototype.deepCopy=function(){for(var out=[],i=0;i<this.ranges.length;i++)out[i]=new Range(copyPos(this.ranges[i].anchor),copyPos(this.ranges[i].head));return new Selection(out,this.primIndex)},Selection.prototype.somethingSelected=function(){for(var i=0;i<this.ranges.length;i++)if(!this.ranges[i].empty())return!0;return!1},Selection.prototype.contains=function(pos,end){end||(end=pos);for(var i=0;i<this.ranges.length;i++){var range=this.ranges[i];if(cmp(end,range.from())>=0&&cmp(pos,range.to())<=0)return i}return-1};var Range=function(anchor,head){this.anchor=anchor,this.head=head};Range.prototype.from=function(){return minPos(this.anchor,this.head)},Range.prototype.to=function(){return maxPos(this.anchor,this.head)},Range.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch},LeafChunk.prototype={chunkSize:function(){return this.lines.length},removeInner:function(at,n){for(var i=at,e=at+n;i<e;++i){var line=this.lines[i];this.height-=line.height,cleanUpLine(line),signalLater(line,"delete")}this.lines.splice(at,n)},collapse:function(lines){lines.push.apply(lines,this.lines)},insertInner:function(at,lines,height){this.height+=height,this.lines=this.lines.slice(0,at).concat(lines).concat(this.lines.slice(at));for(var i=0;i<lines.length;++i)lines[i].parent=this},iterN:function(at,n,op){for(var e=at+n;at<e;++at)if(op(this.lines[at]))return!0}},BranchChunk.prototype={chunkSize:function(){return this.size},removeInner:function(at,n){this.size-=n;for(var i=0;i<this.children.length;++i){var child=this.children[i],sz=child.chunkSize();if(at<sz){var rm=Math.min(n,sz-at),oldHeight=child.height;if(child.removeInner(at,rm),this.height-=oldHeight-child.height,sz==rm&&(this.children.splice(i--,1),child.parent=null),0==(n-=rm))break;at=0}else at-=sz}if(this.size-n<25&&(this.children.length>1||!(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;i<this.children.length;++i)this.children[i].collapse(lines)},insertInner:function(at,lines,height){this.size+=lines.length,this.height+=height;for(var i=0;i<this.children.length;++i){var child=this.children[i],sz=child.chunkSize();if(at<=sz){if(child.insertInner(at,lines,height),child.lines&&child.lines.length>50){for(var remaining=child.lines.length%25+25,pos=remaining;pos<child.lines.length;){var leaf=new LeafChunk(child.lines.slice(pos,pos+=25));child.height-=leaf.height,this.children.splice(++i,0,leaf),leaf.parent=this}child.lines=child.lines.slice(0,remaining),this.maybeSpill()}break}at-=sz}},maybeSpill:function(){if(!(this.children.length<=10)){var me=this;do{var spilled=me.children.splice(me.children.length-5,5),sibling=new BranchChunk(spilled);if(me.parent){me.size-=sibling.size,me.height-=sibling.height;var myIndex=indexOf(me.parent.children,me);me.parent.children.splice(myIndex+1,0,sibling)}else{var copy=new BranchChunk(me.children);copy.parent=me,me.children=[copy,sibling],me=copy}sibling.parent=me.parent}while(me.children.length>10);me.parent.maybeSpill()}},iterN:function(at,n,op){for(var i=0;i<this.children.length;++i){var child=this.children[i],sz=child.chunkSize();if(at<sz){var used=Math.min(n,sz-at);if(child.iterN(at,used,op))return!0;if(0==(n-=used))break;at=0}else at-=sz}}};var LineWidget=function(doc,node,options){if(options)for(var opt in options)options.hasOwnProperty(opt)&&(this[opt]=options[opt]);this.doc=doc,this.node=node};LineWidget.prototype.clear=function(){var cm=this.doc.cm,ws=this.line.widgets,line=this.line,no=lineNo(line);if(null!=no&&ws){for(var i=0;i<ws.length;++i)ws[i]==this&&ws.splice(i--,1);ws.length||(line.widgets=null);var height=widgetHeight(this);updateLineHeight(line,Math.max(0,line.height-height)),cm&&(runInOp(cm,function(){adjustScrollWhenAboveVisible(cm,line,-height),regLineChange(cm,no,"widget")}),signalLater(cm,"lineWidgetCleared",cm,this,no))}},LineWidget.prototype.changed=function(){var this$1=this,oldH=this.height,cm=this.doc.cm,line=this.line;this.height=null;var diff=widgetHeight(this)-oldH;diff&&(lineIsHidden(this.doc,line)||updateLineHeight(line,line.height+diff),cm&&runInOp(cm,function(){cm.curOp.forceUpdate=!0,adjustScrollWhenAboveVisible(cm,line,diff),signalLater(cm,"lineWidgetChanged",cm,this$1,lineNo(line))}))},eventMixin(LineWidget);var nextMarkerId=0,TextMarker=function(doc,type){this.lines=[],this.type=type,this.doc=doc,this.id=++nextMarkerId};TextMarker.prototype.clear=function(){if(!this.explicitlyCleared){var cm=this.doc.cm,withOp=cm&&!cm.curOp;if(withOp&&startOperation(cm),hasHandler(this,"clear")){var found=this.find();found&&signalLater(this,"clear",found.from,found.to)}for(var min=null,max=null,i=0;i<this.lines.length;++i){var line=this.lines[i],span=getMarkedSpanFor(line.markedSpans,this);cm&&!this.collapsed?regLineChange(cm,lineNo(line),"text"):cm&&(null!=span.to&&(max=lineNo(line)),null!=span.from&&(min=lineNo(line))),line.markedSpans=removeMarkedSpan(line.markedSpans,span),null==span.from&&this.collapsed&&!lineIsHidden(this.doc,line)&&cm&&updateLineHeight(line,textHeight(cm.display))}if(cm&&this.collapsed&&!cm.options.lineWrapping)for(var i$1=0;i$1<this.lines.length;++i$1){var visual=visualLine(this.lines[i$1]),len=lineLength(visual);len>cm.display.maxLineLength&&(cm.display.maxLine=visual,cm.display.maxLineLength=len,cm.display.maxLineChanged=!0)}null!=min&&cm&&this.collapsed&&regChange(cm,min,max+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,cm&&reCheckSelection(cm.doc)),cm&&signalLater(cm,"markerCleared",cm,this,min,max),withOp&&endOperation(cm),this.parent&&this.parent.clear()}},TextMarker.prototype.find=function(side,lineObj){null==side&&"bookmark"==this.type&&(side=1);for(var from,to,i=0;i<this.lines.length;++i){var line=this.lines[i],span=getMarkedSpanFor(line.markedSpans,this);if(null!=span.from&&(from=Pos(lineObj?line:lineNo(line),span.from),side==-1))return from;if(null!=span.to&&(to=Pos(lineObj?line:lineNo(line),span.to),1==side))return to}return from&&{from:from,to:to}},TextMarker.prototype.changed=function(){var this$1=this,pos=this.find(-1,!0),widget=this,cm=this.doc.cm;pos&&cm&&runInOp(cm,function(){var line=pos.line,lineN=lineNo(pos.line),view=findViewForLine(cm,lineN);if(view&&(clearLineMeasurementCacheFor(view),cm.curOp.selectionChanged=cm.curOp.forceUpdate=!0),cm.curOp.updateMaxLine=!0,!lineIsHidden(widget.doc,line)&&null!=widget.height){var oldHeight=widget.height;widget.height=null;var dHeight=widgetHeight(widget)-oldHeight;dHeight&&updateLineHeight(line,line.height+dHeight)}signalLater(cm,"markerChanged",cm,this$1)})},TextMarker.prototype.attachLine=function(line){if(!this.lines.length&&this.doc.cm){var op=this.doc.cm.curOp;op.maybeHiddenMarkers&&indexOf(op.maybeHiddenMarkers,this)!=-1||(op.maybeUnhiddenMarkers||(op.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(line)},TextMarker.prototype.detachLine=function(line){if(this.lines.splice(indexOf(this.lines,line),1),!this.lines.length&&this.doc.cm){var op=this.doc.cm.curOp;(op.maybeHiddenMarkers||(op.maybeHiddenMarkers=[])).push(this)}},eventMixin(TextMarker);var SharedTextMarker=function(markers,primary){this.markers=markers,this.primary=primary;for(var i=0;i<markers.length;++i)markers[i].parent=this};SharedTextMarker.prototype.clear=function(){if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var i=0;i<this.markers.length;++i)this.markers[i].clear();signalLater(this,"clear")}},SharedTextMarker.prototype.find=function(side,lineObj){return this.primary.find(side,lineObj)},eventMixin(SharedTextMarker);var nextDocId=0,Doc=function(text,mode,firstLine,lineSep,direction){if(!(this instanceof Doc))return new Doc(text,mode,firstLine,lineSep,direction);null==firstLine&&(firstLine=0),BranchChunk.call(this,[new LeafChunk([new Line("",null)])]),this.first=firstLine,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.modeFrontier=this.highlightFrontier=firstLine;var start=Pos(firstLine,0);this.sel=simpleSelection(start),this.history=new History(null),this.id=++nextDocId,this.modeOption=mode,this.lineSep=lineSep,this.direction="rtl"==direction?"rtl":"ltr",this.extend=!1,"string"==typeof text&&(text=this.splitLines(text)),updateDoc(this,{from:start,to:start,text:text}),setSelection(this,simpleSelection(start),sel_dontScroll)};Doc.prototype=createObj(BranchChunk.prototype,{constructor:Doc,iter:function(from,to,op){op?this.iterN(from-this.first,to-from,op):this.iterN(this.first,this.first+this.size,from)},insert:function(at,lines){for(var height=0,i=0;i<lines.length;++i)height+=lines[i].height;this.insertInner(at-this.first,lines,height)},remove:function(at,n){this.removeInner(at-this.first,n)},getValue:function(lineSep,lineFilter){var lines=getLines(this,this.first,this.first+this.size,lineFilter);return lineSep===!1?lines:lines.join(lineSep||this.lineSeparator())},setValue:docMethodOp(function(code){var top=Pos(this.first,0),last=this.first+this.size-1;makeChange(this,{from:top,to:Pos(last,getLine(this,last).text.length),text:this.splitLines(code),origin:"setValue",full:!0},!0),this.cm&&scrollToCoords(this.cm,0,0),setSelection(this,simpleSelection(top),sel_dontScroll)}),replaceRange:function(code,from,to,origin){from=clipPos(this,from),to=to?clipPos(this,to):from,replaceRange(this,code,from,to,origin)},getRange:function(from,to,lineSep){var lines=getBetween(this,clipPos(this,from),clipPos(this,to));return lineSep===!1?lines:lines.join(lineSep||this.lineSeparator())},getLine:function(line){var l=this.getLineHandle(line);return l&&l.text},getLineHandle:function(line){if(isLine(this,line))return getLine(this,line)},getLineNumber:function(line){return lineNo(line)},getLineHandleVisualStart:function(line){return"number"==typeof line&&(line=getLine(this,line)),visualLine(line)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(pos){return clipPos(this,pos)},getCursor:function(start){var range$$1=this.sel.primary(),pos;return pos=null==start||"head"==start?range$$1.head:"anchor"==start?range$$1.anchor:"end"==start||"to"==start||start===!1?range$$1.to():range$$1.from()},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:docMethodOp(function(line,ch,options){setSimpleSelection(this,clipPos(this,"number"==typeof line?Pos(line,ch||0):line),null,options)}),setSelection:docMethodOp(function(anchor,head,options){setSimpleSelection(this,clipPos(this,anchor),clipPos(this,head||anchor),options)}),extendSelection:docMethodOp(function(head,other,options){extendSelection(this,clipPos(this,head),other&&clipPos(this,other),options)}),extendSelections:docMethodOp(function(heads,options){extendSelections(this,clipPosArray(this,heads),options)}),extendSelectionsBy:docMethodOp(function(f,options){var heads=map(this.sel.ranges,f);extendSelections(this,clipPosArray(this,heads),options)}),setSelections:docMethodOp(function(ranges,primary,options){if(ranges.length){for(var out=[],i=0;i<ranges.length;i++)out[i]=new Range(clipPos(this,ranges[i].anchor),clipPos(this,ranges[i].head));null==primary&&(primary=Math.min(ranges.length-1,this.sel.primIndex)),setSelection(this,normalizeSelection(this.cm,out,primary),options)}}),addSelection:docMethodOp(function(anchor,head,options){var ranges=this.sel.ranges.slice(0);ranges.push(new Range(clipPos(this,anchor),clipPos(this,head||anchor))),setSelection(this,normalizeSelection(this.cm,ranges,ranges.length-1),options)}),getSelection:function(lineSep){for(var ranges=this.sel.ranges,lines,i=0;i<ranges.length;i++){var sel=getBetween(this,ranges[i].from(),ranges[i].to());lines=lines?lines.concat(sel):sel}return lineSep===!1?lines:lines.join(lineSep||this.lineSeparator())},getSelections:function(lineSep){for(var parts=[],ranges=this.sel.ranges,i=0;i<ranges.length;i++){var sel=getBetween(this,ranges[i].from(),ranges[i].to());lineSep!==!1&&(sel=sel.join(lineSep||this.lineSeparator())),parts[i]=sel}return parts},replaceSelection:function(code,collapse,origin){for(var dup=[],i=0;i<this.sel.ranges.length;i++)dup[i]=code;this.replaceSelections(dup,collapse,origin||"+input")},replaceSelections:docMethodOp(function(code,collapse,origin){for(var changes=[],sel=this.sel,i=0;i<sel.ranges.length;i++){var range$$1=sel.ranges[i];changes[i]={from:range$$1.from(),to:range$$1.to(),text:this.splitLines(code[i]),origin:origin}}for(var newSel=collapse&&"end"!=collapse&&computeReplacedSel(this,changes,collapse),i$1=changes.length-1;i$1>=0;i$1--)makeChange(this,changes[i$1]);newSel?setSelectionReplaceHistory(this,newSel):this.cm&&ensureCursorVisible(this.cm)}),undo:docMethodOp(function(){makeChangeFromHistory(this,"undo")}),redo:docMethodOp(function(){makeChangeFromHistory(this,"redo")}),undoSelection:docMethodOp(function(){makeChangeFromHistory(this,"undo",!0)}),redoSelection:docMethodOp(function(){makeChangeFromHistory(this,"redo",!0)}),setExtending:function(val){this.extend=val},getExtending:function(){return this.extend},historySize:function(){for(var hist=this.history,done=0,undone=0,i=0;i<hist.done.length;i++)hist.done[i].ranges||++done;for(var i$1=0;i$1<hist.undone.length;i$1++)hist.undone[i$1].ranges||++undone;return{undo:done,redo:undone}},clearHistory:function(){this.history=new History(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(forceSplit){return forceSplit&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(gen){return this.history.generation==(gen||this.cleanGeneration)},getHistory:function(){return{done:copyHistoryArray(this.history.done),undone:copyHistoryArray(this.history.undone)}},setHistory:function(histData){var hist=this.history=new History(this.history.maxGeneration);hist.done=copyHistoryArray(histData.done.slice(0),null,!0),hist.undone=copyHistoryArray(histData.undone.slice(0),null,!0)},setGutterMarker:docMethodOp(function(line,gutterID,value){return changeLine(this,line,"gutter",function(line){var markers=line.gutterMarkers||(line.gutterMarkers={});return markers[gutterID]=value,!value&&isEmpty(markers)&&(line.gutterMarkers=null),!0})}),clearGutter:docMethodOp(function(gutterID){var this$1=this;this.iter(function(line){line.gutterMarkers&&line.gutterMarkers[gutterID]&&changeLine(this$1,line,"gutter",function(){return line.gutterMarkers[gutterID]=null,isEmpty(line.gutterMarkers)&&(line.gutterMarkers=null),!0})})}),lineInfo:function(line){var n;if("number"==typeof line){if(!isLine(this,line))return null;if(n=line,line=getLine(this,line),!line)return null}else if(n=lineNo(line),null==n)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}},addLineClass:docMethodOp(function(handle,where,cls){return changeLine(this,handle,"gutter"==where?"gutter":"class",function(line){var prop="text"==where?"textClass":"background"==where?"bgClass":"gutter"==where?"gutterClass":"wrapClass";if(line[prop]){if(classTest(cls).test(line[prop]))return!1;line[prop]+=" "+cls}else line[prop]=cls;return!0})}),removeLineClass:docMethodOp(function(handle,where,cls){return changeLine(this,handle,"gutter"==where?"gutter":"class",function(line){var prop="text"==where?"textClass":"background"==where?"bgClass":"gutter"==where?"gutterClass":"wrapClass",cur=line[prop];if(!cur)return!1;if(null==cls)line[prop]=null;else{var found=cur.match(classTest(cls));if(!found)return!1;var end=found.index+found[0].length;line[prop]=cur.slice(0,found.index)+(found.index&&end!=cur.length?" ":"")+cur.slice(end)||null}return!0})}),addLineWidget:docMethodOp(function(handle,node,options){return addLineWidget(this,handle,node,options)}),removeLineWidget:function(widget){widget.clear()},markText:function(from,to,options){return markText(this,clipPos(this,from),clipPos(this,to),options,options&&options.type||"range")},setBookmark:function(pos,options){var realOpts={replacedWith:options&&(null==options.nodeType?options.widget:options),insertLeft:options&&options.insertLeft,clearWhenEmpty:!1,shared:options&&options.shared,handleMouseEvents:options&&options.handleMouseEvents};return pos=clipPos(this,pos),markText(this,pos,pos,realOpts,"bookmark")},findMarksAt:function(pos){pos=clipPos(this,pos);var markers=[],spans=getLine(this,pos.line).markedSpans;if(spans)for(var i=0;i<spans.length;++i){var span=spans[i];(null==span.from||span.from<=pos.ch)&&(null==span.to||span.to>=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$$1=from.line;return this.iter(from.line,to.line+1,function(line){var spans=line.markedSpans;if(spans)for(var i=0;i<spans.length;i++){var span=spans[i];null!=span.to&&lineNo$$1==from.line&&from.ch>=span.to||null==span.from&&lineNo$$1!=from.line||null!=span.from&&lineNo$$1==to.line&&span.from>=to.ch||filter&&!filter(span.marker)||found.push(span.marker.parent||span.marker)}++lineNo$$1}),found},getAllMarks:function(){var markers=[];return this.iter(function(line){var sps=line.markedSpans;if(sps)for(var i=0;i<sps.length;++i)null!=sps[i].from&&markers.push(sps[i].marker)}),markers},posFromIndex:function(off){var ch,lineNo$$1=this.first,sepSize=this.lineSeparator().length;return this.iter(function(line){var sz=line.text.length+sepSize;return sz>off?(ch=off,!0):(off-=sz,void++lineNo$$1)}),clipPos(this,Pos(lineNo$$1,ch))},indexFromPos:function(coords){coords=clipPos(this,coords);var index=coords.ch;if(coords.line<this.first||coords.ch<0)return 0;var sepSize=this.lineSeparator().length;return this.iter(this.first,coords.line,function(line){index+=line.text.length+sepSize}),index},copy:function(copyHistory){var doc=new Doc(getLines(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep,this.direction);return doc.scrollTop=this.scrollTop,doc.scrollLeft=this.scrollLeft,doc.sel=this.sel,doc.extend=!1,copyHistory&&(doc.history.undoDepth=this.history.undoDepth,doc.setHistory(this.getHistory())),doc},linkedDoc:function(options){options||(options={});var from=this.first,to=this.first+this.size;null!=options.from&&options.from>from&&(from=options.from),null!=options.to&&options.to<to&&(to=options.to);var copy=new Doc(getLines(this,from,to),options.mode||this.modeOption,from,this.lineSep,this.direction);return options.sharedHist&&(copy.history=this.history),(this.linked||(this.linked=[])).push({doc:copy,sharedHist:options.sharedHist
}),copy.linked=[{doc:this,isParent:!0,sharedHist:options.sharedHist}],copySharedMarkers(copy,findSharedMarkers(this)),copy},unlinkDoc:function(other){if(other instanceof CodeMirror&&(other=other.doc),this.linked)for(var i=0;i<this.linked.length;++i){var link=this.linked[i];if(link.doc==other){this.linked.splice(i,1),other.unlinkDoc(this),detachSharedMarkers(findSharedMarkers(this));break}}if(other.history==this.history){var splitIds=[other.id];linkedDocs(other,function(doc){return splitIds.push(doc.id)},!0),other.history=new History(null),other.history.done=copyHistoryArray(this.history.done,splitIds),other.history.undone=copyHistoryArray(this.history.undone,splitIds)}},iterLinkedDocs:function(f){linkedDocs(this,f)},getMode:function(){return this.mode},getEditor:function(){return this.cm},splitLines:function(str){return this.lineSep?str.split(this.lineSep):splitLinesAuto(str)},lineSeparator:function(){return this.lineSep||"\n"},setDirection:docMethodOp(function(dir){"rtl"!=dir&&(dir="ltr"),dir!=this.direction&&(this.direction=dir,this.iter(function(line){return line.order=null}),this.cm&&directionChanged(this.cm))})}),Doc.prototype.eachLine=Doc.prototype.iter;for(var lastDrop=0,globalsRegistered=!1,keyNames={3:"Pause",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",145:"ScrollLock",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"},i=0;i<10;i++)keyNames[i+48]=keyNames[i+96]=String(i);for(var i$1=65;i$1<=90;i$1++)keyNames[i$1]=String.fromCharCode(i$1);for(var i$2=1;i$2<=12;i$2++)keyNames[i$2+111]=keyNames[i$2+63235]="F"+i$2;var keyMap={};keyMap.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"},keyMap.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"},keyMap.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","Ctrl-O":"openLine"},keyMap.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"]},keyMap["default"]=mac?keyMap.macDefault:keyMap.pcDefault;var commands={selectAll:selectAll,singleSelection:function(cm){return cm.setSelection(cm.getCursor("anchor"),cm.getCursor("head"),sel_dontScroll)},killLine:function(cm){return deleteNearSelection(cm,function(range){if(range.empty()){var len=getLine(cm.doc,range.head.line).text.length;return range.head.ch==len&&range.head.line<cm.lastLine()?{from:range.head,to:Pos(range.head.line+1,0)}:{from:range.head,to:Pos(range.head.line,len)}}return{from:range.from(),to:range.to()}})},deleteLine:function(cm){return deleteNearSelection(cm,function(range){return{from:Pos(range.from().line,0),to:clipPos(cm.doc,Pos(range.to().line+1,0))}})},delLineLeft:function(cm){return deleteNearSelection(cm,function(range){return{from:Pos(range.from().line,0),to:range.from()}})},delWrappedLineLeft:function(cm){return deleteNearSelection(cm,function(range){var top=cm.charCoords(range.head,"div").top+5,leftPos=cm.coordsChar({left:0,top:top},"div");return{from:leftPos,to:range.from()}})},delWrappedLineRight:function(cm){return deleteNearSelection(cm,function(range){var top=cm.charCoords(range.head,"div").top+5,rightPos=cm.coordsChar({left:cm.display.lineDiv.offsetWidth+100,top:top},"div");return{from:range.from(),to:rightPos}})},undo:function(cm){return cm.undo()},redo:function(cm){return cm.redo()},undoSelection:function(cm){return cm.undoSelection()},redoSelection:function(cm){return cm.redoSelection()},goDocStart:function(cm){return cm.extendSelection(Pos(cm.firstLine(),0))},goDocEnd:function(cm){return cm.extendSelection(Pos(cm.lastLine()))},goLineStart:function(cm){return cm.extendSelectionsBy(function(range){return lineStart(cm,range.head.line)},{origin:"+move",bias:1})},goLineStartSmart:function(cm){return cm.extendSelectionsBy(function(range){return lineStartSmart(cm,range.head)},{origin:"+move",bias:1})},goLineEnd:function(cm){return cm.extendSelectionsBy(function(range){return lineEnd(cm,range.head.line)},{origin:"+move",bias:-1})},goLineRight:function(cm){return cm.extendSelectionsBy(function(range){var top=cm.cursorCoords(range.head,"div").top+5;return cm.coordsChar({left:cm.display.lineDiv.offsetWidth+100,top:top},"div")},sel_move)},goLineLeft:function(cm){return cm.extendSelectionsBy(function(range){var top=cm.cursorCoords(range.head,"div").top+5;return cm.coordsChar({left:0,top:top},"div")},sel_move)},goLineLeftSmart:function(cm){return cm.extendSelectionsBy(function(range){var top=cm.cursorCoords(range.head,"div").top+5,pos=cm.coordsChar({left:0,top:top},"div");return pos.ch<cm.getLine(pos.line).search(/\S/)?lineStartSmart(cm,range.head):pos},sel_move)},goLineUp:function(cm){return cm.moveV(-1,"line")},goLineDown:function(cm){return cm.moveV(1,"line")},goPageUp:function(cm){return cm.moveV(-1,"page")},goPageDown:function(cm){return cm.moveV(1,"page")},goCharLeft:function(cm){return cm.moveH(-1,"char")},goCharRight:function(cm){return cm.moveH(1,"char")},goColumnLeft:function(cm){return cm.moveH(-1,"column")},goColumnRight:function(cm){return cm.moveH(1,"column")},goWordLeft:function(cm){return cm.moveH(-1,"word")},goGroupRight:function(cm){return cm.moveH(1,"group")},goGroupLeft:function(cm){return cm.moveH(-1,"group")},goWordRight:function(cm){return cm.moveH(1,"word")},delCharBefore:function(cm){return cm.deleteH(-1,"char")},delCharAfter:function(cm){return cm.deleteH(1,"char")},delWordBefore:function(cm){return cm.deleteH(-1,"word")},delWordAfter:function(cm){return cm.deleteH(1,"word")},delGroupBefore:function(cm){return cm.deleteH(-1,"group")},delGroupAfter:function(cm){return cm.deleteH(1,"group")},indentAuto:function(cm){return cm.indentSelection("smart")},indentMore:function(cm){return cm.indentSelection("add")},indentLess:function(cm){return cm.indentSelection("subtract")},insertTab:function(cm){return cm.replaceSelection("\t")},insertSoftTab:function(cm){for(var spaces=[],ranges=cm.listSelections(),tabSize=cm.options.tabSize,i=0;i<ranges.length;i++){var pos=ranges[i].from(),col=countColumn(cm.getLine(pos.line),pos.ch,tabSize);spaces.push(spaceStr(tabSize-col%tabSize))}cm.replaceSelections(spaces)},defaultTab:function(cm){cm.somethingSelected()?cm.indentSelection("add"):cm.execCommand("insertTab")},transposeChars:function(cm){return runInOp(cm,function(){for(var ranges=cm.listSelections(),newSel=[],i=0;i<ranges.length;i++)if(ranges[i].empty()){var cur=ranges[i].head,line=getLine(cm.doc,cur.line).text;if(line)if(cur.ch==line.length&&(cur=new Pos(cur.line,cur.ch-1)),cur.ch>0)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;prev&&(cur=new Pos(cur.line,1),cm.replaceRange(line.charAt(0)+cm.doc.lineSeparator()+prev.charAt(prev.length-1),Pos(cur.line-1,prev.length-1),cur,"+transpose"))}newSel.push(new Range(cur,cur))}cm.setSelections(newSel)})},newlineAndIndent:function(cm){return runInOp(cm,function(){for(var sels=cm.listSelections(),i=sels.length-1;i>=0;i--)cm.replaceRange(cm.doc.lineSeparator(),sels[i].anchor,sels[i].head,"+input");sels=cm.listSelections();for(var i$1=0;i$1<sels.length;i$1++)cm.indentLine(sels[i$1].from().line,null,!0);ensureCursorVisible(cm)})},openLine:function(cm){return cm.replaceSelection("\n","start")},toggleOverwrite:function(cm){return cm.toggleOverwrite()}},stopSeq=new Delayed,lastStoppedKey=null,DOUBLECLICK_DELAY=400,PastClick=function(time,pos,button){this.time=time,this.pos=pos,this.button=button};PastClick.prototype.compare=function(time,pos,button){return this.time+DOUBLECLICK_DELAY>time&&0==cmp(pos,this.pos)&&button==this.button};var lastClick,lastDoubleClick,Init={toString:function(){return"CodeMirror.Init"}},defaults={},optionHandlers={};CodeMirror.defaults=defaults,CodeMirror.optionHandlers=optionHandlers;var initHooks=[];CodeMirror.defineInitHook=function(f){return initHooks.push(f)};var lastCopied=null,ContentEditableInput=function(cm){this.cm=cm,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new Delayed,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};ContentEditableInput.prototype.init=function(display){function onCopyCut(e){if(!signalDOMEvent(cm,e)){if(cm.somethingSelected())setLastCopied({lineWise:!1,text:cm.getSelections()}),"cut"==e.type&&cm.replaceSelection("",null,"cut");else{if(!cm.options.lineWiseCopyCut)return;var ranges=copyableRanges(cm);setLastCopied({lineWise:!0,text:ranges.text}),"cut"==e.type&&cm.operation(function(){cm.setSelections(ranges.ranges,0,sel_dontScroll),cm.replaceSelection("",null,"cut")})}if(e.clipboardData){e.clipboardData.clearData();var content=lastCopied.text.join("\n");if(e.clipboardData.setData("Text",content),e.clipboardData.getData("Text")==content)return void e.preventDefault()}var kludge=hiddenTextarea(),te=kludge.firstChild;cm.display.lineSpace.insertBefore(kludge,cm.display.lineSpace.firstChild),te.value=lastCopied.text.join("\n");var hadFocus=document.activeElement;selectInput(te),setTimeout(function(){cm.display.lineSpace.removeChild(kludge),hadFocus.focus(),hadFocus==div&&input.showPrimarySelection()},50)}}var this$1=this,input=this,cm=input.cm,div=input.div=display.lineDiv;disableBrowserMagic(div,cm.options.spellcheck),on(div,"paste",function(e){signalDOMEvent(cm,e)||handlePaste(e,cm)||ie_version<=11&&setTimeout(operation(cm,function(){return this$1.updateFromDOM()}),20)}),on(div,"compositionstart",function(e){this$1.composing={data:e.data,done:!1}}),on(div,"compositionupdate",function(e){this$1.composing||(this$1.composing={data:e.data,done:!1})}),on(div,"compositionend",function(e){this$1.composing&&(e.data!=this$1.composing.data&&this$1.readFromDOMSoon(),this$1.composing.done=!0)}),on(div,"touchstart",function(){return input.forceCompositionEnd()}),on(div,"input",function(){this$1.composing||this$1.readFromDOMSoon()}),on(div,"copy",onCopyCut),on(div,"cut",onCopyCut)},ContentEditableInput.prototype.prepareSelection=function(){var result=prepareSelection(this.cm,!1);return result.focus=this.cm.state.focused,result},ContentEditableInput.prototype.showSelection=function(info,takeFocus){info&&this.cm.display.view.length&&((info.focus||takeFocus)&&this.showPrimarySelection(),this.showMultipleSelections(info))},ContentEditableInput.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},ContentEditableInput.prototype.showPrimarySelection=function(){var sel=this.getSelection(),cm=this.cm,prim=cm.doc.sel.primary(),from=prim.from(),to=prim.to();if(cm.display.viewTo==cm.display.viewFrom||from.line>=cm.display.viewTo||to.line<cm.display.viewFrom)return void sel.removeAllRanges();var curAnchor=domToPos(cm,sel.anchorNode,sel.anchorOffset),curFocus=domToPos(cm,sel.focusNode,sel.focusOffset);if(!curAnchor||curAnchor.bad||!curFocus||curFocus.bad||0!=cmp(minPos(curAnchor,curFocus),from)||0!=cmp(maxPos(curAnchor,curFocus),to)){var view=cm.display.view,start=from.line>=cm.display.viewFrom&&posToDOM(cm,from)||{node:view[0].measure.map[2],offset:0},end=to.line<cm.display.viewTo&&posToDOM(cm,to);if(!end){var measure=view[view.length-1].measure,map$$1=measure.maps?measure.maps[measure.maps.length-1]:measure.map;end={node:map$$1[map$$1.length-1],offset:map$$1[map$$1.length-2]-map$$1[map$$1.length-3]}}if(!start||!end)return void sel.removeAllRanges();var old=sel.rangeCount&&sel.getRangeAt(0),rng;try{rng=range(start.node,start.offset,end.offset,end.node)}catch(e){}rng&&(!gecko&&cm.state.focused?(sel.collapse(start.node,start.offset),rng.collapsed||(sel.removeAllRanges(),sel.addRange(rng))):(sel.removeAllRanges(),sel.addRange(rng)),old&&null==sel.anchorNode?sel.addRange(old):gecko&&this.startGracePeriod()),this.rememberSelection()}},ContentEditableInput.prototype.startGracePeriod=function(){var this$1=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){this$1.gracePeriod=!1,this$1.selectionChanged()&&this$1.cm.operation(function(){return this$1.cm.curOp.selectionChanged=!0})},20)},ContentEditableInput.prototype.showMultipleSelections=function(info){removeChildrenAndAdd(this.cm.display.cursorDiv,info.cursors),removeChildrenAndAdd(this.cm.display.selectionDiv,info.selection)},ContentEditableInput.prototype.rememberSelection=function(){var sel=this.getSelection();this.lastAnchorNode=sel.anchorNode,this.lastAnchorOffset=sel.anchorOffset,this.lastFocusNode=sel.focusNode,this.lastFocusOffset=sel.focusOffset},ContentEditableInput.prototype.selectionInEditor=function(){var sel=this.getSelection();if(!sel.rangeCount)return!1;var node=sel.getRangeAt(0).commonAncestorContainer;return contains(this.div,node)},ContentEditableInput.prototype.focus=function(){"nocursor"!=this.cm.options.readOnly&&(this.selectionInEditor()||this.showSelection(this.prepareSelection(),!0),this.div.focus())},ContentEditableInput.prototype.blur=function(){this.div.blur()},ContentEditableInput.prototype.getField=function(){return this.div},ContentEditableInput.prototype.supportsTouch=function(){return!0},ContentEditableInput.prototype.receivedFocus=function(){function poll(){input.cm.state.focused&&(input.pollSelection(),input.polling.set(input.cm.options.pollInterval,poll))}var input=this;this.selectionInEditor()?this.pollSelection():runInOp(this.cm,function(){return input.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,poll)},ContentEditableInput.prototype.selectionChanged=function(){var sel=this.getSelection();return sel.anchorNode!=this.lastAnchorNode||sel.anchorOffset!=this.lastAnchorOffset||sel.focusNode!=this.lastFocusNode||sel.focusOffset!=this.lastFocusOffset},ContentEditableInput.prototype.pollSelection=function(){if(null==this.readDOMTimeout&&!this.gracePeriod&&this.selectionChanged()){var sel=this.getSelection(),cm=this.cm;if(android&&chrome&&this.cm.options.gutters.length&&isInGutter(sel.anchorNode))return this.cm.triggerOnKeyDown({type:"keydown",keyCode:8,preventDefault:Math.abs}),this.blur(),void this.focus();if(!this.composing){this.rememberSelection();var anchor=domToPos(cm,sel.anchorNode,sel.anchorOffset),head=domToPos(cm,sel.focusNode,sel.focusOffset);anchor&&head&&runInOp(cm,function(){setSelection(cm.doc,simpleSelection(anchor,head),sel_dontScroll),(anchor.bad||head.bad)&&(cm.curOp.selectionChanged=!0)})}}},ContentEditableInput.prototype.pollContent=function(){null!=this.readDOMTimeout&&(clearTimeout(this.readDOMTimeout),this.readDOMTimeout=null);var cm=this.cm,display=cm.display,sel=cm.doc.sel.primary(),from=sel.from(),to=sel.to();if(0==from.ch&&from.line>cm.firstLine()&&(from=Pos(from.line-1,getLine(cm.doc,from.line-1).length)),to.ch==getLine(cm.doc,to.line).text.length&&to.line<cm.lastLine()&&(to=Pos(to.line+1,0)),from.line<display.viewFrom||to.line>display.viewTo-1)return!1;var fromIndex,fromLine,fromNode;from.line==display.viewFrom||0==(fromIndex=findViewIndex(cm,from.line))?(fromLine=lineNo(display.view[0].line),fromNode=display.view[0].node):(fromLine=lineNo(display.view[fromIndex].line),fromNode=display.view[fromIndex-1].node.nextSibling);var toIndex=findViewIndex(cm,to.line),toLine,toNode;if(toIndex==display.view.length-1?(toLine=display.viewTo-1,toNode=display.lineDiv.lastChild):(toLine=lineNo(display.view[toIndex+1].line)-1,toNode=display.view[toIndex+1].node.previousSibling),!fromNode)return!1;for(var newText=cm.doc.splitLines(domTextBetween(cm,fromNode,toNode,fromLine,toLine)),oldText=getBetween(cm.doc,Pos(fromLine,0),Pos(toLine,getLine(cm.doc,toLine).text.length));newText.length>1&&oldText.length>1;)if(lst(newText)==lst(oldText))newText.pop(),oldText.pop(),toLine--;else{if(newText[0]!=oldText[0])break;newText.shift(),oldText.shift(),fromLine++}for(var cutFront=0,cutEnd=0,newTop=newText[0],oldTop=oldText[0],maxCutFront=Math.min(newTop.length,oldTop.length);cutFront<maxCutFront&&newTop.charCodeAt(cutFront)==oldTop.charCodeAt(cutFront);)++cutFront;for(var newBot=lst(newText),oldBot=lst(oldText),maxCutEnd=Math.min(newBot.length-(1==newText.length?cutFront:0),oldBot.length-(1==oldText.length?cutFront:0));cutEnd<maxCutEnd&&newBot.charCodeAt(newBot.length-cutEnd-1)==oldBot.charCodeAt(oldBot.length-cutEnd-1);)++cutEnd;if(1==newText.length&&1==oldText.length&&fromLine==from.line)for(;cutFront&&cutFront>from.ch&&newBot.charCodeAt(newBot.length-cutEnd-1)==oldBot.charCodeAt(oldBot.length-cutEnd-1);)cutFront--,cutEnd++;newText[newText.length-1]=newBot.slice(0,newBot.length-cutEnd).replace(/^\u200b+/,""),newText[0]=newText[0].slice(cutFront).replace(/\u200b+$/,"");var chFrom=Pos(fromLine,cutFront),chTo=Pos(toLine,oldText.length?lst(oldText).length-cutEnd:0);return newText.length>1||newText[0]||cmp(chFrom,chTo)?(replaceRange(cm.doc,newText,chFrom,chTo,"+input"),!0):void 0},ContentEditableInput.prototype.ensurePolled=function(){this.forceCompositionEnd()},ContentEditableInput.prototype.reset=function(){this.forceCompositionEnd()},ContentEditableInput.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},ContentEditableInput.prototype.readFromDOMSoon=function(){var this$1=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(this$1.readDOMTimeout=null,this$1.composing){if(!this$1.composing.done)return;this$1.composing=null}this$1.updateFromDOM()},80))},ContentEditableInput.prototype.updateFromDOM=function(){var this$1=this;!this.cm.isReadOnly()&&this.pollContent()||runInOp(this.cm,function(){return regChange(this$1.cm)})},ContentEditableInput.prototype.setUneditable=function(node){node.contentEditable="false"},ContentEditableInput.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||operation(this.cm,applyTextInput)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},ContentEditableInput.prototype.readOnlyChanged=function(val){this.div.contentEditable=String("nocursor"!=val)},ContentEditableInput.prototype.onContextMenu=function(){},ContentEditableInput.prototype.resetPosition=function(){},ContentEditableInput.prototype.needsContentAttribute=!0;var TextareaInput=function(cm){this.cm=cm,this.prevInput="",this.pollingFast=!1,this.polling=new Delayed,this.hasSelection=!1,this.composing=null};TextareaInput.prototype.init=function(display){function prepareCopyCut(e){if(!signalDOMEvent(cm,e)){if(cm.somethingSelected())setLastCopied({lineWise:!1,text:cm.getSelections()});else{if(!cm.options.lineWiseCopyCut)return;var ranges=copyableRanges(cm);setLastCopied({lineWise:!0,text:ranges.text}),"cut"==e.type?cm.setSelections(ranges.ranges,null,sel_dontScroll):(input.prevInput="",te.value=ranges.text.join("\n"),selectInput(te))}"cut"==e.type&&(cm.state.cutIncoming=!0)}}var this$1=this,input=this,cm=this.cm;this.createField(display);var te=this.textarea;display.wrapper.insertBefore(this.wrapper,display.wrapper.firstChild),ios&&(te.style.width="0px"),on(te,"input",function(){ie&&ie_version>=9&&this$1.hasSelection&&(this$1.hasSelection=null),input.poll()}),on(te,"paste",function(e){signalDOMEvent(cm,e)||handlePaste(e,cm)||(cm.state.pasteIncoming=!0,input.fastPoll())}),on(te,"cut",prepareCopyCut),on(te,"copy",prepareCopyCut),on(display.scroller,"paste",function(e){eventInWidget(display,e)||signalDOMEvent(cm,e)||(cm.state.pasteIncoming=!0,input.focus())}),on(display.lineSpace,"selectstart",function(e){eventInWidget(display,e)||e_preventDefault(e)}),on(te,"compositionstart",function(){var start=cm.getCursor("from");input.composing&&input.composing.range.clear(),input.composing={start:start,range:cm.markText(start,cm.getCursor("to"),{className:"CodeMirror-composing"})}}),on(te,"compositionend",function(){input.composing&&(input.poll(),input.composing.range.clear(),input.composing=null)})},TextareaInput.prototype.createField=function(_display){this.wrapper=hiddenTextarea(),this.textarea=this.wrapper.firstChild},TextareaInput.prototype.prepareSelection=function(){var cm=this.cm,display=cm.display,doc=cm.doc,result=prepareSelection(cm);if(cm.options.moveInputWithCursor){var headPos=cursorCoords(cm,doc.sel.primary().head,"div"),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},TextareaInput.prototype.showSelection=function(drawn){var cm=this.cm,display=cm.display;removeChildrenAndAdd(display.cursorDiv,drawn.cursors),removeChildrenAndAdd(display.selectionDiv,drawn.selection),null!=drawn.teTop&&(this.wrapper.style.top=drawn.teTop+"px",this.wrapper.style.left=drawn.teLeft+"px")},TextareaInput.prototype.reset=function(typing){if(!this.contextMenuPending&&!this.composing){var cm=this.cm;if(cm.somethingSelected()){this.prevInput="";var content=cm.getSelection();this.textarea.value=content,cm.state.focused&&selectInput(this.textarea),ie&&ie_version>=9&&(this.hasSelection=content)}else typing||(this.prevInput=this.textarea.value="",ie&&ie_version>=9&&(this.hasSelection=null))}},TextareaInput.prototype.getField=function(){return this.textarea},TextareaInput.prototype.supportsTouch=function(){return!1},TextareaInput.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!mobile||activeElt()!=this.textarea))try{this.textarea.focus()}catch(e){}},TextareaInput.prototype.blur=function(){this.textarea.blur()},TextareaInput.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},TextareaInput.prototype.receivedFocus=function(){this.slowPoll()},TextareaInput.prototype.slowPoll=function(){var this$1=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){this$1.poll(),this$1.cm.state.focused&&this$1.slowPoll()})},TextareaInput.prototype.fastPoll=function(){function p(){var changed=input.poll();changed||missed?(input.pollingFast=!1,input.slowPoll()):(missed=!0,input.polling.set(60,p))}var missed=!1,input=this;input.pollingFast=!0,input.polling.set(20,p)},TextareaInput.prototype.poll=function(){var this$1=this,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!1;var text=input.value;if(text==prevInput&&!cm.somethingSelected())return!1;if(ie&&ie_version>=9&&this.hasSelection===text||mac&&/[\uf700-\uf7ff]/.test(text))return cm.display.input.reset(),!1;if(cm.doc.sel==cm.display.selForContextMenu){var first=text.charCodeAt(0);if(8203!=first||prevInput||(prevInput="​"),8666==first)return this.reset(),this.cm.execCommand("undo")}for(var same=0,l=Math.min(prevInput.length,text.length);same<l&&prevInput.charCodeAt(same)==text.charCodeAt(same);)++same;return runInOp(cm,function(){applyTextInput(cm,text.slice(same),prevInput.length-same,null,this$1.composing?"*compose":null),text.length>1e3||text.indexOf("\n")>-1?input.value=this$1.prevInput="":this$1.prevInput=text,this$1.composing&&(this$1.composing.range.clear(),this$1.composing.range=cm.markText(this$1.composing.start,cm.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},TextareaInput.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},TextareaInput.prototype.onKeyPress=function(){ie&&ie_version>=9&&(this.hasSelection=null),this.fastPoll()},TextareaInput.prototype.onContextMenu=function(e){function prepareSelectAllHack(){if(null!=te.selectionStart){var selected=cm.somethingSelected(),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(){if(input.contextMenuPending==rehide&&(input.contextMenuPending=!1,input.wrapper.style.cssText=oldWrapperCSS,te.style.cssText=oldCSS,ie&&ie_version<9&&display.scrollbars.setScrollTop(display.scroller.scrollTop=scrollPos),null!=te.selectionStart)){(!ie||ie&&ie_version<9)&&prepareSelectAllHack();var i=0,poll=function(){display.selForContextMenu==cm.doc.sel&&0==te.selectionStart&&te.selectionEnd>0&&"​"==input.prevInput?operation(cm,selectAll)(cm):i++<10?display.detectingSelectAll=setTimeout(poll,500):(display.selForContextMenu=null,display.input.reset())};display.detectingSelectAll=setTimeout(poll,200)}}var input=this,cm=input.cm,display=cm.display,te=input.textarea;input.contextMenuPending&&input.contextMenuPending();var pos=posFromMouse(cm,e),scrollPos=display.scroller.scrollTop;if(pos&&!presto){var reset=cm.options.resetSelectionOnContextMenu;reset&&cm.doc.sel.contains(pos)==-1&&operation(cm,setSelection)(cm.doc,simpleSelection(pos),sel_dontScroll);var oldCSS=te.style.cssText,oldWrapperCSS=input.wrapper.style.cssText,wrapperBox=input.wrapper.offsetParent.getBoundingClientRect();input.wrapper.style.cssText="position: static",te.style.cssText="position: absolute; width: 30px; height: 30px;\n      top: "+(e.clientY-wrapperBox.top-5)+"px; left: "+(e.clientX-wrapperBox.left-5)+"px;\n      z-index: 1000; background: "+(ie?"rgba(255, 255, 255, .05)":"transparent")+";\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";var oldScrollY;if(webkit&&(oldScrollY=window.scrollY),display.input.focus(),webkit&&window.scrollTo(null,oldScrollY),display.input.reset(),cm.somethingSelected()||(te.value=input.prevInput=" "),input.contextMenuPending=rehide,display.selForContextMenu=cm.doc.sel,clearTimeout(display.detectingSelectAll),ie&&ie_version>=9&&prepareSelectAllHack(),captureRightClick){e_stop(e);var mouseup=function(){off(window,"mouseup",mouseup),setTimeout(rehide,20)};on(window,"mouseup",mouseup)}else setTimeout(rehide,50)}},TextareaInput.prototype.readOnlyChanged=function(val){val||this.reset(),this.textarea.disabled="nocursor"==val},TextareaInput.prototype.setUneditable=function(){},TextareaInput.prototype.needsContentAttribute=!1,defineOptions(CodeMirror),addEditorMethods(CodeMirror);var dontDelegate="iter insert remove copy getEditor constructor".split(" ");for(var prop in Doc.prototype)Doc.prototype.hasOwnProperty(prop)&&indexOf(dontDelegate,prop)<0&&(CodeMirror.prototype[prop]=function(method){return function(){return method.apply(this.doc,arguments)}}(Doc.prototype[prop]));return eventMixin(Doc),CodeMirror.inputStyles={textarea:TextareaInput,contenteditable:ContentEditableInput},CodeMirror.defineMode=function(name){CodeMirror.defaults.mode||"null"==name||(CodeMirror.defaults.mode=name),defineMode.apply(this,arguments)},CodeMirror.defineMIME=defineMIME,CodeMirror.defineMode("null",function(){return{token:function(stream){return stream.skipToEnd()}}}),CodeMirror.defineMIME("text/plain","null"),CodeMirror.defineExtension=function(name,func){CodeMirror.prototype[name]=func},CodeMirror.defineDocExtension=function(name,func){Doc.prototype[name]=func},CodeMirror.fromTextArea=fromTextArea,addLegacyProps(CodeMirror),CodeMirror.version="5.42.2",CodeMirror}),function(mod){mod(CodeMirror)}(function(CodeMirror){function forEach(arr,f){for(var i=0,e=arr.length;i<e;++i)f(arr[i])}function arrayContains(arr,item){if(!Array.prototype.indexOf){for(var i=arr.length;i--;)if(arr[i]===item)return!0;return!1}return arr.indexOf(item)!=-1}function scriptHint(editor,keywords,getToken,options){var cur=editor.getCursor(),token=getToken(editor,cur);if(!/\b(?:string)\b/.test(token.type)){token.state=CodeMirror.innerMode(editor.getMode(),token.state).state,/^[\w$_]*$/.test(token.string)?token.end>cur.ch&&(token.end=cur.ch,token.string=token.string.slice(0,cur.ch-token.start)):token={start:cur.ch,end:cur.ch,string:"",state:token.state,type:"."==token.string?"property":null};for(var tprop=token;"property"==tprop.type;){if(tprop=getToken(editor,Pos(cur.line,tprop.start)),"."!=tprop.string)return;if(tprop=getToken(editor,Pos(cur.line,tprop.start)),!context)var context=[];context.push(tprop)}return{list:getCompletions(token,context,keywords,options),from:Pos(cur.line,token.start),to:Pos(cur.line,token.end)}}}function getFormulaKeywords(){return BI.FormulaCollections}function formulaHint(editor,options){return scriptHint(editor,getFormulaKeywords(),function(e,cur){return e.getTokenAt(cur)},options)}function getCompletions(token,context,keywords,options){function maybeAdd(str){0!=str.lastIndexOf(start,0)||arrayContains(found,str)||found.push(str)}var found=[],start=token.string;return start?(context&&context.length?context.pop():forEach(keywords,maybeAdd),found):found}var Pos=CodeMirror.Pos;CodeMirror.registerHelper("hint","formula",formulaHint)}),function(mod){mod(CodeMirror)}(function(CodeMirror){"use strict";CodeMirror.defineMode("formula",function(){function wordObj(words){for(var o={},i=0,e=words.length;i<e;++i)o[words[i]]=!0;return o}function tokenBase(stream,state){if(stream.eatSpace())return null;var ch=stream.next();if('"'===ch||"'"===ch)return nextUntilUnescaped(stream,ch),"string";if("​"===ch)return nextUntilUnescaped(stream,ch),"field";if(/[\[\],\(\)]/.test(ch))return"bracket";if(/[+\-*\/=<>!&|]/.test(ch))return"operator";stream.eatWhile(/[\w-]/);var word=stream.current();return atoms.hasOwnProperty(word)?"atom":keywords.hasOwnProperty(word)?"keyword":null}function nextUntilUnescaped(stream,end){for(var escaped=!1,next;null!=(next=stream.next());){if(next===end&&!escaped)return!1;escaped=!escaped&&"\\"===next}return escaped}function tokenize(stream,state){return(state.tokens[0]||tokenBase)(stream,state)}var atoms=wordObj(["false","true"]),keywords=wordObj(BI.FormulaCollections);return{startState:function(){return{tokens:[]}},token:function(stream,state){return tokenize(stream,state)},fold:"brace"}}),CodeMirror.defineMIME("text/fx-formula","formula");
}),function(mod){mod(CodeMirror)}(function(CodeMirror){function bracketRegex(config){return config&&config.bracketRegex||/[(){}[\]]/}function findMatchingBracket(cm,where,config){var line=cm.getLineHandle(where.line),pos=where.ch-1,afterCursor=config&&config.afterCursor;null==afterCursor&&(afterCursor=/(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className));var re=bracketRegex(config),match=!afterCursor&&pos>=0&&re.test(line.text.charAt(pos))&&matching[line.text.charAt(pos)]||re.test(line.text.charAt(pos+1))&&matching[line.text.charAt(++pos)];if(!match)return null;var dir=">"==match.charAt(1)?1:-1;if(config&&config.strict&&dir>0!=(pos==where.ch))return null;var style=cm.getTokenTypeAt(Pos(where.line,pos+1)),found=scanForBracket(cm,Pos(where.line,pos+(dir>0?1:0)),dir,style||null,config);return null==found?null:{from:Pos(where.line,pos),to:found&&found.pos,match:found&&found.ch==match.charAt(0),forward:dir>0}}function scanForBracket(cm,where,dir,style,config){for(var maxScanLen=config&&config.maxScanLineLength||1e4,maxScanLines=config&&config.maxScanLines||1e3,stack=[],re=bracketRegex(config),lineEnd=dir>0?Math.min(where.line+maxScanLines,cm.lastLine()+1):Math.max(cm.firstLine()-1,where.line-maxScanLines),lineNo=where.line;lineNo!=lineEnd;lineNo+=dir){var line=cm.getLine(lineNo);if(line){var pos=dir>0?0:line.length-1,end=dir>0?line.length:-1;if(!(line.length>maxScanLen))for(lineNo==where.line&&(pos=where.ch-(dir<0?1:0));pos!=end;pos+=dir){var ch=line.charAt(pos);if(re.test(ch)&&(void 0===style||cm.getTokenTypeAt(Pos(lineNo,pos+1))==style)){var match=matching[ch];if(">"==match.charAt(1)==dir>0)stack.push(ch);else{if(!stack.length)return{pos:Pos(lineNo,pos),ch:ch};stack.pop()}}}}}return lineNo-dir!=(dir>0?cm.lastLine():cm.firstLine())&&null}function matchBrackets(cm,autoclear,config){for(var maxHighlightLen=cm.state.matchBrackets.maxHighlightLineLength||1e3,marks=[],ranges=cm.listSelections(),i=0;i<ranges.length;i++){var match=ranges[i].empty()&&findMatchingBracket(cm,ranges[i].head,config);if(match&&cm.getLine(match.from.line).length<=maxHighlightLen){var style=match.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";marks.push(cm.markText(match.from,Pos(match.from.line,match.from.ch+1),{className:style})),match.to&&cm.getLine(match.to.line).length<=maxHighlightLen&&marks.push(cm.markText(match.to,Pos(match.to.line,match.to.ch+1),{className:style}))}}if(marks.length){ie_lt8&&cm.state.focused&&cm.focus();var clear=function(){cm.operation(function(){for(var i=0;i<marks.length;i++)marks[i].clear()})};if(!autoclear)return clear;setTimeout(clear,800)}}function doMatchBrackets(cm){cm.operation(function(){cm.state.matchBrackets.currentlyHighlighted&&(cm.state.matchBrackets.currentlyHighlighted(),cm.state.matchBrackets.currentlyHighlighted=null),cm.state.matchBrackets.currentlyHighlighted=matchBrackets(cm,!1,cm.state.matchBrackets)})}var ie_lt8=/MSIE \d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),Pos=CodeMirror.Pos,matching={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};CodeMirror.defineOption("matchBrackets",!1,function(cm,val,old){var func=function(){var args=arguments;BI.defer(function(){doMatchBrackets.apply(null,args)})};old&&old!=CodeMirror.Init&&(cm.off("cursorActivity",func),cm.state.matchBrackets&&cm.state.matchBrackets.currentlyHighlighted&&(cm.state.matchBrackets.currentlyHighlighted(),cm.state.matchBrackets.currentlyHighlighted=null)),val&&(cm.state.matchBrackets="object"==typeof val?val:{},cm.on("cursorActivity",func))}),CodeMirror.defineExtension("matchBrackets",function(){matchBrackets(this,!0)}),CodeMirror.defineExtension("findMatchingBracket",function(pos,config,oldConfig){return(oldConfig||"boolean"==typeof config)&&(oldConfig?(oldConfig.strict=config,config=oldConfig):config=config?{strict:!0}:null),findMatchingBracket(this,pos,config)}),CodeMirror.defineExtension("scanForBracket",function(pos,dir,style,config){return scanForBracket(this,pos,dir,style,config)})}),function(mod){mod(CodeMirror)}(function(CodeMirror){"use strict";function Completion(cm,options){this.cm=cm,this.options=options,this.widget=null,this.debounce=0,this.tick=0,this.startPos=this.cm.getCursor("start"),this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var self=this;cm.on("cursorActivity",this.activityFunc=function(){self.cursorActivity()})}function parseOptions(cm,pos,options){var editor=cm.options.hintOptions,out={};for(var prop in defaultOptions)out[prop]=defaultOptions[prop];if(editor)for(var prop in editor)void 0!==editor[prop]&&(out[prop]=editor[prop]);if(options)for(var prop in options)void 0!==options[prop]&&(out[prop]=options[prop]);return out.hint.resolve&&(out.hint=out.hint.resolve(cm,pos)),out}function getText(completion){return"string"==typeof completion?completion:completion.text}function buildKeyMap(completion,handle){function addBinding(key,val){var bound;bound="string"!=typeof val?function(cm){return val(cm,handle)}:baseMap.hasOwnProperty(val)?baseMap[val]:val,ourMap[key]=bound}var baseMap={Up:function(){handle.moveFocus(-1)},Down:function(){handle.moveFocus(1)},PageUp:function(){handle.moveFocus(-handle.menuSize()+1,!0)},PageDown:function(){handle.moveFocus(handle.menuSize()-1,!0)},Home:function(){handle.setFocus(0)},End:function(){handle.setFocus(handle.length-1)},Enter:handle.pick,Tab:handle.pick,Esc:handle.close},custom=completion.options.customKeys,ourMap=custom?{}:baseMap;if(custom)for(var key in custom)custom.hasOwnProperty(key)&&addBinding(key,custom[key]);var extra=completion.options.extraKeys;if(extra)for(var key in extra)extra.hasOwnProperty(key)&&addBinding(key,extra[key]);return ourMap}function getHintElement(hintsElement,el){for(;el&&el!=hintsElement;){if("DIV"===el.nodeName.toUpperCase()&&el.parentNode==hintsElement)return el;el=el.parentNode}}function Widget(completion,data){this.completion=completion,this.data=data,this.picked=!1;var widget=this,cm=completion.cm,ownerDocument=cm.getInputField().ownerDocument,parentWindow=ownerDocument.defaultView||ownerDocument.parentWindow,hints=this.hints=ownerDocument.createElement("div"),hintsWidget=BI.createWidget({type:"bi.button_group",cls:"CodeMirror-hints bi-card",element:hints,layouts:[{type:"bi.vertical"}]});this.selectedHint=data.selectedHint||0;for(var completions=data.list,eltLists=[],i=0;i<completions.length;++i){var elt=ownerDocument.createElement("div"),cur=completions[i],eltObj={},className=HINT_ELEMENT_CLASS+(i!=this.selectedHint?"":" "+ACTIVE_HINT_ELEMENT_CLASS);null!=cur.className&&(className=cur.className+" "+className),eltObj=cur.render?BI.createWidget(cur.render(elt,data,cur)):BI.createWidget({type:"bi.single_select_item",cls:className,textAlign:"left",text:cur.displayText||getText(cur)}),eltObj.element[0].hintId=i,eltLists.push(eltObj)}hintsWidget.populate(eltLists);var pos=cm.cursorCoords(completion.options.alignWithWord?data.from:null),left=pos.left,top=pos.bottom,below=!0;hints.style.left=left+"px",hints.style.top=top+"px";var winW=parentWindow.innerWidth||Math.max(ownerDocument.body.offsetWidth,ownerDocument.documentElement.offsetWidth),winH=parentWindow.innerHeight||Math.max(ownerDocument.body.offsetHeight,ownerDocument.documentElement.offsetHeight);(completion.options.container||ownerDocument.body).appendChild(hints);var box=hints.getBoundingClientRect(),overlapY=box.bottom-winH,scrolls=hints.scrollHeight>hints.clientHeight+1,startScroll=cm.getScrollInfo();if(overlapY>0){var height=box.bottom-box.top,curTop=pos.top-(pos.bottom-box.top);if(curTop-height>0)hints.style.top=(top=pos.top-height)+"px",below=!1;else if(height>winH){hints.style.height=winH-5+"px",hints.style.top=(top=pos.bottom-box.top)+"px";var cursor=cm.getCursor();data.from.ch!=cursor.ch&&(pos=cm.cursorCoords(cursor),hints.style.left=(left=pos.left)+"px",box=hints.getBoundingClientRect())}}var overlapX=box.right-winW;if(overlapX>0&&(box.right-box.left>winW&&(hints.style.width=winW-5+"px",overlapX-=box.right-box.left-winW),hints.style.left=(left=pos.left-overlapX)+"px"),scrolls)for(var node=hints.firstChild;node;node=node.nextSibling)node.style.paddingRight=cm.display.nativeBarWidth+"px";if(cm.addKeyMap(this.keyMap=buildKeyMap(completion,{moveFocus:function(n,avoidWrap){widget.changeActive(widget.selectedHint+n,avoidWrap)},setFocus:function(n){widget.changeActive(n)},menuSize:function(){return widget.screenAmount()},length:completions.length,close:function(){completion.close()},pick:function(){widget.pick()},data:data})),completion.options.closeOnUnfocus){var closingOnBlur;cm.on("blur",this.onBlur=function(){closingOnBlur=setTimeout(function(){completion.close()},100)}),cm.on("focus",this.onFocus=function(){clearTimeout(closingOnBlur)})}return cm.on("scroll",this.onScroll=function(){var curScroll=cm.getScrollInfo(),editor=cm.getWrapperElement().getBoundingClientRect(),newTop=top+startScroll.top-curScroll.top,point=newTop-(parentWindow.pageYOffset||(ownerDocument.documentElement||ownerDocument.body).scrollTop);return below||(point+=hints.offsetHeight),point<=editor.top||point>=editor.bottom?completion.close():(hints.style.top=newTop+"px",void(hints.style.left=left+startScroll.left-curScroll.left+"px"))}),CodeMirror.on(hints,"dblclick",function(e){var t=getHintElement(hints,e.target||e.srcElement);t&&null!=t.hintId&&(widget.changeActive(t.hintId),widget.pick())}),CodeMirror.on(hints,"click",function(e){var t=getHintElement(hints,e.target||e.srcElement);t&&null!=t.hintId&&(widget.changeActive(t.hintId),completion.options.completeOnSingleClick&&widget.pick())}),CodeMirror.on(hints,"mousedown",function(){setTimeout(function(){cm.focus()},20)}),CodeMirror.signal(data,"select",completions[this.selectedHint],hints.childNodes[this.selectedHint]),!0}function applicableHelpers(cm,helpers){if(!cm.somethingSelected())return helpers;for(var result=[],i=0;i<helpers.length;i++)helpers[i].supportsSelection&&result.push(helpers[i]);return result}function fetchHints(hint,cm,options,callback){if(hint.async)hint(cm,callback,options);else{var result=hint(cm,options);result&&result.then?result.then(callback):callback(result)}}function resolveAutoHints(cm,pos){var helpers=cm.getHelpers(pos,"hint"),words;if(helpers.length){var resolved=function(cm,callback,options){function run(i){return i==app.length?callback(null):void fetchHints(app[i],cm,options,function(result){result&&result.list.length>0?callback(result):run(i+1)})}var app=applicableHelpers(cm,helpers);run(0)};return resolved.async=!0,resolved.supportsSelection=!0,resolved}return(words=cm.getHelper(cm.getCursor(),"hintWords"))?function(cm){return CodeMirror.hint.fromList(cm,{words:words})}:CodeMirror.hint.anyword?function(cm,options){return CodeMirror.hint.anyword(cm,options)}:function(){}}var HINT_ELEMENT_CLASS="CodeMirror-hint",ACTIVE_HINT_ELEMENT_CLASS="CodeMirror-hint-active";CodeMirror.showHint=function(cm,getHints,options){if(!getHints)return cm.showHint(options);options&&options.async&&(getHints.async=!0);var newOpts={hint:getHints};if(options)for(var prop in options)newOpts[prop]=options[prop];return cm.showHint(newOpts)},CodeMirror.defineExtension("showHint",function(options){options=parseOptions(this,this.getCursor("start"),options);var selections=this.listSelections();if(!(selections.length>1)){if(this.somethingSelected()){if(!options.hint.supportsSelection)return;for(var i=0;i<selections.length;i++)if(selections[i].head.line!=selections[i].anchor.line)return}this.state.completionActive&&this.state.completionActive.close();var completion=this.state.completionActive=new Completion(this,options);completion.options.hint&&(CodeMirror.signal(this,"startCompletion",this),completion.update(!0))}}),CodeMirror.defineExtension("closeHint",function(){this.state.completionActive&&this.state.completionActive.close()});var requestAnimationFrame=window.requestAnimationFrame||function(fn){return setTimeout(fn,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||clearTimeout;Completion.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.tick=null,this.cm.off("cursorActivity",this.activityFunc),this.widget&&this.data&&CodeMirror.signal(this.data,"close"),this.widget&&this.widget.close(),CodeMirror.signal(this.cm,"endCompletion",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(data,i){var completion=data.list[i];if(completion.hint)completion.hint(this.cm,data,completion);else if(this.cm.replaceRange(getText(completion).toUpperCase(),completion.from||data.from,completion.to||data.to,"complete"),completion.isKeyword===!0)this.cm.replaceSelection(" ");else{var to=this.cm.getCursor();this.cm.markText(completion.from||data.from,to,{className:"#function",atomic:!0}),this.cm.replaceSelection("()"),to=this.cm.getCursor(),to.ch=to.ch-1,this.cm.setCursor(to),this.cm.focus()}CodeMirror.signal(data,"pick",completion),this.close()},cursorActivity:function(){this.debounce&&(cancelAnimationFrame(this.debounce),this.debounce=0);var pos=this.cm.getCursor(),line=this.cm.getLine(pos.line);if(pos.line!=this.startPos.line||line.length-pos.ch!=this.startLen-this.startPos.ch||pos.ch<this.startPos.ch||this.cm.somethingSelected()||!pos.ch||this.options.closeCharacters.test(line.charAt(pos.ch-1)))this.close();else{var self=this;this.debounce=requestAnimationFrame(function(){self.update()}),this.widget&&this.widget.disable()}},update:function(first){if(null!=this.tick){var self=this,myTick=++this.tick;fetchHints(this.options.hint,this.cm,this.options,function(data){self.tick==myTick&&self.finishUpdate(data,first)})}},finishUpdate:function(data,first){this.data&&CodeMirror.signal(this.data,"update");var picked=this.widget&&this.widget.picked||first&&this.options.completeSingle;this.widget&&this.widget.close(),this.data=data,data&&data.list.length&&(picked&&1==data.list.length?this.pick(data,0):(this.widget=new Widget(this,data),CodeMirror.signal(data,"shown")))}},Widget.prototype={close:function(){if(this.completion.widget==this){this.completion.widget=null,this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var cm=this.completion.cm;this.completion.options.closeOnUnfocus&&(cm.off("blur",this.onBlur),cm.off("focus",this.onFocus)),cm.off("scroll",this.onScroll)}},disable:function(){this.completion.cm.removeKeyMap(this.keyMap);var widget=this;this.keyMap={Enter:function(){widget.picked=!0}},this.completion.cm.addKeyMap(this.keyMap)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(i,avoidWrap){if(i>=this.data.list.length?i=avoidWrap?this.data.list.length-1:0:i<0&&(i=avoidWrap?0:this.data.list.length-1),this.selectedHint!=i){var node=this.hints.childNodes[this.selectedHint];node&&(node.className=node.className.replace(" "+ACTIVE_HINT_ELEMENT_CLASS,"")),node=this.hints.childNodes[this.selectedHint=i],node.className+=" "+ACTIVE_HINT_ELEMENT_CLASS,node.offsetTop<this.hints.scrollTop?this.hints.scrollTop=node.offsetTop-3:node.offsetTop+node.offsetHeight>this.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=node.offsetTop+node.offsetHeight-this.hints.clientHeight+3),CodeMirror.signal(this.data,"select",this.data.list[this.selectedHint],node)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},CodeMirror.registerHelper("hint","auto",{resolve:resolveAutoHints}),CodeMirror.registerHelper("hint","fromList",function(cm,options){var cur=cm.getCursor(),token=cm.getTokenAt(cur),term,from=CodeMirror.Pos(cur.line,token.start),to=cur;token.start<cur.ch&&/\w/.test(token.string.charAt(cur.ch-token.start-1))?term=token.string.substr(0,cur.ch-token.start):(term="",from=cur);for(var found=[],i=0;i<options.words.length;i++){var word=options.words[i];word.slice(0,term.length)==term&&found.push(word)}if(found.length)return{list:found,from:from,to:to}}),CodeMirror.commands.autocomplete=CodeMirror.showHint;var defaultOptions={hint:CodeMirror.hint.auto,completeSingle:!0,alignWithWord:!0,closeCharacters:/[\s()\[\]{};:>,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};CodeMirror.defineOption("hintOptions",null)}),BI.FormulaCollections=["abs","ABS","acos","ACOS","acosh","ACOSH","add2array","ADD2ARRAY","and","AND","array","ARRAY","asin","ASIN","asinh","ASINH","atan","ATAN","atan2","ATAN2","atanh","ATANH","average","AVERAGE","bitnot","BITNOT","bitoperation","BITOPERATION","ceiling","CEILING","char","CHAR","circular","CIRCULAR","class","CLASS","cnmoney","CNMONEY","code","CODE","col","COL","colcount","COLCOUNT","colname","COLNAME","combin","COMBIN","concatenate","CONCATENATE","correl","CORREL","cos","COS","cosh","COSH","count","COUNT","crosslayertotal","CROSSLAYERTOTAL","date","DATE","datedelta","DATEDELTA","datedif","DATEDIF","dateinmonth","DATEINMONTH","dateinquarter","DATEINQUARTER","dateinweek","DATEINWEEK","dateinyear","DATEINYEAR","datesubdate","DATESUBDATE","datetime","DATETIME","datetonumber","DATETONUMBER","day","DAY","days360","DAYS360","daysofmonth","DAYSOFMONTH","daysofquarter","DAYSOFQUARTER","daysofyear","DAYSOFYEAR","dayvalue","DAYVALUE","decimal","DECIMAL","decode","DECODE","degrees","DEGREES","encode","ENCODE","endwith","ENDWITH","enmoney","ENMONEY","ennumber","ENNUMBER","eval","EVAL","even","EVEN","exact","EXACT","exp","EXP","fact","FACT","fields","FIELDS","filename","FILENAME","filesize","FILESIZE","filetype","FILETYPE","find","FIND","floor","FLOOR","format","FORMAT","getuserdepartments","GETUSERDEPARTMENTS","getuserjobtitles","GETUSERJOBTITLES","greparray","GREPARRAY","hierarchy","HIERARCHY","hour","HOUR","i18n","I18N","if","IF","inarray","INARRAY","index","INDEX","indexof","INDEXOF","indexofarray","INDEXOFARRAY","int","INT","isnull","ISNULL","joinarray","JOINARRAY","jvm","JVM","layertotal","LAYERTOTAL","left","LEFT","len","LEN","let","LET","ln","LN","log","LOG","log10","LOG10","lower","LOWER","lunar","LUNAR","map","MAP","maparray","MAPARRAY","max","MAX","median","MEDIAN","mid","MID","min","MIN","minute","MINUTE","mod","MOD","mom","MOM","month","MONTH","monthdelta","MONTHDELTA","now","NOW","numto","NUMTO","nvl","NVL","odd","ODD","or","OR","pi","PI","power","POWER","product","PRODUCT","promotion","PROMOTION","proper","PROPER","proportion","PROPORTION","radians","RADIANS","rand","RAND","randbetween","RANDBETWEEN","range","RANGE","rank","RANK","records","RECORDS","regexp","REGEXP","removearray","REMOVEARRAY","repeat","REPEAT","replace","REPLACE","reverse","REVERSE","reversearray","REVERSEARRAY","right","RIGHT","round","ROUND","round5","ROUND5","rounddown","ROUNDDOWN","roundup","ROUNDUP","row","ROW","rowcount","ROWCOUNT","second","SECOND","seq","SEQ","sign","SIGN","sin","SIN","sinh","SINH","slicearray","SLICEARRAY","sort","SORT","sortarray","SORTARRAY","split","SPLIT","sql","SQL","sqrt","SQRT","startwith","STARTWITH","stdev","STDEV","substitute","SUBSTITUTE","sum","SUM","sumsq","SUMSQ","switch","SWITCH","tabledatafields","TABLEDATAFIELDS","tabledatas","TABLEDATAS","tables","TABLES","tan","TAN","tanh","TANH","time","TIME","tobigdecimal","TOBIGDECIMAL","tobinary","TOBINARY","todate","TODATE","today","TODAY","todouble","TODOUBLE","tohex","TOHEX","toimage","TOIMAGE","tointeger","TOINTEGER","tooctal","TOOCTAL","totext","TOTEXT","treelayer","TREELAYER","trim","TRIM","trunc","TRUNC","uniquearray","UNIQUEARRAY","upper","UPPER","uuid","UUID","value","VALUE","webimage","WEBIMAGE","week","WEEK","weekdate","WEEKDATE","weekday","WEEKDAY","weightedaverage","WEIGHTEDAVERAGE","year","YEAR","yeardelta","YEARDELTA"],BI.RichEditorAction=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.RichEditorAction.superclass._defaultConfig.apply(this,arguments),{width:20,height:20,command:"",used:!0})},_init:function(){BI.RichEditorAction.superclass._init.apply(this,arguments);var self=this,o=this.options;o.editor.on(BI.NicEditor.EVENT_SELECTED,function(e){BI.defer(function(){if(o.used===!0){var focus=window.getSelection().focusNode;self.setEnable(!0),self.checkNodes(focus||e.target),self.key(e)}})})},checkNodes:function(e){if(!e)return!1;var elm=e,self=this;do if(this.options.tags&&this.options.tags.contains(elm.nodeName))return this.activate(),!0;while(elm=elm.parentNode&&elm.className&&elm.className.indexOf("bi-nic-editor")>=-1);for(elm=e;3==elm.nodeType;)elm=elm.parentNode;if(this.options.css)for(var itm in this.options.css){if(null==this.options.css[itm])return this.activate(self._getDomStyle(elm,itm),e),!0;if(BI.$(elm).css(itm)==this.options.css[itm])return this.activate(),!0}return this.deactivate(),!1},start:function(){},key:function(){},keydown:function(){},hideIf:function(e){},activate:function(){},deactivate:function(){},doCommand:function(args){this.options.editor.restoreRng(),this.options.command&&this.options.editor.nicCommand(this.options.command,args)},getValue:function(){},_getDomStyle:function(el,itm){var self=this,nodeStyle=BI.$(el).css(itm);if(el.children&&1===el.children.length)return self._getDomStyle(el.children[0],itm)||nodeStyle;var style=null;return BI.each(el.children,function(idx,child){if(""!==child.innerText){var s=self._getDomStyle(child,itm)||nodeStyle;style?style!==s&&(style=nodeStyle):style=s}}),style||nodeStyle}}),BI.RichEditorParamAction=BI.inherit(BI.RichEditorAction,{_defaultConfig:function(){return BI.extend(BI.RichEditorParamAction.superclass._defaultConfig.apply(this,arguments),{paramFormatter:function(v){return v}})},_init:function(){BI.RichEditorParamAction.superclass._init.apply(this,arguments)},addParam:function(param,encodeFn){var o=this.options,instance=o.editor.instance,image=new Image,name=o.paramFormatter(param),attrs=BI.DOM.getImage(name);image.src=attrs.src,image.alt=BI.isFunction(encodeFn)?encodeFn(param):param,BI.$(image).addClass("rich-editor-param"),BI.$(image).attr("style",attrs.style),BI.$(image).attr("name",window.encodeURIComponent(name)),instance.insertHTML(BI.$("<div>").append(image).html(),!0)}}),BI.RichEditorTextToolbar=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.RichEditorTextToolbar.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-rich-editor-text-toolbar",buttons:[{type:"bi.rich_editor_font_chooser"},{type:"bi.rich_editor_size_chooser"},{type:"bi.rich_editor_bold_button"},{type:"bi.rich_editor_italic_button"},{type:"bi.rich_editor_underline_button"},{type:"bi.rich_editor_color_chooser"},{type:"bi.rich_editor_background_color_chooser"},{type:"bi.rich_editor_align_left_button"},{type:"bi.rich_editor_align_center_button"},{type:"bi.rich_editor_align_right_button"},{type:"bi.rich_editor_param_button"}],height:34})},_init:function(){BI.RichEditorTextToolbar.superclass._init.apply(this,arguments);var self=this,o=this.options,buttons=BI.createWidgets(BI.map(o.buttons,function(i,btn){return BI.extend(btn,{editor:o.editor,height:24})}));BI.createWidget({type:"bi.horizontal",element:this,items:buttons,hgap:3,vgap:5})},mounted:function(){var self=this;BI.isIE9Below()&&(this.element.mousedown(function(){self._noSelect(self.element[0])}),this._noSelect(this.element[0]))},_noSelect:function(element){element.setAttribute&&"input"!=element.nodeName.toLowerCase()&&"textarea"!=element.nodeName.toLowerCase()&&element.setAttribute("unselectable","on");for(var i=0;i<element.childNodes.length;i++)this._noSelect(element.childNodes[i])}}),BI.shortcut("bi.rich_editor_text_toolbar",BI.RichEditorTextToolbar),!function(){function isIE11Below(){return!!BI.isIE()&&BI.getIEVersion()<11}function clearSelectionRange(){var selection=window.getSelection?window.getSelection():document.selection;selection.removeAllRanges()}BI.NicEditor=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.NicEditor.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-nic-editor",$testId:"bi-nic-editor"})},_init:function(){BI.NicEditor.superclass._init.apply(this,arguments);var o=this.options;BI.$(document).bind("mousedown."+this.getName(),BI.bind(this.selectCheck,this)),BI.createWidget({type:"bi.vertical",element:this,items:[this.instance=this.addInstance()]})},addInstance:function(){var o=this.options,conf={type:"bi.nic_editor_instance",ne:this,height:o.height,maxHeight:o.maxHeight?o.maxHeight:null,readOnly:o.readOnly,singleLine:o.singleLine};if(this.element[0].contentEditable||window.opera)var newInstance=BI.createWidget(conf);else console.error("不支持此浏览器");return newInstance},insertElem:function($elem){this.selectedInstance&&this.selectedInstance.insertElem($elem)},insertHTML:function(html){this.selectedInstance&&this.selectedInstance.insertHTML(html)},nicCommand:function(cmd,args){this.selectedInstance&&this.selectedInstance.nicCommand(cmd,args)},selectCheck:function(e){var t=e.target,self=this;do{if(t===this.instance.element[0])return;if(this.instance.checkToolbar(t))return void this.instance.saveRng()}while(t=t.parentNode);this.instance.saveRng(),this.fireEvent("blur",t),this.lastSelectedInstance=this.selectedInstance||this.lastSelectedInstance,this.selectedInstance=null},focus:function(){this.instance.focus()},bindToolbar:function(toolbar){this.instance.bindToolbar(toolbar)},setValue:function(v){v=v||(isIE11Below()?"":"<br>"),v=v.startWith("<p")?v:"<p>"+v,v=v.endWith("</p>")?v:v+"</p>",this.instance.setContent(v)},getValue:function(){return this.instance.getContent()},getContentHeight:function(){return this.instance.getContentHeight()},getInstance:function(){return this.instance},restoreRng:function(){this.selectedInstance=this.instance,this.selectedInstance.restoreRng()},destroyed:function(){clearSelectionRange(),BI.$(document).unbind("mousedown."+this.getName())}}),BI.NicEditor.EVENT_SELECTED="selected",BI.NicEditor.EVENT_BLUR="blur",BI.NicEditor.EVENT_FOCUS="focus",BI.NicEditor.EVENT_KEYDOWN="keydown",BI.NicEditor.EVENT_KEYUP="keyup",BI.shortcut("bi.nic_editor",BI.NicEditor);var prefix="niceditor-",attrWhiteList=["class","style","color","face","name","width","height","alt","src","align"],sizeMap={1:12,2:13,3:16,4:18,5:24,6:32,7:48},minFontSize=12,maxFontSize=128,pasteHandler={replaceHtmlSymbol:function(html){return null==html?"":html.replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;").replace(/(\r\n|\r|\n)/g,"<br/>")},_cleanBlockAttr:function(content,styleFilterConfig){function cleanNode(node){var jNode=BI.$(node),allAttributes=BI.map(node.attributes,function(idx,attribute){return attribute.nodeName});return jNode[0]&&"SCRIPT"===jNode[0].tagName?(jNode.destroy(),null):jNode[0]&&3===jNode[0].nodeType?jNode[0]:(BI.each(styleFilterConfig,function(style,value){if(value)if("fontSize"===style&&jNode[0].style&&jNode[0].style.fontSize){var size=jNode[0].style.fontSize,scale=size.indexOf("pt")>-1?4/3:1;jNode.css(style,BI.clamp(parseInt(size)*scale,minFontSize,maxFontSize)+"px")}else jNode.css(style,"")}),BI.each(allAttributes,function(idx,attribute){try{"size"===attribute&&"FONT"===jNode[0].tagName&&jNode.css("fontSize",sizeMap[jNode.attr("size")]),!BI.contains(attrWhiteList,attribute)&&jNode.removeAttr(attribute)}catch(error){}}),BI.each(node.children,function(idx,childNode){cleanNode(childNode)}),node)}return cleanNode(content)},_formatAttr:function(node){function formatAttr(node){return isIE&&node.style&&""!==node.style.textAlign&&(node.align=node.style.textAlign,node.style.textAlign=""),BI.each(node.children,function(idx,childNode){formatAttr(childNode)}),node}var isIE=BI.isIE();return formatAttr(node)},getPasteHtml:function(pasteContent,pasteText){return!pasteContent&&pasteText&&(pasteContent=BI.$("<p>"+pasteHandler.replaceHtmlSymbol(pasteText)+"</p>")),pasteContent?BI.reduce(pasteContent,function(node,result){var cleanNode=pasteHandler._cleanBlockAttr(node,{textAlign:!0,fontSize:!0,backgroundColor:!0,background:!0,backgroundImage:!0});return result+=(3===cleanNode.nodeType?cleanNode.nodeValue:cleanNode.outerHTML)||""},""):""},getFormatHtml:function(content){return BI.reduce(content,function(node,result){var cleanNode=pasteHandler._cleanBlockAttr(node,{fontSize:!0});return cleanNode=pasteHandler._formatAttr(cleanNode),result+=(3===cleanNode.nodeType?cleanNode.nodeValue:cleanNode.outerHTML)||""},"")}},nicEditorInstance=BI.inherit(BI.Layout,{isSelected:!1,_init:function(){nicEditorInstance.superclass._init.apply(this,arguments);var o=this.options,initValue=o.value||"<br>";initValue=initValue.startWith("<p>")?initValue:"<p>"+initValue+"</p>",this.ne=this.options.ne,this.elm=BI.createWidget({type:"bi.layout",width:o.width-8,scrollable:!1}),this.elm.element.css({minHeight:BI.isNumber(o.height)?o.height-8+"px":o.height,outline:"none",padding:"0 10px",wordBreak:"break-all"}).html(initValue),o.readOnly&&this.elm.element.attr("contentEditable",!1),this.element.css("maxHeight",o.maxHeight?o.maxHeight+"px":null),this.e=BI.createWidget({type:"bi.layout",invisible:!0,tagName:"textarea"}),BI.createWidget({type:"bi.default",element:this,scrolly:!0,items:[this.elm,this.e]}),this.ne.on("blur",BI.bind(this.blur,this)),this.start(),this.blur()},start:function(){this.elm.element.attr("contentEditable",this.options.readOnly!==!0),""==this.getContent(),this.instanceDoc=document.defaultView,this.elm.element.on("mousedown",BI.bind(this.selected,this)),this.elm.element.on("keydown",BI.bind(this.keyDown,this)),this.elm.element.on("focus",BI.bind(this.selected,this)),this.elm.element.on("blur",BI.bind(this.blur,this)),this.elm.element.on("keyup",BI.bind(this.selected,this)),this.elm.element.on("paste",BI.bind(this.paste,this)),this.ne.fireEvent("add")},getSel:function(){return window.getSelection?window.getSelection():document.selection},getRng:function(){var s=this.getSel();if(s&&0!==s.rangeCount)return s.rangeCount>0?s.getRangeAt(0):s.createRange()},getSavedRng:function(){return this.savedRange},selRng:function(rng,s){window.getSelection?(s.removeAllRanges(),s.addRange(rng)):rng.select()},selElm:function(){var r=this.getRng();if(r){if(r.startContainer){var contain=r.startContainer;if(1==r.cloneContents().childNodes.length)for(var i=0;i<contain.childNodes.length;i++){var rng=contain.childNodes[i].ownerDocument.createRange();if(rng.selectNode(contain.childNodes[i]),1!=r.compareBoundaryPoints(Range.START_TO_START,rng)&&r.compareBoundaryPoints(Range.END_TO_END,rng)!=-1)return contain.childNodes[i]}return contain}return"Control"==this.getSel().type?r.item(0):r.parentElement()}},saveRng:function(force){try{var range=this.getRng();if((!this._isChildOf(this.getSelectionContainerElem(range),this.element[0])||this.savedRange&&!this.savedRange.collapsed)&&!force)return;this.savedRange=range,this.savedSel=this.getSel()}catch(e){}},getSelectionContainerElem:function(range){if(range){var elem=range.commonAncestorContainer;return 1===elem.nodeType?elem:elem.parentNode}},setFocus:function(el){function getNodeLenght(el){var node=BI.$(el)[0];if(!node)return 0;switch(node.nodeType){case 7:case 10:return 0;case 3:case 8:return node.length;default:return node.childNodes.length}}try{el.focus()}catch(e){}if(window.getSelection){var nodeLenght=getNodeLenght(el),lastNode=BI.$(el).contents().last(),range=document.createRange();lastNode.is("br")?nodeLenght-=1:lastNode[0]||3===el.nodeType||(nodeLenght=0),BI.$(el).is("img")?range.setEndAfter(el,nodeLenght):range.setEnd(el,nodeLenght),range.collapse(!1);var sel=window.getSelection();sel.removeAllRanges(),sel.addRange(range)}else{var rng;try{el.focus()}catch(e){}rng=document.selection.createRange(),rng.moveStart("character",-el.innerText.length);for(var text=rng.text,i=0;i<el.innerText.length;i++)el.innerText.substring(0,i+1)==text.substring(text.length-i-1,text.length)&&(result=i+1)}},removeRng:function(){this.savedRange=null},restoreRng:function(){this.savedRange&&this.selRng(this.savedRange,this.savedSel),this.savedRange=null},restoreRngAndClearRange:function(){this.savedRange&&(this.savedRange.setStart(this.savedRange.endContainer,this.savedRange.endOffset),this.selRng(this.savedRange,this.savedSel))},keyDown:function(e,t){if(8===e.keyCode){var html=this.elm.element.html().toLowerCase().trim();if("<p><br></p>"===html||"<p></p>"===html)return void e.preventDefault();
}return 13===e.keyCode&&this.options.singleLine?void e.preventDefault():void this.ne.fireEvent("keydown",e)},selected:function(e){var t=e.target;if(t||(t=this.selElm())||(t=this.selElm()),!e.ctrlKey){var selInstance=this.ne.selectedInstance;selInstance!=this&&(selInstance&&this.ne.fireEvent("blur",e),this.ne.selectedInstance=this,this.ne.fireEvent("focus",e)),this.ne.fireEvent("selected",e),this.isFocused=!0,this.elm.element.addClass(prefix+"selected")}if(this.ne.fireEvent("keyup",e),8===e.keyCode){var newLine,html=this.elm.element.html().toLowerCase().trim();html&&"<br>"!==html||(newLine=BI.$(this._getNewLine()),this.elm.element.html(""),this.elm.element.append(newLine),this.setFocus(newLine[0]))}},focus:function(){var self=this;try{this.removeRng(),this.setFocus(this.elm.element[0]),this.nicCommand("selectAll")}catch(e){setTimeout(function(){self.focus()})}},blur:function(){this.isFocused=!1,this.elm.element.removeClass(prefix+"selected")},paste:function(e){var pasteHtml="",pasteText="";e.originalEvent.clipboardData&&!BI.isIE()&&(pasteHtml=e.originalEvent.clipboardData.getData("text/html"),pasteText=e.originalEvent.clipboardData.getData("text/plain")),pasteHtml&&(this.saveRng(),this.insertHTML(pasteHandler.getPasteHtml(BI.$(pasteHtml),pasteText)),e.preventDefault())},_pasteByBin:function(){var self=this,pasteBin=BI.$("<div contenteditable='true' />").addClass("bi-paste-bin").attr("tabIndex","-1").appendTo(this.element);this.savedRange=null,this.saveRng(!0),pasteBin.focus(),BI.defer(function(){self.restoreRng();var pasteContent=BI.$("<p />").append(pasteBin.contents()),pasteText=pasteBin[0].innerText,pasteHtml=pasteHandler.getPasteHtml(pasteContent,pasteText);try{self.insertHTML(pasteHtml)}catch(ex){self.insertHTML("<p>"+pasteText+"</p>")}pasteBin.remove()})},saveContent:function(){this.ne.fireEvent("save"),this.e.element.value(this.getContent())},getElm:function(){return this.elm},getContent:function(){return this.content=this.getElm().element.html(),this.ne.fireEvent("get"),this.content},getParseContent:function(){},getContentHeight:function(){return this.elm.element.height()},setContent:function(e){this.content=pasteHandler.getFormatHtml(BI.$(e)),this.ne.fireEvent("set"),this.elm.element.html(this.content)},insertElem:function($elem){var range=this.getRng();range.insertNode&&(range.deleteContents(),range.insertNode($elem))},insertHTML:function(html,force){function insert(html){if(range.insertNode){var nodes=BI.$(html);if(range.deleteContents(),range.startContainer&&range.endContainer&&range.endContainer===range.startContainer&&"BR"===range.startContainer.tagName)try{range.setStart(range.startContainer.parentNode,range.startContainer.parentNode.childNodes.length-1),range.setEnd(range.endContainer.parentNode,range.endContainer.parentNode.childNodes.length)}catch(e){range.setStart(range.startContainer.parentNode,0),range.setEnd(range.endContainer.parentNode,0)}for(var i=0;i<nodes.length;i++)range.insertNode(nodes[i]);range.endContainer&&(selection.removeAllRanges(),range.setStart(range.endContainer,range.endOffset),range.setEnd(range.endContainer,range.endOffset),selection.addRange(range))}else range.pasteHTML&&range.pasteHTML(html)}this.restoreRng();var selection=this.getSel(),range=this.savedRange||this.getRng();if(force)return insert(html);try{if(!document.queryCommandSupported("insertHTML"))throw new Error("Does not support this command");this.nicCommand("insertHTML",html)}catch(e){insert(html)}},bindToolbar:function(toolbar){this.toolbar=toolbar},checkToolbar:function(element){return this.toolbar&&this.toolbar.element[0]===element},nicCommand:function(cmd,args){document.execCommand(cmd,!1,args)},initSelection:function(newLine){var newLineHtml=this._getNewLine(),el=this.elm.element,children=el.children();if(!children.length)return el.append(newLineHtml),void this.initSelection();var last=children.last();if(newLine){var html=last.html().toLowerCase(),nodeName=last.nodeName;if("<br>"!==html&&"<br/>"!==html||"P"!==nodeName)return el.append(newLineHtml),void this.initSelection()}for(var lastNode=last[0],focus;lastNode;)focus=lastNode,lastNode=lastNode.childNodes?lastNode.childNodes[lastNode.childNodes.length-1]:null;this.setFocus(focus)},_getNewLine:function(){return isIE11Below()?"<p>&nbsp;</p>":"<p><br></p>"},_isChildOf:function(child,parent){var parentNode;if(child&&parent)for(parentNode=child.parentNode;parentNode;){if(parent===parentNode)return!0;parentNode=parentNode.parentNode}return!1}});BI.shortcut("bi.nic_editor_instance",nicEditorInstance)}(),BI.RichEditorBackgroundChooserTrigger=BI.inherit(BI.Widget,{_defaultConfig:function(){var conf=BI.RichEditorBackgroundChooserTrigger.superclass._defaultConfig.apply(this,arguments);return BI.extend(conf,{width:20,height:20})},_init:function(){BI.RichEditorBackgroundChooserTrigger.superclass._init.apply(this,arguments),this.font=BI.createWidget({type:"bi.icon_button",title:BI.i18nText("BI-Basic_Background_Color"),cls:"text-background-font"}),this.underline=BI.createWidget({type:"bi.icon_button",cls:"text-color-underline-font"}),BI.createWidget({type:"bi.absolute_center_adapt",element:this,items:[{el:this.underline},{el:this.font}]})},setValue:function(color){this.underline.element.css("color",color)},getValue:function(){return this.underline.element.css("color")}}),BI.shortcut("bi.rich_editor_background_color_chooser_trigger",BI.RichEditorBackgroundChooserTrigger),BI.RichEditorAlignCenterButton=BI.inherit(BI.RichEditorAction,{_defaultConfig:function(){return BI.extend(BI.RichEditorAlignCenterButton.superclass._defaultConfig.apply(this,arguments),{width:20,height:20,command:"justifycenter"})},_init:function(){BI.RichEditorAlignCenterButton.superclass._init.apply(this,arguments);var self=this,o=this.options;this.align=BI.createWidget({type:"bi.icon_button",element:this,forceNotSelected:!0,title:BI.i18nText("BI-Word_Align_Center"),height:o.height,width:o.width,cls:"text-toolbar-button bi-list-item-active text-align-center-font"}),this.align.on(BI.IconButton.EVENT_CHANGE,function(){self.doCommand()})},activate:function(){},deactivate:function(){}}),BI.shortcut("bi.rich_editor_align_center_button",BI.RichEditorAlignCenterButton),BI.RichEditorAlignLeftButton=BI.inherit(BI.RichEditorAction,{_defaultConfig:function(){return BI.extend(BI.RichEditorAlignLeftButton.superclass._defaultConfig.apply(this,arguments),{width:20,height:20,command:"justifyleft"})},_init:function(){BI.RichEditorAlignLeftButton.superclass._init.apply(this,arguments);var self=this,o=this.options;this.align=BI.createWidget({type:"bi.icon_button",element:this,forceNotSelected:!0,title:BI.i18nText("BI-Word_Align_Left"),height:o.height,width:o.width,cls:"text-toolbar-button bi-list-item-active text-align-left-font"}),this.align.on(BI.IconButton.EVENT_CHANGE,function(){self.doCommand()})},activate:function(){},deactivate:function(){}}),BI.shortcut("bi.rich_editor_align_left_button",BI.RichEditorAlignLeftButton),BI.RichEditorAlignRightButton=BI.inherit(BI.RichEditorAction,{_defaultConfig:function(){return BI.extend(BI.RichEditorAlignRightButton.superclass._defaultConfig.apply(this,arguments),{width:20,height:20,command:"justifyright"})},_init:function(){BI.RichEditorAlignRightButton.superclass._init.apply(this,arguments);var self=this,o=this.options;this.align=BI.createWidget({type:"bi.icon_button",element:this,forceNotSelected:!0,title:BI.i18nText("BI-Word_Align_Right"),height:o.height,width:o.width,cls:"text-toolbar-button bi-list-item-active text-align-right-font"}),this.align.on(BI.IconButton.EVENT_CHANGE,function(){self.doCommand()})},activate:function(){},deactivate:function(){}}),BI.shortcut("bi.rich_editor_align_right_button",BI.RichEditorAlignRightButton),BI.RichEditorBoldButton=BI.inherit(BI.RichEditorAction,{_defaultConfig:function(){return BI.extend(BI.RichEditorBoldButton.superclass._defaultConfig.apply(this,arguments),{width:20,height:20,command:"Bold",tags:["B","STRONG"],css:{}})},_init:function(){BI.RichEditorBoldButton.superclass._init.apply(this,arguments);var self=this,o=this.options;this.bold=BI.createWidget({type:"bi.icon_button",element:this,title:BI.i18nText("BI-Basic_Bold"),height:o.height,width:o.width,cls:"text-toolbar-button bi-list-item-active text-bold-font"}),this.bold.on(BI.IconButton.EVENT_CHANGE,function(){self.doCommand()})},checkNodes:function(e){var self=this;try{BI.defer(function(){document.queryCommandState("bold")?self.activate():self.deactivate()})}catch(error){BI.RichEditorBoldButton.superclass.checkNodes(e)}},activate:function(){this.bold.setSelected(!0)},deactivate:function(){this.bold.setSelected(!1)}}),BI.shortcut("bi.rich_editor_bold_button",BI.RichEditorBoldButton),BI.RichEditorItalicButton=BI.inherit(BI.RichEditorAction,{_defaultConfig:function(){return BI.extend(BI.RichEditorItalicButton.superclass._defaultConfig.apply(this,arguments),{width:20,height:20,command:"Italic",tags:["EM","I"],css:{fontStyle:"italic"}})},_init:function(){BI.RichEditorItalicButton.superclass._init.apply(this,arguments);var self=this,o=this.options;this.italic=BI.createWidget({type:"bi.icon_button",element:this,title:BI.i18nText("BI-Basic_Italic"),height:o.height,width:o.width,cls:"text-toolbar-button bi-list-item-active text-italic-font"}),this.italic.on(BI.IconButton.EVENT_CHANGE,function(){self.doCommand()})},checkNodes:function(e){var self=this;try{BI.defer(function(){document.queryCommandState("italic")?self.activate():self.deactivate()})}catch(error){BI.RichEditorBoldButton.superclass.checkNodes(e)}},activate:function(){this.italic.setSelected(!0)},deactivate:function(){this.italic.setSelected(!1)}}),BI.shortcut("bi.rich_editor_italic_button",BI.RichEditorItalicButton),BI.RichEditorParamButton=BI.inherit(BI.RichEditorParamAction,{_defaultConfig:function(){return BI.extend(BI.RichEditorParamButton.superclass._defaultConfig.apply(this,arguments),{width:20,height:30})},_init:function(){BI.RichEditorParamButton.superclass._init.apply(this,arguments);var self=this,o=this.options;this.param=BI.createWidget({type:"bi.button",element:this,level:"ignore",minWidth:0,text:BI.i18nText("BI-Formula_Insert"),height:o.height,width:o.width}),this.param.on(BI.Button.EVENT_CHANGE,function(){self.addParam("参数")})},activate:function(){},deactivate:function(){}}),BI.shortcut("bi.rich_editor_param_button",BI.RichEditorParamButton),BI.RichEditorUnderlineButton=BI.inherit(BI.RichEditorAction,{_defaultConfig:function(){return BI.extend(BI.RichEditorUnderlineButton.superclass._defaultConfig.apply(this,arguments),{width:20,height:20,command:"Underline",tags:["U"],css:{}})},_init:function(){BI.RichEditorUnderlineButton.superclass._init.apply(this,arguments);var self=this,o=this.options;this.underline=BI.createWidget({type:"bi.icon_button",element:this,title:BI.i18nText("BI-Basic_Underline"),height:o.height,width:o.width,cls:"text-toolbar-button bi-list-item-active text-underline-font"}),this.underline.on(BI.IconButton.EVENT_CHANGE,function(){self.doCommand()})},checkNodes:function(e){var self=this;try{BI.defer(function(){document.queryCommandState("underline")?self.activate():self.deactivate()})}catch(error){BI.RichEditorBoldButton.superclass.checkNodes(e)}},activate:function(){this.underline.setSelected(!0)},deactivate:function(){this.underline.setSelected(!1)}}),BI.shortcut("bi.rich_editor_underline_button",BI.RichEditorUnderlineButton),BI.RichEditorColorChooserTrigger=BI.inherit(BI.Widget,{_defaultConfig:function(){var conf=BI.RichEditorColorChooserTrigger.superclass._defaultConfig.apply(this,arguments);return BI.extend(conf,{width:20,height:20})},_init:function(){BI.RichEditorColorChooserTrigger.superclass._init.apply(this,arguments),this.font=BI.createWidget({type:"bi.icon_button",title:BI.i18nText("BI-Basic_Font_Color"),cls:"text-color-font"}),this.underline=BI.createWidget({type:"bi.icon_button",cls:"text-color-underline-font"}),BI.createWidget({type:"bi.absolute_center_adapt",element:this,items:[{el:this.underline},{el:this.font}]}),BI.isNotNull(this.options.value)&&this.setValue(this.options.value)},setValue:function(color){this.underline.element.css("color",color)},getValue:function(){return this.underline.element.css("color")}}),BI.shortcut("bi.rich_editor_color_chooser_trigger",BI.RichEditorColorChooserTrigger),BI.RichEditorBackgroundColorChooser=BI.inherit(BI.RichEditorAction,{_defaultConfig:function(){return BI.extend(BI.RichEditorBackgroundColorChooser.superclass._defaultConfig.apply(this,arguments),{width:20,height:20})},_init:function(){BI.RichEditorBackgroundColorChooser.superclass._init.apply(this,arguments);var self=this,o=this.options;this.colorchooser=BI.createWidget({type:"bi.color_chooser",container:null,element:this,width:o.width,height:o.height,el:{type:"bi.rich_editor_background_color_chooser_trigger",title:BI.i18nText("BI-Widget_Background_Colour"),cls:"text-toolbar-button"}}),this.colorchooser.on(BI.ColorChooser.EVENT_CHANGE,function(){var backgroundColor=this.getValue();self.fireEvent("EVENT_CHANGE",backgroundColor)})},hideIf:function(e){!this.colorchooser.element.find(e.target).length>0&&this.colorchooser.hideView()},deactivate:function(){}}),BI.shortcut("bi.rich_editor_background_color_chooser",BI.RichEditorBackgroundColorChooser),BI.RichEditorColorChooser=BI.inherit(BI.RichEditorAction,{_defaultConfig:function(){return BI.extend(BI.RichEditorColorChooser.superclass._defaultConfig.apply(this,arguments),{width:20,height:20,command:"foreColor",css:{color:null}})},_init:function(){BI.RichEditorColorChooser.superclass._init.apply(this,arguments);var self=this,o=this.options;this.colorchooser=BI.createWidget({type:"bi.color_chooser",container:null,element:this,width:o.width,height:o.height,el:{type:"bi.rich_editor_color_chooser_trigger",title:BI.i18nText("BI-Font_Colour"),cls:"text-toolbar-button"}}),this.colorchooser.on(BI.ColorChooser.EVENT_CHANGE,function(){var value=this.getValue();BI.isIE()?self.doCommand(value):(document.execCommand("styleWithCSS",null,!0),self.doCommand(value||"inherit"),document.execCommand("styleWithCSS",null,!1))})},hideIf:function(e){!this.colorchooser.element.find(e.target).length>0&&this.colorchooser.hideView()},activate:function(rgb){var self=this;BI.delay(function(){self.colorchooser.setValue(BI.DOM.rgb2hex(rgb))},0)},deactivate:function(){this.colorchooser.setValue("")}}),BI.shortcut("bi.rich_editor_color_chooser",BI.RichEditorColorChooser),BI.RichEditorFontChooser=BI.inherit(BI.RichEditorAction,{_defaultConfig:function(){return BI.extend(BI.RichEditorFontChooser.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-rich-editor-font-chooser bi-border bi-card",command:"FontName",width:100,height:24,css:{fontFamily:null},$testId:"bi-rich-editor-font-chooser"})},_init:function(){BI.RichEditorSizeChooser.superclass._init.apply(this,arguments);var self=this,o=this.options;this.trigger=BI.createWidget({type:"bi.text_trigger",height:o.height,triggerWidth:16,text:BI.i18nText("BI-Basic_Default")}),this.combo=BI.createWidget({type:"bi.combo",container:null,element:this,el:this.trigger,adjustLength:1,popup:{minWidth:70,el:{type:"bi.button_group",items:BI.createItems(BI.Constants.getConstant("bi.constant.materials.rich_editor.font_family"),{type:"bi.single_select_item"}),layouts:[{type:"bi.vertical"}]}}}),this.combo.on(BI.Combo.EVENT_CHANGE,function(){var val=this.getValue()[0];self.activate(val),self.doCommand(val),this.hideView(),this.setValue([])})},hideIf:function(e){!this.combo.element.find(e.target).length>0&&this.combo.hideView()},activate:function(fontFamily){var text=BI.i18nText("BI-Basic_Default");BI.any(BI.Constants.getConstant("bi.constant.materials.rich_editor.font_family"),function(idx,item){if(fontFamily===item.value)return text=item.text,!0}),this.fontFamily=fontFamily,this.trigger.setText(text),this.combo.setValue(fontFamily)},deactivate:function(){this.trigger.setText(BI.i18nText("BI-Basic_Default")),this.combo.setValue()},getValue:function(){return this.fontFamily||BI.FontFamily.DEFAULT}}),BI.shortcut("bi.rich_editor_font_chooser",BI.RichEditorFontChooser),BI.FontFamily={DEFAULT:'"Microsoft YaHei", PingFangSC-Regular',SIM_HEI:"STHeiti, Hei, SimHei",SIM_SUN:"STSong, Song, SimSun",FANG_SONG:'STFangSong, "Fang Song", FangSong',KAI_TI:"STKaiti, Kai, KaiTi",ARIAL:"Arial",HELVETICA_NEUE:'"Helvetica Neue"',VERDANA:"Verdana",TIMES_NEW_ROMAN:'"Times New Roman"'},BI.RichEditorSizeChooser=BI.inherit(BI.RichEditorAction,{_defaultConfig:function(){return BI.extend(BI.RichEditorSizeChooser.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-rich-editor-size-chooser bi-border bi-card",command:"FontSize",width:50,height:24,css:{fontSize:null},$testId:"bi-rich-editor-size-chooser"})},_items:[{value:12,text:12},{value:13,text:13},{value:14,text:14},{value:16,text:16},{value:18,text:18},{value:20,text:20},{value:22,text:22},{value:24,text:24},{value:26,text:26},{value:28,text:28},{value:30,text:30},{value:32,text:32},{value:34,text:34},{value:36,text:36},{value:38,text:38},{value:40,text:40},{value:64,text:64},{value:128,text:128}],_init:function(){BI.RichEditorSizeChooser.superclass._init.apply(this,arguments);var self=this,o=this.options;this.trigger=BI.createWidget({type:"bi.text_trigger",height:o.height,triggerWidth:16,text:BI.i18nText("BI-Font_Size")}),this.combo=BI.createWidget({type:"bi.combo",container:null,element:this,el:this.trigger,adjustLength:1,popup:{maxWidth:70,minWidth:70,el:{type:"bi.button_group",items:BI.createItems(this._items,{type:"bi.single_select_item"}),layouts:[{type:"bi.vertical"}]}}}),this.combo.on(BI.Combo.EVENT_CHANGE,function(){var val=this.getValue()[0];self.doAction(val),this.hideView(),this.setValue([])})},hideIf:function(e){!this.combo.element.find(e.target).length>0&&this.combo.hideView()},doAction:function(fontSize){function cleanFontSize(node){BI.$(node).css("font-size",""),BI.each(node.childNodes,function(idx,child){cleanFontSize(child)})}this.activate(fontSize);var editor=this.options.editor.instance,range=editor.getSavedRng(),commonSize=7;range&&!range.collapsed?(this.doCommand(commonSize),BI.each(document.getElementsByTagName("font"),function(idx,el){BI.contains(BI.$(el).parents(),editor.element[0])&&el.size==commonSize&&(cleanFontSize(el),BI.$(el).removeAttr("size").css("font-size",fontSize+"px"))})):editor.restoreRng()},activate:function(fontSize){fontSize+="";var size=fontSize.replace("px","");this.fontSize=size,this.trigger.setText(size),this.combo.setValue(BI.parseInt(size))},deactivate:function(){this.trigger.setText(BI.i18nText("BI-Font_Size")),this.combo.setValue()},getValue:function(){return this.fontSize||12}}),BI.shortcut("bi.rich_editor_size_chooser",BI.RichEditorSizeChooser),!function(){BI.constant("bi.constant.materials.rich_editor.font_family",[{value:BI.FontFamily.DEFAULT,text:BI.i18nText("BI-Basic_Default")},{value:BI.FontFamily.SIM_HEI,text:BI.i18nText("BI-Basic_Sim_Hei")},{value:BI.FontFamily.SIM_SUN,text:BI.i18nText("BI-Basic_Sim_Sun")},{value:BI.FontFamily.FANG_SONG,text:BI.i18nText("BI-Basic_Fang_Song")},{value:BI.FontFamily.KAI_TI,text:BI.i18nText("BI-Basic_Kai_Ti")},{value:BI.FontFamily.ARIAL,text:"Arial"},{value:BI.FontFamily.HELVETICA_NEUE,text:"Helvetica Neue"},{value:BI.FontFamily.VERDANA,text:"Verdana"},{value:BI.FontFamily.TIMES_NEW_ROMAN,text:"Times New Roman"}])}(),BI.RichEditor=BI.inherit(BI.Widget,{props:{baseCls:"bi-rich-editor bi-textarea",toolbar:{},readOnly:!1},_defaultConfig:function(){return BI.extend(BI.RichEditor.superclass._defaultConfig.apply(this,arguments),{adjustLength:1,adjustXOffset:0,adjustYOffset:0})},render:function(){var self=this,o=this.options,editor={type:"bi.nic_editor",width:o.width,height:o.height,readOnly:o.readOnly,ref:function(){self.editor=this},listeners:[{eventName:BI.NicEditor.EVENT_BLUR,action:function(){self.fireEvent(BI.RichEditor.EVENT_CONFIRM)}},{eventName:BI.NicEditor.EVENT_FOCUS,action:function(){o.readOnly||self.combo.isViewVisible()||self.combo.showView(),self.fireEvent(BI.RichEditor.EVENT_FOCUS)}}]};return o.readOnly?editor:(this.editor=BI.createWidget(editor),{type:"bi.combo",container:o.container,toggle:!1,trigger:"click",direction:"top,right",isNeedAdjustWidth:!1,isNeedAdjustHeight:!1,adjustLength:o.adjustLength,adjustXOffset:o.adjustXOffset,adjustYOffset:o.adjustYOffset,ref:function(){self.combo=this},el:this.editor,popup:{el:BI.extend({type:"bi.rich_editor_text_toolbar",editor:this.editor},o.toolbar,{ref:function(_ref){self.editor.bindToolbar(_ref),o.toolbar.ref&&o.toolbar.ref(_ref)}}),height:34,stopPropagation:!1,stopEvent:!1},listeners:[{eventName:BI.Combo.EVENT_AFTER_HIDEVIEW,action:function(){self.fireEvent(BI.RichEditor.EVENT_AFTER_HIDEVIEW)}}]})},mounted:function(){var o=this.options;BI.isNull(o.value)&&this.editor.setValue(o.value)},focus:function(){this.editor.focus()},setValue:function(v){this.editor.setValue(v)},getValue:function(){return this.editor.getValue()},getContentHeight:function(){return this.editor.getContentHeight()}}),BI.RichEditor.EVENT_AFTER_HIDEVIEW="EVENT_AFTER_HIDEVIEW",BI.RichEditor.EVENT_CONFIRM="EVENT_CONFIRM",BI.RichEditor.EVENT_FOCUS="EVENT_FOCUS",BI.shortcut("bi.rich_editor",BI.RichEditor),function(mod){mod(CodeMirror)}(function(CodeMirror){function isArray(val){return"[object Array]"==Object.prototype.toString.call(val)}function getKeywords(editor){var mode=editor.doc.modeOption;return"sql"===mode&&(mode="text/x-sql"),CodeMirror.resolveMode(mode).keywords}function getIdentifierQuote(editor){var mode=editor.doc.modeOption;return"sql"===mode&&(mode="text/x-sql"),CodeMirror.resolveMode(mode).identifierQuote||"`"}function getText(item){return"string"==typeof item?item:item.text}function wrapTable(name,value){return isArray(value)&&(value={columns:value}),value.text||(value.text=name),value}function parseTables(input){var result={};if(isArray(input))for(var i=input.length-1;i>=0;i--){var item=input[i];result[getText(item).toUpperCase()]=wrapTable(getText(item),item)}else if(input)for(var name in input)result[name.toUpperCase()]=wrapTable(name,input[name]);return result}function getTable(name){return tables[name.toUpperCase()]}function shallowClone(object){var result={};for(var key in object)object.hasOwnProperty(key)&&(result[key]=object[key]);return result}function match(string,word){if(BI.isNotEmptyString(string)){var len=string.length,sub=getText(word).substr(0,len);return string.toUpperCase()===sub.toUpperCase()}}function addMatches(result,search,wordlist,formatter){if(isArray(wordlist))for(var i=0;i<wordlist.length;i++)match(search,wordlist[i])&&result.push(formatter(wordlist[i],i));else for(var word in wordlist)if(wordlist.hasOwnProperty(word)){var val=wordlist[word];val=val&&val!==!0?val.displayText?{text:val.text,displayText:val.displayText}:val.text:word,match(search,val)&&result.push(formatter(val,-1))}}function cleanName(name){"."==name.charAt(0)&&(name=name.substr(1));for(var nameParts=name.split(identifierQuote+identifierQuote),i=0;i<nameParts.length;i++)nameParts[i]=nameParts[i].replace(new RegExp(identifierQuote,"g"),"");return nameParts.join(identifierQuote)}function insertIdentifierQuotes(name){for(var nameParts=getText(name).split("."),i=0;i<nameParts.length;i++)nameParts[i]=identifierQuote+nameParts[i].replace(new RegExp(identifierQuote,"g"),identifierQuote+identifierQuote)+identifierQuote;var escaped=nameParts.join(".");return"string"==typeof name?escaped:(name=shallowClone(name),name.text=escaped,name)}function nameCompletion(cur,token,result,editor){for(var useIdentifierQuotes=!1,nameParts=[],start=token.start,cont=!0;cont;)cont="."==token.string.charAt(0),useIdentifierQuotes=useIdentifierQuotes||token.string.charAt(0)==identifierQuote,start=token.start,nameParts.unshift(cleanName(token.string)),token=editor.getTokenAt(Pos(cur.line,token.start)),"."==token.string&&(cont=!0,token=editor.getTokenAt(Pos(cur.line,token.start)));var string=nameParts.join(".");addMatches(result,string,tables,function(w){return useIdentifierQuotes?insertIdentifierQuotes(w):w}),addMatches(result,string,defaultTable,function(w){return useIdentifierQuotes?insertIdentifierQuotes(w):w}),string=nameParts.pop();var table=nameParts.join("."),alias=!1,aliasTable=table;if(!getTable(table)){var oldTable=table;table=findTableByAlias(table,editor),table!==oldTable&&(alias=!0)}var columns=getTable(table);return columns&&columns.columns&&(columns=columns.columns),columns&&addMatches(result,string,columns,function(w){var tableInsert=table;return 1==alias&&(tableInsert=aliasTable),"string"==typeof w?w=tableInsert+"."+w:(w=shallowClone(w),w.text=tableInsert+"."+w.text),useIdentifierQuotes?insertIdentifierQuotes(w):w}),start}function eachWord(lineText,f){for(var words=lineText.split(/\s+/),i=0;i<words.length;i++)words[i]&&f(words[i].replace(/[,;]/g,""))}function findTableByAlias(alias,editor){for(var doc=editor.doc,fullQuery=doc.getValue(),aliasUpperCase=alias.toUpperCase(),previousWord="",table="",separator=[],validRange={start:Pos(0,0),end:Pos(editor.lastLine(),editor.getLineHandle(editor.lastLine()).length)},indexOfSeparator=fullQuery.indexOf(CONS.QUERY_DIV);indexOfSeparator!=-1;)separator.push(doc.posFromIndex(indexOfSeparator)),indexOfSeparator=fullQuery.indexOf(CONS.QUERY_DIV,indexOfSeparator+1);separator.unshift(Pos(0,0)),separator.push(Pos(editor.lastLine(),editor.getLineHandle(editor.lastLine()).text.length));for(var prevItem=null,current=editor.getCursor(),i=0;i<separator.length;i++){if((null==prevItem||cmpPos(current,prevItem)>0)&&cmpPos(current,separator[i])<=0){validRange={start:prevItem,end:separator[i]};break}prevItem=separator[i]}for(var query=doc.getRange(validRange.start,validRange.end,!1),i=0;i<query.length;i++){var lineText=query[i];if(eachWord(lineText,function(word){var wordUpperCase=word.toUpperCase();wordUpperCase===aliasUpperCase&&getTable(previousWord)&&(table=previousWord),wordUpperCase!==CONS.ALIAS_KEYWORD&&(previousWord=word)}),table)break}return table}var tables,defaultTable,keywords,identifierQuote,CONS={QUERY_DIV:";",ALIAS_KEYWORD:"AS"},Pos=CodeMirror.Pos,cmpPos=CodeMirror.cmpPos;CodeMirror.registerHelper("hint","sql",function(editor,options){tables=parseTables(options&&options.tables);var defaultTableName=options&&options.defaultTable,disableKeywords=options&&options.disableKeywords;defaultTable=defaultTableName&&getTable(defaultTableName),keywords=getKeywords(editor);var keywordsCount=BI.size(keywords),functions=[],cur=editor.getCursor(),token=editor.getTokenAt(cur);if(options.supportFunction){BI.each(BI.FormulaCollections,function(idx,formula){0!=formula.lastIndexOf(token.string,0)||BI.contains(functions,formula)||functions.push(formula)});var keywords=BI.keys(keywords);BI.each(functions,function(idx,func){var lowerCase=func.toLowerCase(),upperCase=func.toUpperCase();BI.contains(keywords,lowerCase)||BI.contains(keywords,upperCase)||keywords.push(func)})}identifierQuote=getIdentifierQuote(editor),defaultTableName&&!defaultTable&&(defaultTable=findTableByAlias(defaultTableName,editor)),defaultTable=defaultTable||[],defaultTable.columns&&(defaultTable=defaultTable.columns);var result=[],start,end,search;return token.end>cur.ch&&(token.end=cur.ch,token.string=token.string.slice(0,cur.ch-token.start)),token.string.match(/^[.`"\w@]\w*$/)?(search=token.string,start=token.start,end=token.end):(start=end=cur.ch,search=""),"."==search.charAt(0)||search.charAt(0)==identifierQuote?start=nameCompletion(cur,token,result,editor):(addMatches(result,search,tables,function(w){return w}),addMatches(result,search,defaultTable,function(w){return w}),disableKeywords||addMatches(result,search,keywords,function(w,i){var isKeyword=i<keywordsCount;return{isKeyword:isKeyword,text:w}})),{list:result,from:Pos(cur.line,start),to:Pos(cur.line,end)}})}),function(mod){mod(CodeMirror)}(function(CodeMirror){"use strict";CodeMirror.defineMode("sql",function(config,parserConfig){function tokenBase(stream,state){var ch=stream.next();if(hooks[ch]){var result=hooks[ch](stream,state);if(result!==!1)return result}if(support.hexNumber&&("0"==ch&&stream.match(/^[xX][0-9a-fA-F]+/)||("x"==ch||"X"==ch)&&stream.match(/^'[0-9a-fA-F]+'/)))return"number";if(support.binaryNumber&&(("b"==ch||"B"==ch)&&stream.match(/^'[01]+'/)||"0"==ch&&stream.match(/^b[01]+/)))return"number";if(ch.charCodeAt(0)>47&&ch.charCodeAt(0)<58)return stream.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/),support.decimallessFloat&&stream.match(/^\.(?!\.)/),"number";if("?"==ch&&(stream.eatSpace()||stream.eol()||stream.eat(";")))return"variable-3";if("'"==ch||'"'==ch&&support.doubleQuote)return state.tokenize=tokenLiteral(ch),state.tokenize(stream,state);if((support.nCharCast&&("n"==ch||"N"==ch)||support.charsetCast&&"_"==ch&&stream.match(/[a-z][a-z0-9]*/i))&&("'"==stream.peek()||'"'==stream.peek()))return"keyword";if(/^[\(\),\;\[\]]/.test(ch))return null;if(support.commentSlashSlash&&"/"==ch&&stream.eat("/"))return stream.skipToEnd(),"comment";if(support.commentHash&&"#"==ch||"-"==ch&&stream.eat("-")&&(!support.commentSpaceRequired||stream.eat(" ")))return stream.skipToEnd(),"comment";if("/"==ch&&stream.eat("*"))return state.tokenize=tokenComment(1),state.tokenize(stream,state);if("."!=ch){if(operatorChars.test(ch))return stream.eatWhile(operatorChars),null;if("{"==ch&&(stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/)||stream.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/)))return"number";stream.eatWhile(/^[_\w\d]/);var word=stream.current().toLowerCase();return dateSQL.hasOwnProperty(word)&&(stream.match(/^( )+'[^']*'/)||stream.match(/^( )+"[^"]*"/))?"number":atoms.hasOwnProperty(word)?"atom":builtin.hasOwnProperty(word)?"builtin":functions.hasOwnProperty(word)&&"("===stream.peek()?"function":keywords.hasOwnProperty(word)?"keyword":client.hasOwnProperty(word)?"string-2":null}return support.zerolessFloat&&stream.match(/^(?:\d+(?:e[+-]?\d+)?)/i)?"number":stream.match(/^\.+/)?null:support.ODBCdotTable&&stream.match(/^[\w\d_]+/)?"variable-2":void 0}function tokenLiteral(quote){return function(stream,state){for(var escaped=!1,ch;null!=(ch=stream.next());){if(ch==quote&&!escaped){state.tokenize=tokenBase;break}escaped=!escaped&&"\\"==ch}return"string"}}function tokenComment(depth){return function(stream,state){var m=stream.match(/^.*?(\/\*|\*\/)/);return m?"/*"==m[1]?state.tokenize=tokenComment(depth+1):depth>1?state.tokenize=tokenComment(depth-1):state.tokenize=tokenBase:stream.skipToEnd(),"comment"}}function pushContext(stream,state,type){state.context={prev:state.context,indent:stream.indentation(),col:stream.column(),type:type}}function popContext(state){state.indent=state.context.indent,state.context=state.context.prev}var client=parserConfig.client||{},atoms=parserConfig.atoms||{"false":!0,"true":!0,"null":!0},builtin=parserConfig.builtin||{},keywords=parserConfig.keywords||{},operatorChars=parserConfig.operatorChars||/^[*+\-%<>!=&|~^]/,support=parserConfig.support||{},hooks=parserConfig.hooks||{},dateSQL=parserConfig.dateSQL||{date:!0,time:!0,timestamp:!0},functions=parserConfig.functions||{};return{startState:function(){return{tokenize:tokenBase,context:null}},token:function(stream,state){if(stream.sol()&&state.context&&null==state.context.align&&(state.context.align=!1),state.tokenize==tokenBase&&stream.eatSpace())return null;var style=state.tokenize(stream,state);if("comment"==style)return style;state.context&&null==state.context.align&&(state.context.align=!0);var tok=stream.current();return"("==tok?pushContext(stream,state,")"):"["==tok?pushContext(stream,state,"]"):state.context&&state.context.type==tok&&popContext(state),style},indent:function(state,textAfter){var cx=state.context;if(!cx)return CodeMirror.Pass;var closing=textAfter.charAt(0)==cx.type;return cx.align?cx.col+(closing?0:1):cx.indent+(closing?0:config.indentUnit)},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:support.commentSlashSlash?"//":support.commentHash?"#":"--"}}),function(){function hookIdentifier(stream){for(var ch;null!=(ch=stream.next());)if("`"==ch&&!stream.eat("`"))return"variable-2";return stream.backUp(stream.current().length-1),stream.eatWhile(/\w/)?"variable-2":null;
}function hookIdentifierDoublequote(stream){for(var ch;null!=(ch=stream.next());)if('"'==ch&&!stream.eat('"'))return"variable-2";return stream.backUp(stream.current().length-1),stream.eatWhile(/\w/)?"variable-2":null}function hookVar(stream){return stream.eat("@")&&(stream.match(/^session\./),stream.match(/^local\./),stream.match(/^global\./)),stream.eat("'")?(stream.match(/^.*'/),"variable-2"):stream.eat('"')?(stream.match(/^.*"/),"variable-2"):stream.eat("`")?(stream.match(/^.*`/),"variable-2"):stream.match(/^[0-9a-zA-Z$\.\_]+/)?"variable-2":null}function hookClient(stream){return stream.eat("N")?"atom":stream.match(/^[a-zA-Z.#!?]/)?"variable-2":null}function set(str){for(var obj={},words=str.split(" "),i=0;i<words.length;++i)obj[words[i]]=!0;return obj}var sqlKeywords="alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit ";CodeMirror.defineMIME("text/x-sql",{name:"sql",keywords:set(sqlKeywords+"begin"),builtin:set("bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric"),atoms:set("false true null unknown"),operatorChars:/^[*+\-%<>!=]/,dateSQL:set("date time timestamp"),support:set("ODBCdotTable doubleQuote binaryNumber hexNumber"),functions:BI.makeObject(BI.FormulaCollections,!0)})}()}),BI.SQLEditor=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.SQLEditor.superclass._defaultConfig.apply(),{baseCls:"bi-sql-editor",value:"",lineHeight:2,showHint:!0,supportFunction:!1,supportParam:!1,paramFormatter:function(v){return v}})},_init:function(){BI.CodeEditor.superclass._init.apply(this,arguments);var o=this.options,self=this;this.editor=CodeMirror(this.element[0],{mode:"text/x-sql",lineWrapping:!0,lineNumbers:!1}),1===o.lineHeight?this.element.addClass("codemirror-low-line-height"):this.element.addClass("codemirror-high-line-height"),this.editor.on("change",function(cm,change){self._checkWaterMark(),o.showHint&&self.editor.hasFocus()&&CodeMirror.showHint(cm,CodeMirror.sqlHint,{completeSingle:!1,supportFunction:o.supportFunction}),BI.nextTick(function(){self.fireEvent(BI.FormulaEditor.EVENT_CHANGE)})}),this.editor.on("focus",function(){self._checkWaterMark(),self.fireEvent(BI.FormulaEditor.EVENT_FOCUS)}),this.editor.on("blur",function(){self.fireEvent(BI.FormulaEditor.EVENT_BLUR)}),this.watermark=BI.createWidget({type:"bi.label",text:BI.i18nText("BI-Please_Enter_SQL"),cls:"bi-water-mark",whiteSpace:"nowrap",textAlign:"left"}),this.watermark.element.bind("mousedown",function(e){self.insertString(""),self.editor.focus(),e.stopEvent()}),this.watermark.element.bind("click",function(e){self.editor.focus(),e.stopEvent()}),BI.createWidget({type:"bi.absolute",element:this,items:[{el:this.watermark,top:3,left:6}]}),BI.isKey(o.value)&&BI.nextTick(function(){self.setValue(o.value)})},insertString:function(str){this.editor.replaceSelection(str),this.editor.focus()},insertParam:function(param){var value=param;param=this.options.paramFormatter(param);var from=this.editor.getCursor();this.editor.replaceSelection("​"+param+"​");var to=this.editor.getCursor(),className="param";BI.isNotNull(param.match(/^<!.*!>$/))&&(className="error-param");var options={className:className,atomic:!0,replacedWith:BI.$("<span class='"+className+" start end' />").text(param)[0]};options.value=value,this.editor.markText(from,to,options),this.editor.focus()},_checkWaterMark:function(){var o=this.options;!this.disabledWaterMark&&BI.isEmptyString(this.editor.getValue())&&BI.isKey(o.watermark)?this.watermark&&this.watermark.visible():this.watermark&&this.watermark.invisible()},_analyzeContent:function(v){var regx=/\n|\$[\{][^\}]*[\}]|((?!\$\{).)*((?!\$\{).)|\$[^\{]*[^\$\{]/g;return v.match(regx)},getValue:function(){return this.editor.getValue("\n",function(line){var rawText=line.text,value=line.text,num=0;return value.text=rawText,_.forEach(_.sortBy(line.markedSpans,"from"),function(i,ms){switch(i.marker.className){case"param":case"error-param":var fieldNameLength=i.to-i.from;value=value.substr(0,i.from+num)+"${"+i.marker.value+"}"+value.substr(i.to+num,value.length),num+=3,num+=i.marker.value.length-fieldNameLength}}),value})},setValue:function(v){var self=this,result,o=this.options;this.refresh(),self.editor.setValue(""),result=this._analyzeContent(v||""),BI.each(result,function(i,item){var fieldRegx=/\$[\{][^\}]*[\}]/,str=item.match(fieldRegx);BI.isNotEmptyArray(str)&&o.supportParam?self.insertParam(str[0].substring(2,item.length-1)):self.insertString(item)}),this._checkWaterMark()},refresh:function(){var self=this;BI.nextTick(function(){self.editor.refresh()})}}),BI.shortcut("bi.sql_editor",BI.SQLEditor),BI.AbstractFilterItem=BI.inherit(BI.Widget,{props:{baseCls:"bi-filter-item bi-border-right bi-border-bottom"},isSelectedCondition:function(){return this.emptyItem&&this.emptyItem.isVisible()},setSelectedCondition:function(b){b&&(this.emptyItem||(this.emptyItem=BI.createWidget({type:"bi.absolute",height:40,cls:"filter-item-empty-item bi-border-top",items:[{el:{type:"bi.center_adapt",cls:"empty-filter-item-leaf"}}],hgap:10,vgap:5}),BI.createWidget({type:"bi.vertical",element:this,items:[this.emptyItem],scrolly:!1}))),this.emptyItem&&this.emptyItem.setVisible(b)}}),BI.extend(BI.AbstractFilterItem,{FILTER_OPERATION_FORMULA:1,FILTER_OPERATION_CONDITION:2,FILTER_OPERATION_CONDITION_AND:3,FILTER_OPERATION_CONDITION_OR:4,FILTER_OPERATION_FORMULA_AND:5,FILTER_OPERATION_FORMULA_OR:6,FILTER_OPERATION_SHAKE:7}),!function(){var Expander=BI.inherit(BI.Widget,{props:{baseCls:"bi-filter-expander",el:{},popup:{}},render:function(){var self=this,o=this.options;return{type:"bi.filter_expander",switchable:o.switchable,el:o.el,popup:o.popup,id:o.id,value:o.value,listeners:[{eventName:BI.Controller.EVENT_CHANGE,action:function(){self.fireEvent(BI.Controller.EVENT_CHANGE,arguments)}}],ref:function(_ref){self.expander=_ref}}},populate:function(){this.expander.populate.apply(this.expander,arguments)},getValue:function(){var val=this.expander.getValue();return{filterType:val.type,filterValue:val.value,id:val.id}}});BI.shortcut("bi.and.or.filter.expander",Expander)}(),!function(){var FilterExpander=BI.inherit(BI.AbstractFilterItem,{_constant:{EXPANDER_WIDTH:30},props:{baseCls:"bi-filter-expander-item bi-filter-expander bi-border-left bi-border-bottom",el:{},popup:{},switchable:!0},render:function(){var self=this,o=this.options,value=o.el.value;return{type:"bi.center_adapt",cls:"filter-item-empty-item",columnSize:[this._constant.EXPANDER_WIDTH,""],verticalAlign:BI.VerticalAlign.Middle,items:[{type:"bi.absolute",cls:"filter-item-expander-wrapper",items:[{el:{type:"bi.text_button",$testId:"bi-materials-filter-and-or-expander",cls:"condition-and-or",text:this._getText(value),value:value,id:o.id,width:this._constant.EXPANDER_WIDTH,height:"100%",ref:function(_ref){self.expander=_ref},listeners:[{eventName:BI.TextButton.EVENT_CHANGE,action:function(){self.fireEvent(BI.Controller.EVENT_CHANGE,BI.Events.CLICK,"",self)}}]},left:0,top:0,right:0,bottom:0},{el:{type:"bi.icon_button",invisible:!o.switchable,stopPropagation:!0,cls:"change-and-or-font",handler:function(){self.switchText(),self.fireEvent(BI.Controller.EVENT_CHANGE,BI.Events.CLICK,!0,self)}},top:10,width:16,height:16,left:7}],width:this._constant.EXPANDER_WIDTH,height:"100%"},BI.extend(o.popup,{ref:function(_ref){self.conditionsView=_ref},listeners:[{eventName:BI.Controller.EVENT_CHANGE,action:function(){self.fireEvent(BI.Controller.EVENT_CHANGE,arguments)}}]})]}},_getText:function(value){var text="";return text=value===BI.Filter.FILTER_TYPE.AND?BI.i18nText("BI-Basic_And"):BI.i18nText("BI-Basic_Or")},switchText:function(){var value=this.expander.getValue()===BI.Filter.FILTER_TYPE.AND?BI.Filter.FILTER_TYPE.OR:BI.Filter.FILTER_TYPE.AND;this.expander.setValue(value),this.expander.setText(this._getText(value))},getValue:function(){return{type:this.expander.getValue(),value:this.conditionsView.getValue(),id:this.options.id}},populate:function(){this.conditionsView.populate.apply(this.conditionsView,arguments)}});BI.shortcut("bi.filter_expander",FilterExpander)}(),BI.Filter=BI.inherit(BI.Widget,{constants:{FIELD_TYPE_NUMBER:1,FIELD_TYPE_STRING:0,FIELD_TYPE_DATE:2},props:{baseCls:"bi-filter",expander:{},items:[],el:{},itemCreator:BI.empty},_store:function(){return BI.Models.getModel("bi.model.material.filter")},watch:{shakeTree:function(){this.shakeTree()}},render:function(){var self=this,o=this.options;return BI.extend({type:"bi.filter_operation",expander:o.expander,listeners:[{eventName:"EVENT_OPERATION",action:function(type){switch(type){case BI.AbstractFilterItem.FILTER_OPERATION_CONDITION:self.store.addCondition(),self._addAndOrCondition(BI.Filter.FILTER_TYPE.EMPTY_CONDITION);break;case BI.AbstractFilterItem.FILTER_OPERATION_CONDITION_AND:self.store.addAndCondition(),self._addAndOrCondition(BI.Filter.FILTER_TYPE.EMPTY_CONDITION);break;case BI.AbstractFilterItem.FILTER_OPERATION_CONDITION_OR:self.store.addOrCondition(),self._addAndOrCondition(BI.Filter.FILTER_TYPE.EMPTY_CONDITION,1);break;case BI.AbstractFilterItem.FILTER_OPERATION_FORMULA:self.store.addFormula(),self._addAndOrCondition(BI.Filter.FILTER_TYPE.EMPTY_FORMULA);break;case BI.AbstractFilterItem.FILTER_OPERATION_FORMULA_AND:self.store.addAndFormula(),self._addAndOrCondition(BI.Filter.FILTER_TYPE.EMPTY_FORMULA);break;case BI.AbstractFilterItem.FILTER_OPERATION_FORMULA_OR:self.store.addOrFormula(),self._addAndOrCondition(BI.Filter.FILTER_TYPE.EMPTY_FORMULA,1);break;case BI.AbstractFilterItem.FILTER_OPERATION_SHAKE:self.store.shakeTree()}}},{eventName:"BI.FilterOperation.EVENT_DESTROY_ITEM",action:function(id){self._removeCondition(id)}},{eventName:"EVENT_CLICK_EXPANDER",action:function(type,value,obj){self._switchConditionLink(obj),self._checkBeautifyLevelNecessary(),self.fireEvent("EVENT_CHANGE")}}],ref:function(_ref){self.filter=_ref}},o.el)},mounted:function(){this.tree=new BI.Tree,this.tree.initTree(this.options.items),this._populate(this.tree.toJSONWithNode())},_checkBeautifyLevelNecessary:function(){this.filter.setBeautifyButtonVisible(this._checkLevelStructure(this.tree.getRoot()))},_checkLevelStructure:function(node,pnode){var self=this,children=node.getChildren();if(BI.isNotNull(pnode)){var pdata=pnode.get("data"),data=node.get("data");if(BI.isNotNull(pdata)&&pdata.value===data.value)return!0}return BI.any(children,function(idx,child){return self._checkLevelStructure(child,node)})},_switchConditionLink:function(obj){var finded=this.tree.search(obj.attr("id"));if(BI.isNotNull(finded)){var data=finded.get("data");data.value=data.value===BI.Filter.FILTER_TYPE.AND?BI.Filter.FILTER_TYPE.OR:BI.Filter.FILTER_TYPE.AND}},_createEmptyNode:function(type){var node=new BI.Node(BI.UUID());return node.set("data",{value:type}),node},_insertAndOrCondition:function(id,formulaOrField,type){var ANDOR=["AND","OR"];type||(type=0);var finded=this.tree.search(id);if(BI.isNotNull(finded)){var data=finded.get("data"),parent=finded.getParent(),index=parent.getChildIndex(finded.id),pdata=parent.get("data")||{},node=this._createEmptyNode(formulaOrField);if(data.value===BI.Filter.FILTER_TYPE[ANDOR[type]])return void this.tree.addNode(finded,node);if(data.value===BI.Filter.FILTER_TYPE[ANDOR[1-type]]&&pdata.value===BI.Filter.FILTER_TYPE[ANDOR[type]])return void parent.addChild(node,index+1);if(data.value===BI.Filter.FILTER_TYPE[ANDOR[1-type]]&&pdata.value!==BI.Filter.FILTER_TYPE[ANDOR[type]]||pdata.value===BI.Filter.FILTER_TYPE[ANDOR[1-type]]||pdata.value!==BI.Filter.FILTER_TYPE.AND&&pdata.value!==BI.Filter.FILTER_TYPE.OR){var andor=new BI.Node(BI.UUID());return andor.set("data",{value:BI.Filter.FILTER_TYPE[ANDOR[type]],children:[finded.get("data"),node.get("data")]}),parent.removeChildByIndex(index),parent.addChild(andor,index),andor.addChild(finded),void andor.addChild(node)}parent.addChild(node,index+1)}},_removeCondition:function(id){var finded=this.tree.search(id);if(BI.isNotNull(finded)){var parent=finded.getParent();if(parent.removeChild(id),parent.getChildrenLength()<=1){var prev=parent.getParent();if(BI.isNotNull(prev)){var index=prev.getChildIndex(parent.id);prev.removeChildByIndex(index),1===parent.getChildrenLength()&&prev.addChild(parent.getFirstChild(),index)}}this._populate(this.tree.toJSONWithNode()),this.fireEvent("EVENT_CHANGE")}},_addAndOrCondition:function(formulaOrField,type){var ANDOR=["AND","OR"];type||(type=0);var currentSelectItem=this.filter.getCurrentSelectItem();if(BI.isNotNull(currentSelectItem)){var id=currentSelectItem.attr("id");this._insertAndOrCondition(id,formulaOrField,type)}else{var node=this._createEmptyNode(formulaOrField),root=this.tree.getRoot(),child=root.getLastChild();if(BI.isNotNull(child)){var data=child.get("data");if(data.value===BI.Filter.FILTER_TYPE[ANDOR[type]])this.tree.addNode(child,node);else{var andor=new BI.Node(BI.UUID());andor.set("data",{value:BI.Filter.FILTER_TYPE[ANDOR[type]],children:[child.get("data"),node.get("data")]}),root.removeChild(child.id),this.tree.addNode(andor),this.tree.addNode(andor,child),this.tree.addNode(andor,node)}}else this.tree.addNode(node)}this._populate(this.tree.toJSONWithNode()),this.fireEvent("EVENT_CHANGE")},_shakeTree:function(node,pnode){var self=this,count=0,i,children=node.getChildren();for(i=0;i<children.length;i++){var childCount=self._shakeTree(children[i],node);childCount>0&&(i+=childCount-1)}if(BI.isNotNull(pnode)){var pdata=pnode.get("data"),data=node.get("data");if(BI.isNotNull(pdata)&&pdata.value===data.value){var removeIndex=pnode.getChildIndex(node.id);pnode.removeChild(node.id),BI.each(node.getChildren(),function(i,cNode){count++,self.tree.addNode(pnode,cNode,removeIndex+i)})}}return count},shakeTree:function(){var root=this.tree.getRoot();this._shakeTree(root),this._populate(this.tree.toJSONWithNode()),this.fireEvent("EVENT_CHANGE")},_populate:function(items){this.filter.defaultState();var o=this.options;o.items=items,BI.Tree.traversal(items,function(i,item){o.itemCreator(item)}),this.filter.populate.apply(this.filter,[items]),this._checkBeautifyLevelNecessary()},populate:function(conditions){this.tree.initTree(conditions),this._populate(this.tree.toJSONWithNode())},getValue:function(){return this.filter.getValue()}}),BI.shortcut("bi.filter",BI.Filter),BI.Filter.FILTER_TYPE={},BI.Filter.FILTER_TYPE.FORMULA=33,BI.Filter.FILTER_TYPE.AND=34,BI.Filter.FILTER_TYPE.OR=35,BI.Filter.FILTER_TYPE.EMPTY_FORMULA=36,BI.Filter.FILTER_TYPE.EMPTY_CONDITION=37,!function(){var FilterList=BI.inherit(BI.ButtonTree,{props:{baseCls:"bi-button-map"},_createBtns:function(items){var o=this.options,buttons=BI.createWidgets(BI.createItems(items,{type:"bi.text_button",once:0===o.chooseType})),keys=BI.map(items,function(i,item){if(item=BI.stripEL(item),!item.id&&!item.value)throw new Error("item must have 'id' or 'value' as its property");return item.id||item.value});return BI.zipObject(keys,buttons)},setValue:function(v){v=BI.isArray(v)?v:[v],BI.each(this.buttons,function(val,item){return BI.isFunction(item.setSelected)?void(v.contains(val)?item.setSelected&&item.setSelected(!0):item.setSelected&&item.setSelected(!1)):void item.setValue(v)})},setNotSelectedValue:function(v){v=BI.isArray(v)?v:[v],BI.each(this.buttons,function(val,item){return BI.isFunction(item.setSelected)?void(v.contains(val)?item.setSelected&&item.setSelected(!1):item.setSelected&&item.setSelected(!0)):void item.setNotSelectedValue(v)})},populate:function(items){var self=this,args=[].slice.call(arguments),linkHashMap=new BI.LinkHashMap,val=function(item){return item.id||item.value};this.buttons||(this.buttons={});var willCreated=[];BI.each(items,function(i,item){if(item=BI.stripEL(item),self.buttons[val(item)]){var ob=self.buttons[val(item)];args[0]=item.items,args[2]=item,ob.populate&&ob.populate.apply(ob,args)}else willCreated.push(item)}),args[0]=willCreated;var newBtns=this._btnsCreator.apply(this,args),array=[];BI.each(items,function(i,item){item=BI.stripEL(item);var button=self.buttons[val(item)]||newBtns[val(item)];linkHashMap.add(val(item),button),array.push(button)}),this.buttons=linkHashMap.map,BI.DOM.hang(this.buttons),this.element.empty();var packages=this._packageItems(items,this._packageBtns(array));BI.createWidget(BI.extend({element:this},this._packageLayout(packages)))},getIndexByValue:function(){throw new Error("Can not use getIndexByValue")}});BI.shortcut("bi.filter_list",FilterList)}(),!function(){var Model=BI.inherit(Fix.Model,{state:function(){return{setSelectedCondition:!1,shakeTree:!1}},childContext:["setSelectedCondition"],computed:{},actions:{addCondition:function(){},addAndCondition:function(){},addOrCondition:function(){},addFormula:function(){},addAndFormula:function(){},addOrFormula:function(){},shakeTree:function(){this.model.shakeTree=!this.model.shakeTree}}});BI.model("bi.model.material.filter",Model)}(),!function(){var FilterOperation=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(FilterOperation.superclass._defaultConfig.apply(this,arguments),{constants:{FORMULA_COMBO:[{text:BI.i18nText("BI-Conf_Formula_And"),$testId:"bi-materials-formula-add",value:BI.AbstractFilterItem.FILTER_OPERATION_FORMULA_AND},{text:BI.i18nText("BI-Conf_Formula_Or"),$testId:"bi-materials-formula-or",value:BI.AbstractFilterItem.FILTER_OPERATION_FORMULA_OR}],CONDITION_COMBO:[{text:BI.i18nText("BI-Conf_Condition_And"),$testId:"bi-materials-condition-add",value:BI.AbstractFilterItem.FILTER_OPERATION_CONDITION_AND},{text:BI.i18nText("BI-Conf_Condition_Or"),$testId:"bi-materials-condition-or",value:BI.AbstractFilterItem.FILTER_OPERATION_CONDITION_OR}]}})},props:{baseCls:"bi-filter-operation",expander:{},items:[],logic:{dynamic:!1},selections:[BI.AbstractFilterItem.FILTER_OPERATION_CONDITION,BI.AbstractFilterItem.FILTER_OPERATION_FORMULA],itemsCreator:BI.emptyFn},_store:function(){return BI.Models.getModel("bi.model.material.filter_operation")},render:function(){var self=this,o=this.options;return this.currentSelected=null,BI.extend({items:[{el:{type:"bi.left_right_vertical_adapt",items:{left:self._buildOperationButton(),right:[{type:"bi.icon_button",cls:"combine-level-font",title:BI.i18nText("BI-Basic_Beautify_Level"),ref:function(_ref){self.beautifyButton=_ref},listeners:[{eventName:BI.IconButton.EVENT_CHANGE,action:function(){self.fireEvent("EVENT_OPERATION",BI.AbstractFilterItem.FILTER_OPERATION_SHAKE)}}]}]},height:24,lrgap:20,rrgap:10},height:24},{el:BI.extend({tgap:10,items:[{el:{type:"bi.left",items:[{type:"bi.filter_pane",expander:o.expander,items:o.items,itemsCreator:o.itemsCreator,listeners:[{eventName:"EVENT_CHANGE",action:function(type,value,obj){type===BI.Events.CLICK&&value!==!0&&(BI.isNotNull(self.currentSelected)&&self.currentSelected===obj?(self.store.setSelectedCondition(!obj.isSelectedCondition()),obj.setSelectedCondition(!obj.isSelectedCondition())):(BI.isNotNull(self.currentSelected)&&(self.store.setSelectedCondition(!1),self.currentSelected.setSelectedCondition(!1)),self.currentSelected=obj,self.store.setSelectedCondition(!0),obj.setSelectedCondition(!0))),type===BI.Events.CLICK&&value===!0&&self.fireEvent("EVENT_CLICK_EXPANDER",arguments),type===BI.Events.DESTROY&&(self.currentSelected===obj&&(self.currentSelected=null),self.fireEvent("BI.FilterOperation.EVENT_DESTROY_ITEM",value,obj))}}],ref:function(_ref){self.filter=_ref}}]},top:0,right:2,bottom:0,left:0,rgap:2}]},o.logic.dynamic?{type:"bi.vertical",scrolly:!1}:{type:"bi.absolute",scrollable:!0})}]},o.logic.dynamic?{type:"bi.vertical",scrolly:!1}:{type:"bi.vtape"})},_buildOperationButton:function(){function doAdd(v){self.fireEvent("EVENT_OPERATION",v),self.defaultState()}var self=this,combos=[];return BI.each(this.options.selections,function(i,type){switch(type){case BI.AbstractFilterItem.FILTER_OPERATION_FORMULA:combos.push({type:"bi.filter_operation_switch",addType:BI.AbstractFilterItem.FILTER_OPERATION_FORMULA_AND,listeners:[{eventName:"EVENT_CHANGE",action:function(v){doAdd(v)}}]});break;case BI.AbstractFilterItem.FILTER_OPERATION_CONDITION:default:combos.push({type:"bi.filter_operation_switch",addType:BI.AbstractFilterItem.FILTER_OPERATION_CONDITION_AND,listeners:[{eventName:"EVENT_CHANGE",action:function(v){doAdd(v)}}]})}}),combos},defaultState:function(){BI.isNotNull(this.currentSelected)&&(this.store.setSelectedCondition(!1),this.currentSelected.setSelectedCondition(!1))},getCurrentSelectItem:function(){if(BI.isNotNull(this.currentSelected)&&this.currentSelected.isSelectedCondition())return this.currentSelected},setBeautifyButtonVisible:function(b){this.beautifyButton.setVisible(!!b)},populate:function(){this.filter.populate.apply(this.filter,arguments)},getValue:function(){return this.filter.getValue()}});BI.shortcut("bi.filter_operation",FilterOperation)}(),!function(){var Model=BI.inherit(Fix.Model,{context:["setSelectedCondition"],computed:{},actions:{setSelectedCondition:function(selected){this.model.setSelectedCondition=selected}}});BI.model("bi.model.material.filter_operation",Model)}(),!function(){BI.FilterOperationSwitch=BI.inherit(BI.Widget,{props:{baseCls:"bi-filter-operation-switch",width:112,height:24,addType:BI.AbstractFilterItem.FILTER_OPERATION_CONDITION_AND},render:function(){var self=this;return{type:"bi.htape",items:[{el:{type:"bi.text_button",cls:"filter-add-item left-item-radius",$testId:"bi-filter-operation-switch-add-button",text:this._getShowText(this._getDefaultValue()),ref:function(_ref){self.addButton=_ref},value:this._getDefaultValue(),listeners:[{eventName:"EVENT_CHANGE",action:function(){self.fireEvent("EVENT_CHANGE",this.getValue())}}]},rgap:1},{el:{type:"bi.down_list_combo",el:{cls:"filter-add-item"},iconCls:"filter-down-font icon-size-12",$testId:"bi-filter-operation-switch-combo",cls:"filter-add-item right-item-radius",items:this._getItemsByType(),value:[{value:this._getDefaultValue()}],listeners:[{eventName:"EVENT_CHANGE",action:function(){var value=this.getValue()[0].value;self.addButton.setValue(value),self.addButton.setText(self._getShowText(value)),self.fireEvent("EVENT_CHANGE",value)}}]},width:16}]}},_getShowText:function(v){switch(v){case BI.AbstractFilterItem.FILTER_OPERATION_CONDITION_OR:return BI.i18nText("BI-Basic_Add_Or_Condition");case BI.AbstractFilterItem.FILTER_OPERATION_FORMULA_AND:return BI.i18nText("BI-Basic_Add_And_Formula");case BI.AbstractFilterItem.FILTER_OPERATION_FORMULA_OR:return BI.i18nText("BI-Basic_Add_Or_Formula");case BI.AbstractFilterItem.FILTER_OPERATION_CONDITION_AND:default:return BI.i18nText("BI-Basic_Add_And_Condition")}},_getDefaultValue:function(){return this.options.addType===BI.AbstractFilterItem.FILTER_OPERATION_CONDITION_AND?BI.AbstractFilterItem.FILTER_OPERATION_CONDITION_AND:BI.AbstractFilterItem.FILTER_OPERATION_FORMULA_AND},_getItemsByType:function(){return this.options.addType===BI.AbstractFilterItem.FILTER_OPERATION_CONDITION_AND?[[{text:BI.i18nText("BI-Basic_And_Condition"),cls:"dot-e-font",value:BI.AbstractFilterItem.FILTER_OPERATION_CONDITION_AND,$testId:"bi-filter-operation-switch-combo-item-condition-and"},{text:BI.i18nText("BI-Basic_Or_Condition"),cls:"dot-e-font",value:BI.AbstractFilterItem.FILTER_OPERATION_CONDITION_OR,$testId:"bi-filter-operation-switch-combo-item-condition-or"}]]:[[{text:BI.i18nText("BI-Basic_And_Formula"),cls:"dot-e-font",value:BI.AbstractFilterItem.FILTER_OPERATION_FORMULA_AND,$testId:"bi-filter-operation-switch-combo-item-formula-and"},{text:BI.i18nText("BI-Basic_Or_Formula"),cls:"dot-e-font",value:BI.AbstractFilterItem.FILTER_OPERATION_FORMULA_OR,$testId:"bi-filter-operation-switch-combo-item-formula-or"}]]}}),BI.shortcut("bi.filter_operation_switch",BI.FilterOperationSwitch)}(),!function(){var FilterPane=BI.inherit(BI.Widget,{props:{baseCls:"bi-filter-pane",expander:{},items:[],itemsCreator:BI.emptyFn},render:function(){var self=this,o=this.options;return{type:"bi.custom_tree",cls:BI.isNotEmptyArray(o.items)?"bi-border-right bi-border-top":"",expander:BI.extend({type:"bi.filter_expander",el:{},popup:{type:"bi.custom_tree"}},o.expander),el:{type:"bi.filter_list",cls:"filter-list-pane",chooseType:BI.ButtonGroup.CHOOSE_TYPE_DEFAULT,layouts:[{type:"bi.vertical",scrolly:!1}]},items:o.items,listeners:[{eventName:BI.Controller.EVENT_CHANGE,action:function(){self.fireEvent("EVENT_CHANGE",arguments)}}],ref:function(_ref){self.tree=_ref}}},populate:function(items){BI.isNotEmptyArray(items)?this.element.addClass("bi-border-right bi-border-top"):this.element.removeClass("bi-border-right bi-border-top"),this.tree.populate.apply(this.tree,arguments)},getValue:function(){return this.tree.getValue()}});BI.shortcut("bi.filter_pane",FilterPane)}(),!function(){var Form=BI.inherit(BI.Widget,{props:{baseCls:"bi-form",items:[],rules:{},stop:!1,layouts:[{type:"bi.vertical"}]},_init:function(){Form.superclass._init.apply(this,arguments),this.populate(this.options.items)},_createItems:function(items){var rules=this.options.rules;return BI.createWidgets(BI.map(items,function(i,item){return BI.extend({type:"bi.form.item"},item,{rules:BI.extend({},rules,item.rules)})}))},_itemsCreator:function(items){var self=this,formItems=this._createItems(items);return BI.each(formItems,function(i,btn){btn.on(BI.Events.DESTROY,function(){BI.remove(self.formItems,btn)})}),formItems},_packageItemLayout:function(items){for(var o=this.options,i=o.layouts.length-1;i>0;i--)items=BI.map(items,function(k,it){return BI.extend({},o.layouts[i],{items:[BI.extend({},o.layouts[i].el,{el:it})]})});return items},_packageSimpleItems:function(nodes){var o=this.options;return BI.map(o.items,function(i,item){return BI.stripEL(item)===item?nodes[i]:BI.extend({},item,{el:nodes[i]})})},_packageItems:function(items,packBtns){return BI.createItems(BI.makeArrayByArray(items,{}),BI.clone(packBtns))},_packageLayout:function(items){for(var o=this.options,layout=BI.deepClone(o.layouts[0]),lay=BI.formatEL(layout).el;lay&&lay.items&&!BI.isEmpty(lay.items);)lay=BI.formatEL(lay.items[0]).el;return lay.items=items,layout},_isSimpleLayout:function(){var o=this.options;return 1===o.layouts.length&&!BI.isArray(o.items[0])},submit:function(callback){var stop=this.options.stop,approved=!0,result;return BI.each(this.formItems,function(i,item){return!(approved||!stop)||void(item.isEnabled()&&BI.isFunction(item.getValidations)&&(result=item.getValidations(),result&&!result.approved?(item.showError&&item.showError(result.errors[0]),approved=!1):item.hideError&&item.hideError()))}),approved&&BI.isFunction(callback)&&callback(this.getValue()),approved},validate:function(){var approved=!0,stop=this.options.stop;return BI.each(this.formItems,function(i,item){return!(approved||!stop)||void(item.isEnabled()&&BI.isFunction(item.validate)&&!item.validate()&&(approved=!1))}),approved},getValidations:function(){var v=[];return BI.each(this.formItems,function(i,item){item.isEnabled()&&BI.isFunction(item.getValidations)&&v.push(item.getValidations())}),v},setValue:function(val,name){var node=this.getNodeByName(name);node&&node.setValue(val)},getValue:function(){var v=[];return BI.each(this.formItems,function(i,item){item.isEnabled()&&v.push(item.getValue())}),v},getFormValue:function(){var v={};return BI.each(this.formItems,function(i,item){item.options.name&&(v[item.options.name]=item.getValue())}),v},populate:function(items){items=items||[],this.empty(),this.options.items=items,this.formItems=this._itemsCreator.apply(this,arguments),items=this._isSimpleLayout()?this._packageSimpleItems(this.formItems):this._packageItems(items,this._packageItemLayout(this.formItems)),this.layouts=BI.createWidget(BI.extend({element:this},this._packageLayout(items)))},setEnabledItems:function(v){v=BI.isArray(v)?v:[v],BI.each(this.formItems,function(i,item){BI.contains(v,item.options.name)?item.setEnable(!0):item.setEnable(!1)})},getAllItems:function(){return this.formItems},getIndexByName:function(name){var index=-1;return BI.some(this.formItems,function(i,item){if(item.isEnabled()&&item.options.name===name)return index=i,!0}),index},getNodeByName:function(name){var node;return BI.some(this.formItems,function(i,item){if(item.isEnabled()&&item.options.name===name)return node=item,!0}),node},empty:function(){Form.superclass.empty.apply(this,arguments),this.options.items=[]},destroy:function(){Form.superclass.destroy.apply(this,arguments),this.options.items=[]}});BI.shortcut("bi.form",Form)}(),!function(){var Item=BI.inherit(BI.Widget,{props:{baseCls:"bi-form-error-item",errorLeft:0,errorTop:0,errorHeight:18,errorText:"",stop:!0,rules:{}},render:function(){var self=this,o=this.options;this.item=BI.createWidget(o.el);var item={type:"bi.absolute",height:o.height||24,items:[{el:{type:"bi.vertical",invisible:!0,cls:"bi-bubble bi-border-radius",items:[{el:{type:"bi.label",cls:"bubble-error",text:o.errorText,height:o.errorHeight,hgap:5,ref:function(_ref){self.errorTextRow=_ref}}}],ref:function(_ref){self.errorPane=_ref}},top:-o.errorTop||-(o.errorHeight+2),left:o.errorLeft},{el:this.item,top:0,right:0,bottom:0,left:0}]};return o.label?{type:"bi.vertical_adapt",items:[{el:BI.isKey(o.label)?{type:"bi.label",textAlign:"left",textHeight:24,text:o.label,title:o.label,rgap:10}:o.label},{el:item}]}:item},getValue:function(){return this.item.getValue()},validate:function(){var o=this.options,res=BI.validator.validate(this.getValue(),o.rules,o.stop);return BI.isNull(res)||res.approved},getValidations:function(){var o=this.options;return BI.validator.validate(this.getValue(),o.rules,o.stop)},showError:function(text){text&&this.errorTextRow.setText(text),this.errorPane.setVisible(!0)},hideError:function(){this.errorPane.setVisible(!1)}});BI.shortcut("bi.form.error.item",Item)}(),!function(){var Item=BI.inherit(BI.Widget,{props:{baseCls:"bi-form-item",stop:!0,rules:{}},render:function(){var o=this.options;return o.label?(this.item=BI.createWidget({rules:o.rules,stop:o.stop},o.el),{type:"bi.vertical_adapt",items:[{el:BI.isKey(o.label)?{type:"bi.label",textAlign:"left",textHeight:24,text:o.label,title:o.label,rgap:10}:o.label},{el:this.item}]}):void(this.item=BI.createWidget({rules:o.rules,stop:o.stop,element:this},o.el))},getValue:function(){return this.item.getValue()},validate:function(){return BI.isFunction(this.item.validate)?this.item.validate():this._validate()},getValidations:function(){var o=this.options;return BI.isFunction(this.item.getValidations)?this.item.getValidations():BI.validator.validate(this.getValue(),o.rules,o.stop)},showError:function(text){BI.isFunction(this.item.showError)&&this.item.showError(text)},hideError:function(){BI.isFunction(this.item.hideError)&&this.item.hideError()},_validate:function(){var o=this.options,res=BI.validator.validate(this.getValue(),o.rules,o.stop);return BI.isNull(res)||res.approved}});BI.shortcut("bi.form.item",Item)}(),BI.FormulaFieldPane=BI.inherit(BI.Widget,{_constant:{FIELD_SEARCH_HEIGHT:22,FIELD_SEARCH_H_GAP:10,FIELD_SEARCH_T_GAP:10},props:{baseCls:"bi-formula-field-pane bi-card",items:[]},_store:function(){return BI.Models.getModel("bi.model.material.formula_field_pane")},watch:{fieldKeyword:function(){this._search()}},render:function(){var self=this,o=this.options;return{type:"bi.vtape",tgap:this._constant.FIELD_SEARCH_T_GAP,items:[{el:{type:"bi.search_editor",ref:function(ref){self.search=ref},listeners:[{eventName:BI.SearchEditor.EVENT_CHANGE,action:BI.debounce(BI.bind(function(){self.store.setKeyword(self.search.getValue())}),BI.EVENT_RESPONSE_TIME)},{eventName:BI.SearchEditor.EVENT_CLEAR,action:BI.debounce(BI.bind(function(){self.store.setKeyword(self.search.getValue())}),BI.EVENT_RESPONSE_TIME)}]},height:this._constant.FIELD_SEARCH_HEIGHT,hgap:this._constant.FIELD_SEARCH_H_GAP},{el:{type:"bi.formula_fields_tree",items:o.items,redmark:function(){return!0},ref:function(_ref){self.fieldTree=_ref;
},listeners:[{eventName:BI.FormulaFieldsTree.EVENT_CHANGE,action:function(){self.fireEvent(BI.FormulaFieldPane.EVENT_CHANGE,this.getValue())}}]}}]}},_search:function(){var self=this,o=this.options,items=BI.map(o.items,function(index,item){var res=BI.Func.getSearchResult(item,self.model.fieldKeyword,"text");return res.match.concat(res.find)});this.fieldTree.populate(items,this.model.fieldKeyword)},getAllLeaves:function(){return this.fieldTree.getAllLeaves()},populate:function(items,keyword){this.options.items=items,this.fieldTree.populate(items,keyword)}}),BI.FormulaFieldPane.EVENT_SEARCH="EVENT_SEARCH",BI.FormulaFieldPane.EVENT_CHANGE="EVENT_CHANGE",BI.shortcut("bi.formula_field_pane",BI.FormulaFieldPane),!function(){var Model=BI.inherit(Fix.Model,{context:["fieldKeyword"],state:function(){return{}},computed:{},actions:{setKeyword:function(v){this.model.fieldKeyword=v}}});BI.model("bi.model.material.formula_field_pane",Model)}(),BI.FormulaFieldsTree=BI.inherit(BI.Widget,{_const:{leafGap:40},props:{baseCls:"bi-formula-field-tree",chooseType:0,items:[],redmark:BI.emptyFn},render:function(){var o=this.options,c=this._const,self=this,nodes=this._formatItems(BI.deepClone(o.items));return{type:"bi.level_tree",element:this,chooseType:o.chooseType,expander:{isDefaultInit:!0},items:nodes,el:{behaviors:{redmark:o.redmark}},ref:function(_ref){self.fieldtree=_ref},listeners:[{eventName:BI.LevelTree.EVENT_CHANGE,action:function(){self.fireEvent(BI.FormulaFieldsTree.EVENT_CHANGE),self.fieldtree.setValue()}}]}},_getFieldNum:function(map,fieldtype){return BI.isNotNull(map[fieldtype])?map[fieldtype].length:0},_formatItems:function(items,openWhenNotEmpty){var o=this.options,c=this._const,self=this,map={};BI.each(items,function(i,typeItem){BI.each(typeItem,function(i,item){item.fieldType===BICst.COLUMN.CALCULATE&&(item.fieldType=BICst.COLUMN.NUMBER),map[item.fieldType]||(map[item.fieldType]=[]),map[item.fieldType].push(item)})});var nodes=[{id:BICst.COLUMN.NUMBER,type:"bi.arrow_group_node",$testId:"bi-formula-field-tree-number-node",text:BI.i18nText("BI-Conf_Formula_Numberic_Field")+"("+self._getFieldNum(map,BICst.COLUMN.NUMBER)+")",value:BICst.COLUMN.NUMBER,isParent:!0,open:!0}];return items.length>1&&nodes.push({id:BICst.COLUMN.STRING,type:"bi.arrow_group_node",$testId:"bi-formula-field-tree-string-node",text:BI.i18nText("BI-Conf_Formula_Text_Field")+"("+self._getFieldNum(map,BICst.COLUMN.STRING)+")",value:BICst.COLUMN.STRING,isParent:!0,open:!!openWhenNotEmpty&&self._getFieldNum(map,BICst.COLUMN.STRING)>0||!1}),items.length>2&&nodes.push({id:BICst.COLUMN.DATE,type:"bi.arrow_group_node",$testId:"bi-formula-field-tree-date-node",text:BI.i18nText("BI-Conf_Formula_Time_Field")+"("+self._getFieldNum(map,BICst.COLUMN.DATE)+")",value:BICst.COLUMN.DATE,isParent:!0,open:!!openWhenNotEmpty&&self._getFieldNum(map,BICst.COLUMN.DATE)>0||!1}),items.length>3&&nodes.push({id:BICst.FORMULA_WIDGET_FIELD_TYPE.DATE,$testId:"bi-formula-field-tree-date-widget-node",type:"bi.arrow_group_node",text:BI.i18nText("BI-Design_Date_Widget_Field")+"("+items[3].length+")",value:BICst.FORMULA_WIDGET_FIELD_TYPE.DATE,isParent:!0,open:!!openWhenNotEmpty&&items[3].length>0||!1}),items.length>4&&nodes.push({id:BICst.FORMULA_WIDGET_FIELD_TYPE.STRING,$testId:"bi-formula-field-tree-string-widget-node",type:"bi.arrow_group_node",text:BI.i18nText("BI-Design_String_Widget_Field")+"("+items[4].length+")",value:BICst.FORMULA_WIDGET_FIELD_TYPE.STRING,isParent:!0,open:!!openWhenNotEmpty&&items[4].length>0||!1}),items.length>5&&nodes.push({id:BICst.FORMULA_WIDGET_FIELD_TYPE.NUMBER,$testId:"bi-formula-field-tree-number-widget-node",type:"bi.arrow_group_node",text:BI.i18nText("BI-Design_Number_Widget_Field")+"("+items[5].length+")",value:BICst.FORMULA_WIDGET_FIELD_TYPE.NUMBER,isParent:!0,open:!!openWhenNotEmpty&&items[5].length>0||!1}),BI.each(items,function(idx,typeItems){BI.each(typeItems,function(i,item){nodes.push(BI.extend({id:BI.UUID(),pId:item.fieldType},item,{type:"bi.tree_text_leaf_item",$testId:"bi-formula-field-tree-field-item-"+item.text,cls:"field-item-draggable",textAlign:"left",lgap:c.leafGap}))})}),nodes},populate:function(items,keyword){var nodes=this._formatItems(BI.deepClone(items),BI.isNotNull(keyword)&&BI.isNotEmptyString(keyword));this.fieldtree.populate(nodes,keyword)},getValue:function(){return this.fieldtree.getValue()},setValue:function(v){this.fieldtree.setValue(v)},doBehavior:function(){this.fieldtree.doBehavior.apply(this.fieldtree,arguments)},getNodeByValue:function(v){return this.fieldtree.getNodeByValue(v)},setTriggerExpand:function(v){var node=this.fieldtree.getNodeById(v);BI.isNotNull(node)&&node.showView()},setTriggerCollapse:function(v){var node=this.fieldtree.getNodeById(v);node.hideView()},expandAll:function(){var self=this;BI.each([BICst.COLUMN.NUMBER,BICst.COLUMN.STRING,BICst.COLUMN.DATE],function(i,id){self.setTriggerExpand(id)})},getAllLeaves:function(){return this.fieldtree.getAllLeaves()}}),BI.FormulaFieldsTree.EVENT_CHANGE="EVENT_CHANGE",BI.shortcut("bi.formula_fields_tree",BI.FormulaFieldsTree),BI.FormulaFunctionsTree=BI.inherit(BI.Widget,{_const:{leafGap:40},props:{baseCls:"bi-formula-function-tree bi-card",chooseType:0,items:[],redmark:BI.emptyFn},_store:function(){return BI.Models.getModel("bi.model.material.formula_functions_tree")},render:function(){var self=this,o=this.options;return{type:"bi.level_tree",expander:{isDefaultInit:!0},items:this._getFormatNodes(o.items),el:{behaviors:{redmark:o.redmark}},ref:function(){self.fieldtree=this},listeners:[{eventName:BI.LevelTree.EVENT_CHANGE,action:function(){self.fireEvent(BI.FormulaFunctionsTree.EVENT_CHANGE,self._getSelectItem(self.getValue(),o.items)),self.fieldtree.setValue(self.getValue())}}]}},_getFieldNum:function(map,fieldtype){return BI.isNotNull(map[fieldtype])?map[fieldtype].length:0},_getFormatNodes:function(items,keyword){var o=this.options,c=this._const,self=this,map={};BI.each(items,function(i,item){map[item.fieldType]||(map[item.fieldType]=[]),map[item.fieldType].push(item)});var isOpen=BI.isNotNull(keyword)&&BI.isNotEmptyString(keyword),templateNodes=[{id:BICst.FUNCTION.MATH,type:"bi.arrow_group_node",$testId:"bi-formula-function-tree-math-node",text:BI.i18nText("BI-Conf_Formula_Numberic_Function")+"("+self._getFieldNum(map,BICst.FUNCTION.MATH)+")",value:BICst.FUNCTION.MATH,isParent:!0,open:isOpen},{id:BICst.FUNCTION.TEXT,type:"bi.arrow_group_node",$testId:"bi-formula-function-tree-text-node",text:BI.i18nText("BI-Conf_Formula_Text_Function")+"("+self._getFieldNum(map,BICst.FUNCTION.TEXT)+")",value:BICst.FUNCTION.TEXT,isParent:!0,open:isOpen},{id:BICst.FUNCTION.DATE,type:"bi.arrow_group_node",$testId:"bi-formula-function-tree-date-node",text:BI.i18nText("BI-Conf_Formula_Time_Function")+"("+self._getFieldNum(map,BICst.FUNCTION.DATE)+")",value:BICst.FUNCTION.DATE,isParent:!0,open:isOpen},{id:BICst.FUNCTION.ARRAY,type:"bi.arrow_group_node",$testId:"bi-formula-function-tree-array-node",text:BI.i18nText("BI-Conf_Formula_Array_Function")+"("+self._getFieldNum(map,BICst.FUNCTION.ARRAY)+")",value:BICst.FUNCTION.ARRAY,isParent:!0,open:isOpen},{id:BICst.FUNCTION.LOGIC,type:"bi.arrow_group_node",$testId:"bi-formula-function-tree-logic-node",text:BI.i18nText("BI-Conf_Formula_Logic_Function")+"("+self._getFieldNum(map,BICst.FUNCTION.LOGIC)+")",value:BICst.FUNCTION.LOGIC,isParent:!0,open:isOpen},{id:BICst.FUNCTION.OTHER,$testId:"bi-formula-function-tree-other-node",type:"bi.arrow_group_node",text:BI.i18nText("BI-Conf_Formula_Other_Function")+"("+self._getFieldNum(map,BICst.FUNCTION.OTHER)+")",value:BICst.FUNCTION.OTHER,isParent:!0,open:isOpen},{id:BICst.FUNCTION.AGG,type:"bi.arrow_group_node",$testId:"bi-formula-function-tree-agg-node",text:BI.i18nText("BI-Design_Function_AGG")+"("+self._getFieldNum(map,BICst.FUNCTION.AGG)+")",value:BICst.FUNCTION.AGG,isParent:!0,open:isOpen},{id:BICst.FUNCTION.TABLE_CAL,type:"bi.arrow_group_node",$testId:"bi-formula-function-tree-table-cal-node",text:BI.i18nText("BI-Design_Rapid_Function")+"("+self._getFieldNum(map,BICst.FUNCTION.TABLE_CAL)+")",value:BICst.FUNCTION.TABLE_CAL,isParent:!0,open:isOpen},{id:BICst.FUNCTION.COMMON,type:"bi.arrow_group_node",$testId:"bi-formula-function-tree-common-node",text:BI.i18nText("BI-Basic_Common_Function")+"("+self._getFieldNum(map,BICst.FUNCTION.COMMON)+")",value:BICst.FUNCTION.COMMON,isParent:!0,open:isOpen},{id:BICst.FUNCTION.FIXED_CAL,type:"bi.arrow_group_node",$testId:"bi-formula-function-tree-fixed-cal-node",text:BI.i18nText("BI-Design_Fixed_Function")+"("+self._getFieldNum(map,BICst.FUNCTION.FIXED_CAL)+")",value:BICst.FUNCTION.FIXED_CAL,isParent:!0,open:isOpen}],nodes=BI.filter(templateNodes,function(index,node){return BI.contains(self.model.availableFunctionValues,node.value)});return nodes.sort(function(a,b){var indexA=BI.indexOf(self.model.availableFunctionValues,a.value),indexB=BI.indexOf(self.model.availableFunctionValues,b.value);return indexA-indexB}),BI.first(nodes).open=!0,BI.each(items,function(i,item){nodes.push(BI.extend({id:BI.UUID(),pId:item.fieldType},item,{type:"bi.tree_text_leaf_item",$testId:"bi-formula-function-tree-item-"+BI.toLowerCase(item.text),cls:"function-item-draggable",textAlign:"left",lgap:c.leafGap}))}),nodes},populate:function(items,keyword){var o=this.options;o.items=items,this.fieldtree.populate(this._getFormatNodes(items,keyword),keyword)},getValue:function(){return this.fieldtree.getValue()},setValue:function(v){this.fieldtree.setValue(v)},doBehavior:function(){this.fieldtree.doBehavior.apply(this.fieldtree,arguments)},getNodeByValue:function(v){return this.fieldtree.getNodeByValue(v)},setTriggerExpand:function(v){var node=this.fieldtree.getNodeById(v);BI.isNotNull(node)&&node.showView()},setTriggerCollapse:function(v){var node=this.fieldtree.getNodeById(v);node.hideView()},expandAll:function(){var self=this;BI.each([BICst.FUNCTION.MATH,BICst.FUNCTION.ARRAY,BICst.FUNCTION.DATE,BICst.FUNCTION.LOGIC,BICst.FUNCTION.OTHER,BICst.FUNCTION.TEXT,BICst.FUNCTION.COMMON,BICst.FUNCTION.AGG,BICst.FUNCTION.FIXED_CAL],function(i,id){self.setTriggerExpand(id)})},_getSelectItem:function(v,items){return BI.find(items,function(i,item){return item.value===v[0]})},getAllLeaves:function(){return this.fieldtree.getAllLeaves()}}),BI.FormulaFunctionsTree.EVENT_CHANGE="EVENT_CHANGE",BI.shortcut("bi.formula_functions_tree",BI.FormulaFunctionsTree),!function(){var Model=BI.inherit(Fix.Model,{context:["functionTypes"],computed:{availableFunctionValues:function(){var service=BI.Services.getService("bi.service.material.formula_insert");return BI.map(this.model.functionTypes,function(index,type){return service.getFunctionValueByType(type)})}}});BI.model("bi.model.material.formula_functions_tree",Model)}(),BI.FormulaFunctionPane=BI.inherit(BI.Widget,{constants:{search_width:150,search_height:22,search_gap:10},props:{baseCls:"bi-formula-function-pane bi-card",items:[]},_store:function(){return BI.Models.getModel("bi.model.material.formula_function_pane")},watch:{functionKeyword:function(functionKeyword){var o=this.options,keyword=functionKeyword.toLowerCase(),resultArray=[];BI.each(o.items,function(i,item){(item.value.toLowerCase().indexOf(keyword)>-1||BI.isEmptyString(keyword))&&resultArray.push(item)}),this.functiontree.populate(resultArray,keyword),this.fireEvent(BI.FormulaFunctionPane.EVENT_SEARCH)}},render:function(){var self=this,o=this.options,c=this.constants;return this.functionButton=BI.createWidget({type:"bi.icon_button",cls:"more-function-button formula-collapse",listeners:[{eventName:BI.IconButton.EVENT_CHANGE,action:function(){self.fireEvent(BI.FormulaFunctionPane.EVENT_CLOSE)}}]}),{type:"bi.htape",items:[{el:{type:"bi.vtape",items:[{el:this.functionButton,height:30},{el:{type:"bi.components.formula.text_func_button",handler:function(){self.fireEvent(BI.FormulaFunctionPane.EVENT_CLOSE)}}}]},width:30},{el:{type:"bi.vtape",cls:"bi-border-left",tgap:c.search_gap,items:[{el:{type:"bi.vtape",items:[{el:{type:"bi.small_search_editor",width:c.search_width-2,height:22,listeners:[{eventName:"EVENT_CHANGE",action:function(){self.store.setKeyword(this.getValue())}},{eventName:BI.SearchEditor.EVENT_CLEAR,action:function(){self.store.setKeyword(this.getValue())}}]},height:22}]},hgap:10,height:c.search_height},{el:{type:"bi.formula_functions_tree",cls:"style-top",items:o.items,ref:function(){self.functiontree=this},redmark:function(){return!0},listeners:[{eventName:BI.FormulaFunctionsTree.EVENT_CHANGE,action:function(v){self.fireEvent(BI.FormulaFunctionPane.EVENT_INSET,v)}}]}}]}}]}},getAllLeaves:function(){return this.functiontree.getAllLeaves()}}),BI.FormulaFunctionPane.EVENT_INSET="EVENT_INSET",BI.FormulaFunctionPane.EVENT_CLOSE="EVENT_CLOSE",BI.FormulaFunctionPane.EVENT_SEARCH="EVENT_SEARCH",BI.shortcut("bi.formula_function_pane",BI.FormulaFunctionPane),!function(){var Model=BI.inherit(Fix.Model,{context:["functionKeyword"],state:function(){return{}},computed:{},actions:{setKeyword:function(v){this.model.functionKeyword=v}}});BI.model("bi.model.material.formula_function_pane",Model)}(),!function(){var SymbolGroup=BI.inherit(BI.Widget,{constants:{hgap:7.5,textWidth:14,textHeight:17,enableSwitcher:!1},_defaultConfig:function(){return BI.extend(SymbolGroup.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-formula-symbol-group",fieldType:BICst.FORMULA_GENERATE_TYPE.AUTO})},render:function(){var self=this,c=this.constants,items=[{cls:"operator-plus-font",$testId:"bi-formula-symbol-group-plus",value:"+"},{cls:"operator-minus-font",$testId:"bi-formula-symbol-group-minus",value:"-"},{cls:"operator-multi-font",$testId:"bi-formula-symbol-group-mul",value:"*"},{cls:"operator-divide-font",$testId:"bi-formula-symbol-group-div",value:"/"},{cls:"operator-left-brackets-font",$testId:"bi-formula-symbol-group-left-brackets",value:"("},{cls:"operator-right-brackets-font",$testId:"bi-formula-symbol-group-right-brackets",value:")"}],layoutItems={left:[{type:"bi.default",width:5,height:1},{type:"bi.button_group",chooseType:-1,items:BI.createItems(items,{type:"bi.icon_button",forceNotSelected:!0,once:!1,textWidth:c.textWidth,textHeight:c.textHeight,cls:"symbol-button bi-list-item"}),layouts:[{type:"bi.left_vertical_adapt",lgap:15}],listeners:[{eventName:BI.ButtonGroup.EVENT_CHANGE,action:function(v){self.fireEvent("EVENT_CHANGE",v)}}],ref:function(_ref){self.symbolgroup=_ref}}]};return this.options.enableSwitcher===!0&&(layoutItems.right=[{el:{type:"bi.label",text:BI.i18nText("BI-Basic_Field_Type")},rgap:10},{el:{type:"bi.icon_combo",items:[{iconCls:"formula-auto-font",text:BI.i18nText("BI-Basic_Auto"),$testId:"bi-formula-symbol-group-auto",value:BICst.FORMULA_GENERATE_TYPE.AUTO},{iconCls:"string-field-font",$testId:"bi-formula-symbol-group-string",text:BI.i18nText("BI-Basic_Text"),value:BICst.FORMULA_GENERATE_TYPE.STRING},{iconCls:"number-field-font",$testId:"bi-formula-symbol-group-number",text:BI.i18nText("BI-Basic_Number"),value:BICst.FORMULA_GENERATE_TYPE.NUMBER},{iconCls:"date-field-font",$testId:"bi-formula-symbol-group-date",text:BI.i18nText("BI-Basic_Time"),value:BICst.FORMULA_GENERATE_TYPE.DATE}],value:this.options.fieldType,ref:function(_ref){self.iconCombo=_ref},listeners:[{eventName:BI.IconCombo.EVENT_CHANGE,action:function(){self.fireEvent("EVENT_TYPE_CHANGE")}}]},rgap:5}]),{type:"bi.left_right_vertical_adapt",items:layoutItems}},getValue:function(){if(BI.isNotNull(this.iconCombo))return this.iconCombo.getValue()},setValue:function(v){BI.isNotNull(this.iconCombo)&&this.iconCombo.setValue(v||BICst.FORMULA_GENERATE_TYPE.AUTO)}});BI.shortcut("bi.symbol_group",SymbolGroup)}(),BI.FormulaInsert=BI.inherit(BI.Widget,{constants:{height:30,width:160,right:10,button_bottom:7,pane_bottom:-1,MORE_FUNCTION:0,RETRACT:1,retract_width:30,more_width:200,describe_height:200,describe_retract_height:25,enableSwitcher:!1,abandonFunctions:[],paramRegex:/(\$[\{][^\}]*[\}])/,functionRegex:/\w+/},props:{baseCls:"bi-formula-insert",fieldItems:[],errorFieldItems:[],functionTypes:["COMMON","MATH","DATETIME","ARRAY","TEXT","LOGIC","OTHER"],validationChecker:function(){return BICst.FORMULA_STATE.VALID}},_store:function(){return BI.Models.getModel("bi.model.material.formula_insert",{fieldItems:this.options.fieldItems,functionTypes:this.options.functionTypes})},render:function(){var self=this,o=this.options,c=this.constants;return self.validation=BICst.FORMULA_STATE.VALID,BI.FormulaCollections=BI.filter(BI.FormulaOriginCollections,function(index,name){return BI.contains(self.model.availableFunctions,name.toUpperCase())}),this.fieldPane=BI.createWidget({type:"bi.formula_field_pane",cls:"bi-formula-field-pane bi-border-left",items:o.fieldItems,listeners:[{eventName:BI.FormulaFieldPane.EVENT_CHANGE,action:function(v){self.store.insertField(v[0]),self.formulaedit.insertField(v[0],!0)}},{eventName:BI.FormulaFieldPane.EVENT_SEARCH,action:function(){self._bindFieldDragEvent()}}]}),this.symbolgroup=BI.createWidget({type:"bi.symbol_group",height:c.height,enableSwitcher:o.enableSwitcher,fieldType:o.fieldType,cls:"symbol-group-column",listeners:[{eventName:"EVENT_CHANGE",action:function(v){self.store.insertOperator(v),self.formulaedit.insertOperator(v)}},{eventName:"EVENT_TYPE_CHANGE",action:function(){self.fireEvent(BI.FormulaInsert.EVENT_TYPE_CHANGE)}}]}),this.formulaedit=BI.createWidget({type:"bi.formula_editor",$testId:"bi-formula-editor",cls:"bi-border-top",tipType:"warning",paramFormatter:BI.bind(this._paramFormatter,this),pasteSetter:function(v,position){self._setValue(v,position),self._checkValidation()},watermark:BI.i18nText("BI-Conf_Formula_Water_Mark"),listeners:[{eventName:BI.FormulaEditor.EVENT_CHANGE,action:function(){self._getFunctionItems(this.getValue()),self._checkValidation()}},{eventName:BI.FormulaEditor.EVENT_BLUR,action:function(){self.hideTip(),self.checkValidation()||(self.formulaedit.setTitle(self.formulaedit.getTip()||self.getErrorText()||BI.i18nText("BI-Basic_Formula_Invalid"),{belowMouse:!0}),self.showTip())}},{eventName:BI.FormulaEditor.EVENT_FOCUS,action:function(){self.formulaedit.setTitle(""),self.checkValidation()||self.showTip()}},{eventName:BI.FormulaEditor.EVENT_KEY_UP,action:function(key){self.store.inputOperator(key)}}]}),this.describePane=BI.createWidget({type:"bi.vtape",cls:"bi-border-top formula-describe-pane",invisible:!0,items:[{el:{type:"bi.left_right_vertical_adapt",items:{left:[{type:"bi.label",text:BI.i18nText("BI-Conf_Function_Description"),cls:"more-function-button",height:25}],right:[{type:"bi.icon_button",cls:"column-pre-page-h-font",height:25,width:25,value:!1,listeners:[{eventName:BI.IconButton.EVENT_CHANGE,action:function(){var iconValue=this.getValue();iconValue?(this.element.addClass("column-pre-page-h-font").removeClass("column-next-page-h-font"),self._reVsize(c.describe_retract_height)):(this.element.addClass("column-next-page-h-font").removeClass("column-pre-page-h-font"),self._reVsize(c.describe_height)),this.setValue(!iconValue)}}],ref:function(_ref){self.describeButton=_ref}}]},lhgap:10,rhgap:10},height:25},{type:"bi.button_group",layouts:[{type:"bi.vertical",scrollable:!1,hgap:20,vgap:5}],ref:function(_ref){self.describeGroup=_ref}}]}),this.functionbutton=BI.createWidget({type:"bi.icon_button",cls:"more-function-button formula-expand",listeners:[{eventName:BI.IconButton.EVENT_CHANGE,action:BI.bind(self._openFunctionPane,self)}]}),this.functionpane=BI.createWidget({type:"bi.formula_function_pane",items:self.model.functionItems,listeners:[{eventName:BI.FormulaFunctionPane.EVENT_CLOSE,action:function(){self.functionTab.setSelect(c.RETRACT),self._reHsize(c.retract_width)}},{eventName:BI.FormulaFunctionPane.EVENT_INSET,action:function(v){var functionName=v.text;BI.isNotEmptyString(functionName)&&(self.store.insertFunction(functionName),self.formulaedit.insertFunction(functionName),self.describeButton.element.addClass("column-next-page-h-font").removeClass("column-pre-page-h-font"),self._reVsize(c.describe_height),self.describeButton.setValue(!0))}},{eventName:BI.FormulaFunctionPane.EVENT_SEARCH,action:function(){self._bindFunctionDragEvent()}}]}),this.functionTab=BI.createWidget({type:"bi.tab",showIndex:c.RETRACT,cardCreator:function(v){switch(v){case c.RETRACT:return{type:"bi.vtape",items:[{el:self.functionbutton,height:30},{el:{type:"bi.components.formula.text_func_button",handler:function(){self._openFunctionPane()}}}]};case c.MORE_FUNCTION:return self.functionpane}}}),this.formulaedit.element.droppable({accept:".bi-tree-text-leaf-item",drop:function(event,ui){var fieldId=ui.helper.attr("fieldId"),func=ui.helper.attr("func");BI.isNotNull(fieldId)&&(self.store.insertDragField(fieldId,!0),self.formulaedit.insertField(fieldId,!0)),BI.isNotNull(func)&&(self.store.insertDragFunction(func),self.formulaedit.insertFunction(func))}}),this._bindFunctionDragEvent(),this.populate(o.fieldItems),{type:"bi.htape",items:[{el:this.functionTab,width:c.retract_width},{el:this.fieldPane,width:169},{el:{type:"bi.vtape",cls:"bi-border-left",ref:function(_ref){self.editorpane=_ref},items:[{el:this.symbolgroup,height:34},{el:this.formulaedit,height:"fill"},{el:this.describePane,height:0}]}}],height:o.height,width:o.width,ref:function(_ref){self.formulaPane=_ref}}},mounted:function(){var o=this.options;BI.isNotNull(o.value)&&this.setValue(o.value)},_paramFormatter:function(fieldId){return BI.has(this.fieldErrorValueTextMap,fieldId)?"<!"+this.fieldErrorValueTextMap[fieldId]+"!>":this.fieldValueTextMap[fieldId]},_getFunctionItems:function(v){var self=this,c=this.constants,result=this._analyzeContent(v||"")||[];this.functionArray=[],BI.each(result.reverse(),function(i,str){var func=self._isFunction(str);BI.isNotEmptyObject(func)&&!BI.some(self.functionArray,function(j,item){var text=item.text.toLowerCase(),lowerString=str.toLowerCase();return text===lowerString})&&self.functionArray.push(func)});var items=[];BI.each(this.functionArray,function(index,valueObj){var item=BI.createWidget({type:"bi.left",items:[{type:"bi.label",cls:"cm-strong",textAlign:"left",text:valueObj.text+":"},{type:"bi.label",whiteSpace:"normal",textAlign:"left",text:valueObj.description}]});items.push(item)}),this.describeGroup.populate(items),BI.isEmptyArray(items)?(this._reVsize(0),this.describePane.setVisible(!1),this.describeButton.element.removeClass("column-pre-page-h-font")):this.describePane.isVisible()||(this._reVsize(c.describe_height),this.describeButton.setValue(!0),this.describeButton.element.addClass("column-next-page-h-font"),this.describePane.setVisible(!0))},_reHsize:function(size){this.formulaPane.options.items[0].width=size,this.formulaPane.resize()},_reVsize:function(size){this.editorpane.options.items[2].height=size,this.editorpane.resize()},_isFunction:function(str){return BI.find(this.model.functionItems,function(i,item){var text=item.text.toLowerCase(),lowerString=str.toLowerCase(),upperString=str.toUpperCase(),notMixedString=upperString===str||lowerString===str;return text===lowerString&&notMixedString})},_checkValidation:function(){var self=this,o=this.options,str=self.formulaedit.getCheckString(),formula=self.getValue(),usedFields=self.getUsedFields(),allInvalidIds=BI.map(o.errorFieldItems,"value"),isAllFieldValid=!BI.some(usedFields,function(index,fId){return BI.contains(allInvalidIds,fId)});if(isAllFieldValid){var checkId=BI.UUID();self.store.setLastCheckId(checkId),BI.Func.checkFormulaValidation({str:str,origin:formula,fieldsMap:this.fieldsDetailMap},function(valid,calculationType,errorCode,aggregate){if(checkId===self.model.lastCheckId){var validState;if(valid)validState=o.validationChecker(calculationType,usedFields,formula,errorCode,aggregate);else switch(errorCode){case BICst.ErrorCode.FORMULA_ERROR.DIS_AGGRESSIVE_FUNCTION_HAS_FIELD_WITH_DETAIL_FILTER:validState=BICst.FORMULA_STATE.DETAIL_FILTER_NOT_SUPPORT}BI.isNull(validState)&&(validState=valid?BICst.FORMULA_STATE.VALID:BICst.FORMULA_STATE.INVALID);var validation=validState===BICst.FORMULA_STATE.VALID;validation?(self.validation=BICst.FORMULA_STATE.VALID,self.hideTip(),self.fireEvent(BI.FormulaInsert.EVENT_CHANGE),self.fireEvent(BI.FormulaInsert.EVENT_VALID)):(self.validation=validState,self.showTip(),self.fireEvent(BI.FormulaInsert.EVENT_ERROR))}})}else self.validation=BICst.FORMULA_STATE.FIELD_MISS,self.showTip(),self.fireEvent(BI.FormulaInsert.EVENT_ERROR)},_analyzeContent:function(v){var regx=/\$[\{][^\}]*[\}]|\w+|\$\{[^\$\(\)\+\-\*\/)\$,]*\w\}|\$\{[^\$\(\)\+\-\*\/]*\w\}|\$\{[^\$\(\)\+\-\*\/]*[\u4e00-\u9fa5]\}|\w|(.)|\n/g;return v.match(regx)},_createFieldTextValueMap:function(fieldItems){var fieldMap={};return BI.each(fieldItems,function(idx,typeItems){BI.each(typeItems,function(i,fieldItem){fieldMap[fieldItem.text]=fieldItem.value})}),fieldMap},_createErrorTextValueMap:function(){var fieldMap={};return BI.each(this.options.errorFieldItems,function(idx,fieldItem){fieldMap[fieldItem.text]=fieldItem.value}),fieldMap},_createErrorValueTextMap:function(){var fieldMap={};return BI.each(this.options.errorFieldItems,function(idx,fieldItem){fieldMap[fieldItem.value]=fieldItem.text}),fieldMap},_createFieldValueTextMap:function(fieldItems){var fieldMap={};return BI.each(fieldItems,function(idx,typeItems){BI.each(typeItems,function(i,fieldItem){fieldMap[fieldItem.value]=fieldItem.text})}),fieldMap},_createFieldDetailMap:function(fieldItems){var fieldMap={};return BI.each(fieldItems,function(idx,typeItems){BI.each(typeItems,function(i,fieldItem){var fType=fieldItem.fieldType;switch(fType){case BICst.FORMULA_WIDGET_FIELD_TYPE.DATE:fType=BICst.COLUMN.DATE;break;case BICst.FORMULA_WIDGET_FIELD_TYPE.STRING:fType=BICst.COLUMN.STRING;break;case BICst.FORMULA_WIDGET_FIELD_TYPE.NUMBER:case BICst.COLUMN.CALCULATE:fType=BICst.COLUMN.NUMBER}fieldMap[fieldItem.value]={type:fType,isAgg:fieldItem.isAgg||!1,hasDetailFilter:fieldItem.hasDetailFilter||!1,freeAggregate:fieldItem.freeAggregate||!1}})}),fieldMap},_bindFieldDragEvent:function(){var self=this;BI.each(self.fieldPane.getAllLeaves(),function(i,node){node.element.draggable({cursorAt:{top:5,left:5},helper:function(){var hint=BI.createWidget({type:"bi.helper",value:node.getValue(),text:self.fieldValueTextMap[node.getValue()]});return BI.createWidget({element:self,type:"bi.default",items:[hint]}),hint.element.attr({fieldId:node.getValue(),field:self.fieldValueTextMap[node.getValue()]}),hint.element}})})},_bindFunctionDragEvent:function(){var self=this;BI.each(self.functionpane.getAllLeaves(),function(i,node){node.element.draggable({cursorAt:{top:5,left:5},helper:function(){var hint=BI.createWidget({type:"bi.helper",value:node.getValue(),text:node.getValue()});return BI.createWidget({element:self,type:"bi.default",items:[hint]}),hint.element.attr({func:node.getValue()}),hint.element}})})},_openFunctionPane:function(){var c=this.constants;this.functionTab.setSelect(c.MORE_FUNCTION),this._reHsize(c.more_width)},checkValidation:function(){return this.validation===BICst.FORMULA_STATE.VALID},getErrorText:function(){var errorText="";if(BI.isEmptyString(this.getValue()))errorText=BI.i18nText("BI-Basic_Please_Add_Formula");else switch(this.validation){case BICst.FORMULA_STATE.DETAIL_FILTER_NOT_SUPPORT:errorText=BI.i18nText("BI-Design_Formula_Not_Support_Detail_Filter");break;case BICst.FORMULA_STATE.AGG_INVALID:errorText=BI.i18nText("BI-Design_Detail_Table_Not_Support_AGG");break;case BICst.FORMULA_STATE.FIELD_MISS:errorText=BI.i18nText("BI-Basic_Field_Cannot_Find");break;case BICst.FORMULA_STATE.NOT_SUPPORT_STRING_OR_DATE:errorText=BI.i18nText("BI-Design_Not_Support_Date_Or_String");break;case BICst.FORMULA_STATE.RAPID_INVALID:errorText=BI.i18nText("BI-Design_Detail_Table_Not_Support_Rapid");break;default:errorText=BI.i18nText("BI-Basic_Formula_Invalid")}return errorText},showTip:function(){this.formulaedit.showTip(this.getErrorText())},hideTip:function(){this.formulaedit.hideTip()},refresh:function(){this.formulaedit.refresh()},_setValue:function(value,position){var self=this,c=this.constants;value=value||"";var result=this._analyzeContent(value),fieldArray=[],functionArray=[],lineNum=0,offset=0,valueString="";BI.isNotNull(position)&&(lineNum=position.line,offset=position.ch);var wrapChar=self.formulaedit.getParamWrap();BI.each(result,function(i,str){var nextStr=i===result.length-1?"":result[i+1];if(c.paramRegex.test(str)){var fieldId=str.substring(2,str.length-1),fieldFormattedName=self._paramFormatter(fieldId)||"undefined",showName=fieldFormattedName.replaceAll("^<!.*!>$",function(str){return str.substring(2,str.length-2)});showName=wrapChar+showName+wrapChar;var fromPos=CodeMirror.Pos(lineNum,offset);valueString+=showName,offset+=showName.length;var endPos=CodeMirror.Pos(lineNum,offset);fieldArray.push({from:fromPos,to:endPos,value:fieldId,invalid:/^<!.*!>$/.test(fieldFormattedName),text:showName})}else{if("("===nextStr[0]&&BI.isNotNull(self._isFunction(str))){var fromPos=CodeMirror.Pos(lineNum,offset),endPos=CodeMirror.Pos(lineNum,offset+str.length);functionArray.push({from:fromPos,to:endPos,value:str})}"\n"===str&&(lineNum++,offset=0),valueString+=str,"\n"!==str&&(offset+=str.length)}}),this.formulaedit.insertString(valueString),BI.each(fieldArray,function(idx,field){self.formulaedit.markField(field)}),BI.each(functionArray,function(idx,field){self.formulaedit.markFunction(field)})},setValue:function(v){this.formulaedit.refresh(),this.formulaedit.setValue(""),this._setValue(v),this._checkValidation()},getFormulaString:function(){return this.formulaedit.getFormulaString()},getUsedFields:function(){return this.formulaedit.getUsedFields()},setFormulaFieldType:function(v){return this.symbolgroup.setValue(v)},getFormulaFieldType:function(){return this.symbolgroup.getValue()},getValue:function(){return this.formulaedit.getValue()},populate:function(fieldItems){this.options.fieldItems=fieldItems,this.fieldTextValueMap=this._createFieldTextValueMap(fieldItems),this.fieldValueTextMap=this._createFieldValueTextMap(fieldItems),this.fieldErrorTextValueMap=this._createErrorTextValueMap(),this.fieldErrorValueTextMap=this._createErrorValueTextMap(),this.fieldsDetailMap=this._createFieldDetailMap(fieldItems),this.formulaedit.setFieldTextValueMap(BI.extend(this.fieldTextValueMap,this.fieldErrorTextValueMap)),this.fieldPane.populate(fieldItems),this._bindFieldDragEvent()}}),BI.FormulaInsert.EVENT_VALID="EVENT_VALID",BI.FormulaInsert.EVENT_ERROR="EVENT_ERROR",BI.FormulaInsert.EVENT_CHANGE="EVENT_CHANGE",BI.FormulaInsert.EVENT_TYPE_CHANGE="EVENT_TYPE_CHANGE",BI.shortcut("bi.formula_insert",BI.FormulaInsert),!function(){var Model=BI.inherit(Fix.Model,{childContext:["fieldKeyword","functionKeyword","functionTypes"],state:function(){var o=this.options;return{fieldItems:o.fieldItems,fieldKeyword:"",functionKeyword:"",functionTypes:o.functionTypes,lastCheckId:null}},computed:{allFieldItems:function(){return BI.flatten(this.options.fieldItems)},numberFieldItems:function(){return BI.filter(this.model.allFieldItems,function(index,fieldItem){return fieldItem.fieldType===BICst.COLUMN.NUMBER})},numberFieldIds:function(){return BI.map(this.model.numberFieldItems,"value")},stringFieldItems:function(){return BI.filter(this.model.allFieldItems,function(index,fieldItem){return fieldItem.fieldType===BICst.COLUMN.STRING})},stringFieldIds:function(){return BI.map(this.model.stringFieldItems,"value")},dateFieldItems:function(){return BI.filter(this.model.allFieldItems,function(index,fieldItem){return fieldItem.fieldType===BICst.COLUMN.DATE})},dateFieldIds:function(){return BI.map(this.model.dateFieldItems,"value")},functionItems:function(){var self=this,functionObjs=BI.FormulaJSONs,functionItems=[],service=BI.Services.getService("bi.service.material.formula_insert");return BI.each(functionObjs,function(i,functionObj){self.model.functionTypes.contains(functionObj.type)&&functionItems.push({text:functionObj.name,value:functionObj.name,fieldType:service.getFunctionValueByType(functionObj.type),description:functionObj.def,title:functionObj.def})}),functionItems},availableFunctions:function(){return BI.map(this.model.functionItems,"value");
}},actions:{insertOperator:function(v){},inputOperator:function(v){},insertField:function(v){},insertFunction:function(func){},insertDragFunction:function(id){},insertDragField:function(fieldId){},addFunctionType:function(type){this.model.functionTypes.push(type)},setLastCheckId:function(value){this.model.lastCheckId=value}}});BI.model("bi.model.material.formula_insert",Model)}(),!function(){var Service=BI.inherit(BI.OB,{getFunctionValueByType:function(functionType){switch(functionType){case"MATH":return BICst.FUNCTION.MATH;case"TEXT":return BICst.FUNCTION.TEXT;case"DATETIME":return BICst.FUNCTION.DATE;case"ARRAY":return BICst.FUNCTION.ARRAY;case"LOGIC":return BICst.FUNCTION.LOGIC;case"AGG":return BICst.FUNCTION.AGG;case"COMMON":return BICst.FUNCTION.COMMON;case"TABLE_CAL":return BICst.FUNCTION.TABLE_CAL;case"OTHER":return BICst.FUNCTION.OTHER;case"FIXED_CAL":return BICst.FUNCTION.FIXED_CAL;default:return}}});BI.service("bi.service.material.formula_insert",Service)}(),!function(){var Button=BI.inherit(BI.BasicButton,{props:{baseCls:"bi-components-formula-text-func-button cursor-pointer",$testId:"bi-components-formula-text-func-button"},render:function(){return{type:"bi.horizontal_adapt",items:[{type:"bi.text_button",textWidth:17,textHeight:17,whiteSpace:"normal",text:BI.i18nText("BI-Basic_Function")}]}}});BI.shortcut("bi.components.formula.text_func_button",Button)}(),!function(){BI.Func=BI.Func||{},BI.extend(BI.Func,{paintWaterMark:function(canvas,conf){var markConfig=BI.extend({text:"watermark",fontSize:16,fontFamily:"Microsoft YaHei, PingFangSC-Light, SimHei, SimSun, FangSong, KaiTi, Arial, Tahoma, Verdana, Times New Roman",color:"#999999",opacity:.15,angle:20,fontWeight:"bold",horizontalGap:200,verticalGap:100},conf),deg=markConfig.angle*Math.PI/180,watermarkCanvas=BI.Func.createEmptyCanvas(),cheight=canvas.height,cwidth=canvas.width,texts=(markConfig.text+"").split("\n"),actualWidth=cwidth*Math.cos(deg)+cheight*Math.sin(deg),actualHeight=cwidth*Math.sin(deg)+cheight/Math.cos(deg);watermarkCanvas.width=actualWidth,watermarkCanvas.height=actualHeight;var watermarkCtx=watermarkCanvas.getContext("2d");watermarkCtx.rotate(-deg),watermarkCtx.font=markConfig.fontWeight+" "+markConfig.fontSize+"px "+markConfig.fontFamily,watermarkCtx.fillStyle=markConfig.color,watermarkCtx.globalAlpha=markConfig.opacity,watermarkCtx.textAlign="center";for(var maxTextWidth=0,t=0;t<texts.length;t++)maxTextWidth=Math.max(maxTextWidth,watermarkCtx.measureText(texts[t]).width);for(var markWidth=maxTextWidth+markConfig.horizontalGap,textHeight=BI.DOM.getTextSizeHeight(markConfig.text,markConfig.fontSize),markHeight=textHeight*texts.length+markConfig.verticalGap,col=BI.parseInt(actualWidth/markWidth),row=BI.parseInt(actualHeight/markHeight),fillLeft=canvas.height*Math.tan(deg),r=0;r<row+1;r++)for(var c=0;c<col+3;c++)for(var left=c*markWidth-fillLeft+(r%2===0?-(markWidth/2):0),textLen=0;textLen<texts.length;textLen++)watermarkCtx.fillText(texts[textLen],left,r*markHeight+textHeight*textLen);var ctxr=canvas.getContext("2d");ctxr.fillStyle=ctxr.createPattern(watermarkCanvas,"no-repeat"),ctxr.fillRect(0,0,watermarkCanvas.width,watermarkCanvas.height)},createEmptyCanvas:function(){var canvas=document.createElement("canvas");return document.createElement("canvas").getContext||(canvas=window.G_vmlCanvasManager.initElement(canvas)),canvas}})}(),BI.WarningLabel=BI.inherit(BI.Single,{props:{baseCls:"bi-warning-label",textAlign:"center",whiteSpace:"nowrap",forceCenter:!1,textWidth:null,textHeight:null,hgap:0,vgap:0,lgap:0,rgap:0,tgap:0,bgap:0,text:""},render:function(){var self=this,o=this.options;return{type:"bi.label",ref:function(){self.label=this},textAlign:o.textAlign,whiteSpace:o.whiteSpace,forceCenter:o.forceCenter,textWidth:o.textWidth,textHeight:o.textHeight,hgap:o.hgap,vgap:o.vgap,lgap:o.lgap,rgap:o.rgap,tgap:o.tgap,bgap:o.bgap}},mounted:function(){var o=this.options;BI.isKey(o.text)&&this.setText(o.text)},_digest:function(text){return text=BI.htmlEncode(text||""),text.replaceAll("\\$\\{(.*?)\\}",function(ori,str){return"<span class='warning-label'>"+str+"</span>"})},setText:function(v){this.options.text=v,this.label.text.text.element.html(this._digest(v))},getText:function(){return this.options.text},setValue:function(v){this.label.setValue(v)}}),BI.shortcut("bi.warning_label",BI.WarningLabel),!function(){var Widget=BI.inherit(BI.BasicButton,{_defaultConfig:function(){var conf=Widget.superclass._defaultConfig.apply(this,arguments);return BI.extend(conf,{baseCls:(conf.baseCls||"")+" bi-line-segment-button bi-list-item-effect",once:!0,readonly:!0,hgap:10,height:25,lineHeight:3})},render:function(){var self=this,o=this.options;this.text=BI.createWidget({type:"bi.label",element:this,text:o.text,height:o.height,value:o.value,hgap:o.hgap}),BI.createWidget({type:"bi.absolute",element:this,items:[{el:{type:"bi.layout",cls:"line-segment-button-line",height:o.lineHeight,ref:function(_ref){self.line=_ref}},left:0,right:0,bottom:0}]})},setSelected:function(v){Widget.superclass.setSelected.apply(this,arguments),v?this.line.element.addClass("bi-high-light-background"):this.line.element.removeClass("bi-high-light-background")},setText:function(text){Widget.superclass.setText.apply(this,arguments),this.text.setText(text)},destroy:function(){Widget.superclass.destroy.apply(this,arguments)}});BI.shortcut("bi.line_segment_button",Widget)}(),BI.GridList=BI.inherit(BI.Widget,{props:{baseCls:"bi-grid-list",items:[],itemHeight:30,showLoader:!1,itemsCreator:BI.emptyFn,onLoaded:BI.emptyFn,hasNext:BI.emptyFn,count:!1,overscanRowCount:0},mounted:function(){var self=this;this._resizeHandler=BI.debounce(function(){var width=self._getListWidth(),height=self._getListHeight();self.list.getWidth()===width&&self.list.getHeight()===height||self._populate()},30),BI.ResizeDetector.addResizeListener(this.wrapper,function(){self._resizeHandler()}),BI.isNotEmptyArray(this.options.items)&&this._populate()},render:function(){var self=this,o=this.options;return this.times=1,this.count=0,this.loaderStatus="loaded",{type:"bi.absolute",items:[{el:{type:"bi.grid_view",estimatedRowSize:o.itemHeight,estimatedColumnSize:this._getListWidth(),overscanRowCount:o.overscanRowCount,rowHeightGetter:function(){return o.itemHeight},columnWidthGetter:function(){return self.listWidth-BI.DOM.getScrollWidth()},ref:function(ref){self.list=ref},listeners:[{eventName:BI.GridView.EVENT_SCROLL,action:function(sc){self.fireEvent("EVENT_SCROLL",sc.scrollTop)}}]},top:0,right:0,bottom:0,left:0}],ref:function(_ref){self.wrapper=_ref}}},_getListWidth:function(){return this.element.width()},_getListHeight:function(){return this.element.height()},_populate:function(){var o=this.options,self=this;this.listWidth=this._getListWidth(),this.list.setEstimatedColumnSize(this.listWidth-BI.DOM.getScrollWidth()),this.list.setWidth(this.listWidth),this.list.setHeight(this._getListHeight());var items=BI.map(this.options.items,function(i,item){return[item]});o.showLoader&&(this._hasNext()||"end"===this.loaderStatus)&&items.push([{type:"bi.loading_bar",ref:function(){switch(self.loaderStatus){case"end":this.setEnd();break;case"loaded":default:this.setLoaded()}},listeners:[{eventName:BI.Controller.EVENT_CHANGE,action:function(type){type===BI.Events.CLICK&&(this.setLoading(),self._nextLoad())}}]}]),this.list.populate(items)},_nextLoad:function(){var self=this,o=this.options;o.itemsCreator.apply(this,[{times:++this.times},function(){self._addItems.apply(self,arguments)}])},_addItems:function(items){var o=this.options;this.count+=items.length,o.items=BI.concat(o.items,items),this._hasNext()?this.setLoaded():this.setEnd(),this._populate()},_hasNext:function(){var o=this.options;return BI.isNumber(o.count)?this.count<o.count:!!o.hasNext.apply(this,[{times:this.times,count:this.count}])},populate:function(items){var o=this.options,self=this;return 0===arguments.length&&BI.isFunction(o.itemsCreator)?void o.itemsCreator.apply(this,[{times:1},function(){if(0===arguments.length)throw new Error("参数不能为空");self.populate.apply(self,arguments),o.onLoaded()}]):(items&&items!==o.items&&(o.items=items),this.times=1,this.count=items.length,this.loaderStatus="loaded",void this._populate())},setScrollTop:function(top){this.list.setScrollTop(top)},setLoaded:function(){this.loaderStatus="loaded"},setEnd:function(){this.loaderStatus="end"},setLoading:function(){this.loaderStatus="loading"},destroyed:function(){BI.Resizers.remove(this.getName())}}),BI.GridList.EVENT_CHANGE="EVENT_CHANGE",BI.shortcut("bi.grid_list",BI.GridList),!function(){var HResizeContainer=BI.inherit(BI.Widget,{props:{baseCls:"bi-resize-container-htape",minSize:260,maxSize:390,initLeftSize:null,left:{type:"bi.default"},right:{type:"bi.default"}},render:function(){var self=this,o=this.options;return{type:"bi.htape",items:[{type:"bi.resizable_container",minSize:o.minSize,maxSize:o.maxSize,content:o.left,resize:BI.bind(this._resizeContainer,this),width:o.initLeftSize||o.minSize},{el:o.right}],ref:function(ref){self.contianer=ref}}},_resizeContainer:function(size){this.contianer.attr("items")[0].width=size,this.contianer.resize()}});BI.shortcut("bi.resize_container.htape",HResizeContainer)}(),!function(){var ResizeableContainer=BI.inherit(BI.Widget,{props:{baseCls:"bi-resizable-container",content:{},direction:"e",minSize:15,maxSize:Number.MAX_VALUE,resizable:!0,start:BI.emptyFn,resize:BI.emptyFn,stop:BI.emptyFn,startDragging:BI.emptyFn},render:function(){function optimizeSize(s){return BI.clamp(s,o.minSize,o.maxSize||Number.MAX_VALUE)}var self=this,o=this.options,startDrag=!1,size=0,offset=0;this.defaultSize=null,this.handler=BI.createWidget(BI.extend(this._createHandle(),{invisible:!o.resizable})),this.handler.element.on("click",function(e){e.stopPropagation()}),this._stared=!1;var mouseMoveTracker=new BI.MouseMoveTracker(function(deltaX,deltaY){mouseMoveTracker.isDragging()&&(self._stared||(self._stared=!0,o.startDragging()),BI.$(document.body).css("cursor",self._isHorizontalResize()?"ew-resize":"ns-resize"),startDrag=!0,"w"===o.direction&&(deltaX=-deltaX),offset+=deltaX,"n"===o.direction&&(deltaY=-deltaY),offset+=deltaY,size=optimizeSize((self.defaultSize||self._getDefaultSize())+offset),self.handler.element.addClass("dragging"),o.resize(size),BI.$(window).trigger("resize"))},function(){startDrag===!0&&(size=optimizeSize(size),o.stop(size),self.defaultSize=size,size=0,offset=0,startDrag=!1,self._stared=!1,BI.$(document.body).css("cursor","auto")),self.handler.element.removeClass("dragging"),self.handler.element.removeClass("suitable"),mouseMoveTracker.releaseMouseMoves()},document);return this.handler.element.on("mousedown",function(event){mouseMoveTracker.captureMouseMoves(event)}),{type:"bi.absolute",items:[{el:o.content,left:0,right:0,top:0,bottom:0},BI.extend({el:this.handler},this._getHandlePosition())]}},_isHorizontalResize:function(){return"w"===this.options.direction||"e"===this.options.direction},_createHandle:function(){return this._isHorizontalResize()?{type:"bi.icon_label",cls:"horizontal-drag-font resize-handle-ew",width:5}:{type:"bi.icon_label",cls:"vertical-drag-font resize-handle-ns",height:5}},_getHandlePosition:function(){switch(this.options.direction){case"e":return{right:-2,top:0,bottom:0};case"w":return{left:-2,top:0,bottom:0};case"s":return{left:0,right:0,bottom:-8};default:return{}}},_getDefaultSize:function(){var o=this.options;return this._isHorizontalResize()?o.width||o.minSize:o.height||o.minSize},setMinSize:function(minWidth){this.options.minSize=minWidth},setMaxSize:function(maxWidth){this.options.maxSize=maxWidth},setResizeable:function(resizable){this.options.resizeable=resizable,this.handler.setVisible(resizable),BI.$(window).trigger("resize")},reset:function(){this.defaultSize=null}});BI.shortcut("bi.resizable_container",ResizeableContainer)}(),!function(){var VResizeContainer=BI.inherit(BI.Widget,{props:{baseCls:"bi-resize-container-vtape",minSize:100,maxSize:200,initTopSize:null,top:{type:"bi.default"},bottom:{type:"bi.default"}},render:function(){var self=this,o=this.options;return{type:"bi.vtape",items:[{type:"bi.resizable_container",direction:"s",minSize:o.minSize,maxSize:o.maxSize,content:o.top,resize:BI.bind(this._resizeContainer,this),height:o.initTopSize||o.minSize},{el:o.bottom}],ref:function(ref){self.contianer=ref}}},_resizeContainer:function(size){this.contianer.attr("items")[0].height=size,this.contianer.resize()}});BI.shortcut("bi.resize_container.vtape",VResizeContainer)}(),!function(){var SelectColorItem=BI.inherit(BI.BasicButton,{props:{extraCls:"bi-select-color-item bi-border",value:[],colors:[],once:!0,height:50,width:130},mounted:function(){var o=this.options;BI.each(this.layouts,function(i,layout){layout.element.css("background-color",o.value[i])})},render:function(){var self=this,o=this.options;return this.layouts=[],{type:"bi.absolute",items:[{el:{type:"bi.button_group",items:BI.map(o.colors,function(){return{type:"bi.layout",ref:function(ref){self.layouts.push(ref)}}}),layouts:[{type:"bi.center",hgap:.5,vgap:2}]},left:1,right:2,top:0,bottom:0}]}}});SelectColorItem.EVENT_CHANGE="EVENT_CHANGE",BI.shortcut("bi.select_color_item",SelectColorItem)}(),!function(){var SelectColorPopup=BI.inherit(BI.Widget,{props:{baseCls:"bi-select-color-popup",height:160,items:[]},render:function(){var self=this,o=this.options,items=[];return BI.each(o.colors,function(i,style){items.push({type:"bi.select_color_item_wrapper",selected:BI.isEqual(o.value,style.colors),header:style.value,colors:style.colors.slice(0,5),value:style.colors})}),{type:"bi.absolute",items:[{el:{type:"bi.button_group",items:items,layouts:[{type:"bi.vertical",hgap:5}],listeners:[{eventName:BI.ButtonGroup.EVENT_CHANGE,action:function(value,item){self.popup.setValue(value),item.setSelected&&item.setSelected(!0),self.fireEvent(SelectColorPopup.EVENT_CHANGE,value)}}],ref:function(ref){self.popup=ref}},top:5,right:0,bottom:5,left:0}]}},getValue:function(){return this.popup.getValue()}});SelectColorPopup.EVENT_CHANGE="EVENT_CHANGE",BI.shortcut("bi.select_color_popup",SelectColorPopup)}(),!function(){var SelectColorCombo=BI.inherit(BI.Widget,{props:{baseCls:"bi-select-color-combo",width:130,items:[],colors:[],value:[]},_store:function(){return BI.Models.getModel("bi.model.select.color.combo",{value:this.options.value})},watch:{selectedColor:function(color){color=BI.isArray(color)?color:[color],this.combo.setValue(color)}},render:function(){var self=this,o=this.options;return{type:"bi.combo",value:this.model.selectedColor,adjustLength:5,el:{type:"bi.select_color_trigger",title:function(){var res=BI.find(o.colors,function(i,style){if(BI.isEqual(style.colors,self.model.selectedColor))return!0});return res&&res.text},value:this.model.selectedColor},popup:{el:{type:"bi.select_color_popup",value:this.model.selectedColor,colors:o.colors,listeners:[{eventName:"EVENT_CHANGE",action:function(value){self.store.setSelectedColor(value),self.combo.hideView(),self.fireEvent(SelectColorCombo.EVENT_CHANGE)}}],ref:function(ref){self.popup=ref}},stopPropagation:!1,minWidth:152},ref:function(ref){self.combo=ref},listeners:[{eventName:BI.Combo.EVENT_AFTER_INIT,action:function(){self.popup.setValue(self.model.selectedColor)}}]}}});SelectColorCombo.EVENT_CHANGE="EVENT_CHANGE",BI.shortcut("bi.select_color_combo",SelectColorCombo)}(),!function(){var SelectColorComboModel=BI.inherit(Fix.Model,{state:function(){return{selectedColor:this.options.value}},actions:{setSelectedColor:function(v){this.model.selectedColor=v}}});BI.model("bi.model.select.color.combo",SelectColorComboModel)}(),!function(){var SelectColorTrigger=BI.inherit(BI.Trigger,{props:{extraCls:" bi-select-color-trigger bi-border",height:28,value:[]},mounted:function(){var self=this,o=this.options;BI.each(this.layouts,function(i,layout){layout.element.css("background-color",o.value[i])})},render:function(){var self=this,o=this.options;return this.layouts=[],{type:"bi.absolute",items:[{el:{type:"bi.button_group",items:BI.map(o.value.slice(0,5),function(){return{type:"bi.layout",ref:function(ref){self.layouts.push(ref)}}}),layouts:[{type:"bi.center",hgap:.5,vgap:2}],ref:function(ref){self.colorContainer=ref}},left:1,right:2,top:0,bottom:0},{el:{type:"bi.icon_button",disableSelected:!0,cls:"icon-combo-down-icon trigger-triangle-font",width:15,height:10,ref:function(ref){self.down=ref}},right:4,bottom:5}]}},populate:function(items){this.options.items=items},setValue:function(vals){this.value=vals,BI.each(this.layouts,function(i,layout){layout.element.css("background-color",vals[i])})},getValue:function(){return this.value}});SelectColorTrigger.EVENT_CHANGE="EVENT_CHANGE",BI.shortcut("bi.select_color_trigger",SelectColorTrigger)}(),!function(){var SelectColorItemWrapper=BI.inherit(BI.BasicButton,{props:{extraCls:"bi-select-color-item-wrapper",header:"",value:[],colors:[],height:50,width:130},render:function(){var self=this,o=this.options;return{type:"bi.vtape",hgap:2,items:[{type:"bi.label",textAlign:"left",text:o.header,lgap:3},{el:{type:"bi.select_color_item",value:o.value,colors:o.colors,ref:function(ref){self.item=ref},listeners:[{eventName:"EVENT_CHANGE",action:function(){self.fireEvent(BI.Controller.EVENT_CHANGE,this.getValue())}}]},height:28}]}},setSelected:function(v){this.item.setSelected(v)},isSelected:function(){return this.item.isSelected()}});BI.shortcut("bi.select_color_item_wrapper",SelectColorItemWrapper)}(),!function(){var Widget=BI.inherit(BI.Widget,{props:{baseCls:"bi-steps-item",text:"",stepWidth:88,stepHeight:50,showLine:!0},render:function(){var self=this,o=this.options;return this.constant=BI.Constants.getConstant("bi.constants.steps.status"),this.status=this.constant.NEXT,{type:"bi.htape",height:o.stepHeight,items:[{el:{type:"bi.vertical_adapt",items:[{type:"bi.layout",cls:"step-line",height:2,width:"100%",invisible:!o.showLine}]},rgap:8},{el:{type:"bi.right_vertical_adapt",items:[{type:"bi.icon_change_button",iconCls:"step-next",iconWidth:14,iconHeight:14,ref:function(_ref){self.icon=_ref},rgap:8},{type:"bi.label",cls:"step-text",textAlign:"left",whiteSpace:"nowrap",rgap:5,text:o.text}]},width:o.stepWidth}]}},setStatus:function(status){if(status!==this.status)switch(this.status=status,status){case this.constant.CURR:this.icon.setIcon("step-now"),this.element.addClass("active");break;case this.constant.PREV:this.icon.setIcon("step-prev"),this.element.addClass("active");break;case this.constant.NEXT:default:this.icon.setIcon("step-next"),this.element.removeClass("active")}}});BI.shortcut("bi.steps.item",Widget)}(),!function(){BI.constant("bi.constants.steps.status",{PREV:0,CURR:1,NEXT:2})}(),!function(){var Widget=BI.inherit(BI.Widget,{props:{baseCls:"bi-steps",stepItems:[],stepHeight:50,stepWidth:88},render:function(){var self=this,o=this.options;this.steps=[],this.currStep=0,this.constant=BI.Constants.getConstant("bi.constants.steps.status"),this.steps.push(BI.createWidget(this._createStep(o.stepItems[0],!1)));var grid=BI.createWidget({type:"bi.grid",rows:1,width:"100%",columns:o.stepItems.length-1,items:BI.map(o.stepItems.slice(1),function(idx,val){return{row:0,column:idx,el:BI.extend(self._createStep(val,!0),{ref:function(_ref){self.steps.push(_ref)}})}})});return{type:"bi.htape",items:[{el:this.steps[0],width:o.stepWidth},{el:grid}],height:o.stepHeight}},_createStep:function(v,showLine){var o=this.options;return BI.extend(v,{type:"bi.steps.item",stepHeight:o.stepHeight,stepWidth:o.stepWidth,showLine:showLine})},mounted:function(){this.steps[0]&&this.steps[0].setStatus(this.constant.CURR)},setValue:function(val){var self=this;this.currStep=val,BI.each(this.options.stepItems,function(i){i<val?self.steps[i].setStatus(self.constant.PREV):i===val?self.steps[i].setStatus(self.constant.CURR):self.steps[i].setStatus(self.constant.NEXT)})},getValue:function(){return this.currStep}});BI.shortcut("bi.steps",Widget)}(),function(glob,factory){"function"==typeof define&&define.amd?define("eve",function(){return factory()}):"object"==typeof exports?module.exports=factory():glob.eve=factory()}(this,function(){var version="0.4.2",has="hasOwnProperty",separator=/[\.\/]/,wildcard="*",fun=function(){},numsort=function(a,b){return a-b},current_event,stop,events={n:{}},eve=function(name,scope){name=String(name);var e=events,oldstop=stop,args=Array.prototype.slice.call(arguments,2),listeners=eve.listeners(name),z=0,f=!1,l,indexed=[],queue={},out=[],ce=current_event,errors=[];current_event=name,stop=0;for(var i=0,ii=listeners.length;i<ii;i++)"zIndex"in listeners[i]&&(indexed.push(listeners[i].zIndex),listeners[i].zIndex<0&&(queue[listeners[i].zIndex]=listeners[i]));for(indexed.sort(numsort);indexed[z]<0;)if(l=queue[indexed[z++]],out.push(l.apply(scope,args)),stop)return stop=oldstop,out;for(i=0;i<ii;i++)if(l=listeners[i],"zIndex"in l)if(l.zIndex==indexed[z]){if(out.push(l.apply(scope,args)),stop)break;do if(z++,l=queue[indexed[z]],l&&out.push(l.apply(scope,args)),stop)break;while(l)}else queue[l.zIndex]=l;else if(out.push(l.apply(scope,args)),stop)break;return stop=oldstop,current_event=ce,out.length?out:null};return eve._events=events,eve.listeners=function(name){var names=name.split(separator),e=events,item,items,k,i,ii,j,jj,nes,es=[e],out=[];for(i=0,ii=names.length;i<ii;i++){for(nes=[],j=0,jj=es.length;j<jj;j++)for(e=es[j].n,items=[e[names[i]],e[wildcard]],k=2;k--;)item=items[k],item&&(nes.push(item),out=out.concat(item.f||[]));es=nes}return out},eve.on=function(name,f){if(name=String(name),"function"!=typeof f)return function(){};for(var names=name.split(separator),e=events,i=0,ii=names.length;i<ii;i++)e=e.n,e=e.hasOwnProperty(names[i])&&e[names[i]]||(e[names[i]]={n:{}});for(e.f=e.f||[],i=0,ii=e.f.length;i<ii;i++)if(e.f[i]==f)return fun;return e.f.push(f),function(zIndex){+zIndex==+zIndex&&(f.zIndex=+zIndex)}},eve.f=function(event){var attrs=[].slice.call(arguments,1);return function(){eve.apply(null,[event,null].concat(attrs).concat([].slice.call(arguments,0)))}},eve.stop=function(){stop=1},eve.nt=function(subname){return subname?new RegExp("(?:\\.|\\/|^)"+subname+"(?:\\.|\\/|$)").test(current_event):current_event},eve.nts=function(){return current_event.split(separator)},eve.off=eve.unbind=function(name,f){if(!name)return void(eve._events=events={n:{}});var names=name.split(separator),e,key,splice,i,ii,j,jj,cur=[events];for(i=0,ii=names.length;i<ii;i++)for(j=0;j<cur.length;j+=splice.length-2){if(splice=[j,1],e=cur[j].n,names[i]!=wildcard)e[names[i]]&&splice.push(e[names[i]]);else for(key in e)e[has](key)&&splice.push(e[key]);cur.splice.apply(cur,splice)}for(i=0,ii=cur.length;i<ii;i++)for(e=cur[i];e.n;){if(f){if(e.f){for(j=0,jj=e.f.length;j<jj;j++)if(e.f[j]==f){e.f.splice(j,1);break}!e.f.length&&delete e.f}for(key in e.n)if(e.n[has](key)&&e.n[key].f){var funcs=e.n[key].f;for(j=0,jj=funcs.length;j<jj;j++)if(funcs[j]==f){funcs.splice(j,1);break}!funcs.length&&delete e.n[key].f}}else{delete e.f;for(key in e.n)e.n[has](key)&&e.n[key].f&&delete e.n[key].f}e=e.n}},eve.once=function(name,f){var f2=function(){return eve.unbind(name,f2),f.apply(this,arguments)};return eve.on(name,f2)},eve.version=version,eve.toString=function(){return"You are running Eve "+version},eve}),function(glob,factory){"function"==typeof define&&define.amd?define("raphael.core",["eve"],function(eve){return factory(eve)}):"object"==typeof exports?module.exports=factory(require("eve")):glob.Raphael=factory(glob.eve)}(this,function(eve){function R(first){if(R.is(first,"function"))return loaded?first():eve.on("raphael.DOMload",first);if(R.is(first,array))return R._engine.create[apply](R,first.splice(0,3+R.is(first[0],nu))).add(first);var args=Array.prototype.slice.call(arguments,0);if(R.is(args[args.length-1],"function")){var f=args.pop();return loaded?f.call(R._engine.create[apply](R,args)):eve.on("raphael.DOMload",function(){f.call(R._engine.create[apply](R,args))})}return R._engine.create[apply](R,arguments)}function clone(obj){if("function"==typeof obj||Object(obj)!==obj)return obj;var res=new obj.constructor;for(var key in obj)obj[has](key)&&(res[key]=clone(obj[key]));return res}function repush(array,item){for(var i=0,ii=array.length;i<ii;i++)if(array[i]===item)return array.push(array.splice(i,1)[0])}function cacher(f,scope,postprocessor){function newf(){var arg=Array.prototype.slice.call(arguments,0),args=arg.join("␀"),cache=newf.cache=newf.cache||{},count=newf.count=newf.count||[];return cache[has](args)?(repush(count,args),postprocessor?postprocessor(cache[args]):cache[args]):(count.length>=1e3&&delete cache[count.shift()],count.push(args),cache[args]=f[apply](scope,arg),postprocessor?postprocessor(cache[args]):cache[args])}return newf}function clrToString(){return this.hex}function catmullRom2bezier(crp,z){for(var d=[],i=0,iLen=crp.length;iLen-2*!z>i;i+=2){var p=[{x:+crp[i-2],y:+crp[i-1]},{x:+crp[i],y:+crp[i+1]},{x:+crp[i+2],y:+crp[i+3]},{x:+crp[i+4],y:+crp[i+5]}];z?i?iLen-4==i?p[3]={x:+crp[0],y:+crp[1]}:iLen-2==i&&(p[2]={x:+crp[0],y:+crp[1]},p[3]={x:+crp[2],y:+crp[3]}):p[0]={x:+crp[iLen-2],y:+crp[iLen-1]}:iLen-4==i?p[3]=p[2]:i||(p[0]={x:+crp[i],y:+crp[i+1]}),d.push(["C",(-p[0].x+6*p[1].x+p[2].x)/6,(-p[0].y+6*p[1].y+p[2].y)/6,(p[1].x+6*p[2].x-p[3].x)/6,(p[1].y+6*p[2].y-p[3].y)/6,p[2].x,p[2].y])}return d}function base3(t,p1,p2,p3,p4){var t1=-3*p1+9*p2-9*p3+3*p4,t2=t*t1+6*p1-12*p2+6*p3;return t*t2-3*p1+3*p2}function bezlen(x1,y1,x2,y2,x3,y3,x4,y4,z){null==z&&(z=1),z=z>1?1:z<0?0:z;for(var z2=z/2,n=12,Tvalues=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],Cvalues=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],sum=0,i=0;i<n;i++){var ct=z2*Tvalues[i]+z2,xbase=base3(ct,x1,x2,x3,x4),ybase=base3(ct,y1,y2,y3,y4),comb=xbase*xbase+ybase*ybase;sum+=Cvalues[i]*math.sqrt(comb)}return z2*sum}function getTatLen(x1,y1,x2,y2,x3,y3,x4,y4,ll){if(!(ll<0||bezlen(x1,y1,x2,y2,x3,y3,x4,y4)<ll)){var t=1,step=t/2,t2=t-step,l,e=.01;for(l=bezlen(x1,y1,x2,y2,x3,y3,x4,y4,t2);abs(l-ll)>e;)step/=2,t2+=(l<ll?1:-1)*step,l=bezlen(x1,y1,x2,y2,x3,y3,x4,y4,t2);return t2}}function intersect(x1,y1,x2,y2,x3,y3,x4,y4){if(!(mmax(x1,x2)<mmin(x3,x4)||mmin(x1,x2)>mmax(x3,x4)||mmax(y1,y2)<mmin(y3,y4)||mmin(y1,y2)>mmax(y3,y4))){var nx=(x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4),ny=(x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4),denominator=(x1-x2)*(y3-y4)-(y1-y2)*(x3-x4);if(denominator){var px=nx/denominator,py=ny/denominator,px2=+px.toFixed(2),py2=+py.toFixed(2);if(!(px2<+mmin(x1,x2).toFixed(2)||px2>+mmax(x1,x2).toFixed(2)||px2<+mmin(x3,x4).toFixed(2)||px2>+mmax(x3,x4).toFixed(2)||py2<+mmin(y1,y2).toFixed(2)||py2>+mmax(y1,y2).toFixed(2)||py2<+mmin(y3,y4).toFixed(2)||py2>+mmax(y3,y4).toFixed(2)))return{x:px,y:py}}}}function inter(bez1,bez2){return interHelper(bez1,bez2)}function interCount(bez1,bez2){return interHelper(bez1,bez2,1)}function interHelper(bez1,bez2,justCount){var bbox1=R.bezierBBox(bez1),bbox2=R.bezierBBox(bez2);if(!R.isBBoxIntersect(bbox1,bbox2))return justCount?0:[];for(var l1=bezlen.apply(0,bez1),l2=bezlen.apply(0,bez2),n1=mmax(~~(l1/5),1),n2=mmax(~~(l2/5),1),dots1=[],dots2=[],xy={},res=justCount?0:[],i=0;i<n1+1;i++){var p=R.findDotsAtSegment.apply(R,bez1.concat(i/n1));dots1.push({x:p.x,y:p.y,t:i/n1})}for(i=0;i<n2+1;i++)p=R.findDotsAtSegment.apply(R,bez2.concat(i/n2)),dots2.push({x:p.x,y:p.y,t:i/n2});for(i=0;i<n1;i++)for(var j=0;j<n2;j++){var di=dots1[i],di1=dots1[i+1],dj=dots2[j],dj1=dots2[j+1],ci=abs(di1.x-di.x)<.001?"y":"x",cj=abs(dj1.x-dj.x)<.001?"y":"x",is=intersect(di.x,di.y,di1.x,di1.y,dj.x,dj.y,dj1.x,dj1.y);if(is){if(xy[is.x.toFixed(4)]==is.y.toFixed(4))continue;xy[is.x.toFixed(4)]=is.y.toFixed(4);var t1=di.t+abs((is[ci]-di[ci])/(di1[ci]-di[ci]))*(di1.t-di.t),t2=dj.t+abs((is[cj]-dj[cj])/(dj1[cj]-dj[cj]))*(dj1.t-dj.t);t1>=0&&t1<=1.001&&t2>=0&&t2<=1.001&&(justCount?res++:res.push({x:is.x,y:is.y,t1:mmin(t1,1),t2:mmin(t2,1)}))}}return res}function interPathHelper(path1,path2,justCount){path1=R._path2curve(path1),path2=R._path2curve(path2);for(var x1,y1,x2,y2,x1m,y1m,x2m,y2m,bez1,bez2,res=justCount?0:[],i=0,ii=path1.length;i<ii;i++){var pi=path1[i];if("M"==pi[0])x1=x1m=pi[1],y1=y1m=pi[2];else{"C"==pi[0]?(bez1=[x1,y1].concat(pi.slice(1)),x1=bez1[6],y1=bez1[7]):(bez1=[x1,y1,x1,y1,x1m,y1m,x1m,y1m],x1=x1m,y1=y1m);for(var j=0,jj=path2.length;j<jj;j++){var pj=path2[j];if("M"==pj[0])x2=x2m=pj[1],y2=y2m=pj[2];else{"C"==pj[0]?(bez2=[x2,y2].concat(pj.slice(1)),x2=bez2[6],y2=bez2[7]):(bez2=[x2,y2,x2,y2,x2m,y2m,x2m,y2m],x2=x2m,y2=y2m);var intr=interHelper(bez1,bez2,justCount);if(justCount)res+=intr;else{for(var k=0,kk=intr.length;k<kk;k++)intr[k].segment1=i,intr[k].segment2=j,intr[k].bez1=bez1,intr[k].bez2=bez2;res=res.concat(intr)}}}}}return res}function Matrix(a,b,c,d,e,f){null!=a?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function x_y(){return this.x+S+this.y}function x_y_w_h(){return this.x+S+this.y+S+this.width+" × "+this.height}function CubicBezierAtTime(t,p1x,p1y,p2x,p2y,duration){function sampleCurveX(t){return((ax*t+bx)*t+cx)*t}function solve(x,epsilon){var t=solveCurveX(x,epsilon);return((ay*t+by)*t+cy)*t}function solveCurveX(x,epsilon){var t0,t1,t2,x2,d2,i;for(t2=x,i=0;i<8;i++){if(x2=sampleCurveX(t2)-x,abs(x2)<epsilon)return t2;if(d2=(3*ax*t2+2*bx)*t2+cx,abs(d2)<1e-6)break;t2-=x2/d2}if(t0=0,t1=1,t2=x,t2<t0)return t0;if(t2>t1)return t1;for(;t0<t1;){if(x2=sampleCurveX(t2),abs(x2-x)<epsilon)return t2;x>x2?t0=t2:t1=t2,t2=(t1-t0)/2+t0}return t2}var cx=3*p1x,bx=3*(p2x-p1x)-cx,ax=1-cx-bx,cy=3*p1y,by=3*(p2y-p1y)-cy,ay=1-cy-by;return solve(t,1/(200*duration))}function Animation(anim,ms){var percents=[],newAnim={};if(this.ms=ms,this.times=1,anim){for(var attr in anim)anim[has](attr)&&(newAnim[toFloat(attr)]=anim[attr],percents.push(toFloat(attr)));percents.sort(sortByNumber)}this.anim=newAnim,this.top=percents[percents.length-1],this.percents=percents}function runAnimation(anim,element,percent,status,totalOrigin,times){percent=toFloat(percent);var params,isInAnim,isInAnimSet,percents=[],next,prev,timestamp,ms=anim.ms,from={},to={},diff={};if(status)for(i=0,ii=animationElements.length;i<ii;i++){var e=animationElements[i];if(e.el.id==element.id&&e.anim==anim){e.percent!=percent?(animationElements.splice(i,1),isInAnimSet=1):isInAnim=e,element.attr(e.totalOrigin);break}}else status=+to;for(var i=0,ii=anim.percents.length;i<ii;i++){if(anim.percents[i]==percent||anim.percents[i]>status*anim.top){percent=anim.percents[i],prev=anim.percents[i-1]||0,ms=ms/anim.top*(percent-prev),next=anim.percents[i+1],params=anim.anim[percent];break}status&&element.attr(anim.anim[anim.percents[i]])}if(params){if(isInAnim)isInAnim.initstatus=status,isInAnim.start=new Date-isInAnim.ms*status;else{for(var attr in params)if(params[has](attr)&&(availableAnimAttrs[has](attr)||element.paper.customAttributes[has](attr)))switch(from[attr]=element.attr(attr),null==from[attr]&&(from[attr]=availableAttrs[attr]),to[attr]=params[attr],availableAnimAttrs[attr]){case nu:diff[attr]=(to[attr]-from[attr])/ms;break;case"colour":from[attr]=R.getRGB(from[attr]);var toColour=R.getRGB(to[attr]);diff[attr]={r:(toColour.r-from[attr].r)/ms,g:(toColour.g-from[attr].g)/ms,b:(toColour.b-from[attr].b)/ms};break;case"path":var pathes=path2curve(from[attr],to[attr]),toPath=pathes[1];for(from[attr]=pathes[0],diff[attr]=[],i=0,ii=from[attr].length;i<ii;i++){diff[attr][i]=[0];for(var j=1,jj=from[attr][i].length;j<jj;j++)diff[attr][i][j]=(toPath[i][j]-from[attr][i][j])/ms}break;case"transform":var _=element._,eq=equaliseTransform(_[attr],to[attr]);if(eq)for(from[attr]=eq.from,to[attr]=eq.to,diff[attr]=[],diff[attr].real=!0,i=0,ii=from[attr].length;i<ii;i++)for(diff[attr][i]=[from[attr][i][0]],j=1,jj=from[attr][i].length;j<jj;j++)diff[attr][i][j]=(to[attr][i][j]-from[attr][i][j])/ms;else{var m=element.matrix||new Matrix,to2={_:{transform:_.transform},getBBox:function(){return element.getBBox(1)}};from[attr]=[m.a,m.b,m.c,m.d,m.e,m.f],extractTransform(to2,to[attr]),to[attr]=to2._.transform,diff[attr]=[(to2.matrix.a-m.a)/ms,(to2.matrix.b-m.b)/ms,(to2.matrix.c-m.c)/ms,(to2.matrix.d-m.d)/ms,(to2.matrix.e-m.e)/ms,(to2.matrix.f-m.f)/ms];
}break;case"csv":var values=Str(params[attr])[split](separator),from2=Str(from[attr])[split](separator);if("clip-rect"==attr)for(from[attr]=from2,diff[attr]=[],i=from2.length;i--;)diff[attr][i]=(values[i]-from[attr][i])/ms;to[attr]=values;break;default:for(values=[][concat](params[attr]),from2=[][concat](from[attr]),diff[attr]=[],i=element.paper.customAttributes[attr].length;i--;)diff[attr][i]=((values[i]||0)-(from2[i]||0))/ms}var easing=params.easing,easyeasy=R.easing_formulas[easing];if(!easyeasy)if(easyeasy=Str(easing).match(bezierrg),easyeasy&&5==easyeasy.length){var curve=easyeasy;easyeasy=function(t){return CubicBezierAtTime(t,+curve[1],+curve[2],+curve[3],+curve[4],ms)}}else easyeasy=pipe;if(timestamp=params.start||anim.start||+new Date,e={anim:anim,percent:percent,timestamp:timestamp,start:timestamp+(anim.del||0),status:0,initstatus:status||0,stop:!1,ms:ms,easing:easyeasy,from:from,diff:diff,to:to,el:element,callback:params.callback,prev:prev,next:next,repeat:times||anim.times,origin:element.attr(),totalOrigin:totalOrigin},animationElements.push(e),status&&!isInAnim&&!isInAnimSet&&(e.stop=!0,e.start=new Date-ms*status,1==animationElements.length))return animation();isInAnimSet&&(e.start=new Date-e.ms*status),1==animationElements.length&&requestAnimFrame(animation)}eve("raphael.anim.start."+element.id,element,anim)}}function stopAnimation(paper){for(var i=0;i<animationElements.length;i++)animationElements[i].el.paper==paper&&animationElements.splice(i--,1)}R.version="2.1.4",R.eve=eve;var loaded,separator=/[, ]+/,elements={circle:1,rect:1,path:1,ellipse:1,text:1,image:1},formatrg=/\{(\d+)\}/g,proto="prototype",has="hasOwnProperty",g={doc:document,win:window},oldRaphael={was:Object.prototype[has].call(g.win,"Raphael"),is:g.win.Raphael},Paper=function(){this.ca=this.customAttributes={}},paperproto,appendChild="appendChild",apply="apply",concat="concat",supportsTouch="ontouchstart"in g.win||g.win.DocumentTouch&&g.doc instanceof DocumentTouch,E="",S=" ",Str=String,split="split",events="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[split](S),touchMap={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},lowerCase=Str.prototype.toLowerCase,math=Math,mmax=math.max,mmin=math.min,abs=math.abs,pow=math.pow,PI=math.PI,nu="number",string="string",array="array",toString="toString",fillString="fill",objectToString=Object.prototype.toString,paper={},push="push",ISURL=R._ISURL=/^url\(['"]?(.+?)['"]?\)$/i,colourRegExp=/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i,isnan={NaN:1,Infinity:1,"-Infinity":1},bezierrg=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,round=math.round,setAttribute="setAttribute",toFloat=parseFloat,toInt=parseInt,upperCase=Str.prototype.toUpperCase,availableAttrs=R._availableAttrs={"arrow-end":"none","arrow-start":"none",blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/","letter-spacing":0,opacity:1,path:"M0,0",r:0,rx:0,ry:0,src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",transform:"",width:0,x:0,y:0},availableAnimAttrs=R._availableAnimAttrs={blur:nu,"clip-rect":"csv",cx:nu,cy:nu,fill:"colour","fill-opacity":nu,"font-size":nu,height:nu,opacity:nu,path:"path",r:nu,rx:nu,ry:nu,stroke:"colour","stroke-opacity":nu,"stroke-width":nu,transform:"transform",width:nu,x:nu,y:nu},whitespace=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]/g,commaSpaces=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,hsrg={hs:1,rg:1},p2s=/,?([achlmqrstvxz]),?/gi,pathCommand=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,tCommand=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,pathValues=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/gi,radial_gradient=R._radial_gradient=/^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/,eldata={},sortByKey=function(a,b){return a.key-b.key},sortByNumber=function(a,b){return toFloat(a)-toFloat(b)},fun=function(){},pipe=function(x){return x},rectPath=R._rectPath=function(x,y,w,h,r){return r?[["M",x+r,y],["l",w-2*r,0],["a",r,r,0,0,1,r,r],["l",0,h-2*r],["a",r,r,0,0,1,-r,r],["l",2*r-w,0],["a",r,r,0,0,1,-r,-r],["l",0,2*r-h],["a",r,r,0,0,1,r,-r],["z"]]:[["M",x,y],["l",w,0],["l",0,h],["l",-w,0],["z"]]},ellipsePath=function(x,y,rx,ry){return null==ry&&(ry=rx),[["M",x,y],["m",0,-ry],["a",rx,ry,0,1,1,0,2*ry],["a",rx,ry,0,1,1,0,-2*ry],["z"]]},getPath=R._getPath={path:function(el){return el.attr("path")},circle:function(el){var a=el.attrs;return ellipsePath(a.cx,a.cy,a.r)},ellipse:function(el){var a=el.attrs;return ellipsePath(a.cx,a.cy,a.rx,a.ry)},rect:function(el){var a=el.attrs;return rectPath(a.x,a.y,a.width,a.height,a.r)},image:function(el){var a=el.attrs;return rectPath(a.x,a.y,a.width,a.height)},text:function(el){var bbox=el._getBBox();return rectPath(bbox.x,bbox.y,bbox.width,bbox.height)},set:function(el){var bbox=el._getBBox();return rectPath(bbox.x,bbox.y,bbox.width,bbox.height)}},mapPath=R.mapPath=function(path,matrix){if(!matrix)return path;var x,y,i,j,ii,jj,pathi;for(path=path2curve(path),i=0,ii=path.length;i<ii;i++)for(pathi=path[i],j=1,jj=pathi.length;j<jj;j+=2)x=matrix.x(pathi[j],pathi[j+1]),y=matrix.y(pathi[j],pathi[j+1]),pathi[j]=x,pathi[j+1]=y;return path};if(R._g=g,R.type=g.win.SVGAngle||g.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML","VML"==R.type){var d=g.doc.createElement("div"),b;if(d.innerHTML='<v:shape adj="1"/>',b=d.firstChild,b.style.behavior="url(#default#VML)",!b||"object"!=typeof b.adj)return R.type=E;d=null}R.svg=!(R.vml="VML"==R.type),R._Paper=Paper,R.fn=paperproto=Paper.prototype=R.prototype,R._id=0,R._oid=0,R.is=function(o,type){return type=lowerCase.call(type),"finite"==type?!isnan[has](+o):"array"==type?o instanceof Array:"null"==type&&null===o||type==typeof o&&null!==o||"object"==type&&o===Object(o)||"array"==type&&Array.isArray&&Array.isArray(o)||objectToString.call(o).slice(8,-1).toLowerCase()==type},R.angle=function(x1,y1,x2,y2,x3,y3){if(null==x3){var x=x1-x2,y=y1-y2;return x||y?(180+180*math.atan2(-y,-x)/PI+360)%360:0}return R.angle(x1,y1,x3,y3)-R.angle(x2,y2,x3,y3)},R.rad=function(deg){return deg%360*PI/180},R.deg=function(rad){return Math.round(180*rad/PI%360*1e3)/1e3},R.snapTo=function(values,value,tolerance){if(tolerance=R.is(tolerance,"finite")?tolerance:10,R.is(values,array)){for(var i=values.length;i--;)if(abs(values[i]-value)<=tolerance)return values[i]}else{values=+values;var rem=value%values;if(rem<tolerance)return value-rem;if(rem>values-tolerance)return value-rem+values}return value};var createUUID=R.createUUID=function(uuidRegEx,uuidReplacer){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(uuidRegEx,uuidReplacer).toUpperCase()}}(/[xy]/g,function(c){var r=16*math.random()|0,v="x"==c?r:3&r|8;return v.toString(16)});R.setWindow=function(newwin){eve("raphael.setWindow",R,g.win,newwin),g.win=newwin,g.doc=g.win.document,R._engine.initWin&&R._engine.initWin(g.win)};var toHex=function(color){if(R.vml){var trim=/^\s+|\s+$/g,bod;try{var docum=new ActiveXObject("htmlfile");docum.write("<body>"),docum.close(),bod=docum.body}catch(e){bod=createPopup().document.body}var range=bod.createTextRange();toHex=cacher(function(color){try{bod.style.color=Str(color).replace(trim,E);var value=range.queryCommandValue("ForeColor");return value=(255&value)<<16|65280&value|(16711680&value)>>>16,"#"+("000000"+value.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=g.doc.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",g.doc.body.appendChild(i),toHex=cacher(function(color){return i.style.color=color,g.doc.defaultView.getComputedStyle(i,E).getPropertyValue("color")})}return toHex(color)},hsbtoString=function(){return"hsb("+[this.h,this.s,this.b]+")"},hsltoString=function(){return"hsl("+[this.h,this.s,this.l]+")"},rgbtoString=function(){return this.hex},prepareRGB=function(r,g,b){if(null==g&&R.is(r,"object")&&"r"in r&&"g"in r&&"b"in r&&(b=r.b,g=r.g,r=r.r),null==g&&R.is(r,string)){var clr=R.getRGB(r);r=clr.r,g=clr.g,b=clr.b}return(r>1||g>1||b>1)&&(r/=255,g/=255,b/=255),[r,g,b]},packageRGB=function(r,g,b,o){r*=255,g*=255,b*=255;var rgb={r:r,g:g,b:b,hex:R.rgb(r,g,b),toString:rgbtoString};return R.is(o,"finite")&&(rgb.opacity=o),rgb};R.color=function(clr){var rgb;return R.is(clr,"object")&&"h"in clr&&"s"in clr&&"b"in clr?(rgb=R.hsb2rgb(clr),clr.r=rgb.r,clr.g=rgb.g,clr.b=rgb.b,clr.hex=rgb.hex):R.is(clr,"object")&&"h"in clr&&"s"in clr&&"l"in clr?(rgb=R.hsl2rgb(clr),clr.r=rgb.r,clr.g=rgb.g,clr.b=rgb.b,clr.hex=rgb.hex):(R.is(clr,"string")&&(clr=R.getRGB(clr)),R.is(clr,"object")&&"r"in clr&&"g"in clr&&"b"in clr?(rgb=R.rgb2hsl(clr),clr.h=rgb.h,clr.s=rgb.s,clr.l=rgb.l,rgb=R.rgb2hsb(clr),clr.v=rgb.b):(clr={hex:"none"},clr.r=clr.g=clr.b=clr.h=clr.s=clr.v=clr.l=-1)),clr.toString=rgbtoString,clr},R.hsb2rgb=function(h,s,v,o){this.is(h,"object")&&"h"in h&&"s"in h&&"b"in h&&(v=h.b,s=h.s,o=h.o,h=h.h),h*=360;var R,G,B,X,C;return h=h%360/60,C=v*s,X=C*(1-abs(h%2-1)),R=G=B=v-C,h=~~h,R+=[C,X,0,0,X,C][h],G+=[X,C,C,X,0,0][h],B+=[0,0,X,C,C,X][h],packageRGB(R,G,B,o)},R.hsl2rgb=function(h,s,l,o){this.is(h,"object")&&"h"in h&&"s"in h&&"l"in h&&(l=h.l,s=h.s,h=h.h),(h>1||s>1||l>1)&&(h/=360,s/=100,l/=100),h*=360;var R,G,B,X,C;return h=h%360/60,C=2*s*(l<.5?l:1-l),X=C*(1-abs(h%2-1)),R=G=B=l-C/2,h=~~h,R+=[C,X,0,0,X,C][h],G+=[X,C,C,X,0,0][h],B+=[0,0,X,C,C,X][h],packageRGB(R,G,B,o)},R.rgb2hsb=function(r,g,b){b=prepareRGB(r,g,b),r=b[0],g=b[1],b=b[2];var H,S,V,C;return V=mmax(r,g,b),C=V-mmin(r,g,b),H=0==C?null:V==r?(g-b)/C:V==g?(b-r)/C+2:(r-g)/C+4,H=(H+360)%6*60/360,S=0==C?0:C/V,{h:H,s:S,b:V,toString:hsbtoString}},R.rgb2hsl=function(r,g,b){b=prepareRGB(r,g,b),r=b[0],g=b[1],b=b[2];var H,S,L,M,m,C;return M=mmax(r,g,b),m=mmin(r,g,b),C=M-m,H=0==C?null:M==r?(g-b)/C:M==g?(b-r)/C+2:(r-g)/C+4,H=(H+360)%6*60/360,L=(M+m)/2,S=0==C?0:L<.5?C/(2*L):C/(2-2*L),{h:H,s:S,l:L,toString:hsltoString}},R._path2string=function(){return this.join(",").replace(p2s,"$1")};var preload=R._preload=function(src,f){var img=g.doc.createElement("img");img.style.cssText="position:absolute;left:-9999em;top:-9999em",img.onload=function(){f.call(this),this.onload=null,g.doc.body.removeChild(this)},img.onerror=function(){g.doc.body.removeChild(this)},g.doc.body.appendChild(img),img.src=src};R.getRGB=cacher(function(colour){if(!colour||(colour=Str(colour)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:clrToString};if("none"==colour)return{r:-1,g:-1,b:-1,hex:"none",toString:clrToString};!(hsrg[has](colour.toLowerCase().substring(0,2))||"#"==colour.charAt())&&(colour=toHex(colour));var res,red,green,blue,opacity,t,values,rgb=colour.match(colourRegExp);return rgb?(rgb[2]&&(blue=toInt(rgb[2].substring(5),16),green=toInt(rgb[2].substring(3,5),16),red=toInt(rgb[2].substring(1,3),16)),rgb[3]&&(blue=toInt((t=rgb[3].charAt(3))+t,16),green=toInt((t=rgb[3].charAt(2))+t,16),red=toInt((t=rgb[3].charAt(1))+t,16)),rgb[4]&&(values=rgb[4][split](commaSpaces),red=toFloat(values[0]),"%"==values[0].slice(-1)&&(red*=2.55),green=toFloat(values[1]),"%"==values[1].slice(-1)&&(green*=2.55),blue=toFloat(values[2]),"%"==values[2].slice(-1)&&(blue*=2.55),"rgba"==rgb[1].toLowerCase().slice(0,4)&&(opacity=toFloat(values[3])),values[3]&&"%"==values[3].slice(-1)&&(opacity/=100)),rgb[5]?(values=rgb[5][split](commaSpaces),red=toFloat(values[0]),"%"==values[0].slice(-1)&&(red*=2.55),green=toFloat(values[1]),"%"==values[1].slice(-1)&&(green*=2.55),blue=toFloat(values[2]),"%"==values[2].slice(-1)&&(blue*=2.55),("deg"==values[0].slice(-3)||"°"==values[0].slice(-1))&&(red/=360),"hsba"==rgb[1].toLowerCase().slice(0,4)&&(opacity=toFloat(values[3])),values[3]&&"%"==values[3].slice(-1)&&(opacity/=100),R.hsb2rgb(red,green,blue,opacity)):rgb[6]?(values=rgb[6][split](commaSpaces),red=toFloat(values[0]),"%"==values[0].slice(-1)&&(red*=2.55),green=toFloat(values[1]),"%"==values[1].slice(-1)&&(green*=2.55),blue=toFloat(values[2]),"%"==values[2].slice(-1)&&(blue*=2.55),("deg"==values[0].slice(-3)||"°"==values[0].slice(-1))&&(red/=360),"hsla"==rgb[1].toLowerCase().slice(0,4)&&(opacity=toFloat(values[3])),values[3]&&"%"==values[3].slice(-1)&&(opacity/=100),R.hsl2rgb(red,green,blue,opacity)):(rgb={r:red,g:green,b:blue,toString:clrToString},rgb.hex="#"+(16777216|blue|green<<8|red<<16).toString(16).slice(1),R.is(opacity,"finite")&&(rgb.opacity=opacity),rgb)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:clrToString}},R),R.hsb=cacher(function(h,s,b){return R.hsb2rgb(h,s,b).hex}),R.hsl=cacher(function(h,s,l){return R.hsl2rgb(h,s,l).hex}),R.rgb=cacher(function(r,g,b){function round(x){return x+.5|0}return"#"+(16777216|round(b)|round(g)<<8|round(r)<<16).toString(16).slice(1)}),R.getColor=function(value){var start=this.getColor.start=this.getColor.start||{h:0,s:1,b:value||.75},rgb=this.hsb2rgb(start.h,start.s,start.b);return start.h+=.075,start.h>1&&(start.h=0,start.s-=.2,start.s<=0&&(this.getColor.start={h:0,s:1,b:start.b})),rgb.hex},R.getColor.reset=function(){delete this.start},R.parsePathString=function(pathString){if(!pathString)return null;var pth=paths(pathString);if(pth.arr)return pathClone(pth.arr);var paramCounts={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},data=[];return R.is(pathString,array)&&R.is(pathString[0],array)&&(data=pathClone(pathString)),data.length||Str(pathString).replace(pathCommand,function(a,b,c){var params=[],name=b.toLowerCase();if(c.replace(pathValues,function(a,b){b&&params.push(+b)}),"m"==name&&params.length>2&&(data.push([b][concat](params.splice(0,2))),name="l",b="m"==b?"l":"L"),"r"==name)data.push([b][concat](params));else for(;params.length>=paramCounts[name]&&(data.push([b][concat](params.splice(0,paramCounts[name]))),paramCounts[name]););}),data.toString=R._path2string,pth.arr=pathClone(data),data},R.parseTransformString=cacher(function(TString){if(!TString)return null;var paramCounts={r:3,s:4,t:2,m:6},data=[];return R.is(TString,array)&&R.is(TString[0],array)&&(data=pathClone(TString)),data.length||Str(TString).replace(tCommand,function(a,b,c){var params=[],name=lowerCase.call(b);c.replace(pathValues,function(a,b){b&&params.push(+b)}),data.push([b][concat](params))}),data.toString=R._path2string,data});var paths=function(ps){var p=paths.ps=paths.ps||{};return p[ps]?p[ps].sleep=100:p[ps]={sleep:100},setTimeout(function(){for(var key in p)p[has](key)&&key!=ps&&(p[key].sleep--,!p[key].sleep&&delete p[key])}),p[ps]};R.findDotsAtSegment=function(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,t){var t1=1-t,t13=pow(t1,3),t12=pow(t1,2),t2=t*t,t3=t2*t,x=t13*p1x+3*t12*t*c1x+3*t1*t*t*c2x+t3*p2x,y=t13*p1y+3*t12*t*c1y+3*t1*t*t*c2y+t3*p2y,mx=p1x+2*t*(c1x-p1x)+t2*(c2x-2*c1x+p1x),my=p1y+2*t*(c1y-p1y)+t2*(c2y-2*c1y+p1y),nx=c1x+2*t*(c2x-c1x)+t2*(p2x-2*c2x+c1x),ny=c1y+2*t*(c2y-c1y)+t2*(p2y-2*c2y+c1y),ax=t1*p1x+t*c1x,ay=t1*p1y+t*c1y,cx=t1*c2x+t*p2x,cy=t1*c2y+t*p2y,alpha=90-180*math.atan2(mx-nx,my-ny)/PI;return(mx>nx||my<ny)&&(alpha+=180),{x:x,y:y,m:{x:mx,y:my},n:{x:nx,y:ny},start:{x:ax,y:ay},end:{x:cx,y:cy},alpha:alpha}},R.bezierBBox=function(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y){R.is(p1x,"array")||(p1x=[p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y]);var bbox=curveDim.apply(null,p1x);return{x:bbox.min.x,y:bbox.min.y,x2:bbox.max.x,y2:bbox.max.y,width:bbox.max.x-bbox.min.x,height:bbox.max.y-bbox.min.y}},R.isPointInsideBBox=function(bbox,x,y){return x>=bbox.x&&x<=bbox.x2&&y>=bbox.y&&y<=bbox.y2},R.isBBoxIntersect=function(bbox1,bbox2){var i=R.isPointInsideBBox;return i(bbox2,bbox1.x,bbox1.y)||i(bbox2,bbox1.x2,bbox1.y)||i(bbox2,bbox1.x,bbox1.y2)||i(bbox2,bbox1.x2,bbox1.y2)||i(bbox1,bbox2.x,bbox2.y)||i(bbox1,bbox2.x2,bbox2.y)||i(bbox1,bbox2.x,bbox2.y2)||i(bbox1,bbox2.x2,bbox2.y2)||(bbox1.x<bbox2.x2&&bbox1.x>bbox2.x||bbox2.x<bbox1.x2&&bbox2.x>bbox1.x)&&(bbox1.y<bbox2.y2&&bbox1.y>bbox2.y||bbox2.y<bbox1.y2&&bbox2.y>bbox1.y)},R.pathIntersection=function(path1,path2){return interPathHelper(path1,path2)},R.pathIntersectionNumber=function(path1,path2){return interPathHelper(path1,path2,1)},R.isPointInsidePath=function(path,x,y){var bbox=R.pathBBox(path);return R.isPointInsideBBox(bbox,x,y)&&interPathHelper(path,[["M",x,y],["H",bbox.x2+10]],1)%2==1},R._removedFactory=function(methodname){return function(){eve("raphael.log",null,"Raphaël: you are calling to method “"+methodname+"” of removed object",methodname)}};var pathDimensions=R.pathBBox=function(path){var pth=paths(path);if(pth.bbox)return clone(pth.bbox);if(!path)return{x:0,y:0,width:0,height:0,x2:0,y2:0};path=path2curve(path);for(var x=0,y=0,X=[],Y=[],p,i=0,ii=path.length;i<ii;i++)if(p=path[i],"M"==p[0])x=p[1],y=p[2],X.push(x),Y.push(y);else{var dim=curveDim(x,y,p[1],p[2],p[3],p[4],p[5],p[6]);X=X[concat](dim.min.x,dim.max.x),Y=Y[concat](dim.min.y,dim.max.y),x=p[5],y=p[6]}var xmin=mmin[apply](0,X),ymin=mmin[apply](0,Y),xmax=mmax[apply](0,X),ymax=mmax[apply](0,Y),width=xmax-xmin,height=ymax-ymin,bb={x:xmin,y:ymin,x2:xmax,y2:ymax,width:width,height:height,cx:xmin+width/2,cy:ymin+height/2};return pth.bbox=clone(bb),bb},pathClone=function(pathArray){var res=clone(pathArray);return res.toString=R._path2string,res},pathToRelative=R._pathToRelative=function(pathArray){var pth=paths(pathArray);if(pth.rel)return pathClone(pth.rel);R.is(pathArray,array)&&R.is(pathArray&&pathArray[0],array)||(pathArray=R.parsePathString(pathArray));var res=[],x=0,y=0,mx=0,my=0,start=0;"M"==pathArray[0][0]&&(x=pathArray[0][1],y=pathArray[0][2],mx=x,my=y,start++,res.push(["M",x,y]));for(var i=start,ii=pathArray.length;i<ii;i++){var r=res[i]=[],pa=pathArray[i];if(pa[0]!=lowerCase.call(pa[0]))switch(r[0]=lowerCase.call(pa[0]),r[0]){case"a":r[1]=pa[1],r[2]=pa[2],r[3]=pa[3],r[4]=pa[4],r[5]=pa[5],r[6]=+(pa[6]-x).toFixed(3),r[7]=+(pa[7]-y).toFixed(3);break;case"v":r[1]=+(pa[1]-y).toFixed(3);break;case"m":mx=pa[1],my=pa[2];default:for(var j=1,jj=pa.length;j<jj;j++)r[j]=+(pa[j]-(j%2?x:y)).toFixed(3)}else{r=res[i]=[],"m"==pa[0]&&(mx=pa[1]+x,my=pa[2]+y);for(var k=0,kk=pa.length;k<kk;k++)res[i][k]=pa[k]}var len=res[i].length;switch(res[i][0]){case"z":x=mx,y=my;break;case"h":x+=+res[i][len-1];break;case"v":y+=+res[i][len-1];break;default:x+=+res[i][len-2],y+=+res[i][len-1]}}return res.toString=R._path2string,pth.rel=pathClone(res),res},pathToAbsolute=R._pathToAbsolute=function(pathArray){var pth=paths(pathArray);if(pth.abs)return pathClone(pth.abs);if(R.is(pathArray,array)&&R.is(pathArray&&pathArray[0],array)||(pathArray=R.parsePathString(pathArray)),!pathArray||!pathArray.length)return[["M",0,0]];var res=[],x=0,y=0,mx=0,my=0,start=0;"M"==pathArray[0][0]&&(x=+pathArray[0][1],y=+pathArray[0][2],mx=x,my=y,start++,res[0]=["M",x,y]);for(var crz=3==pathArray.length&&"M"==pathArray[0][0]&&"R"==pathArray[1][0].toUpperCase()&&"Z"==pathArray[2][0].toUpperCase(),r,pa,i=start,ii=pathArray.length;i<ii;i++){if(res.push(r=[]),pa=pathArray[i],pa[0]!=upperCase.call(pa[0]))switch(r[0]=upperCase.call(pa[0]),r[0]){case"A":r[1]=pa[1],r[2]=pa[2],r[3]=pa[3],r[4]=pa[4],r[5]=pa[5],r[6]=+(pa[6]+x),r[7]=+(pa[7]+y);break;case"V":r[1]=+pa[1]+y;break;case"H":r[1]=+pa[1]+x;break;case"R":for(var dots=[x,y][concat](pa.slice(1)),j=2,jj=dots.length;j<jj;j++)dots[j]=+dots[j]+x,dots[++j]=+dots[j]+y;res.pop(),res=res[concat](catmullRom2bezier(dots,crz));break;case"M":mx=+pa[1]+x,my=+pa[2]+y;default:for(j=1,jj=pa.length;j<jj;j++)r[j]=+pa[j]+(j%2?x:y)}else if("R"==pa[0])dots=[x,y][concat](pa.slice(1)),res.pop(),res=res[concat](catmullRom2bezier(dots,crz)),r=["R"][concat](pa.slice(-2));else for(var k=0,kk=pa.length;k<kk;k++)r[k]=pa[k];switch(r[0]){case"Z":x=mx,y=my;break;case"H":x=r[1];break;case"V":y=r[1];break;case"M":mx=r[r.length-2],my=r[r.length-1];default:x=r[r.length-2],y=r[r.length-1]}}return res.toString=R._path2string,pth.abs=pathClone(res),res},l2c=function(x1,y1,x2,y2){return[x1,y1,x2,y2,x2,y2]},q2c=function(x1,y1,ax,ay,x2,y2){var _13=1/3,_23=2/3;return[_13*x1+_23*ax,_13*y1+_23*ay,_13*x2+_23*ax,_13*y2+_23*ay,x2,y2]},a2c=function(x1,y1,rx,ry,angle,large_arc_flag,sweep_flag,x2,y2,recursive){var _120=120*PI/180,rad=PI/180*(+angle||0),res=[],xy,rotate=cacher(function(x,y,rad){var X=x*math.cos(rad)-y*math.sin(rad),Y=x*math.sin(rad)+y*math.cos(rad);return{x:X,y:Y}});if(recursive)f1=recursive[0],f2=recursive[1],cx=recursive[2],cy=recursive[3];else{xy=rotate(x1,y1,-rad),x1=xy.x,y1=xy.y,xy=rotate(x2,y2,-rad),x2=xy.x,y2=xy.y;var cos=math.cos(PI/180*angle),sin=math.sin(PI/180*angle),x=(x1-x2)/2,y=(y1-y2)/2,h=x*x/(rx*rx)+y*y/(ry*ry);h>1&&(h=math.sqrt(h),rx=h*rx,ry=h*ry);var rx2=rx*rx,ry2=ry*ry,k=(large_arc_flag==sweep_flag?-1:1)*math.sqrt(abs((rx2*ry2-rx2*y*y-ry2*x*x)/(rx2*y*y+ry2*x*x))),cx=k*rx*y/ry+(x1+x2)/2,cy=k*-ry*x/rx+(y1+y2)/2,f1=math.asin(((y1-cy)/ry).toFixed(9)),f2=math.asin(((y2-cy)/ry).toFixed(9));f1=x1<cx?PI-f1:f1,f2=x2<cx?PI-f2:f2,f1<0&&(f1=2*PI+f1),f2<0&&(f2=2*PI+f2),sweep_flag&&f1>f2&&(f1-=2*PI),!sweep_flag&&f2>f1&&(f2-=2*PI)}var df=f2-f1;if(abs(df)>_120){var f2old=f2,x2old=x2,y2old=y2;f2=f1+_120*(sweep_flag&&f2>f1?1:-1),x2=cx+rx*math.cos(f2),y2=cy+ry*math.sin(f2),res=a2c(x2,y2,rx,ry,angle,0,sweep_flag,x2old,y2old,[f2,f2old,cx,cy])}df=f2-f1;var c1=math.cos(f1),s1=math.sin(f1),c2=math.cos(f2),s2=math.sin(f2),t=math.tan(df/4),hx=4/3*rx*t,hy=4/3*ry*t,m1=[x1,y1],m2=[x1+hx*s1,y1-hy*c1],m3=[x2+hx*s2,y2-hy*c2],m4=[x2,y2];if(m2[0]=2*m1[0]-m2[0],m2[1]=2*m1[1]-m2[1],recursive)return[m2,m3,m4][concat](res);res=[m2,m3,m4][concat](res).join()[split](",");for(var newres=[],i=0,ii=res.length;i<ii;i++)newres[i]=i%2?rotate(res[i-1],res[i],rad).y:rotate(res[i],res[i+1],rad).x;return newres},findDotAtSegment=function(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,t){var t1=1-t;return{x:pow(t1,3)*p1x+3*pow(t1,2)*t*c1x+3*t1*t*t*c2x+pow(t,3)*p2x,y:pow(t1,3)*p1y+3*pow(t1,2)*t*c1y+3*t1*t*t*c2y+pow(t,3)*p2y}},curveDim=cacher(function(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y){var a=c2x-2*c1x+p1x-(p2x-2*c2x+c1x),b=2*(c1x-p1x)-2*(c2x-c1x),c=p1x-c1x,t1=(-b+math.sqrt(b*b-4*a*c))/2/a,t2=(-b-math.sqrt(b*b-4*a*c))/2/a,y=[p1y,p2y],x=[p1x,p2x],dot;return abs(t1)>"1e12"&&(t1=.5),abs(t2)>"1e12"&&(t2=.5),t1>0&&t1<1&&(dot=findDotAtSegment(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,t1),x.push(dot.x),y.push(dot.y)),t2>0&&t2<1&&(dot=findDotAtSegment(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,t2),x.push(dot.x),y.push(dot.y)),a=c2y-2*c1y+p1y-(p2y-2*c2y+c1y),b=2*(c1y-p1y)-2*(c2y-c1y),c=p1y-c1y,t1=(-b+math.sqrt(b*b-4*a*c))/2/a,t2=(-b-math.sqrt(b*b-4*a*c))/2/a,abs(t1)>"1e12"&&(t1=.5),abs(t2)>"1e12"&&(t2=.5),t1>0&&t1<1&&(dot=findDotAtSegment(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,t1),x.push(dot.x),y.push(dot.y)),t2>0&&t2<1&&(dot=findDotAtSegment(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,t2),x.push(dot.x),y.push(dot.y)),{min:{x:mmin[apply](0,x),y:mmin[apply](0,y)},max:{x:mmax[apply](0,x),y:mmax[apply](0,y)}}}),path2curve=R._path2curve=cacher(function(path,path2){var pth=!path2&&paths(path);if(!path2&&pth.curve)return pathClone(pth.curve);for(var p=pathToAbsolute(path),p2=path2&&pathToAbsolute(path2),attrs={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},attrs2={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},processPath=(function(path,d,pcom){var nx,ny,tq={T:1,Q:1};if(!path)return["C",d.x,d.y,d.x,d.y,d.x,d.y];switch(!(path[0]in tq)&&(d.qx=d.qy=null),path[0]){case"M":d.X=path[1],d.Y=path[2];break;case"A":path=["C"][concat](a2c[apply](0,[d.x,d.y][concat](path.slice(1))));break;case"S":"C"==pcom||"S"==pcom?(nx=2*d.x-d.bx,ny=2*d.y-d.by):(nx=d.x,ny=d.y),path=["C",nx,ny][concat](path.slice(1));break;case"T":"Q"==pcom||"T"==pcom?(d.qx=2*d.x-d.qx,d.qy=2*d.y-d.qy):(d.qx=d.x,d.qy=d.y),path=["C"][concat](q2c(d.x,d.y,d.qx,d.qy,path[1],path[2]));break;case"Q":d.qx=path[1],d.qy=path[2],path=["C"][concat](q2c(d.x,d.y,path[1],path[2],path[3],path[4]));break;case"L":path=["C"][concat](l2c(d.x,d.y,path[1],path[2]));break;case"H":path=["C"][concat](l2c(d.x,d.y,path[1],d.y));break;case"V":path=["C"][concat](l2c(d.x,d.y,d.x,path[1]));break;case"Z":path=["C"][concat](l2c(d.x,d.y,d.X,d.Y))}return path}),fixArc=function(pp,i){if(pp[i].length>7){pp[i].shift();for(var pi=pp[i];pi.length;)pcoms1[i]="A",p2&&(pcoms2[i]="A"),pp.splice(i++,0,["C"][concat](pi.splice(0,6)));pp.splice(i,1),ii=mmax(p.length,p2&&p2.length||0)}},fixM=function(path1,path2,a1,a2,i){path1&&path2&&"M"==path1[i][0]&&"M"!=path2[i][0]&&(path2.splice(i,0,["M",a2.x,a2.y]),a1.bx=0,a1.by=0,a1.x=path1[i][1],a1.y=path1[i][2],ii=mmax(p.length,p2&&p2.length||0))},pcoms1=[],pcoms2=[],pfirst="",pcom="",i=0,ii=mmax(p.length,p2&&p2.length||0);i<ii;i++){p[i]&&(pfirst=p[i][0]),"C"!=pfirst&&(pcoms1[i]=pfirst,i&&(pcom=pcoms1[i-1])),p[i]=processPath(p[i],attrs,pcom),"A"!=pcoms1[i]&&"C"==pfirst&&(pcoms1[i]="C"),fixArc(p,i),p2&&(p2[i]&&(pfirst=p2[i][0]),"C"!=pfirst&&(pcoms2[i]=pfirst,i&&(pcom=pcoms2[i-1])),p2[i]=processPath(p2[i],attrs2,pcom),"A"!=pcoms2[i]&&"C"==pfirst&&(pcoms2[i]="C"),fixArc(p2,i)),fixM(p,p2,attrs,attrs2,i),fixM(p2,p,attrs2,attrs,i);var seg=p[i],seg2=p2&&p2[i],seglen=seg.length,seg2len=p2&&seg2.length;attrs.x=seg[seglen-2],attrs.y=seg[seglen-1],attrs.bx=toFloat(seg[seglen-4])||attrs.x,attrs.by=toFloat(seg[seglen-3])||attrs.y,attrs2.bx=p2&&(toFloat(seg2[seg2len-4])||attrs2.x),attrs2.by=p2&&(toFloat(seg2[seg2len-3])||attrs2.y),attrs2.x=p2&&seg2[seg2len-2],attrs2.y=p2&&seg2[seg2len-1]}return p2||(pth.curve=pathClone(p)),p2?[p,p2]:p},null,pathClone),parseDots=R._parseDots=cacher(function(gradient){for(var dots=[],i=0,ii=gradient.length;i<ii;i++){var dot={},par=gradient[i].match(/^([^:]*):?([\d\.]*)/);if(dot.color=R.getRGB(par[1]),dot.color.error)return null;dot.opacity=dot.color.opacity,dot.color=dot.color.hex,par[2]&&(dot.offset=par[2]+"%"),dots.push(dot)}for(i=1,ii=dots.length-1;i<ii;i++)if(!dots[i].offset){for(var start=toFloat(dots[i-1].offset||0),end=0,j=i+1;j<ii;j++)if(dots[j].offset){end=dots[j].offset;break}end||(end=100,j=ii),end=toFloat(end);for(var d=(end-start)/(j-i+1);i<j;i++)start+=d,dots[i].offset=start+"%"}return dots}),tear=R._tear=function(el,paper){el==paper.top&&(paper.top=el.prev),el==paper.bottom&&(paper.bottom=el.next),el.next&&(el.next.prev=el.prev),el.prev&&(el.prev.next=el.next)},tofront=R._tofront=function(el,paper){paper.top!==el&&(tear(el,paper),el.next=null,el.prev=paper.top,paper.top.next=el,paper.top=el)},toback=R._toback=function(el,paper){paper.bottom!==el&&(tear(el,paper),el.next=paper.bottom,el.prev=null,paper.bottom.prev=el,paper.bottom=el)},insertafter=R._insertafter=function(el,el2,paper){tear(el,paper),el2==paper.top&&(paper.top=el),el2.next&&(el2.next.prev=el),el.next=el2.next,el.prev=el2,el2.next=el},insertbefore=R._insertbefore=function(el,el2,paper){tear(el,paper),el2==paper.bottom&&(paper.bottom=el),el2.prev&&(el2.prev.next=el),el.prev=el2.prev,el2.prev=el,el.next=el2},toMatrix=R.toMatrix=function(path,transform){var bb=pathDimensions(path),el={_:{transform:E},getBBox:function(){return bb}};return extractTransform(el,transform),el.matrix},transformPath=R.transformPath=function(path,transform){return mapPath(path,toMatrix(path,transform))},extractTransform=R._extractTransform=function(el,tstr){if(null==tstr)return el._.transform;tstr=Str(tstr).replace(/\.{3}|\u2026/g,el._.transform||E);var tdata=R.parseTransformString(tstr),deg=0,dx=0,dy=0,sx=1,sy=1,_=el._,m=new Matrix;if(_.transform=tdata||[],tdata)for(var i=0,ii=tdata.length;i<ii;i++){var t=tdata[i],tlen=t.length,command=Str(t[0]).toLowerCase(),absolute=t[0]!=command,inver=absolute?m.invert():0,x1,y1,x2,y2,bb;"t"==command&&3==tlen?absolute?(x1=inver.x(0,0),y1=inver.y(0,0),x2=inver.x(t[1],t[2]),y2=inver.y(t[1],t[2]),m.translate(x2-x1,y2-y1)):m.translate(t[1],t[2]):"r"==command?2==tlen?(bb=bb||el.getBBox(1),m.rotate(t[1],bb.x+bb.width/2,bb.y+bb.height/2),deg+=t[1]):4==tlen&&(absolute?(x2=inver.x(t[2],t[3]),y2=inver.y(t[2],t[3]),m.rotate(t[1],x2,y2)):m.rotate(t[1],t[2],t[3]),deg+=t[1]):"s"==command?2==tlen||3==tlen?(bb=bb||el.getBBox(1),m.scale(t[1],t[tlen-1],bb.x+bb.width/2,bb.y+bb.height/2),sx*=t[1],sy*=t[tlen-1]):5==tlen&&(absolute?(x2=inver.x(t[3],t[4]),y2=inver.y(t[3],t[4]),m.scale(t[1],t[2],x2,y2)):m.scale(t[1],t[2],t[3],t[4]),sx*=t[1],sy*=t[2]):"m"==command&&7==tlen&&m.add(t[1],t[2],t[3],t[4],t[5],t[6]),_.dirtyT=1,el.matrix=m}el.matrix=m,_.sx=sx,_.sy=sy,_.deg=deg,_.dx=dx=m.e,_.dy=dy=m.f,1==sx&&1==sy&&!deg&&_.bbox?(_.bbox.x+=+dx,_.bbox.y+=+dy):_.dirtyT=1},getEmpty=function(item){var l=item[0];switch(l.toLowerCase()){case"t":return[l,0,0];case"m":return[l,1,0,0,1,0,0];case"r":return 4==item.length?[l,0,item[2],item[3]]:[l,0];case"s":return 5==item.length?[l,1,1,item[3],item[4]]:3==item.length?[l,1,1]:[l,1]}},equaliseTransform=R._equaliseTransform=function(t1,t2){t2=Str(t2).replace(/\.{3}|\u2026/g,t1),t1=R.parseTransformString(t1)||[],t2=R.parseTransformString(t2)||[];for(var maxlength=mmax(t1.length,t2.length),from=[],to=[],i=0,j,jj,tt1,tt2;i<maxlength;i++){if(tt1=t1[i]||getEmpty(t2[i]),tt2=t2[i]||getEmpty(tt1),tt1[0]!=tt2[0]||"r"==tt1[0].toLowerCase()&&(tt1[2]!=tt2[2]||tt1[3]!=tt2[3])||"s"==tt1[0].toLowerCase()&&(tt1[3]!=tt2[3]||tt1[4]!=tt2[4]))return;for(from[i]=[],to[i]=[],j=0,jj=mmax(tt1.length,tt2.length);j<jj;j++)j in tt1&&(from[i][j]=tt1[j]),j in tt2&&(to[i][j]=tt2[j])}return{from:from,to:to}};R._getContainer=function(x,y,w,h){var container;if(container=null!=h||R.is(x,"object")?x:g.doc.getElementById(x),null!=container)return container.tagName?null==y?{container:container,width:container.style.pixelWidth||container.offsetWidth,height:container.style.pixelHeight||container.offsetHeight}:{container:container,width:y,height:w}:{container:1,x:x,y:y,width:w,height:h}},R.pathToRelative=pathToRelative,R._engine={},R.path2curve=path2curve,R.matrix=function(a,b,c,d,e,f){return new Matrix(a,b,c,d,e,f)},function(matrixproto){function norm(a){return a[0]*a[0]+a[1]*a[1]}function normalize(a){var mag=math.sqrt(norm(a));a[0]&&(a[0]/=mag),a[1]&&(a[1]/=mag)}matrixproto.add=function(a,b,c,d,e,f){var out=[[],[],[]],m=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],matrix=[[a,c,e],[b,d,f],[0,0,1]],x,y,z,res;for(a&&a instanceof Matrix&&(matrix=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]),
x=0;x<3;x++)for(y=0;y<3;y++){for(res=0,z=0;z<3;z++)res+=m[x][z]*matrix[z][y];out[x][y]=res}this.a=out[0][0],this.b=out[1][0],this.c=out[0][1],this.d=out[1][1],this.e=out[0][2],this.f=out[1][2]},matrixproto.invert=function(){var me=this,x=me.a*me.d-me.b*me.c;return new Matrix(me.d/x,-me.b/x,-me.c/x,me.a/x,(me.c*me.f-me.d*me.e)/x,(me.b*me.e-me.a*me.f)/x)},matrixproto.clone=function(){return new Matrix(this.a,this.b,this.c,this.d,this.e,this.f)},matrixproto.translate=function(x,y){this.add(1,0,0,1,x,y)},matrixproto.scale=function(x,y,cx,cy){null==y&&(y=x),(cx||cy)&&this.add(1,0,0,1,cx,cy),this.add(x,0,0,y,0,0),(cx||cy)&&this.add(1,0,0,1,-cx,-cy)},matrixproto.rotate=function(a,x,y){a=R.rad(a),x=x||0,y=y||0;var cos=+math.cos(a).toFixed(9),sin=+math.sin(a).toFixed(9);this.add(cos,sin,-sin,cos,x,y),this.add(1,0,0,1,-x,-y)},matrixproto.x=function(x,y){return x*this.a+y*this.c+this.e},matrixproto.y=function(x,y){return x*this.b+y*this.d+this.f},matrixproto.get=function(i){return+this[Str.fromCharCode(97+i)].toFixed(4)},matrixproto.toString=function(){return R.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},matrixproto.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"},matrixproto.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},matrixproto.split=function(){var out={};out.dx=this.e,out.dy=this.f;var row=[[this.a,this.c],[this.b,this.d]];out.scalex=math.sqrt(norm(row[0])),normalize(row[0]),out.shear=row[0][0]*row[1][0]+row[0][1]*row[1][1],row[1]=[row[1][0]-row[0][0]*out.shear,row[1][1]-row[0][1]*out.shear],out.scaley=math.sqrt(norm(row[1])),normalize(row[1]),out.shear/=out.scaley;var sin=-row[0][1],cos=row[1][1];return cos<0?(out.rotate=R.deg(math.acos(cos)),sin<0&&(out.rotate=360-out.rotate)):out.rotate=R.deg(math.asin(sin)),out.isSimple=!(+out.shear.toFixed(9)||out.scalex.toFixed(9)!=out.scaley.toFixed(9)&&out.rotate),out.isSuperSimple=!+out.shear.toFixed(9)&&out.scalex.toFixed(9)==out.scaley.toFixed(9)&&!out.rotate,out.noRotation=!+out.shear.toFixed(9)&&!out.rotate,out},matrixproto.toTransformString=function(shorter){var s=shorter||this[split]();return s.isSimple?(s.scalex=+s.scalex.toFixed(4),s.scaley=+s.scaley.toFixed(4),s.rotate=+s.rotate.toFixed(4),(s.dx||s.dy?"t"+[s.dx,s.dy]:E)+(1!=s.scalex||1!=s.scaley?"s"+[s.scalex,s.scaley,0,0]:E)+(s.rotate?"r"+[s.rotate,0,0]:E)):"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}}(Matrix.prototype);for(var preventDefault=function(){this.returnValue=!1},preventTouch=function(){return this.originalEvent.preventDefault()},stopPropagation=function(){this.cancelBubble=!0},stopTouch=function(){return this.originalEvent.stopPropagation()},getEventPosition=function(e){var scrollY=g.doc.documentElement.scrollTop||g.doc.body.scrollTop,scrollX=g.doc.documentElement.scrollLeft||g.doc.body.scrollLeft;return{x:e.clientX+scrollX,y:e.clientY+scrollY}},addEvent=function(){return g.doc.addEventListener?function(obj,type,fn,element){var f=function(e){var pos=getEventPosition(e);return fn.call(element,e,pos.x,pos.y)};if(obj.addEventListener(type,f,!1),supportsTouch&&touchMap[type]){var _f=function(e){for(var pos=getEventPosition(e),olde=e,i=0,ii=e.targetTouches&&e.targetTouches.length;i<ii;i++)if(e.targetTouches[i].target==obj){e=e.targetTouches[i],e.originalEvent=olde,e.preventDefault=preventTouch,e.stopPropagation=stopTouch;break}return fn.call(element,e,pos.x,pos.y)};obj.addEventListener(touchMap[type],_f,!1)}return function(){return obj.removeEventListener(type,f,!1),supportsTouch&&touchMap[type]&&obj.removeEventListener(touchMap[type],_f,!1),!0}}:g.doc.attachEvent?function(obj,type,fn,element){var f=function(e){e=e||g.win.event;var scrollY=g.doc.documentElement.scrollTop||g.doc.body.scrollTop,scrollX=g.doc.documentElement.scrollLeft||g.doc.body.scrollLeft,x=e.clientX+scrollX,y=e.clientY+scrollY;return e.preventDefault=e.preventDefault||preventDefault,e.stopPropagation=e.stopPropagation||stopPropagation,fn.call(element,e,x,y)};obj.attachEvent("on"+type,f);var detacher=function(){return obj.detachEvent("on"+type,f),!0};return detacher}:void 0}(),drag=[],dragMove=function(e){for(var x=e.clientX,y=e.clientY,scrollY=g.doc.documentElement.scrollTop||g.doc.body.scrollTop,scrollX=g.doc.documentElement.scrollLeft||g.doc.body.scrollLeft,dragi,j=drag.length;j--;){if(dragi=drag[j],supportsTouch&&e.touches){for(var i=e.touches.length,touch;i--;)if(touch=e.touches[i],touch.identifier==dragi.el._drag.id){x=touch.clientX,y=touch.clientY,(e.originalEvent?e.originalEvent:e).preventDefault();break}}else e.preventDefault();var node=dragi.el.node,o,next=node.nextSibling,parent=node.parentNode,display=node.style.display;g.win.opera&&parent.removeChild(node),node.style.display="none",o=dragi.el.paper.getElementByPoint(x,y),node.style.display=display,g.win.opera&&(next?parent.insertBefore(node,next):parent.appendChild(node)),o&&eve("raphael.drag.over."+dragi.el.id,dragi.el,o),x+=scrollX,y+=scrollY,eve("raphael.drag.move."+dragi.el.id,dragi.move_scope||dragi.el,x-dragi.el._drag.x,y-dragi.el._drag.y,x,y,e)}},dragUp=function(e){R.unmousemove(dragMove).unmouseup(dragUp);for(var i=drag.length,dragi;i--;)dragi=drag[i],dragi.el._drag={},eve("raphael.drag.end."+dragi.el.id,dragi.end_scope||dragi.start_scope||dragi.move_scope||dragi.el,e);drag=[]},elproto=R.el={},i=events.length;i--;)!function(eventName){R[eventName]=elproto[eventName]=function(fn,scope){return R.is(fn,"function")&&(this.events=this.events||[],this.events.push({name:eventName,f:fn,unbind:addEvent(this.shape||this.node||g.doc,eventName,fn,scope||this)})),this},R["un"+eventName]=elproto["un"+eventName]=function(fn){for(var events=this.events||[],l=events.length;l--;)events[l].name!=eventName||!R.is(fn,"undefined")&&events[l].f!=fn||(events[l].unbind(),events.splice(l,1),!events.length&&delete this.events);return this}}(events[i]);elproto.data=function(key,value){var data=eldata[this.id]=eldata[this.id]||{};if(0==arguments.length)return data;if(1==arguments.length){if(R.is(key,"object")){for(var i in key)key[has](i)&&this.data(i,key[i]);return this}return eve("raphael.data.get."+this.id,this,data[key],key),data[key]}return data[key]=value,eve("raphael.data.set."+this.id,this,value,key),this},elproto.datum=function(){return 0==arguments.length?this._bindData:(this._bindData=arguments[0],this)},elproto.removeData=function(key){return null==key?eldata[this.id]={}:eldata[this.id]&&delete eldata[this.id][key],this},elproto.getData=function(){return clone(eldata[this.id]||{})},elproto.hover=function(f_in,f_out,scope_in,scope_out){return this.mouseover(f_in,scope_in).mouseout(f_out,scope_out||scope_in)},elproto.unhover=function(f_in,f_out){return this.unmouseover(f_in).unmouseout(f_out)};var draggable=[];elproto.drag=function(onmove,onstart,onend,move_scope,start_scope,end_scope){function start(e){(e.originalEvent||e).preventDefault();var x=e.clientX,y=e.clientY,scrollY=g.doc.documentElement.scrollTop||g.doc.body.scrollTop,scrollX=g.doc.documentElement.scrollLeft||g.doc.body.scrollLeft;if(this._drag.id=e.identifier,supportsTouch&&e.touches)for(var i=e.touches.length,touch;i--;)if(touch=e.touches[i],this._drag.id=touch.identifier,touch.identifier==this._drag.id){x=touch.clientX,y=touch.clientY;break}this._drag.x=x+scrollX,this._drag.y=y+scrollY,!drag.length&&R.mousemove(dragMove).mouseup(dragUp),drag.push({el:this,move_scope:move_scope,start_scope:start_scope,end_scope:end_scope}),onstart&&eve.on("raphael.drag.start."+this.id,onstart),onmove&&eve.on("raphael.drag.move."+this.id,onmove),onend&&eve.on("raphael.drag.end."+this.id,onend),eve("raphael.drag.start."+this.id,start_scope||move_scope||this,e.clientX+scrollX,e.clientY+scrollY,e)}return this._drag={},draggable.push({el:this,start:start}),this.mousedown(start),this},elproto.onDragOver=function(f){f?eve.on("raphael.drag.over."+this.id,f):eve.unbind("raphael.drag.over."+this.id)},elproto.undrag=function(){for(var i=draggable.length;i--;)draggable[i].el==this&&(this.unmousedown(draggable[i].start),draggable.splice(i,1),eve.unbind("raphael.drag.*."+this.id));!draggable.length&&R.unmousemove(dragMove).unmouseup(dragUp),drag=[]},paperproto.circle=function(x,y,r){var out=R._engine.circle(this,x||0,y||0,r||0);return this.__set__&&this.__set__.push(out),out},paperproto.rect=function(x,y,w,h,r){var out=R._engine.rect(this,x||0,y||0,w||0,h||0,r||0);return this.__set__&&this.__set__.push(out),out},paperproto.ellipse=function(x,y,rx,ry){var out=R._engine.ellipse(this,x||0,y||0,rx||0,ry||0);return this.__set__&&this.__set__.push(out),out},paperproto.path=function(pathString){pathString&&!R.is(pathString,string)&&!R.is(pathString[0],array)&&(pathString+=E);var out=R._engine.path(R.format[apply](R,arguments),this);return this.__set__&&this.__set__.push(out),out},paperproto.image=function(src,x,y,w,h){var out=R._engine.image(this,src||"about:blank",x||0,y||0,w||0,h||0);return this.__set__&&this.__set__.push(out),out},paperproto.text=function(x,y,text){var out=R._engine.text(this,x||0,y||0,Str(text));return this.__set__&&this.__set__.push(out),out},paperproto.set=function(itemsArray){!R.is(itemsArray,"array")&&(itemsArray=Array.prototype.splice.call(arguments,0,arguments.length));var out=new Set(itemsArray);return this.__set__&&this.__set__.push(out),out.paper=this,out.type="set",out},paperproto.setStart=function(set){this.__set__=set||this.set()},paperproto.setFinish=function(set){var out=this.__set__;return delete this.__set__,out},paperproto.getSize=function(){var container=this.canvas.parentNode;return{width:container.offsetWidth,height:container.offsetHeight}},paperproto.setSize=function(width,height){return R._engine.setSize.call(this,width,height)},paperproto.setViewBox=function(x,y,w,h,fit){return R._engine.setViewBox.call(this,x,y,w,h,fit)},paperproto.top=paperproto.bottom=null,paperproto.raphael=R;var getOffset=function(elem){var box=elem.getBoundingClientRect(),doc=elem.ownerDocument,body=doc.body,docElem=doc.documentElement,clientTop=docElem.clientTop||body.clientTop||0,clientLeft=docElem.clientLeft||body.clientLeft||0,top=box.top+(g.win.pageYOffset||docElem.scrollTop||body.scrollTop)-clientTop,left=box.left+(g.win.pageXOffset||docElem.scrollLeft||body.scrollLeft)-clientLeft;return{y:top,x:left}};paperproto.getElementByPoint=function(x,y){var paper=this,svg=paper.canvas,target=g.doc.elementFromPoint(x,y);if(g.win.opera&&"svg"==target.tagName){var so=getOffset(svg),sr=svg.createSVGRect();sr.x=x-so.x,sr.y=y-so.y,sr.width=sr.height=1;var hits=svg.getIntersectionList(sr,null);hits.length&&(target=hits[hits.length-1])}if(!target)return null;for(;target.parentNode&&target!=svg.parentNode&&!target.raphael;)target=target.parentNode;return target==paper.canvas.parentNode&&(target=svg),target=target&&target.raphael?paper.getById(target.raphaelid):null},paperproto.getElementsByBBox=function(bbox){var set=this.set();return this.forEach(function(el){R.isBBoxIntersect(el.getBBox(),bbox)&&set.push(el)}),set},paperproto.getById=function(id){for(var bot=this.bottom;bot;){if(bot.id==id)return bot;bot=bot.next}return null},paperproto.forEach=function(callback,thisArg){for(var bot=this.bottom;bot;){if(callback.call(thisArg,bot)===!1)return this;bot=bot.next}return this},paperproto.getElementsByPoint=function(x,y){var set=this.set();return this.forEach(function(el){el.isPointInside(x,y)&&set.push(el)}),set},elproto.isPointInside=function(x,y){var rp=this.realPath=getPath[this.type](this);return this.attr("transform")&&this.attr("transform").length&&(rp=R.transformPath(rp,this.attr("transform"))),R.isPointInsidePath(rp,x,y)},elproto.getBBox=function(isWithoutTransform){if(this.removed)return{};var _=this._;return isWithoutTransform?(!_.dirty&&_.bboxwt||(this.realPath=getPath[this.type](this),_.bboxwt=pathDimensions(this.realPath),_.bboxwt.toString=x_y_w_h,_.dirty=0),_.bboxwt):((_.dirty||_.dirtyT||!_.bbox)&&(!_.dirty&&this.realPath||(_.bboxwt=0,this.realPath=getPath[this.type](this)),_.bbox=pathDimensions(mapPath(this.realPath,this.matrix)),_.bbox.toString=x_y_w_h,_.dirty=_.dirtyT=0),_.bbox)},elproto.clone=function(){if(this.removed)return null;var out=this.paper[this.type]().attr(this.attr());return this.__set__&&this.__set__.push(out),out},elproto.glow=function(glow){if("text"==this.type)return null;glow=glow||{};var s={width:(glow.width||10)+(+this.attr("stroke-width")||1),fill:glow.fill||!1,opacity:null==glow.opacity?.5:glow.opacity,offsetx:glow.offsetx||0,offsety:glow.offsety||0,color:glow.color||"#000"},c=s.width/2,r=this.paper,out=r.set(),path=this.realPath||getPath[this.type](this);path=this.matrix?mapPath(path,this.matrix):path;for(var i=1;i<c+1;i++)out.push(r.path(path).attr({stroke:s.color,fill:s.fill?s.color:"none","stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(s.width/c*i).toFixed(3),opacity:+(s.opacity/c).toFixed(3)}));return out.insertBefore(this).translate(s.offsetx,s.offsety)};var curveslengths={},getPointAtSegmentLength=function(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,length){return null==length?bezlen(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y):R.findDotsAtSegment(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,getTatLen(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,length))},getLengthFactory=function(istotal,subpath){return function(path,length,onlystart){path=path2curve(path);for(var x,y,p,l,sp="",subpaths={},point,len=0,i=0,ii=path.length;i<ii;i++){if(p=path[i],"M"==p[0])x=+p[1],y=+p[2];else{if(l=getPointAtSegmentLength(x,y,p[1],p[2],p[3],p[4],p[5],p[6]),len+l>length){if(subpath&&!subpaths.start){if(point=getPointAtSegmentLength(x,y,p[1],p[2],p[3],p[4],p[5],p[6],length-len),sp+=["C"+point.start.x,point.start.y,point.m.x,point.m.y,point.x,point.y],onlystart)return sp;subpaths.start=sp,sp=["M"+point.x,point.y+"C"+point.n.x,point.n.y,point.end.x,point.end.y,p[5],p[6]].join(),len+=l,x=+p[5],y=+p[6];continue}if(!istotal&&!subpath)return point=getPointAtSegmentLength(x,y,p[1],p[2],p[3],p[4],p[5],p[6],length-len),{x:point.x,y:point.y,alpha:point.alpha}}len+=l,x=+p[5],y=+p[6]}sp+=p.shift()+p}return subpaths.end=sp,point=istotal?len:subpath?subpaths:R.findDotsAtSegment(x,y,p[0],p[1],p[2],p[3],p[4],p[5],1),point.alpha&&(point={x:point.x,y:point.y,alpha:point.alpha}),point}},getTotalLength=getLengthFactory(1),getPointAtLength=getLengthFactory(),getSubpathsAtLength=getLengthFactory(0,1);R.getTotalLength=getTotalLength,R.getPointAtLength=getPointAtLength,R.getSubpath=function(path,from,to){if(this.getTotalLength(path)-to<1e-6)return getSubpathsAtLength(path,from).end;var a=getSubpathsAtLength(path,to,1);return from?getSubpathsAtLength(a,from).end:a},elproto.getTotalLength=function(){var path=this.getPath();if(path)return this.node.getTotalLength?this.node.getTotalLength():getTotalLength(path)},elproto.getPointAtLength=function(length){var path=this.getPath();if(path)return getPointAtLength(path,length)},elproto.getPath=function(){var path,getPath=R._getPath[this.type];if("text"!=this.type&&"set"!=this.type)return getPath&&(path=getPath(this)),path},elproto.getSubpath=function(from,to){var path=this.getPath();if(path)return R.getSubpath(path,from,to)};var ef=R.easing_formulas={linear:function(n){return n},"<":function(n){return pow(n,1.7)},">":function(n){return pow(n,.48)},"<>":function(n){var q=.48-n/1.04,Q=math.sqrt(.1734+q*q),x=Q-q,X=pow(abs(x),1/3)*(x<0?-1:1),y=-Q-q,Y=pow(abs(y),1/3)*(y<0?-1:1),t=X+Y+.5;return 3*(1-t)*t*t+t*t*t},backIn:function(n){var s=1.70158;return n*n*((s+1)*n-s)},backOut:function(n){n-=1;var s=1.70158;return n*n*((s+1)*n+s)+1},elastic:function(n){return n==!!n?n:pow(2,-10*n)*math.sin((n-.075)*(2*PI)/.3)+1},bounce:function(n){var s=7.5625,p=2.75,l;return n<1/p?l=s*n*n:n<2/p?(n-=1.5/p,l=s*n*n+.75):n<2.5/p?(n-=2.25/p,l=s*n*n+.9375):(n-=2.625/p,l=s*n*n+.984375),l}};ef.easeIn=ef["ease-in"]=ef["<"],ef.easeOut=ef["ease-out"]=ef[">"],ef.easeInOut=ef["ease-in-out"]=ef["<>"],ef["back-in"]=ef.backIn,ef["back-out"]=ef.backOut;var animationElements=[],requestAnimFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){setTimeout(callback,16)},animation=function(){for(var Now=+new Date,l=0;l<animationElements.length;l++){var e=animationElements[l];if(!e.el.removed&&!e.paused){var time=Now-e.start,ms=e.ms,easing=e.easing,from=e.from,diff=e.diff,to=e.to,t=e.t,that=e.el,set={},now,init={},key;if(e.initstatus?(time=(e.initstatus*e.anim.top-e.prev)/(e.percent-e.prev)*ms,e.status=e.initstatus,delete e.initstatus,e.stop&&animationElements.splice(l--,1)):e.status=(e.prev+(e.percent-e.prev)*(time/ms))/e.anim.top,!(time<0))if(time<ms){var pos=easing(time/ms);for(var attr in from)if(from[has](attr)){switch(availableAnimAttrs[attr]){case nu:now=+from[attr]+pos*ms*diff[attr];break;case"colour":now="rgb("+[upto255(round(from[attr].r+pos*ms*diff[attr].r)),upto255(round(from[attr].g+pos*ms*diff[attr].g)),upto255(round(from[attr].b+pos*ms*diff[attr].b))].join(",")+")";break;case"path":now=[];for(var i=0,ii=from[attr].length;i<ii;i++){now[i]=[from[attr][i][0]];for(var j=1,jj=from[attr][i].length;j<jj;j++)now[i][j]=+from[attr][i][j]+pos*ms*diff[attr][i][j];now[i]=now[i].join(S)}now=now.join(S);break;case"transform":if(diff[attr].real)for(now=[],i=0,ii=from[attr].length;i<ii;i++)for(now[i]=[from[attr][i][0]],j=1,jj=from[attr][i].length;j<jj;j++)now[i][j]=from[attr][i][j]+pos*ms*diff[attr][i][j];else{var get=function(i){return+from[attr][i]+pos*ms*diff[attr][i]};now=[["m",get(0),get(1),get(2),get(3),get(4),get(5)]]}break;case"csv":if("clip-rect"==attr)for(now=[],i=4;i--;)now[i]=+from[attr][i]+pos*ms*diff[attr][i];break;default:var from2=[][concat](from[attr]);for(now=[],i=that.paper.customAttributes[attr].length;i--;)now[i]=+from2[i]+pos*ms*diff[attr][i]}set[attr]=now}that.attr(set),function(id,that,anim){setTimeout(function(){eve("raphael.anim.frame."+id,that,anim)})}(that.id,that,e.anim)}else{if(function(f,el,a){setTimeout(function(){eve("raphael.anim.frame."+el.id,el,a),eve("raphael.anim.finish."+el.id,el,a),R.is(f,"function")&&f.call(el)})}(e.callback,that,e.anim),that.attr(to),animationElements.splice(l--,1),e.repeat>1&&!e.next){for(key in to)to[has](key)&&(init[key]=e.totalOrigin[key]);e.el.attr(init),runAnimation(e.anim,e.el,e.anim.percents[0],null,e.totalOrigin,e.repeat-1)}e.next&&!e.stop&&runAnimation(e.anim,e.el,e.next,null,e.totalOrigin,e.repeat)}}}animationElements.length&&requestAnimFrame(animation)},upto255=function(color){return color>255?255:color<0?0:color};elproto.animateWith=function(el,anim,params,ms,easing,callback){var element=this;if(element.removed)return callback&&callback.call(element),element;var a=params instanceof Animation?params:R.animation(params,ms,easing,callback),x,y;runAnimation(a,element,a.percents[0],null,element.attr());for(var i=0,ii=animationElements.length;i<ii;i++)if(animationElements[i].anim==anim&&animationElements[i].el==el){animationElements[ii-1].start=animationElements[i].start;break}return element},elproto.onAnimation=function(f){return f?eve.on("raphael.anim.frame."+this.id,f):eve.unbind("raphael.anim.frame."+this.id),this},Animation.prototype.delay=function(delay){var a=new Animation(this.anim,this.ms);return a.times=this.times,a.del=+delay||0,a},Animation.prototype.repeat=function(times){var a=new Animation(this.anim,this.ms);return a.del=this.del,a.times=math.floor(mmax(times,0))||1,a},R.animation=function(params,ms,easing,callback){if(params instanceof Animation)return params;!R.is(easing,"function")&&easing||(callback=callback||easing||null,easing=null),params=Object(params),ms=+ms||0;var p={},json,attr;for(attr in params)params[has](attr)&&toFloat(attr)!=attr&&toFloat(attr)+"%"!=attr&&(json=!0,p[attr]=params[attr]);if(json)return easing&&(p.easing=easing),callback&&(p.callback=callback),new Animation({100:p},ms);if(callback){var lastKey=0;for(var i in params){var percent=toInt(i);params[has](i)&&percent>lastKey&&(lastKey=percent)}lastKey+="%",!params[lastKey].callback&&(params[lastKey].callback=callback)}return new Animation(params,ms)},elproto.animate=function(params,ms,easing,callback){var element=this;if(element.removed)return callback&&callback.call(element),element;var anim=params instanceof Animation?params:R.animation(params,ms,easing,callback);return runAnimation(anim,element,anim.percents[0],null,element.attr()),element},elproto.setTime=function(anim,value){return anim&&null!=value&&this.status(anim,mmin(value,anim.ms)/anim.ms),this},elproto.status=function(anim,value){var out=[],i=0,len,e;if(null!=value)return runAnimation(anim,this,-1,mmin(value,1)),this;for(len=animationElements.length;i<len;i++)if(e=animationElements[i],e.el.id==this.id&&(!anim||e.anim==anim)){if(anim)return e.status;out.push({anim:e.anim,status:e.status})}return anim?0:out},elproto.pause=function(anim){for(var i=0;i<animationElements.length;i++)animationElements[i].el.id!=this.id||anim&&animationElements[i].anim!=anim||eve("raphael.anim.pause."+this.id,this,animationElements[i].anim)!==!1&&(animationElements[i].paused=!0);return this},elproto.resume=function(anim){for(var i=0;i<animationElements.length;i++)if(animationElements[i].el.id==this.id&&(!anim||animationElements[i].anim==anim)){var e=animationElements[i];eve("raphael.anim.resume."+this.id,this,e.anim)!==!1&&(delete e.paused,this.status(e.anim,e.status))}return this},elproto.stop=function(anim){for(var i=0;i<animationElements.length;i++)animationElements[i].el.id!=this.id||anim&&animationElements[i].anim!=anim||eve("raphael.anim.stop."+this.id,this,animationElements[i].anim)!==!1&&animationElements.splice(i--,1);return this},eve.on("raphael.remove",stopAnimation),eve.on("raphael.clear",stopAnimation),elproto.toString=function(){return"Raphaël’s object"};var Set=function(items){if(this.items=[],this.length=0,this.type="set",items)for(var i=0,ii=items.length;i<ii;i++)!items[i]||items[i].constructor!=elproto.constructor&&items[i].constructor!=Set||(this[this.items.length]=this.items[this.items.length]=items[i],this.length++)},setproto=Set.prototype;setproto.push=function(){for(var item,len,i=0,ii=arguments.length;i<ii;i++)item=arguments[i],!item||item.constructor!=elproto.constructor&&item.constructor!=Set||(len=this.items.length,this[len]=this.items[len]=item,this.length++);return this},setproto.pop=function(){return this.length&&delete this[this.length--],this.items.pop()},setproto.forEach=function(callback,thisArg){for(var i=0,ii=this.items.length;i<ii;i++)if(callback.call(thisArg,this.items[i],i)===!1)return this;return this};for(var method in elproto)elproto[has](method)&&(setproto[method]=function(methodname){return function(){var arg=arguments;return this.forEach(function(el){el[methodname][apply](el,arg)})}}(method));return setproto.attr=function(name,value){if(name&&R.is(name,array)&&R.is(name[0],"object"))for(var j=0,jj=name.length;j<jj;j++)this.items[j].attr(name[j]);else for(var i=0,ii=this.items.length;i<ii;i++)this.items[i].attr(name,value);return this},setproto.clear=function(){for(;this.length;)this.pop()},setproto.splice=function(index,count,insertion){index=index<0?mmax(this.length+index,0):index,count=mmax(0,mmin(this.length-index,count));var tail=[],todel=[],args=[],i;for(i=2;i<arguments.length;i++)args.push(arguments[i]);for(i=0;i<count;i++)todel.push(this[index+i]);for(;i<this.length-index;i++)tail.push(this[index+i]);var arglen=args.length;for(i=0;i<arglen+tail.length;i++)this.items[index+i]=this[index+i]=i<arglen?args[i]:tail[i-arglen];for(i=this.items.length=this.length-=count-arglen;this[i];)delete this[i++];return new Set(todel)},setproto.exclude=function(el){for(var i=0,ii=this.length;i<ii;i++)if(this[i]==el)return this.splice(i,1),!0},setproto.animate=function(params,ms,easing,callback){(R.is(easing,"function")||!easing)&&(callback=easing||null);var len=this.items.length,i=len,item,set=this,collector;if(!len)return this;callback&&(collector=function(){!--len&&callback.call(set)}),easing=R.is(easing,string)?easing:collector;var anim=R.animation(params,ms,easing,collector);for(item=this.items[--i].animate(anim);i--;)this.items[i]&&!this.items[i].removed&&this.items[i].animateWith(item,anim,anim),this.items[i]&&!this.items[i].removed||len--;return this},setproto.insertAfter=function(el){for(var i=this.items.length;i--;)this.items[i].insertAfter(el);return this},setproto.getBBox=function(){for(var x=[],y=[],x2=[],y2=[],i=this.items.length;i--;)if(!this.items[i].removed){var box=this.items[i].getBBox();x.push(box.x),y.push(box.y),x2.push(box.x+box.width),y2.push(box.y+box.height)}return x=mmin[apply](0,x),y=mmin[apply](0,y),x2=mmax[apply](0,x2),y2=mmax[apply](0,y2),{x:x,y:y,x2:x2,y2:y2,width:x2-x,height:y2-y}},setproto.clone=function(s){s=this.paper.set();for(var i=0,ii=this.items.length;i<ii;i++)s.push(this.items[i].clone());return s},setproto.toString=function(){return"Raphaël‘s set"},setproto.glow=function(glowConfig){var ret=this.paper.set();return this.forEach(function(shape,index){var g=shape.glow(glowConfig);null!=g&&g.forEach(function(shape2,index2){ret.push(shape2)})}),ret},setproto.isPointInside=function(x,y){var isPointInside=!1;return this.forEach(function(el){if(el.isPointInside(x,y))return isPointInside=!0,!1}),isPointInside},R.registerFont=function(font){if(!font.face)return font;this.fonts=this.fonts||{};var fontcopy={w:font.w,face:{},glyphs:{}},family=font.face["font-family"];for(var prop in font.face)font.face[has](prop)&&(fontcopy.face[prop]=font.face[prop]);if(this.fonts[family]?this.fonts[family].push(fontcopy):this.fonts[family]=[fontcopy],!font.svg){fontcopy.face["units-per-em"]=toInt(font.face["units-per-em"],10);for(var glyph in font.glyphs)if(font.glyphs[has](glyph)){var path=font.glyphs[glyph];if(fontcopy.glyphs[glyph]={w:path.w,k:{},d:path.d&&"M"+path.d.replace(/[mlcxtrv]/g,function(command){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[command]||"M"})+"z"},path.k)for(var k in path.k)path[has](k)&&(fontcopy.glyphs[glyph].k[k]=path.k[k])}}return font},paperproto.getFont=function(family,weight,style,stretch){if(stretch=stretch||"normal",style=style||"normal",weight=+weight||{normal:400,bold:700,lighter:300,bolder:800}[weight]||400,R.fonts){var font=R.fonts[family];if(!font){var name=new RegExp("(^|\\s)"+family.replace(/[^\w\d\s+!~.:_-]/g,E)+"(\\s|$)","i");for(var fontName in R.fonts)if(R.fonts[has](fontName)&&name.test(fontName)){font=R.fonts[fontName];break}}var thefont;if(font)for(var i=0,ii=font.length;i<ii&&(thefont=font[i],thefont.face["font-weight"]!=weight||thefont.face["font-style"]!=style&&thefont.face["font-style"]||thefont.face["font-stretch"]!=stretch);i++);return thefont}},paperproto.print=function(x,y,string,font,size,origin,letter_spacing,line_spacing){origin=origin||"middle",letter_spacing=mmax(mmin(letter_spacing||0,1),-1),line_spacing=mmax(mmin(line_spacing||1,3),1);var letters=Str(string)[split](E),shift=0,notfirst=0,path=E,scale;if(R.is(font,"string")&&(font=this.getFont(font)),font){scale=(size||16)/font.face["units-per-em"];for(var bb=font.face.bbox[split](separator),top=+bb[0],lineHeight=bb[3]-bb[1],shifty=0,height=+bb[1]+("baseline"==origin?lineHeight+ +font.face.descent:lineHeight/2),i=0,ii=letters.length;i<ii;i++){if("\n"==letters[i])shift=0,curr=0,notfirst=0,shifty+=lineHeight*line_spacing;else{var prev=notfirst&&font.glyphs[letters[i-1]]||{},curr=font.glyphs[letters[i]];shift+=notfirst?(prev.w||font.w)+(prev.k&&prev.k[letters[i]]||0)+font.w*letter_spacing:0,notfirst=1}curr&&curr.d&&(path+=R.transformPath(curr.d,["t",shift*scale,shifty*scale,"s",scale,scale,top,height,"t",(x-top)/scale,(y-height)/scale]))}}return this.path(path).attr({fill:"#000",stroke:"none"})},paperproto.add=function(json){if(R.is(json,"array"))for(var res=this.set(),i=0,ii=json.length,j;i<ii;i++)j=json[i]||{},elements[has](j.type)&&res.push(this[j.type]().attr(j));return res},R.format=function(token,params){var args=R.is(params,array)?[0][concat](params):arguments;return token&&R.is(token,string)&&args.length-1&&(token=token.replace(formatrg,function(str,i){return null==args[++i]?E:args[i]})),token||E},R.fullfill=function(){var tokenRegex=/\{([^\}]+)\}/g,objNotationRegex=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,replacer=function(all,key,obj){var res=obj;return key.replace(objNotationRegex,function(all,name,quote,quotedName,isFunc){name=name||quotedName,res&&(name in res&&(res=res[name]),"function"==typeof res&&isFunc&&(res=res()))}),res=(null==res||res==obj?all:res)+""};return function(str,obj){return String(str).replace(tokenRegex,function(all,key){return replacer(all,key,obj)})}}(),R.ninja=function(){return oldRaphael.was?g.win.Raphael=oldRaphael.is:delete Raphael,R},R.st=setproto,eve.on("raphael.DOMload",function(){loaded=!0}),function(doc,loaded,f){function isLoaded(){/in/.test(doc.readyState)?setTimeout(isLoaded,9):R.eve("raphael.DOMload")}null==doc.readyState&&doc.addEventListener&&(doc.addEventListener(loaded,f=function(){doc.removeEventListener(loaded,f,!1),doc.readyState="complete"},!1),doc.readyState="loading"),isLoaded()}(document,"DOMContentLoaded"),R}),function(glob,factory){"function"==typeof define&&define.amd?define("raphael.svg",["raphael.core"],function(raphael){return factory(raphael)}):factory("object"==typeof exports?require("raphael.core"):glob.Raphael)}(this,function(R){if(!R||R.svg){var has="hasOwnProperty",Str=String,toFloat=parseFloat,toInt=parseInt,math=Math,mmax=math.max,abs=math.abs,pow=math.pow,separator=/[, ]+/,eve=R.eve,E="",S=" ",xlink="http://www.w3.org/1999/xlink",markers={block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"},markerCounter={};R.toString=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version};var $=function(el,attr){if(attr){"string"==typeof el&&(el=$(el));for(var key in attr)attr[has](key)&&("xlink:"==key.substring(0,6)?el.setAttributeNS(xlink,key.substring(6),Str(attr[key])):el.setAttribute(key,Str(attr[key])))}else el=R._g.doc.createElementNS("http://www.w3.org/2000/svg",el),el.style&&(el.style.webkitTapHighlightColor="rgba(0,0,0,0)");return el},addGradientFill=function(element,gradient){var type="linear",id=element.id+gradient,fx=.5,fy=.5,o=element.node,SVG=element.paper,s=o.style,el=R._g.doc.getElementById(id);if(!el){if(gradient=Str(gradient).replace(R._radial_gradient,function(all,_fx,_fy){if(type="radial",_fx&&_fy){fx=toFloat(_fx),fy=toFloat(_fy);var dir=2*(fy>.5)-1;pow(fx-.5,2)+pow(fy-.5,2)>.25&&(fy=math.sqrt(.25-pow(fx-.5,2))*dir+.5)&&.5!=fy&&(fy=fy.toFixed(5)-1e-5*dir)}return E}),gradient=gradient.split(/\s*\-\s*/),"linear"==type){var angle=gradient.shift();if(angle=-toFloat(angle),isNaN(angle))return null;var vector=[0,0,math.cos(R.rad(angle)),math.sin(R.rad(angle))],max=1/(mmax(abs(vector[2]),abs(vector[3]))||1);vector[2]*=max,vector[3]*=max,vector[2]<0&&(vector[0]=-vector[2],vector[2]=0),vector[3]<0&&(vector[1]=-vector[3],vector[3]=0)}var dots=R._parseDots(gradient);if(!dots)return null;if(id=id.replace(/[\(\)\s,\xb0#]/g,"_"),element.gradient&&id!=element.gradient.id&&(SVG.defs.removeChild(element.gradient),delete element.gradient),!element.gradient){el=$(type+"Gradient",{id:id}),element.gradient=el,$(el,"radial"==type?{fx:fx,fy:fy}:{x1:vector[0],y1:vector[1],x2:vector[2],y2:vector[3],gradientTransform:element.matrix.invert()}),SVG.defs.appendChild(el);for(var i=0,ii=dots.length;i<ii;i++)el.appendChild($("stop",{offset:dots[i].offset?dots[i].offset:i?"100%":"0%","stop-color":dots[i].color||"#fff","stop-opacity":isFinite(dots[i].opacity)?dots[i].opacity:1}))}}return $(o,{fill:"url('"+document.location.origin+document.location.pathname+"#"+id+"')",opacity:1,"fill-opacity":1}),s.fill=E,s.opacity=1,s.fillOpacity=1,1},updatePosition=function(o){
var bbox=o.getBBox(1);$(o.pattern,{patternTransform:o.matrix.invert()+" translate("+bbox.x+","+bbox.y+")"})},addArrow=function(o,value,isEnd){if("path"==o.type){for(var values=Str(value).toLowerCase().split("-"),p=o.paper,se=isEnd?"end":"start",node=o.node,attrs=o.attrs,stroke=attrs["stroke-width"],i=values.length,type="classic",from,to,dx,refX,attr,w=3,h=3,t=5;i--;)switch(values[i]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":type=values[i];break;case"wide":h=5;break;case"narrow":h=2;break;case"long":w=5;break;case"short":w=2}if("open"==type?(w+=2,h+=2,t+=2,dx=1,refX=isEnd?4:1,attr={fill:"none",stroke:attrs.stroke}):(refX=dx=w/2,attr={fill:attrs.stroke,stroke:"none"}),o._.arrows?isEnd?(o._.arrows.endPath&&markerCounter[o._.arrows.endPath]--,o._.arrows.endMarker&&markerCounter[o._.arrows.endMarker]--):(o._.arrows.startPath&&markerCounter[o._.arrows.startPath]--,o._.arrows.startMarker&&markerCounter[o._.arrows.startMarker]--):o._.arrows={},"none"!=type){var pathId="raphael-marker-"+type,markerId="raphael-marker-"+se+type+w+h+"-obj"+o.id;R._g.doc.getElementById(pathId)?markerCounter[pathId]++:(p.defs.appendChild($($("path"),{"stroke-linecap":"round",d:markers[type],id:pathId})),markerCounter[pathId]=1);var marker=R._g.doc.getElementById(markerId),use;marker?(markerCounter[markerId]++,use=marker.getElementsByTagName("use")[0]):(marker=$($("marker"),{id:markerId,markerHeight:h,markerWidth:w,orient:"auto",refX:refX,refY:h/2}),use=$($("use"),{"xlink:href":"#"+pathId,transform:(isEnd?"rotate(180 "+w/2+" "+h/2+") ":E)+"scale("+w/t+","+h/t+")","stroke-width":(1/((w/t+h/t)/2)).toFixed(4)}),marker.appendChild(use),p.defs.appendChild(marker),markerCounter[markerId]=1),$(use,attr);var delta=dx*("diamond"!=type&&"oval"!=type);isEnd?(from=o._.arrows.startdx*stroke||0,to=R.getTotalLength(attrs.path)-delta*stroke):(from=delta*stroke,to=R.getTotalLength(attrs.path)-(o._.arrows.enddx*stroke||0)),attr={},attr["marker-"+se]="url(#"+markerId+")",(to||from)&&(attr.d=R.getSubpath(attrs.path,from,to)),$(node,attr),o._.arrows[se+"Path"]=pathId,o._.arrows[se+"Marker"]=markerId,o._.arrows[se+"dx"]=delta,o._.arrows[se+"Type"]=type,o._.arrows[se+"String"]=value}else isEnd?(from=o._.arrows.startdx*stroke||0,to=R.getTotalLength(attrs.path)-from):(from=0,to=R.getTotalLength(attrs.path)-(o._.arrows.enddx*stroke||0)),o._.arrows[se+"Path"]&&$(node,{d:R.getSubpath(attrs.path,from,to)}),delete o._.arrows[se+"Path"],delete o._.arrows[se+"Marker"],delete o._.arrows[se+"dx"],delete o._.arrows[se+"Type"],delete o._.arrows[se+"String"];for(attr in markerCounter)if(markerCounter[has](attr)&&!markerCounter[attr]){var item=R._g.doc.getElementById(attr);item&&item.parentNode.removeChild(item)}}},dasharray={"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},addDashes=function(o,value,params){if(value=dasharray[Str(value).toLowerCase()]){for(var width=o.attrs["stroke-width"]||"1",butt={round:width,square:width,butt:0}[o.attrs["stroke-linecap"]||params["stroke-linecap"]]||0,dashes=[],i=value.length;i--;)dashes[i]=value[i]*width+(i%2?1:-1)*butt;$(o.node,{"stroke-dasharray":dashes.join(",")})}else $(o.node,{"stroke-dasharray":"none"})},setFillAndStroke=function(o,params){var node=o.node,attrs=o.attrs,vis=node.style.visibility;node.style.visibility="hidden";for(var att in params)if(params[has](att)){if(!R._availableAttrs[has](att))continue;var value=params[att];switch(attrs[att]=value,att){case"blur":o.blur(value);break;case"title":var title=node.getElementsByTagName("title");if(title.length&&(title=title[0]))title.firstChild.nodeValue=value;else{title=$("title");var val=R._g.doc.createTextNode(value);title.appendChild(val),node.appendChild(title)}break;case"href":case"target":var pn=node.parentNode;if("a"!=pn.tagName.toLowerCase()){var hl=$("a");pn.insertBefore(hl,node),hl.appendChild(node),pn=hl}"target"==att?pn.setAttributeNS(xlink,"show","blank"==value?"new":value):pn.setAttributeNS(xlink,att,value);break;case"cursor":node.style.cursor=value;break;case"transform":o.transform(value);break;case"arrow-start":addArrow(o,value);break;case"arrow-end":addArrow(o,value,1);break;case"clip-rect":var rect=Str(value).split(separator);if(4==rect.length){o.clip&&o.clip.parentNode.parentNode.removeChild(o.clip.parentNode);var el=$("clipPath"),rc=$("rect");el.id=R.createUUID(),$(rc,{x:rect[0],y:rect[1],width:rect[2],height:rect[3]}),el.appendChild(rc),o.paper.defs.appendChild(el),$(node,{"clip-path":"url(#"+el.id+")"}),o.clip=rc}if(!value){var path=node.getAttribute("clip-path");if(path){var clip=R._g.doc.getElementById(path.replace(/(^url\(#|\)$)/g,E));clip&&clip.parentNode.removeChild(clip),$(node,{"clip-path":E}),delete o.clip}}break;case"path":"path"==o.type&&($(node,{d:value?attrs.path=R._pathToAbsolute(value):"M0,0"}),o._.dirty=1,o._.arrows&&("startString"in o._.arrows&&addArrow(o,o._.arrows.startString),"endString"in o._.arrows&&addArrow(o,o._.arrows.endString,1)));break;case"width":if(node.setAttribute(att,value),o._.dirty=1,!attrs.fx)break;att="x",value=attrs.x;case"x":attrs.fx&&(value=-attrs.x-(attrs.width||0));case"rx":if("rx"==att&&"rect"==o.type)break;case"cx":node.setAttribute(att,value),o.pattern&&updatePosition(o),o._.dirty=1;break;case"height":if(node.setAttribute(att,value),o._.dirty=1,!attrs.fy)break;att="y",value=attrs.y;case"y":attrs.fy&&(value=-attrs.y-(attrs.height||0));case"ry":if("ry"==att&&"rect"==o.type)break;case"cy":node.setAttribute(att,value),o.pattern&&updatePosition(o),o._.dirty=1;break;case"r":"rect"==o.type?$(node,{rx:value,ry:value}):node.setAttribute(att,value),o._.dirty=1;break;case"src":"image"==o.type&&node.setAttributeNS(xlink,"href",value);break;case"stroke-width":1==o._.sx&&1==o._.sy||(value/=mmax(abs(o._.sx),abs(o._.sy))||1),node.setAttribute(att,value),attrs["stroke-dasharray"]&&addDashes(o,attrs["stroke-dasharray"],params),o._.arrows&&("startString"in o._.arrows&&addArrow(o,o._.arrows.startString),"endString"in o._.arrows&&addArrow(o,o._.arrows.endString,1));break;case"stroke-dasharray":addDashes(o,value,params);break;case"fill":var isURL=Str(value).match(R._ISURL);if(isURL){el=$("pattern");var ig=$("image");el.id=R.createUUID(),$(el,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1}),$(ig,{x:0,y:0,"xlink:href":isURL[1]}),el.appendChild(ig),function(el){R._preload(isURL[1],function(){var w=this.offsetWidth,h=this.offsetHeight;$(el,{width:w,height:h}),$(ig,{width:w,height:h})})}(el),o.paper.defs.appendChild(el),$(node,{fill:"url(#"+el.id+")"}),o.pattern=el,o.pattern&&updatePosition(o);break}var clr=R.getRGB(value);if(clr.error){if(("circle"==o.type||"ellipse"==o.type||"r"!=Str(value).charAt())&&addGradientFill(o,value)){if("opacity"in attrs||"fill-opacity"in attrs){var gradient=R._g.doc.getElementById(node.getAttribute("fill").replace(/^url\(#|\)$/g,E));if(gradient){var stops=gradient.getElementsByTagName("stop");$(stops[stops.length-1],{"stop-opacity":("opacity"in attrs?attrs.opacity:1)*("fill-opacity"in attrs?attrs["fill-opacity"]:1)})}}attrs.gradient=value,attrs.fill="none";break}}else delete params.gradient,delete attrs.gradient,!R.is(attrs.opacity,"undefined")&&R.is(params.opacity,"undefined")&&$(node,{opacity:attrs.opacity}),!R.is(attrs["fill-opacity"],"undefined")&&R.is(params["fill-opacity"],"undefined")&&$(node,{"fill-opacity":attrs["fill-opacity"]});clr[has]("opacity")&&$(node,{"fill-opacity":clr.opacity>1?clr.opacity/100:clr.opacity});case"stroke":clr=R.getRGB(value),node.setAttribute(att,clr.hex),"stroke"==att&&clr[has]("opacity")&&$(node,{"stroke-opacity":clr.opacity>1?clr.opacity/100:clr.opacity}),"stroke"==att&&o._.arrows&&("startString"in o._.arrows&&addArrow(o,o._.arrows.startString),"endString"in o._.arrows&&addArrow(o,o._.arrows.endString,1));break;case"gradient":("circle"==o.type||"ellipse"==o.type||"r"!=Str(value).charAt())&&addGradientFill(o,value);break;case"opacity":attrs.gradient&&!attrs[has]("stroke-opacity")&&$(node,{"stroke-opacity":value>1?value/100:value});case"fill-opacity":if(attrs.gradient){gradient=R._g.doc.getElementById(node.getAttribute("fill").replace(/^url\(#|\)$/g,E)),gradient&&(stops=gradient.getElementsByTagName("stop"),$(stops[stops.length-1],{"stop-opacity":value}));break}default:"font-size"==att&&(value=toInt(value,10)+"px");var cssrule=att.replace(/(\-.)/g,function(w){return w.substring(1).toUpperCase()});node.style[cssrule]=value,o._.dirty=1,node.setAttribute(att,value)}}tuneText(o,params),node.style.visibility=vis},leading=1.2,tuneText=function(el,params){if("text"==el.type&&(params[has]("text")||params[has]("font")||params[has]("font-size")||params[has]("x")||params[has]("y"))){var a=el.attrs,node=el.node,fontSize=node.firstChild?toInt(R._g.doc.defaultView.getComputedStyle(node.firstChild,E).getPropertyValue("font-size"),10):10;if(params[has]("text")){for(a.text=params.text;node.firstChild;)node.removeChild(node.firstChild);for(var texts=Str(params.text).split("\n"),tspans=[],tspan,i=0,ii=texts.length;i<ii;i++)tspan=$("tspan"),i&&$(tspan,{dy:fontSize*leading,x:a.x}),tspan.appendChild(R._g.doc.createTextNode(texts[i])),node.appendChild(tspan),tspans[i]=tspan}else for(tspans=node.getElementsByTagName("tspan"),i=0,ii=tspans.length;i<ii;i++)i?$(tspans[i],{dy:fontSize*leading,x:a.x}):$(tspans[0],{dy:0});$(node,{x:a.x,y:a.y}),el._.dirty=1;var bb=el._getBBox(),dif=a.y-(bb.y+bb.height/2);dif&&R.is(dif,"finite")&&$(tspans[0],{dy:dif})}},getRealNode=function(node){return node.parentNode&&"a"===node.parentNode.tagName.toLowerCase()?node.parentNode:node},Element=function(node,svg){var X=0,Y=0;this[0]=this.node=node,node.raphael=!0,this.id=R._oid++,node.raphaelid=this.id,this.matrix=R.matrix(),this.realPath=null,this.paper=svg,this.attrs=this.attrs||{},this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1},!svg.bottom&&(svg.bottom=this),this.prev=svg.top,svg.top&&(svg.top.next=this),svg.top=this,this.next=null},elproto=R.el;Element.prototype=elproto,elproto.constructor=Element,R._engine.path=function(pathString,SVG){var el=$("path");SVG.canvas&&SVG.canvas.appendChild(el);var p=new Element(el,SVG);return p.type="path",setFillAndStroke(p,{fill:"none",stroke:"#000",path:pathString}),p},elproto.rotate=function(deg,cx,cy){if(this.removed)return this;if(deg=Str(deg).split(separator),deg.length-1&&(cx=toFloat(deg[1]),cy=toFloat(deg[2])),deg=toFloat(deg[0]),null==cy&&(cx=cy),null==cx||null==cy){var bbox=this.getBBox(1);cx=bbox.x+bbox.width/2,cy=bbox.y+bbox.height/2}return this.transform(this._.transform.concat([["r",deg,cx,cy]])),this},elproto.scale=function(sx,sy,cx,cy){if(this.removed)return this;if(sx=Str(sx).split(separator),sx.length-1&&(sy=toFloat(sx[1]),cx=toFloat(sx[2]),cy=toFloat(sx[3])),sx=toFloat(sx[0]),null==sy&&(sy=sx),null==cy&&(cx=cy),null==cx||null==cy)var bbox=this.getBBox(1);return cx=null==cx?bbox.x+bbox.width/2:cx,cy=null==cy?bbox.y+bbox.height/2:cy,this.transform(this._.transform.concat([["s",sx,sy,cx,cy]])),this},elproto.translate=function(dx,dy){return this.removed?this:(dx=Str(dx).split(separator),dx.length-1&&(dy=toFloat(dx[1])),dx=toFloat(dx[0])||0,dy=+dy||0,this.transform(this._.transform.concat([["t",dx,dy]])),this)},elproto.transform=function(tstr){var _=this._;if(null==tstr)return _.transform;if(R._extractTransform(this,tstr),this.clip&&$(this.clip,{transform:this.matrix.invert()}),this.pattern&&updatePosition(this),this.node&&$(this.node,{transform:this.matrix}),1!=_.sx||1!=_.sy){var sw=this.attrs[has]("stroke-width")?this.attrs["stroke-width"]:1;this.attr({"stroke-width":sw})}return this},elproto.hide=function(){return this.removed||(this.node.style.display="none"),this},elproto.show=function(){return this.removed||(this.node.style.display=""),this},elproto.remove=function(){var node=getRealNode(this.node);if(!this.removed&&node.parentNode){var paper=this.paper;paper.__set__&&paper.__set__.exclude(this),eve.unbind("raphael.*.*."+this.id),this.gradient&&paper.defs.removeChild(this.gradient),R._tear(this,paper),node.parentNode.removeChild(node),this.removeData();for(var i in this)this[i]="function"==typeof this[i]?R._removedFactory(i):null;this.removed=!0}},elproto._getBBox=function(){if("none"==this.node.style.display){this.show();var hide=!0}var canvasHidden=!1,containerStyle;this.paper.canvas.parentElement?containerStyle=this.paper.canvas.parentElement.style:this.paper.canvas.parentNode&&(containerStyle=this.paper.canvas.parentNode.style),containerStyle&&"none"==containerStyle.display&&(canvasHidden=!0,containerStyle.display="");var bbox={};try{bbox=this.node.getBBox()}catch(e){bbox={x:this.node.clientLeft,y:this.node.clientTop,width:this.node.clientWidth,height:this.node.clientHeight}}finally{bbox=bbox||{},canvasHidden&&(containerStyle.display="none")}return hide&&this.hide(),bbox},elproto.attr=function(name,value){if(this.removed)return this;if(null==name){var res={};for(var a in this.attrs)this.attrs[has](a)&&(res[a]=this.attrs[a]);return res.gradient&&"none"==res.fill&&(res.fill=res.gradient)&&delete res.gradient,res.transform=this._.transform,res}if(null==value&&R.is(name,"string")){if("fill"==name&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;if("transform"==name)return this._.transform;for(var names=name.split(separator),out={},i=0,ii=names.length;i<ii;i++)name=names[i],name in this.attrs?out[name]=this.attrs[name]:R.is(this.paper.customAttributes[name],"function")?out[name]=this.paper.customAttributes[name].def:out[name]=R._availableAttrs[name];return ii-1?out:out[names[0]]}if(null==value&&R.is(name,"array")){for(out={},i=0,ii=name.length;i<ii;i++)out[name[i]]=this.attr(name[i]);return out}if(null!=value){var params={};params[name]=value}else null!=name&&R.is(name,"object")&&(params=name);for(var key in params)eve("raphael.attr."+key+"."+this.id,this,params[key]);for(key in this.paper.customAttributes)if(this.paper.customAttributes[has](key)&&params[has](key)&&R.is(this.paper.customAttributes[key],"function")){var par=this.paper.customAttributes[key].apply(this,[].concat(params[key]));this.attrs[key]=params[key];for(var subkey in par)par[has](subkey)&&(params[subkey]=par[subkey])}return setFillAndStroke(this,params),this},elproto.toFront=function(){if(this.removed)return this;var node=getRealNode(this.node);node.parentNode.appendChild(node);var svg=this.paper;return svg.top!=this&&R._tofront(this,svg),this},elproto.toBack=function(){if(this.removed)return this;var node=getRealNode(this.node),parentNode=node.parentNode;parentNode.insertBefore(node,parentNode.firstChild),R._toback(this,this.paper);var svg=this.paper;return this},elproto.insertAfter=function(element){if(this.removed||!element)return this;var node=getRealNode(this.node),afterNode=getRealNode(element.node||element[element.length-1].node);return afterNode.nextSibling?afterNode.parentNode.insertBefore(node,afterNode.nextSibling):afterNode.parentNode.appendChild(node),R._insertafter(this,element,this.paper),this},elproto.insertBefore=function(element){if(this.removed||!element)return this;var node=getRealNode(this.node),beforeNode=getRealNode(element.node||element[0].node);return beforeNode.parentNode.insertBefore(node,beforeNode),R._insertbefore(this,element,this.paper),this},elproto.blur=function(size){var t=this;if(0!==+size){var fltr=$("filter"),blur=$("feGaussianBlur");t.attrs.blur=size,fltr.id=R.createUUID(),$(blur,{stdDeviation:+size||1.5}),fltr.appendChild(blur),t.paper.defs.appendChild(fltr),t._blur=fltr,$(t.node,{filter:"url(#"+fltr.id+")"})}else t._blur&&(t._blur.parentNode.removeChild(t._blur),delete t._blur,delete t.attrs.blur),t.node.removeAttribute("filter");return t},R._engine.circle=function(svg,x,y,r){var el=$("circle");svg.canvas&&svg.canvas.appendChild(el);var res=new Element(el,svg);return res.attrs={cx:x,cy:y,r:r,fill:"none",stroke:"#000"},res.type="circle",$(el,res.attrs),res},R._engine.rect=function(svg,x,y,w,h,r){var el=$("rect");svg.canvas&&svg.canvas.appendChild(el);var res=new Element(el,svg);return res.attrs={x:x,y:y,width:w,height:h,rx:r||0,ry:r||0,fill:"none",stroke:"#000"},res.type="rect",$(el,res.attrs),res},R._engine.ellipse=function(svg,x,y,rx,ry){var el=$("ellipse");svg.canvas&&svg.canvas.appendChild(el);var res=new Element(el,svg);return res.attrs={cx:x,cy:y,rx:rx,ry:ry,fill:"none",stroke:"#000"},res.type="ellipse",$(el,res.attrs),res},R._engine.image=function(svg,src,x,y,w,h){var el=$("image");$(el,{x:x,y:y,width:w,height:h,preserveAspectRatio:"none"}),el.setAttributeNS(xlink,"href",src),svg.canvas&&svg.canvas.appendChild(el);var res=new Element(el,svg);return res.attrs={x:x,y:y,width:w,height:h,src:src},res.type="image",res},R._engine.text=function(svg,x,y,text){var el=$("text");svg.canvas&&svg.canvas.appendChild(el);var res=new Element(el,svg);return res.attrs={x:x,y:y,"text-anchor":"middle",text:text,"font-family":R._availableAttrs["font-family"],"font-size":R._availableAttrs["font-size"],stroke:"none",fill:"#000"},res.type="text",setFillAndStroke(res,res.attrs),res},R._engine.setSize=function(width,height){return this.width=width||this.width,this.height=height||this.height,this.canvas.setAttribute("width",this.width),this.canvas.setAttribute("height",this.height),this._viewBox&&this.setViewBox.apply(this,this._viewBox),this},R._engine.create=function(){var con=R._getContainer.apply(0,arguments),container=con&&con.container,x=con.x,y=con.y,width=con.width,height=con.height;if(!container)throw new Error("SVG container not found.");var cnvs=$("svg"),css="overflow:hidden;",isFloating;return x=x||0,y=y||0,width=width||512,height=height||342,$(cnvs,{height:height,version:1.1,width:width,xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}),1==container?(cnvs.style.cssText=css+"position:absolute;left:"+x+"px;top:"+y+"px",R._g.doc.body.appendChild(cnvs),isFloating=1):(cnvs.style.cssText=css+"position:relative",container.firstChild?container.insertBefore(cnvs,container.firstChild):container.appendChild(cnvs)),container=new R._Paper,container.width=width,container.height=height,container.canvas=cnvs,container.clear(),container._left=container._top=0,isFloating&&(container.renderfix=function(){}),container.renderfix(),container},R._engine.setViewBox=function(x,y,w,h,fit){eve("raphael.setViewBox",this,this._viewBox,[x,y,w,h,fit]);var paperSize=this.getSize(),size=mmax(w/paperSize.width,h/paperSize.height),top=this.top,aspectRatio=fit?"xMidYMid meet":"xMinYMin",vb,sw;for(null==x?(this._vbSize&&(size=1),delete this._vbSize,vb="0 0 "+this.width+S+this.height):(this._vbSize=size,vb=x+S+y+S+w+S+h),$(this.canvas,{viewBox:vb,preserveAspectRatio:aspectRatio});size&&top;)sw="stroke-width"in top.attrs?top.attrs["stroke-width"]:1,top.attr({"stroke-width":sw}),top._.dirty=1,top._.dirtyT=1,top=top.prev;return this._viewBox=[x,y,w,h,!!fit],this},R.prototype.renderfix=function(){var cnvs=this.canvas,s=cnvs.style,pos;try{pos=cnvs.getScreenCTM()||cnvs.createSVGMatrix()}catch(e){pos=cnvs.createSVGMatrix()}var left=-pos.e%1,top=-pos.f%1;(left||top)&&(left&&(this._left=(this._left+left)%1,s.left=this._left+"px"),top&&(this._top=(this._top+top)%1,s.top=this._top+"px"))},R.prototype.clear=function(){R.eve("raphael.clear",this);for(var c=this.canvas;c.firstChild;)c.removeChild(c.firstChild);this.bottom=this.top=null,(this.desc=$("desc")).appendChild(R._g.doc.createTextNode("Created with Raphaël "+R.version)),c.appendChild(this.desc),c.appendChild(this.defs=$("defs"))},R.prototype.remove=function(){eve("raphael.remove",this),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var i in this)this[i]="function"==typeof this[i]?R._removedFactory(i):null};var setproto=R.st;for(var method in elproto)elproto[has](method)&&!setproto[has](method)&&(setproto[method]=function(methodname){return function(){var arg=arguments;return this.forEach(function(el){el[methodname].apply(el,arg)})}}(method))}}),function(glob,factory){"function"==typeof define&&define.amd?define("raphael.vml",["raphael.core"],function(raphael){return factory(raphael)}):factory("object"==typeof exports?require("raphael"):glob.Raphael)}(this,function(R){if(!R||R.vml){var has="hasOwnProperty",Str=String,toFloat=parseFloat,math=Math,round=math.round,mmax=math.max,mmin=math.min,abs=math.abs,fillString="fill",separator=/[, ]+/,eve=R.eve,ms=" progid:DXImageTransform.Microsoft",S=" ",E="",map={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},bites=/([clmz]),?([^clmz]*)/gi,blurregexp=/ progid:\S+Blur\([^\)]+\)/g,val=/-?[^,\s-]+/g,cssDot="position:absolute;left:0;top:0;width:1px;height:1px;behavior:url(#default#VML)",zoom=21600,pathTypes={path:1,rect:1,image:1},ovalTypes={circle:1,ellipse:1},path2vml=function(path){var total=/[ahqstv]/gi,command=R._pathToAbsolute;if(Str(path).match(total)&&(command=R._path2curve),total=/[clmz]/g,command==R._pathToAbsolute&&!Str(path).match(total)){var res=Str(path).replace(bites,function(all,command,args){var vals=[],isMove="m"==command.toLowerCase(),res=map[command];return args.replace(val,function(value){isMove&&2==vals.length&&(res+=vals+map["m"==command?"l":"L"],vals=[]),vals.push(round(value*zoom))}),res+vals});return res}var pa=command(path),p,r;res=[];for(var i=0,ii=pa.length;i<ii;i++){p=pa[i],r=pa[i][0].toLowerCase(),"z"==r&&(r="x");for(var j=1,jj=p.length;j<jj;j++)r+=round(p[j]*zoom)+(j!=jj-1?",":E);res.push(r)}return res.join(S)},compensation=function(deg,dx,dy){var m=R.matrix();return m.rotate(-deg,.5,.5),{dx:m.x(dx,dy),dy:m.y(dx,dy)}},setCoords=function(p,sx,sy,dx,dy,deg){var _=p._,m=p.matrix,fillpos=_.fillpos,o=p.node,s=o.style,y=1,flip="",dxdy,kx=zoom/sx,ky=zoom/sy;if(s.visibility="hidden",sx&&sy){if(o.coordsize=abs(kx)+S+abs(ky),s.rotation=deg*(sx*sy<0?-1:1),deg){var c=compensation(deg,dx,dy);dx=c.dx,dy=c.dy}if(sx<0&&(flip+="x"),sy<0&&(flip+=" y")&&(y=-1),s.flip=flip,o.coordorigin=dx*-kx+S+dy*-ky,fillpos||_.fillsize){var fill=o.getElementsByTagName(fillString);fill=fill&&fill[0],o.removeChild(fill),fillpos&&(c=compensation(deg,m.x(fillpos[0],fillpos[1]),m.y(fillpos[0],fillpos[1])),fill.position=c.dx*y+S+c.dy*y),_.fillsize&&(fill.size=_.fillsize[0]*abs(sx)+S+_.fillsize[1]*abs(sy)),o.appendChild(fill)}s.visibility="visible"}};R.toString=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+this.version};var addArrow=function(o,value,isEnd){for(var values=Str(value).toLowerCase().split("-"),se=isEnd?"end":"start",i=values.length,type="classic",w="medium",h="medium";i--;)switch(values[i]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":type=values[i];break;case"wide":case"narrow":h=values[i];break;case"long":case"short":w=values[i]}var stroke=o.node.getElementsByTagName("stroke")[0];stroke[se+"arrow"]=type,stroke[se+"arrowlength"]=w,stroke[se+"arrowwidth"]=h},setFillAndStroke=function(o,params){o.attrs=o.attrs||{};var node=o.node,a=o.attrs,s=node.style,xy,newpath=pathTypes[o.type]&&(params.x!=a.x||params.y!=a.y||params.width!=a.width||params.height!=a.height||params.cx!=a.cx||params.cy!=a.cy||params.rx!=a.rx||params.ry!=a.ry||params.r!=a.r),isOval=ovalTypes[o.type]&&(a.cx!=params.cx||a.cy!=params.cy||a.r!=params.r||a.rx!=params.rx||a.ry!=params.ry),res=o;for(var par in params)params[has](par)&&(a[par]=params[par]);if(newpath&&(a.path=R._getPath[o.type](o),o._.dirty=1),params.href&&(node.href=params.href),params.title&&(node.title=params.title),params.target&&(node.target=params.target),params.cursor&&(s.cursor=params.cursor),"blur"in params&&o.blur(params.blur),(params.path&&"path"==o.type||newpath)&&(node.path=path2vml(~Str(a.path).toLowerCase().indexOf("r")?R._pathToAbsolute(a.path):a.path),o._.dirty=1,"image"==o.type&&(o._.fillpos=[a.x,a.y],o._.fillsize=[a.width,a.height],setCoords(o,1,1,0,0,0))),"transform"in params&&o.transform(params.transform),isOval){var cx=+a.cx,cy=+a.cy,rx=+a.rx||+a.r||0,ry=+a.ry||+a.r||0;node.path=R.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",round((cx-rx)*zoom),round((cy-ry)*zoom),round((cx+rx)*zoom),round((cy+ry)*zoom),round(cx*zoom)),o._.dirty=1}if("clip-rect"in params){var rect=Str(params["clip-rect"]).split(separator);if(4==rect.length){rect[2]=+rect[2]+ +rect[0],rect[3]=+rect[3]+ +rect[1];var div=node.clipRect||R._g.doc.createElement("div"),dstyle=div.style;dstyle.clip=R.format("rect({1}px {2}px {3}px {0}px)",rect),node.clipRect||(dstyle.position="absolute",dstyle.top=0,dstyle.left=0,dstyle.width=o.paper.width+"px",dstyle.height=o.paper.height+"px",node.parentNode.insertBefore(div,node),div.appendChild(node),node.clipRect=div)}params["clip-rect"]||node.clipRect&&(node.clipRect.style.clip="auto")}if(o.textpath){var textpathStyle=o.textpath.style;params.font&&(textpathStyle.font=params.font),params["font-family"]&&(textpathStyle.fontFamily='"'+params["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,E)+'"'),params["font-size"]&&(textpathStyle.fontSize=params["font-size"]),params["font-weight"]&&(textpathStyle.fontWeight=params["font-weight"]),params["font-style"]&&(textpathStyle.fontStyle=params["font-style"])}if("arrow-start"in params&&addArrow(res,params["arrow-start"]),"arrow-end"in params&&addArrow(res,params["arrow-end"],1),null!=params.opacity||null!=params["stroke-width"]||null!=params.fill||null!=params.src||null!=params.stroke||null!=params["stroke-width"]||null!=params["stroke-opacity"]||null!=params["fill-opacity"]||null!=params["stroke-dasharray"]||null!=params["stroke-miterlimit"]||null!=params["stroke-linejoin"]||null!=params["stroke-linecap"]){var fill=node.getElementsByTagName(fillString),newfill=!1;if(fill=fill&&fill[0],!fill&&(newfill=fill=createNode(fillString)),"image"==o.type&&params.src&&(fill.src=params.src),params.fill&&(fill.on=!0),null!=fill.on&&"none"!=params.fill&&null!==params.fill||(fill.on=!1),fill.on&&params.fill){var isURL=Str(params.fill).match(R._ISURL);if(isURL){fill.parentNode==node&&node.removeChild(fill),fill.rotate=!0,fill.src=isURL[1],fill.type="tile";var bbox=o.getBBox(1);fill.position=bbox.x+S+bbox.y,o._.fillpos=[bbox.x,bbox.y],R._preload(isURL[1],function(){o._.fillsize=[this.offsetWidth,this.offsetHeight]})}else fill.color=R.getRGB(params.fill).hex,fill.src=E,fill.type="solid",R.getRGB(params.fill).error&&(res.type in{circle:1,ellipse:1}||"r"!=Str(params.fill).charAt())&&addGradientFill(res,params.fill,fill)&&(a.fill="none",a.gradient=params.fill,fill.rotate=!1)}if("fill-opacity"in params||"opacity"in params){var opacity=((+a["fill-opacity"]+1||2)-1)*((+a.opacity+1||2)-1)*((+R.getRGB(params.fill).o+1||2)-1);opacity=mmin(mmax(opacity,0),1),fill.opacity=opacity,fill.src&&(fill.color="none")}node.appendChild(fill);var stroke=node.getElementsByTagName("stroke")&&node.getElementsByTagName("stroke")[0],newstroke=!1;!stroke&&(newstroke=stroke=createNode("stroke")),(params.stroke&&"none"!=params.stroke||params["stroke-width"]||null!=params["stroke-opacity"]||params["stroke-dasharray"]||params["stroke-miterlimit"]||params["stroke-linejoin"]||params["stroke-linecap"])&&(stroke.on=!0),("none"==params.stroke||null===params.stroke||null==stroke.on||0==params.stroke||0==params["stroke-width"])&&(stroke.on=!1);var strokeColor=R.getRGB(params.stroke);stroke.on&&params.stroke&&(stroke.color=strokeColor.hex),opacity=((+a["stroke-opacity"]+1||2)-1)*((+a.opacity+1||2)-1)*((+strokeColor.o+1||2)-1);var width=.75*(toFloat(params["stroke-width"])||1);if(opacity=mmin(mmax(opacity,0),1),null==params["stroke-width"]&&(width=a["stroke-width"]),params["stroke-width"]&&(stroke.weight=width),width&&width<1&&(opacity*=width)&&(stroke.weight=1),stroke.opacity=opacity,params["stroke-linejoin"]&&(stroke.joinstyle=params["stroke-linejoin"]||"miter"),stroke.miterlimit=params["stroke-miterlimit"]||8,params["stroke-linecap"]&&(stroke.endcap="butt"==params["stroke-linecap"]?"flat":"square"==params["stroke-linecap"]?"square":"round"),"stroke-dasharray"in params){var dasharray={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};stroke.dashstyle=dasharray[has](params["stroke-dasharray"])?dasharray[params["stroke-dasharray"]]:E}newstroke&&node.appendChild(stroke)}if("text"==res.type){res.paper.canvas.style.display=E;var span=res.paper.span,m=100,fontSize=a.font&&a.font.match(/\d+(?:\.\d*)?(?=px)/);s=span.style,a.font&&(s.font=a.font),a["font-family"]&&(s.fontFamily=a["font-family"]),a["font-weight"]&&(s.fontWeight=a["font-weight"]),a["font-style"]&&(s.fontStyle=a["font-style"]),fontSize=toFloat(a["font-size"]||fontSize&&fontSize[0])||10,s.fontSize=fontSize*m+"px",res.textpath.string&&(span.innerHTML=Str(res.textpath.string).replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>"));var brect=span.getBoundingClientRect();res.W=a.w=(brect.right-brect.left)/m,res.H=a.h=(brect.bottom-brect.top)/m,res.X=a.x,res.Y=a.y+res.H/2,("x"in params||"y"in params)&&(res.path.v=R.format("m{0},{1}l{2},{1}",round(a.x*zoom),round(a.y*zoom),round(a.x*zoom)+1));for(var dirtyattrs=["x","y","text","font","font-family","font-weight","font-style","font-size"],d=0,dd=dirtyattrs.length;d<dd;d++)if(dirtyattrs[d]in params){res._.dirty=1;break}switch(a["text-anchor"]){case"start":res.textpath.style["v-text-align"]="left",res.bbx=res.W/2;break;case"end":res.textpath.style["v-text-align"]="right",res.bbx=-res.W/2;break;default:res.textpath.style["v-text-align"]="center",res.bbx=0}res.textpath.style["v-text-kern"]=!0}},addGradientFill=function(o,gradient,fill){o.attrs=o.attrs||{};var attrs=o.attrs,pow=Math.pow,opacity,oindex,type="linear",fxfy=".5 .5";if(o.attrs.gradient=gradient,gradient=Str(gradient).replace(R._radial_gradient,function(all,fx,fy){return type="radial",fx&&fy&&(fx=toFloat(fx),fy=toFloat(fy),pow(fx-.5,2)+pow(fy-.5,2)>.25&&(fy=math.sqrt(.25-pow(fx-.5,2))*(2*(fy>.5)-1)+.5),fxfy=fx+S+fy),E}),gradient=gradient.split(/\s*\-\s*/),"linear"==type){var angle=gradient.shift();if(angle=-toFloat(angle),isNaN(angle))return null}var dots=R._parseDots(gradient);if(!dots)return null;if(o=o.shape||o.node,dots.length){o.removeChild(fill),fill.on=!0,fill.method="none",fill.color=dots[0].color,fill.color2=dots[dots.length-1].color;for(var clrs=[],i=0,ii=dots.length;i<ii;i++)dots[i].offset&&clrs.push(dots[i].offset+S+dots[i].color);fill.colors=clrs.length?clrs.join():"0% "+fill.color,"radial"==type?(fill.type="gradientTitle",fill.focus="100%",fill.focussize="0 0",fill.focusposition=fxfy,fill.angle=0):(fill.type="gradient",fill.angle=(270-angle)%360),o.appendChild(fill)}return 1},Element=function(node,vml){this[0]=this.node=node,node.raphael=!0,this.id=R._oid++,node.raphaelid=this.id,this.X=0,this.Y=0,this.attrs={},this.paper=vml,this.matrix=R.matrix(),this._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1},!vml.bottom&&(vml.bottom=this),this.prev=vml.top,vml.top&&(vml.top.next=this),vml.top=this,this.next=null},elproto=R.el;Element.prototype=elproto,elproto.constructor=Element,elproto.transform=function(tstr){if(null==tstr)return this._.transform;var vbs=this.paper._viewBoxShift,vbt=vbs?"s"+[vbs.scale,vbs.scale]+"-1-1t"+[vbs.dx,vbs.dy]:E,oldt;vbs&&(oldt=tstr=Str(tstr).replace(/\.{3}|\u2026/g,this._.transform||E)),R._extractTransform(this,vbt+tstr);var matrix=this.matrix.clone(),skew=this.skew,o=this.node,split,isGrad=~Str(this.attrs.fill).indexOf("-"),isPatt=!Str(this.attrs.fill).indexOf("url(");if(matrix.translate(1,1),isPatt||isGrad||"image"==this.type)if(skew.matrix="1 0 0 1",skew.offset="0 0",split=matrix.split(),isGrad&&split.noRotation||!split.isSimple){o.style.filter=matrix.toFilter();var bb=this.getBBox(),bbt=this.getBBox(1),dx=bb.x-bbt.x,dy=bb.y-bbt.y;o.coordorigin=dx*-zoom+S+dy*-zoom,setCoords(this,1,1,dx,dy,0)}else o.style.filter=E,setCoords(this,split.scalex,split.scaley,split.dx,split.dy,split.rotate);else o.style.filter=E,skew.matrix=Str(matrix),skew.offset=matrix.offset();return null!==oldt&&(this._.transform=oldt,R._extractTransform(this,oldt)),this},elproto.rotate=function(deg,cx,cy){if(this.removed)return this;if(null!=deg){if(deg=Str(deg).split(separator),
deg.length-1&&(cx=toFloat(deg[1]),cy=toFloat(deg[2])),deg=toFloat(deg[0]),null==cy&&(cx=cy),null==cx||null==cy){var bbox=this.getBBox(1);cx=bbox.x+bbox.width/2,cy=bbox.y+bbox.height/2}return this._.dirtyT=1,this.transform(this._.transform.concat([["r",deg,cx,cy]])),this}},elproto.translate=function(dx,dy){return this.removed?this:(dx=Str(dx).split(separator),dx.length-1&&(dy=toFloat(dx[1])),dx=toFloat(dx[0])||0,dy=+dy||0,this._.bbox&&(this._.bbox.x+=dx,this._.bbox.y+=dy),this.transform(this._.transform.concat([["t",dx,dy]])),this)},elproto.scale=function(sx,sy,cx,cy){if(this.removed)return this;if(sx=Str(sx).split(separator),sx.length-1&&(sy=toFloat(sx[1]),cx=toFloat(sx[2]),cy=toFloat(sx[3]),isNaN(cx)&&(cx=null),isNaN(cy)&&(cy=null)),sx=toFloat(sx[0]),null==sy&&(sy=sx),null==cy&&(cx=cy),null==cx||null==cy)var bbox=this.getBBox(1);return cx=null==cx?bbox.x+bbox.width/2:cx,cy=null==cy?bbox.y+bbox.height/2:cy,this.transform(this._.transform.concat([["s",sx,sy,cx,cy]])),this._.dirtyT=1,this},elproto.hide=function(){return!this.removed&&(this.node.style.display="none"),this},elproto.show=function(){return!this.removed&&(this.node.style.display=E),this},elproto.auxGetBBox=R.el.getBBox,elproto.getBBox=function(){var b=this.auxGetBBox();if(this.paper&&this.paper._viewBoxShift){var c={},z=1/this.paper._viewBoxShift.scale;return c.x=b.x-this.paper._viewBoxShift.dx,c.x*=z,c.y=b.y-this.paper._viewBoxShift.dy,c.y*=z,c.width=b.width*z,c.height=b.height*z,c.x2=c.x+c.width,c.y2=c.y+c.height,c}return b},elproto._getBBox=function(){return this.removed?{}:{x:this.X+(this.bbx||0)-this.W/2,y:this.Y-this.H,width:this.W,height:this.H}},elproto.remove=function(){if(!this.removed&&this.node.parentNode){this.paper.__set__&&this.paper.__set__.exclude(this),R.eve.unbind("raphael.*.*."+this.id),R._tear(this,this.paper),this.node.parentNode.removeChild(this.node),this.shape&&this.shape.parentNode.removeChild(this.shape);for(var i in this)this[i]="function"==typeof this[i]?R._removedFactory(i):null;this.removed=!0}},elproto.attr=function(name,value){if(this.removed)return this;if(null==name){var res={};for(var a in this.attrs)this.attrs[has](a)&&(res[a]=this.attrs[a]);return res.gradient&&"none"==res.fill&&(res.fill=res.gradient)&&delete res.gradient,res.transform=this._.transform,res}if(null==value&&R.is(name,"string")){if(name==fillString&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;for(var names=name.split(separator),out={},i=0,ii=names.length;i<ii;i++)name=names[i],name in this.attrs?out[name]=this.attrs[name]:R.is(this.paper.customAttributes[name],"function")?out[name]=this.paper.customAttributes[name].def:out[name]=R._availableAttrs[name];return ii-1?out:out[names[0]]}if(this.attrs&&null==value&&R.is(name,"array")){for(out={},i=0,ii=name.length;i<ii;i++)out[name[i]]=this.attr(name[i]);return out}var params;null!=value&&(params={},params[name]=value),null==value&&R.is(name,"object")&&(params=name);for(var key in params)eve("raphael.attr."+key+"."+this.id,this,params[key]);if(params){for(key in this.paper.customAttributes)if(this.paper.customAttributes[has](key)&&params[has](key)&&R.is(this.paper.customAttributes[key],"function")){var par=this.paper.customAttributes[key].apply(this,[].concat(params[key]));this.attrs[key]=params[key];for(var subkey in par)par[has](subkey)&&(params[subkey]=par[subkey])}params.text&&"text"==this.type&&(this.textpath.string=params.text),setFillAndStroke(this,params)}return this},elproto.toFront=function(){return!this.removed&&this.node.parentNode.appendChild(this.node),this.paper&&this.paper.top!=this&&R._tofront(this,this.paper),this},elproto.toBack=function(){return this.removed?this:(this.node.parentNode.firstChild!=this.node&&(this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),R._toback(this,this.paper)),this)},elproto.insertAfter=function(element){return this.removed?this:(element.constructor==R.st.constructor&&(element=element[element.length-1]),element.node.nextSibling?element.node.parentNode.insertBefore(this.node,element.node.nextSibling):element.node.parentNode.appendChild(this.node),R._insertafter(this,element,this.paper),this)},elproto.insertBefore=function(element){return this.removed?this:(element.constructor==R.st.constructor&&(element=element[0]),element.node.parentNode.insertBefore(this.node,element.node),R._insertbefore(this,element,this.paper),this)},elproto.blur=function(size){var s=this.node.runtimeStyle,f=s.filter;return f=f.replace(blurregexp,E),0!==+size?(this.attrs.blur=size,s.filter=f+S+ms+".Blur(pixelradius="+(+size||1.5)+")",s.margin=R.format("-{0}px 0 0 -{0}px",round(+size||1.5))):(s.filter=f,s.margin=0,delete this.attrs.blur),this},R._engine.path=function(pathString,vml){var el=createNode("shape");el.style.cssText=cssDot,el.coordsize=zoom+S+zoom,el.coordorigin=vml.coordorigin;var p=new Element(el,vml),attr={fill:"none",stroke:"#000"};pathString&&(attr.path=pathString),p.type="path",p.path=[],p.Path=E,setFillAndStroke(p,attr),vml.canvas.appendChild(el);var skew=createNode("skew");return skew.on=!0,el.appendChild(skew),p.skew=skew,p.transform(E),p},R._engine.rect=function(vml,x,y,w,h,r){var path=R._rectPath(x,y,w,h,r),res=vml.path(path),a=res.attrs;return res.X=a.x=x,res.Y=a.y=y,res.W=a.width=w,res.H=a.height=h,a.r=r,a.path=path,res.type="rect",res},R._engine.ellipse=function(vml,x,y,rx,ry){var res=vml.path(),a=res.attrs;return res.X=x-rx,res.Y=y-ry,res.W=2*rx,res.H=2*ry,res.type="ellipse",setFillAndStroke(res,{cx:x,cy:y,rx:rx,ry:ry}),res},R._engine.circle=function(vml,x,y,r){var res=vml.path(),a=res.attrs;return res.X=x-r,res.Y=y-r,res.W=res.H=2*r,res.type="circle",setFillAndStroke(res,{cx:x,cy:y,r:r}),res},R._engine.image=function(vml,src,x,y,w,h){var path=R._rectPath(x,y,w,h),res=vml.path(path).attr({stroke:"none"}),a=res.attrs,node=res.node,fill=node.getElementsByTagName(fillString)[0];return a.src=src,res.X=a.x=x,res.Y=a.y=y,res.W=a.width=w,res.H=a.height=h,a.path=path,res.type="image",fill.parentNode==node&&node.removeChild(fill),fill.rotate=!0,fill.src=src,fill.type="tile",res._.fillpos=[x,y],res._.fillsize=[w,h],node.appendChild(fill),setCoords(res,1,1,0,0,0),res},R._engine.text=function(vml,x,y,text){var el=createNode("shape"),path=createNode("path"),o=createNode("textpath");x=x||0,y=y||0,text=text||"",path.v=R.format("m{0},{1}l{2},{1}",round(x*zoom),round(y*zoom),round(x*zoom)+1),path.textpathok=!0,o.string=Str(text),o.on=!0,el.style.cssText=cssDot,el.coordsize=zoom+S+zoom,el.coordorigin="0 0";var p=new Element(el,vml),attr={fill:"#000",stroke:"none",font:R._availableAttrs.font,text:text};p.shape=el,p.path=path,p.textpath=o,p.type="text",p.attrs.text=Str(text),p.attrs.x=x,p.attrs.y=y,p.attrs.w=1,p.attrs.h=1,setFillAndStroke(p,attr),el.appendChild(o),el.appendChild(path),vml.canvas.appendChild(el);var skew=createNode("skew");return skew.on=!0,el.appendChild(skew),p.skew=skew,p.transform(E),p},R._engine.setSize=function(width,height){var cs=this.canvas.style;return this.width=width,this.height=height,width==+width&&(width+="px"),height==+height&&(height+="px"),cs.width=width,cs.height=height,cs.clip="rect(0 "+width+" "+height+" 0)",this._viewBox&&R._engine.setViewBox.apply(this,this._viewBox),this},R._engine.setViewBox=function(x,y,w,h,fit){R.eve("raphael.setViewBox",this,this._viewBox,[x,y,w,h,fit]);var paperSize=this.getSize(),width=paperSize.width,height=paperSize.height,H,W;return fit&&(H=height/h,W=width/w,w*H<width&&(x-=(width-w*H)/2/H),h*W<height&&(y-=(height-h*W)/2/W)),this._viewBox=[x,y,w,h,!!fit],this._viewBoxShift={dx:-x,dy:-y,scale:paperSize},this.forEach(function(el){el.transform("...")}),this};var createNode;R._engine.initWin=function(win){var doc=win.document;doc.styleSheets.length<31?doc.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)"):doc.styleSheets[0].addRule(".rvml","behavior:url(#default#VML)");try{!doc.namespaces.rvml&&doc.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),createNode=function(tagName){return doc.createElement("<rvml:"+tagName+' class="rvml">')}}catch(e){createNode=function(tagName){return doc.createElement("<"+tagName+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},R._engine.initWin(R._g.win),R._engine.create=function(){var con=R._getContainer.apply(0,arguments),container=con.container,height=con.height,s,width=con.width,x=con.x,y=con.y;if(!container)throw new Error("VML container not found.");var res=new R._Paper,c=res.canvas=R._g.doc.createElement("div"),cs=c.style;return x=x||0,y=y||0,width=width||512,height=height||342,res.width=width,res.height=height,width==+width&&(width+="px"),height==+height&&(height+="px"),res.coordsize=1e3*zoom+S+1e3*zoom,res.coordorigin="0 0",res.span=R._g.doc.createElement("span"),res.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",c.appendChild(res.span),cs.cssText=R.format("top:0;left:0;display:inline-block;position:absolute;clip:rect(0 {0} {1} 0);",width,height),1==container?(R._g.doc.body.appendChild(c),cs.left=x+"px",cs.top=y+"px",cs.position="absolute"):container.firstChild?container.insertBefore(c,container.firstChild):container.appendChild(c),res.renderfix=function(){},res},R.prototype.clear=function(){R.eve("raphael.clear",this),this.canvas.innerHTML=E,this.span=R._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},R.prototype.remove=function(){R.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var i in this)this[i]="function"==typeof this[i]?R._removedFactory(i):null;return!0};var setproto=R.st;for(var method in elproto)elproto[has](method)&&!setproto[has](method)&&(setproto[method]=function(methodname){return function(){var arg=arguments;return this.forEach(function(el){el[methodname].apply(el,arg)})}}(method))}}),function(glob,factory){if("function"==typeof define&&define.amd)define("raphael",["raphael.core","raphael.svg","raphael.vml"],function(Raphael){return factory(Raphael)});else if("object"==typeof exports){var raphael=require("raphael.core");require("raphael.svg"),require("raphael.vml"),module.exports=factory(raphael)}}(this,function(Raphael){return Raphael.ninja()}),BI.Svg=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.Svg.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-svg"})},_init:function(){BI.Svg.superclass._init.apply(this,arguments),this.paper=Raphael(this.element[0]),this.element.css("overflow","hidden"),BI.$(this.paper.canvas).width("100%").height("100%").css({left:"0",top:"0"}).appendTo(this.element),this.top=this.paper.top,this.bottom=this.paper.bottom,this.customAttributes=this.paper.customAttributes,this.ca=this.paper.ca,this.raphael=this.paper.raphael},add:function(){return this.paper.add.apply(this.paper,arguments)},path:function(){return this.paper.path.apply(this.paper,arguments)},image:function(){return this.paper.image.apply(this.paper,arguments)},rect:function(){return this.paper.rect.apply(this.paper,arguments)},circle:function(){return this.paper.circle.apply(this.paper,arguments)},ellipse:function(){return this.paper.ellipse.apply(this.paper,arguments)},text:function(){return this.paper.text.apply(this.paper,arguments)},print:function(){return this.paper.print.apply(this.paper,arguments)},setStart:function(){return this.paper.setStart.apply(this.paper,arguments)},setFinish:function(){return this.paper.setFinish.apply(this.paper,arguments)},setSize:function(){return this.paper.setSize.apply(this.paper,arguments)},setViewBox:function(){return this.paper.setViewBox.apply(this.paper,arguments)},getById:function(){return this.paper.getById.apply(this.paper,arguments)},getElementByPoint:function(){return this.paper.getElementByPoint.apply(this.paper,arguments)},getElementsByPoint:function(){return this.paper.getElementsByPoint.apply(this.paper,arguments)},getFont:function(){return this.paper.getFont.apply(this.paper,arguments)},set:function(){return this.paper.set.apply(this.paper,arguments)},remove:function(){return this.paper.remove.apply(this.paper,arguments)},clear:function(){return this.paper.clear.apply(this.paper,arguments)}}),BI.shortcut("bi.svg",BI.Svg),BI.NativeTableScrollbar=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.NativeTableScrollbar.superclass._defaultConfig.apply(this,arguments),{attributes:{tabIndex:0},contentSize:0,defaultPosition:0,position:0,size:0})},render:function(){var self=this,o=this.options;this.element.width(36);var throttle=BI.throttle(function(){self.fireEvent(BI.NativeTableScrollbar.EVENT_SCROLL,self.element.scrollTop())},150,{leading:!1});return this.element.scroll(function(){throttle()}),{type:"bi.default",scrolly:!0,items:[{type:"bi.layout",width:1,ref:function(_ref){self.inner=_ref}}]}},mounted:function(){this._populate()},_populate:function(){var self=this,o=this.options;if(o.size<1||o.contentSize<=o.size)return void this.setVisible(!1);this.setVisible(!0);try{this.element.scrollTop(o.position)}catch(e){}this.inner.element.height(o.contentSize)},setContentSize:function(contentSize){this.options.contentSize=contentSize},setPosition:function(position){this.options.position=position},setSize:function(size){this.setHeight(size),this.options.size=size},populate:function(){this._populate()}}),BI.NativeTableScrollbar.EVENT_SCROLL="EVENT_SCROLL",BI.shortcut("bi.native_table_scrollbar",BI.NativeTableScrollbar),BI.NativeTableHorizontalScrollbar=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.NativeTableHorizontalScrollbar.superclass._defaultConfig.apply(this,arguments),{attributes:{tabIndex:0},contentSize:0,position:0,size:0})},render:function(){var self=this,o=this.options;this.element.height(36);var throttle=BI.throttle(function(){self.fireEvent(BI.NativeTableScrollbar.EVENT_SCROLL,self.element.scrollLeft())},150,{leading:!1});return this.element.scroll(function(){throttle()}),{type:"bi.default",scrollx:!0,items:[{type:"bi.layout",height:1,ref:function(_ref){self.inner=_ref}}]}},setContentSize:function(contentSize){this.options.contentSize=contentSize},setPosition:function(position){this.options.position=position},setSize:function(size){this.setWidth(size),this.options.size=size},_populate:function(){var self=this,o=this.options;if(o.size<1||o.contentSize<=o.size)return void this.setVisible(!1);this.setVisible(!0);try{this.element.scrollLeft(o.position)}catch(e){}this.inner.element.width(o.contentSize)},populate:function(){this._populate()}}),BI.NativeTableHorizontalScrollbar.EVENT_SCROLL="EVENT_SCROLL",BI.shortcut("bi.native_table_horizontal_scrollbar",BI.NativeTableHorizontalScrollbar),BI.TableCell=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.TableCell.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-table-cell",textAlign:"left",text:""})},_init:function(){BI.TableCell.superclass._init.apply(this,arguments);var o=this.options;BI.createWidget({type:"bi.label",element:this,whiteSpace:o.whiteSpace||"nowrap",textAlign:this.options.textAlign,height:this.options.height,text:this.options.text,value:this.options.value,lgap:o.lgap,rgap:o.rgap,hgap:o.hgap||5})}}),BI.shortcut("bi.table_cell",BI.TableCell),BI.CollectionTableCell=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.CollectionTableCell.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-collection-table-cell bi-border-right bi-border-bottom",width:0,height:0,_left:0,_top:0,cell:{}})},_init:function(){BI.CollectionTableCell.superclass._init.apply(this,arguments);var o=this.options;this.cell=BI.createWidget(BI.extend({type:"bi.label"},o.cell,{cls:(o.cell.cls||"")+" collection-table-cell-wrapper",width:o.width-(0===o._left?1:0)-1,height:o.height-(0===o._top?1:0)-1})),BI.createWidget({type:"bi.absolute",element:this,items:[{el:this.cell,left:0,right:0,top:0,bottom:0}]})},setWidth:function(width){BI.CollectionTableCell.superclass.setWidth.apply(this,arguments);var o=this.options;this.cell.setWidth(o.width-(0===o._left?1:0)-1)},setHeight:function(height){BI.CollectionTableCell.superclass.setHeight.apply(this,arguments);var o=this.options;this.cell.setHeight(o.height-(0===o._top?1:0)-1)}}),BI.shortcut("bi.collection_table_cell",BI.CollectionTableCell),BI.CollectionTable=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.CollectionTable.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-collection-table",headerRowSize:25,rowSize:25,columnSize:[],isNeedFreeze:!1,freezeCols:[],isNeedMerge:!1,mergeCols:[],mergeRule:BI.emptyFn,header:[],items:[],regionColumnSize:[]})},render:function(){var self=this,o=this.options;this._width=0,this._height=0,this.topLeftCollection=BI.createWidget({type:"bi.collection_view",cellSizeAndPositionGetter:function(index){return self.topLeftItems[index]}}),this.topLeftCollection.on(BI.CollectionView.EVENT_SCROLL,function(scroll){self.bottomLeftCollection.setScrollLeft(scroll.scrollLeft),self._populateScrollbar(),self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.topRightCollection=BI.createWidget({type:"bi.collection_view",cellSizeAndPositionGetter:function(index){return self.topRightItems[index]}}),this.topRightCollection.on(BI.CollectionView.EVENT_SCROLL,function(scroll){self.bottomRightCollection.setScrollLeft(scroll.scrollLeft),self._populateScrollbar(),self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.bottomLeftCollection=BI.createWidget({type:"bi.collection_view",cellSizeAndPositionGetter:function(index){return self.bottomLeftItems[index]}}),this.bottomLeftCollection.on(BI.CollectionView.EVENT_SCROLL,function(scroll){self.bottomRightCollection.setScrollTop(scroll.scrollTop),self.topLeftCollection.setScrollLeft(scroll.scrollLeft),self._populateScrollbar(),self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.bottomRightCollection=BI.createWidget({type:"bi.collection_view",cellSizeAndPositionGetter:function(index){return self.bottomRightItems[index]}}),this.bottomRightCollection.on(BI.CollectionView.EVENT_SCROLL,function(scroll){self.bottomLeftCollection.setScrollTop(scroll.scrollTop),self.topRightCollection.setScrollLeft(scroll.scrollLeft),self._populateScrollbar(),self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.topLeft=BI.createWidget({type:"bi.vertical",scrollable:!1,scrolly:!1,items:[this.topLeftCollection]}),this.topRight=BI.createWidget({type:"bi.vertical",scrollable:!1,scrolly:!1,items:[this.topRightCollection]}),this.bottomLeft=BI.createWidget({type:"bi.vertical",scrollable:!1,scrolly:!1,items:[this.bottomLeftCollection]}),this.bottomRight=BI.createWidget({type:"bi.vertical",scrollable:!1,scrolly:!1,items:[this.bottomRightCollection]}),this.contextLayout=BI.createWidget({type:"bi.absolute",element:this,items:[{el:this.topLeft,top:0,left:0},{el:this.topRight,top:0},{el:this.bottomLeft,left:0},{el:this.bottomRight}]}),this.topScrollbar=BI.createWidget({type:"bi.grid_table_scrollbar",width:BI.GridTableScrollbar.SIZE}),this.topScrollbar.on(BI.GridTableScrollbar.EVENT_SCROLL,function(scrollTop){self.bottomLeftCollection.setScrollTop(scrollTop),self.bottomRightCollection.setScrollTop(scrollTop),self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.leftScrollbar=BI.createWidget({type:"bi.grid_table_horizontal_scrollbar",height:BI.GridTableScrollbar.SIZE}),this.leftScrollbar.on(BI.GridTableScrollbar.EVENT_SCROLL,function(scrollLeft){self.topLeftCollection.setScrollLeft(scrollLeft),self.bottomLeftCollection.setScrollLeft(scrollLeft),self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.rightScrollbar=BI.createWidget({type:"bi.grid_table_horizontal_scrollbar",height:BI.GridTableScrollbar.SIZE}),this.rightScrollbar.on(BI.GridTableScrollbar.EVENT_SCROLL,function(scrollLeft){self.topRightCollection.setScrollLeft(scrollLeft),self.bottomRightCollection.setScrollLeft(scrollLeft),self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.scrollBarLayout=BI.createWidget({type:"bi.absolute",element:this,items:[{el:this.topScrollbar,right:0,top:0},{el:this.leftScrollbar,left:0},{el:this.rightScrollbar}]}),this._width=o.width-BI.GridTableScrollbar.SIZE,this._height=o.height-BI.GridTableScrollbar.SIZE,(o.header.length>0||o.items.length>0)&&(this._digest(),this._populate())},_getFreezeColLength:function(){var o=this.options;return o.isNeedFreeze===!0?BI.clamp(o.freezeCols.length,0,o.columnSize.length):0},_getFreezeHeaderHeight:function(){var o=this.options;return o.header.length*o.headerRowSize>=this._height?0:o.header.length*o.headerRowSize},_getActualItems:function(){var o=this.options;return o.header.length*o.headerRowSize>=this._height?o.header.concat(o.items):o.items},_populateScrollbar:function(){var o=this.options,regionSize=this.getRegionSize(),totalLeftColumnSize=0,totalRightColumnSize=0,totalColumnSize=0,summaryColumnSizeArray=[];BI.each(o.columnSize,function(i,size){o.isNeedFreeze===!0&&o.freezeCols.contains(i)?totalLeftColumnSize+=size:totalRightColumnSize+=size,totalColumnSize+=size,0===i?summaryColumnSizeArray[i]=size:summaryColumnSizeArray[i]=summaryColumnSizeArray[i-1]+size}),this.topScrollbar.setContentSize(this._getActualItems().length*o.rowSize),this.topScrollbar.setSize(this._height-this._getFreezeHeaderHeight()),this.topScrollbar.setPosition(this.bottomRightCollection.getScrollTop()),this.topScrollbar.populate(),this.leftScrollbar.setContentSize(totalLeftColumnSize),this.leftScrollbar.setSize(regionSize),this.leftScrollbar.setPosition(this.bottomLeftCollection.getScrollLeft()),this.leftScrollbar.populate(),this.rightScrollbar.setContentSize(totalRightColumnSize),this.rightScrollbar.setSize(this._width-regionSize),this.rightScrollbar.setPosition(this.bottomRightCollection.getScrollLeft()),this.rightScrollbar.populate();var items=this.scrollBarLayout.attr("items");items[0].top=this._getFreezeHeaderHeight(),items[1].top=this._height,items[2].top=this._height,items[2].left=regionSize,this.scrollBarLayout.attr("items",items),this.scrollBarLayout.resize()},_populateTable:function(){var self=this,o=this.options,regionSize=this.getRegionSize(),totalLeftColumnSize=0,totalRightColumnSize=0,totalColumnSize=0,summaryColumnSizeArray=[];BI.each(o.columnSize,function(i,size){o.isNeedFreeze===!0&&o.freezeCols.contains(i)?totalLeftColumnSize+=size:totalRightColumnSize+=size,totalColumnSize+=size,0===i?summaryColumnSizeArray[i]=size:summaryColumnSizeArray[i]=summaryColumnSizeArray[i-1]+size});var otlw=regionSize,otlh=this._getFreezeHeaderHeight(),otrw=this._width-regionSize,otrh=this._getFreezeHeaderHeight(),oblw=regionSize,oblh=this._height-otlh,obrw=this._width-regionSize,obrh=this._height-otrh,scrollBarSize=BI.DOM.getScrollWidth(),tlw=otlw+scrollBarSize,tlh=otlh+scrollBarSize,trw=otrw+scrollBarSize,trh=otrh+scrollBarSize,blw=oblw+scrollBarSize,blh=oblh+scrollBarSize,brw=obrw+scrollBarSize,brh=obrh+scrollBarSize,digest=function(el){el.element.css({overflow:"scroll",overflowX:"scroll",overflowY:"scroll"})};this.topLeft.setWidth(otlw),this.topLeft.setHeight(otlh),this.topRight.setWidth(otrw),this.topRight.setHeight(otrh),this.bottomLeft.setWidth(oblw),this.bottomLeft.setHeight(oblh),this.bottomRight.setWidth(obrw),this.bottomRight.setHeight(obrh),this.topLeftCollection.setWidth(tlw),this.topLeftCollection.setHeight(tlh),this.topRightCollection.setWidth(trw),this.topRightCollection.setHeight(trh),this.bottomLeftCollection.setWidth(blw),this.bottomLeftCollection.setHeight(blh),this.bottomRightCollection.setWidth(brw),this.bottomRightCollection.setHeight(brh),digest(this.topLeftCollection),digest(this.topRightCollection),digest(this.bottomLeftCollection),digest(this.bottomRightCollection);var items=this.contextLayout.attr("items");items[1].left=regionSize,items[2].top=this._getFreezeHeaderHeight(),items[3].left=regionSize,items[3].top=this._getFreezeHeaderHeight(),this.contextLayout.attr("items",items),this.contextLayout.resize();var leftHeader=[],rightHeader=[],leftItems=[],rightItems=[],run=function(positions,items,rendered){BI.each(positions,function(i,item){var cell={type:"bi.collection_table_cell",cell:items[item.row][item.col]};rendered.push(cell)})};run(this.topLeftItems,o.header,leftHeader),run(this.topRightItems,o.header,rightHeader),run(this.bottomLeftItems,this._getActualItems(),leftItems),run(this.bottomRightItems,this._getActualItems(),rightItems),this.topLeftCollection._populate(leftHeader),this.topRightCollection._populate(rightHeader),this.bottomLeftCollection._populate(leftItems),this.bottomRightCollection._populate(rightItems)},_digest:function(){var o=this.options,freezeColLength=this._getFreezeColLength();this._getFreezeHeaderHeight()<=0?(this.topLeftItems=[],this.topRightItems=[],this.bottomLeftItems=this._serialize(this._getActualItems(),0,freezeColLength,o.rowSize,o.columnSize,o.mergeCols,BI.range(o.header.length)),this.bottomRightItems=this._serialize(this._getActualItems(),freezeColLength,o.columnSize.length,o.rowSize,o.columnSize,o.mergeCols,BI.range(o.header.length))):(this.topLeftItems=this._serialize(o.header,0,freezeColLength,o.headerRowSize,o.columnSize,o.mergeCols),this.topRightItems=this._serialize(o.header,freezeColLength,o.columnSize.length,o.headerRowSize,o.columnSize,!0),this.bottomLeftItems=this._serialize(o.items,0,freezeColLength,o.rowSize,o.columnSize,o.mergeCols),this.bottomRightItems=this._serialize(o.items,freezeColLength,o.columnSize.length,o.rowSize,o.columnSize,o.mergeCols))},_serialize:function(items,startCol,endCol,rowHeight,columnSize,mergeCols,mergeRows){mergeCols=mergeCols||[],mergeRows=mergeRows||[];for(var self=this,o=this.options,result=[],cache={},preCol={},preRow={},map={},summaryColumnSize=[],i=startCol;i<endCol;i++)i===startCol?summaryColumnSize[i]=columnSize[i]:summaryColumnSize[i]=summaryColumnSize[i-1]+columnSize[i];var mergeRow=function(i,j){preCol[j]._height+=rowHeight,preCol[j].__mergeRows.push(i)},mergeCol=function(i,j){preRow[i]._width+=columnSize[j],preRow[i].__mergeCols.push(j)},createOneEl=function(r,c){var width=columnSize[c],height=rowHeight;map[r][c]._row=r,map[r][c]._col=c,map[r][c]._width=width,map[r][c]._height=height,preCol[c]=map[r][c],preCol[c].__mergeRows=[r],preRow[r]=map[r][c],preRow[r].__mergeCols=[c],result.push({x:summaryColumnSize[c]-columnSize[c],y:+r*rowHeight,item:map[r][c]})};return BI.each(items,function(i,cols){for(var j=startCol;j<endCol;j++)if(cache[i]||(cache[i]={}),map[i]||(map[i]={}),cache[i][j]=cols[j],map[i][j]={},mergeCols===!0||mergeCols.indexOf(j)>-1||mergeRows===!0||mergeRows.indexOf(i)>-1)if(0===i&&j===startCol)createOneEl(0,startCol);else if(j===startCol&&i>0){var isNeedMergeRow=o.mergeRule(cache[i][j],cache[i-1][j]);isNeedMergeRow===!0?(mergeRow(i,j),preRow[i]=preCol[j]):createOneEl(i,j)}else if(0===i&&j>startCol){var isNeedMergeCol=o.mergeRule(cache[i][j],cache[i][j-1]);isNeedMergeCol===!0?(mergeCol(i,j),preCol[j]=preRow[i]):createOneEl(i,j)}else{var isNeedMergeRow=o.mergeRule(cache[i][j],cache[i-1][j]),isNeedMergeCol=o.mergeRule(cache[i][j],cache[i][j-1]);if(isNeedMergeCol&&isNeedMergeRow)continue;isNeedMergeCol&&mergeCol(i,j),isNeedMergeRow&&mergeRow(i,j),isNeedMergeCol||isNeedMergeRow||createOneEl(i,j)}else createOneEl(i,j)}),BI.map(result,function(i,item){return{x:item.x,y:item.y,row:item.item._row,col:item.item._col,width:item.item._width,height:item.item._height}})},_populate:function(){this._width<=0||this._height<=0||(this._isNeedDigest===!0&&this._digest(),this._isNeedDigest=!1,this._populateTable(),this._populateScrollbar())},getRegionSize:function(){var o=this.options,regionSize=o.regionColumnSize[0]||0;return o.isNeedFreeze===!1||0===o.freezeCols.length?0:(regionSize||BI.each(o.freezeCols,function(i,col){regionSize+=o.columnSize[col]}),regionSize)},setVerticalScroll:function(scrollTop){this.bottomLeftCollection.setScrollTop(scrollTop),this.bottomRightCollection.setScrollTop(scrollTop)},setLeftHorizontalScroll:function(scrollLeft){this.topLeftCollection.setScrollLeft(scrollLeft),this.bottomLeftCollection.setScrollLeft(scrollLeft)},setRightHorizontalScroll:function(scrollLeft){this.topRightCollection.setScrollLeft(scrollLeft),this.bottomRightCollection.setScrollLeft(scrollLeft)},getVerticalScroll:function(){return this.bottomRightCollection.getScrollTop()},getLeftHorizontalScroll:function(){return this.bottomLeftCollection.getScrollLeft()},getRightHorizontalScroll:function(){return this.bottomRightCollection.getScrollLeft()},setWidth:function(width){BI.CollectionTable.superclass.setWidth.apply(this,arguments),this._width=this.options.width-BI.GridTableScrollbar.SIZE},setHeight:function(height){BI.CollectionTable.superclass.setHeight.apply(this,arguments),this._height=this.options.height-BI.GridTableScrollbar.SIZE},setColumnSize:function(columnSize){this._isNeedDigest=!0,this.options.columnSize=columnSize},setRegionColumnSize:function(regionColumnSize){this._isNeedDigest=!0,this.options.regionColumnSize=regionColumnSize},getColumnSize:function(){return this.options.columnSize},getRegionColumnSize:function(){return this.options.regionColumnSize},populate:function(items,header){items&&items!==this.options.items&&(this._isNeedDigest=!0,this.options.items=items,this._restore()),header&&header!==this.options.header&&(this._isNeedDigest=!0,this.options.header=header,this._restore()),this._populate()},_restore:function(){this.topLeftCollection.restore(),this.topRightCollection.restore(),this.bottomLeftCollection.restore(),this.bottomRightCollection.restore()},restore:function(){this._restore()}}),BI.shortcut("bi.collection_table",BI.CollectionTable),BI.QuickCollectionTable=BI.inherit(BI.CollectionTable,{_defaultConfig:function(){return BI.extend(BI.QuickCollectionTable.superclass._defaultConfig.apply(this,arguments),{extraCls:"bi-quick-collection-table"})},render:function(){BI.QuickCollectionTable.superclass.render.apply(this,arguments);var self=this,o=this.options;this.topLeftCollection.setOverflowX(!1),this.topLeftCollection.setOverflowY(!1),this.topRightCollection.setOverflowX(!1),this.topRightCollection.setOverflowY(!1),this.bottomLeftCollection.setOverflowX(!1),this.bottomLeftCollection.setOverflowY(!1),this.bottomRightCollection.setOverflowX(!1),this.bottomRightCollection.setOverflowY(!1)},mounted:function(){var self=this;this._topLeftWheelHandler=new BI.WheelHandler(BI.bind(this._onWheelLeft,this),BI.bind(this._shouldHandleLeftX,this),BI.bind(this._shouldHandleY,this)),this._topRightWheelHandler=new BI.WheelHandler(BI.bind(this._onWheelRight,this),BI.bind(this._shouldHandleRightX,this),BI.bind(this._shouldHandleY,this)),this._bottomLeftWheelHandler=new BI.WheelHandler(BI.bind(this._onWheelLeft,this),BI.bind(this._shouldHandleLeftX,this),BI.bind(this._shouldHandleY,this)),this._bottomRightWheelHandler=new BI.WheelHandler(BI.bind(this._onWheelRight,this),BI.bind(this._shouldHandleRightX,this),BI.bind(this._shouldHandleY,this)),this.topLeftCollection.element.mousewheel(function(e){self._topLeftWheelHandler.onWheel(e.originalEvent)}),this.topRightCollection.element.mousewheel(function(e){self._topRightWheelHandler.onWheel(e.originalEvent)}),this.bottomLeftCollection.element.mousewheel(function(e){self._bottomLeftWheelHandler.onWheel(e.originalEvent)}),this.bottomRightCollection.element.mousewheel(function(e){self._bottomRightWheelHandler.onWheel(e.originalEvent)})},_shouldHandleLeftX:function(delta){return delta>0?this.bottomLeftCollection.getScrollLeft()<this.bottomLeftCollection.getMaxScrollLeft():this.bottomLeftCollection.getScrollLeft()>0},_shouldHandleRightX:function(delta){return delta>0?this.bottomRightCollection.getScrollLeft()<this.bottomRightCollection.getMaxScrollLeft():this.bottomRightCollection.getScrollLeft()>0},_shouldHandleY:function(delta){return delta>0?this.bottomRightCollection.getScrollTop()<this.bottomRightCollection.getMaxScrollTop():this.bottomRightCollection.getScrollTop()>0},_onWheelLeft:function(deltaX,deltaY){var self=this,scrollTop=this.bottomLeftCollection.getScrollTop(),scrollLeft=this.bottomLeftCollection.getScrollLeft();
scrollTop+=deltaY,scrollLeft+=deltaX,this.bottomLeftCollection.setScrollTop(scrollTop),this.bottomRightCollection.setScrollTop(scrollTop),this.topLeftCollection.setScrollLeft(scrollLeft),this.bottomLeftCollection.setScrollLeft(scrollLeft),self._populateScrollbar(),this.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)},_onWheelRight:function(deltaX,deltaY){var self=this,scrollTop=this.bottomRightCollection.getScrollTop(),scrollLeft=this.bottomRightCollection.getScrollLeft();scrollTop+=deltaY,scrollLeft+=deltaX,this.bottomLeftCollection.setScrollTop(scrollTop),this.bottomRightCollection.setScrollTop(scrollTop),this.topRightCollection.setScrollLeft(scrollLeft),this.bottomRightCollection.setScrollLeft(scrollLeft),self._populateScrollbar(),this.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)},_populateTable:function(){var self=this,o=this.options,regionSize=this.getRegionSize(),totalLeftColumnSize=0,totalRightColumnSize=0,totalColumnSize=0,summaryColumnSizeArray=[];BI.each(o.columnSize,function(i,size){o.isNeedFreeze===!0&&o.freezeCols.contains(i)?totalLeftColumnSize+=size:totalRightColumnSize+=size,totalColumnSize+=size,0===i?summaryColumnSizeArray[i]=size:summaryColumnSizeArray[i]=summaryColumnSizeArray[i-1]+size});var otlw=regionSize,otlh=this._getFreezeHeaderHeight(),otrw=this._width-regionSize,otrh=this._getFreezeHeaderHeight(),oblw=regionSize,oblh=this._height-otlh,obrw=this._width-regionSize,obrh=this._height-otrh;this.topLeft.setWidth(otlw),this.topLeft.setHeight(otlh),this.topRight.setWidth(otrw),this.topRight.setHeight(otrh),this.bottomLeft.setWidth(oblw),this.bottomLeft.setHeight(oblh),this.bottomRight.setWidth(obrw),this.bottomRight.setHeight(obrh),this.topLeftCollection.setWidth(otlw),this.topLeftCollection.setHeight(otlh),this.topRightCollection.setWidth(otrw),this.topRightCollection.setHeight(otrh),this.bottomLeftCollection.setWidth(oblw),this.bottomLeftCollection.setHeight(oblh),this.bottomRightCollection.setWidth(obrw),this.bottomRightCollection.setHeight(obrh);var items=this.contextLayout.attr("items");items[1].left=regionSize,items[2].top=this._getFreezeHeaderHeight(),items[3].left=regionSize,items[3].top=this._getFreezeHeaderHeight(),this.contextLayout.attr("items",items),this.contextLayout.resize();var leftHeader=[],rightHeader=[],leftItems=[],rightItems=[],run=function(positions,items,rendered){BI.each(positions,function(i,item){var cell={type:"bi.collection_table_cell",cell:items[item.row][item.col]};rendered.push(cell)})};run(this.topLeftItems,o.header,leftHeader),run(this.topRightItems,o.header,rightHeader),run(this.bottomLeftItems,this._getActualItems(),leftItems),run(this.bottomRightItems,this._getActualItems(),rightItems),this.topLeftCollection.populate(leftHeader),this.topRightCollection.populate(rightHeader),this.bottomLeftCollection.populate(leftItems),this.bottomRightCollection.populate(rightItems)}}),BI.shortcut("bi.quick_collection_table",BI.QuickCollectionTable),BI.GridTableCell=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.GridTableCell.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-grid-table-cell  bi-border-right bi-border-bottom",width:0,height:0,firstRowTopLine:!0,_rowIndex:0,_columnIndex:0,_left:0,_top:0,cell:{}})},_init:function(){BI.GridTableCell.superclass._init.apply(this,arguments);var o=this.options;this.cell=BI.createWidget(BI.extend({type:"bi.label"},o.cell,{cls:(o.cell.cls||"")+" grid-table-cell-wrapper",width:o.width-(0===o._columnIndex?1:0)-1,height:o.height-(o.firstRowTopLine&&0===o._rowIndex?1:0)-1})),BI.createWidget({type:"bi.absolute",cls:o.firstRowTopLine?"bi-grid-table-cell-top-line":"",element:this,items:[{el:this.cell,left:0,right:0,top:0,bottom:0}]})},setWidth:function(width){BI.GridTableCell.superclass.setWidth.apply(this,arguments);var o=this.options;this.cell.setWidth(o.width-(0===o._columnIndex?1:0)-1)},setHeight:function(height){BI.GridTableCell.superclass.setHeight.apply(this,arguments);var o=this.options;this.cell.setHeight(o.height-(0===o._rowIndex?1:0)-1)}}),BI.shortcut("bi.grid_table_cell",BI.GridTableCell),BI.GridTable=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.GridTable.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-grid-table",headerRowSize:25,rowSize:25,columnSize:[],isNeedFreeze:!1,freezeCols:[],header:[],items:[],regionColumnSize:[]})},render:function(){var self=this,o=this.options;this._width=0,this._height=0;var rowHeightGetter=function(){return o.rowSize},columnLeftWidthGetter=function(index){return o.columnSize[index]},columnRightWidthGetter=function(index){return o.columnSize[index+self._getFreezeColLength()]};this.topLeftGrid=BI.createWidget({type:"bi.grid_view",rowHeightGetter:rowHeightGetter,columnWidthGetter:columnLeftWidthGetter}),this.topLeftGrid.on(BI.GridView.EVENT_SCROLL,function(scroll){self.bottomLeftGrid.setScrollLeft(scroll.scrollLeft),self._populateScrollbar(),self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.topRightGrid=BI.createWidget({type:"bi.grid_view",rowHeightGetter:rowHeightGetter,columnWidthGetter:columnRightWidthGetter}),this.topRightGrid.on(BI.GridView.EVENT_SCROLL,function(scroll){self.bottomRightGrid.setScrollLeft(scroll.scrollLeft),self._populateScrollbar(),self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.bottomLeftGrid=BI.createWidget({type:"bi.grid_view",rowHeightGetter:rowHeightGetter,columnWidthGetter:columnLeftWidthGetter}),this.bottomLeftGrid.on(BI.GridView.EVENT_SCROLL,function(scroll){self.bottomRightGrid.setScrollTop(scroll.scrollTop),self.topLeftGrid.setScrollLeft(scroll.scrollLeft),self._populateScrollbar(),self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.bottomRightGrid=BI.createWidget({type:"bi.grid_view",rowHeightGetter:rowHeightGetter,columnWidthGetter:columnRightWidthGetter}),this.bottomRightGrid.on(BI.GridView.EVENT_SCROLL,function(scroll){self.bottomLeftGrid.setScrollTop(scroll.scrollTop),self.topRightGrid.setScrollLeft(scroll.scrollLeft),self._populateScrollbar(),self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.topLeft=BI.createWidget({type:"bi.vertical",scrollable:!1,scrolly:!1,items:[this.topLeftGrid]}),this.topRight=BI.createWidget({type:"bi.vertical",scrollable:!1,scrolly:!1,items:[this.topRightGrid]}),this.bottomLeft=BI.createWidget({type:"bi.vertical",scrollable:!1,scrolly:!1,items:[this.bottomLeftGrid]}),this.bottomRight=BI.createWidget({type:"bi.vertical",scrollable:!1,scrolly:!1,items:[this.bottomRightGrid]}),this.contextLayout=BI.createWidget({type:"bi.absolute",element:this,items:[{el:this.topLeft,top:0,left:0},{el:this.topRight,top:0},{el:this.bottomLeft,left:0},{el:this.bottomRight}]}),this.topScrollbar=BI.createWidget({type:"bi.grid_table_scrollbar",width:BI.GridTableScrollbar.SIZE}),this.topScrollbar.on(BI.GridTableScrollbar.EVENT_SCROLL,function(scrollTop){self.bottomLeftGrid.setScrollTop(scrollTop),self.bottomRightGrid.setScrollTop(scrollTop),self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.leftScrollbar=BI.createWidget({type:"bi.grid_table_horizontal_scrollbar",height:BI.GridTableScrollbar.SIZE}),this.leftScrollbar.on(BI.GridTableHorizontalScrollbar.EVENT_SCROLL,function(scrollLeft){self.topLeftGrid.setScrollLeft(scrollLeft),self.bottomLeftGrid.setScrollLeft(scrollLeft),self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.rightScrollbar=BI.createWidget({type:"bi.grid_table_horizontal_scrollbar",height:BI.GridTableScrollbar.SIZE}),this.rightScrollbar.on(BI.GridTableHorizontalScrollbar.EVENT_SCROLL,function(scrollLeft){self.topRightGrid.setScrollLeft(scrollLeft),self.bottomRightGrid.setScrollLeft(scrollLeft),self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.scrollBarLayout=BI.createWidget({type:"bi.absolute",element:this,items:[{el:this.topScrollbar,right:0,top:0},{el:this.leftScrollbar,left:0},{el:this.rightScrollbar}]}),this._width=o.width-BI.GridTableScrollbar.SIZE,this._height=o.height-BI.GridTableScrollbar.SIZE,this.header=this._getHeader(),this.items=this._getItems(),(o.header.length>0||o.items.length>0)&&this._populate()},_getFreezeColLength:function(){var o=this.options;return o.isNeedFreeze===!0?BI.clamp(o.freezeCols.length,0,o.columnSize.length):0},_getFreezeHeaderHeight:function(){var o=this.options;return o.header.length*o.headerRowSize>=this._height?0:o.header.length*o.headerRowSize},_getActualItems:function(){var o=this.options;return o.header.length*o.headerRowSize>=this._height?o.header.concat(o.items):o.items},_populateScrollbar:function(){var o=this.options,regionSize=this.getRegionSize(),totalLeftColumnSize=0,totalRightColumnSize=0,totalColumnSize=0,summaryColumnSizeArray=[];BI.each(o.columnSize,function(i,size){o.isNeedFreeze===!0&&o.freezeCols.contains(i)?totalLeftColumnSize+=size:totalRightColumnSize+=size,totalColumnSize+=size,0===i?summaryColumnSizeArray[i]=size:summaryColumnSizeArray[i]=summaryColumnSizeArray[i-1]+size}),this.topScrollbar.setContentSize(this._getActualItems().length*o.rowSize),this.topScrollbar.setSize(this._height-this._getFreezeHeaderHeight()),this.topScrollbar.setPosition(Math.min(this.bottomLeftGrid.getScrollTop(),this.bottomRightGrid.getScrollTop())),this.topScrollbar.populate(),this.leftScrollbar.setContentSize(totalLeftColumnSize),this.leftScrollbar.setSize(regionSize),this.leftScrollbar.setPosition(this.bottomLeftGrid.getScrollLeft()),this.leftScrollbar.populate(),this.rightScrollbar.setContentSize(totalRightColumnSize),this.rightScrollbar.setSize(this._width-regionSize),this.rightScrollbar.setPosition(this.bottomRightGrid.getScrollLeft()),this.rightScrollbar.populate();var items=this.scrollBarLayout.attr("items");items[0].top=this._getFreezeHeaderHeight(),items[1].top=this._height,items[2].top=this._height,items[2].left=regionSize,this.scrollBarLayout.attr("items",items),this.scrollBarLayout.resize()},_getHeader:function(){var o=this.options,freezeColLength=this._getFreezeColLength(),leftHeader=[],rightHeader=[];return BI.each(o.header,function(i,cols){leftHeader[i]=[],rightHeader[i]=[],BI.each(cols,function(j,col){var cell={type:"bi.grid_table_cell",cell:col};j<freezeColLength?leftHeader[i].push(cell):rightHeader[i].push(cell)})}),[leftHeader,rightHeader]},_getItems:function(){var o=this.options,freezeColLength=this._getFreezeColLength(),leftItems=[],rightItems=[];return BI.each(this._getActualItems(),function(i,cols){leftItems[i]=[],rightItems[i]=[],BI.each(cols,function(j,col){var cell={type:"bi.grid_table_cell",cell:col,firstRowTopLine:!1};j<freezeColLength?leftItems[i].push(cell):rightItems[i].push(cell)})}),[leftItems,rightItems]},_populateTable:function(){var self=this,o=this.options,regionSize=this.getRegionSize(),totalLeftColumnSize=0,totalRightColumnSize=0,totalColumnSize=0,summaryColumnSizeArray=[],freezeColLength=this._getFreezeColLength();BI.each(o.columnSize,function(i,size){o.isNeedFreeze===!0&&o.freezeCols.contains(i)?totalLeftColumnSize+=size:totalRightColumnSize+=size,totalColumnSize+=size,0===i?summaryColumnSizeArray[i]=size:summaryColumnSizeArray[i]=summaryColumnSizeArray[i-1]+size});var otlw=regionSize,otlh=this._getFreezeHeaderHeight(),otrw=this._width-regionSize,otrh=this._getFreezeHeaderHeight(),oblw=regionSize,oblh=this._height-otlh,obrw=this._width-regionSize,obrh=this._height-otrh,scrollBarSize=BI.DOM.getScrollWidth(),tlw=otlw+scrollBarSize,tlh=otlh+scrollBarSize,trw=otrw+scrollBarSize,trh=otrh+scrollBarSize,blw=oblw+scrollBarSize,blh=oblh+scrollBarSize,brw=obrw+scrollBarSize,brh=obrh+scrollBarSize,digest=function(el){el.element.css({overflow:"scroll",overflowX:"scroll",overflowY:"scroll"})};this.topLeft.setWidth(otlw),this.topLeft.setHeight(otlh),this.topRight.setWidth(otrw),this.topRight.setHeight(otrh),this.bottomLeft.setWidth(oblw),this.bottomLeft.setHeight(oblh),this.bottomRight.setWidth(obrw),this.bottomRight.setHeight(obrh),this.topLeftGrid.setWidth(tlw),this.topLeftGrid.setHeight(tlh),this.topRightGrid.setWidth(trw),this.topRightGrid.setHeight(trh),this.bottomLeftGrid.setWidth(blw),this.bottomLeftGrid.setHeight(blh),this.bottomRightGrid.setWidth(brw),this.bottomRightGrid.setHeight(brh),digest(this.topLeftGrid),digest(this.topRightGrid),digest(this.bottomLeftGrid),digest(this.bottomRightGrid),this.topLeftGrid.setEstimatedColumnSize(freezeColLength>0?totalLeftColumnSize/freezeColLength:0),this.topLeftGrid.setEstimatedRowSize(o.headerRowSize),this.topRightGrid.setEstimatedColumnSize(o.columnSize.length-freezeColLength>0?totalRightColumnSize/(o.columnSize.length-freezeColLength):0),this.topRightGrid.setEstimatedRowSize(o.headerRowSize),this.bottomLeftGrid.setEstimatedColumnSize(freezeColLength>0?totalLeftColumnSize/freezeColLength:0),this.bottomLeftGrid.setEstimatedRowSize(o.rowSize),this.bottomRightGrid.setEstimatedColumnSize(o.columnSize.length-freezeColLength>0?totalRightColumnSize/(o.columnSize.length-freezeColLength):0),this.bottomRightGrid.setEstimatedRowSize(o.rowSize),this.topLeftGrid.setColumnCount(freezeColLength),this.topRightGrid.setColumnCount(o.columnSize.length-freezeColLength),this.bottomLeftGrid.setColumnCount(freezeColLength),this.bottomRightGrid.setColumnCount(o.columnSize.length-freezeColLength);var items=this.contextLayout.attr("items");items[1].left=regionSize,items[2].top=this._getFreezeHeaderHeight(),items[3].left=regionSize,items[3].top=this._getFreezeHeaderHeight(),this.contextLayout.attr("items",items),this.contextLayout.resize();var headers=this._getHeader(),tableItems=this._getItems();this.topLeftGrid._populate(headers[0]),this.topRightGrid._populate(headers[1]),this.bottomLeftGrid._populate(tableItems[0]),this.bottomRightGrid._populate(tableItems[1])},_populate:function(){this._width<=0||this._height<=0||(this._populateTable(),this._populateScrollbar())},getRegionSize:function(){var o=this.options,regionSize=o.regionColumnSize[0]||0;return o.isNeedFreeze===!1||0===o.freezeCols.length?0:(regionSize||BI.each(o.freezeCols,function(i,col){regionSize+=o.columnSize[col]}),regionSize)},setVerticalScroll:function(scrollTop){this.bottomLeftGrid.setScrollTop(scrollTop),this.bottomRightGrid.setScrollTop(scrollTop),this._populateScrollbar()},setLeftHorizontalScroll:function(scrollLeft){this.topLeftGrid.setScrollLeft(scrollLeft),this.bottomLeftGrid.setScrollLeft(scrollLeft),this._populateScrollbar()},setRightHorizontalScroll:function(scrollLeft){this.topRightGrid.setScrollLeft(scrollLeft),this.bottomRightGrid.setScrollLeft(scrollLeft),this._populateScrollbar()},getVerticalScroll:function(){return this.bottomRightGrid.getScrollTop()},getLeftHorizontalScroll:function(){return this.bottomLeftGrid.getScrollLeft()},getRightHorizontalScroll:function(){return this.bottomRightGrid.getScrollLeft()},setWidth:function(width){BI.GridTable.superclass.setWidth.apply(this,arguments),this._width=this.options.width-BI.GridTableScrollbar.SIZE},setHeight:function(height){BI.GridTable.superclass.setHeight.apply(this,arguments),this._height=this.options.height-BI.GridTableScrollbar.SIZE},setColumnSize:function(columnSize){this.options.columnSize=columnSize,this._isNeedDigest=!0},setRegionColumnSize:function(regionColumnSize){this.options.regionColumnSize=regionColumnSize,this._isNeedDigest=!0},getColumnSize:function(){return this.options.columnSize},getRegionColumnSize:function(){return this.options.regionColumnSize},populate:function(items,header){var headerChanged=this.options.header!==header,itemsChanged=this.options.items!==items;header&&headerChanged&&(this.options.header=header),items&&itemsChanged&&(this.options.items=items),items&&itemsChanged&&(this.items=this._getItems(),this._restore()),header&&headerChanged&&(this.header=this._getHeader(),this._restore()),this._populate()},_restore:function(){this.topLeftGrid.restore(),this.topRightGrid.restore(),this.bottomLeftGrid.restore(),this.bottomRightGrid.restore()},restore:function(){this._restore()}}),BI.shortcut("bi.grid_table",BI.GridTable),BI.QuickGridTable=BI.inherit(BI.GridTable,{_defaultConfig:function(){return BI.extend(BI.QuickGridTable.superclass._defaultConfig.apply(this,arguments),{extraCls:"bi-quick-grid-table"})},render:function(){BI.QuickGridTable.superclass.render.apply(this,arguments);var self=this,o=this.options;this.topLeftGrid.setOverflowX(!1),this.topLeftGrid.setOverflowY(!1),this.topRightGrid.setOverflowX(!1),this.topRightGrid.setOverflowY(!1),this.bottomLeftGrid.setOverflowX(!1),this.bottomLeftGrid.setOverflowY(!1),this.bottomRightGrid.setOverflowX(!1),this.bottomRightGrid.setOverflowY(!1)},mounted:function(){var self=this;this._topLeftWheelHandler=new BI.WheelHandler(BI.bind(this._onWheelLeft,this),BI.bind(this._shouldHandleLeftX,this),BI.bind(this._shouldHandleY,this)),this._topRightWheelHandler=new BI.WheelHandler(BI.bind(this._onWheelRight,this),BI.bind(this._shouldHandleRightX,this),BI.bind(this._shouldHandleY,this)),this._bottomLeftWheelHandler=new BI.WheelHandler(BI.bind(this._onWheelLeft,this),BI.bind(this._shouldHandleLeftX,this),BI.bind(this._shouldHandleY,this)),this._bottomRightWheelHandler=new BI.WheelHandler(BI.bind(this._onWheelRight,this),BI.bind(this._shouldHandleRightX,this),BI.bind(this._shouldHandleY,this)),this.topLeftGrid.element.mousewheel(function(e){self._topLeftWheelHandler.onWheel(e.originalEvent)}),this.topRightGrid.element.mousewheel(function(e){self._topRightWheelHandler.onWheel(e.originalEvent)}),this.bottomLeftGrid.element.mousewheel(function(e){self._bottomLeftWheelHandler.onWheel(e.originalEvent)}),this.bottomRightGrid.element.mousewheel(function(e){self._bottomRightWheelHandler.onWheel(e.originalEvent)})},_shouldHandleLeftX:function(delta){return delta>0?this.bottomLeftGrid.getScrollLeft()<this.bottomLeftGrid.getMaxScrollLeft():this.bottomLeftGrid.getScrollLeft()>0},_shouldHandleRightX:function(delta){return delta>0?this.bottomRightGrid.getScrollLeft()<this.bottomRightGrid.getMaxScrollLeft():this.bottomRightGrid.getScrollLeft()>0},_shouldHandleY:function(delta){return delta>0?this.bottomRightGrid.getScrollTop()<this.bottomRightGrid.getMaxScrollTop():this.bottomRightGrid.getScrollTop()>0},_onWheelLeft:function(deltaX,deltaY){var self=this,scrollTop=this.bottomLeftGrid.getScrollTop(),scrollLeft=this.bottomLeftGrid.getScrollLeft();scrollTop+=deltaY,scrollLeft+=deltaX,this.bottomLeftGrid.setScrollTop(scrollTop),this.bottomRightGrid.setScrollTop(scrollTop),this.topLeftGrid.setScrollLeft(scrollLeft),this.bottomLeftGrid.setScrollLeft(scrollLeft),self._populateScrollbar(),this.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)},_onWheelRight:function(deltaX,deltaY){var self=this,scrollTop=this.bottomRightGrid.getScrollTop(),scrollLeft=this.bottomRightGrid.getScrollLeft();scrollTop+=deltaY,scrollLeft+=deltaX,this.bottomLeftGrid.setScrollTop(scrollTop),this.bottomRightGrid.setScrollTop(scrollTop),this.topRightGrid.setScrollLeft(scrollLeft),this.bottomRightGrid.setScrollLeft(scrollLeft),self._populateScrollbar(),this.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)},_populateTable:function(){var self=this,o=this.options,regionSize=this.getRegionSize(),totalLeftColumnSize=0,totalRightColumnSize=0,totalColumnSize=0,summaryColumnSizeArray=[],freezeColLength=this._getFreezeColLength();BI.each(o.columnSize,function(i,size){o.isNeedFreeze===!0&&o.freezeCols.contains(i)?totalLeftColumnSize+=size:totalRightColumnSize+=size,totalColumnSize+=size,0===i?summaryColumnSizeArray[i]=size:summaryColumnSizeArray[i]=summaryColumnSizeArray[i-1]+size});var otlw=regionSize,otlh=this._getFreezeHeaderHeight(),otrw=this._width-regionSize,otrh=this._getFreezeHeaderHeight(),oblw=regionSize,oblh=this._height-otlh,obrw=this._width-regionSize,obrh=this._height-otrh;this.topLeft.setWidth(otlw),this.topLeft.setHeight(otlh),this.topRight.setWidth(otrw),this.topRight.setHeight(otrh),this.bottomLeft.setWidth(oblw),this.bottomLeft.setHeight(oblh),this.bottomRight.setWidth(obrw),this.bottomRight.setHeight(obrh),this.topLeftGrid.setWidth(otlw),this.topLeftGrid.setHeight(otlh),this.topRightGrid.setWidth(otrw),this.topRightGrid.setHeight(otrh),this.bottomLeftGrid.setWidth(oblw),this.bottomLeftGrid.setHeight(oblh),this.bottomRightGrid.setWidth(obrw),this.bottomRightGrid.setHeight(obrh),this.topLeftGrid.setEstimatedColumnSize(freezeColLength>0?totalLeftColumnSize/freezeColLength:0),this.topLeftGrid.setEstimatedRowSize(o.headerRowSize),this.topRightGrid.setEstimatedColumnSize(o.columnSize.length-freezeColLength>0?totalRightColumnSize/(o.columnSize.length-freezeColLength):0),this.topRightGrid.setEstimatedRowSize(o.headerRowSize),this.bottomLeftGrid.setEstimatedColumnSize(freezeColLength>0?totalLeftColumnSize/freezeColLength:0),this.bottomLeftGrid.setEstimatedRowSize(o.rowSize),this.bottomRightGrid.setEstimatedColumnSize(o.columnSize.length-freezeColLength>0?totalRightColumnSize/(o.columnSize.length-freezeColLength):0),this.bottomRightGrid.setEstimatedRowSize(o.rowSize),this.topLeftGrid.setColumnCount(freezeColLength),this.topRightGrid.setColumnCount(o.columnSize.length-freezeColLength),this.bottomLeftGrid.setColumnCount(freezeColLength),this.bottomRightGrid.setColumnCount(o.columnSize.length-freezeColLength);var items=this.contextLayout.attr("items");items[1].left=regionSize,items[2].top=this._getFreezeHeaderHeight(),items[3].left=regionSize,items[3].top=this._getFreezeHeaderHeight(),this.contextLayout.attr("items",items),this.contextLayout.resize();var leftHeader=[],rightHeader=[],leftItems=[],rightItems=[];BI.each(o.header,function(i,cols){leftHeader[i]=[],rightHeader[i]=[],BI.each(cols,function(j,col){var cell={type:"bi.grid_table_cell",cell:col};j<freezeColLength?leftHeader[i].push(cell):rightHeader[i].push(cell)})}),BI.each(this._getActualItems(),function(i,cols){leftItems[i]=[],rightItems[i]=[],BI.each(cols,function(j,col){var cell={type:"bi.grid_table_cell",cell:col,firstRowTopLine:!1};j<freezeColLength?leftItems[i].push(cell):rightItems[i].push(cell)})}),this.topLeftGrid.populate(leftHeader),this.topRightGrid.populate(rightHeader),this.bottomLeftGrid.populate(leftItems),this.bottomRightGrid.populate(rightItems)}}),BI.shortcut("bi.quick_grid_table",BI.QuickGridTable),BI.GridTableScrollbar=BI.inherit(BI.Widget,{_const:{FACE_MARGIN:4,FACE_MARGIN_2:8,FACE_SIZE_MIN:30,KEYBOARD_SCROLL_AMOUNT:40},_defaultConfig:function(){return BI.extend(BI.GridTableScrollbar.superclass._defaultConfig.apply(this,arguments),{baseCls:"scrollbar-layout-main public-scrollbar-main",attributes:{tabIndex:0},contentSize:0,defaultPosition:0,isOpaque:!1,orientation:"vertical",position:0,size:0})},render:function(){var self=this,o=this.options;this.focused=!1,this.isDragging=!1,this.face=BI.createWidget({type:"bi.layout",cls:"scrollbar-layout-face public-scrollbar-face "+(this._isHorizontal()?"scrollbar-layout-face-horizontal":"scrollbar-layout-face-vertical")}),this.contextLayout=BI.createWidget({type:"bi.absolute",element:this,items:[{el:this.face,left:0,top:0}]})},mounted:function(){var self=this,o=this.options,onWheel="horizontal"===o.orientation?this._onWheelX:this._onWheelY;this._wheelHandler=new BI.WheelHandler(BI.bind(onWheel,this),BI.bind(this._shouldHandleX,this),BI.bind(this._shouldHandleY,this)),this._mouseMoveTracker=new BI.MouseMoveTracker(BI.bind(this._onMouseMove,this),BI.bind(this._onMouseMoveEnd,this),_global.document),this.element.on("mousedown",BI.bind(this._onMouseDown,this)),this.element.on("mousewheel",function(e){self._wheelHandler.onWheel(e.originalEvent)}),this.element.on("keydown",BI.bind(this._onKeyDown,this)),this.element.on("focus",function(){self.focused=!0,self._populate()}),this.element.on("blur",function(){self.focused=!1,self._populate()}),this._isHorizontal()?this.element.addClass("scrollbar-layout-main-horizontal"):this.element.addClass("scrollbar-layout-main-vertical"),this._populate()},_isHorizontal:function(){return"horizontal"===this.options.orientation},_getScale:function(){var o=this.options,scale=o.size/o.contentSize,faceSize=o.size*scale;return faceSize<this._const.FACE_SIZE_MIN&&(scale=(o.size-this._const.FACE_SIZE_MIN)/(o.contentSize-o.size)),scale},_getFaceSize:function(){var o=this.options,scale=o.size/o.contentSize,faceSize=o.size*scale;return faceSize<this._const.FACE_SIZE_MIN&&(faceSize=this._const.FACE_SIZE_MIN),faceSize},_shouldHandleX:function(delta){return"horizontal"===this.options.orientation&&this._shouldHandleChange(delta)},_shouldHandleY:function(delta){return"horizontal"!==this.options.orientation&&this._shouldHandleChange(delta)},_shouldHandleChange:function(delta){return this.options.position+delta!==this.options.position},_onWheelY:function(deltaX,deltaY){this._onWheel(deltaY)},_onWheelX:function(deltaX,deltaY){this._onWheel(deltaX)},_onWheel:function(delta){var maxPosition=this.options.contentSize-this.options.size;this.options.position+=delta,this.options.position<0?this.options.position=0:this.options.position>maxPosition&&(this.options.position=maxPosition),this._populate(),this.fireEvent(BI.GridTableScrollbar.EVENT_SCROLL,this.options.position)},_onMouseDown:function(e){if(e.target!==this.face.element[0]){var position=this._isHorizontal()?e.offsetX:e.offsetY;position/=this._getScale(),this.options.position=BI.clamp(position-.5*this._getFaceSize()/this._getScale(),0,this.options.contentSize-this.options.size),this._populate(),this.fireEvent(BI.GridTableScrollbar.EVENT_SCROLL,this.options.position)}else this._mouseMoveTracker.captureMouseMoves(e);try{this.element[0].focus()}catch(e){}},_onMouseMove:function(deltaX,deltaY){var delta=this._isHorizontal()?deltaX:deltaY;delta/=this._getScale(),this.options.position=BI.clamp(this.options.position+delta,0,this.options.contentSize-this.options.size),this.isDragging=this._mouseMoveTracker.isDragging(),this._populate(),this.fireEvent(BI.GridTableScrollbar.EVENT_SCROLL,this.options.position)},_onMouseMoveEnd:function(event){this._mouseMoveTracker.releaseMouseMoves(),this.isDragging===!0&&(this.isDragging=!1,this._populate())},_onKeyDown:function(event){var Keys={BACKSPACE:8,TAB:9,RETURN:13,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46,COMMA:188,PERIOD:190,A:65,Z:90,ZERO:48,NUMPAD_0:96,NUMPAD_9:105},keyCode=event.keyCode;if(keyCode!==Keys.TAB){var distance=40,direction=0;if(this._isHorizontal())switch(keyCode){case Keys.HOME:direction=-1,distance=this.options.contentSize;break;case Keys.LEFT:direction=-1;break;case Keys.RIGHT:direction=1;break;default:return}if(!this._isHorizontal())switch(keyCode){case Keys.SPACE:direction=event.shiftKey?-1:1;break;case Keys.HOME:direction=-1,distance=this.options.contentSize;break;case Keys.UP:direction=-1;break;case Keys.DOWN:direction=1;break;case Keys.PAGE_UP:direction=-1,distance=this.options.size;break;case Keys.PAGE_DOWN:direction=1,distance=this.options.size;break;default:return}this.options.position=BI.clamp(this.options.position+distance*direction,0,this.options.contentSize-this.options.size),event.preventDefault(),this._populate(),this.fireEvent(BI.GridTableScrollbar.EVENT_SCROLL,this.options.position)}},_populate:function(){var self=this,o=this.options;if(o.size<1||o.contentSize<=o.size)return void this.setVisible(!1);this.setVisible(!0);var size=o.size,isHorizontal=this._isHorizontal(),isActive=this.focused||this.isDragging,faceSize=this._getFaceSize(),isOpaque=o.isOpaque;this.element[isOpaque===!0?"addClass":"removeClass"]("public-scrollbar-main-opaque"),this.element[isActive===!0?"addClass":"removeClass"]("public-scrollbar-main-active"),this.face.element[isActive===!0?"addClass":"removeClass"]("public-scrollbar-face-active");var position=o.position*this._getScale()+this._const.FACE_MARGIN,items=this.contextLayout.attr("items");isHorizontal?(this.setWidth(size),this.face.setWidth(faceSize-this._const.FACE_MARGIN_2),items[0].left=position,items[0].top=0):(this.setHeight(size),this.face.setHeight(faceSize-this._const.FACE_MARGIN_2),items[0].left=0,items[0].top=position),this.contextLayout.attr("items",items),this.contextLayout.resize()},setContentSize:function(contentSize){this.options.contentSize=contentSize},setPosition:function(position){this.options.position=position},setSize:function(size){this.options.size=size},populate:function(){this._populate()}}),BI.GridTableScrollbar.SIZE=10,BI.GridTableScrollbar.EVENT_SCROLL="EVENT_SCROLL",BI.shortcut("bi.grid_table_scrollbar",BI.GridTableScrollbar),BI.GridTableHorizontalScrollbar=BI.inherit(BI.Widget,{_const:{FACE_MARGIN:4,FACE_MARGIN_2:8,FACE_SIZE_MIN:30,KEYBOARD_SCROLL_AMOUNT:40},_defaultConfig:function(){return BI.extend(BI.GridTableHorizontalScrollbar.superclass._defaultConfig.apply(this,arguments),{attributes:{tabIndex:0},contentSize:0,position:0,size:0})},_init:function(){BI.GridTableHorizontalScrollbar.superclass._init.apply(this,arguments);var self=this,o=this.options;this.scrollbar=BI.createWidget({type:"bi.grid_table_scrollbar",orientation:"horizontal",isOpaque:!0,position:o.position,contentSize:o.contentSize,size:o.size}),this.scrollbar.on(BI.GridTableScrollbar.EVENT_SCROLL,function(){self.fireEvent(BI.GridTableHorizontalScrollbar.EVENT_SCROLL,arguments)}),BI.createWidget({type:"bi.absolute",cls:"horizontal-scrollbar",element:this,width:o.size,height:BI.GridTableScrollbar.SIZE,items:[{el:{type:"bi.absolute",scrollable:!1,height:BI.GridTableScrollbar.SIZE,items:[{el:this.scrollbar,left:0,top:0}]},top:0,left:0,right:0}]})},setContentSize:function(contentSize){this.options.contentSize=contentSize,this.scrollbar.setContentSize(contentSize)},setPosition:function(position){this.options.position=position,this.scrollbar.setPosition(position)},setSize:function(size){this.setWidth(size),this.options.size=size,this.scrollbar.setSize(size)},populate:function(){this.scrollbar.populate();var o=this.options;return o.size<1||o.contentSize<=o.size?void this.setVisible(!1):void this.setVisible(!0)}}),BI.GridTableHorizontalScrollbar.EVENT_SCROLL="EVENT_SCROLL",BI.shortcut("bi.grid_table_horizontal_scrollbar",BI.GridTableHorizontalScrollbar),BI.TableHeaderCell=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.TableHeaderCell.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-table-header-cell",text:""})},_init:function(){BI.TableHeaderCell.superclass._init.apply(this,arguments);var o=this.options;BI.createWidget({type:"bi.label",element:this,textAlign:o.textAlign||"center",height:this.options.height,text:this.options.text,value:this.options.value,lgap:o.lgap,rgap:o.rgap,hgap:o.hgap||5})}}),BI.shortcut("bi.table_header_cell",BI.TableHeaderCell),BI.Table=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.Table.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-table",logic:{dynamic:!1},isNeedFreeze:!1,freezeCols:[],isNeedMerge:!1,mergeCols:[],mergeRule:function(row1,row2){return BI.isEqual(row1,row2)},columnSize:[],headerRowSize:25,footerRowSize:25,rowSize:25,regionColumnSize:!1,header:[],footer:!1,items:[]})},_calculateWidth:function(width){return width&&"0"!==width?(width=BI.parseFloat(width),width<0&&(width=0),width>1.01?width:100*width+"%"):""},_calculateHeight:function(height){return height?height:""},_isRightFreeze:function(){return BI.isNotEmptyArray(this.options.freezeCols)&&0!==BI.first(this.options.freezeCols)},_createTopLeft:function(){var o=this.options,isRight=this._isRightFreeze();this.topLeftColGroupTds={},this.topLeftBodyTds={},this.topLeftBodyItems={};var table=this._table(),colgroup=this._createColGroup(this.columnLeft,this.topLeftColGroupTds),body=this.topLeftBody=this._body();if(body.element.append(this._createHeaderCells(this.topLeftItems,this.columnLeft,this.mergeLeft,this.topLeftBodyTds,this.topLeftBodyItems)),BI.createWidget({type:"bi.adaptive",element:table,items:[colgroup,body]}),isRight){var w=0;BI.each(o.columnSize,function(i,col){o.freezeCols.contains(i)||(w+=col)}),BI.isNumeric(w)&&w>1&&(w=BI.parseFloat(w)+o.columnSize.length-o.freezeCols.length)}return this.topLeftContainer=BI.createWidget({type:"bi.adaptive",width:this._calculateWidth(w),items:[table]})},_createTopRight:function(){var o=this.options,isRight=this._isRightFreeze();this.topRightColGroupTds={},
this.topRightBodyTds={},this.topRightBodyItems={};var table=this._table(),colgroup=this._createColGroup(this.columnRight,this.topRightColGroupTds),body=this.topRightBody=this._body();if(body.element.append(this._createHeaderCells(this.topRightItems,this.columnRight,this.mergeRight,this.topRightBodyTds,this.topRightBodyItems,this.columnLeft.length)),BI.createWidget({type:"bi.adaptive",element:table,items:[colgroup,body]}),!isRight){var w=0;BI.each(o.columnSize,function(i,col){o.freezeCols.contains(i)||(w+=col)}),BI.isNumeric(w)&&(w=BI.parseFloat(w)+o.columnSize.length-o.freezeCols.length)}return this.topRightContainer=BI.createWidget({type:"bi.adaptive",width:w||void 0,items:[table]})},_createBottomLeft:function(){var o=this.options,isRight=this._isRightFreeze();this.bottomLeftColGroupTds={},this.bottomLeftBodyTds={},this.bottomLeftBodyItems={};var table=this._table(),colgroup=this._createColGroup(this.columnLeft,this.bottomLeftColGroupTds),body=this._createBottomLeftBody();if(BI.createWidget({type:"bi.adaptive",element:table,items:[colgroup,body]}),isRight){var w=0;BI.each(o.columnSize,function(i,col){o.freezeCols.contains(i)||(w+=col)}),BI.isNumeric(w)&&w>1&&(w=BI.parseFloat(w)+o.columnSize.length-o.freezeCols.length)}return this.bottomLeftContainer=BI.createWidget({type:"bi.adaptive",width:this._calculateWidth(w),items:[table]})},_createBottomLeftBody:function(){var body=this.bottomLeftBody=this._body();return body.element.append(this._createCells(this.bottomLeftItems,this.columnLeft,this.mergeLeft,this.bottomLeftBodyTds,this.bottomLeftBodyItems)),body},_createBottomRight:function(){var o=this.options,isRight=this._isRightFreeze();this.bottomRightColGroupTds={},this.bottomRightBodyTds={},this.bottomRightBodyItems={};var table=this._table(),colgroup=this._createColGroup(this.columnRight,this.bottomRightColGroupTds),body=this._createBottomRightBody();if(BI.createWidget({type:"bi.adaptive",element:table,items:[colgroup,body]}),!isRight){var w=0;BI.each(o.columnSize,function(i,col){o.freezeCols.contains(i)||(w+=col)}),BI.isNumeric(w)&&w>1&&(w=BI.parseFloat(w)+o.columnSize.length-o.freezeCols.length)}return this.bottomRightContainer=BI.createWidget({type:"bi.adaptive",width:this._calculateWidth(w),items:[table]})},_createBottomRightBody:function(){var body=this.bottomRightBody=this._body();return body.element.append(this._createCells(this.bottomRightItems,this.columnRight,this.mergeRight,this.bottomRightBodyTds,this.bottomRightBodyItems,this.columnLeft.length)),body},_createFreezeTable:function(){var self=this,o=this.options,isRight=this._isRightFreeze(),split=this._split(o.header);this.topLeftItems=split.left,this.topRightItems=split.right,split=this._split(o.items),this.bottomLeftItems=split.left,this.bottomRightItems=split.right,this.columnLeft=[],this.columnRight=[],BI.each(o.columnSize,function(i,size){o.freezeCols.contains(i)?self[isRight?"columnRight":"columnLeft"].push(size):self[isRight?"columnLeft":"columnRight"].push(size)}),this.mergeLeft=[],this.mergeRight=[],BI.each(o.mergeCols,function(i,col){o.freezeCols.contains(col)?self[isRight?"mergeRight":"mergeLeft"].push(col):self[isRight?"mergeLeft":"mergeRight"].push(col)});var topLeft=this._createTopLeft(),topRight=this._createTopRight(),bottomLeft=this._createBottomLeft(),bottomRight=this._createBottomRight();this.scrollTopLeft=BI.createWidget({type:"bi.adaptive",cls:"scroll-top-left",width:"100%",height:"100%",scrollable:!1,items:[topLeft]}),this.scrollTopRight=BI.createWidget({type:"bi.adaptive",cls:"scroll-top-right",width:"100%",height:"100%",scrollable:!1,items:[topRight]}),this.scrollBottomLeft=BI.createWidget({type:"bi.adaptive",cls:"scroll-bottom-left",width:"100%",height:"100%",scrollable:isRight||null,scrollx:!isRight,items:[bottomLeft]}),this.scrollBottomRight=BI.createWidget({type:"bi.adaptive",cls:"scroll-bottom-right",width:"100%",height:"100%",scrollable:!isRight||null,scrollx:isRight,items:[bottomRight]}),this.topLeft=BI.createWidget({type:"bi.adaptive",cls:"top-left",scrollable:!1,items:[this.scrollTopLeft]}),this.topRight=BI.createWidget({type:"bi.adaptive",cls:"top-right",scrollable:!1,items:[this.scrollTopRight]}),this.bottomLeft=BI.createWidget({type:"bi.adaptive",cls:"bottom-left",items:[this.scrollBottomLeft]}),this.bottomRight=BI.createWidget({type:"bi.adaptive",cls:"bottom-right",scrollable:!1,items:[this.scrollBottomRight]});var headerHeight=o.header.length*((o.headerRowSize||o.rowSize)+1)+1,leftWidth=BI.sum(o.freezeCols,function(i,col){return o.columnSize[col]>1?o.columnSize[col]+1:o.columnSize[col]});this._resize=function(){self.scrollBottomLeft.element.is(":visible")&&(self.scrollBottomLeft.element.css({"overflow-x":"auto"}),self.scrollBottomRight.element.css({"overflow-x":"auto"}),self.setColumnSize(o.columnSize),isRight?self.scrollBottomLeft.element.css({"overflow-y":"auto"}):self.scrollBottomRight.element.css({"overflow-y":"auto"}),(self.scrollBottomLeft.element.hasHorizonScroll()||self.scrollBottomRight.element.hasHorizonScroll())&&(self.scrollBottomLeft.element.css("overflow-x","scroll"),self.scrollBottomRight.element.css("overflow-x","scroll")),self.scrollBottomRight.element.hasVerticalScroll()?self.scrollTopRight.element.css("overflow-y","scroll"):self.scrollTopRight.element.css("overflow-y","hidden"),self.scrollBottomLeft.element.hasVerticalScroll()?self.scrollTopLeft.element.css("overflow-y","scroll"):self.scrollTopLeft.element.css("overflow-y","hidden"),self.scrollTopLeft.element[0].scrollLeft=self.scrollBottomLeft.element[0].scrollLeft,self.scrollTopRight.element[0].scrollLeft=self.scrollBottomRight.element[0].scrollLeft,self.scrollBottomLeft.element[0].scrollTop=self.scrollBottomRight.element[0].scrollTop)};var regionColumnSize=o.regionColumnSize;0===o.freezeCols.length?regionColumnSize=isRight?["fill",0]:[0,"fill"]:o.freezeCols.length>=o.columnSize.length&&(regionColumnSize=isRight?[0,"fill"]:["fill",0]),this.partitions=BI.createWidget(BI.extend({element:this},BI.LogicFactory.createLogic("table",BI.extend({},o.logic,{rows:2,columns:2,columnSize:regionColumnSize||(isRight?["fill",leftWidth]:[leftWidth,"fill"]),rowSize:[headerHeight,"fill"],items:[[{el:this.topLeft},{el:this.topRight}],[{el:this.bottomLeft},{el:this.bottomRight}]]})))),this._initFreezeScroll(),BI.ResizeDetector.addResizeListener(this,function(){self._resize(),self.fireEvent(BI.Table.EVENT_TABLE_RESIZE)})},mounted:function(){this._resize&&this._resize(),this.fireEvent(BI.Table.EVENT_TABLE_AFTER_INIT)},_initFreezeScroll:function(){function scroll(scrollElement,scrollTopElement,otherElement){scrollElement.scroll(function(e){otherElement.scrollTop(scrollElement.scrollTop()),scrollTopElement.scrollLeft(scrollElement.scrollLeft()),self.fireEvent(BI.Table.EVENT_TABLE_SCROLL)})}var self=this,o=this.options;scroll(this.scrollBottomRight.element,this.scrollTopRight.element,this.scrollBottomLeft.element)},resize:function(){this._resize&&this._resize()},_createCells:function(items,columnSize,mergeCols,TDs,Ws,start,rowSize){var self=this,o=this.options,preCol={},preRow={},preRW={},preCW={},map={};columnSize=columnSize||o.columnSize,mergeCols=mergeCols||o.mergeCols,TDs=TDs||{},Ws=Ws||{},start=start||0,rowSize||(rowSize=o.rowSize);var frag=document.createDocumentFragment();return BI.each(items,function(i,rows){function mergeRow(i,j){var height=(0|preCol[j].attr("height"))+rowSize+1;preCol[j].attr("height",height).css("height",height);var rowspan=(0|(preCol[j].attr("rowspan")||1))+1;preCol[j].attr("rowspan",rowspan),preCol[j].__mergeRows.pushDistinct(i),TDs[i][j]=preCol[j],Ws[i][j]=preCW[j]}function mergeCol(i,j){if(columnSize[j]){var width=0|preRow[i].attr("width");width>1.05&&columnSize[j]?(width=width+columnSize[j]+1,j===columnSize.length-1&&width--):width+=columnSize[j],width=self._calculateWidth(width),preRow[i].attr("width",width).css("width",width),preRW[i].element.width(width)}var colspan=(0|(preRow[i].attr("colspan")||1))+1;preRow[i].attr("colspan",colspan),preRow[i].__mergeCols.pushDistinct(j),TDs[i][j]=preRow[i],Ws[i][j]=preRW[i]}function createOneEl(r,c){var width=self._calculateWidth(columnSize[c]);width>1.05&&c===columnSize.length-1&&width--;var height=self._calculateHeight(rowSize),td=BI.$("<td>").attr("height",height).attr("width",width).css({width:width,height:height,position:"relative"}).addClass(0===(1&c)?"odd-col":"even-col").addClass(0===r?"first-row":"").addClass(0===c?"first-col":"").addClass(c===rows.length-1?"last-col":""),w=BI.createWidget(map[r][c],{type:"bi.table_cell",textAlign:"left",width:BI.isNumeric(width)?width:"",height:BI.isNumeric(height)?height:"",_row:r,_col:c+start});self.addWidget(w.getName(),w),w._mount(),w.element.css("position","relative"),td.append(w.element),tr.append(td),preCol[c]=td,preCol[c].__mergeRows=[r],preCW[c]=w,preRow[r]=td,preRow[r].__mergeCols=[c],preRW[r]=w,TDs[r][c]=td,Ws[r][c]=w}var tr=BI.$("<tr>").addClass(0===(1&i)?"odd":"even");BI.each(rows,function(j,row){if(map[i]||(map[i]={}),TDs[i]||(TDs[i]={}),Ws[i]||(Ws[i]={}),map[i][j]=row,o.isNeedMerge&&mergeCols.contains(j))if(0===i&&0===j)createOneEl(0,0);else if(0===j&&i>0){var isNeedMergeRow=o.mergeRule(map[i][j],map[i-1][j]);isNeedMergeRow===!0?(mergeRow(i,j),preRow[i]=preCol[j],preRW[i]=preCW[j]):createOneEl(i,j)}else if(0===i&&j>0){var isNeedMergeCol=o.mergeRule(map[i][j],map[i][j-1]);isNeedMergeCol===!0?(mergeCol(i,j),preCol[j]=preRow[i],preCW[j]=preRW[i]):createOneEl(i,j)}else{var isNeedMergeRow=o.mergeRule(map[i][j],map[i-1][j]),isNeedMergeCol=o.mergeRule(map[i][j],map[i][j-1]);if(isNeedMergeCol&&isNeedMergeRow)return;isNeedMergeCol&&mergeCol(i,j),isNeedMergeRow&&mergeRow(i,j),isNeedMergeCol||isNeedMergeRow||createOneEl(i,j)}else createOneEl(i,j)}),frag.appendChild(tr[0])}),frag},_createColGroupCells:function(columnSize,store){var self=this,o=this.options;columnSize=columnSize||o.columnSize,store=store||{};var frag=document.createDocumentFragment();return BI.each(columnSize,function(i,size){var width=self._calculateWidth(size),col=BI.$("<col>").attr("width",width).css("width",width);store[i]=col,frag.appendChild(col[0])}),frag},_createHeaderCells:function(items,columnSize,mergeCols,TDs,Ws,start){var self=this,o=this.options;start||(start=0);var frag=this._createCells(items,columnSize,BI.range(o.columnSize.length),TDs,Ws,start,o.headerRowSize||o.rowSize);return frag},_createFooterCells:function(items,columnSize,TDs,Ws){var o=this.options,frag=this._createCells(items,columnSize,[],TDs,Ws,0);return frag},_createColGroup:function(columnSize,store,widgets){var self=this,o=this.options;return this.colgroup=this._colgroup(),this.colgroup.element.append(this._createColGroupCells(columnSize,store,widgets)),this.colgroup},_createHeader:function(){var self=this,o=this.options;if(o.header!==!1)return this.header=this._header(),this.header.element.append(this._createHeaderCells(o.header,null,null,this.headerTds,this.headerItems)),this.header},_createFooter:function(columnSize,store,widgets){var self=this,o=this.options;if(o.footer!==!1)return this.footer=this._footer(),this.footer.element.append(this._createFooterCells(o.footer,null,this.footerTds,this.footerItems)),this.footer},_createBody:function(){var self=this,o=this.options;return this.body=this._body(),this.body.element.append(this._createCells(o.items,null,null,this.bodyTds,this.bodyItems)),this.body},_createNormalTable:function(){var self=this,o=this.options,table=this._table();this.colgroupTds={},this.headerTds={},this.footerTds={},this.bodyTds={},this.headerItems={},this.footerItems={},this.bodyItems={};var colgroup=this._createColGroup(null,this.colgroupTds),header=this._createHeader(),footer=this._createFooter(),body=this._createBody();BI.createWidget({type:"bi.adaptive",element:table,items:[colgroup,header,footer,body]});var w=BI.sum(this.options.columnSize)||void 0;w=this._calculateWidth(w),BI.isNumeric(w)&&w>1&&(w+=o.columnSize.length),this.tableContainer=BI.createWidget({type:"bi.adaptive",width:this._calculateWidth(w),items:[table]}),this.scrollBottomRight=BI.createWidget({type:"bi.adaptive",width:"100%",height:"100%",cls:"scroll-bottom-right",scrollable:!0,items:[this.tableContainer]}),BI.createWidget({type:"bi.adaptive",cls:"bottom-right",element:this,scrollable:!1,items:[this.scrollBottomRight]}),this._initNormalScroll(),BI.nextTick(function(){self.element.is(":visible")&&self.fireEvent(BI.Table.EVENT_TABLE_AFTER_INIT)})},_initNormalScroll:function(){var self=this;this.scrollBottomRight.element.scroll(function(e){self.fireEvent(BI.Table.EVENT_TABLE_SCROLL)})},_split:function(items){var o=this.options,left=[],right=[],isRight=this._isRightFreeze();return BI.each(items,function(i,rows){left.push([]),right.push([]),BI.each(rows,function(j,cell){o.freezeCols.contains(j)?(isRight?right:left)[i].push(cell):(isRight?left:right)[i].push(cell)})}),{left:left,right:right}},_table:function(){return BI.createWidget({type:"bi.layout",tagName:"table",cls:"table",attribute:{cellspacing:0,cellpadding:0}})},_header:function(){return BI.createWidget({type:"bi.layout",cls:"header",tagName:"thead"})},_footer:function(){return BI.createWidget({type:"bi.layout",cls:"footer",tagName:"tfoot"})},_body:function(){return BI.createWidget({type:"bi.layout",tagName:"tbody",cls:"body"})},_colgroup:function(){return BI.createWidget({type:"bi.layout",tagName:"colgroup"})},render:function(){(this.options.items.length>0||this.options.header.length>0)&&this.populate(this.options.items)},setColumnSize:function(columnSize){var self=this,o=this.options,isRight=this._isRightFreeze();if(o.columnSize=columnSize||[],o.isNeedFreeze){var columnLeft=[],columnRight=[];BI.each(o.columnSize,function(i,size){o.freezeCols.contains(i)?isRight?columnRight.push(size):columnLeft.push(size):isRight?columnLeft.push(size):columnRight.push(size)});var topleft=0,topright=1,bottomleft=2,bottomright=3,run=function(direction){var colgroupTds,bodyTds,bodyItems,sizes;switch(direction){case topleft:colgroupTds=self.topLeftColGroupTds,bodyTds=self.topLeftBodyTds,bodyItems=self.topLeftBodyItems,sizes=columnLeft;break;case topright:colgroupTds=self.topRightColGroupTds,bodyTds=self.topRightBodyTds,bodyItems=self.topRightBodyItems,sizes=columnRight;break;case bottomleft:colgroupTds=self.bottomLeftColGroupTds,bodyTds=self.bottomLeftBodyTds,bodyItems=self.bottomLeftBodyItems,sizes=columnLeft;break;case bottomright:colgroupTds=self.bottomRightColGroupTds,bodyTds=self.bottomRightBodyTds,bodyItems=self.bottomRightBodyItems,sizes=columnRight}BI.each(colgroupTds,function(i,colgroup){var width=0|colgroup.attr("width");if(""!==sizes[i]&&width!==sizes[i]){var w=self._calculateWidth(sizes[i]);colgroup.attr("width",w).css("width",w),BI.each(bodyTds,function(j,items){if(items[i])if(items[i].__mergeCols.length>1){var wid=0;BI.each(sizes,function(t,s){items[i].__mergeCols.contains(t)&&(wid+=s)}),wid=self._calculateWidth(wid),wid>1&&(wid+=items[i].__mergeCols.length-1),BI.isNumeric(wid)?i==BI.size(items)-1?items[i].attr("width",wid-1).css("width",wid-1):items[i].attr("width",wid).css("width",wid):items[i].attr("width","").css("width","")}else i==BI.size(items)-1?items[i].attr("width",w-1).css("width",w-1):items[i].attr("width",w).css("width",w)}),BI.each(bodyItems,function(j,items){if(items[i])if(bodyTds[j][i].__mergeCols.length>1){var wid=0;BI.each(sizes,function(t,s){bodyTds[j][i].__mergeCols.contains(t)&&(wid+=s)}),wid=self._calculateWidth(wid),wid>1&&(wid+=bodyTds[j][i].__mergeCols.length-1),BI.isNumeric(wid)?i==BI.size(items)-1?items[i].element.attr("width",wid-1).css("width",wid-1):items[i].element.attr("width",wid).css("width",wid):items[i].element.attr("width","").css("width","")}else BI.isNumeric(w)?i==BI.size(items)-1?items[i].element.attr("width",w-1).css("width",w-1):items[i].element.attr("width",w).css("width",w):items[i].element.attr("width","").css("width","")})}})};run(topleft),run(topright),run(bottomleft),run(bottomright);var lw=0,rw=0;this.columnLeft=[],this.columnRight=[],BI.each(o.columnSize,function(i,size){o.freezeCols.contains(i)?(lw+=size,self[isRight?"columnRight":"columnLeft"].push(size)):(rw+=size,self[isRight?"columnLeft":"columnRight"].push(size))}),lw=this._calculateWidth(lw),rw=this._calculateWidth(rw),BI.isNumeric(lw)&&(lw=BI.parseFloat(lw)+o.freezeCols.length),BI.isNumeric(rw)&&(rw=BI.parseFloat(rw)+o.columnSize.length-o.freezeCols.length),this.topLeftContainer.element.width(isRight?rw:lw),this.bottomLeftContainer.element.width(isRight?rw:lw),this.topRightContainer.element.width(isRight?lw:rw),this.bottomRightContainer.element.width(isRight?lw:rw),this.scrollTopLeft.element[0].scrollLeft=this.scrollBottomLeft.element[0].scrollLeft,this.scrollTopRight.element[0].scrollLeft=this.scrollBottomRight.element[0].scrollLeft}else{BI.each(this.colgroupTds,function(i,colgroup){var width=0|colgroup.attr("width");if(""!==o.columnSize[i]&&width!==o.columnSize[i]){var w=self._calculateWidth(o.columnSize[i]);colgroup.attr("width",w).css("width",w),BI.each(self.bodyTds,function(j,items){if(items[i])if(items[i].__mergeCols.length>1){var wid=0;BI.each(o.columnSize,function(t,s){items[i].__mergeCols.contains(t)&&(wid+=s)}),wid=self._calculateWidth(wid),wid>1&&(wid+=items[i].__mergeCols.length-1),BI.isNumeric(wid)?i==BI.size(items)-1?items[i].attr("width",w-1).css("width",w-1):items[i].attr("width",w).css("width",w):items[i].attr("width","").css("width","")}else i==BI.size(items)-1?items[i].attr("width",w-1).css("width",w-1):items[i].attr("width",w).css("width",w)}),BI.each(self.headerTds,function(j,items){if(items[i])if(items[i].__mergeCols.length>1){var wid=0;BI.each(o.columnSize,function(t,s){items[i].__mergeCols.contains(t)&&(wid+=s)}),wid=self._calculateWidth(wid),wid>1&&(wid+=items[i].__mergeCols.length-1),BI.isNumeric(wid)?i==BI.size(items)-1?items[i].attr("width",w-1).css("width",w-1):items[i].attr("width",w).css("width",w):items[i].attr("width","").css("width","")}else i==BI.size(items)-1?items[i].attr("width",w-1).css("width",w-1):items[i].attr("width",w).css("width",w)}),BI.each(self.footerTds,function(j,items){if(items[i])if(items[i].__mergeCols.length>1){var wid=0;BI.each(o.columnSize,function(t,s){items[i].__mergeCols.contains(t)&&(wid+=s)}),wid=self._calculateWidth(wid),wid>1&&(wid+=items[i].__mergeCols.length-1),BI.isNumeric(wid)?i==BI.size(items)-1?items[i].attr("width",w-1).css("width",w-1):items[i].attr("width",w).css("width",w):items[i].attr("width","").css("width","")}else i==BI.size(items)-1?items[i].attr("width",w-1).css("width",w-1):items[i].attr("width",w).css("width",w)}),BI.each(self.bodyItems,function(j,items){if(items[i])if(self.bodyTds[j][i].__mergeCols.length>1){var wid=0;BI.each(o.columnSize,function(t,s){self.bodyTds[j][i].__mergeCols.contains(t)&&(wid+=s)}),wid=self._calculateWidth(wid),wid>1&&(wid+=self.bodyTds[j][i].__mergeCols.length-1),BI.isNumeric(wid)?i==BI.size(items)-1?items[i].element.attr("width",wid-1).css("width",wid-1):items[i].element.attr("width",wid).css("width",wid):items[i].element.attr("width","").css("width","")}else BI.isNumeric(w)?i==BI.size(items)-1?items[i].element.attr("width",w-1).css("width",w-1):items[i].element.attr("width",w).css("width",w):items[i].element.attr("width","").css("width","")}),BI.each(self.headerItems,function(j,items){if(items[i])if(self.headerTds[j][i].__mergeCols.length>1){var wid=0;BI.each(o.columnSize,function(t,s){self.headerTds[j][i].__mergeCols.contains(t)&&(wid+=s)}),wid=self._calculateWidth(wid),wid>1&&(wid+=self.headerTds[j][i].__mergeCols.length-1),BI.isNumeric(wid)?i==BI.size(items)-1?items[i].element.attr("width",wid-1).css("width",wid-1):items[i].element.attr("width",wid).css("width",wid):items[i].element.attr("width","").css("width","")}else BI.isNumeric(w)?i==BI.size(items)-1?items[i].element.attr("width",w-1).css("width",w-1):items[i].element.attr("width",w).css("width",w):items[i].element.attr("width","").css("width","")}),BI.each(self.footerItems,function(j,items){if(items[i])if(self.footerTds[j][i].__mergeCols.length>1){var wid=0;BI.each(o.columnSize,function(t,s){self.footerTds[j][i].__mergeCols.contains(t)&&(wid+=s)}),wid=self._calculateWidth(wid),wid>1&&(wid+=self.footerTds[j][i].__mergeCols.length-1),BI.isNumeric(wid)?i==BI.size(items)-1?items[i].element.attr("width",wid-1).css("width",wid-1):items[i].element.attr("width",wid).css("width",wid):items[i].element.attr("width","").css("width","")}else BI.isNumeric(w)?i==BI.size(items)-1?items[i].element.attr("width",w-1).css("width",w-1):items[i].element.attr("width",w).css("width",w):items[i].element.attr("width","").css("width","")})}});var w=this._calculateWidth(BI.sum(o.columnSize));w>1.05&&(w+=o.columnSize.length),w>1.05&&this.tableContainer.element.width(w)}},getColumnSize:function(){return this.options.columnSize},getCalculateColumnSize:function(){var self=this,o=this.options,columnSize=[];if(o.isNeedFreeze===!0){if(BI.size(this.bottomLeftBodyTds)>0||BI.size(this.bottomRightBodyTds)>0)return BI.any(this.bottomLeftBodyTds,function(i,tds){if(!BI.any(tds,function(i,item){if(item.__mergeCols.length>1)return!0}))return BI.each(tds,function(i,item){var width=item.width()/item.__mergeCols.length;i==BI.size(tds)-1&&width++,columnSize.push(width)}),!0})||BI.each(this.bottomLeftBodyTds[0],function(i,item){var width=item.width()/item.__mergeCols.length;i==BI.size(self.bottomLeftBodyTds[0])-1&&width++,columnSize.push(width)}),BI.any(this.bottomRightBodyTds,function(i,tds){if(!BI.any(tds,function(i,item){if(item.__mergeCols.length>1)return!0}))return BI.each(tds,function(i,item){var width=item.width()/item.__mergeCols.length;i==BI.size(tds)-1&&width++,columnSize.push(width)}),!0})||BI.each(this.bottomRightBodyTds[0],function(i,item){var width=item.width()/item.__mergeCols.length;i==BI.size(self.bottomRightBodyTds[0])-1&&width++,columnSize.push(width)}),columnSize;BI.any(this.topLeftBodyTds,function(i,tds){if(!BI.any(tds,function(i,item){if(item.__mergeCols.length>1)return!0}))return BI.each(tds,function(i,item){var width=item.width()/item.__mergeCols.length;i==BI.size(tds)-1&&width++,columnSize.push(width)}),!0})||BI.each(this.topLeftBodyTds[BI.size(this.topLeftBodyTds)-1],function(i,item){var width=item.width()/item.__mergeCols.length;i==BI.size(self.topLeftBodyTds[BI.size(self.topLeftBodyTds)-1])-1&&width++,columnSize.push(width)}),BI.any(this.topRightBodyTds,function(i,tds){if(!BI.any(tds,function(i,item){if(item.__mergeCols.length>1)return!0}))return BI.each(tds,function(i,item){var width=item.width()/item.__mergeCols.length;i==BI.size(tds)-1&&width++,columnSize.push(width)}),!0})||BI.each(this.topRightBodyTds[BI.size(this.topRightBodyTds)-1],function(i,item){var width=item.width()/item.__mergeCols.length;i==BI.size(self.topRightBodyTds[BI.size(self.topRightBodyTds)-1])-1&&width++,columnSize.push(width)})}else BI.each(this.headerTds[BI.size(this.headerTds)-1],function(i,item){var width=item.width()/item.__mergeCols.length;i==BI.size(self.headerTds[BI.size(self.headerTds)-1])-1&&width++,columnSize.push(width)});return columnSize},setHeaderColumnSize:function(columnSize){var self=this,o=this.options,isRight=this._isRightFreeze();if(o.isNeedFreeze){var columnLeft=[],columnRight=[];BI.each(columnSize,function(i,size){o.freezeCols.contains(i)?isRight?columnRight.push(size):columnLeft.push(size):isRight?columnLeft.push(size):columnRight.push(size)});var topleft=0,topright=1,run=function(direction){var colgroupTds,bodyTds,bodyItems,sizes;switch(direction){case topleft:colgroupTds=self.topLeftColGroupTds,bodyTds=self.topLeftBodyTds,bodyItems=self.topLeftBodyItems,sizes=columnLeft;break;case topright:colgroupTds=self.topRightColGroupTds,bodyTds=self.topRightBodyTds,bodyItems=self.topRightBodyItems,sizes=columnRight}BI.each(colgroupTds,function(i,colgroup){var width=0|colgroup.attr("width");if(width!==sizes[i]){var w=self._calculateWidth(sizes[i]);colgroup.attr("width",w).css("width",w),BI.each(bodyTds,function(j,items){if(items[i])if(items[i].__mergeCols.length>1){var wid=0;BI.each(sizes,function(t,s){items[i].__mergeCols.contains(t)&&(wid+=s)}),wid=self._calculateWidth(wid),wid>1&&(wid+=items[i].__mergeCols.length-1),BI.isNumeric(wid)?i==BI.size(items)-1?items[i].attr("width",wid-1).css("width",wid-1):items[i].attr("width",wid).css("width",wid):items[i].attr("width","").css("width","")}else i==BI.size(items)-1?items[i].attr("width",w-1).css("width",w-1):items[i].attr("width",w).css("width",w)}),BI.each(bodyItems,function(j,items){if(items[i])if(bodyTds[j][i].__mergeCols.length>1){var wid=0;BI.each(sizes,function(t,s){bodyTds[j][i].__mergeCols.contains(t)&&(wid+=s)}),wid=self._calculateWidth(wid),wid>1&&(wid+=bodyTds[j][i].__mergeCols.length-1),BI.isNumeric(wid)?i==BI.size(items)-1?items[i].element.attr("width",wid-1).css("width",wid-1):items[i].element.attr("width",wid).css("width",wid):items[i].element.attr("width","").css("width","")}else BI.isNumeric(w)?i==BI.size(items)-1?items[i].element.attr("width",w-1).css("width",w-1):items[i].element.attr("width",w).css("width",w):items[i].element.attr("width","").css("width","")})}})};run(topleft),run(topright);var lw=0,rw=0;BI.each(columnSize,function(i,size){o.freezeCols.contains(i)?lw+=size:rw+=size}),lw=this._calculateWidth(lw),rw=this._calculateWidth(rw),BI.isNumeric(lw)&&(lw=BI.parseFloat(lw)+o.freezeCols.length),BI.isNumeric(rw)&&(rw=BI.parseFloat(rw)+columnSize.length-o.freezeCols.length),this.topLeftContainer.element.width(isRight?rw:lw),this.topRightContainer.element.width(isRight?lw:rw),this.scrollTopLeft.element[0].scrollLeft=this.scrollBottomLeft.element[0].scrollLeft,this.scrollTopRight.element[0].scrollLeft=this.scrollBottomRight.element[0].scrollLeft}else{BI.each(this.colgroupTds,function(i,colgroup){var width=0|colgroup.attr("width");if(width!==columnSize[i]){var w=self._calculateWidth(columnSize[i]);colgroup.attr("width",w).css("width",w),BI.each(self.headerTds,function(j,items){if(items[i])if(items[i].__mergeCols.length>1){var wid=0;BI.each(columnSize,function(t,s){items[i].__mergeCols.contains(t)&&(wid+=s)}),wid=self._calculateWidth(wid),wid>1&&(wid+=items[i].__mergeCols.length-1),BI.isNumeric(wid)?i==BI.size(items)-1?items[i].element.attr("width",wid-1).css("width",wid-1):items[i].element.attr("width",wid).css("width",wid):items[i].attr("width","").css("width","")}else i==BI.size(items)-1?items[i].attr("width",w-1).css("width",w-1):items[i].attr("width",w).css("width",w)}),BI.each(self.headerItems,function(j,items){if(items[i])if(self.headerTds[j][i].__mergeCols.length>1){var wid=0;BI.each(columnSize,function(t,s){self.headerTds[j][i].__mergeCols.contains(t)&&(wid+=s)}),wid=self._calculateWidth(wid),wid>1&&(wid+=self.headerTds[j][i].__mergeCols.length-1),BI.isNumeric(wid)?i==BI.size(items)-1?items[i].element.attr("width",wid-1).css("width",wid-1):items[i].element.attr("width",wid).css("width",wid):items[i].element.attr("width","").css("width","")}else BI.isNumeric(w)?i==BI.size(items)-1?items[i].element.attr("width",w-1).css("width",w-1):items[i].element.attr("width",w).css("width",w):items[i].element.attr("width","").css("width","")})}});var cW=this._calculateWidth(BI.sum(columnSize));cW>1.05&&(cW+=columnSize.length),this.tableContainer.element.width(cW)}},setRegionColumnSize:function(columnSize){var self=this,o=this.options;o.regionColumnSize=columnSize,0===o.freezeCols.length?o.isNeedFreeze?(this.partitions.attr("columnSize",this._isRightFreeze()?["fill",0]:[0,"fill"]),this.partitions.resize()):this.tableContainer.element.width(columnSize[0]):o.freezeCols.length>0&&o.freezeCols.length<o.columnSize.length?o.isNeedFreeze?(this.partitions.attr("columnSize",columnSize),this.partitions.resize()):this.tableContainer.element.width(columnSize[0]):o.isNeedFreeze?(this.partitions.attr("columnSize",this._isRightFreeze()?[0,"fill"]:["fill",0]),this.partitions.resize()):this.tableContainer.element.width(columnSize[0])},getRegionColumnSize:function(){return this.options.regionColumnSize},getCalculateRegionColumnSize:function(){var o=this.options;return o.isNeedFreeze?[this.scrollBottomLeft.element.width(),this.scrollBottomRight.element.width()]:[this.scrollBottomRight.element.width()]},getCalculateRegionRowSize:function(){var o=this.options;return o.isNeedFreeze?[this.scrollTopRight.element.height(),this.scrollBottomRight.element.height()]:[this.scrollBottomRight.element.height()]},getClientRegionColumnSize:function(){var o=this.options;return o.isNeedFreeze?[this.scrollBottomLeft.element[0].clientWidth,this.scrollBottomRight.element[0].clientWidth]:[this.scrollBottomRight.element[0].clientWidth]},getClientRegionRowSize:function(){var o=this.options;return o.isNeedFreeze?[this.scrollBottomLeft.element[0].clientHeight,this.scrollBottomRight.element[0].clientHeight]:[this.scrollBottomRight.element[0].clientHeight]},getScrollRegionColumnSize:function(){var o=this.options;return o.isNeedFreeze?[this.scrollBottomLeft.element[0].scrollWidth,this.scrollBottomRight.element[0].scrollWidth]:[this.scrollBottomRight.element[0].scrollWidth]},getScrollRegionRowSize:function(){var o=this.options;return o.isNeedFreeze?o.freezeCols.length<o.columnSize.length?[this.scrollTopRight.element[0].scrollHeight,this.scrollBottomRight.element[0].scrollHeight]:[this.scrollTopLeft.element[0].scrollHeight,this.scrollBottomLeft.element[0].scrollHeight]:[this.scrollBottomRight.element[0].scrollHeight]},hasVerticalScroll:function(){var o=this.options;return o.isNeedFreeze?this.scrollBottomRight.element.hasVerticalScroll()||this.scrollBottomLeft.element.hasVerticalScroll():this.scrollBottomRight.element.hasVerticalScroll()},setVerticalScroll:function(scrollTop){var o=this.options;o.isNeedFreeze?(this.scrollBottomRight.element[0].scrollTop!==scrollTop&&(this.scrollBottomRight.element[0].scrollTop=scrollTop),this.scrollBottomLeft.element[0].scrollTop!==scrollTop&&(this.scrollBottomLeft.element[0].scrollTop=scrollTop)):this.scrollBottomRight.element[0].scrollTop!==scrollTop&&(this.scrollBottomRight.element[0].scrollTop=scrollTop)},setLeftHorizontalScroll:function(scrollLeft){var o=this.options;o.isNeedFreeze?(this.scrollBottomLeft.element[0].scrollLeft!==scrollLeft&&(this.scrollBottomLeft.element[0].scrollLeft=scrollLeft),this.scrollTopLeft.element[0].scrollLeft!==scrollLeft&&(this.scrollTopLeft.element[0].scrollLeft=scrollLeft)):this.scrollBottomRight.element[0].scrollLeft!==scrollLeft&&(this.scrollBottomRight.element[0].scrollLeft=scrollLeft)},setRightHorizontalScroll:function(scrollLeft){var o=this.options;o.isNeedFreeze?(this.scrollBottomRight.element[0].scrollLeft!==scrollLeft&&(this.scrollBottomRight.element[0].scrollLeft=scrollLeft),this.scrollTopRight.element[0].scrollLeft!==scrollLeft&&(this.scrollTopRight.element[0].scrollLeft=scrollLeft)):this.scrollBottomRight.element[0].scrollLeft!==scrollLeft&&(this.scrollBottomRight.element[0].scrollLeft=scrollLeft)},getVerticalScroll:function(){var o=this.options;return o.isNeedFreeze?this.scrollBottomRight.element[0].scrollTop||this.scrollBottomLeft.element[0].scrollTop:this.scrollBottomRight.element[0].scrollTop},getLeftHorizontalScroll:function(){var o=this.options;return o.isNeedFreeze?this.scrollBottomLeft.element[0].scrollLeft:this.scrollBottomRight.element[0].scrollLeft},getRightHorizontalScroll:function(){var o=this.options;return o.isNeedFreeze?this.scrollBottomRight.element[0].scrollLeft:this.scrollBottomRight.element[0].scrollLeft},getColumns:function(){var o=this.options;return o.isNeedFreeze?{topLeft:this.topLeftBodyItems,topRight:this.topRightBodyItems,bottomLeft:this.bottomLeftBodyItems,bottomRight:this.bottomRightBodyItems}:{header:this.headerItems,body:this.bodyItems,footer:this.footerItems}},_empty:function(){this.scrollBottomRight&&this.scrollBottomRight.destroy(),BI.each(this.partitions&&this.partitions._children,function(name,child){child&&child.destroy()})},populate:function(items,header){this.options.items=items||[],header&&(this.options.header=header),this._empty(),this.options.isNeedFreeze?this._createFreezeTable():this._createNormalTable()}}),BI.Table.EVENT_TABLE_AFTER_INIT="EVENT_TABLE_AFTER_INIT",BI.Table.EVENT_TABLE_RESIZE="EVENT_TABLE_RESIZE",
BI.Table.EVENT_TABLE_SCROLL="EVENT_TABLE_SCROLL",BI.Table.EVENT_TABLE_BEFORE_COLUMN_RESIZE="EVENT_TABLE_BEFORE_COLUMN_RESIZE",BI.Table.EVENT_TABLE_COLUMN_RESIZE="EVENT_TABLE_COLUMN_RESIZE",BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE="EVENT_TABLE_AFTER_COLUMN_RESIZE",BI.Table.EVENT_TABLE_BEFORE_REGION_RESIZE="EVENT_TABLE_BEFORE_REGION_RESIZE",BI.Table.EVENT_TABLE_REGION_RESIZE="EVENT_TABLE_REGION_RESIZE",BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE="EVENT_TABLE_AFTER_REGION_RESIZE",BI.shortcut("bi.table_view",BI.Table),BI.ResizableTableCell=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.ResizableTableCell.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-resizable-table-cell",cell:{},minSize:30,maxSize:Number.MAX_VALUE,start:BI.emptyFn,resize:BI.emptyFn,stop:BI.emptyFn})},_init:function(){BI.ResizableTableCell.superclass._init.apply(this,arguments);var self=this,o=this.options;this.cell=BI.createWidget(BI.extend({type:"bi.label"},o.cell,{width:o.width,height:o.height})),this.handler=BI.createWidget({type:"bi.absolute",cls:"resizable-table-cell-resizer-container",width:6,items:[{el:{type:"bi.layout",cls:"resizable-table-cell-resizer-knob",width:4},right:0,top:0,bottom:0}]}),BI.createWidget({type:"bi.absolute",element:this,items:[{el:this.cell,left:0,right:0,top:0,bottom:0},{el:this.handler,right:0,top:0,bottom:0}]})},mounted:function(){function optimizeSize(s){var optSize=BI.clamp(s,o.minSize,o.maxSize||Number.MAX_VALUE);return optSize}var self=this,o=this.options,startDrag=!1,size=0,offset=0,defaultSize=o.width,mouseMoveTracker=new BI.MouseMoveTracker(function(deltaX,deltaY){mouseMoveTracker.isDragging()&&(startDrag=!0,offset+=deltaX,size=optimizeSize(defaultSize+offset),self.handler.element.addClass("dragging"),o.resize(size))},function(){startDrag===!0&&(size=optimizeSize(size),o.stop(size),size=0,offset=0,defaultSize=o.width,startDrag=!1),self.handler.element.removeClass("dragging"),self.handler.element.removeClass("suitable"),mouseMoveTracker.releaseMouseMoves()},_global.document);this.handler.element.on("mousedown",function(event){defaultSize=o.width,optimizeSize(defaultSize),mouseMoveTracker.captureMouseMoves(event)})},setWidth:function(width){BI.ResizableTableCell.superclass.setWidth.apply(this,arguments);var o=this.options;this.cell.setWidth(o.width)},setHeight:function(height){BI.ResizableTableCell.superclass.setHeight.apply(this,arguments);var o=this.options;this.cell.setHeight(o.height)}}),BI.shortcut("bi.resizable_table_cell",BI.ResizableTableCell),BI.ResizableTable=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.ResizableTable.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-resizable-table",el:{type:"bi.grid_table"},isNeedFreeze:!1,isNeedResize:!0,isResizeAdapt:!1,headerRowSize:25,rowSize:25,isNeedMerge:!0,mergeCols:[],mergeRule:BI.emptyFn,columnSize:[],minColumnSize:[],maxColumnSize:[],freezeCols:[],header:[],items:[],regionColumnSize:[]})},_init:function(){BI.ResizableTable.superclass._init.apply(this,arguments);var self=this,o=this.options;this.resizer=BI.createWidget({type:"bi.layout",cls:"resizable-table-resizer",invisible:!0,width:2}),this.regionResizerHandler=this._createResizerHandler(),this.table=BI.createWidget(o.el,{type:"bi.grid_table",element:this,width:o.width,height:o.height,headerRowSize:o.headerRowSize,rowSize:o.rowSize,columnSize:o.columnSize,isNeedFreeze:o.isNeedFreeze,freezeCols:o.freezeCols,isNeedMerge:o.isNeedMerge,mergeCols:o.mergeCols,mergeRule:BI.bind(this._mergeRule,this),header:this._formatHeader(o.header),items:o.items,regionColumnSize:o.regionColumnSize}),this.table.on(BI.Table.EVENT_TABLE_SCROLL,function(){self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),BI.createWidget({type:"bi.absolute",element:this,items:[{el:this.regionResizerHandler,left:0,top:0,bottom:0},{el:this.resizer,left:0,top:0}]}),this._populate()},mounted:function(){var self=this,o=this.options,size=0,offset=0,defaultSize=0,start=!1,mouseMoveTracker=new BI.MouseMoveTracker(function(deltaX,deltaY){mouseMoveTracker.isDragging()&&(start=!0,offset+=deltaX,size=BI.clamp(defaultSize+offset,30,o.width-40),self.regionResizerHandler.element.addClass("dragging"),self._setRegionResizerHandlerPosition(size-3,0))},function(){if(start===!0){if(o.regionColumnSize[0]=BI.clamp(size,30,o.width-40),self.table.setRegionColumnSize(o.regionColumnSize),o.isResizeAdapt===!0){var freezeColumnSize=self._getFreezeColumnSize();o.columnSize[self._getFreezeColLength()-1]+=o.regionColumnSize[0]-freezeColumnSize,self.table.setColumnSize(o.columnSize)}self._populate(),self.regionResizerHandler.element.removeClass("dragging"),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE),start=!1}mouseMoveTracker.releaseMouseMoves()},_global.document);this.regionResizerHandler.element.on("mousedown",function(event){defaultSize=size=self._getRegionSize(),offset=0,self._setResizerPosition(0,0),mouseMoveTracker.captureMouseMoves(event)})},_mergeRule:function(row1,row2){var o=this.options;return"bi.resizable_table_cell"===row1.type&&(row1=row1.cell),"bi.resizable_table_cell"===row2.type&&(row2=row2.cell),o.mergeRule(row1,row2)},_createResizerHandler:function(){return BI.createWidget({type:"bi.absolute",cls:"resizable-table-region-resizer",invisible:!0,width:6,items:[{el:{type:"bi.layout",width:2,cls:"resizable-table-region-resizer-knob"},left:2,top:0,bottom:0}]})},_setResizerPosition:function(left,top){this.resizer.element.css({left:left+"px",top:top+"px"})},_setRegionResizerHandlerPosition:function(left,top){this.regionResizerHandler.element.css({left:left+"px",top:top+"px"})},_getRegionSize:function(){var o=this.options,regionSize=o.regionColumnSize[0]||0;return o.isNeedFreeze===!1||0===o.freezeCols.length?0:(regionSize||BI.each(o.freezeCols,function(i,col){regionSize+=o.columnSize[col]}),regionSize)},_getRegionRowSize:function(){var o=this.options;return[o.header.length*o.headerRowSize,Math.min(o.height-o.header.length*o.headerRowSize,o.items.length*o.rowSize)]},_getFreezeColLength:function(){var o=this.options;return o.isNeedFreeze===!0?BI.clamp(o.freezeCols.length,0,o.columnSize.length):0},_getFreezeColumnSize:function(){for(var columnSize=this.options.columnSize,sum=0,i=0,len=this._getFreezeColLength();i<len;i++)sum+=columnSize[i];return sum},_getResizerLeft:function(j){for(var left=0,columnSize=this.options.columnSize,freezeColLength=this._getFreezeColLength(),i=j>=freezeColLength?freezeColLength:0;i<j;i++)left+=columnSize[i]||0;return j>=freezeColLength?(left+=this.table.getRegionSize(),left-=this.table.getRightHorizontalScroll()):left-=this.table.getLeftHorizontalScroll(),left},_formatHeader:function(header){var self=this,o=this.options,result=[],resize=function(j,size){self.resizer.setVisible(!0);var height=o.headerRowSize+self._getRegionRowSize()[1];self.resizer.setHeight(height),self._setResizerPosition(self._getResizerLeft(j)+size,(o.header.length-1)*o.headerRowSize)},stop=function(j,size){self.resizer.setVisible(!1);var columnSize=o.columnSize.slice();columnSize[j]=size,o.columnSize=columnSize,self.table.setColumnSize(columnSize),self._populate(),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE)};return BI.each(header,function(i,cols){i===header.length-1?(result[i]=[],BI.each(cols,function(j,col){if(j===self._getFreezeColLength()-1)result[i][j]=col;else if(result[i][j]={type:"bi.resizable_table_cell",cell:col,suitableSize:o.minColumnSize[j],maxSize:o.maxColumnSize[j],resize:BI.bind(resize,null,j),stop:BI.bind(stop,null,j)},o.isNeedMerge)for(var r=i;r>0&&self._mergeRule(result[r][j],result[r-1][j]);)result[r-1][j]={type:"bi.resizable_table_cell",cell:result[r-1][j],suitableSize:o.minColumnSize[j],maxSize:o.maxColumnSize[j],resize:BI.bind(resize,null,j),stop:BI.bind(stop,null,j)},r--})):result.push(cols)}),result},_populate:function(){var o=this.options,regionSize=this._getRegionSize();regionSize>0?(this.regionResizerHandler.setVisible(!0),this._setRegionResizerHandlerPosition(regionSize-3,0)):this.regionResizerHandler.setVisible(!1)},setWidth:function(width){BI.ResizableTable.superclass.setWidth.apply(this,arguments),this.table.setWidth(width)},setHeight:function(height){BI.ResizableTable.superclass.setHeight.apply(this,arguments),this.table.setHeight(height)},setVerticalScroll:function(scrollTop){this.table.setVerticalScroll(scrollTop)},setLeftHorizontalScroll:function(scrollLeft){this.table.setLeftHorizontalScroll(scrollLeft)},setRightHorizontalScroll:function(scrollLeft){this.table.setRightHorizontalScroll(scrollLeft)},setColumnSize:function(columnSize){this.options.columnSize=columnSize,this.table.setColumnSize(columnSize)},getColumnSize:function(){return this.table.getColumnSize()},setRegionColumnSize:function(columnSize){this.options.regionColumnSize=columnSize,this.table.setRegionColumnSize(columnSize)},getRegionColumnSize:function(){return this.table.getRegionColumnSize()},getVerticalScroll:function(){return this.table.getVerticalScroll()},getLeftHorizontalScroll:function(){return this.table.getLeftHorizontalScroll()},getRightHorizontalScroll:function(){return this.table.getRightHorizontalScroll()},attr:function(){BI.ResizableTable.superclass.attr.apply(this,arguments),this.table.attr.apply(this.table,arguments)},restore:function(){this.table.restore()},populate:function(items,header){items&&(this.options.items=items),header&&(this.options.header=header,this.options.isNeedResize&&(header=this._formatHeader(header))),this.table.populate(items,header),this._populate()}}),BI.shortcut("bi.resizable_table",BI.ResizableTable),BI.AdaptiveTable=BI.inherit(BI.Widget,{_const:{perColumnSize:100},_defaultConfig:function(){return BI.extend(BI.AdaptiveTable.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-adaptive-table",el:{type:"bi.resizable_table"},isNeedResize:!0,isNeedFreeze:!1,freezeCols:[],isNeedMerge:!1,mergeCols:[],mergeRule:BI.emptyFn,columnSize:[],minColumnSize:[],maxColumnSize:[],headerRowSize:25,rowSize:25,regionColumnSize:[],header:[],items:[],crossHeader:[],crossItems:[]})},_init:function(){BI.AdaptiveTable.superclass._init.apply(this,arguments);var self=this,o=this.options,data=this._digest();this.table=BI.createWidget(o.el,{type:"bi.resizable_table",element:this,width:o.width,height:o.height,isNeedResize:o.isNeedResize,isResizeAdapt:!1,isNeedFreeze:o.isNeedFreeze,freezeCols:data.freezeCols,isNeedMerge:o.isNeedMerge,mergeCols:o.mergeCols,mergeRule:o.mergeRule,columnSize:data.columnSize,headerRowSize:o.headerRowSize,rowSize:o.rowSize,regionColumnSize:data.regionColumnSize,header:o.header,items:o.items,crossHeader:o.crossHeader,crossItems:o.crossItems}),this.table.on(BI.Table.EVENT_TABLE_SCROLL,function(){self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.table.on(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE,function(){o.regionColumnSize=this.getRegionColumnSize(),self._populate(),self.table.populate(),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE,arguments)}),this.table.on(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE,function(){o.columnSize=this.getColumnSize(),self._populate(),self.table.populate(),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE,arguments)})},_getFreezeColLength:function(){var o=this.options;return o.isNeedFreeze===!0?o.freezeCols.length===o.columnSize.length?0:BI.clamp(o.freezeCols.length,0,o.columnSize.length):0},_digest:function(){var o=this.options,columnSize=o.columnSize.slice(),regionColumnSize=o.regionColumnSize.slice(),freezeCols=o.freezeCols.slice(),regionSize=o.regionColumnSize[0],freezeColLength=this._getFreezeColLength();if(!regionSize||regionSize>o.width-10||regionSize<10){var rs=BI.sum(columnSize,function(i,size){return i<freezeColLength?size:0});regionSize=BI.clamp(rs,.2*o.width,.8*o.width)}0===freezeColLength&&(regionSize=0),freezeCols.length>=columnSize.length&&(freezeCols=[]),BI.isNumber(columnSize[0])||(columnSize=o.minColumnSize.slice());var summaryFreezeColumnSize=0,summaryColumnSize=0;BI.each(columnSize,function(i,size){i<freezeColLength&&(summaryFreezeColumnSize+=size),summaryColumnSize+=size}),freezeColLength>0&&(columnSize[freezeColLength-1]=BI.clamp(regionSize-(summaryFreezeColumnSize-columnSize[freezeColLength-1]),o.minColumnSize[freezeColLength-1]||10,o.maxColumnSize[freezeColLength-1]||Number.MAX_VALUE));var actualSize=summaryColumnSize;return o.isNeedFreeze&&freezeColLength>0&&(actualSize=summaryColumnSize-summaryFreezeColumnSize+regionSize),columnSize.length>0&&actualSize<this.getWidth()&&(columnSize[columnSize.length-1]=o.width-BI.GridTableScrollbar.SIZE-regionSize-(summaryColumnSize-summaryFreezeColumnSize-columnSize[columnSize.length-1])),regionColumnSize[0]=regionSize,{freezeCols:freezeCols,columnSize:columnSize,regionColumnSize:regionColumnSize}},_populate:function(){var o=this.options,data=this._digest();o.regionColumnSize=data.regionColumnSize,o.columnSize=data.columnSize,this.table.setColumnSize(data.columnSize),this.table.setRegionColumnSize(data.regionColumnSize),this.table.attr("freezeCols",data.freezeCols)},setWidth:function(width){BI.AdaptiveTable.superclass.setWidth.apply(this,arguments),this.table.setWidth(width)},setHeight:function(height){BI.AdaptiveTable.superclass.setHeight.apply(this,arguments),this.table.setHeight(height)},setColumnSize:function(columnSize){this.options.columnSize=columnSize},getColumnSize:function(){return this.table.getColumnSize()},setRegionColumnSize:function(regionColumnSize){this.options.regionColumnSize=regionColumnSize},getRegionColumnSize:function(){return this.table.getRegionColumnSize()},setVerticalScroll:function(scrollTop){this.table.setVerticalScroll(scrollTop)},setLeftHorizontalScroll:function(scrollLeft){this.table.setLeftHorizontalScroll(scrollLeft)},setRightHorizontalScroll:function(scrollLeft){this.table.setRightHorizontalScroll(scrollLeft)},getVerticalScroll:function(){return this.table.getVerticalScroll()},getLeftHorizontalScroll:function(){return this.table.getLeftHorizontalScroll()},getRightHorizontalScroll:function(){return this.table.getRightHorizontalScroll()},attr:function(key,value){var v=BI.AdaptiveTable.superclass.attr.apply(this,arguments);return"freezeCols"===key?v:this.table.attr.apply(this.table,arguments)},restore:function(){this.table.restore()},populate:function(items){var self=this,o=this.options;this._populate(),this.table.populate.apply(this.table,arguments)},destroy:function(){this.table.destroy(),BI.AdaptiveTable.superclass.destroy.apply(this,arguments)}}),BI.shortcut("bi.adaptive_table",BI.AdaptiveTable),BI.DynamicSummaryLayerTreeTable=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.DynamicSummaryLayerTreeTable.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-dynamic-summary-layer-tree-table",el:{type:"bi.resizable_table"},isNeedResize:!0,isResizeAdapt:!0,isNeedFreeze:!1,freezeCols:[],isNeedMerge:!0,mergeCols:[],mergeRule:BI.emptyFn,columnSize:[],minColumnSize:[],maxColumnSize:[],headerRowSize:25,footerRowSize:25,rowSize:25,regionColumnSize:[],rowHeaderCreator:null,headerCellStyleGetter:BI.emptyFn,summaryCellStyleGetter:BI.emptyFn,sequenceCellStyleGetter:BI.emptyFn,header:[],footer:!1,items:[],crossHeader:[],crossItems:[],summaryText:BI.i18nText("BI-Summary_Values"),rowPosition:"bottom",colPosition:"right"})},_getVDeep:function(){return this.options.crossHeader.length},_getHDeep:function(){var o=this.options;return Math.max(o.mergeCols.length,o.freezeCols.length,BI.TableTree.maxDeep(o.items)-1)},_createHeader:function(vDeep){var self=this,o=this.options,header=o.header||[],crossHeader=o.crossHeader||[],items=BI.isEmpty(header)?BI.TableTree.formatCrossItems4Special(o.crossItems,vDeep,o.headerCellStyleGetter,{sumPosition:"right"===this.options.colPosition,summaryText:o.summaryText}):BI.TableTree.formatCrossItems(o.crossItems,vDeep,o.headerCellStyleGetter,{sumPosition:"right"===this.options.colPosition,summaryText:o.summaryText}),result=[];BI.each(items,function(row,node){var c=[crossHeader[row]];result.push(c.concat(node||[]))});var rowHeaderCreator=BI.isFunction(o.rowHeaderCreator)?o.rowHeaderCreator():o.rowHeaderCreator;if(header&&header.length>0){var newHeader=this._formatColumns(header),deep=this._getHDeep();deep<=0?newHeader.unshift(rowHeaderCreator||{type:"bi.table_style_cell",text:BI.i18nText("BI-Row_Header"),styleGetter:o.headerCellStyleGetter}):newHeader[0]=rowHeaderCreator||{type:"bi.table_style_cell",text:BI.i18nText("BI-Row_Header"),styleGetter:o.headerCellStyleGetter},result.push(newHeader)}return result},_formatItems:function(nodes,header,deep){function track(node,layer){node.type||(node.type="bi.layer_tree_table_cell"),node.layer=layer;var next=[node];next=next.concat(node.values||[]),next.length>0&&result.push(next),BI.isNotEmptyArray(node.children)&&BI.each(node.children,function(index,child){track(child,layer+1)})}var self=this,o=this.options,result=[];return BI.each(nodes,function(i,node){if(BI.each(node.children,function(j,c){track(c,0)}),BI.isArray(node.values)){var next=[{type:"bi.table_style_cell",text:o.summaryText,title:o.summaryText,styleGetter:function(){return o.summaryCellStyleGetter(!0)}}].concat(node.values);"bottom"===o.rowPosition?result.push(next):result.unshift(next)}}),BI.DynamicSummaryTreeTable.formatSummaryItems(result,header,o.crossItems,1)},_formatColumns:function(columns,deep){return BI.isNotEmptyArray(columns)?(deep=deep||this._getHDeep(),columns.slice(Math.max(0,deep-1))):columns},_formatFreezeCols:function(){return this.options.freezeCols.length>0?[0]:[]},_formatColumnSize:function(columnSize,deep){if(columnSize.length<=0)return[];var result=[0];return deep=deep||this._getHDeep(),BI.each(columnSize,function(i,size){return i<deep?void(result[0]+=size):void result.push(size)}),result},_recomputeColumnSize:function(){var o=this.options;o.regionColumnSize=this.table.getRegionColumnSize();var columnSize=this.table.getColumnSize().slice();if(o.freezeCols.length>1)for(var i=0;i<o.freezeCols.length-1;i++)columnSize.splice(1,0,0);o.columnSize=columnSize},_digest:function(){var o=this.options,deep=this._getHDeep(),vDeep=this._getVDeep(),header=this._createHeader(vDeep),data=this._formatItems(o.items,header,deep),columnSize=o.columnSize.slice(),minColumnSize=o.minColumnSize.slice(),maxColumnSize=o.maxColumnSize.slice();return BI.removeAt(columnSize,data.deletedCols),BI.removeAt(minColumnSize,data.deletedCols),BI.removeAt(maxColumnSize,data.deletedCols),{header:data.header,items:data.items,columnSize:this._formatColumnSize(columnSize,deep),minColumnSize:this._formatColumns(minColumnSize,deep),maxColumnSize:this._formatColumns(maxColumnSize,deep),freezeCols:this._formatFreezeCols()}},_init:function(){BI.DynamicSummaryLayerTreeTable.superclass._init.apply(this,arguments);var self=this,o=this.options,data=this._digest();this.table=BI.createWidget(o.el,{type:"bi.resizable_table",element:this,width:o.width,height:o.height,isNeedResize:o.isNeedResize,isResizeAdapt:o.isResizeAdapt,isNeedFreeze:o.isNeedFreeze,freezeCols:data.freezeCols,isNeedMerge:o.isNeedMerge,mergeCols:[],mergeRule:o.mergeRule,columnSize:data.columnSize,minColumnSize:data.minColumnSize,maxColumnSize:data.maxColumnSize,headerRowSize:o.headerRowSize,rowSize:o.rowSize,regionColumnSize:o.regionColumnSize,header:data.header,items:data.items}),this.table.on(BI.Table.EVENT_TABLE_SCROLL,function(){self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.table.on(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE,function(){self._recomputeColumnSize(),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE,arguments)}),this.table.on(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE,function(){self._recomputeColumnSize(),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE,arguments)})},setWidth:function(width){BI.DynamicSummaryLayerTreeTable.superclass.setWidth.apply(this,arguments),this.table.setWidth(width)},setHeight:function(height){BI.DynamicSummaryLayerTreeTable.superclass.setHeight.apply(this,arguments),this.table.setHeight(height)},setColumnSize:function(columnSize){this.options.columnSize=columnSize},getColumnSize:function(){return this.options.columnSize},setRegionColumnSize:function(columnSize){this.options.regionColumnSize=columnSize,this.table.setRegionColumnSize(columnSize)},getRegionColumnSize:function(){return this.table.getRegionColumnSize()},setVerticalScroll:function(scrollTop){this.table.setVerticalScroll(scrollTop)},setLeftHorizontalScroll:function(scrollLeft){this.table.setLeftHorizontalScroll(scrollLeft)},setRightHorizontalScroll:function(scrollLeft){this.table.setRightHorizontalScroll(scrollLeft)},getVerticalScroll:function(){return this.table.getVerticalScroll()},getLeftHorizontalScroll:function(){return this.table.getLeftHorizontalScroll()},getRightHorizontalScroll:function(){return this.table.getRightHorizontalScroll()},attr:function(key,value){var self=this;if(BI.isObject(key))return void BI.each(key,function(k,v){self.attr(k,v)});switch(BI.DynamicSummaryLayerTreeTable.superclass.attr.apply(this,arguments),key){case"columnSize":case"minColumnSize":case"maxColumnSize":case"freezeCols":case"mergeCols":return}this.table.attr.apply(this.table,[key,value])},restore:function(){this.table.restore()},populate:function(items,header,crossItems,crossHeader){var o=this.options;items&&(o.items=items),header&&(o.header=header),crossItems&&(o.crossItems=crossItems),crossHeader&&(o.crossHeader=crossHeader);var data=this._digest();this.table.setColumnSize(data.columnSize),this.table.attr("minColumnSize",data.minColumnSize),this.table.attr("maxColumnSize",data.maxColumnSize),this.table.attr("freezeCols",data.freezeCols),this.table.populate(data.items,data.header)},destroy:function(){this.table.destroy(),BI.DynamicSummaryLayerTreeTable.superclass.destroy.apply(this,arguments)}}),BI.shortcut("bi.dynamic_summary_layer_tree_table",BI.DynamicSummaryLayerTreeTable),BI.DynamicSummaryTreeTable=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.DynamicSummaryTreeTable.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-dynamic-summary-tree-table",el:{type:"bi.resizable_table"},isNeedResize:!0,isResizeAdapt:!0,isNeedFreeze:!1,freezeCols:[],isNeedMerge:!0,mergeCols:[],mergeRule:BI.emptyFn,isNeedMergeCol:!0,isNeedMergeRow:!0,columnSize:[],minColumnSize:[],maxColumnSize:[],headerRowSize:25,footerRowSize:25,rowSize:25,regionColumnSize:[],headerCellStyleGetter:BI.emptyFn,summaryCellStyleGetter:BI.emptyFn,sequenceCellStyleGetter:BI.emptyFn,header:[],footer:!1,items:[],crossHeader:[],crossItems:[],summaryText:BI.i18nText("BI-Summary_Values"),rowPosition:"bottom",colPosition:"right",showInnerSummary:!1})},_getVDeep:function(){return this.options.crossHeader.length},_getHDeep:function(){var o=this.options;return Math.max(o.mergeCols.length,o.freezeCols.length,BI.TableTree.maxDeep(o.items)-1)},_init:function(){BI.DynamicSummaryTreeTable.superclass._init.apply(this,arguments);var self=this,o=this.options,data=this._digest();this.table=BI.createWidget(o.el,{type:"bi.resizable_table",element:this,width:o.width,height:o.height,isNeedResize:o.isNeedResize,isResizeAdapt:o.isResizeAdapt,isNeedFreeze:o.isNeedFreeze,freezeCols:o.freezeCols,isNeedMerge:o.isNeedMerge,mergeCols:o.mergeCols,mergeRule:o.mergeRule,columnSize:o.columnSize,minColumnSize:o.minColumnSize,maxColumnSize:o.maxColumnSize,headerRowSize:o.headerRowSize,rowSize:o.rowSize,regionColumnSize:o.regionColumnSize,header:data.header,items:data.items}),this.table.on(BI.Table.EVENT_TABLE_SCROLL,function(){self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.table.on(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE,function(){o.regionColumnSize=this.getRegionColumnSize();var columnSize=this.getColumnSize(),length=o.columnSize.length-columnSize.length;o.columnSize=columnSize.slice(),o.columnSize=o.columnSize.concat(BI.makeArray(length,0)),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE,arguments)}),this.table.on(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE,function(){o.regionColumnSize=this.getRegionColumnSize();var columnSize=this.getColumnSize(),length=o.columnSize.length-columnSize.length;o.columnSize=columnSize.slice(),o.columnSize=o.columnSize.concat(BI.makeArray(length,0)),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE,arguments)})},_digest:function(){var o=this.options,deep=this._getHDeep(),vDeep=this._getVDeep(),header=BI.TableTree.formatHeader(o.header,o.crossHeader,o.crossItems,deep,vDeep,o.headerCellStyleGetter,{sumPosition:"right"===o.colPosition,summaryText:o.summaryText}),items=BI.DynamicSummaryTreeTable.formatHorizontalItems(o.items,deep,!1,o.summaryCellStyleGetter,{sumPosition:"bottom"===o.rowPosition,summaryText:o.summaryText,isNeedMergeRow:o.isNeedMergeRow,summaryClone:"top"===o.rowPosition&&o.showInnerSummary}),data=BI.DynamicSummaryTreeTable.formatSummaryItems(items,header,o.crossItems,deep),columnSize=o.columnSize.slice(),minColumnSize=o.minColumnSize.slice(),maxColumnSize=o.maxColumnSize.slice();return BI.removeAt(columnSize,data.deletedCols),BI.removeAt(minColumnSize,data.deletedCols),BI.removeAt(maxColumnSize,data.deletedCols),{header:data.header,items:data.items,columnSize:columnSize,minColumnSize:minColumnSize,maxColumnSize:maxColumnSize}},setWidth:function(width){BI.DynamicSummaryTreeTable.superclass.setWidth.apply(this,arguments),this.table.setWidth(width)},setHeight:function(height){BI.DynamicSummaryTreeTable.superclass.setHeight.apply(this,arguments),this.table.setHeight(height)},setColumnSize:function(columnSize){this.options.columnSize=columnSize},getColumnSize:function(){return this.options.columnSize},setRegionColumnSize:function(columnSize){this.options.regionColumnSize=columnSize,this.table.setRegionColumnSize(columnSize)},getRegionColumnSize:function(){return this.table.getRegionColumnSize()},setVerticalScroll:function(scrollTop){this.table.setVerticalScroll(scrollTop)},setLeftHorizontalScroll:function(scrollLeft){this.table.setLeftHorizontalScroll(scrollLeft)},setRightHorizontalScroll:function(scrollLeft){this.table.setRightHorizontalScroll(scrollLeft)},getVerticalScroll:function(){return this.table.getVerticalScroll()},getLeftHorizontalScroll:function(){return this.table.getLeftHorizontalScroll()},getRightHorizontalScroll:function(){return this.table.getRightHorizontalScroll()},attr:function(key){switch(BI.DynamicSummaryTreeTable.superclass.attr.apply(this,arguments),key){case"minColumnSize":case"maxColumnSize":return}this.table.attr.apply(this.table,arguments)},restore:function(){this.table.restore()},populate:function(items,header,crossItems,crossHeader){var o=this.options;items&&(o.items=items),header&&(o.header=header),crossItems&&(o.crossItems=crossItems),crossHeader&&(o.crossHeader=crossHeader);var data=this._digest();this.table.setColumnSize(data.columnSize),this.table.attr("minColumnSize",data.minColumnSize),this.table.attr("maxColumnSize",data.maxColumnSize),this.table.populate(data.items,data.header)},destroy:function(){this.table.destroy(),BI.DynamicSummaryTreeTable.superclass.destroy.apply(this,arguments)}}),BI.extend(BI.DynamicSummaryTreeTable,{formatHorizontalItems:function(nodes,deep,isCross,styleGetter,options){function cloneNode(node,tag){if(isNeedMergeRow)return node;var result=BI.clone(node);return tag&&(result.clone=!0),result}function cloneArray(arr,tag){return isNeedMergeRow?arr.slice():BI.map(arr,function(i,item){return cloneNode(item,tag)})}function track(store,node){var next;if(BI.isArray(node.children)){var totalLength=0;if(BI.each(node.children,function(index,child){var next;store!=-1?(next=cloneArray(store,summaryClone?node.children.length>1:0!==index),next.push(cloneNode(node,summaryClone?node.children.length>1:0!==index))):next=[],totalLength+=track(next,child)}),store!=-1?(next=cloneArray(store,!summaryClone),next.push(cloneNode(node,!summaryClone))):next=[],(store==-1||node.children.length>1)&&BI.isNotEmptyArray(node.values)){for(var summary={text:summaryText,title:summaryText,type:"bi.table_style_cell",styleGetter:function(){return styleGetter(store===-1)}},i=next.length;i<deep;i++)next.push(summary);if(isCross||(next=next.concat(BI.map(node.values,function(j,value){var style=styleGetter(store===-1);return BI.extend({},value,{styles:style})}))),next.length>0)if(isCross)for(var k=0,l=node.values.length;k<l;k++)sumPosition?result.push(next):result.splice(result.length-totalLength,0,next);else sumPosition?result.push(next):result.splice(result.length-totalLength,0,next);return totalLength+1}return totalLength}if(store!=-1){next=store.slice();for(var i=next.length;i<deep;i++)next.push(node)}else next=[];if(!isCross&&BI.isArray(node.values)&&(next=next.concat(node.values)),isCross&&BI.isArray(node.values))for(var i=0,len=node.values.length;i<len-1;i++)next.length>0&&result.push(next);return next.length>0&&result.push(next),node.values?1:0}options=options||{};var result=[],sumPosition=options.sumPosition,summaryText=options.summaryText,isNeedMergeRow=options.isNeedMergeRow,summaryClone=options.summaryClone;return BI.each(nodes,function(i,node){track(-1,node,0)}),BI.each(result,function(i,line){for(var last=BI.last(line),j=line.length;j<deep;j++)line.push(last)}),result},formatSummaryItems:function(items,header,crossItems,deep){function track(node){if(BI.isArray(node.children)){if(BI.each(node.children,function(index,child){track(child)}),BI.isNotEmptyArray(node.values)){if(1===node.children.length)for(var i=0;i<node.values.length;i++)cols.push(leaf+i+deep);leaf+=node.values.length}}else node.values&&node.values.length>1?leaf+=node.values.length:leaf++}var cols=[],leaf=0;if(BI.each(crossItems,function(i,node){track(node)}),cols.length>0){var nHeader=[],nItems=[];BI.each(header,function(i,node){var nNode=node.slice();BI.removeAt(nNode,cols),nHeader.push(nNode)}),BI.each(items,function(i,node){var nNode=node.slice();BI.removeAt(nNode,cols),nItems.push(nNode)}),header=nHeader,items=nItems}return{items:items,header:header,deletedCols:cols}}}),BI.shortcut("bi.dynamic_summary_tree_table",BI.DynamicSummaryTreeTable),BI.LayerTreeTableCell=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.LayerTreeTableCell.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-layer-tree-table-cell",layer:0,text:""})},_init:function(){BI.LayerTreeTableCell.superclass._init.apply(this,arguments);var o=this.options;BI.createWidget({type:"bi.label",element:this.element,textAlign:"left",whiteSpace:"nowrap",height:o.height,text:o.text,value:o.value,lgap:5+30*o.layer,rgap:5})}}),BI.shortcut("bi.layer_tree_table_cell",BI.LayerTreeTableCell),BI.LayerTreeTable=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.LayerTreeTable.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-layer-tree-table",el:{type:"bi.resizable_table"},isNeedResize:!1,isResizeAdapt:!0,isNeedFreeze:!1,freezeCols:[],isNeedMerge:!0,mergeCols:[],mergeRule:BI.emptyFn,columnSize:[],minColumnSize:[],maxColumnSize:[],headerRowSize:25,rowSize:25,regionColumnSize:[],rowHeaderCreator:null,headerCellStyleGetter:BI.emptyFn,summaryCellStyleGetter:BI.emptyFn,sequenceCellStyleGetter:BI.emptyFn,header:[],items:[],crossHeader:[],crossItems:[]})},_getVDeep:function(){return this.options.crossHeader.length},_getHDeep:function(){var o=this.options;return Math.max(o.mergeCols.length,o.freezeCols.length,BI.TableTree.maxDeep(o.items)-1)},_createHeader:function(vDeep){var self=this,o=this.options,header=o.header||[],crossHeader=o.crossHeader||[],items=BI.TableTree.formatCrossItems(o.crossItems,vDeep,o.headerCellStyleGetter),result=[];if(BI.each(items,function(row,node){var c=[crossHeader[row]];result.push(c.concat(node||[]))}),header&&header.length>0){var newHeader=this._formatColumns(header),deep=this._getHDeep();deep<=0?newHeader.unshift(o.rowHeaderCreator||{type:"bi.table_style_cell",text:BI.i18nText("BI-Row_Header"),styleGetter:o.headerCellStyleGetter}):newHeader[0]=o.rowHeaderCreator||{type:"bi.table_style_cell",text:BI.i18nText("BI-Row_Header"),styleGetter:o.headerCellStyleGetter},result.push(newHeader)}return result},_formatItems:function(nodes){function track(node,layer){
node.type||(node.type="bi.layer_tree_table_cell"),node.layer=layer;var next=[node];next=next.concat(node.values||[]),next.length>0&&result.push(next),BI.isNotEmptyArray(node.children)&&BI.each(node.children,function(index,child){track(child,layer+1)})}var self=this,o=this.options,result=[];return BI.each(nodes,function(i,node){if(BI.each(node.children,function(j,c){track(c,0)}),BI.isArray(node.values)){var next=[{type:"bi.table_style_cell",text:BI.i18nText("BI-Summary_Values"),styleGetter:function(){return o.summaryCellStyleGetter(!0)}}].concat(node.values);result.push(next)}}),result},_formatColumns:function(columns,deep){return BI.isNotEmptyArray(columns)?(deep=deep||this._getHDeep(),columns.slice(Math.max(0,deep-1))):columns},_formatFreezeCols:function(){return this.options.freezeCols.length>0?[0]:[]},_formatColumnSize:function(columnSize,deep){if(columnSize.length<=0)return[];var result=[0];return deep=deep||this._getHDeep(),BI.each(columnSize,function(i,size){return i<deep?void(result[0]+=size):void result.push(size)}),result},_digest:function(){var o=this.options,deep=this._getHDeep(),vDeep=this._getVDeep();return{header:this._createHeader(vDeep),items:this._formatItems(o.items),columnSize:this._formatColumnSize(o.columnSize,deep),minColumnSize:this._formatColumns(o.minColumnSize,deep),maxColumnSize:this._formatColumns(o.maxColumnSize,deep),freezeCols:this._formatFreezeCols()}},_init:function(){BI.LayerTreeTable.superclass._init.apply(this,arguments);var self=this,o=this.options,data=this._digest();this.table=BI.createWidget(o.el,{type:"bi.resizable_table",element:this,width:o.width,height:o.height,isNeedResize:o.isNeedResize,isResizeAdapt:o.isResizeAdapt,isNeedFreeze:o.isNeedFreeze,freezeCols:data.freezeCols,isNeedMerge:o.isNeedMerge,mergeCols:[],mergeRule:o.mergeRule,columnSize:data.columnSize,minColumnSize:data.minColumnSize,maxColumnSize:data.maxColumnSize,headerRowSize:o.headerRowSize,rowSize:o.rowSize,regionColumnSize:o.regionColumnSize,header:data.header,items:data.items}),this.table.on(BI.Table.EVENT_TABLE_SCROLL,function(){self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.table.on(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE,function(){o.regionColumnSize=this.getRegionColumnSize(),o.columnSize=this.getColumnSize(),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE,arguments)}),this.table.on(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE,function(){o.regionColumnSize=this.getRegionColumnSize(),o.columnSize=this.getColumnSize(),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE,arguments)})},setWidth:function(width){BI.LayerTreeTable.superclass.setWidth.apply(this,arguments),this.table.setWidth(width)},setHeight:function(height){BI.LayerTreeTable.superclass.setHeight.apply(this,arguments),this.table.setHeight(height)},setColumnSize:function(columnSize){this.options.columnSize=columnSize},getColumnSize:function(){var columnSize=this.table.getColumnSize(),deep=this._getHDeep(),pre=[];return deep>0&&(pre=BI.makeArray(deep,columnSize[0]/deep)),pre.concat(columnSize.slice(1))},setRegionColumnSize:function(columnSize){this.options.regionColumnSize=columnSize,this.table.setRegionColumnSize(columnSize)},getRegionColumnSize:function(){return this.table.getRegionColumnSize()},setVerticalScroll:function(scrollTop){this.table.setVerticalScroll(scrollTop)},setLeftHorizontalScroll:function(scrollLeft){this.table.setLeftHorizontalScroll(scrollLeft)},setRightHorizontalScroll:function(scrollLeft){this.table.setRightHorizontalScroll(scrollLeft)},getVerticalScroll:function(){return this.table.getVerticalScroll()},getLeftHorizontalScroll:function(){return this.table.getLeftHorizontalScroll()},getRightHorizontalScroll:function(){return this.table.getRightHorizontalScroll()},attr:function(key,value){var self=this;if(BI.isObject(key))return void BI.each(key,function(k,v){self.attr(k,v)});switch(BI.LayerTreeTable.superclass.attr.apply(this,arguments),key){case"columnSize":case"minColumnSize":case"maxColumnSize":case"freezeCols":case"mergeCols":return}this.table.attr.apply(this.table,[key,value])},restore:function(){this.table.restore()},populate:function(items,header,crossItems,crossHeader){var o=this.options;o.items=items||[],header&&(o.header=header),crossItems&&(o.crossItems=crossItems),crossHeader&&(o.crossHeader=crossHeader);var data=this._digest();this.table.setColumnSize(data.columnSize),this.table.attr("freezeCols",data.freezeCols),this.table.attr("minColumnSize",data.minColumnSize),this.table.attr("maxColumnSize",data.maxColumnSize),this.table.populate(data.items,data.header)},destroy:function(){this.table.destroy(),BI.LayerTreeTable.superclass.destroy.apply(this,arguments)}}),BI.shortcut("bi.layer_tree_table",BI.LayerTreeTable),BI.TableStyleCell=BI.inherit(BI.Single,{_defaultConfig:function(){return BI.extend(BI.TableStyleCell.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-table-style-cell",styleGetter:BI.emptyFn})},_init:function(){BI.TableStyleCell.superclass._init.apply(this,arguments);var o=this.options;this.text=BI.createWidget({type:"bi.label",element:this,height:o.height,textAlign:"left",forceCenter:!0,hgap:5,text:o.text}),this._digestStyle()},_digestStyle:function(){var o=this.options,style=o.styleGetter();style&&this.text.element.css(style)},setText:function(text){this.text.setText(text)},populate:function(){this._digestStyle()}}),BI.shortcut("bi.table_style_cell",BI.TableStyleCell),BI.TableTree=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.TableTree.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-table-tree",el:{type:"bi.resizable_table"},isNeedResize:!0,isResizeAdapt:!0,freezeCols:[],isNeedMerge:!0,mergeCols:[],mergeRule:BI.emptyFn,columnSize:[],minColumnSize:[],maxColumnSize:[],headerRowSize:25,rowSize:25,regionColumnSize:[],headerCellStyleGetter:BI.emptyFn,summaryCellStyleGetter:BI.emptyFn,sequenceCellStyleGetter:BI.emptyFn,header:[],items:[],crossHeader:[],crossItems:[]})},_getVDeep:function(){return this.options.crossHeader.length},_getHDeep:function(){var o=this.options;return Math.max(o.mergeCols.length,o.freezeCols.length,BI.TableTree.maxDeep(o.items)-1)},_init:function(){BI.TableTree.superclass._init.apply(this,arguments);var self=this,o=this.options,data=this._digest();this.table=BI.createWidget(o.el,{type:"bi.resizable_table",element:this,width:o.width,height:o.height,isNeedResize:o.isNeedResize,isResizeAdapt:o.isResizeAdapt,isNeedFreeze:o.isNeedFreeze,freezeCols:o.freezeCols,isNeedMerge:o.isNeedMerge,mergeCols:o.mergeCols,mergeRule:o.mergeRule,columnSize:o.columnSize,minColumnSize:o.minColumnSize,maxColumnSize:o.maxColumnSize,headerRowSize:o.headerRowSize,rowSize:o.rowSize,regionColumnSize:o.regionColumnSize,header:data.header,items:data.items}),this.table.on(BI.Table.EVENT_TABLE_SCROLL,function(){self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.table.on(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE,function(){o.regionColumnSize=this.getRegionColumnSize(),o.columnSize=this.getColumnSize(),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE,arguments)}),this.table.on(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE,function(){o.regionColumnSize=this.getRegionColumnSize(),o.columnSize=this.getColumnSize(),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE,arguments)})},_digest:function(){var self=this,o=this.options,deep=this._getHDeep(),vDeep=this._getVDeep(),header=BI.TableTree.formatHeader(o.header,o.crossHeader,o.crossItems,deep,vDeep,o.headerCellStyleGetter),items=BI.TableTree.formatItems(o.items,deep,!1,o.summaryCellStyleGetter);return{header:header,items:items}},setWidth:function(width){BI.TableTree.superclass.setWidth.apply(this,arguments),this.table.setWidth(width)},setHeight:function(height){BI.TableTree.superclass.setHeight.apply(this,arguments),this.table.setHeight(height)},setColumnSize:function(columnSize){this.options.columnSize=columnSize,this.table.setColumnSize(columnSize)},getColumnSize:function(){return this.table.getColumnSize()},setRegionColumnSize:function(columnSize){this.options.regionColumnSize=columnSize,this.table.setRegionColumnSize(columnSize)},getRegionColumnSize:function(){return this.table.getRegionColumnSize()},setVerticalScroll:function(scrollTop){this.table.setVerticalScroll(scrollTop)},setLeftHorizontalScroll:function(scrollLeft){this.table.setLeftHorizontalScroll(scrollLeft)},setRightHorizontalScroll:function(scrollLeft){this.table.setRightHorizontalScroll(scrollLeft)},getVerticalScroll:function(){return this.table.getVerticalScroll()},getLeftHorizontalScroll:function(){return this.table.getLeftHorizontalScroll()},getRightHorizontalScroll:function(){return this.table.getRightHorizontalScroll()},attr:function(){BI.TableTree.superclass.attr.apply(this,arguments),this.table.attr.apply(this.table,arguments)},restore:function(){this.table.restore()},populate:function(items,header,crossItems,crossHeader){var o=this.options;items&&(o.items=items||[]),header&&(o.header=header),crossItems&&(o.crossItems=crossItems),crossHeader&&(o.crossHeader=crossHeader);var data=this._digest();this.table.populate(data.items,data.header)},destroy:function(){this.table.destroy(),BI.TableTree.superclass.destroy.apply(this,arguments)}}),BI.extend(BI.TableTree,{formatHeader:function(header,crossHeader,crossItems,hDeep,vDeep,styleGetter,options){for(var items=BI.isEmpty(header)?BI.TableTree.formatCrossItems4Special(crossItems,vDeep,styleGetter,options):BI.TableTree.formatCrossItems(crossItems,vDeep,styleGetter,options),result=[],i=0;i<vDeep;i++){for(var c=[],j=0;j<hDeep;j++)c.push(crossHeader[i]);result.push(c.concat(items[i]||[]))}return header&&header.length>0&&result.push(header),result},formatItems:function(nodes,deep,isCross,styleGetter,options){function track(store,node){var next;if(BI.isArray(node.children)){var totalLength=0;if(BI.each(node.children,function(index,child){var next;store!=-1?(next=store.slice(),next.push(node)):next=[],totalLength+=track(next,child)}),store!=-1?(next=store.slice(),next.push(node)):next=[],BI.isNotEmptyArray(node.values)){for(var summary={text:summaryText,title:summaryText,type:"bi.table_style_cell",styleGetter:function(){return styleGetter(store===-1)}},i=next.length;i<deep;i++)next.push(summary);if(isCross||(next=next.concat(node.values)),next.length>0)if(isCross)for(var k=0,l=node.values.length;k<l;k++)sumPosition?result.push(next):result.splice(result.length-totalLength,0,next);else sumPosition?result.push(next):result.splice(result.length-totalLength,0,next);return totalLength+node.values.length}return totalLength}if(store!=-1){next=store.slice();for(var i=next.length;i<deep;i++)next.push(node)}else next=[];if(!isCross&&BI.isArray(node.values)&&(next=next.concat(node.values)),isCross&&BI.isArray(node.values))for(var i=0,len=node.values.length;i<len-1;i++)next.length>0&&result.push(next);return next.length>0&&result.push(next),node.values?node.values.length:0}options=options||{};var self=this,result=[],sumPosition=options.sumPosition,summaryText=options.summaryText||BI.i18nText("BI-Summary_Values");return BI.each(nodes,function(i,node){track(-1,node)}),BI.each(result,function(i,line){for(var last=BI.last(line),j=line.length;j<deep;j++)line.push(last)}),result},formatItems4Special:function(nodes,deep,isCross,styleGetter,options){function track(store,node){var next;if(BI.isArray(node.children)){var totalLength=0;if(BI.each(node.children,function(index,child){var next;store!=-1?(next=store.slice(),next.push(node)):next=[],totalLength+=track(next,child)}),store!=-1?(next=store.slice(),next.push(node)):next=[],BI.isNotEmptyArray(node.values)){for(var summary={text:summaryText,title:summaryText,type:"bi.table_style_cell",styleGetter:function(){return styleGetter(store===-1)}},i=next.length;i<deep;i++)next.push(summary);if(next.length>0)if(isCross)for(var k=0,l=node.values.length;k<l;k++)sumPosition?result.push(next):result.splice(result.length-totalLength,0,next);else sumPosition?result.push(next):result.splice(result.length-totalLength,0,next);return totalLength+node.values.length}return totalLength}if(store!=-1){next=store.slice();for(var i=next.length;i<deep;i++)next.push(node)}else next=[];return next.length>0&&result.push(next),node.values?node.values.length:0}options=options||{};var self=this,result=[],sumPosition=options.sumPosition,summaryText=options.summaryText||BI.i18nText("BI-Summary_Values");return BI.each(nodes,function(i,node){track(-1,node)}),BI.each(result,function(i,line){for(var last=BI.last(line),j=line.length;j<deep;j++)line.push(last)}),result},formatCrossItems:function(nodes,deep,styleGetter,options){var items=BI.TableTree.formatItems(nodes,deep,!0,styleGetter,options);return BI.unzip(items)},formatCrossItems4Special:function(nodes,deep,styleGetter,options){var items=BI.TableTree.formatItems4Special(nodes,deep,!1,styleGetter,options);return BI.unzip(items)},maxDeep:function(nodes){function track(deep,node){var d=deep;return BI.isNotEmptyArray(node.children)&&BI.each(node.children,function(index,child){d=Math.max(d,track(deep+1,child))}),d}var deep=1;return BI.isObject(nodes)&&BI.each(nodes,function(i,node){deep=Math.max(deep,track(1,node))}),deep}}),BI.shortcut("bi.tree_table",BI.TableTree),!function(){var MIN_SIZE=60,TIP_HEIGHT=30,StyleTable=BI.inherit(BI.Widget,{props:{baseCls:"bi-components-preview-table",$testId:"bi-components-preview-table",userSelectable:!0,isNeedFreeze:!0,showSequence:!1,showPartData:!1,tipPosition:"bottom",zebraVeins:!0,freezeCols:[],columnSize:[],headerRowSize:30,rowSize:30,header:[],items:[],watermark:{}},mounted:function(){var self=this;this._resizeHandler=BI.debounce(function(){var width=self._getTableWidth(),height=self._getTableHeight();self.table.getWidth()===width&&self.table.getHeight()===height||(self.table.setWidth(width),self.table.setHeight(height),self.table.populate())},30),BI.ResizeDetector.addResizeListener(this.wrapper,function(){self._resizeHandler()}),this._populate()},render:function(){var self=this,o=this.options,watermark=o.watermark;return{type:"bi.absolute",items:[{el:{type:"bi.vtape",cls:o.userSelectable?"user-selectable":"",items:this._createTable()},top:0,right:0,bottom:0,left:0},{el:{type:"bi.watermark",invisible:!watermark.valid,watermark:watermark},left:0,top:0,right:0,bottom:0}],ref:function(_ref){self.wrapper=_ref}}},_createTable:function(){var o=this.options,self=this,tip={el:{type:"bi.label",cls:"bi-tips",text:BI.i18nText("BI-Conf_Current_Preview_Part_Data"),textAlign:"right"},height:o.showPartData?TIP_HEIGHT:0},table={type:"bi.page_table",rowSize:o.rowSize,headerRowSize:o.headerRowSize,isNeedFreeze:o.isNeedFreeze,freezeCols:o.freezeCols,ref:function(_ref){self.table=_ref},el:{type:"bi.sequence_table",el:{type:"bi.adaptive_table",el:{type:"bi.resizable_table",el:{type:"bi.grid_table"}}}}};switch(o.tipPosition){case"top":return[tip,table];case"bottom":default:return[table,tip]}},_getTableWidth:function(){return this.options.width?this.options.width:this.element.width()},_getTableHeight:function(){var height=this.element.height();return this.options.showPartData?height-TIP_HEIGHT:height},_populate:function(){this.populate(this.options.items,this.options.header)},_calculateColumnSize:function(){function getSimulationWidth(cell){return BI.isNumber(cell.width)?cell.width:BI.isNotEmptyString(cell.text)?12*BI.Func.getGBWidth(cell.text)*1.2:0}function getColumnSizes(items,columnSizes,zebraVeins){BI.each(items,function(i,row){BI.each(row,function(j,cell){var width=0;if(BI.isNotEmptyArray(cell.items)?BI.each(cell.items,function(idx,item){width+=getSimulationWidth(item)}):width+=getSimulationWidth(cell),columnSizes[j]=columnSizes[j]||[],columnSizes[j].push(width),zebraVeins){var zebraVeinsCls=i%2!==0?"even-row ":"odd-row";cell.cls=BI.isNotEmptyString(cell.cls)?cell.cls+" "+zebraVeinsCls:zebraVeinsCls}})})}if(this.options.columnSize&&this.options.columnSize.length>0)return this.options.columnSize;var sizes=[];getColumnSizes(this.options.header,sizes,!1),getColumnSizes(this.options.items,sizes,this.options.zebraVeins);var columnSize=BI.map(sizes,function(i,column){var avgSize=Math.ceil(BI.average(BI.filter(column,function(index,value){return value>=0}))),maxSize=2*avgSize,minSize=MIN_SIZE,adaptSize=Math.ceil(BI.max(column));return maxSize<minSize?minSize:adaptSize<minSize?minSize:adaptSize>maxSize?maxSize:adaptSize});BI.each(this.options.header,function(i,row){BI.each(row,function(j,cell){columnSize[j]+=BI.isNumber(cell.iconWidth)?cell.iconWidth:0,columnSize[j]+=BI.isNumber(cell.lgap)?cell.lgap:0,columnSize[j]+=BI.isNumber(cell.rgap)?cell.rgap:0,columnSize[j]+=BI.isNumber(cell.hgap)?2*cell.hgap:0})});var tableWidth=this._getTableWidth()-10,totalColumnSize=columnSize.reduce(function(a,b){return a+b},0);if(totalColumnSize>=tableWidth)return columnSize;var surplus=tableWidth-totalColumnSize;return BI.map(columnSize,function(index,column){return index===columnSize.length-1?column+surplus:(surplus-=Math.ceil((tableWidth-totalColumnSize)/columnSize.length),column+Math.ceil((tableWidth-totalColumnSize)/columnSize.length))})},_formatItems:function(){var self=this,items=BI.deepClone(this.options.items);return BI.each(items,function(i,row){BI.each(row,function(j,item){BI.isNotNull(self.options.header[0])&&BI.isNotNull(self.options.header[0][j])&&"number-field-font"===self.options.header[0][j].iconCls&&(item.text=BI.Format.numberFormat(item.text)),item.text=BI.replaceAll(item.text||"","\n","\\n")})}),items},_formatHeader:function(){var header=BI.deepClone(this.options.header);return BI.each(header,function(i,row){BI.each(row,function(j,item){item.cls=(item.cls||"")+" header-row "})}),header},populate:function(items,header,opt){this.options.items=items,this.options.header=header;var columnSize=this._calculateColumnSize();this.table.attr("columnSize",columnSize),opt=opt||{},(BI.isNull(opt.freezeScroll)||opt.freezeScroll===!1)&&this.table.setVerticalScroll(0),this.table.restore(),this.table.setWidth(this._getTableWidth()),this.table.setHeight(this._getTableHeight()),this.table.attr("regionColumnSize",[]),this.table.attr("minColumnSize",columnSize),this.table.attr("isNeedFreeze",!0),this.table.attr("freezeCols",this.options.freezeCols),this.table.attr("showSequence",!1),this.table.populate(this._formatItems(),this._formatHeader())},setHorizontalScroll:function(v){this.table.setRightHorizontalScroll(v)},setVerticalScroll:function(v){this.table.setVerticalScroll(v)},destroyed:function(){BI.Resizers.remove(this.getName())}});BI.shortcut("bi.components.style_table",StyleTable)}(),function(){var clamp=function(min,value,max){return value<min?min:value>max?max:value},BUFFER_ROWS=5,NO_ROWS_SCROLL_RESULT={index:0,offset:0,position:0,contentHeight:0};BI.TableScrollHelper=function(rowCount,defaultRowHeight,viewportHeight,rowHeightGetter){this._rowOffsets=BI.PrefixIntervalTree.uniform(rowCount,defaultRowHeight),this._storedHeights=new Array(rowCount);for(var i=0;i<rowCount;++i)this._storedHeights[i]=defaultRowHeight;this._rowCount=rowCount,this._position=0,this._contentHeight=rowCount*defaultRowHeight,this._defaultRowHeight=defaultRowHeight,this._rowHeightGetter=rowHeightGetter?rowHeightGetter:function(){return defaultRowHeight},this._viewportHeight=viewportHeight,this._updateHeightsInViewport(0,0)},BI.TableScrollHelper.prototype={constructor:BI.TableScrollHelper,setRowHeightGetter:function(rowHeightGetter){this._rowHeightGetter=rowHeightGetter},setViewportHeight:function(viewportHeight){this._viewportHeight=viewportHeight},getContentHeight:function(){return this._contentHeight},_updateHeightsInViewport:function(firstRowIndex,firstRowOffset){for(var top=firstRowOffset,index=firstRowIndex;top<=this._viewportHeight&&index<this._rowCount;)this._updateRowHeight(index),top+=this._storedHeights[index],index++},_updateHeightsAboveViewport:function(firstRowIndex){for(var index=firstRowIndex-1;index>=0&&index>=firstRowIndex-BUFFER_ROWS;){var delta=this._updateRowHeight(index);this._position+=delta,index--}},_updateRowHeight:function(rowIndex){if(rowIndex<0||rowIndex>=this._rowCount)return 0;var newHeight=this._rowHeightGetter(rowIndex);if(newHeight!==this._storedHeights[rowIndex]){var change=newHeight-this._storedHeights[rowIndex];return this._rowOffsets.set(rowIndex,newHeight),this._storedHeights[rowIndex]=newHeight,this._contentHeight+=change,change}return 0},getRowPosition:function(rowIndex){return this._updateRowHeight(rowIndex),this._rowOffsets.sumUntil(rowIndex)},scrollBy:function(delta){if(0===this._rowCount)return NO_ROWS_SCROLL_RESULT;var firstRow=this._rowOffsets.greatestLowerBound(this._position);firstRow=clamp(firstRow,0,Math.max(this._rowCount-1,0));var firstRowPosition=this._rowOffsets.sumUntil(firstRow),rowIndex=firstRow,position=this._position,rowHeightChange=this._updateRowHeight(rowIndex);0!==firstRowPosition&&(position+=rowHeightChange);var visibleRowHeight=this._storedHeights[rowIndex]-(position-firstRowPosition);if(delta>=0)for(;delta>0&&rowIndex<this._rowCount;)delta<visibleRowHeight?(position+=delta,delta=0):(delta-=visibleRowHeight,position+=visibleRowHeight,rowIndex++),rowIndex<this._rowCount&&(this._updateRowHeight(rowIndex),visibleRowHeight=this._storedHeights[rowIndex]);else if(delta<0){delta=-delta;for(var invisibleRowHeight=this._storedHeights[rowIndex]-visibleRowHeight;delta>0&&rowIndex>=0;)if(delta<invisibleRowHeight?(position-=delta,delta=0):(position-=invisibleRowHeight,delta-=invisibleRowHeight,rowIndex--),rowIndex>=0){var change=this._updateRowHeight(rowIndex);invisibleRowHeight=this._storedHeights[rowIndex],position+=change}}var maxPosition=this._contentHeight-this._viewportHeight;position=clamp(position,0,maxPosition),this._position=position;var firstRowIndex=this._rowOffsets.greatestLowerBound(position);firstRowIndex=clamp(firstRowIndex,0,Math.max(this._rowCount-1,0)),firstRowPosition=this._rowOffsets.sumUntil(firstRowIndex);var firstRowOffset=firstRowPosition-position;return this._updateHeightsInViewport(firstRowIndex,firstRowOffset),this._updateHeightsAboveViewport(firstRowIndex),{index:firstRowIndex,offset:firstRowOffset,position:this._position,contentHeight:this._contentHeight}},_getRowAtEndPosition:function(rowIndex){this._updateRowHeight(rowIndex);for(var currentRowIndex=rowIndex,top=this._storedHeights[currentRowIndex];top<this._viewportHeight&&currentRowIndex>=0;)currentRowIndex--,currentRowIndex>=0&&(this._updateRowHeight(currentRowIndex),top+=this._storedHeights[currentRowIndex]);var position=this._rowOffsets.sumTo(rowIndex)-this._viewportHeight;return position<0&&(position=0),position},scrollTo:function(position){if(0===this._rowCount)return NO_ROWS_SCROLL_RESULT;if(position<=0)return this._position=0,this._updateHeightsInViewport(0,0),{index:0,offset:0,position:this._position,contentHeight:this._contentHeight};if(position>=this._contentHeight-this._viewportHeight){var rowIndex=this._rowCount-1;position=this._getRowAtEndPosition(rowIndex)}this._position=position;var firstRowIndex=this._rowOffsets.greatestLowerBound(position);firstRowIndex=clamp(firstRowIndex,0,Math.max(this._rowCount-1,0));var firstRowPosition=this._rowOffsets.sumUntil(firstRowIndex),firstRowOffset=firstRowPosition-position;return this._updateHeightsInViewport(firstRowIndex,firstRowOffset),this._updateHeightsAboveViewport(firstRowIndex),{index:firstRowIndex,offset:firstRowOffset,position:this._position,contentHeight:this._contentHeight}},scrollToRow:function(rowIndex,offset){rowIndex=clamp(rowIndex,0,Math.max(this._rowCount-1,0)),offset=clamp(offset,-this._storedHeights[rowIndex],0);var firstRow=this._rowOffsets.sumUntil(rowIndex);return this.scrollTo(firstRow-offset)},scrollRowIntoView:function(rowIndex){rowIndex=clamp(rowIndex,0,Math.max(this._rowCount-1,0));var rowBegin=this._rowOffsets.sumUntil(rowIndex),rowEnd=rowBegin+this._storedHeights[rowIndex];if(rowBegin<this._position)return this.scrollTo(rowBegin);if(this._position+this._viewportHeight<rowEnd){var position=this._getRowAtEndPosition(rowIndex);return this.scrollTo(position)}return this.scrollTo(this._position)}}}(),BI.PageTableCell=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.PageTableCell.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-page-table-cell",text:"",title:""})},_init:function(){BI.PageTableCell.superclass._init.apply(this,arguments),BI.createWidget({type:"bi.label",element:this,textAlign:"left",whiteSpace:"nowrap",height:this.options.height,text:this.options.text,title:this.options.title,value:this.options.value,lgap:5,rgap:5}),BI.isNotNull(this.options.styles)&&BI.isObject(this.options.styles)&&this.element.css(this.options.styles)}}),BI.shortcut("bi.page_table_cell",BI.PageTableCell),BI.PageTable=BI.inherit(BI.Widget,{_const:{scrollWidth:18,minScrollWidth:100},_defaultConfig:function(){return BI.extend(BI.PageTable.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-page-table",el:{type:"bi.sequence_table"},pager:{horizontal:{pages:!1,curr:1,hasPrev:BI.emptyFn,hasNext:BI.emptyFn,firstPage:1,lastPage:BI.emptyFn},vertical:{pages:!1,curr:1,hasPrev:BI.emptyFn,hasNext:BI.emptyFn,firstPage:1,lastPage:BI.emptyFn}},itemsCreator:BI.emptyFn,isNeedFreeze:!1,freezeCols:[],isNeedMerge:!1,mergeCols:[],mergeRule:BI.emptyFn,columnSize:[],minColumnSize:[],maxColumnSize:[],headerRowSize:25,rowSize:25,regionColumnSize:[],headerCellStyleGetter:BI.emptyFn,summaryCellStyleGetter:BI.emptyFn,sequenceCellStyleGetter:BI.emptyFn,header:[],items:[],crossHeader:[],crossItems:[]})},_init:function(){BI.PageTable.superclass._init.apply(this,arguments);var self=this,o=this.options;this.hCurr=1,this.vCurr=1,this.table=BI.createWidget(o.el,{type:"bi.sequence_table",width:o.width,height:o.height&&o.height-30,isNeedResize:!0,isResizeAdapt:!1,isNeedFreeze:o.isNeedFreeze,freezeCols:o.freezeCols,isNeedMerge:o.isNeedMerge,mergeCols:o.mergeCols,mergeRule:o.mergeRule,columnSize:o.columnSize,minColumnSize:o.minColumnSize,maxColumnSize:o.maxColumnSize,headerRowSize:o.headerRowSize,rowSize:o.rowSize,regionColumnSize:o.regionColumnSize,headerCellStyleGetter:o.headerCellStyleGetter,summaryCellStyleGetter:o.summaryCellStyleGetter,sequenceCellStyleGetter:o.sequenceCellStyleGetter,header:o.header,items:o.items,crossHeader:o.crossHeader,crossItems:o.crossItems}),this.table.on(BI.Table.EVENT_TABLE_SCROLL,function(){self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.table.on(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE,function(){o.regionColumnSize=this.getRegionColumnSize(),o.columnSize=this.getColumnSize(),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE,arguments)}),this.table.on(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE,function(){o.regionColumnSize=this.getRegionColumnSize(),o.columnSize=this.getColumnSize(),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE,arguments)}),this.pager=BI.createWidget(o.pager,{type:"bi.direction_pager",height:24}),this.pager.on(BI.Pager.EVENT_CHANGE,function(){var vpage=this.getVPage&&this.getVPage();BI.isNull(vpage)&&(vpage=this.getCurrentPage());var hpage=this.getHPage&&this.getHPage();o.itemsCreator({vpage:vpage,hpage:hpage},function(){self.table.setVPage?self.table.setVPage(vpage):self.table.setValue(vpage),self.table.setHPage&&self.table.setHPage(hpage),self.populate.apply(self,arguments)})}),BI.createWidget({type:"bi.absolute",element:this,items:[{el:this.table,left:0,top:0},{el:this.pager,left:0,right:10,bottom:6}]})},setHPage:function(v){this.hCurr=v,this.pager.setHPage&&this.pager.setHPage(v),this.table.setHPage&&this.table.setHPage(v)},setVPage:function(v){this.vCurr=v,this.pager.setVPage&&this.pager.setVPage(v),this.table.setVPage&&this.table.setVPage(v)},getHPage:function(){var hpage=this.pager.getHPage&&this.pager.getHPage();return BI.isNotNull(hpage)?hpage:(hpage=this.pager.getCurrentPage&&this.pager.getCurrentPage(),BI.isNotNull(hpage)?hpage:this.hpage)},getVPage:function(){var vpage=this.pager.getVPage&&this.pager.getVPage();return BI.isNotNull(vpage)?vpage:(vpage=this.pager.getCurrentPage&&this.pager.getCurrentPage(),BI.isNotNull(vpage)?vpage:this.vpage)},setWidth:function(width){BI.PageTable.superclass.setWidth.apply(this,arguments),this.table.setWidth(width)},setHeight:function(height){BI.PageTable.superclass.setHeight.apply(this,arguments);var o=this.options,showPager=!1;this.pager.alwaysShowPager?showPager=!0:this.pager.hasHNext&&this.pager.hasHNext()?showPager=!0:this.pager.hasHPrev&&this.pager.hasHPrev()?showPager=!0:this.pager.hasVNext&&this.pager.hasVNext()?showPager=!0:this.pager.hasVPrev&&this.pager.hasVPrev()?showPager=!0:this.pager.hasNext&&this.pager.hasNext()?showPager=!0:this.pager.hasPrev&&this.pager.hasPrev()&&(showPager=!0),this.table.setHeight(height-(showPager?o.pager&&o.pager.height||30:0))},setColumnSize:function(columnSize){this.options.columnSize=columnSize,this.table.setColumnSize(columnSize)},getColumnSize:function(){return this.table.getColumnSize()},setRegionColumnSize:function(columnSize){this.options.columnSize=columnSize,this.table.setRegionColumnSize(columnSize)},getRegionColumnSize:function(){return this.table.getRegionColumnSize()},getVerticalScroll:function(){return this.table.getVerticalScroll()},setLeftHorizontalScroll:function(scrollLeft){this.table.setLeftHorizontalScroll(scrollLeft)},setRightHorizontalScroll:function(scrollLeft){this.table.setRightHorizontalScroll(scrollLeft)},setVerticalScroll:function(scrollTop){this.table.setVerticalScroll(scrollTop)},restore:function(){this.table.restore()},attr:function(){BI.PageTable.superclass.attr.apply(this,arguments),this.table.attr.apply(this.table,arguments)},populate:function(){this.pager.populate(),this.table.populate.apply(this.table,arguments)},destroy:function(){this.table.destroy(),this.pager&&this.pager.destroy(),BI.PageTable.superclass.destroy.apply(this,arguments)}}),BI.shortcut("bi.page_table",BI.PageTable),BI.PreviewTableCell=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.PreviewTableCell.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-preview-table-cell",text:""})},_init:function(){BI.PreviewTableCell.superclass._init.apply(this,arguments);var self=this,o=this.options;BI.createWidget({type:"bi.label",element:this,textAlign:o.textAlign||"left",whiteSpace:o.whiteSpace||"normal",height:this.options.height,text:this.options.text,value:this.options.value,lgap:o.lgap,rgap:o.rgap,hgap:o.hgap||5})}}),BI.shortcut("bi.preview_table_cell",BI.PreviewTableCell),BI.PreviewTableHeaderCell=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.PreviewTableHeaderCell.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-preview-table-header-cell",text:""})},_init:function(){BI.PreviewTableHeaderCell.superclass._init.apply(this,arguments);var self=this,o=this.options;BI.createWidget({type:"bi.label",element:this,textAlign:o.textAlign||"left",whiteSpace:o.whiteSpace||"nowrap",height:this.options.height,text:this.options.text,value:this.options.value,lgap:o.lgap,rgap:o.rgap,hgap:o.hgap||5})}}),BI.shortcut("bi.preview_table_header_cell",BI.PreviewTableHeaderCell),BI.PreviewTable=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.PreviewTable.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-preview-table",isNeedFreeze:!1,freezeCols:[],rowSize:null,columnSize:[],headerRowSize:30,header:[],items:[]})},_init:function(){BI.PreviewTable.superclass._init.apply(this,arguments);var self=this,o=this.options;this.table=BI.createWidget({type:"bi.table_view",element:this,isNeedResize:!1,isResizeAdapt:!1,isNeedFreeze:o.isNeedFreeze,freezeCols:o.freezeCols,rowSize:o.rowSize,columnSize:o.columnSize,headerRowSize:o.headerRowSize,header:BI.map(o.header,function(i,items){return BI.map(items,function(j,item){return BI.extend({type:"bi.preview_table_header_cell"},item)})}),items:BI.map(o.items,function(i,items){return BI.map(items,function(j,item){return BI.extend({type:"bi.preview_table_cell"},item)})})}),this.table.on(BI.Table.EVENT_TABLE_AFTER_INIT,function(){self.fireEvent(BI.Table.EVENT_TABLE_AFTER_INIT,arguments)}),this.table.on(BI.Table.EVENT_TABLE_RESIZE,function(){
self._adjustColumns()}),this._adjustColumns()},_hasAdaptCol:function(columnSize){return BI.any(columnSize,function(i,size){return""===size})},_isPercentage:function(columnSize){return columnSize[0]<=1},_adjustColumns:function(){var self=this,o=this.options;if(o.isNeedFreeze===!0){if(this._isPercentage(o.columnSize)){if(this._hasAdaptCol(o.columnSize)){var findCols=[],remain=0;BI.each(o.columnSize,function(i,size){""===size?findCols.push(i):remain+=size}),remain=1-remain;var average=remain/findCols.length;BI.each(findCols,function(i,col){o.columnSize[col]=average})}var isRight=0!==BI.first(o.freezeCols),freezeSize=[],notFreezeSize=[];BI.each(o.columnSize,function(i,size){o.freezeCols.contains(i)?freezeSize.push(size):notFreezeSize.push(size)});var sumFreezeSize=BI.sum(freezeSize),sumNotFreezeSize=BI.sum(notFreezeSize);BI.each(freezeSize,function(i,size){freezeSize[i]=size/sumFreezeSize}),BI.each(notFreezeSize,function(i,size){notFreezeSize[i]=size/sumNotFreezeSize}),this.table.setRegionColumnSize(isRight?["fill",sumFreezeSize]:[sumFreezeSize,"fill"]),this.table.setColumnSize(isRight?notFreezeSize.concat(freezeSize):freezeSize.concat(notFreezeSize))}}else(this._hasAdaptCol(o.columnSize)||this._isPercentage(o.columnSize))&&this.table.setRegionColumnSize(["100%"])},setColumnSize:function(columnSize){return this.table.setColumnSize(columnSize)},getColumnSize:function(){return this.table.getColumnSize()},getCalculateColumnSize:function(){return this.table.getCalculateColumnSize()},setHeaderColumnSize:function(columnSize){return this.table.setHeaderColumnSize(columnSize)},setRegionColumnSize:function(columnSize){return this.table.setRegionColumnSize(columnSize)},getRegionColumnSize:function(){return this.table.getRegionColumnSize()},getCalculateRegionColumnSize:function(){return this.table.getCalculateRegionColumnSize()},getCalculateRegionRowSize:function(){return this.table.getCalculateRegionRowSize()},getClientRegionColumnSize:function(){return this.table.getClientRegionColumnSize()},getScrollRegionColumnSize:function(){return this.table.getScrollRegionColumnSize()},getScrollRegionRowSize:function(){return this.table.getScrollRegionRowSize()},hasVerticalScroll:function(){return this.table.hasVerticalScroll()},setVerticalScroll:function(scrollTop){return this.table.setVerticalScroll(scrollTop)},setLeftHorizontalScroll:function(scrollLeft){return this.table.setLeftHorizontalScroll(scrollLeft)},setRightHorizontalScroll:function(scrollLeft){return this.table.setRightHorizontalScroll(scrollLeft)},getVerticalScroll:function(){return this.table.getVerticalScroll()},getLeftHorizontalScroll:function(){return this.table.getLeftHorizontalScroll()},getRightHorizontalScroll:function(){return this.table.getRightHorizontalScroll()},getColumns:function(){return this.table.getColumns()},populate:function(items,header){items&&(items=BI.map(items,function(i,items){return BI.map(items,function(j,item){return BI.extend({type:"bi.preview_table_cell"},item)})})),header&&(header=BI.map(header,function(i,items){return BI.map(items,function(j,item){return BI.extend({type:"bi.preview_table_header_cell"},item)})})),this.table.populate(items,header),this._adjustColumns()}}),BI.PreviewTable.EVENT_CHANGE="PreviewTable.EVENT_CHANGE",BI.shortcut("bi.preview_table",BI.PreviewTable),BI.ResponisveTable=BI.inherit(BI.Widget,{_const:{perColumnSize:100},_defaultConfig:function(){return BI.extend(BI.ResponisveTable.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-responsive-table",isNeedFreeze:!1,freezeCols:[],logic:{dynamic:!1},isNeedMerge:!1,mergeCols:[],mergeRule:function(row1,row2){return BI.isEqual(row1,row2)},columnSize:[],headerRowSize:25,footerRowSize:25,rowSize:25,regionColumnSize:!1,header:[],footer:!1,items:[],crossHeader:[],crossItems:[]})},_init:function(){BI.ResponisveTable.superclass._init.apply(this,arguments);var self=this,o=this.options;this.table=BI.createWidget({type:"bi.table_view",element:this,logic:o.logic,isNeedFreeze:o.isNeedFreeze,freezeCols:o.freezeCols,isNeedMerge:o.isNeedMerge,mergeCols:o.mergeCols,mergeRule:o.mergeRule,columnSize:o.columnSize,headerRowSize:o.headerRowSize,footerRowSize:o.footerRowSize,rowSize:o.rowSize,regionColumnSize:o.regionColumnSize,header:o.header,footer:o.footer,items:o.items,crossHeader:o.crossHeader,crossItems:o.crossItems}),this.table.on(BI.Table.EVENT_TABLE_AFTER_INIT,function(){self._initRegionSize(),self.table.resize(),self._resizeHeader(),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_INIT,arguments)}),this.table.on(BI.Table.EVENT_TABLE_RESIZE,function(){self._resizeRegion(),self._resizeHeader(),self.fireEvent(BI.Table.EVENT_TABLE_RESIZE,arguments)}),this.table.on(BI.Table.EVENT_TABLE_SCROLL,function(){self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.table.on(BI.Table.EVENT_TABLE_BEFORE_REGION_RESIZE,function(){self.fireEvent(BI.Table.EVENT_TABLE_BEFORE_REGION_RESIZE,arguments)}),this.table.on(BI.Table.EVENT_TABLE_REGION_RESIZE,function(){o.isNeedResize===!0&&self._isAdaptiveColumn()&&self._resizeHeader(),self.fireEvent(BI.Table.EVENT_TABLE_REGION_RESIZE,arguments)}),this.table.on(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE,function(){self._resizeHeader(),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE,arguments)}),this.table.on(BI.Table.EVENT_TABLE_BEFORE_COLUMN_RESIZE,function(){self._resizeBody(),self.fireEvent(BI.Table.EVENT_TABLE_BEFORE_COLUMN_RESIZE,arguments)}),this.table.on(BI.Table.EVENT_TABLE_COLUMN_RESIZE,function(){self.fireEvent(BI.Table.EVENT_TABLE_COLUMN_RESIZE,arguments)}),this.table.on(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE,function(){self._resizeRegion(),self._resizeHeader(),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE,arguments)})},_initRegionSize:function(){var o=this.options;if(o.isNeedFreeze===!0){var regionColumnSize=this.table.getRegionColumnSize(),maxWidth=this.table.element.width();if(!regionColumnSize[0]||"fill"===regionColumnSize[0]||regionColumnSize[0]>maxWidth||regionColumnSize[1]>maxWidth){var freezeCols=o.freezeCols;if(0===freezeCols.length)this.table.setRegionColumnSize([0,"fill"]);else if(freezeCols.length>0&&freezeCols.length<o.columnSize.length){var size=maxWidth/3;freezeCols.length>o.columnSize.length/2&&(size=2*maxWidth/3),this.table.setRegionColumnSize([size,"fill"])}else this.table.setRegionColumnSize(["fill",0])}}},_getBlockSize:function(){var o=this.options,columnSize=this.table.getCalculateColumnSize();if(o.isNeedFreeze===!0){var columnSizeLeft=[],columnSizeRight=[];BI.each(columnSize,function(i,size){o.freezeCols.contains(i)?columnSizeLeft.push(size):columnSizeRight.push(size)});var sumLeft=BI.sum(columnSizeLeft)+columnSizeLeft.length,sumRight=BI.sum(columnSizeRight)+columnSizeRight.length;return{sumLeft:sumLeft,sumRight:sumRight,left:columnSizeLeft,right:columnSizeRight}}return{size:columnSize,sum:BI.sum(columnSize)+columnSize.length}},_isAdaptiveColumn:function(columnSize){return!(BI.last(columnSize||this.table.getColumnSize())>1.05)},_resizeHeader:function(){var self=this,o=this.options;if(o.isNeedFreeze===!0)if(this._isAdaptiveColumn()){var columnSize=this.table.getCalculateColumnSize();this.table.setHeaderColumnSize(columnSize)}else{var regionColumnSize=this.table.getClientRegionColumnSize(),block=this._getBlockSize(),sumLeft=block.sumLeft,sumRight=block.sumRight,columnSizeLeft=block.left,columnSizeRight=block.right;columnSizeLeft[columnSizeLeft.length-1]+=regionColumnSize[0]-sumLeft,columnSizeRight[columnSizeRight.length-1]+=regionColumnSize[1]-sumRight;var newLeft=BI.clone(columnSizeLeft),newRight=BI.clone(columnSizeRight);newLeft[newLeft.length-1]="",newRight[newRight.length-1]="",this.table.setColumnSize(newLeft.concat(newRight)),block=self._getBlockSize(),columnSizeLeft[columnSizeLeft.length-1]<block.left[block.left.length-1]&&(columnSizeLeft[columnSizeLeft.length-1]=block.left[block.left.length-1]),columnSizeRight[columnSizeRight.length-1]<block.right[block.right.length-1]&&(columnSizeRight[columnSizeRight.length-1]=block.right[block.right.length-1]),self.table.setColumnSize(columnSizeLeft.concat(columnSizeRight))}else if(!this._isAdaptiveColumn()){var regionColumnSize=this.table.getClientRegionColumnSize(),block=this._getBlockSize(),sum=block.sum,size=block.size;size[size.length-1]+=regionColumnSize[0]-sum;var newSize=BI.clone(size);newSize[newSize.length-1]="",this.table.setColumnSize(newSize),block=this._getBlockSize(),size[size.length-1]<block.size[block.size.length-1]&&(size[size.length-1]=block.size[block.size.length-1]),this.table.setColumnSize(size)}},_resizeBody:function(){if(this._isAdaptiveColumn()){var columnSize=this.table.getCalculateColumnSize();this.setColumnSize(columnSize)}},_adjustRegion:function(){var o=this.options,regionColumnSize=this.table.getCalculateRegionColumnSize();if(o.isNeedFreeze===!0&&o.freezeCols.length>0&&o.freezeCols.length<o.columnSize.length){var block=this._getBlockSize(),sumLeft=block.sumLeft,sumRight=block.sumRight;(sumLeft<regionColumnSize[0]||regionColumnSize[0]>=sumLeft+sumRight)&&this.table.setRegionColumnSize([sumLeft,"fill"]),this._resizeRegion()}},_resizeRegion:function(){var o=this.options,regionColumnSize=this.table.getCalculateRegionColumnSize();if(o.isNeedFreeze===!0&&o.freezeCols.length>0&&o.freezeCols.length<o.columnSize.length){var maxWidth=this.table.element.width();if(regionColumnSize[0]<15||regionColumnSize[1]<15){var freezeCols=o.freezeCols,size=maxWidth/3;freezeCols.length>o.columnSize.length/2&&(size=2*maxWidth/3),this.table.setRegionColumnSize([size,"fill"])}}},resize:function(){this.table.resize(),this._resizeRegion(),this._resizeHeader()},setColumnSize:function(columnSize){this.table.setColumnSize(columnSize),this._adjustRegion(),this._resizeHeader()},getColumnSize:function(){return this.table.getColumnSize()},getCalculateColumnSize:function(){return this.table.getCalculateColumnSize()},setHeaderColumnSize:function(columnSize){this.table.setHeaderColumnSize(columnSize),this._adjustRegion(),this._resizeHeader()},setRegionColumnSize:function(columnSize){this.table.setRegionColumnSize(columnSize),this._resizeHeader()},getRegionColumnSize:function(){return this.table.getRegionColumnSize()},getCalculateRegionColumnSize:function(){return this.table.getCalculateRegionColumnSize()},getCalculateRegionRowSize:function(){return this.table.getCalculateRegionRowSize()},getClientRegionColumnSize:function(){return this.table.getClientRegionColumnSize()},getScrollRegionColumnSize:function(){return this.table.getScrollRegionColumnSize()},getScrollRegionRowSize:function(){return this.table.getScrollRegionRowSize()},hasVerticalScroll:function(){return this.table.hasVerticalScroll()},setVerticalScroll:function(scrollTop){this.table.setVerticalScroll(scrollTop)},setLeftHorizontalScroll:function(scrollLeft){this.table.setLeftHorizontalScroll(scrollLeft)},setRightHorizontalScroll:function(scrollLeft){this.table.setRightHorizontalScroll(scrollLeft)},getVerticalScroll:function(){return this.table.getVerticalScroll()},getLeftHorizontalScroll:function(){return this.table.getLeftHorizontalScroll()},getRightHorizontalScroll:function(){return this.table.getRightHorizontalScroll()},getColumns:function(){return this.table.getColumns()},attr:function(){BI.ResponisveTable.superclass.attr.apply(this,arguments),this.table.attr.apply(this.table,arguments)},populate:function(items){var self=this,o=this.options;this.table.populate.apply(this.table,arguments),o.isNeedFreeze===!0&&BI.nextTick(function(){self._initRegionSize(),self.table.resize(),self._resizeHeader()})}}),BI.shortcut("bi.responsive_table",BI.ResponisveTable),BI.SequenceTableListNumber=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.SequenceTableListNumber.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-sequence-table-list-number",isNeedFreeze:!1,scrollTop:0,startSequence:1,headerRowSize:25,rowSize:25,sequenceHeaderCreator:BI.emptyFn,header:[],items:[],crossHeader:[],crossItems:[],pageSize:20,width:60})},_init:function(){BI.SequenceTableListNumber.superclass._init.apply(this,arguments);var o=this.options;this.start=o.startSequence,this.renderedCells=[],this.renderedKeys=[],this.container=BI.createWidget({type:"bi.absolute",width:o.width,scrollable:!1}),this.scrollContainer=BI.createWidget({type:"bi.vertical",scrollable:!1,scrolly:!1,items:[this.container]}),this.headerContainer=BI.createWidget({type:"bi.absolute",cls:"sequence-table-header-cell bi-border",width:o.seqWidth-2,scrollable:!1}),this.layout=BI.createWidget({type:"bi.vtape",element:this,items:[{el:this.headerContainer,height:o.headerRowSize*o.header.length-2},{el:{type:"bi.layout"},height:2},{el:this.scrollContainer}]}),this._populate()},_layout:function(){var o=this.options,headerHeight=o.headerRowSize*o.header.length-2,items=this.layout.attr("items");o.isNeedFreeze===!1?(items[0].height=0,items[1].height=0):o.isNeedFreeze===!0&&(items[0].height=headerHeight,items[1].height=2),this.layout.attr("items",items),this.layout.resize(),this.container.setHeight(o.items.length*o.rowSize);try{this.scrollContainer.element.scrollTop(o.scrollTop)}catch(e){}},_createHeader:function(){var o=this.options;BI.createWidget({type:"bi.absolute",element:this.headerContainer,items:[{el:o.sequenceHeaderCreator()||{type:"bi.table_style_cell",cls:"sequence-table-title-cell",styleGetter:o.headerCellStyleGetter,text:BI.i18nText("BI-Number_Index")},left:0,top:0,right:0,bottom:0}]})},_calculateChildrenToRender:function(){for(var self=this,o=this.options,scrollTop=BI.clamp(o.scrollTop,0,o.rowSize*o.items.length-(o.height-o.header.length*o.headerRowSize)+BI.DOM.getScrollWidth()),start=Math.floor(scrollTop/o.rowSize),end=start+Math.floor((o.height-o.header.length*o.headerRowSize)/o.rowSize),renderedCells=[],renderedKeys=[],i=start,cnt=0;i<=end&&i<o.items.length;i++,cnt++){var index=BI.deepIndexOf(this.renderedKeys,this.start+i),top=i*o.rowSize;if(index>-1)o.rowSize!==this.renderedCells[index]._height&&(this.renderedCells[index]._height=o.rowSize,this.renderedCells[index].el.setHeight(o.rowSize)),this.renderedCells[index].top!==top&&(this.renderedCells[index].top=top,this.renderedCells[index].el.element.css("top",top+"px")),renderedCells.push(this.renderedCells[index]);else{var child=BI.createWidget(BI.extend({type:"bi.table_style_cell",cls:"sequence-table-number-cell bi-border-left bi-border-right bi-border-bottom",width:o.width,height:o.rowSize,text:this.start+i,styleGetter:function(){return function(){return o.sequenceCellStyleGetter(self.start+i-1)}}(cnt)}));renderedCells.push({el:child,left:0,top:top,_height:o.rowSize})}renderedKeys.push(this.start+i)}var existSet={},addSet={},deleteArray=[];BI.each(renderedKeys,function(i,key){BI.deepContains(self.renderedKeys,key)?existSet[i]=key:addSet[i]=key}),BI.each(this.renderedKeys,function(i,key){BI.deepContains(existSet,key)||BI.deepContains(addSet,key)||deleteArray.push(i)}),BI.each(deleteArray,function(i,index){self.renderedCells[index].el.destroy()});var addedItems=[];BI.each(addSet,function(index){addedItems.push(renderedCells[index])}),BI.createWidget({type:"bi.absolute",element:this.container,items:addedItems}),this.renderedCells=renderedCells,this.renderedKeys=renderedKeys},_populate:function(){this.headerContainer.empty(),this._createHeader(),this._layout(),this._calculateChildrenToRender()},setVerticalScroll:function(scrollTop){if(this.options.scrollTop!==scrollTop){this.options.scrollTop=scrollTop;try{this.scrollContainer.element.scrollTop(scrollTop)}catch(e){}}},getVerticalScroll:function(){return this.options.scrollTop},setVPage:function(v){v=v<1?1:v;var o=this.options;this.start=(v-1)*o.pageSize+1},setWidth:function(width){BI.SequenceTableListNumber.superclass.setWidth.apply(this,arguments),this.container.setWidth(width),this.headerContainer.setWidth(width-2)},_restore:function(){BI.each(this.renderedCells,function(i,cell){cell.el.destroy()}),this.renderedCells=[],this.renderedKeys=[]},restore:function(){this._restore()},populate:function(items,header){var o=this.options;items&&items!==this.options.items&&(o.items=items,this._restore()),header&&header!==this.options.header&&(o.header=header),this._populate()}}),BI.shortcut("bi.sequence_table_list_number",BI.SequenceTableListNumber),BI.SequenceTable=BI.inherit(BI.Widget,{_defaultConfig:function(){return BI.extend(BI.SequenceTable.superclass._defaultConfig.apply(this,arguments),{baseCls:"bi-sequence-table",el:{type:"bi.adaptive_table"},sequence:{},isNeedResize:!0,isResizeAdapt:!1,isNeedFreeze:!1,freezeCols:[],isNeedMerge:!1,mergeCols:[],mergeRule:BI.emptyFn,columnSize:[],minColumnSize:[],maxColumnSize:[],headerRowSize:25,rowSize:25,regionColumnSize:[],headerCellStyleGetter:BI.emptyFn,summaryCellStyleGetter:BI.emptyFn,sequenceCellStyleGetter:BI.emptyFn,header:[],items:[],crossHeader:[],crossItems:[],showSequence:!1,startSequence:1,seqWidth:60})},_init:function(){BI.SequenceTable.superclass._init.apply(this,arguments);var self=this,o=this.options;this.sequence=BI.createWidget(o.sequence,{type:"bi.sequence_table_list_number",invisible:o.showSequence===!1,startSequence:o.startSequence,isNeedFreeze:o.isNeedFreeze,header:o.header,items:o.items,crossHeader:o.crossHeader,crossItems:o.crossItems,headerRowSize:o.headerRowSize,rowSize:o.rowSize,width:o.seqWidth,height:o.height&&o.height-BI.GridTableScrollbar.SIZE,headerCellStyleGetter:o.headerCellStyleGetter,summaryCellStyleGetter:o.summaryCellStyleGetter,sequenceCellStyleGetter:o.sequenceCellStyleGetter}),this.table=BI.createWidget(o.el,{type:"bi.adaptive_table",width:o.showSequence===!0?o.width-o.seqWidth:o.width,height:o.height,isNeedResize:o.isNeedResize,isResizeAdapt:o.isResizeAdapt,isNeedFreeze:o.isNeedFreeze,freezeCols:o.freezeCols,isNeedMerge:o.isNeedMerge,mergeCols:o.mergeCols,mergeRule:o.mergeRule,columnSize:o.columnSize,minColumnSize:o.minColumnSize,maxColumnSize:o.maxColumnSize,headerRowSize:o.headerRowSize,rowSize:o.rowSize,regionColumnSize:o.regionColumnSize,headerCellStyleGetter:o.headerCellStyleGetter,summaryCellStyleGetter:o.summaryCellStyleGetter,sequenceCellStyleGetter:o.sequenceCellStyleGetter,header:o.header,items:o.items,crossHeader:o.crossHeader,crossItems:o.crossItems}),this.table.on(BI.Table.EVENT_TABLE_SCROLL,function(){self.sequence.getVerticalScroll()!==this.getVerticalScroll()&&(self.sequence.setVerticalScroll(this.getVerticalScroll()),self.sequence.populate()),self.fireEvent(BI.Table.EVENT_TABLE_SCROLL,arguments)}),this.table.on(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE,function(){o.regionColumnSize=this.getRegionColumnSize(),o.columnSize=this.getColumnSize(),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE,arguments)}),this.table.on(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE,function(){o.regionColumnSize=this.getRegionColumnSize(),o.columnSize=this.getColumnSize(),self.fireEvent(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE,arguments)}),this.htape=BI.createWidget({type:"bi.absolute",element:this,items:[{el:this.sequence,left:0,top:0},{el:this.table,top:0,left:o.showSequence===!0?o.seqWidth:0}]}),this._populate()},_populate:function(){var o=this.options;o.showSequence===!0?(this.sequence.setVisible(!0),this.table.element.css("left",o.seqWidth+"px"),this.table.setWidth(o.width-o.seqWidth),this.sequence.setWidth(o.seqWidth)):(this.sequence.setVisible(!1),this.table.element.css("left","0px"),this.table.setWidth(o.width))},setWidth:function(width){BI.PageTable.superclass.setWidth.apply(this,arguments),this.table.setWidth(this.options.showSequence?width-this.options.seqWidth:width)},setHeight:function(height){BI.PageTable.superclass.setHeight.apply(this,arguments),this.table.setHeight(height),this.sequence.setHeight(height-BI.GridTableScrollbar.SIZE)},setColumnSize:function(columnSize){this.options.columnSize=columnSize,this.table.setColumnSize(columnSize)},getColumnSize:function(){return this.table.getColumnSize()},setRegionColumnSize:function(columnSize){this.options.columnSize=columnSize,this.table.setRegionColumnSize(columnSize)},getRegionColumnSize:function(){return this.table.getRegionColumnSize()},hasLeftHorizontalScroll:function(){return this.table.hasLeftHorizontalScroll()},hasRightHorizontalScroll:function(){return this.table.hasRightHorizontalScroll()},setLeftHorizontalScroll:function(scrollLeft){this.table.setLeftHorizontalScroll(scrollLeft)},setRightHorizontalScroll:function(scrollLeft){this.table.setRightHorizontalScroll(scrollLeft)},setVerticalScroll:function(scrollTop){this.table.setVerticalScroll(scrollTop),this.sequence.setVerticalScroll(scrollTop)},getVerticalScroll:function(){return this.table.getVerticalScroll()},setVPage:function(page){this.sequence.setVPage&&this.sequence.setVPage(page)},setHPage:function(page){this.sequence.setHPage&&this.sequence.setHPage(page)},attr:function(){BI.SequenceTable.superclass.attr.apply(this,arguments),this.table.attr.apply(this.table,arguments),this.sequence.attr.apply(this.sequence,arguments)},restore:function(){this.table.restore(),this.sequence.restore()},populate:function(items,header,crossItems,crossHeader){var o=this.options;items&&(o.items=items),header&&(o.header=header),crossItems&&(o.crossItems=crossItems),crossHeader&&(o.crossHeader=crossHeader),this._populate(),this.table.populate.apply(this.table,arguments),this.sequence.populate.apply(this.sequence,arguments),this.sequence.setVerticalScroll(this.table.getVerticalScroll())},destroy:function(){this.table.destroy(),BI.SequenceTable.superclass.destroy.apply(this,arguments)}}),BI.shortcut("bi.sequence_table",BI.SequenceTable),!function(){BI.WaterMark=BI.inherit(BI.Widget,{props:{baseCls:"bi-watermark",watermark:{},angle:20},mounted:function(){var self=this;this.canvas=BI.Func.createEmptyCanvas(),this.container.element.append(this.canvas),this._paint(),BI.ResizeDetector.addResizeListener(this,function(){self._paint()})},render:function(){var self=this,o=this.options;return this.value=BI.extend({text:"",fontSize:12,color:"#999",horizontalGap:200,verticalGap:100},o.watermark),{type:"bi.absolute",ref:function(_ref){self.container=_ref}}},_initCanvas:function(){var containerWidth=this.container.element.width(),containerHeight=this.container.element.height();return 0!==containerHeight&&0!==containerWidth&&(this.canvas.width=containerWidth,this.canvas.height=containerHeight,!0)},_paint:function(){this._initCanvas()&&BI.Func.paintWaterMark(this.canvas,this.value)},setValue:function(value){this.value=BI.extend(this.value,value),this._paint()}}),BI.shortcut("bi.watermark",BI.WaterMark)}(),!function(){BI.DivWaterMark=BI.inherit(BI.Widget,{props:{baseCls:"bi-div-watermark",watermark:{},angle:20},mounted:function(){var self=this,o=this.options;this.element.css({fontSize:this.value.fontSize+"px",color:this.value.color}),this._showWatermark(),BI.ResizeDetector.addResizeListener(this,function(){self._showWatermark()})},render:function(){var self=this,o=this.options;return this.value=BI.extend({text:"",fontSize:12,color:"#999",horizontalGap:200,verticalGap:100},o.watermark),this.deg=Math.PI/180*this.options.angle,this.markWidth=BI.DOM.getTextSizeWidth(this.value.text,this.value.fontSize)+this.value.horizontalGap,{type:"bi.absolute",ref:function(ref){self.container=ref},items:[{el:{type:"bi.button_group",layouts:[{type:"bi.vertical",bgap:this.value.verticalGap}],cls:"watermark-container",ref:function(ref){self.watermarkContainer=ref}},left:0,top:0,right:0,bottom:0}]}},setValue:function(value){this.value=BI.extend(this.value,value),this._showWatermark()},_showWatermark:function(){var self=this,o=this.options,hgap=this.value.horizontalGap;this.markWidth=BI.DOM.getTextSizeWidth(this.value.text,this.value.fontSize)+hgap;for(var items=[],actualSize=this._getContainerSize(),textHeight=BI.DOM.getTextSizeHeight(this.value.text,this.value.fontSize),watermarkHeight=textHeight+this.value.verticalGap,col=BI.parseInt(actualSize.width/this.markWidth),row=BI.parseInt(actualSize.height/watermarkHeight),style=this._addFilterForOldIE(),texts=(this.value.text+"").split("\n"),r=0;r<row+3;r++){for(var rowItems=[],c=0;c<col+3;c++){var markItem;markItem=texts.length>1?BI.createWidget({type:"bi.vertical",hgap:hgap/2,items:BI.map(texts,function(i,text){return{type:"bi.label",cls:"watermark-text",text:text}})}):BI.createWidget({type:"bi.label",hgap:hgap/2,cls:"watermark-text",text:this.value.text}),markItem.element.css(BI.extend({fontSize:self.value.fontSize+"px",color:self.value.color},style)),rowItems.push(markItem)}items.push({el:{type:"bi.horizontal",scrollx:!1,items:rowItems},lgap:r%2===0?-(this.markWidth/2):0})}this.watermarkContainer.populate(items),this.container.attr("items")[0].left=-this._getContainerLeft(),this.container.attr("items")[0].right=-this.markWidth,this.container.attr("items")[0].bottom=-this._getContainerBottom(),this.container.resize()},_addFilterForOldIE:function(){if(BI.isIE9Below()){var rad=-this.deg,m11=Math.cos(rad),m12=-1*Math.sin(rad),m21=Math.sin(rad),m22=m11,filters="progid:DXImageTransform.Microsoft.Chroma(color='white') progid:DXImageTransform.Microsoft.Matrix(M11="+m11+",M12="+m12+",M21="+m21+",M22="+m22+",SizingMethod='auto expand')";return{filter:filters}}return{}},_getContainerSize:function(){var height=this.element.height(),width=this.element.width();return{width:width*Math.cos(this.deg)+height*Math.sin(this.deg),height:width*Math.sin(this.deg)+height/Math.cos(this.deg)}},_getContainerLeft:function(){var height=this.element.height();return height*Math.tan(Math.PI/180*20)},_getContainerBottom:function(){return this._getContainerSize().height-this.element.height()}}),BI.shortcut("bi.div.watermark",BI.DivWaterMark)}();/**
 * 公式编辑控件
 * @class BI.FormulaEditor
 * @extends BI.Widget
 */
BI.FormulaEditor = BI.inherit(BI.Single, {
    _defaultConfig: function () {
        return BI.extend(BI.FormulaEditor.superclass._defaultConfig.apply(), {
            baseCls: "bi-formula-editor",
            watermark: "",
            value: "",
            fieldTextValueMap: {},
            showHint: true,
            showTip: true,
            lineHeight: 2,
            paramFormatter: function (v) {
                return v;
            }
        });
    },
    _init: function () {
        BI.FormulaEditor.superclass._init.apply(this, arguments);
        var o = this.options, self = this;
        this.errorTipText = "";
        this._isEditing = false;
        this.formulaEditor = BI.createWidget({
            type: "bi.default"
        });
        var formulaHint = CodeMirror.hint.formula;
        CodeMirror.hint.formula = function (cm, options) {
            var result = formulaHint(cm, options);
            if (result) {
                CodeMirror.on(result, "shown", function () {
                    self.fireEvent("EVENT_SHOW_HINT", BI.get(result, "list", []));
                });

                CodeMirror.on(result, "select", function (comp) {
                    self.fireEvent("EVENT_SELECT_HINT", comp);
                });
            }

            return result;
        };
        this.editor = CodeMirror(this.formulaEditor.element[0], {
            lineWrapping: true,
            lineNumbers: false,
            mode: "formula",
            // 解决插入字段由括号或其他特殊字符包围时分裂的bug
            specialChars: /[\u0000-\u001f\u007f\u00ad\u200c-\u200f\u2028\u2029\ufeff]/,
            // 光标旁的括号对高亮标记, 极限搜索范围2000个字符
            // DEC-7094 IE下高亮括号会使得鼠标无法框选文本, 目前实在看不出来是为什么, 先在IE下取消使用了
            matchBrackets: BI.isIE() ? null : {
                maxScanLines: 2e3,
                maxHighlightLineLength: 2e3
            }
        });
        o.lineHeight === 1 ? this.element.addClass("codemirror-low-line-height") : this.element.addClass("codemirror-high-line-height");
        var func = BI.debounce(function () {
            BI.nextTick(function () {
                self.fireEvent(BI.FormulaEditor.EVENT_CHANGE);
            });
        }, 300);
        this.editor.on("change", function (cm, change) {
            self._checkWaterMark();
            // 调用setValue也会触发change, 提示框只需要在编辑的时候触发
            if (o.showHint && self.editor.hasFocus()) {
                CodeMirror.showHint(cm, CodeMirror.formulaHint, {completeSingle: false});
            }
            // 与input一样, 防止抖动
            func();
        });

        // 拦截ctrl + X, ctrl + C, 重新处理选中文本到剪贴板
        this.editor.setOption("extraKeys", {
            "Ctrl-X": function (cm) {
                self._getSelection(cm);
                cm.replaceSelection("");
                cm.focus();
            },

            "Cmd-X": function (cm) {
                self._getSelection(cm);
                cm.replaceSelection("");
                cm.focus();
            },

            "Cmd-C": function (cm) {
                self._getSelection(cm);
            },

            "Ctrl-C": function (cm) {
                self._getSelection(cm);
            }
        });

        // 不知道为啥copy和paste事件都触发不了
        this.editor.on("inputRead", function (cm, info) {
            if(info.origin === "paste") {
                // TODO 因为无法阻止默认的文本粘贴，此处先把粘贴的文本删掉，再次插入format的文本
                BI.nextTick(function () {
                    // 把默认粘贴进去的文本删除掉
                    if (BI.isFunction(o.pasteSetter)) {
                        var endPos = self.editor.getDoc().getCursor();
                        self.editor.getDoc().replaceRange("", info.from, endPos);
                        // 使用一般的方法重新插入value值
                        o.pasteSetter(info.text.join("\n"), info.from);
                    }
                });
            }
        });

        this.editor.on("focus", function () {
            self._isEditing = true;
            self._checkWaterMark();
            self.fireEvent(BI.FormulaEditor.EVENT_FOCUS);
        });

        this.editor.on("blur", function () {
            self._isEditing = false;
            self.fireEvent(BI.FormulaEditor.EVENT_BLUR);
        });

        this.editor.on("keyup", function (cm, keyboard) {
            self.fireEvent(BI.FormulaEditor.EVENT_KEY_UP, keyboard.key);
        });

        var tips = [{
            el: {
                type: "bi.vertical",
                cls: "bi-bubble",
                invisible: true,
                items: [{
                    type: "bi.label",
                    hgap: 5,
                    ref: function (_ref) {
                        self.errorText = _ref;
                    },
                    cls: "bubble-error",
                    text: ""
                }],
                ref: function (_ref) {
                    self.errorTip = _ref;
                }
            },
            left: 0,
            bottom: 0
        }, {
            el: {
                type: "bi.vertical",
                cls: "bi-bubble",
                invisible: !o.showTip,
                items: [{
                    type: "bi.label",
                    hgap: 5,
                    cls: "bi-tips",
                    text: BI.i18nText("BI-Basic_Formula_Valid")
                }],
                ref: function (_ref) {
                    self.normalTip = _ref;
                }
            },
            left: 0,
            bottom: 0
        }];

        if (BI.isKey(this.options.watermark)) {
            var self = this;
            this.watermark = BI.createWidget({
                type: "bi.text",
                cls: "bi-water-mark",
                text: this.options.watermark,
                whiteSpace: "nowrap",
                textAlign: "left"
            });
            BI.createWidget({
                type: "bi.absolute",
                element: self,
                items: [{
                    el: this.formulaEditor,
                    left: 0,
                    right: 0,
                    top: 0,
                    bottom: o.showTip ? 24 : 0
                }, {
                    el: self.watermark,
                    left: 6,
                    right: 6,
                    top: 3,
                    bottom: 0
                }].concat(tips)
            });

            this.watermark.element.bind(
                "mousedown", function (e) {
                    self.insertString("");
                    self.editor.focus();
                    e.stopEvent();
                }
            );
            this.watermark.element.bind("click", function (e) {
                self.editor.focus();
                e.stopEvent();
            });
        } else {
            BI.createWidget({
                type: "bi.absolute",
                element: self,
                items: [{
                    el: this.formulaEditor,
                    left: 0,
                    right: 0,
                    top: 0,
                    bottom: o.showTip ? 24 : 0
                }].concat(tips)
            });
        }

    },

    mounted: function () {
        var o = this.options;
        if(BI.isNotNull(o.value)) {
            this.setValue(o.value);
        }
    },

    _getSelection: function (cm) {
        var self = this;
        if(!this.clipboard) {
            var adaptCopyWidget = BI.createWidget({
                type: "bi.layout",
                invisible: true
            });
            this.clipboard = BI.createWidget({
                type: "bi.clipboard",
                el: adaptCopyWidget,
                copy: function () {
                    return selectString;
                },
                afterCopy: function () {
                    self.clipboard.destroy();
                    self.clipboard = null;
                }
            });
            BI.createWidget({
                type: "bi.absolute",
                element: "body",
                items: [{
                    el: this.clipboard
                }]
            });
        }
        var selectString = cm.getDoc().getSelection() || "";
        var allParams = BI.filter(selectString.split("\u200b"), function (idx) {
            return idx % 2 === 1;
        });
        selectString = selectString.replaceAll(BI.concat(allParams, "\u200b").join("|"), function (matchStr) {
            switch (matchStr) {
                case "\u200b":
                    return "";
                default:
                    var replaceString = self.options.fieldTextValueMap[matchStr];
                    return replaceString ? "${" + replaceString + "}" : matchStr;
            }
        });
        this.clipboard.element.click();
    },

    _checkWaterMark: function () {
        var o = this.options;
        if (!this.disabledWaterMark && BI.isEmptyString(this.editor.getValue()) && BI.isKey(o.watermark)) {
            this.watermark && this.watermark.visible();
        } else {
            this.watermark && this.watermark.invisible();
        }
    },

    selectAll: function () {
        this.editor.execCommand("selectAll");
        this._isEditing = true;
    },

    disableWaterMark: function () {
        this.disabledWaterMark = true;
        this._checkWaterMark();
    },

    focus: function () {
        if (!this._isEditing === true) {
            this.editor.focus();
            this.selectAll();
        }
    },

    showTip: function (v) {
        this.normalTip.setVisible(false);
        this.errorTip.setVisible(true);
        v && this.errorText.setText(v);
    },

    hideTip: function () {
        this.normalTip.setVisible(true);
        this.errorTip.setVisible(false);
    },

    getTip: function () {
        return this.errorTipText;
    },

    /**
     * 添加字段
     * @param fieldId
     * @param force, 判断是否强制不标红
     */
    insertField: function (fieldId, force) {
        var value = fieldId;
        var fieldFormattedName = this.options.paramFormatter(fieldId) || "undefined";
        var from = this.editor.getCursor();
        // 解决插入字段由括号或其他特殊字符包围时分裂的bug,在两端以不可见字符包裹一下
        var showName = fieldFormattedName.replaceAll("^<!.*!>$", function (str) {
            return str.substring(2, str.length - 2);
        });
        this.editor.replaceSelection("\u200b" + showName + "\u200b");
        var to = this.editor.getCursor();
        var className = "fieldName";
        if (BI.isNotNull(fieldFormattedName.match("^<!.*!>$")) && !force) {
            className = "error-field";
        }
        // handleMouseEvents和replacedWith需要搭配使用，让codemirror接管鼠标事件
        this.editor.markText(from, to, {className: className, handleMouseEvents: true, atomic: true, startStyle: "start", endStyle: "end", value: value, replacedWith: BI.$("<span class='" + className + "  start end' />").text(showName)[0]});
        this.editor.focus();
    },

    insertFunction: function (fn) {
        var from = this.editor.getCursor();
        this.editor.replaceSelection(fn);
        var to = this.editor.getCursor();
        this.editor.markText(from, to, {className: "#function", atomic: true});
        this.editor.replaceSelection("()");
        to = this.editor.getCursor();
        to.ch = to.ch - 1;
        this.editor.setCursor(to);
        this.editor.focus();
    },
    insertOperator: function (op) {
        var from = this.editor.getCursor();
        this.editor.replaceSelection(op);
        var to = this.editor.getCursor();
        this.editor.markText(from, to, {className: "%operator", atomic: true});
        this.editor.focus();
    },

    insertString: function (str) {
        this.editor.replaceSelection(str);
        this.editor.focus();
    },

    getFormulaString: function () {
        return this.editor.getValue();
    },

    getUsedFields: function () {
        var fieldMap = this.options.fieldTextValueMap;
        var fields = [];
        this.editor.getValue(true, function (line) {
            var value = line.text;
            _.forEach(line.markedSpans, function (i, ms) {
                switch (i.marker.className) {
                    case "fieldName":
                    case "error-field":
                        // 因为插入字段的时候首尾加了不可见字符，所以首尾缩进一个字符
                        var dId = i.marker.value;
                        if (!fields.contains(dId)) {
                            fields.push(dId);
                        }

                }
            });
        });
        return fields;
    },

    getCheckString: function () {
        return this.editor.getValue(true, function (line) {
            var rawText = line.text, value = line.text, num = 0;
            value.text = rawText;
            var markedSpans = _.clone(line.markedSpans) || [];
            markedSpans.sort(function (a, b) {
                return a.from - b.from;
            });

            _.forEach(markedSpans, function (i, ms) {

                switch (i.marker.className) {
                    case "fieldName":
                    case "error-field":
                        var fieldNameLength = i.to - i.from;
                        value = value.substr(0, i.from + num) + "$a" + value.substr(i.to + num, value.length);
                        num = num + 2 - fieldNameLength;
                        break;
                    default:
                }

            });
            return value;
        }).replaceAll("(\\$\\{.*?\\})\\s*|\u200b", function (matchStr, groupStr) {
            switch (matchStr) {
                case "\u200b":
                    return "";
                default:
                    return groupStr;
            }
        });
    },

    getValue: function () {
        var fieldMap = this.options.fieldTextValueMap;
        var v = this.editor.getValue("\n", function (line) {
            var rawText = line.text, value = line.text, num = 0;
            value.text = rawText;
            var markedSpans = _.clone(line.markedSpans) || [];
            markedSpans.sort(function (a, b) {
                return a.from - b.from;
            });

            _.forEach(markedSpans, function (i, ms) {
                switch (i.marker.className) {
                    case "fieldName":
                    case "error-field":
                        var fieldNameLength = i.to - i.from;
                        var fieldId = i.marker.value;
                        // 这边直接跳过了不可见字符
                        value = value.substr(0, i.from + num) + "$\{" + fieldId + "\}" + value.substr(i.to + num, value.length);
                        num += fieldId.length - fieldNameLength + 3;
                        break;
                    default:
                }
            });
            return value;
        });
        return v.replaceAll("(\\$\\{.*?\\})\\s*|\u200b", function (matchStr, groupStr) {
            switch (matchStr) {
                case "\u200b":
                    return "";
                default:
                    return groupStr;
            }
        });
    },

    markField: function (field) {
        var className = field.invalid ? "error-field" : "fieldName";
        this.editor.markText(field.from, field.to, {
            handleMouseEvents: true,
            className: className,
            atomic: true,
            startStyle: "start",
            endStyle: "end",
            value: field.value,
            replacedWith: BI.$("<span class='" + className + "  start end' />").text(field.text)[0]});
    },

    markFunction: function (func) {
        this.editor.markText(func.from, func.to, {
            className: "#function",
            atomic: true
        });
    },

    getParamWrap: function () {
        return "\u200b";
    },

    setValue: function (value) {
        this.editor.setValue(value);
    },

    setFieldTextValueMap: function (fieldTextValueMap) {
        this.options.fieldTextValueMap = fieldTextValueMap;
    },

    refresh: function () {
        var self = this;
        BI.nextTick(function () {
            self.editor.refresh();
        });
    }

});
BI.FormulaEditor.EVENT_CHANGE = "EVENT_CHANGE";
BI.FormulaEditor.EVENT_BLUR = "EVENT_BLUR";
BI.FormulaEditor.EVENT_FOCUS = "EVENT_FOCUS";
BI.FormulaEditor.EVENT_KEY_UP = "EVENT_KEY_UP";
BI.shortcut("bi.formula_editor", BI.FormulaEditor);


!function(r){var n={};function i(e){if(n[e])return n[e].exports;var t=n[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.m=r,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)i.d(r,n,function(e){return t[e]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=7)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.store=t.model=t.Model=t.shortcut=void 0;var n=BI.Decorators,i=n.shortcut,o=n.Model,a=n.model,l=n.store;t.store=l,t.model=a,t.Model=o,t.shortcut=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.HorizontalAdaptXtype=t.DefaultXtype=t.GridXtype=t.LeftXtype=t.HorizontalAutoXtype=t.VirtualGroupXtype=t.CenterXtype=t.CenterAdaptXtype=t.AbsoluteXtype=t.LayoutXtype=t.LeftRightVerticalAdaptLayoutXtype=t.HtapeXtype=t.VtapeXtype=t.VerticalAdaptXtype=t.VerticalXtype=t.GridListXtype=t.ResizableContainerVtapeXtype=t.ResizableContainerHtapeXtype=t.ResizableContainerXtype=t.FormulaInsertXtype=t.StepsXtype=t.SvgXtype=t.WarningLabelXtype=t.WatermarkXtype=t.FilterEmptyFormulaItemXtype=t.FilterFormulaItemXtype=t.AndOrFilterExpanderXtype=t.FilterDateItemXtype=t.FilterNumberItemXtype=t.FilterStringItemXtype=t.NoTypeItemXtype=t.FilterOperationXtype=t.FilterXtype=t.DraggableXtype=t.ClipboardXtype=t.TreeTableXtype=t.TableViewXtype=t.ResponsiveTableXtype=t.PreviewTableXtype=t.LayerTreeTableXtype=t.CollectionTableXtype=t.GridTableXtype=t.ResizableTableXtype=t.AdaptiveTableXtype=t.SelectColorComboXtype=t.SqlEditorXtype=t.RichEditorParamButtonXtype=t.RichEditorAlignRightButtonXtype=t.RichEditorAlignCenterButtonXtype=t.RichEditorAlignLeftButtonXtype=t.RichEditorBackgroundColorChooserXtype=t.RichEditorColorChooserXtype=t.RichEditorUnderlineButtonXtype=t.RichEditorItalicButtonXtype=t.RichEditorBoldButtonXtype=t.RichEditorSizeChooserXtype=t.RichEditorFontChooserXtype=t.RichEditorTextToolbarXtype=t.RichEditorXtype=t.FormulaEditorXtype=t.CodeEditorXtype=t.SearchIconTextValueComboXtype=t.MaterialPreviewTableXtype=t.ExpandableSearchEditorXtype=t.ExpandablePanelXtype=t.SimpleColorChooser=t.MultilayerSingleLevelTreeXtype=t.TextXtype=t.BarPopoverXtype=t.SearchEditorXtype=t.ButtonGroupXtype=t.LastTreeLeafItemXtype=t.FirstTreeLeafItemXtype=t.MidTreeLeafItemXtype=t.IconArrowNodeXtype=t.ButtonTreeXtype=t.CustomTreeXtype=t.MultiSelectItemXtype=t.DynamicDateComboXtype=t.NumberEditorXtype=t.IconComboXtype=t.DownListComboXtype=t.TabXtype=t.IconButtonXtype=t.IconLabelXtype=t.BarPopOverXtype=t.EditorXtype=t.TextValueComboXtype=t.TextButtonXtype=t.TextEditorXtype=t.ButtonXtype=t.LabelXtype=void 0;t.LabelXtype="bi.label";t.ButtonXtype="bi.button";t.TextEditorXtype="bi.text_editor";t.TextButtonXtype="bi.text_button";t.TextValueComboXtype="bi.text_value_combo";t.EditorXtype="bi.editor";t.BarPopOverXtype="bi.bar_popover";t.IconLabelXtype="bi.icon_label";t.IconButtonXtype="bi.icon_button";t.TabXtype="bi.tab";t.DownListComboXtype="bi.down_list_combo";t.IconComboXtype="bi.icon_combo";t.NumberEditorXtype="bi.number_editor";t.DynamicDateComboXtype="bi.dynamic_date_combo";t.MultiSelectItemXtype="bi.multi_select_item";t.CustomTreeXtype="bi.custom_tree";t.ButtonTreeXtype="bi.button_tree";t.IconArrowNodeXtype="bi.icon_arrow_node";t.MidTreeLeafItemXtype="bi.mid_tree_leaf_item";t.FirstTreeLeafItemXtype="bi.first_tree_leaf_item";t.LastTreeLeafItemXtype="bi.last_tree_leaf_item";t.ButtonGroupXtype="bi.button_group";t.SearchEditorXtype="bi.search_editor";t.BarPopoverXtype="bi.bar_popover";t.TextXtype="bi.text";t.MultilayerSingleLevelTreeXtype="bi.multilayer_single_level_tree";t.SimpleColorChooser="bi.simple_color_chooser";t.ExpandablePanelXtype="bi.expandable_panel";t.ExpandableSearchEditorXtype="bi.expandable_search_editor";t.MaterialPreviewTableXtype="bi.material.preview_table";t.SearchIconTextValueComboXtype="bi.material.search_icon_text_value_combo";t.CodeEditorXtype="bi.code_editor";t.FormulaEditorXtype="bi.formula_editor";t.RichEditorXtype="bi.rich_editor";t.RichEditorTextToolbarXtype="bi.rich_editor_text_toolbar";t.RichEditorFontChooserXtype="bi.rich_editor_font_chooser";t.RichEditorSizeChooserXtype="bi.rich_editor_size_chooser";t.RichEditorBoldButtonXtype="bi.rich_editor_bold_button";t.RichEditorItalicButtonXtype="bi.rich_editor_italic_button";t.RichEditorUnderlineButtonXtype="bi.rich_editor_underline_button";t.RichEditorColorChooserXtype="bi.rich_editor_color_chooser";t.RichEditorBackgroundColorChooserXtype="bi.rich_editor_background_color_chooser";t.RichEditorAlignLeftButtonXtype="bi.rich_editor_align_left_button";t.RichEditorAlignCenterButtonXtype="bi.rich_editor_align_center_button";t.RichEditorAlignRightButtonXtype="bi.rich_editor_align_right_button";t.RichEditorParamButtonXtype="bi.rich_editor_param_button";t.SqlEditorXtype="bi.sql_editor";t.SelectColorComboXtype="bi.select_color_combo";t.AdaptiveTableXtype="bi.adaptive_table";t.ResizableTableXtype="bi.resizable_table";t.GridTableXtype="bi.grid_table";t.CollectionTableXtype="bi.collection_table";t.LayerTreeTableXtype="bi.layer_tree_table";t.PreviewTableXtype="bi.preview_table";t.ResponsiveTableXtype="bi.responsive_table";t.TableViewXtype="bi.table_view";t.TreeTableXtype="bi.tree_table";t.ClipboardXtype="bi.clipboard";t.DraggableXtype="bi.materials.draggable";t.FilterXtype="bi.filter";t.FilterOperationXtype="bi.filter_operation";t.NoTypeItemXtype="bi.no.type.item";t.FilterStringItemXtype="bi.filter.string.item";t.FilterNumberItemXtype="bi.filter.number.item";t.FilterDateItemXtype="bi.filter.data.item";t.AndOrFilterExpanderXtype="bi.and.or.filter.expander";t.FilterFormulaItemXtype="bi.filter.formula.item";t.FilterEmptyFormulaItemXtype="bi.filter.empty.formula.item";t.WatermarkXtype="bi.watermark";t.WarningLabelXtype="bi.warning_label";t.SvgXtype="bi.svg";t.StepsXtype="bi.steps";t.FormulaInsertXtype="bi.formula_insert";t.ResizableContainerXtype="bi.resizable_container";t.ResizableContainerHtapeXtype="bi.resize_container.htape";t.ResizableContainerVtapeXtype="bi.resize_container.vtape";t.GridListXtype="bi.grid_list";t.VerticalXtype="bi.vertical";t.VerticalAdaptXtype="bi.vertical_adapt";t.VtapeXtype="bi.vtape";t.HtapeXtype="bi.htape";t.LeftRightVerticalAdaptLayoutXtype="bi.left_right_vertical_adapt";t.LayoutXtype="bi.layout";t.AbsoluteXtype="bi.absolute";t.CenterAdaptXtype="bi.center_adapt";t.CenterXtype="bi.center";t.VirtualGroupXtype="bi.virtual_group";t.HorizontalAutoXtype="bi.horizontal_auto";t.LeftXtype="bi.left";t.GridXtype="bi.grid";t.DefaultXtype="bi.default";t.HorizontalAdaptXtype="bi.horizontal_adapt"},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.input=function i(t){return function(e){n[t]=e}},t.getInput=function o(e){var t=n[e];if(BI.isNull(t))throw new TypeError;return t.xtype};var n={}},function(e,t,r){"use strict";function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.FormulaInserter=void 0;var n,i,o,l=r(1),s=r(0),m=function h(e){if(e&&e.__esModule)return e;if(null===e||"object"!==a(e)&&"function"!=typeof e)return{"default":e};var t=u();if(t&&t.has(e))return t.get(e);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var o=n?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(r,i,o):r[i]=e[i]}r["default"]=e,t&&t.set(e,r);return r}(r(10)),g=r(4);function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function c(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function f(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function p(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var v=/(\$[{][^}]*[}])/,d=(0,s.shortcut)()((o=i=function(i){function e(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return p(c(e=i.call.apply(i,[this].concat(r))||this),"formulaEditor",void 0),p(c(e),"props",{value:{formula:""}}),e}f(e,i);var t=e.prototype;return t.getToolbarLayout=function(){return{type:l.LayoutXtype}},t.render=function(){var t=this;return{type:l.VtapeXtype,items:[{el:{type:l.FormulaEditorXtype,cls:"bi-border",ref:function(e){t.formulaEditor=e},watermark:BI.i18nText("BI-Basic_Formula_Watermark"),listeners:[{eventName:BI.FormulaEditor.EVENT_CHANGE,action:function(){t.validate()}},{eventName:"EVENT_SHOW_HINT",action:function(e){t.fireEvent("EVENT_SHOW_HINT",BI.first(e))}},{eventName:"EVENT_SELECT_HINT",action:function(e){t.fireEvent("EVENT_SELECT_HINT",e)}}]},height:155},this.getToolbarLayout()]}},t.mounted=function(){this.setValue(this.options.value.formula)},t.insertFunction=function(e){this.formulaEditor.insertFunction(e)},t.insertField=function(e){this.formulaEditor.insertField(e,!0)},t.getValue=function(){return{formula:this.formulaEditor.getValue()}},t.validate=function(){""!==this.formulaEditor.getValue()?this.fireEvent("EVENT_VALIDATE"):this.formulaEditor.hideTip()},t.setValidation=function(e){e.validation?this.formulaEditor.hideTip():this.formulaEditor.showTip(BI.i18nText("BI-Basic_Formula_Invalid"))},t.setValue=function(e){this.formulaEditor.refresh(),this.formulaEditor.setValue(""),this.insertFormula(e),this.validate()},t.analyzeContent=function(e){return e.match(/\$[{][^}]*[}]|\w+|\$\{[^$()+\-*/)$,]*\w\}|\$\{[^$()+\-*/]*\w\}|\$\{[^$()+\-*/]*[\u4e00-\u9fa5]\}|\w|(.)|\n/g)},t.paramFormatter=function(e){return(0,g.getVarDisplayNameByValue)(e)},t.insertFormula=function(){var s=this,e=0<arguments.length&&arguments[0]!==undefined?arguments[0]:"",t=1<arguments.length?arguments[1]:undefined,r=this.analyzeContent(e)||[],u=[],c=[],f=0,p=0,d="";BI.isNotNull(t)&&(f=t.line,p=t.ch);var h=this.formulaEditor.getParamWrap();r.forEach(function(e){if(v.test(e)){var t=e.substring(2,e.length-1),r=s.paramFormatter(t),n=h+r.replaceAll("^<!.*!>$",function(e){return e.substring(2,e.length-2)})+h,i=m.Pos(f,p);d+=n,p+=n.length;var o=m.Pos(f,p);u.push({from:i,to:o,value:t,invalid:/^<!.*!>$/.test(r),text:n})}else{if(BI.isNotNull((0,g.isBelong2FormulaFunction)(e))){var a=m.Pos(f,p),l=m.Pos(f,p+e.length);c.push({from:a,to:l,value:e})}"\n"===e&&(f++,p=0),d+=e,"\n"!==e&&(p+=e.length)}}),this.formulaEditor.insertString(d),BI.each(u,function(e,t){s.formulaEditor.markField(t)}),BI.each(c,function(e,t){s.formulaEditor.markFunction(t)})},e}(BI.Widget),p(i,"xtype","bi.formula_operating_panel.inserter"),n=o))||n;t.FormulaInserter=d},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isFormulaConfigCached=function h(){return p},t.getVarDisplayNameByValue=function m(t){var e=d.find(function(e){return e.value===t});return e?e.text:"undefined"},t.setFormulaConfigCache=function g(e){p=!0,d=e.vars,BI.FormulaJSONs=e.JSONs,BI.FormulaCollections=e.JSONs.reduce(function(e,t){return e.push(t.name.toLowerCase(),t.name.toUpperCase()),e},[]),o=e.JSONs},t.transformFormulaJSONs2FunctionTypes=function v(){return Object.keys(o.reduce(function(e,t){return t.type in e||(e[t.type]=[]),e},{})).map(function(e){return{text:e,title:e,value:e,cls:"bi-list-item-select",textAlign:"left",height:20,hgap:5}})},t.transformFormulaJSONs2FunctionNames=a,t.getFunctionTypeByFunctionName=function y(t){var e=o.find(function(e){return e.name===t});if(BI.isNotNull(e))return e.type;return null},t.getFunctionDescriptionByFunctionName=function b(t){var e=o.find(function(e){return e.name===t});return BI.isNotNull(e)?e.def:""},t.getSearchedFunctionNames=function w(e){if(""===e)return[];var t=BI.Func.getSearchResult(a(),e,"val"),r=t.match,n=t.find;return r.sort(function(e,t){return e.value>t.value?1:-1}),n.sort(function(e,t){return e.value>t.value?1:-1}),[].concat(f(r),f(n))},t.transformFormulaVarItems=function x(){if(!p)return[];var o={};d.forEach(function(e){e.type in o?o[e.type].push(e):o[e.type]=[e]});var a=l.FORMULA_VAR_NODES.map(function(e){var t=BI.size(o[e.value]);return function n(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?i(Object(r),!0).forEach(function(e){c(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}({},e,{open:!0,height:25,text:BI.i18nText(e.i18nText)+(0<t?" - [".concat(t,"]"):"")})});return Object.keys(o).forEach(function(t){var e=l.FORMULA_VAR_NODES.find(function(e){return e.value===t});if(e){var r=e.id,n=o[t],i=BI.size(n);a.push.apply(a,f(n.map(function(e,t){return{pId:r,id:BI.UUID(),text:e.text,value:e.value,lgap:16,layoutType:t===i-1?s.LastTreeLeafItemXtype:s.MidTreeLeafItemXtype,type:u.FormulaVarItem.xtype,height:25}})))}}),a},t.getVarDescriptionByVarName=function C(t){var e=d.find(function(e){return e.value===t});return BI.isNotNull(e)?e.def:""},t.isBelong2FormulaFunction=function S(t){return a().find(function(e){return e.text.toLowerCase()===t.toLowerCase()})};var n=r(11),l=r(5),s=r(1),u=r(12);function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function c(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function f(e){return function n(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}(e)||function t(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function r(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var p=!1,d=[],o=[];function a(r){return Object.keys(o.reduce(function(e,t){return t.name in e||r&&t.type!==r||(e[t.name]=[]),e},{})).map(function(e){return{type:n.FormulaFunctionItem.xtype,text:e,title:e,value:e,height:20}})}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FORMULA_VAR_NODES=t.FORMULA_VAR_TYPES=t.DEFAULT_FUNCTION_TYPE=t.DEFAULT_FUNCTION_NAME=void 0;var n=r(1);t.DEFAULT_FUNCTION_NAME="ABS";t.DEFAULT_FUNCTION_TYPE="MATH";var i={DATA_ITEMS:"DATA_ITEMS",VARS:"VARS",DATA_SET_VARS:"DATA_SET_VARS",REPORT_VARS:"REPORT_VARS",GLOBAL_VARS:"GLOBAL_VARS"},o=[{id:"1",pId:"-1",i18nText:"BI-Basic_Formula_Data_Items",value:(t.FORMULA_VAR_TYPES=i).DATA_ITEMS,type:n.IconArrowNodeXtype,iconCls:"search-font"},{id:"2",pId:"-1",i18nText:"BI-Basic_Formula_Vars",value:i.VARS,type:n.IconArrowNodeXtype,iconCls:"search-font"},{id:"3",pId:"-1",i18nText:"BI-Basic_Formula_Data_Set_Vars",value:i.DATA_SET_VARS,type:n.IconArrowNodeXtype,iconCls:"search-font"},{id:"4",pId:"-1",i18nText:"BI-Basic_Formula_Report_Vars",value:i.REPORT_VARS,type:n.IconArrowNodeXtype,iconCls:"search-font"},{id:"5",pId:"-1",i18nText:"BI-Basic_Formula_Global_Vars",value:i.GLOBAL_VARS,type:n.IconArrowNodeXtype,iconCls:"search-font"}];t.FORMULA_VAR_NODES=o},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.headerItemsData=t.defaultHeaderItems=void 0;t.defaultHeaderItems=["add","delete","moveUp","moveDown","refresh"];t.headerItemsData=[{type:"add",cls:"text-add-tip-font",title:"BI-Basic_Parameter_Insert",event:"EVENT_INSERT"},{type:"delete",cls:"close-font bi-error",title:"BI-Basic_Parameter_Delete",event:"EVENT_DELETE"},{type:"moveUp",cls:"add-up-font",title:"BI-Basic_Parameter_Move_Up",event:"EVENT_MOVE_UP"},{type:"moveDown",cls:"minus-down-font",title:"BI-Basic_Parameter_Move_Down",event:"EVENT_MOVE_DOWN"},{type:"refresh",cls:"parameter-refresh-font",title:"BI-Basic_Parameter_Refresh",event:"EVENT_REFRESH"}]},function(e,t,r){e.exports=r(8)},function(e,t,r){"use strict";var n=function i(e){return e&&e.__esModule?e:{"default":e}}(r(9));BI.extend(BI,n["default"])},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=void 0;var n=r(3),i=r(13),o=r(14),a=r(15),l=r(17),s={FormulaInserter:n.FormulaInserter,ComplexFormulaInserter:i.ComplexFormulaInserter,RegularFormulaInserter:o.RegularFormulaInserter,FormulaOpeartingPanel:a.FormulaOpeartingPanel,ParameterEditor:l.ParameterEditor};t["default"]=s},function(e,t,r){"use strict";var n,i,o;function nl(e){return(nl="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}o=function(){var e=navigator.userAgent,t=navigator.platform,m=/gecko\/\d/i.test(e),r=/MSIE \d/.test(e),n=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),i=/Edge\/(\d+)/.exec(e),S=r||n||i,T=S&&(r?document.documentMode||6:+(i||n)[1]),w=!i&&/WebKit\//.test(e),o=w&&/Qt\/\d+\.\d+/.test(e),a=!i&&/Chrome\//.test(e),g=/Opera\//.test(e),c=/Apple Computer/.test(navigator.vendor),l=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),u=/PhantomJS/.test(e),s=!i&&/AppleWebKit/.test(e)&&/Mobile\/\w+/.test(e),f=/Android/.test(e),p=s||f||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),x=s||/Mac/.test(t),d=/\bCrOS\b/.test(e),h=/win/i.test(t),v=g&&e.match(/Version\/(\d*\.\d*)/);(v=v&&Number(v[1]))&&15<=v&&(w=!(g=!1));var y=x&&(o||g&&(null==v||v<12.11)),b=m||S&&9<=T;function C(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var O,N=function N(e,t){var r=e.className,n=C(t).exec(r);if(n){var i=r.slice(n.index+n[0].length);e.className=r.slice(0,n.index)+(i?n[1]+i:"")}};function L(e){for(var t=e.childNodes.length;0<t;--t)e.removeChild(e.firstChild);return e}function E(e,t){return L(e).appendChild(t)}function _(e,t,r,n){var i=document.createElement(e);if(r&&(i.className=r),n&&(i.style.cssText=n),"string"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o<t.length;++o)i.appendChild(t[o]);return i}function I(e,t,r,n){var i=_(e,t,r,n);return i.setAttribute("role","presentation"),i}function k(e,t){if(3==t.nodeType&&(t=t.parentNode),e.contains)return e.contains(t);do{if(11==t.nodeType&&(t=t.host),t==e)return!0}while(t=t.parentNode)}function M(){var e;try{e=document.activeElement}catch(t){e=document.body||null}for(;e&&e.shadowRoot&&e.shadowRoot.activeElement;)e=e.shadowRoot.activeElement;return e}function A(e,t){var r=e.className;C(t).test(r)||(e.className+=(r?" ":"")+t)}function F(e,t){for(var r=e.split(" "),n=0;n<r.length;n++)r[n]&&!C(r[n]).test(t)&&(t+=" "+r[n]);return t}O=document.createRange?function O(e,t,r,n){var i=document.createRange();return i.setEnd(n||e,r),i.setStart(e,t),i}:function O(e,t,r){var n=document.body.createTextRange();try{n.moveToElementText(e.parentNode)}catch(i){return n}return n.collapse(!0),n.moveEnd("character",r),n.moveStart("character",t),n};var P=function P(e){e.select()};function B(e){var t=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,t)}}function D(e,t,r){for(var n in t=t||{},e)!e.hasOwnProperty(n)||!1===r&&t.hasOwnProperty(n)||(t[n]=e[n]);return t}function X(e,t,r,n,i){null==t&&-1==(t=e.search(/[^\s\u00a0]/))&&(t=e.length);for(var o=n||0,a=i||0;;){var l=e.indexOf("\t",o);if(l<0||t<=l)return a+(t-o);a+=l-o,a+=r-a%r,o=l+1}}s?P=function P(e){e.selectionStart=0,e.selectionEnd=e.value.length}:S&&(P=function P(e){try{e.select()}catch(t){}});var V=function V(){this.id=null};function W(e,t){for(var r=0;r<e.length;++r)if(e[r]==t)return r;return-1}V.prototype.set=function(e,t){clearTimeout(this.id),this.id=setTimeout(t,e)};var R=30,H={toString:function(){return"CodeMirror.Pass"}},j={scroll:!1},z={origin:"*mouse"},G={origin:"+move"};function U(e,t,r){for(var n=0,i=0;;){var o=e.indexOf("\t",n);-1==o&&(o=e.length);var a=o-n;if(o==e.length||t<=i+a)return n+Math.min(a,t-i);if(i+=o-n,n=o+1,t<=(i+=r-i%r))return n}}var K=[""];function Y(e){for(;K.length<=e;)K.push($(K)+" ");return K[e]}function $(e){return e[e.length-1]}function q(e,t){for(var r=[],n=0;n<e.length;n++)r[n]=t(e[n],n);return r}function J(){}function Z(e,t){var r;return r=Object.create?Object.create(e):(J.prototype=e,new J),t&&D(t,r),r}var Q=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;function ee(e){return/\w/.test(e)||""<e&&(e.toUpperCase()!=e.toLowerCase()||Q.test(e))}function te(e,t){return t?!!(-1<t.source.indexOf("\\w")&&ee(e))||t.test(e):ee(e)}function re(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return;return 1}var ne=/[\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 ie(e){return 768<=e.charCodeAt(0)&&ne.test(e)}function oe(e,t,r){for(;(r<0?0<t:t<e.length)&&ie(e.charAt(t));)t+=r;return t}function ae(e,t,r){for(var n=r<t?-1:1;;){if(t==r)return t;var i=(t+r)/2,o=n<0?Math.ceil(i):Math.floor(i);if(o==t)return e(o)?t:r;e(o)?r=o:t=o+n}}function le(e,t,r){var n=this;this.input=r,n.scrollbarFiller=_("div",null,"CodeMirror-scrollbar-filler"),n.scrollbarFiller.setAttribute("cm-not-content","true"),n.gutterFiller=_("div",null,"CodeMirror-gutter-filler"),n.gutterFiller.setAttribute("cm-not-content","true"),n.lineDiv=I("div",null,"CodeMirror-code"),n.selectionDiv=_("div",null,null,"position: relative; z-index: 1"),n.cursorDiv=_("div",null,"CodeMirror-cursors"),n.measure=_("div",null,"CodeMirror-measure"),n.lineMeasure=_("div",null,"CodeMirror-measure"),n.lineSpace=I("div",[n.measure,n.lineMeasure,n.selectionDiv,n.cursorDiv,n.lineDiv],null,"position: relative; outline: none");var i=I("div",[n.lineSpace],"CodeMirror-lines");n.mover=_("div",[i],null,"position: relative"),n.sizer=_("div",[n.mover],"CodeMirror-sizer"),n.sizerWidth=null,n.heightForcer=_("div",null,null,"position: absolute; height: "+R+"px; width: 1px;"),n.gutters=_("div",null,"CodeMirror-gutters"),n.lineGutter=null,n.scroller=_("div",[n.sizer,n.heightForcer,n.gutters],"CodeMirror-scroll"),n.scroller.setAttribute("tabIndex","-1"),n.wrapper=_("div",[n.scrollbarFiller,n.gutterFiller,n.scroller],"CodeMirror"),S&&T<8&&(n.gutters.style.zIndex=-1,n.scroller.style.paddingRight=0),w||m&&p||(n.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(n.wrapper):e(n.wrapper)),n.viewFrom=n.viewTo=t.first,n.reportedViewFrom=n.reportedViewTo=t.first,n.view=[],n.renderedView=null,n.externalMeasured=null,n.viewOffset=0,n.lastWrapHeight=n.lastWrapWidth=0,n.updateLineNumbers=null,n.nativeBarWidth=n.barHeight=n.barWidth=0,n.scrollbarsClipped=!1,n.lineNumWidth=n.lineNumInnerWidth=n.lineNumChars=null,n.alignWidgets=!1,n.cachedCharWidth=n.cachedTextHeight=n.cachedPaddingH=null,n.maxLine=null,n.maxLineLength=0,n.maxLineChanged=!1,n.wheelDX=n.wheelDY=n.wheelStartX=n.wheelStartY=null,n.shift=!1,n.selForContextMenu=null,n.activeTouch=null,r.init(n)}function se(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var r=e;!r.lines;)for(var n=0;;++n){var i=r.children[n],o=i.chunkSize();if(t<o){r=i;break}t-=o}return r.lines[t]}function ue(e,r,n){var i=[],o=r.line;return e.iter(r.line,n.line+1,function(e){var t=e.text;o==n.line&&(t=t.slice(0,n.ch)),o==r.line&&(t=t.slice(r.ch)),i.push(t),++o}),i}function ce(e,t,r){var n=[];return e.iter(t,r,function(e){n.push(e.text)}),n}function fe(e,t){var r=t-e.height;if(r)for(var n=e;n;n=n.parent)n.height+=r}function pe(e){if(null==e.parent)return null;for(var t=e.parent,r=W(t.lines,e),n=t.parent;n;n=(t=n).parent)for(var i=0;n.children[i]!=t;++i)r+=n.children[i].chunkSize();return r+t.first}function de(e,t){var r=e.first;e:do{for(var n=0;n<e.children.length;++n){var i=e.children[n],o=i.height;if(t<o){e=i;continue e}t-=o,r+=i.chunkSize()}return r}while(!e.lines);for(var a=0;a<e.lines.length;++a){var l=e.lines[a].height;if(t<l)break;t-=l}return r+a}function he(e,t){return t>=e.first&&t<e.first+e.size}function me(e,t){return String(e.lineNumberFormatter(t+e.firstLineNumber))}function ge(e,t,r){if(void 0===r&&(r=null),!(this instanceof ge))return new ge(e,t,r);this.line=e,this.ch=t,this.sticky=r}function ve(e,t){return e.line-t.line||e.ch-t.ch}function ye(e,t){return e.sticky==t.sticky&&0==ve(e,t)}function be(e){return ge(e.line,e.ch)}function we(e,t){return ve(e,t)<0?t:e}function xe(e,t){return ve(e,t)<0?e:t}function Ce(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}function Se(e,t){if(t.line<e.first)return ge(e.first,0);var r=e.first+e.size-1;return t.line>r?ge(r,se(e,r).text.length):function n(e,t){var r=e.ch;return null==r||t<r?ge(e.line,t):r<0?ge(e.line,0):e}(t,se(e,t.line).text.length)}function Te(e,t){for(var r=[],n=0;n<t.length;n++)r[n]=Se(e,t[n]);return r}var Oe=!1,Ne=!1;function Le(e,t,r){this.marker=e,this.from=t,this.to=r}function Ee(e,t){if(e)for(var r=0;r<e.length;++r){var n=e[r];if(n.marker==t)return n}}function Ie(e,t){for(var r,n=0;n<e.length;++n)e[n]!=t&&(r=r||[]).push(e[n]);return r}function _e(e,t){if(t.full)return null;var r=he(e,t.from.line)&&se(e,t.from.line).markedSpans,n=he(e,t.to.line)&&se(e,t.to.line).markedSpans;if(!r&&!n)return null;var i=t.from.ch,o=t.to.ch,a=0==ve(t.from,t.to),l=function x(e,t,r){var n;if(e)for(var i=0;i<e.length;++i){var o=e[i],a=o.marker;if(null==o.from||(a.inclusiveLeft?o.from<=t:o.from<t)||o.from==t&&"bookmark"==a.type&&(!r||!o.marker.insertLeft)){var l=null==o.to||(a.inclusiveRight?o.to>=t:o.to>t);(n=n||[]).push(new Le(a,o.from,l?null:o.to))}}return n}(r,i,a),s=function C(e,t,r){var n;if(e)for(var i=0;i<e.length;++i){var o=e[i],a=o.marker;if(null==o.to||(a.inclusiveRight?o.to>=t:o.to>t)||o.from==t&&"bookmark"==a.type&&(!r||o.marker.insertLeft)){var l=null==o.from||(a.inclusiveLeft?o.from<=t:o.from<t);(n=n||[]).push(new Le(a,l?null:o.from-t,null==o.to?null:o.to-t))}}return n}(n,o,a),u=1==t.text.length,c=$(t.text).length+(u?i:0);if(l)for(var f=0;f<l.length;++f){var p=l[f];if(null==p.to){var d=Ee(s,p.marker);d?u&&(p.to=null==d.to?null:d.to+c):p.to=i}}if(s)for(var h=0;h<s.length;++h){var m=s[h];if(null!=m.to&&(m.to+=c),null==m.from)Ee(l,m.marker)||(m.from=c,u&&(l=l||[]).push(m));else m.from+=c,u&&(l=l||[]).push(m)}l=l&&ke(l),s&&s!=l&&(s=ke(s));var g=[l];if(!u){var v,y=t.text.length-2;if(0<y&&l)for(var b=0;b<l.length;++b)null==l[b].to&&(v=v||[]).push(new Le(l[b].marker,null,null));for(var w=0;w<y;++w)g.push(v);g.push(s)}return g}function ke(e){for(var t=0;t<e.length;++t){var r=e[t];null!=r.from&&r.from==r.to&&!1!==r.marker.clearWhenEmpty&&e.splice(t--,1)}return e.length?e:null}function Me(e){var t=e.markedSpans;if(t){for(var r=0;r<t.length;++r)t[r].marker.detachLine(e);e.markedSpans=null}}function Ae(e,t){if(t){for(var r=0;r<t.length;++r)t[r].marker.attachLine(e);e.markedSpans=t}}function Fe(e){return e.inclusiveLeft?-1:0}function Pe(e){return e.inclusiveRight?1:0}function Be(e,t){var r=e.lines.length-t.lines.length;if(0!=r)return r;var n=e.find(),i=t.find(),o=ve(n.from,i.from)||Fe(e)-Fe(t);if(o)return-o;var a=ve(n.to,i.to)||Pe(e)-Pe(t);return a||t.id-e.id}function De(e,t){var r,n=Ne&&e.markedSpans;if(n)for(var i=void 0,o=0;o<n.length;++o)(i=n[o]).marker.collapsed&&null==(t?i.from:i.to)&&(!r||Be(r,i.marker)<0)&&(r=i.marker);return r}function Xe(e){return De(e,!0)}function Ve(e){return De(e,!1)}function We(e,t){var r,n=Ne&&e.markedSpans;if(n)for(var i=0;i<n.length;++i){var o=n[i];o.marker.collapsed&&(null==o.from||o.from<t)&&(null==o.to||o.to>t)&&(!r||Be(r,o.marker)<0)&&(r=o.marker)}return r}function Re(e,t,r,n,i){var o=se(e,t),a=Ne&&o.markedSpans;if(a)for(var l=0;l<a.length;++l){var s=a[l];if(s.marker.collapsed){var u=s.marker.find(0),c=ve(u.from,r)||Fe(s.marker)-Fe(i),f=ve(u.to,n)||Pe(s.marker)-Pe(i);if(!(0<=c&&f<=0||c<=0&&0<=f)&&(c<=0&&(s.marker.inclusiveRight&&i.inclusiveLeft?0<=ve(u.to,r):0<ve(u.to,r))||0<=c&&(s.marker.inclusiveRight&&i.inclusiveLeft?ve(u.from,n)<=0:ve(u.from,n)<0)))return 1}}}function He(e){for(var t;t=Xe(e);)e=t.find(-1,!0).line;return e}function je(e,t){var r=se(e,t),n=He(r);return r==n?t:pe(n)}function ze(e,t){if(t>e.lastLine())return t;var r,n=se(e,t);if(!Ge(e,n))return t;for(;r=Ve(n);)n=r.find(1,!0).line;return pe(n)+1}function Ge(e,t){var r=Ne&&t.markedSpans;if(r)for(var n=void 0,i=0;i<r.length;++i)if((n=r[i]).marker.collapsed){if(null==n.from)return!0;if(!n.marker.widgetNode&&0==n.from&&n.marker.inclusiveLeft&&Ue(e,t,n))return!0}}function Ue(e,t,r){if(null==r.to){var n=r.marker.find(1,!0);return Ue(e,n.line,Ee(n.line.markedSpans,r.marker))}if(r.marker.inclusiveRight&&r.to==t.text.length)return!0;for(var i=void 0,o=0;o<t.markedSpans.length;++o)if((i=t.markedSpans[o]).marker.collapsed&&!i.marker.widgetNode&&i.from==r.to&&(null==i.to||i.to!=r.from)&&(i.marker.inclusiveLeft||r.marker.inclusiveRight)&&Ue(e,t,i))return!0}function Ke(e){for(var t=0,r=(e=He(e)).parent,n=0;n<r.lines.length;++n){var i=r.lines[n];if(i==e)break;t+=i.height}for(var o=r.parent;o;o=(r=o).parent)for(var a=0;a<o.children.length;++a){var l=o.children[a];if(l==r)break;t+=l.height}return t}function Ye(e){if(0==e.height)return 0;for(var t,r=e.text.length,n=e;t=Xe(n);){var i=t.find(0,!0);n=i.from.line,r+=i.from.ch-i.to.ch}for(n=e;t=Ve(n);){var o=t.find(0,!0);r-=n.text.length-o.from.ch,r+=(n=o.to.line).text.length-o.to.ch}return r}function $e(e){var r=e.display,t=e.doc;r.maxLine=se(t,t.first),r.maxLineLength=Ye(r.maxLine),r.maxLineChanged=!0,t.iter(function(e){var t=Ye(e);t>r.maxLineLength&&(r.maxLineLength=t,r.maxLine=e)})}var qe=null;function Je(e,t,r){var n;qe=null;for(var i=0;i<e.length;++i){var o=e[i];if(o.from<t&&o.to>t)return i;o.to==t&&(o.from!=o.to&&"before"==r?n=i:qe=i),o.from==t&&(o.from!=o.to&&"before"!=r?n=i:qe=i)}return null!=n?n:qe}var Ze,Qe,et,tt,rt,nt,it,ot=(Ze="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",Qe="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111",et=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,tt=/[stwN]/,rt=/[LRr]/,nt=/[Lb1n]/,it=/[1n]/,function(e,t){var r="ltr"==t?"L":"R";if(0==e.length||"ltr"==t&&!et.test(e))return!1;for(var n,i=e.length,o=[],a=0;a<i;++a)o.push((n=e.charCodeAt(a))<=247?Ze.charAt(n):1424<=n&&n<=1524?"R":1536<=n&&n<=1785?Qe.charAt(n-1536):1774<=n&&n<=2220?"r":8192<=n&&n<=8203?"w":8204==n?"b":"L");for(var l=0,s=r;l<i;++l){var u=o[l];"m"==u?o[l]=s:s=u}for(var c=0,f=r;c<i;++c){var p=o[c];"1"==p&&"r"==f?o[c]="n":rt.test(p)&&"r"==(f=p)&&(o[c]="R")}for(var d=1,h=o[0];d<i-1;++d){var m=o[d];"+"==m&&"1"==h&&"1"==o[d+1]?o[d]="1":","!=m||h!=o[d+1]||"1"!=h&&"n"!=h||(o[d]=h),h=m}for(var g=0;g<i;++g){var v=o[g];if(","==v)o[g]="N";else if("%"==v){var y=void 0;for(y=g+1;y<i&&"%"==o[y];++y);for(var b=g&&"!"==o[g-1]||y<i&&"1"==o[y]?"1":"N",w=g;w<y;++w)o[w]=b;g=y-1}}for(var x=0,C=r;x<i;++x){var S=o[x];"L"==C&&"1"==S?o[x]="L":rt.test(S)&&(C=S)}for(var T=0;T<i;++T)if(tt.test(o[T])){var O=void 0;for(O=T+1;O<i&&tt.test(o[O]);++O);for(var N="L"==(T?o[T-1]:r),L=N==("L"==(O<i?o[O]:r))?N?"L":"R":r,E=T;E<O;++E)o[E]=L;T=O-1}for(var I,_=[],k=0;k<i;)if(nt.test(o[k])){var M=k;for(++k;k<i&&nt.test(o[k]);++k);_.push(new at(0,M,k))}else{var A=k,F=_.length;for(++k;k<i&&"L"!=o[k];++k);for(var P=A;P<k;)if(it.test(o[P])){A<P&&_.splice(F,0,new at(1,A,P));var B=P;for(++P;P<k&&it.test(o[P]);++P);_.splice(F,0,new at(2,B,P)),A=P}else++P;A<k&&_.splice(F,0,new at(1,A,k))}return"ltr"==t&&(1==_[0].level&&(I=e.match(/^\s+/))&&(_[0].from=I[0].length,_.unshift(new at(0,0,I[0].length))),1==$(_).level&&(I=e.match(/\s+$/))&&($(_).to-=I[0].length,_.push(new at(0,i-I[0].length,i)))),"rtl"==t?_.reverse():_});function at(e,t,r){this.level=e,this.from=t,this.to=r}function lt(e,t){var r=e.order;return null==r&&(r=e.order=ot(e.text,t)),r}var st=[],ut=function ut(e,t,r){if(e.addEventListener)e.addEventListener(t,r,!1);else if(e.attachEvent)e.attachEvent("on"+t,r);else{var n=e._handlers||(e._handlers={});n[t]=(n[t]||st).concat(r)}};function ct(e,t){return e._handlers&&e._handlers[t]||st}function ft(e,t,r){if(e.removeEventListener)e.removeEventListener(t,r,!1);else if(e.detachEvent)e.detachEvent("on"+t,r);else{var n=e._handlers,i=n&&n[t];if(i){var o=W(i,r);-1<o&&(n[t]=i.slice(0,o).concat(i.slice(o+1)))}}}function pt(e,t){var r=ct(e,t);if(r.length)for(var n=Array.prototype.slice.call(arguments,2),i=0;i<r.length;++i)r[i].apply(null,n)}function dt(e,t,r){return"string"==typeof t&&(t={type:t,preventDefault:function(){this.defaultPrevented=!0}}),pt(e,r||t.type,e,t),bt(t)||t.codemirrorIgnore}function ht(e){var t=e._handlers&&e._handlers.cursorActivity;if(t)for(var r=e.curOp.cursorActivityHandlers||(e.curOp.cursorActivityHandlers=[]),n=0;n<t.length;++n)-1==W(r,t[n])&&r.push(t[n])}function mt(e,t){return 0<ct(e,t).length}function gt(e){e.prototype.on=function(e,t){ut(this,e,t)},e.prototype.off=function(e,t){ft(this,e,t)}}function vt(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function yt(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function bt(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function wt(e){vt(e),yt(e)}function xt(e){return e.target||e.srcElement}function Ct(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),x&&e.ctrlKey&&1==t&&(t=3),t}var St,Tt,Ot=function(){if(S&&T<9)return!1;var e=_("div");return"draggable"in e||"dragDrop"in e}();function Nt(e){if(null==St){var t=_("span","​");E(e,_("span",[t,document.createTextNode("x")])),0!=e.firstChild.offsetHeight&&(St=t.offsetWidth<=1&&2<t.offsetHeight&&!(S&&T<8))}var r=St?_("span","​"):_("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return r.setAttribute("cm-text",""),r}function Lt(e){if(null!=Tt)return Tt;var t=E(e,document.createTextNode("AخA")),r=O(t,0,1).getBoundingClientRect(),n=O(t,1,2).getBoundingClientRect();return L(e),r&&r.left!=r.right&&(Tt=n.right-r.right<3)}var Et,It=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,r=[],n=e.length;t<=n;){var i=e.indexOf("\n",t);-1==i&&(i=e.length);var o=e.slice(t,"\r"==e.charAt(i-1)?i-1:i),a=o.indexOf("\r");-1!=a?(r.push(o.slice(0,a)),t+=a+1):(r.push(o),t=i+1)}return r}:function(e){return e.split(/\r\n?|\n/)},_t=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(t){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(r){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints("StartToEnd",t)},kt="oncopy"in(Et=_("div"))||(Et.setAttribute("oncopy","return;"),"function"==typeof Et.oncopy),Mt=null;var At={},Ft={};function Pt(e){if("string"==typeof e&&Ft.hasOwnProperty(e))e=Ft[e];else if(e&&"string"==typeof e.name&&Ft.hasOwnProperty(e.name)){var t=Ft[e.name];"string"==typeof t&&(t={name:t}),(e=Z(t,e)).name=t.name}else{if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return Pt("application/xml");if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return Pt("application/json")}return"string"==typeof e?{name:e}:e||{name:"null"}}function Bt(e,t){t=Pt(t);var r=At[t.name];if(!r)return Bt(e,"text/plain");var n=r(e,t);if(Dt.hasOwnProperty(t.name)){var i=Dt[t.name];for(var o in i)i.hasOwnProperty(o)&&(n.hasOwnProperty(o)&&(n["_"+o]=n[o]),n[o]=i[o])}if(n.name=t.name,t.helperType&&(n.helperType=t.helperType),t.modeProps)for(var a in t.modeProps)n[a]=t.modeProps[a];return n}var Dt={};function Xt(e,t){D(t,Dt.hasOwnProperty(e)?Dt[e]:Dt[e]={})}function Vt(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var r={};for(var n in t){var i=t[n];i instanceof Array&&(i=i.concat([])),r[n]=i}return r}function Wt(e,t){for(var r;e.innerMode&&(r=e.innerMode(t))&&r.mode!=e;)t=r.state,e=r.mode;return r||{mode:e,state:t}}function Rt(e,t,r){return!e.startState||e.startState(t,r)}var Ht=function Ht(e,t,r){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=r};Ht.prototype.eol=function(){return this.pos>=this.string.length},Ht.prototype.sol=function(){return this.pos==this.lineStart},Ht.prototype.peek=function(){return this.string.charAt(this.pos)||undefined},Ht.prototype.next=function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},Ht.prototype.eat=function(e){var t=this.string.charAt(this.pos);if("string"==typeof e?t==e:t&&(e.test?e.test(t):e(t)))return++this.pos,t},Ht.prototype.eatWhile=function(e){for(var t=this.pos;this.eat(e););return this.pos>t},Ht.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},Ht.prototype.skipToEnd=function(){this.pos=this.string.length},Ht.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(-1<t)return this.pos=t,!0},Ht.prototype.backUp=function(e){this.pos-=e},Ht.prototype.column=function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=X(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?X(this.string,this.lineStart,this.tabSize):0)},Ht.prototype.indentation=function(){return X(this.string,null,this.tabSize)-(this.lineStart?X(this.string,this.lineStart,this.tabSize):0)},Ht.prototype.match=function(e,t,r){if("string"!=typeof e){var n=this.string.slice(this.pos).match(e);return n&&0<n.index?null:(n&&!1!==t&&(this.pos+=n[0].length),n)}var i=function i(e){return r?e.toLowerCase():e};if(i(this.string.substr(this.pos,e.length))==i(e))return!1!==t&&(this.pos+=e.length),!0},Ht.prototype.current=function(){return this.string.slice(this.start,this.pos)},Ht.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},Ht.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},Ht.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var jt=function jt(e,t){this.state=e,this.lookAhead=t},zt=function zt(e,t,r,n){this.state=t,this.doc=e,this.line=r,this.maxLookAhead=n||0,this.baseTokens=null,this.baseTokenPos=1};function Gt(t,r,n,e){var s=[t.state.modeGen],i={};er(t,r.text,t.doc.mode,n,function(e,t){return s.push(e,t)},i,e);for(var u=n.state,c=function c(e){n.baseTokens=s;var o=t.state.overlays[e],a=1,l=0;n.state=!0,er(t,r.text,o.mode,n,function(e,t){for(var r=a;l<e;){var n=s[a];e<n&&s.splice(a,1,e,s[a+1],n),a+=2,l=Math.min(e,n)}if(t)if(o.opaque)s.splice(r,a-r,e,"overlay "+t),a=r+2;else for(;r<a;r+=2){var i=s[r+1];s[r+1]=(i?i+" ":"")+"overlay "+t}},i),n.state=u,n.baseTokens=null,n.baseTokenPos=1},o=0;o<t.state.overlays.length;++o)c(o);return{styles:s,classes:i.bgClass||i.textClass?i:null}}function Ut(e,t,r){if(!t.styles||t.styles[0]!=e.state.modeGen){var n=Kt(e,pe(t)),i=t.text.length>e.options.maxHighlightLength&&Vt(e.doc.mode,n.state),o=Gt(e,t,n);i&&(n.state=i),t.stateAfter=n.save(!i),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),r===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function Kt(r,n,e){var t=r.doc,i=r.display;if(!t.mode.startState)return new zt(t,!0,n);var o=function f(e,t,r){for(var n,i,o=e.doc,a=r?-1:t-(e.doc.mode.innerMode?1e3:100),l=t;a<l;--l){if(l<=o.first)return o.first;var s=se(o,l-1),u=s.stateAfter;if(u&&(!r||l+(u instanceof jt?u.lookAhead:0)<=o.modeFrontier))return l;var c=X(s.text,null,e.options.tabSize);(null==i||c<n)&&(i=l-1,n=c)}return i}(r,n,e),a=o>t.first&&se(t,o-1).stateAfter,l=a?zt.fromSaved(t,a,o):new zt(t,Rt(t.mode),o);return t.iter(o,n,function(e){Yt(r,e.text,l);var t=l.line;e.stateAfter=t==n-1||t%5==0||t>=i.viewFrom&&t<i.viewTo?l.save():null,l.nextLine()}),e&&(t.modeFrontier=l.line),l}function Yt(e,t,r,n){var i=e.doc.mode,o=new Ht(t,e.options.tabSize,r);for(o.start=o.pos=n||0,""==t&&$t(i,r.state);!o.eol();)qt(i,o,r.state),o.start=o.pos}function $t(e,t){if(e.blankLine)return e.blankLine(t);if(e.innerMode){var r=Wt(e,t);return r.mode.blankLine?r.mode.blankLine(r.state):void 0}}function qt(e,t,r,n){for(var i=0;i<10;i++){n&&(n[0]=Wt(e,r).mode);var o=e.token(t,r);if(t.pos>t.start)return o}throw new Error("Mode "+e.name+" failed to advance stream.")}zt.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},zt.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},zt.prototype.nextLine=function(){this.line++,0<this.maxLookAhead&&this.maxLookAhead--},zt.fromSaved=function(e,t,r){return t instanceof jt?new zt(e,Vt(e.mode,t.state),r,t.lookAhead):new zt(e,Vt(e.mode,t),r)},zt.prototype.save=function(e){var t=!1!==e?Vt(this.doc.mode,this.state):this.state;return 0<this.maxLookAhead?new jt(t,this.maxLookAhead):t};var Jt=function Jt(e,t,r){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=r};function Zt(e,t,r,n){var i,o,a=e.doc,l=a.mode,s=se(a,(t=Se(a,t)).line),u=Kt(e,t.line,r),c=new Ht(s.text,e.options.tabSize,u);for(n&&(o=[]);(n||c.pos<t.ch)&&!c.eol();)c.start=c.pos,i=qt(l,c,u.state),n&&o.push(new Jt(c,i,Vt(a.mode,u.state)));return n?o:new Jt(c,i,u.state)}function Qt(e,t){if(e)for(;;){var r=e.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!r)break;e=e.slice(0,r.index)+e.slice(r.index+r[0].length);var n=r[1]?"bgClass":"textClass";null==t[n]?t[n]=r[2]:new RegExp("(?:^|s)"+r[2]+"(?:$|s)").test(t[n])||(t[n]+=" "+r[2])}return e}function er(e,t,r,n,i,o,a){var l=r.flattenSpans;null==l&&(l=e.options.flattenSpans);var s,u=0,c=null,f=new Ht(t,e.options.tabSize,n),p=e.options.addModeClass&&[null];for(""==t&&Qt($t(r,n.state),o);!f.eol();){if(s=f.pos>e.options.maxHighlightLength?(l=!1,a&&Yt(e,t,n,f.pos),f.pos=t.length,null):Qt(qt(r,f,n.state,p),o),p){var d=p[0].name;d&&(s="m-"+(s?d+" "+s:d))}if(!l||c!=s){for(;u<f.start;)i(u=Math.min(f.start,u+5e3),c);c=s}f.start=f.pos}for(;u<f.pos;){var h=Math.min(f.pos,u+5e3);i(h,c),u=h}}var tr=function tr(e,t,r){this.text=e,Ae(this,t),this.height=r?r(this):1};tr.prototype.lineNo=function(){return pe(this)},gt(tr);var rr={},nr={};function ir(e,t){if(!e||/^\s*$/.test(e))return null;var r=t.addModeClass?nr:rr;return r[e]||(r[e]=e.replace(/\S+/g,"cm-$&"))}function or(e,t){var r=I("span",null,null,w?"padding-right: .1px":null),n={pre:I("pre",[r],"CodeMirror-line"),content:r,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,a=void 0;n.pos=0,n.addToken=lr,Lt(e.display.measure)&&(a=lt(o,e.doc.direction))&&(n.addToken=sr(n.addToken,a)),n.map=[],cr(o,n,Ut(e,o,t!=e.display.externalMeasured&&pe(o))),o.styleClasses&&(o.styleClasses.bgClass&&(n.bgClass=F(o.styleClasses.bgClass,n.bgClass||"")),o.styleClasses.textClass&&(n.textClass=F(o.styleClasses.textClass,n.textClass||""))),0==n.map.length&&n.map.push(0,0,n.content.appendChild(Nt(e.display.measure))),0==i?(t.measure.map=n.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(n.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(w){var l=n.content.lastChild;(/\bcm-tab\b/.test(l.className)||l.querySelector&&l.querySelector(".cm-tab"))&&(n.content.className="cm-tab-wrap-hack")}return pt(e,"renderLine",e,t.line,n.pre),n.pre.className&&(n.textClass=F(n.pre.className,n.textClass||"")),n}function ar(e){var t=_("span","•","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function lr(e,t,r,n,i,o,a){if(t){var l,s=e.splitSpaces?function x(e,t){if(1<e.length&&!/  /.test(e))return e;for(var r=t,n="",i=0;i<e.length;i++){var o=e.charAt(i);" "!=o||!r||i!=e.length-1&&32!=e.charCodeAt(i+1)||(o=" "),n+=o,r=" "==o}return n}(t,e.trailingSpace):t,u=e.cm.state.specialChars,c=!1;if(u.test(t)){l=document.createDocumentFragment();for(var f=0;;){u.lastIndex=f;var p=u.exec(t),d=p?p.index-f:t.length-f;if(d){var h=document.createTextNode(s.slice(f,f+d));S&&T<9?l.appendChild(_("span",[h])):l.appendChild(h),e.map.push(e.pos,e.pos+d,h),e.col+=d,e.pos+=d}if(!p)break;f+=1+d;var m=void 0;if("\t"==p[0]){var g=e.cm.options.tabSize,v=g-e.col%g;(m=l.appendChild(_("span",Y(v),"cm-tab"))).setAttribute("role","presentation"),m.setAttribute("cm-text","\t"),e.col+=v}else"\r"==p[0]||"\n"==p[0]?(m=l.appendChild(_("span","\r"==p[0]?"␍":"␤","cm-invalidchar"))).setAttribute("cm-text",p[0]):((m=e.cm.options.specialCharPlaceholder(p[0])).setAttribute("cm-text",p[0]),S&&T<9?l.appendChild(_("span",[m])):l.appendChild(m)),e.col+=1;e.map.push(e.pos,e.pos+1,m),e.pos++}}else e.col+=t.length,l=document.createTextNode(s),e.map.push(e.pos,e.pos+t.length,l),S&&T<9&&(c=!0),e.pos+=t.length;if(e.trailingSpace=32==s.charCodeAt(t.length-1),r||n||i||c||o){var y=r||"";n&&(y+=n),i&&(y+=i);var b=_("span",[l],y,o);if(a)for(var w in a)a.hasOwnProperty(w)&&"style"!=w&&"class"!=w&&b.setAttribute(w,a[w]);return e.content.appendChild(b)}e.content.appendChild(l)}}function sr(f,p){return function(e,t,r,n,i,o,a){r=r?r+" cm-force-border":"cm-force-border";for(var l=e.pos,s=l+t.length;;){for(var u=void 0,c=0;c<p.length&&!((u=p[c]).to>l&&u.from<=l);c++);if(u.to>=s)return f(e,t,r,n,i,o,a);f(e,t.slice(0,u.to-l),r,n,null,o,a),n=null,t=t.slice(u.to-l),l=u.to}}}function ur(e,t,r,n){var i=!n&&r.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!n&&e.cm.display.input.needsContentAttribute&&(i=i||e.content.appendChild(document.createElement("span"))).setAttribute("cm-marker",r.id),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function cr(e,t,r){var n=e.markedSpans,i=e.text,o=0;if(n)for(var a,l,s,u,c,f,p,d=i.length,h=0,m=1,g="",v=0;;){if(v==h){s=u=c=l="",f=p=null,v=Infinity;for(var y=[],b=void 0,w=0;w<n.length;++w){var x=n[w],C=x.marker;if("bookmark"==C.type&&x.from==h&&C.widgetNode)y.push(C);else if(x.from<=h&&(null==x.to||x.to>h||C.collapsed&&x.to==h&&x.from==h)){if(null!=x.to&&x.to!=h&&v>x.to&&(v=x.to,u=""),C.className&&(s+=" "+C.className),C.css&&(l=(l?l+";":"")+C.css),C.startStyle&&x.from==h&&(c+=" "+C.startStyle),C.endStyle&&x.to==v&&(b=b||[]).push(C.endStyle,x.to),C.title&&((p=p||{}).title=C.title),C.attributes)for(var S in C.attributes)(p=p||{})[S]=C.attributes[S];C.collapsed&&(!f||Be(f.marker,C)<0)&&(f=x)}else x.from>h&&v>x.from&&(v=x.from)}if(b)for(var T=0;T<b.length;T+=2)b[T+1]==v&&(u+=" "+b[T]);if(!f||f.from==h)for(var O=0;O<y.length;++O)ur(t,0,y[O]);if(f&&(f.from||0)==h){if(ur(t,(null==f.to?d+1:f.to)-h,f.marker,null==f.from),null==f.to)return;f.to==h&&(f=!1)}}if(d<=h)break;for(var N=Math.min(d,v);;){if(g){var L=h+g.length;if(!f){var E=N<L?g.slice(0,N-h):g;t.addToken(t,E,a?a+s:s,c,h+E.length==v?u:"",l,p)}if(N<=L){g=g.slice(N-h),h=N;break}h=L,c=""}g=i.slice(o,o=r[m++]),a=ir(r[m++],t.cm.options)}}else for(var I=1;I<r.length;I+=2)t.addToken(t,i.slice(o,o=r[I]),ir(r[I+1],t.cm.options))}function fr(e,t,r){this.line=t,this.rest=function n(e){for(var t,r;t=Ve(e);)e=t.find(1,!0).line,(r=r||[]).push(e);return r}(t),this.size=this.rest?pe($(this.rest))-r+1:1,this.node=this.text=null,this.hidden=Ge(e,t)}function pr(e,t,r){for(var n,i=[],o=t;o<r;o=n){var a=new fr(e.doc,se(e.doc,o),o);n=o+a.size,i.push(a)}return i}var dr=null;function hr(e,t){var r=e.ownsGroup;if(r)try{!function o(e){var t=e.delayedCallbacks,r=0;do{for(;r<t.length;r++)t[r].call(null);for(var n=0;n<e.ops.length;n++){var i=e.ops[n];if(i.cursorActivityHandlers)for(;i.cursorActivityCalled<i.cursorActivityHandlers.length;)i.cursorActivityHandlers[i.cursorActivityCalled++].call(null,i.cm)}}while(r<t.length)}(r)}finally{dr=null,t(r)}}var mr=null;function gr(e,t){var r=ct(e,t);if(r.length){var n,i=Array.prototype.slice.call(arguments,2);dr?n=dr.delayedCallbacks:mr?n=mr:(n=mr=[],setTimeout(vr,0));for(var o=function o(e){n.push(function(){return r[e].apply(null,i)})},a=0;a<r.length;++a)o(a)}}function vr(){var e=mr;mr=null;for(var t=0;t<e.length;++t)e[t]()}function yr(e,t,r,n){for(var i=0;i<t.changes.length;i++){var o=t.changes[i];"text"==o?xr(e,t):"gutter"==o?Sr(e,t,r,n):"class"==o?Cr(e,t):"widget"==o&&Tr(e,t,n)}t.changes=null}function br(e){return e.node==e.text&&(e.node=_("div",null,null,"position: relative"),e.text.parentNode&&e.text.parentNode.replaceChild(e.node,e.text),e.node.appendChild(e.text),S&&T<8&&(e.node.style.zIndex=2)),e.node}function wr(e,t){var r=e.display.externalMeasured;return r&&r.line==t.line?(e.display.externalMeasured=null,t.measure=r.measure,r.built):or(e,t)}function xr(e,t){var r=t.text.className,n=wr(e,t);t.text==t.node&&(t.node=n.pre),t.text.parentNode.replaceChild(n.pre,t.text),t.text=n.pre,n.bgClass!=t.bgClass||n.textClass!=t.textClass?(t.bgClass=n.bgClass,t.textClass=n.textClass,Cr(e,t)):r&&(t.text.className=r)}function Cr(e,t){!function i(e,t){var r=t.bgClass?t.bgClass+" "+(t.line.bgClass||""):t.line.bgClass;if(r&&(r+=" CodeMirror-linebackground"),t.background)r?t.background.className=r:(t.background.parentNode.removeChild(t.background),t.background=null);else if(r){var n=br(t);t.background=n.insertBefore(_("div",null,r),n.firstChild),e.display.input.setUneditable(t.background)}}(e,t),t.line.wrapClass?br(t).className=t.line.wrapClass:t.node!=t.text&&(t.node.className="");var r=t.textClass?t.textClass+" "+(t.line.textClass||""):t.line.textClass;t.text.className=r||""}function Sr(e,t,r,n){if(t.gutter&&(t.node.removeChild(t.gutter),t.gutter=null),t.gutterBackground&&(t.node.removeChild(t.gutterBackground),t.gutterBackground=null),t.line.gutterClass){var i=br(t);t.gutterBackground=_("div",null,"CodeMirror-gutter-background "+t.line.gutterClass,"left: "+(e.options.fixedGutter?n.fixedPos:-n.gutterTotalWidth)+"px; width: "+n.gutterTotalWidth+"px"),e.display.input.setUneditable(t.gutterBackground),i.insertBefore(t.gutterBackground,t.text)}var o=t.line.gutterMarkers;if(e.options.lineNumbers||o){var a=br(t),l=t.gutter=_("div",null,"CodeMirror-gutter-wrapper","left: "+(e.options.fixedGutter?n.fixedPos:-n.gutterTotalWidth)+"px");if(e.display.input.setUneditable(l),a.insertBefore(l,t.text),t.line.gutterClass&&(l.className+=" "+t.line.gutterClass),!e.options.lineNumbers||o&&o["CodeMirror-linenumbers"]||(t.lineNumber=l.appendChild(_("div",me(e.options,r),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+n.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+e.display.lineNumInnerWidth+"px"))),o)for(var s=0;s<e.options.gutters.length;++s){var u=e.options.gutters[s],c=o.hasOwnProperty(u)&&o[u];c&&l.appendChild(_("div",[c],"CodeMirror-gutter-elt","left: "+n.gutterLeft[u]+"px; width: "+n.gutterWidth[u]+"px"))}}}function Tr(e,t,r){t.alignable&&(t.alignable=null);for(var n=t.node.firstChild,i=void 0;n;n=i)i=n.nextSibling,"CodeMirror-linewidget"==n.className&&t.node.removeChild(n);Or(e,t,r)}function Or(e,t,r){if(Nr(e,t.line,t,r,!0),t.rest)for(var n=0;n<t.rest.length;n++)Nr(e,t.rest[n],t,r,!1)}function Nr(e,t,r,n,i){if(t.widgets)for(var o=br(r),a=0,l=t.widgets;a<l.length;++a){var s=l[a],u=_("div",[s.node],"CodeMirror-linewidget");s.handleMouseEvents||u.setAttribute("cm-ignore-events","true"),Lr(s,u,r,n),e.display.input.setUneditable(u),i&&s.above?o.insertBefore(u,r.gutter||r.text):o.appendChild(u),gr(s,"redraw")}}function Lr(e,t,r,n){if(e.noHScroll){(r.alignable||(r.alignable=[])).push(t);var i=n.wrapperWidth;t.style.left=n.fixedPos+"px",e.coverGutter||(i-=n.gutterTotalWidth,t.style.paddingLeft=n.gutterTotalWidth+"px"),t.style.width=i+"px"}e.coverGutter&&(t.style.zIndex=5,t.style.position="relative",e.noHScroll||(t.style.marginLeft=-n.gutterTotalWidth+"px"))}function Er(e){if(null!=e.height)return e.height;var t=e.doc.cm;if(!t)return 0;if(!k(document.body,e.node)){var r="position: relative;";e.coverGutter&&(r+="margin-left: -"+t.display.gutters.offsetWidth+"px;"),e.noHScroll&&(r+="width: "+t.display.wrapper.clientWidth+"px;"),E(t.display.measure,_("div",[e.node],null,r))}return e.height=e.node.parentNode.offsetHeight}function Ir(e,t){for(var r=xt(t);r!=e.wrapper;r=r.parentNode)if(!r||1==r.nodeType&&"true"==r.getAttribute("cm-ignore-events")||r.parentNode==e.sizer&&r!=e.mover)return 1}function _r(e){return e.lineSpace.offsetTop}function kr(e){return e.mover.offsetHeight-e.lineSpace.offsetHeight}function Mr(e){if(e.cachedPaddingH)return e.cachedPaddingH;var t=E(e.measure,_("pre","x")),r=window.getComputedStyle?window.getComputedStyle(t):t.currentStyle,n={left:parseInt(r.paddingLeft),right:parseInt(r.paddingRight)};return isNaN(n.left)||isNaN(n.right)||(e.cachedPaddingH=n),n}function Ar(e){return R-e.display.nativeBarWidth}function Fr(e){return e.display.scroller.clientWidth-Ar(e)-e.display.barWidth}function Pr(e){return e.display.scroller.clientHeight-Ar(e)-e.display.barHeight}function Br(e,t,r){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};for(var n=0;n<e.rest.length;n++)if(e.rest[n]==t)return{map:e.measure.maps[n],cache:e.measure.caches[n]};for(var i=0;i<e.rest.length;i++)if(pe(e.rest[i])>r)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}function Dr(e,t,r,n){return Wr(e,Vr(e,t),r,n)}function Xr(e,t){if(t>=e.display.viewFrom&&t<e.display.viewTo)return e.display.view[gn(e,t)];var r=e.display.externalMeasured;return r&&t>=r.lineN&&t<r.lineN+r.size?r:void 0}function Vr(e,t){var r=pe(t),n=Xr(e,r);n&&!n.text?n=null:n&&n.changes&&(yr(e,n,r,fn(e)),e.curOp.forceUpdate=!0);var i=Br(n=n||function o(e,t){var r=pe(t=He(t)),n=e.display.externalMeasured=new fr(e.doc,t,r);n.lineN=r;var i=n.built=or(e,n);return n.text=i.pre,E(e.display.lineMeasure,i.pre),n}(e,t),t,r);return{line:t,view:n,rect:null,map:i.map,cache:i.cache,before:i.before,hasHeights:!1}}function Wr(e,t,r,n,i){t.before&&(r=-1);var o,a=r+(n||"");return t.cache.hasOwnProperty(a)?o=t.cache[a]:(t.rect||(t.rect=t.view.text.getBoundingClientRect()),t.hasHeights||(function c(e,t,r){var n=e.options.lineWrapping,i=n&&Fr(e);if(!t.measure.heights||n&&t.measure.width!=i){var o=t.measure.heights=[];if(n){t.measure.width=i;for(var a=t.text.firstChild.getClientRects(),l=0;l<a.length-1;l++){var s=a[l],u=a[l+1];2<Math.abs(s.bottom-u.bottom)&&o.push((s.bottom+u.top)/2-r.top)}}o.push(r.bottom-r.top)}}(e,t.view,t.rect),t.hasHeights=!0),(o=function C(e,t,r,n){var i,o=jr(t.map,r,n),a=o.node,l=o.start,s=o.end,u=o.collapse;if(3==a.nodeType){for(var c=0;c<4;c++){for(;l&&ie(t.line.text.charAt(o.coverStart+l));)--l;for(;o.coverStart+s<o.coverEnd&&ie(t.line.text.charAt(o.coverStart+s));)++s;if((i=S&&T<9&&0==l&&s==o.coverEnd-o.coverStart?a.parentNode.getBoundingClientRect():zr(O(a,l,s).getClientRects(),n)).left||i.right||0==l)break;s=l,--l,u="right"}S&&T<11&&(i=function x(e,t){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!function i(e){if(null!=Mt)return Mt;var t=E(e,_("span","x")),r=t.getBoundingClientRect(),n=O(t,0,1).getBoundingClientRect();return Mt=1<Math.abs(r.left-n.left)}(e))return t;var r=screen.logicalXDPI/screen.deviceXDPI,n=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*r,right:t.right*r,top:t.top*n,bottom:t.bottom*n}}(e.display.measure,i))}else{var f;0<l&&(u=n="right"),i=e.options.lineWrapping&&1<(f=a.getClientRects()).length?f["right"==n?f.length-1:0]:a.getBoundingClientRect()}if(S&&T<9&&!l&&(!i||!i.left&&!i.right)){var p=a.parentNode.getClientRects()[0];i=p?{left:p.left,right:p.left+cn(e.display),top:p.top,bottom:p.bottom}:Hr}for(var d=i.top-t.rect.top,h=i.bottom-t.rect.top,m=(d+h)/2,g=t.view.measure.heights,v=0;v<g.length-1&&!(m<g[v]);v++);var y=v?g[v-1]:0,b=g[v],w={left:("right"==u?i.right:i.left)-t.rect.left,right:("left"==u?i.left:i.right)-t.rect.left,top:y,bottom:b};i.left||i.right||(w.bogus=!0);e.options.singleCursorHeightPerLine||(w.rtop=d,w.rbottom=h);return w}(e,t,r,n)).bogus||(t.cache[a]=o)),{left:o.left,right:o.right,top:i?o.rtop:o.top,bottom:i?o.rbottom:o.bottom}}var Rr,Hr={left:0,right:0,top:0,bottom:0};function jr(e,t,r){for(var n,i,o,a,l,s,u=0;u<e.length;u+=3)if(l=e[u],s=e[u+1],t<l?(i=0,o=1,a="left"):t<s?o=(i=t-l)+1:(u==e.length-3||t==s&&e[u+3]>t)&&(i=(o=s-l)-1,s<=t&&(a="right")),null!=i){if(n=e[u+2],l==s&&r==(n.insertLeft?"left":"right")&&(a=r),"left"==r&&0==i)for(;u&&e[u-2]==e[u-3]&&e[u-1].insertLeft;)n=e[2+(u-=3)],a="left";if("right"==r&&i==s-l)for(;u<e.length-3&&e[u+3]==e[u+4]&&!e[u+5].insertLeft;)n=e[(u+=3)+2],a="right";break}return{node:n,start:i,end:o,collapse:a,coverStart:l,coverEnd:s}}function zr(e,t){var r=Hr;if("left"==t)for(var n=0;n<e.length&&(r=e[n]).left==r.right;n++);else for(var i=e.length-1;0<=i&&(r=e[i]).left==r.right;i--);return r}function Gr(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,e.rest))for(var t=0;t<e.rest.length;t++)e.measure.caches[t]={}}function Ur(e){e.display.externalMeasure=null,L(e.display.lineMeasure);for(var t=0;t<e.display.view.length;t++)Gr(e.display.view[t])}function Kr(e){Ur(e),e.display.cachedCharWidth=e.display.cachedTextHeight=e.display.cachedPaddingH=null,e.options.lineWrapping||(e.display.maxLineChanged=!0),e.display.lineNumChars=null}function Yr(){return a&&f?-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft)):window.pageXOffset||(document.documentElement||document.body).scrollLeft}function $r(){return a&&f?-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop)):window.pageYOffset||(document.documentElement||document.body).scrollTop}function qr(e){var t=0;if(e.widgets)for(var r=0;r<e.widgets.length;++r)e.widgets[r].above&&(t+=Er(e.widgets[r]));return t}function Jr(e,t,r,n,i){if(!i){var o=qr(t);r.top+=o,r.bottom+=o}if("line"==n)return r;n=n||"local";var a=Ke(t);if("local"==n?a+=_r(e.display):a-=e.display.viewOffset,"page"==n||"window"==n){var l=e.display.lineSpace.getBoundingClientRect();a+=l.top+("window"==n?0:$r());var s=l.left+("window"==n?0:Yr());r.left+=s,r.right+=s}return r.top+=a,r.bottom+=a,r}function Zr(e,t,r){if("div"==r)return t;var n=t.left,i=t.top;if("page"==r)n-=Yr(),i-=$r();else if("local"==r||!r){var o=e.display.sizer.getBoundingClientRect();n+=o.left,i+=o.top}var a=e.display.lineSpace.getBoundingClientRect();return{left:n-a.left,top:i-a.top}}function Qr(e,t,r,n,i){return Jr(e,n=n||se(e.doc,t.line),Dr(e,n,t.ch,i),r)}function en(n,e,i,o,a,l){function s(e,t){var r=Wr(n,a,e,t?"right":"left",l);return t?r.left=r.right:r.right=r.left,Jr(n,o,r,i)}o=o||se(n.doc,e.line),a=a||Vr(n,o);var u=lt(o,n.doc.direction),t=e.ch,r=e.sticky;if(t>=o.text.length?(t=o.text.length,r="before"):t<=0&&(t=0,r="after"),!u)return s("before"==r?t-1:t,"before"==r);function c(e,t,r){return s(r?e-1:e,1==u[t].level!=r)}var f=Je(u,t,r),p=qe,d=c(t,f,"before"==r);return null!=p&&(d.other=c(t,p,"before"!=r)),d}function tn(e,t){var r=0;t=Se(e.doc,t),e.options.lineWrapping||(r=cn(e.display)*t.ch);var n=se(e.doc,t.line),i=Ke(n)+_r(e.display);return{left:r,right:r,top:i,bottom:i+n.height}}function rn(e,t,r,n,i){var o=ge(e,t,r);return o.xRel=i,n&&(o.outside=!0),o}function nn(e,t,r){var n=e.doc;if((r+=e.display.viewOffset)<0)return rn(n.first,0,null,!0,-1);var i=de(n,r),o=n.first+n.size-1;if(o<i)return rn(n.first+n.size-1,se(n,o).text.length,null,!0,1);t<0&&(t=0);for(var a=se(n,i);;){var l=sn(e,a,i,t,r),s=We(a,l.ch+(0<l.xRel?1:0));if(!s)return l;var u=s.find(1);if(u.line==i)return u;a=se(n,i=u.line)}}function on(t,e,r,n){n-=qr(e);var i=e.text.length,o=ae(function(e){return Wr(t,r,e-1).bottom<=n},i,0);return{begin:o,end:i=ae(function(e){return Wr(t,r,e).top>n},o,i)}}function an(e,t,r,n){return on(e,t,r=r||Vr(e,t),Jr(e,t,Wr(e,r,n),"line").top)}function ln(e,t,r,n){return!(e.bottom<=r)&&(e.top>r||(n?e.left:e.right)>t)}function sn(r,e,t,n,i){i-=Ke(e);var o=Vr(r,e),a=qr(e),l=0,s=e.text.length,u=!0,c=lt(e,r.doc.direction);if(c){var f=(r.options.lineWrapping?function x(e,t,r,n,i,o,a){var l=on(e,t,n,a),s=l.begin,u=l.end;/\s/.test(t.text.charAt(u-1))&&u--;for(var c=null,f=null,p=0;p<i.length;p++){var d=i[p];if(!(d.from>=u||d.to<=s)){var h=1!=d.level,m=Wr(e,n,h?Math.min(u,d.to)-1:Math.max(s,d.from)).right,g=m<o?o-m+1e9:m-o;(!c||g<f)&&(c=d,f=g)}}c=c||i[i.length-1];c.from<s&&(c={from:s,to:c.to,level:c.level});c.to>u&&(c={from:c.from,to:u,level:c.level});return c}:function C(n,i,o,a,l,s,u){var e=ae(function(e){var t=l[e],r=1!=t.level;return ln(en(n,ge(o,r?t.to:t.from,r?"before":"after"),"line",i,a),s,u,!0)},0,l.length-1),t=l[e];if(0<e){var r=1!=t.level,c=en(n,ge(o,r?t.from:t.to,r?"after":"before"),"line",i,a);ln(c,s,u,!0)&&c.top>u&&(t=l[e-1])}return t})(r,e,t,o,c,n,i);l=(u=1!=f.level)?f.from:f.to-1,s=u?f.to:f.from-1}var p,d,h=null,m=null,g=ae(function(e){var t=Wr(r,o,e);return t.top+=a,t.bottom+=a,ln(t,n,i,!1)&&(t.top<=i&&t.left<=n&&(h=e,m=t),1)},l,s),v=!1;if(m){var y=n-m.left<m.right-n,b=y==u;g=h+(b?0:1),d=b?"after":"before",p=y?m.left:m.right}else{u||g!=s&&g!=l||g++,d=0==g||g!=e.text.length&&Wr(r,o,g-(u?1:0)).bottom+a<=i==u?"after":"before";var w=en(r,ge(t,g,d),"line",e,o);p=w.left,v=i<w.top||i>=w.bottom}return rn(t,g=oe(e.text,g,1),d,v,n-p)}function un(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Rr){Rr=_("pre");for(var t=0;t<49;++t)Rr.appendChild(document.createTextNode("x")),Rr.appendChild(_("br"));Rr.appendChild(document.createTextNode("x"))}E(e.measure,Rr);var r=Rr.offsetHeight/50;return 3<r&&(e.cachedTextHeight=r),L(e.measure),r||1}function cn(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=_("span","xxxxxxxxxx"),r=_("pre",[t]);E(e.measure,r);var n=t.getBoundingClientRect(),i=(n.right-n.left)/10;return 2<i&&(e.cachedCharWidth=i),i||10}function fn(e){for(var t=e.display,r={},n={},i=t.gutters.clientLeft,o=t.gutters.firstChild,a=0;o;o=o.nextSibling,++a)r[e.options.gutters[a]]=o.offsetLeft+o.clientLeft+i,n[e.options.gutters[a]]=o.clientWidth;return{fixedPos:pn(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:r,gutterWidth:n,wrapperWidth:t.wrapper.clientWidth}}function pn(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function dn(n){var i=un(n.display),o=n.options.lineWrapping,a=o&&Math.max(5,n.display.scroller.clientWidth/cn(n.display)-3);return function(e){if(Ge(n.doc,e))return 0;var t=0;if(e.widgets)for(var r=0;r<e.widgets.length;r++)e.widgets[r].height&&(t+=e.widgets[r].height);return o?t+(Math.ceil(e.text.length/a)||1)*i:t+i}}function hn(e){var t=e.doc,r=dn(e);t.iter(function(e){var t=r(e);t!=e.height&&fe(e,t)})}function mn(e,t,r,n){var i=e.display;if(!r&&"true"==xt(t).getAttribute("cm-not-content"))return null;var o,a,l=i.lineSpace.getBoundingClientRect();try{o=t.clientX-l.left,a=t.clientY-l.top}catch(t){return null}var s,u=nn(e,o,a);if(n&&1==u.xRel&&(s=se(e.doc,u.line).text).length==u.ch){var c=X(s,s.length,e.options.tabSize)-s.length;u=ge(u.line,Math.max(0,Math.round((o-Mr(e.display).left)/cn(e.display))-c))}return u}function gn(e,t){if(t>=e.display.viewTo)return null;if((t-=e.display.viewFrom)<0)return null;for(var r=e.display.view,n=0;n<r.length;n++)if((t-=r[n].size)<0)return n}function vn(e){e.display.input.showSelection(e.display.input.prepareSelection())}function yn(e,t){void 0===t&&(t=!0);for(var r=e.doc,n={},i=n.cursors=document.createDocumentFragment(),o=n.selection=document.createDocumentFragment(),a=0;a<r.sel.ranges.length;a++)if(t||a!=r.sel.primIndex){var l=r.sel.ranges[a];if(!(l.from().line>=e.display.viewTo||l.to().line<e.display.viewFrom)){var s=l.empty();(s||e.options.showCursorWhenSelecting)&&bn(e,l.head,i),s||xn(e,l,o)}}return n}function bn(e,t,r){var n=en(e,t,"div",null,null,!e.options.singleCursorHeightPerLine),i=r.appendChild(_("div"," ","CodeMirror-cursor"));if(i.style.left=n.left+"px",i.style.top=n.top+"px",i.style.height=Math.max(0,n.bottom-n.top)*e.options.cursorHeight+"px",n.other){var o=r.appendChild(_("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));o.style.display="",o.style.left=n.other.left+"px",o.style.top=n.other.top+"px",o.style.height=.85*(n.other.bottom-n.other.top)+"px"}}function wn(e,t){return e.top-t.top||e.left-t.left}function xn(a,e,t){var r=a.display,n=a.doc,i=document.createDocumentFragment(),o=Mr(a.display),N=o.left,L=Math.max(r.sizerWidth,Fr(a)-r.sizer.offsetLeft)-o.right,E="ltr"==n.direction;function I(e,t,r,n){t<0&&(t=0),t=Math.round(t),n=Math.round(n),i.appendChild(_("div",null,"CodeMirror-selected","position: absolute; left: "+e+"px;\n                             top: "+t+"px; width: "+(null==r?L-e:r)+"px;\n                             height: "+(n-t)+"px"))}function l(r,y,b){var w,x,o=se(n,r),C=o.text.length;function S(e,t){return Qr(a,ge(r,e),"div",o,t)}function T(e,t,r){var n=an(a,o,null,e),i="ltr"==t==("after"==r)?"left":"right";return S("after"==r?n.begin:n.end-(/\s/.test(o.text.charAt(n.end-1))?2:1),i)[i]}var O=lt(o,n.direction);return function l(e,t,r,n){if(!e)return n(t,r,"ltr",0);for(var i=!1,o=0;o<e.length;++o){var a=e[o];(a.from<r&&a.to>t||t==r&&a.to==t)&&(n(Math.max(a.from,t),Math.min(a.to,r),1==a.level?"rtl":"ltr",o),i=!0)}i||n(t,r,"ltr")}(O,y||0,null==b?C:b,function(e,t,r,n){var i="ltr"==r,o=S(e,i?"left":"right"),a=S(t-1,i?"right":"left"),l=null==y&&0==e,s=null==b&&t==C,u=0==n,c=!O||n==O.length-1;if(a.top-o.top<=3){var f=(E?s:l)&&c,p=(E?l:s)&&u?N:(i?o:a).left,d=f?L:(i?a:o).right;I(p,o.top,d-p,o.bottom)}else{var h,m,g,v;v=i?(h=E&&l&&u?N:o.left,m=E?L:T(e,r,"before"),g=E?N:T(t,r,"after"),E&&s&&c?L:a.right):(h=E?T(e,r,"before"):N,m=!E&&l&&u?L:o.right,g=!E&&s&&c?N:a.left,E?T(t,r,"after"):L),I(h,o.top,m-h,o.bottom),o.bottom<a.top&&I(N,o.bottom,null,a.top),I(g,a.top,v-g,a.bottom)}(!w||wn(o,w)<0)&&(w=o),wn(a,w)<0&&(w=a),(!x||wn(o,x)<0)&&(x=o),wn(a,x)<0&&(x=a)}),{start:w,end:x}}var s=e.from(),u=e.to();if(s.line==u.line)l(s.line,s.ch,u.ch);else{var c=se(n,s.line),f=se(n,u.line),p=He(c)==He(f),d=l(s.line,s.ch,p?c.text.length+1:null).end,h=l(u.line,p?0:null,u.ch).start;p&&(d.top<h.top-2?(I(d.right,d.top,null,d.bottom),I(N,h.top,h.left,h.bottom)):I(d.right,d.top,h.left-d.right,d.bottom)),d.bottom<h.top&&I(N,d.bottom,null,h.top)}t.appendChild(i)}function Cn(e){if(e.state.focused){var t=e.display;clearInterval(t.blinker);var r=!0;t.cursorDiv.style.visibility="",0<e.options.cursorBlinkRate?t.blinker=setInterval(function(){return t.cursorDiv.style.visibility=(r=!r)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function Sn(e){e.state.focused||(e.display.input.focus(),On(e))}function Tn(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,Nn(e))},100)}function On(e,t){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(pt(e,"focus",e,t),e.state.focused=!0,A(e.display.wrapper,"CodeMirror-focused"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),w&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),Cn(e))}function Nn(e,t){e.state.delayingBlurEvent||(e.state.focused&&(pt(e,"blur",e,t),e.state.focused=!1,N(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function Ln(e){for(var t=e.display,r=t.lineDiv.offsetTop,n=0;n<t.view.length;n++){var i=t.view[n],o=e.options.lineWrapping,a=void 0,l=0;if(!i.hidden){if(S&&T<8){var s=i.node.offsetTop+i.node.offsetHeight;a=s-r,r=s}else{var u=i.node.getBoundingClientRect();a=u.bottom-u.top,!o&&i.text.firstChild&&(l=i.text.firstChild.getBoundingClientRect().right-u.left-1)}var c=i.line.height-a;if(a<2&&(a=un(t)),(.005<c||c<-.005)&&(fe(i.line,a),En(i.line),i.rest))for(var f=0;f<i.rest.length;f++)En(i.rest[f]);if(l>e.display.sizerWidth){var p=Math.ceil(l/cn(e.display));p>e.display.maxLineLength&&(e.display.maxLineLength=p,e.display.maxLine=i.line,e.display.maxLineChanged=!0)}}}}function En(e){if(e.widgets)for(var t=0;t<e.widgets.length;++t){var r=e.widgets[t],n=r.node.parentNode;n&&(r.height=n.offsetHeight)}}function In(e,t,r){var n=r&&null!=r.top?Math.max(0,r.top):e.scroller.scrollTop;n=Math.floor(n-_r(e));var i=r&&null!=r.bottom?r.bottom:n+e.wrapper.clientHeight,o=de(t,n),a=de(t,i);if(r&&r.ensure){var l=r.ensure.from.line,s=r.ensure.to.line;l<o?a=de(t,Ke(se(t,o=l))+e.wrapper.clientHeight):Math.min(s,t.lastLine())>=a&&(o=de(t,Ke(se(t,s))-e.wrapper.clientHeight),a=s)}return{from:o,to:Math.max(a,o+1)}}function _n(e){var t=e.display,r=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var n=pn(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=n+"px",a=0;a<r.length;a++)if(!r[a].hidden){e.options.fixedGutter&&(r[a].gutter&&(r[a].gutter.style.left=o),r[a].gutterBackground&&(r[a].gutterBackground.style.left=o));var l=r[a].alignable;if(l)for(var s=0;s<l.length;s++)l[s].style.left=o}e.options.fixedGutter&&(t.gutters.style.left=n+i+"px")}}function kn(e){if(e.options.lineNumbers){var t=e.doc,r=me(e.options,t.first+t.size-1),n=e.display;if(r.length!=n.lineNumChars){var i=n.measure.appendChild(_("div",[_("div",r)],"CodeMirror-linenumber CodeMirror-gutter-elt")),o=i.firstChild.offsetWidth,a=i.offsetWidth-o;return n.lineGutter.style.width="",n.lineNumInnerWidth=Math.max(o,n.lineGutter.offsetWidth-a)+1,n.lineNumWidth=n.lineNumInnerWidth+a,n.lineNumChars=n.lineNumInnerWidth?r.length:-1,n.lineGutter.style.width=n.lineNumWidth+"px",gi(e),1}}}function Mn(e,t){var r=e.display,n=un(e.display);t.top<0&&(t.top=0);var i=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:r.scroller.scrollTop,o=Pr(e),a={};t.bottom-t.top>o&&(t.bottom=t.top+o);var l=e.doc.height+kr(r),s=t.top<n,u=t.bottom>l-n;if(t.top<i)a.scrollTop=s?0:t.top;else if(t.bottom>i+o){var c=Math.min(t.top,(u?l:t.bottom)-o);c!=i&&(a.scrollTop=c)}var f=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:r.scroller.scrollLeft,p=Fr(e)-(e.options.fixedGutter?r.gutters.offsetWidth:0),d=t.right-t.left>p;return d&&(t.right=t.left+p),t.left<10?a.scrollLeft=0:t.left<f?a.scrollLeft=Math.max(0,t.left-(d?0:10)):t.right>p+f-3&&(a.scrollLeft=t.right+(d?0:10)-p),a}function An(e,t){null!=t&&(Bn(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function Fn(e){Bn(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function Pn(e,t,r){null==t&&null==r||Bn(e),null!=t&&(e.curOp.scrollLeft=t),null!=r&&(e.curOp.scrollTop=r)}function Bn(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,Dn(e,tn(e,t.from),tn(e,t.to),t.margin))}function Dn(e,t,r,n){var i=Mn(e,{left:Math.min(t.left,r.left),top:Math.min(t.top,r.top)-n,right:Math.max(t.right,r.right),bottom:Math.max(t.bottom,r.bottom)+n});Pn(e,i.scrollLeft,i.scrollTop)}function Xn(e,t){Math.abs(e.doc.scrollTop-t)<2||(m||mi(e,{top:t}),Vn(e,t,!0),m&&mi(e),ci(e,100))}function Vn(e,t,r){t=Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t),e.display.scroller.scrollTop==t&&!r||(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function Wn(e,t,r,n){t=Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth),(r?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!n||(e.doc.scrollLeft=t,_n(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function Rn(e){var t=e.display,r=t.gutters.offsetWidth,n=Math.round(e.doc.height+kr(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?r:0,docHeight:n,scrollHeight:n+Ar(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:r}}var Hn=function Hn(e,t,r){this.cm=r;var n=this.vert=_("div",[_("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=_("div",[_("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");n.tabIndex=i.tabIndex=-1,e(n),e(i),ut(n,"scroll",function(){n.clientHeight&&t(n.scrollTop,"vertical")}),ut(i,"scroll",function(){i.clientWidth&&t(i.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,S&&T<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};Hn.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,r=e.scrollHeight>e.clientHeight+1,n=e.nativeBarWidth;if(r){this.vert.style.display="block",this.vert.style.bottom=t?n+"px":"0";var i=e.viewHeight-(t?n:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=r?n+"px":"0",this.horiz.style.left=e.barLeft+"px";var o=e.viewWidth-e.barLeft-(r?n:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&0<e.clientHeight&&(0==n&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:r?n:0,bottom:t?n:0}},Hn.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},Hn.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},Hn.prototype.zeroWidthHack=function(){var e=x&&!l?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new V,this.disableVert=new V},Hn.prototype.enableZeroWidthBar=function(t,r,n){t.style.pointerEvents="auto",r.set(1e3,function i(){var e=t.getBoundingClientRect();("vert"==n?document.elementFromPoint(e.right-1,(e.top+e.bottom)/2):document.elementFromPoint((e.right+e.left)/2,e.bottom-1))!=t?t.style.pointerEvents="none":r.set(1e3,i)})},Hn.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var jn=function jn(){};function zn(e,t){t=t||Rn(e);var r=e.display.barWidth,n=e.display.barHeight;Gn(e,t);for(var i=0;i<4&&r!=e.display.barWidth||n!=e.display.barHeight;i++)r!=e.display.barWidth&&e.options.lineWrapping&&Ln(e),Gn(e,Rn(e)),r=e.display.barWidth,n=e.display.barHeight}function Gn(e,t){var r=e.display,n=r.scrollbars.update(t);r.sizer.style.paddingRight=(r.barWidth=n.right)+"px",r.sizer.style.paddingBottom=(r.barHeight=n.bottom)+"px",r.heightForcer.style.borderBottom=n.bottom+"px solid transparent",n.right&&n.bottom?(r.scrollbarFiller.style.display="block",r.scrollbarFiller.style.height=n.bottom+"px",r.scrollbarFiller.style.width=n.right+"px"):r.scrollbarFiller.style.display="",n.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(r.gutterFiller.style.display="block",r.gutterFiller.style.height=n.bottom+"px",r.gutterFiller.style.width=t.gutterWidth+"px"):r.gutterFiller.style.display=""}jn.prototype.update=function(){return{bottom:0,right:0}},jn.prototype.setScrollLeft=function(){},jn.prototype.setScrollTop=function(){},jn.prototype.clear=function(){};var Un={"native":Hn,"null":jn};function Kn(r){r.display.scrollbars&&(r.display.scrollbars.clear(),r.display.scrollbars.addClass&&N(r.display.wrapper,r.display.scrollbars.addClass)),r.display.scrollbars=new Un[r.options.scrollbarStyle](function(e){r.display.wrapper.insertBefore(e,r.display.scrollbarFiller),ut(e,"mousedown",function(){r.state.focused&&setTimeout(function(){return r.display.input.focus()},0)}),e.setAttribute("cm-not-content","true")},function(e,t){("horizontal"==t?Wn:Xn)(r,e)},r),r.display.scrollbars.addClass&&A(r.display.wrapper,r.display.scrollbars.addClass)}var Yn=0;function $n(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Yn},function t(e){dr?dr.ops.push(e):e.ownsGroup=dr={ops:[e],delayedCallbacks:[]}}(e.curOp)}function qn(e){var t=e.curOp;t&&hr(t,function(e){for(var t=0;t<e.ops.length;t++)e.ops[t].cm.curOp=null;!function s(e){for(var t=e.ops,r=0;r<t.length;r++)Jn(t[r]);for(var n=0;n<t.length;n++)(i=t[n]).updatedDisplay=i.mustUpdate&&di(i.cm,i.update);var i;for(var o=0;o<t.length;o++)Zn(t[o]);for(var a=0;a<t.length;a++)Qn(t[a]);for(var l=0;l<t.length;l++)ei(t[l])}(e)})}function Jn(e){var t=e.cm,r=t.display;!function n(e){var t=e.display;!t.scrollbarsClipped&&t.scroller.offsetWidth&&(t.nativeBarWidth=t.scroller.offsetWidth-t.scroller.clientWidth,t.heightForcer.style.height=Ar(e)+"px",t.sizer.style.marginBottom=-t.nativeBarWidth+"px",t.sizer.style.borderRightWidth=Ar(e)+"px",t.scrollbarsClipped=!0)}(t),e.updateMaxLine&&$e(t),e.mustUpdate=e.viewChanged||e.forceUpdate||null!=e.scrollTop||e.scrollToPos&&(e.scrollToPos.from.line<r.viewFrom||e.scrollToPos.to.line>=r.viewTo)||r.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new pi(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Zn(e){var t=e.cm,r=t.display;e.updatedDisplay&&Ln(t),e.barMeasure=Rn(t),r.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Dr(t,r.maxLine,r.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(r.scroller.clientWidth,r.sizer.offsetLeft+e.adjustWidthTo+Ar(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,r.sizer.offsetLeft+e.adjustWidthTo-Fr(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=r.input.prepareSelection())}function Qn(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft<t.doc.scrollLeft&&Wn(t,Math.min(t.display.scroller.scrollLeft,e.maxScrollLeft),!0),t.display.maxLineChanged=!1);var r=e.focus&&e.focus==M();e.preparedSelection&&t.display.input.showSelection(e.preparedSelection,r),!e.updatedDisplay&&e.startHeight==t.doc.height||zn(t,e.barMeasure),e.updatedDisplay&&vi(t,e.barMeasure),e.selectionChanged&&Cn(t),t.state.focused&&e.updateInput&&t.display.input.reset(e.typing),r&&Sn(e.cm)}function ei(e){var t=e.cm,r=t.display,n=t.doc;e.updatedDisplay&&hi(t,e.update),null==r.wheelStartX||null==e.scrollTop&&null==e.scrollLeft&&!e.scrollToPos||(r.wheelStartX=r.wheelStartY=null),null!=e.scrollTop&&Vn(t,e.scrollTop,e.forceScroll),null!=e.scrollLeft&&Wn(t,e.scrollLeft,!0,!0),e.scrollToPos&&function s(e,t){if(!dt(e,"scrollCursorIntoView")){var r=e.display,n=r.sizer.getBoundingClientRect(),i=null;if(t.top+n.top<0?i=!0:t.bottom+n.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!u){var o=_("div","​",null,"position: absolute;\n                         top: "+(t.top-r.viewOffset-_r(e.display))+"px;\n                         height: "+(t.bottom-t.top+Ar(e)+r.barHeight)+"px;\n                         left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(o),o.scrollIntoView(i),e.display.lineSpace.removeChild(o)}}}(t,function p(e,t,r,n){var i;null==n&&(n=0),e.options.lineWrapping||t!=r||(r="before"==(t=t.ch?ge(t.line,"before"==t.sticky?t.ch-1:t.ch,"after"):t).sticky?ge(t.line,t.ch+1,"before"):t);for(var o=0;o<5;o++){var a=!1,l=en(e,t),s=r&&r!=t?en(e,r):l,u=Mn(e,i={left:Math.min(l.left,s.left),top:Math.min(l.top,s.top)-n,right:Math.max(l.left,s.left),bottom:Math.max(l.bottom,s.bottom)+n}),c=e.doc.scrollTop,f=e.doc.scrollLeft;if(null!=u.scrollTop&&(Xn(e,u.scrollTop),1<Math.abs(e.doc.scrollTop-c)&&(a=!0)),null!=u.scrollLeft&&(Wn(e,u.scrollLeft),1<Math.abs(e.doc.scrollLeft-f)&&(a=!0)),!a)break}return i}(t,Se(n,e.scrollToPos.from),Se(n,e.scrollToPos.to),e.scrollToPos.margin));var i=e.maybeHiddenMarkers,o=e.maybeUnhiddenMarkers;if(i)for(var a=0;a<i.length;++a)i[a].lines.length||pt(i[a],"hide");if(o)for(var l=0;l<o.length;++l)o[l].lines.length&&pt(o[l],"unhide");r.wrapper.offsetHeight&&(n.scrollTop=t.display.scroller.scrollTop),e.changeObjs&&pt(t,"changes",t,e.changeObjs),e.update&&e.update.finish()}function ti(e,t){if(e.curOp)return t();$n(e);try{return t()}finally{qn(e)}}function ri(e,t){return function(){if(e.curOp)return t.apply(e,arguments);$n(e);try{return t.apply(e,arguments)}finally{qn(e)}}}function ni(e){return function(){if(this.curOp)return e.apply(this,arguments);$n(this);try{return e.apply(this,arguments)}finally{qn(this)}}}function ii(t){return function(){var e=this.cm;if(!e||e.curOp)return t.apply(this,arguments);$n(e);try{return t.apply(this,arguments)}finally{qn(e)}}}function oi(e,t,r,n){null==t&&(t=e.doc.first),null==r&&(r=e.doc.first+e.doc.size),n=n||0;var i=e.display;if(n&&r<i.viewTo&&(null==i.updateLineNumbers||i.updateLineNumbers>t)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)Ne&&je(e.doc,t)<i.viewTo&&li(e);else if(r<=i.viewFrom)Ne&&ze(e.doc,r+n)>i.viewFrom?li(e):(i.viewFrom+=n,i.viewTo+=n);else if(t<=i.viewFrom&&r>=i.viewTo)li(e);else if(t<=i.viewFrom){var o=si(e,r,r+n,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=n):li(e)}else if(r>=i.viewTo){var a=si(e,t,t,-1);a?(i.view=i.view.slice(0,a.index),i.viewTo=a.lineN):li(e)}else{var l=si(e,t,t,-1),s=si(e,r,r+n,1);l&&s?(i.view=i.view.slice(0,l.index).concat(pr(e,l.lineN,s.lineN)).concat(i.view.slice(s.index)),i.viewTo+=n):li(e)}var u=i.externalMeasured;u&&(r<u.lineN?u.lineN+=n:t<u.lineN+u.size&&(i.externalMeasured=null))}function ai(e,t,r){e.curOp.viewChanged=!0;var n=e.display,i=e.display.externalMeasured;if(i&&t>=i.lineN&&t<i.lineN+i.size&&(n.externalMeasured=null),!(t<n.viewFrom||t>=n.viewTo)){var o=n.view[gn(e,t)];if(null!=o.node){var a=o.changes||(o.changes=[]);-1==W(a,r)&&a.push(r)}}}function li(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function si(e,t,r,n){var i,o=gn(e,t),a=e.display.view;if(!Ne||r==e.doc.first+e.doc.size)return{index:o,lineN:r};for(var l=e.display.viewFrom,s=0;s<o;s++)l+=a[s].size;if(l!=t){if(0<n){if(o==a.length-1)return null;i=l+a[o].size-t,o++}else i=l-t;t+=i,r+=i}for(;je(e.doc,r)!=r;){if(o==(n<0?0:a.length-1))return null;r+=n*a[o-(n<0?1:0)].size,o+=n}return{index:o,lineN:r}}function ui(e){for(var t=e.display.view,r=0,n=0;n<t.length;n++){var i=t[n];i.hidden||i.node&&!i.changes||++r}return r}function ci(e,t){e.doc.highlightFrontier<e.display.viewTo&&e.state.highlight.set(t,B(fi,e))}function fi(s){var u=s.doc;if(!(u.highlightFrontier>=s.display.viewTo)){var c=+new Date+s.options.workTime,f=Kt(s,u.highlightFrontier),p=[];u.iter(f.line,Math.min(u.first+u.size,s.display.viewTo+500),function(e){if(f.line>=s.display.viewFrom){var t=e.styles,r=e.text.length>s.options.maxHighlightLength?Vt(u.mode,f.state):null,n=Gt(s,e,f,!0);r&&(f.state=r),e.styles=n.styles;var i=e.styleClasses,o=n.classes;o?e.styleClasses=o:i&&(e.styleClasses=null);for(var a=!t||t.length!=e.styles.length||i!=o&&(!i||!o||i.bgClass!=o.bgClass||i.textClass!=o.textClass),l=0;!a&&l<t.length;++l)a=t[l]!=e.styles[l];a&&p.push(f.line),e.stateAfter=f.save(),f.nextLine()}else e.text.length<=s.options.maxHighlightLength&&Yt(s,e.text,f),e.stateAfter=f.line%5==0?f.save():null,f.nextLine();if(+new Date>c)return ci(s,s.options.workDelay),!0}),u.highlightFrontier=f.line,u.modeFrontier=Math.max(u.modeFrontier,f.line),p.length&&ti(s,function(){for(var e=0;e<p.length;e++)ai(s,p[e],"text")})}}var pi=function pi(e,t,r){var n=e.display;this.viewport=t,this.visible=In(n,e.doc,t),this.editorIsHidden=!n.wrapper.offsetWidth,this.wrapperHeight=n.wrapper.clientHeight,this.wrapperWidth=n.wrapper.clientWidth,this.oldDisplayWidth=Fr(e),this.force=r,this.dims=fn(e),this.events=[]};function di(e,t){var r=e.display,n=e.doc;if(t.editorIsHidden)return li(e),!1;if(!t.force&&t.visible.from>=r.viewFrom&&t.visible.to<=r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo)&&r.renderedView==r.view&&0==ui(e))return!1;kn(e)&&(li(e),t.dims=fn(e));var i=n.first+n.size,o=Math.max(t.visible.from-e.options.viewportMargin,n.first),a=Math.min(i,t.visible.to+e.options.viewportMargin);r.viewFrom<o&&o-r.viewFrom<20&&(o=Math.max(n.first,r.viewFrom)),r.viewTo>a&&r.viewTo-a<20&&(a=Math.min(i,r.viewTo)),Ne&&(o=je(e.doc,o),a=ze(e.doc,a));var l=o!=r.viewFrom||a!=r.viewTo||r.lastWrapHeight!=t.wrapperHeight||r.lastWrapWidth!=t.wrapperWidth;!function c(e,t,r){var n=e.display;0==n.view.length||t>=n.viewTo||r<=n.viewFrom?(n.view=pr(e,t,r),n.viewFrom=t):(n.viewFrom>t?n.view=pr(e,t,n.viewFrom).concat(n.view):n.viewFrom<t&&(n.view=n.view.slice(gn(e,t))),n.viewFrom=t,n.viewTo<r?n.view=n.view.concat(pr(e,n.viewTo,r)):n.viewTo>r&&(n.view=n.view.slice(0,gn(e,r)))),n.viewTo=r}(e,o,a),r.viewOffset=Ke(se(e.doc,r.viewFrom)),e.display.mover.style.top=r.viewOffset+"px";var s=ui(e);if(!l&&0==s&&!t.force&&r.renderedView==r.view&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo))return!1;var u=function f(e){if(e.hasFocus())return null;var t=M();if(!t||!k(e.display.lineDiv,t))return null;var r={activeElt:t};if(window.getSelection){var n=window.getSelection();n.anchorNode&&n.extend&&k(e.display.lineDiv,n.anchorNode)&&(r.anchorNode=n.anchorNode,r.anchorOffset=n.anchorOffset,r.focusNode=n.focusNode,r.focusOffset=n.focusOffset)}return r}(e);return 4<s&&(r.lineDiv.style.display="none"),function b(r,e,t){var n=r.display,i=r.options.lineNumbers,o=n.lineDiv,a=o.firstChild;function l(e){var t=e.nextSibling;return w&&x&&r.display.currentWheelTarget==e?e.style.display="none":e.parentNode.removeChild(e),t}for(var s=n.view,u=n.viewFrom,c=0;c<s.length;c++){var f=s[c];if(!f.hidden)if(f.node&&f.node.parentNode==o){for(;a!=f.node;)a=l(a);var p=i&&null!=e&&e<=u&&f.lineNumber;f.changes&&(-1<W(f.changes,"gutter")&&(p=!1),yr(r,f,u,t)),p&&(L(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(me(r.options,u)))),a=f.node.nextSibling}else{var d=(g=u,v=t,y=wr(h=r,m=f),m.text=m.node=y.pre,y.bgClass&&(m.bgClass=y.bgClass),y.textClass&&(m.textClass=y.textClass),Cr(h,m),Sr(h,m,g,v),Or(h,m,v),m.node);o.insertBefore(d,a)}u+=f.size}var h,m,g,v,y;for(;a;)a=l(a)}(e,r.updateLineNumbers,t.dims),4<s&&(r.lineDiv.style.display=""),r.renderedView=r.view,function p(e){if(e&&e.activeElt&&e.activeElt!=M()&&(e.activeElt.focus(),e.anchorNode&&k(document.body,e.anchorNode)&&k(document.body,e.focusNode))){var t=window.getSelection(),r=document.createRange();r.setEnd(e.anchorNode,e.anchorOffset),r.collapse(!1),t.removeAllRanges(),t.addRange(r),t.extend(e.focusNode,e.focusOffset)}}(u),L(r.cursorDiv),L(r.selectionDiv),r.gutters.style.height=r.sizer.style.minHeight=0,l&&(r.lastWrapHeight=t.wrapperHeight,r.lastWrapWidth=t.wrapperWidth,ci(e,400)),!(r.updateLineNumbers=null)}function hi(e,t){for(var r=t.viewport,n=!0;(n&&e.options.lineWrapping&&t.oldDisplayWidth!=Fr(e)||(r&&null!=r.top&&(r={top:Math.min(e.doc.height+kr(e.display)-Pr(e),r.top)}),t.visible=In(e.display,e.doc,r),!(t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)))&&di(e,t);n=!1){Ln(e);var i=Rn(e);vn(e),zn(e,i),vi(e,i),t.force=!1}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function mi(e,t){var r=new pi(e,t);if(di(e,r)){Ln(e),hi(e,r);var n=Rn(e);vn(e),zn(e,n),vi(e,n),r.finish()}}function gi(e){var t=e.display.gutters.offsetWidth;e.display.sizer.style.marginLeft=t+"px"}function vi(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Ar(e)+"px"}function yi(e){var t=e.display.gutters,r=e.options.gutters;L(t);for(var n=0;n<r.length;++n){var i=r[n],o=t.appendChild(_("div",null,"CodeMirror-gutter "+i));"CodeMirror-linenumbers"==i&&((e.display.lineGutter=o).style.width=(e.display.lineNumWidth||1)+"px")}t.style.display=n?"":"none",gi(e)}function bi(e){var t=W(e.gutters,"CodeMirror-linenumbers");-1==t&&e.lineNumbers?e.gutters=e.gutters.concat(["CodeMirror-linenumbers"]):-1<t&&!e.lineNumbers&&(e.gutters=e.gutters.slice(0),e.gutters.splice(t,1))}pi.prototype.signal=function(e,t){mt(e,t)&&this.events.push(arguments)},pi.prototype.finish=function(){for(var e=0;e<this.events.length;e++)pt.apply(null,this.events[e])};var wi=0,xi=null;function Ci(e){var t=e.wheelDeltaX,r=e.wheelDeltaY;return null==t&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),null==r&&e.detail&&e.axis==e.VERTICAL_AXIS?r=e.detail:null==r&&(r=e.wheelDelta),{x:t,y:r}}function Si(e){var t=Ci(e);return t.x*=xi,t.y*=xi,t}function Ti(e,t){var r=Ci(t),n=r.x,i=r.y,o=e.display,a=o.scroller,l=a.scrollWidth>a.clientWidth,s=a.scrollHeight>a.clientHeight;if(n&&l||i&&s){if(i&&x&&w)e:for(var u=t.target,c=o.view;u!=a;u=u.parentNode)for(var f=0;f<c.length;f++)if(c[f].node==u){e.display.currentWheelTarget=u;break e}if(n&&!m&&!g&&null!=xi)return i&&s&&Xn(e,Math.max(0,a.scrollTop+i*xi)),Wn(e,Math.max(0,a.scrollLeft+n*xi)),(!i||i&&s)&&vt(t),void(o.wheelStartX=null);if(i&&null!=xi){var p=i*xi,d=e.doc.scrollTop,h=d+o.wrapper.clientHeight;p<0?d=Math.max(0,d+p-50):h=Math.min(e.doc.height,h+p+50),mi(e,{top:d,bottom:h})}wi<20&&(null==o.wheelStartX?(o.wheelStartX=a.scrollLeft,o.wheelStartY=a.scrollTop,o.wheelDX=n,o.wheelDY=i,setTimeout(function(){if(null!=o.wheelStartX){var e=a.scrollLeft-o.wheelStartX,t=a.scrollTop-o.wheelStartY,r=t&&o.wheelDY&&t/o.wheelDY||e&&o.wheelDX&&e/o.wheelDX;o.wheelStartX=o.wheelStartY=null,r&&(xi=(xi*wi+r)/(wi+1),++wi)}},200)):(o.wheelDX+=n,o.wheelDY+=i))}}S?xi=-.53:m?xi=15:a?xi=-.7:c&&(xi=-1/3);var Oi=function Oi(e,t){this.ranges=e,this.primIndex=t};Oi.prototype.primary=function(){return this.ranges[this.primIndex]},Oi.prototype.equals=function(e){if(e==this)return!0;if(e.primIndex!=this.primIndex||e.ranges.length!=this.ranges.length)return!1;for(var t=0;t<this.ranges.length;t++){var r=this.ranges[t],n=e.ranges[t];if(!ye(r.anchor,n.anchor)||!ye(r.head,n.head))return!1}return!0},Oi.prototype.deepCopy=function(){for(var e=[],t=0;t<this.ranges.length;t++)e[t]=new Ni(be(this.ranges[t].anchor),be(this.ranges[t].head));return new Oi(e,this.primIndex)},Oi.prototype.somethingSelected=function(){for(var e=0;e<this.ranges.length;e++)if(!this.ranges[e].empty())return!0;return!1},Oi.prototype.contains=function(e,t){t=t||e;for(var r=0;r<this.ranges.length;r++){var n=this.ranges[r];if(0<=ve(t,n.from())&&ve(e,n.to())<=0)return r}return-1};var Ni=function Ni(e,t){this.anchor=e,this.head=t};function Li(e,t,r){var n=e&&e.options.selectionsMayTouch,i=t[r];t.sort(function(e,t){return ve(e.from(),t.from())}),r=W(t,i);for(var o=1;o<t.length;o++){var a=t[o],l=t[o-1],s=ve(l.to(),a.from());if(n&&!a.empty()?0<s:0<=s){var u=xe(l.from(),a.from()),c=we(l.to(),a.to()),f=l.empty()?a.from()==a.head:l.from()==l.head;o<=r&&--r,t.splice(--o,2,new Ni(f?c:u,f?u:c))}}return new Oi(t,r)}function Ei(e,t){return new Oi([new Ni(e,t||e)],0)}function Ii(e){return e.text?ge(e.from.line+e.text.length-1,$(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function _i(e,t){if(ve(e,t.from)<0)return e;if(ve(e,t.to)<=0)return Ii(t);var r=e.line+t.text.length-(t.to.line-t.from.line)-1,n=e.ch;return e.line==t.to.line&&(n+=Ii(t).ch-t.to.ch),ge(r,n)}function ki(e,t){for(var r=[],n=0;n<e.sel.ranges.length;n++){var i=e.sel.ranges[n];r.push(new Ni(_i(i.anchor,t),_i(i.head,t)))}return Li(e.cm,r,e.sel.primIndex)}function Mi(e,t,r){return e.line==t.line?ge(r.line,e.ch-t.ch+r.ch):ge(r.line+(e.line-t.line),e.ch)}function Ai(e){e.doc.mode=Bt(e.options,e.doc.modeOption),Fi(e)}function Fi(e){e.doc.iter(function(e){e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null)}),e.doc.modeFrontier=e.doc.highlightFrontier=e.doc.first,ci(e,100),e.state.modeGen++,e.curOp&&oi(e)}function Pi(e,t){return 0==t.from.ch&&0==t.to.ch&&""==$(t.text)&&(!e.cm||e.cm.options.wholeLineUpdateBefore)}function Bi(e,n,t,i){function o(e){return t?t[e]:null}function r(e,t,r){!function o(e,t,r,n){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),null!=e.order&&(e.order=null),Me(e),Ae(e,r);var i=n?n(e):1;i!=e.height&&fe(e,i)}(e,t,r,i),gr(e,"change",e,n)}function a(e,t){for(var r=[],n=e;n<t;++n)r.push(new tr(u[n],o(n),i));return r}var l=n.from,s=n.to,u=n.text,c=se(e,l.line),f=se(e,s.line),p=$(u),d=o(u.length-1),h=s.line-l.line;if(n.full)e.insert(0,a(0,u.length)),e.remove(u.length,e.size-u.length);else if(Pi(e,n)){var m=a(0,u.length-1);r(f,f.text,d),h&&e.remove(l.line,h),m.length&&e.insert(l.line,m)}else if(c==f)if(1==u.length)r(c,c.text.slice(0,l.ch)+p+c.text.slice(s.ch),d);else{var g=a(1,u.length-1);g.push(new tr(p+c.text.slice(s.ch),d,i)),r(c,c.text.slice(0,l.ch)+u[0],o(0)),e.insert(l.line+1,g)}else if(1==u.length)r(c,c.text.slice(0,l.ch)+u[0]+f.text.slice(s.ch),o(0)),e.remove(l.line+1,h);else{r(c,c.text.slice(0,l.ch)+u[0],o(0)),r(f,p+f.text.slice(s.ch),d);var v=a(1,u.length-1);1<h&&e.remove(l.line+1,h-1),e.insert(l.line+1,v)}gr(e,"change",e,n)}function Di(e,a,l){!function s(e,t,r){if(e.linked)for(var n=0;n<e.linked.length;++n){var i=e.linked[n];if(i.doc!=t){var o=r&&i.sharedHist;l&&!o||(a(i.doc,o),s(i.doc,e,o))}}}(e,null,!0)}function Xi(e,t){if(t.cm)throw new Error("This document is already in use.");hn((e.doc=t).cm=e),Ai(e),Vi(e),e.options.lineWrapping||$e(e),e.options.mode=t.modeOption,oi(e)}function Vi(e){("rtl"==e.doc.direction?A:N)(e.display.lineDiv,"CodeMirror-rtl")}function Wi(e){this.done=[],this.undone=[],this.undoDepth=Infinity,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=e||1}function Ri(e,t){var r={from:be(t.from),to:Ii(t),text:ue(e,t.from,t.to)};return Ui(e,r,t.from.line,t.to.line+1),Di(e,function(e){return Ui(e,r,t.from.line,t.to.line+1)},!0),r}function Hi(e){for(;e.length;){if(!$(e).ranges)break;e.pop()}}function ji(e,t,r,n){var i=e.history;i.undone.length=0;var o,a,l=+new Date;if((i.lastOp==n||i.lastOrigin==t.origin&&t.origin&&("+"==t.origin.charAt(0)&&i.lastModTime>l-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(o=function u(e,t){return t?(Hi(e.done),$(e.done)):e.done.length&&!$(e.done).ranges?$(e.done):1<e.done.length&&!e.done[e.done.length-2].ranges?(e.done.pop(),$(e.done)):void 0}(i,i.lastOp==n)))a=$(o.changes),0==ve(t.from,t.to)&&0==ve(t.from,a.to)?a.to=Ii(t):o.changes.push(Ri(e,t));else{var s=$(i.done);for(s&&s.ranges||Gi(e.sel,i.done),o={changes:[Ri(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(r),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=l,i.lastOp=i.lastSelOp=n,i.lastOrigin=i.lastSelOrigin=t.origin,a||pt(e,"historyAdded")}function zi(e,t,r,n){var i=e.history,o=n&&n.origin;r==i.lastSelOp||o&&i.lastSelOrigin==o&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==o||function a(e,t,r,n){var i=t.charAt(0);return"*"==i||"+"==i&&r.ranges.length==n.ranges.length&&r.somethingSelected()==n.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}(e,o,$(i.done),t))?i.done[i.done.length-1]=t:Gi(t,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=o,i.lastSelOp=r,n&&!1!==n.clearRedo&&Hi(i.undone)}function Gi(e,t){var r=$(t);r&&r.ranges&&r.equals(e)||t.push(e)}function Ui(t,r,e,n){var i=r["spans_"+t.id],o=0;t.iter(Math.max(t.first,e),Math.min(t.first+t.size,n),function(e){e.markedSpans&&((i=i||(r["spans_"+t.id]={}))[o]=e.markedSpans),++o})}function Ki(e){if(!e)return null;for(var t,r=0;r<e.length;++r)e[r].marker.explicitlyCleared?t=t||e.slice(0,r):t&&t.push(e[r]);return t?t.length?t:null:e}function Yi(e,t){var r=function c(e,t){var r=t["spans_"+e.id];if(!r)return null;for(var n=[],i=0;i<t.text.length;++i)n.push(Ki(r[i]));return n}(e,t),n=_e(e,t);if(!r)return n;if(!n)return r;for(var i=0;i<r.length;++i){var o=r[i],a=n[i];if(o&&a)e:for(var l=0;l<a.length;++l){for(var s=a[l],u=0;u<o.length;++u)if(o[u].marker==s.marker)continue e;o.push(s)}else a&&(r[i]=a)}return r}function $i(e,t,r){for(var n=[],i=0;i<e.length;++i){var o=e[i];if(o.ranges)n.push(r?Oi.prototype.deepCopy.call(o):o);else{var a=o.changes,l=[];n.push({changes:l});for(var s=0;s<a.length;++s){var u=a[s],c=void 0;if(l.push({from:u.from,to:u.to,text:u.text}),t)for(var f in u)(c=f.match(/^spans_(\d+)$/))&&-1<W(t,Number(c[1]))&&($(l)[f]=u[f],delete u[f])}}}return n}function qi(e,t,r,n){if(n){var i=e.anchor;if(r){var o=ve(t,i)<0;o!=ve(r,i)<0?(i=t,t=r):o!=ve(t,r)<0&&(t=r)}return new Ni(i,t)}return new Ni(r||t,t)}function Ji(e,t,r,n,i){null==i&&(i=e.cm&&(e.cm.display.shift||e.extend)),ro(e,new Oi([qi(e.sel.primary(),t,r,i)],0),n)}function Zi(e,t,r){for(var n=[],i=e.cm&&(e.cm.display.shift||e.extend),o=0;o<e.sel.ranges.length;o++)n[o]=qi(e.sel.ranges[o],t[o],null,i);ro(e,Li(e.cm,n,e.sel.primIndex),r)}function Qi(e,t,r,n){var i=e.sel.ranges.slice(0);i[t]=r,ro(e,Li(e.cm,i,e.sel.primIndex),n)}function eo(e,t,r,n){ro(e,Ei(t,r),n)}function to(e,t,r){var n=e.history.done,i=$(n);i&&i.ranges?no(e,n[n.length-1]=t,r):ro(e,t,r)}function ro(e,t,r){no(e,t,r),zi(e,e.sel,e.cm?e.cm.curOp.id:NaN,r)}function no(e,t,r){(mt(e,"beforeSelectionChange")||e.cm&&mt(e.cm,"beforeSelectionChange"))&&(t=function i(r,e,t){var n={ranges:e.ranges,update:function(e){this.ranges=[];for(var t=0;t<e.length;t++)this.ranges[t]=new Ni(Se(r,e[t].anchor),Se(r,e[t].head))},origin:t&&t.origin};return pt(r,"beforeSelectionChange",r,n),r.cm&&pt(r.cm,"beforeSelectionChange",r.cm,n),n.ranges!=e.ranges?Li(r.cm,n.ranges,n.ranges.length-1):e}(e,t,r));var n=r&&r.bias||(ve(t.primary().head,e.sel.primary().head)<0?-1:1);io(e,ao(e,t,n,!0)),r&&!1===r.scroll||!e.cm||Fn(e.cm)}function io(e,t){t.equals(e.sel)||(e.sel=t,e.cm&&(e.cm.curOp.updateInput=1,e.cm.curOp.selectionChanged=!0,ht(e.cm)),gr(e,"cursorActivity",e))}function oo(e){io(e,ao(e,e.sel,null,!1))}function ao(e,t,r,n){for(var i,o=0;o<t.ranges.length;o++){var a=t.ranges[o],l=t.ranges.length==e.sel.ranges.length&&e.sel.ranges[o],s=so(e,a.anchor,l&&l.anchor,r,n),u=so(e,a.head,l&&l.head,r,n);!i&&s==a.anchor&&u==a.head||((i=i||t.ranges.slice(0,o))[o]=new Ni(s,u))}return i?Li(e.cm,i,t.primIndex):t}function lo(e,t,r,n,i){var o=se(e,t.line);if(o.markedSpans)for(var a=0;a<o.markedSpans.length;++a){var l=o.markedSpans[a],s=l.marker;if((null==l.from||(s.inclusiveLeft?l.from<=t.ch:l.from<t.ch))&&(null==l.to||(s.inclusiveRight?l.to>=t.ch:l.to>t.ch))){if(i&&(pt(s,"beforeCursorEnter"),s.explicitlyCleared)){if(o.markedSpans){--a;continue}break}if(!s.atomic)continue;if(r){var u=s.find(n<0?1:-1),c=void 0;if((n<0?s.inclusiveRight:s.inclusiveLeft)&&(u=uo(e,u,-n,u&&u.line==t.line?o:null)),u&&u.line==t.line&&(c=ve(u,r))&&(n<0?c<0:0<c))return lo(e,u,t,n,i)}var f=s.find(n<0?-1:1);return(n<0?s.inclusiveLeft:s.inclusiveRight)&&(f=uo(e,f,n,f.line==t.line?o:null)),f?lo(e,f,t,n,i):null}}return t}function so(e,t,r,n,i){var o=n||1,a=lo(e,t,r,o,i)||!i&&lo(e,t,r,o,!0)||lo(e,t,r,-o,i)||!i&&lo(e,t,r,-o,!0);return a||(e.cantEdit=!0,ge(e.first,0))}function uo(e,t,r,n){return r<0&&0==t.ch?t.line>e.first?Se(e,ge(t.line-1)):null:0<r&&t.ch==(n||se(e,t.line)).text.length?t.line<e.first+e.size-1?ge(t.line+1,0):null:new ge(t.line,t.ch+r)}function co(e){e.setSelection(ge(e.firstLine(),0),ge(e.lastLine()),j)}function fo(i,e,t){var o={canceled:!1,from:e.from,to:e.to,text:e.text,origin:e.origin,cancel:function(){return o.canceled=!0}};return t&&(o.update=function(e,t,r,n){e&&(o.from=Se(i,e)),t&&(o.to=Se(i,t)),r&&(o.text=r),n!==undefined&&(o.origin=n)}),pt(i,"beforeChange",i,o),i.cm&&pt(i.cm,"beforeChange",i.cm,o),o.canceled?(i.cm&&(i.cm.curOp.updateInput=2),null):{from:o.from,to:o.to,text:o.text,origin:o.origin}}function po(e,t,r){if(e.cm){if(!e.cm.curOp)return ri(e.cm,po)(e,t,r);if(e.cm.state.suppressEdits)return}if(!(mt(e,"beforeChange")||e.cm&&mt(e.cm,"beforeChange"))||(t=fo(e,t,!0))){var n=Oe&&!r&&function d(e,t,r){var n=null;if(e.iter(t.line,r.line+1,function(e){if(e.markedSpans)for(var t=0;t<e.markedSpans.length;++t){var r=e.markedSpans[t].marker;!r.readOnly||n&&-1!=W(n,r)||(n=n||[]).push(r)}}),!n)return null;for(var i=[{from:t,to:r}],o=0;o<n.length;++o)for(var a=n[o],l=a.find(0),s=0;s<i.length;++s){var u=i[s];if(!(ve(u.to,l.from)<0||0<ve(u.from,l.to))){var c=[s,1],f=ve(u.from,l.from),p=ve(u.to,l.to);(f<0||!a.inclusiveLeft&&!f)&&c.push({from:u.from,to:l.from}),(0<p||!a.inclusiveRight&&!p)&&c.push({from:l.to,to:u.to}),i.splice.apply(i,c),s+=c.length-3}}return i}(e,t.from,t.to);if(n)for(var i=n.length-1;0<=i;--i)ho(e,{from:n[i].from,to:n[i].to,text:i?[""]:t.text,origin:t.origin});else ho(e,t)}}function ho(e,r){if(1!=r.text.length||""!=r.text[0]||0!=ve(r.from,r.to)){var t=ki(e,r);ji(e,r,t,e.cm?e.cm.curOp.id:NaN),vo(e,r,t,_e(e,r));var n=[];Di(e,function(e,t){t||-1!=W(n,e.history)||(xo(e.history,r),n.push(e.history)),vo(e,r,null,_e(e,r))})}}function mo(i,o,e){var t=i.cm&&i.cm.state.suppressEdits;if(!t||e){for(var a,r=i.history,n=i.sel,l="undo"==o?r.done:r.undone,s="undo"==o?r.undone:r.done,u=0;u<l.length&&(a=l[u],e?!a.ranges||a.equals(i.sel):a.ranges);u++);if(u!=l.length){for(r.lastOrigin=r.lastSelOrigin=null;;){if(!(a=l.pop()).ranges){if(t)return void l.push(a);break}if(Gi(a,s),e&&!a.equals(i.sel))return void ro(i,a,{clearRedo:!1});n=a}var c=[];Gi(n,s),s.push({changes:c,generation:r.generation}),r.generation=a.generation||++r.maxGeneration;for(var f=mt(i,"beforeChange")||i.cm&&mt(i.cm,"beforeChange"),p=function p(e){var r=a.changes[e];if(r.origin=o,f&&!fo(i,r,!1))return l.length=0,{};c.push(Ri(i,r));var t=e?ki(i,r):$(l);vo(i,r,t,Yi(i,r)),!e&&i.cm&&i.cm.scrollIntoView({from:r.from,to:Ii(r)});var n=[];Di(i,function(e,t){t||-1!=W(n,e.history)||(xo(e.history,r),n.push(e.history)),vo(e,r,null,Yi(e,r))})},d=a.changes.length-1;0<=d;--d){var h=p(d);if(h)return h.v}}}}function go(e,t){if(0!=t&&(e.first+=t,e.sel=new Oi(q(e.sel.ranges,function(e){return new Ni(ge(e.anchor.line+t,e.anchor.ch),ge(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){oi(e.cm,e.first,e.first-t,t);for(var r=e.cm.display,n=r.viewFrom;n<r.viewTo;n++)ai(e.cm,n,"gutter")}}function vo(e,t,r,n){if(e.cm&&!e.cm.curOp)return ri(e.cm,vo)(e,t,r,n);if(t.to.line<e.first)go(e,t.text.length-1-(t.to.line-t.from.line));else if(!(t.from.line>e.lastLine())){if(t.from.line<e.first){var i=t.text.length-1-(e.first-t.from.line);go(e,i),t={from:ge(e.first,0),to:ge(t.to.line+i,t.to.ch),text:[$(t.text)],origin:t.origin}}var o=e.lastLine();t.to.line>o&&(t={from:t.from,to:ge(o,se(e,o).text.length),text:[t.text[0]],origin:t.origin}),t.removed=ue(e,t.from,t.to),r=r||ki(e,t),e.cm?function h(e,t,r){var n=e.doc,i=e.display,o=t.from,a=t.to,l=!1,s=o.line;e.options.lineWrapping||(s=pe(He(se(n,o.line))),n.iter(s,a.line+1,function(e){if(e==i.maxLine)return l=!0}));-1<n.sel.contains(t.from,t.to)&&ht(e);Bi(n,t,r,dn(e)),e.options.lineWrapping||(n.iter(s,o.line+t.text.length,function(e){var t=Ye(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,l=!1)}),l&&(e.curOp.updateMaxLine=!0));(function d(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontier<t-10)){for(var r=e.first,n=t-1;r<n;n--){var i=se(e,n).stateAfter;if(i&&(!(i instanceof jt)||n+i.lookAhead<t)){r=n+1;break}}e.highlightFrontier=Math.min(e.highlightFrontier,r)}})(n,o.line),ci(e,400);var u=t.text.length-(a.line-o.line)-1;t.full?oi(e):o.line!=a.line||1!=t.text.length||Pi(e.doc,t)?oi(e,o.line,a.line+1,u):ai(e,o.line,"text");var c=mt(e,"changes"),f=mt(e,"change");if(f||c){var p={from:o,to:a,text:t.text,removed:t.removed,origin:t.origin};f&&gr(e,"change",e,p),c&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(p)}e.display.selForContextMenu=null}(e.cm,t,n):Bi(e,t,n),no(e,r,j)}}function yo(e,t,r,n,i){var o;ve(n=n||r,r)<0&&(r=(o=[n,r])[0],n=o[1]),"string"==typeof t&&(t=e.splitLines(t)),po(e,{from:r,to:n,text:t,origin:i})}function bo(e,t,r,n){r<e.line?e.line+=n:t<e.line&&(e.line=t,e.ch=0)}function wo(e,t,r,n){for(var i=0;i<e.length;++i){var o=e[i],a=!0;if(o.ranges){o.copied||((o=e[i]=o.deepCopy()).copied=!0);for(var l=0;l<o.ranges.length;l++)bo(o.ranges[l].anchor,t,r,n),bo(o.ranges[l].head,t,r,n)}else{for(var s=0;s<o.changes.length;++s){var u=o.changes[s];if(r<u.from.line)u.from=ge(u.from.line+n,u.from.ch),u.to=ge(u.to.line+n,u.to.ch);else if(t<=u.to.line){a=!1;break}}a||(e.splice(0,i+1),i=0)}}}function xo(e,t){var r=t.from.line,n=t.to.line,i=t.text.length-(n-r)-1;wo(e.done,r,n,i),wo(e.undone,r,n,i)}function Co(e,t,r,n){var i=t,o=t;return"number"==typeof t?o=se(e,Ce(e,t)):i=pe(t),null==i?null:(n(o,i)&&e.cm&&ai(e.cm,i,r),o)}function So(e){this.lines=e,this.parent=null;for(var t=0,r=0;r<e.length;++r)e[r].parent=this,t+=e[r].height;this.height=t}function To(e){this.children=e;for(var t=0,r=0,n=0;n<e.length;++n){var i=e[n];t+=i.chunkSize(),r+=i.height,i.parent=this}this.size=t,this.height=r,this.parent=null}Ni.prototype.from=function(){return xe(this.anchor,this.head)},Ni.prototype.to=function(){return we(this.anchor,this.head)},Ni.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch},So.prototype={chunkSize:function(){return this.lines.length},removeInner:function(e,t){for(var r,n=e,i=e+t;n<i;++n){var o=this.lines[n];this.height-=o.height,(r=o).parent=null,Me(r),gr(o,"delete")}this.lines.splice(e,t)},collapse:function(e){e.push.apply(e,this.lines)},insertInner:function(e,t,r){this.height+=r,this.lines=this.lines.slice(0,e).concat(t).concat(this.lines.slice(e));for(var n=0;n<t.length;++n)t[n].parent=this},iterN:function(e,t,r){for(var n=e+t;e<n;++e)if(r(this.lines[e]))return!0}},To.prototype={chunkSize:function(){return this.size},removeInner:function(e,t){this.size-=t;for(var r=0;r<this.children.length;++r){var n=this.children[r],i=n.chunkSize();if(e<i){var o=Math.min(t,i-e),a=n.height;if(n.removeInner(e,o),this.height-=a-n.height,i==o&&(this.children.splice(r--,1),n.parent=null),0==(t-=o))break;e=0}else e-=i}if(this.size-t<25&&(1<this.children.length||!(this.children[0]instanceof So))){var l=[];this.collapse(l),this.children=[new So(l)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t<this.children.length;++t)this.children[t].collapse(e)},insertInner:function(e,t,r){this.size+=t.length,this.height+=r;for(var n=0;n<this.children.length;++n){var i=this.children[n],o=i.chunkSize();if(e<=o){if(i.insertInner(e,t,r),i.lines&&50<i.lines.length){for(var a=i.lines.length%25+25,l=a;l<i.lines.length;){var s=new So(i.lines.slice(l,l+=25));i.height-=s.height,this.children.splice(++n,0,s),s.parent=this}i.lines=i.lines.slice(0,a),this.maybeSpill()}break}e-=o}},maybeSpill:function(){if(!(this.children.length<=10)){var e=this;do{var t=new To(e.children.splice(e.children.length-5,5));if(e.parent){e.size-=t.size,e.height-=t.height;var r=W(e.parent.children,e);e.parent.children.splice(r+1,0,t)}else{var n=new To(e.children);(n.parent=e).children=[n,t],e=n}t.parent=e.parent}while(10<e.children.length);e.parent.maybeSpill()}},iterN:function(e,t,r){for(var n=0;n<this.children.length;++n){var i=this.children[n],o=i.chunkSize();if(e<o){var a=Math.min(t,o-e);if(i.iterN(e,a,r))return!0;if(0==(t-=a))break;e=0}else e-=o}}};var Oo=function Oo(e,t,r){if(r)for(var n in r)r.hasOwnProperty(n)&&(this[n]=r[n]);this.doc=e,this.node=t};function No(e,t,r){Ke(t)<(e.curOp&&e.curOp.scrollTop||e.doc.scrollTop)&&An(e,r)}Oo.prototype.clear=function(){var e=this.doc.cm,t=this.line.widgets,r=this.line,n=pe(r);if(null!=n&&t){for(var i=0;i<t.length;++i)t[i]==this&&t.splice(i--,1);t.length||(r.widgets=null);var o=Er(this);fe(r,Math.max(0,r.height-o)),e&&(ti(e,function(){No(e,r,-o),ai(e,n,"widget")}),gr(e,"lineWidgetCleared",e,this,n))}},Oo.prototype.changed=function(){var e=this,t=this.height,r=this.doc.cm,n=this.line;this.height=null;var i=Er(this)-t;i&&(Ge(this.doc,n)||fe(n,n.height+i),r&&ti(r,function(){r.curOp.forceUpdate=!0,No(r,n,i),gr(r,"lineWidgetChanged",r,e,pe(n))}))},gt(Oo);var Lo=0,Eo=function Eo(e,t){this.lines=[],this.type=t,this.doc=e,this.id=++Lo};function Io(t,n,i,e,r){if(e&&e.shared)return function f(e,r,n,i,o){(i=D(i)).shared=!1;var a=[Io(e,r,n,i,o)],l=a[0],s=i.widgetNode;return Di(e,function(e){s&&(i.widgetNode=s.cloneNode(!0)),a.push(Io(e,Se(e,r),Se(e,n),i,o));for(var t=0;t<e.linked.length;++t)if(e.linked[t].isParent)return;l=$(a)}),new _o(a,l)}(t,n,i,e,r);if(t.cm&&!t.cm.curOp)return ri(t.cm,Io)(t,n,i,e,r);var o=new Eo(t,r),a=ve(n,i);if(e&&D(e,o,!1),0<a||0==a&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=I("span",[o.replacedWith],"CodeMirror-widget"),e.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),e.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(Re(t,n.line,n,i,o)||n.line!=i.line&&Re(t,i.line,n,i,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");!function p(){Ne=!0}()}o.addToHistory&&ji(t,{from:n,to:i,origin:"markText"},t.sel,NaN);var l,s=n.line,u=t.cm;if(t.iter(s,i.line+1,function(e){u&&o.collapsed&&!u.options.lineWrapping&&He(e)==u.display.maxLine&&(l=!0),o.collapsed&&s!=n.line&&fe(e,0),function r(e,t){e.markedSpans=e.markedSpans?e.markedSpans.concat([t]):[t],t.marker.attachLine(e)}(e,new Le(o,s==n.line?n.ch:null,s==i.line?i.ch:null)),++s}),o.collapsed&&t.iter(n.line,i.line+1,function(e){Ge(t,e)&&fe(e,0)}),o.clearOnEnter&&ut(o,"beforeCursorEnter",function(){return o.clear()}),o.readOnly&&(function d(){Oe=!0}(),(t.history.done.length||t.history.undone.length)&&t.clearHistory()),o.collapsed&&(o.id=++Lo,o.atomic=!0),u){if(l&&(u.curOp.updateMaxLine=!0),o.collapsed)oi(u,n.line,i.line+1);else if(o.className||o.startStyle||o.endStyle||o.css||o.attributes||o.title)for(var c=n.line;c<=i.line;c++)ai(u,c,"text");o.atomic&&oo(u.doc),gr(u,"markerAdded",u,o)}return o}Eo.prototype.clear=function(){var e=this;if(!this.explicitlyCleared){var t=this.doc.cm,r=t&&!t.curOp;if(r&&$n(t),mt(this,"clear")){var n=this.find();n&&gr(this,"clear",n.from,n.to)}for(var i=null,o=null,a=0;a<this.lines.length;++a){var l=e.lines[a],s=Ee(l.markedSpans,e);t&&!e.collapsed?ai(t,pe(l),"text"):t&&(null!=s.to&&(o=pe(l)),null!=s.from&&(i=pe(l))),l.markedSpans=Ie(l.markedSpans,s),null==s.from&&e.collapsed&&!Ge(e.doc,l)&&t&&fe(l,un(t.display))}if(t&&this.collapsed&&!t.options.lineWrapping)for(var u=0;u<this.lines.length;++u){var c=He(e.lines[u]),f=Ye(c);f>t.display.maxLineLength&&(t.display.maxLine=c,t.display.maxLineLength=f,t.display.maxLineChanged=!0)}null!=i&&t&&this.collapsed&&oi(t,i,o+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,t&&oo(t.doc)),t&&gr(t,"markerCleared",t,this,i,o),r&&qn(t),this.parent&&this.parent.clear()}},Eo.prototype.find=function(e,t){var r,n;null==e&&"bookmark"==this.type&&(e=1);for(var i=0;i<this.lines.length;++i){var o=this.lines[i],a=Ee(o.markedSpans,this);if(null!=a.from&&(r=ge(t?o:pe(o),a.from),-1==e))return r;if(null!=a.to&&(n=ge(t?o:pe(o),a.to),1==e))return n}return r&&{from:r,to:n}},Eo.prototype.changed=function(){var o=this,a=this.find(-1,!0),l=this,s=this.doc.cm;a&&s&&ti(s,function(){var e=a.line,t=pe(a.line),r=Xr(s,t);if(r&&(Gr(r),s.curOp.selectionChanged=s.curOp.forceUpdate=!0),s.curOp.updateMaxLine=!0,!Ge(l.doc,e)&&null!=l.height){var n=l.height;l.height=null;var i=Er(l)-n;i&&fe(e,e.height+i)}gr(s,"markerChanged",s,o)})},Eo.prototype.attachLine=function(e){if(!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;t.maybeHiddenMarkers&&-1!=W(t.maybeHiddenMarkers,this)||(t.maybeUnhiddenMarkers||(t.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(e)},Eo.prototype.detachLine=function(e){if(this.lines.splice(W(this.lines,e),1),!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;(t.maybeHiddenMarkers||(t.maybeHiddenMarkers=[])).push(this)}},gt(Eo);var _o=function _o(e,t){this.markers=e,this.primary=t;for(var r=0;r<e.length;++r)e[r].parent=this};function ko(e){return e.findMarks(ge(e.first,0),e.clipPos(ge(e.lastLine())),function(e){return e.parent})}function Mo(o){for(var a=function a(e){var t=o[e],r=[t.primary.doc];Di(t.primary.doc,function(e){return r.push(e)});for(var n=0;n<t.markers.length;n++){var i=t.markers[n];-1==W(r,i.doc)&&(i.parent=null,t.markers.splice(n--,1))}},e=0;e<o.length;e++)a(e)}_o.prototype.clear=function(){if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var e=0;e<this.markers.length;++e)this.markers[e].clear();gr(this,"clear")}},_o.prototype.find=function(e,t){return this.primary.find(e,t)},gt(_o);var Ao=0,Fo=function Fo(e,t,r,n,i){if(!(this instanceof Fo))return new Fo(e,t,r,n,i);null==r&&(r=0),To.call(this,[new So([new tr("",null)])]),this.first=r,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.modeFrontier=this.highlightFrontier=r;var o=ge(r,0);this.sel=Ei(o),this.history=new Wi(null),this.id=++Ao,this.modeOption=t,this.lineSep=n,this.direction="rtl"==i?"rtl":"ltr",this.extend=!1,"string"==typeof e&&(e=this.splitLines(e)),Bi(this,{from:o,to:o,text:e}),ro(this,Ei(o),j)};Fo.prototype=Z(To.prototype,{constructor:Fo,iter:function(e,t,r){r?this.iterN(e-this.first,t-e,r):this.iterN(this.first,this.first+this.size,e)},insert:function(e,t){for(var r=0,n=0;n<t.length;++n)r+=t[n].height;this.insertInner(e-this.first,t,r)},remove:function(e,t){this.removeInner(e-this.first,t)},getValue:function(e){var t=ce(this,this.first,this.first+this.size);return!1===e?t:t.join(e||this.lineSeparator())},setValue:ii(function(e){var t=ge(this.first,0),r=this.first+this.size-1;po(this,{from:t,to:ge(r,se(this,r).text.length),text:this.splitLines(e),origin:"setValue",full:!0},!0),this.cm&&Pn(this.cm,0,0),ro(this,Ei(t),j)}),replaceRange:function(e,t,r,n){yo(this,e,t=Se(this,t),r=r?Se(this,r):t,n)},getRange:function(e,t,r){var n=ue(this,Se(this,e),Se(this,t));return!1===r?n:n.join(r||this.lineSeparator())},getLine:function se(e){var t=this.getLineHandle(e);return t&&t.text},getLineHandle:function(e){if(he(this,e))return se(this,e)},getLineNumber:function(e){return pe(e)},getLineHandleVisualStart:function(e){return"number"==typeof e&&(e=se(this,e)),He(e)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(e){return Se(this,e)},getCursor:function(e){var t=this.sel.primary();return null==e||"head"==e?t.head:"anchor"==e?t.anchor:"end"==e||"to"==e||!1===e?t.to():t.from()},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:ii(function(e,t,r){eo(this,Se(this,"number"==typeof e?ge(e,t||0):e),null,r)}),setSelection:ii(function(e,t,r){eo(this,Se(this,e),Se(this,t||e),r)}),extendSelection:ii(function(e,t,r){Ji(this,Se(this,e),t&&Se(this,t),r)}),extendSelections:ii(function(e,t){Zi(this,Te(this,e),t)}),extendSelectionsBy:ii(function(e,t){Zi(this,Te(this,q(this.sel.ranges,e)),t)}),setSelections:ii(function(e,t,r){if(e.length){for(var n=[],i=0;i<e.length;i++)n[i]=new Ni(Se(this,e[i].anchor),Se(this,e[i].head));null==t&&(t=Math.min(e.length-1,this.sel.primIndex)),ro(this,Li(this.cm,n,t),r)}}),addSelection:ii(function(e,t,r){var n=this.sel.ranges.slice(0);n.push(new Ni(Se(this,e),Se(this,t||e))),ro(this,Li(this.cm,n,n.length-1),r)}),getSelection:function(e){for(var t,r=this.sel.ranges,n=0;n<r.length;n++){var i=ue(this,r[n].from(),r[n].to());t=t?t.concat(i):i}return!1===e?t:t.join(e||this.lineSeparator())},getSelections:function(e){for(var t=[],r=this.sel.ranges,n=0;n<r.length;n++){var i=ue(this,r[n].from(),r[n].to());!1!==e&&(i=i.join(e||this.lineSeparator())),t[n]=i}return t},replaceSelection:function(e,t,r){for(var n=[],i=0;i<this.sel.ranges.length;i++)n[i]=e;this.replaceSelections(n,t,r||"+input")},replaceSelections:ii(function(e,t,r){for(var n=[],i=this.sel,o=0;o<i.ranges.length;o++){var a=i.ranges[o];n[o]={from:a.from(),to:a.to(),text:this.splitLines(e[o]),origin:r}}for(var l=t&&"end"!=t&&function p(e,t,r){for(var n=[],i=ge(e.first,0),o=i,a=0;a<t.length;a++){var l=t[a],s=Mi(l.from,i,o),u=Mi(Ii(l),i,o);if(i=l.to,o=u,"around"==r){var c=e.sel.ranges[a],f=ve(c.head,c.anchor)<0;n[a]=new Ni(f?u:s,f?s:u)}else n[a]=new Ni(s,s)}return new Oi(n,e.sel.primIndex)}(this,n,t),s=n.length-1;0<=s;s--)po(this,n[s]);l?to(this,l):this.cm&&Fn(this.cm)}),undo:ii(function(){mo(this,"undo")}),redo:ii(function(){mo(this,"redo")}),undoSelection:ii(function(){mo(this,"undo",!0)}),redoSelection:ii(function(){mo(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,r=0,n=0;n<e.done.length;n++)e.done[n].ranges||++t;for(var i=0;i<e.undone.length;i++)e.undone[i].ranges||++r;return{undo:t,redo:r}},clearHistory:function(){this.history=new Wi(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(e){return e&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(e){return this.history.generation==(e||this.cleanGeneration)},getHistory:function(){return{done:$i(this.history.done),undone:$i(this.history.undone)}},setHistory:function(e){var t=this.history=new Wi(this.history.maxGeneration);t.done=$i(e.done.slice(0),null,!0),t.undone=$i(e.undone.slice(0),null,!0)},setGutterMarker:ii(function(e,r,n){return Co(this,e,"gutter",function(e){var t=e.gutterMarkers||(e.gutterMarkers={});return!(t[r]=n)&&re(t)&&(e.gutterMarkers=null),1})}),clearGutter:ii(function(t){var r=this;this.iter(function(e){e.gutterMarkers&&e.gutterMarkers[t]&&Co(r,e,"gutter",function(){return e.gutterMarkers[t]=null,re(e.gutterMarkers)&&(e.gutterMarkers=null),1})})}),lineInfo:function(e){var t;if("number"==typeof e){if(!he(this,e))return null;if(!(e=se(this,t=e)))return null}else if(null==(t=pe(e)))return null;return{line:t,handle:e,text:e.text,gutterMarkers:e.gutterMarkers,textClass:e.textClass,bgClass:e.bgClass,wrapClass:e.wrapClass,widgets:e.widgets}},addLineClass:ii(function(e,r,n){return Co(this,e,"gutter"==r?"gutter":"class",function(e){var t="text"==r?"textClass":"background"==r?"bgClass":"gutter"==r?"gutterClass":"wrapClass";if(e[t]){if(C(n).test(e[t]))return;e[t]+=" "+n}else e[t]=n;return 1})}),removeLineClass:ii(function(e,o,a){return Co(this,e,"gutter"==o?"gutter":"class",function(e){var t="text"==o?"textClass":"background"==o?"bgClass":"gutter"==o?"gutterClass":"wrapClass",r=e[t];if(r){if(null==a)e[t]=null;else{var n=r.match(C(a));if(!n)return;var i=n.index+n[0].length;e[t]=r.slice(0,n.index)+(n.index&&i!=r.length?" ":"")+r.slice(i)||null}return 1}})}),addLineWidget:ii(function(e,t,r){return function a(n,e,t,r){var i=new Oo(n,t,r),o=n.cm;return o&&i.noHScroll&&(o.display.alignWidgets=!0),Co(n,e,"widget",function(e){var t=e.widgets||(e.widgets=[]);if(null==i.insertAt?t.push(i):t.splice(Math.min(t.length-1,Math.max(0,i.insertAt)),0,i),i.line=e,o&&!Ge(n,e)){var r=Ke(e)<n.scrollTop;fe(e,e.height+Er(i)),r&&An(o,i.height),o.curOp.forceUpdate=!0}return 1}),o&&gr(o,"lineWidgetAdded",o,i,"number"==typeof e?e:pe(e)),i}(this,e,t,r)}),removeLineWidget:function(e){e.clear()},markText:function(e,t,r){return Io(this,Se(this,e),Se(this,t),r,r&&r.type||"range")},setBookmark:function(e,t){var r={replacedWith:t&&(null==t.nodeType?t.widget:t),insertLeft:t&&t.insertLeft,clearWhenEmpty:!1,shared:t&&t.shared,handleMouseEvents:t&&t.handleMouseEvents};return Io(this,e=Se(this,e),e,r,"bookmark")},findMarksAt:function(e){var t=[],r=se(this,(e=Se(this,e)).line).markedSpans;if(r)for(var n=0;n<r.length;++n){var i=r[n];(null==i.from||i.from<=e.ch)&&(null==i.to||i.to>=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(i,o,a){i=Se(this,i),o=Se(this,o);var l=[],s=i.line;return this.iter(i.line,o.line+1,function(e){var t=e.markedSpans;if(t)for(var r=0;r<t.length;r++){var n=t[r];null!=n.to&&s==i.line&&i.ch>=n.to||null==n.from&&s!=i.line||null!=n.from&&s==o.line&&n.from>=o.ch||a&&!a(n.marker)||l.push(n.marker.parent||n.marker)}++s}),l},getAllMarks:function(){var n=[];return this.iter(function(e){var t=e.markedSpans;if(t)for(var r=0;r<t.length;++r)null!=t[r].from&&n.push(t[r].marker)}),n},posFromIndex:function(r){var n,i=this.first,o=this.lineSeparator().length;return this.iter(function(e){var t=e.text.length+o;if(r<t)return n=r,!0;r-=t,++i}),Se(this,ge(i,n))},indexFromPos:function(e){var t=(e=Se(this,e)).ch;if(e.line<this.first||e.ch<0)return 0;var r=this.lineSeparator().length;return this.iter(this.first,e.line,function(e){t+=e.text.length+r}),t},copy:function(e){var t=new Fo(ce(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep,this.direction);return t.scrollTop=this.scrollTop,t.scrollLeft=this.scrollLeft,t.sel=this.sel,t.extend=!1,e&&(t.history.undoDepth=this.history.undoDepth,t.setHistory(this.getHistory())),t},linkedDoc:function(e){e=e||{};var t=this.first,r=this.first+this.size;null!=e.from&&e.from>t&&(t=e.from),null!=e.to&&e.to<r&&(r=e.to);var n=new Fo(ce(this,t,r),e.mode||this.modeOption,t,this.lineSep,this.direction);return e.sharedHist&&(n.history=this.history),(this.linked||(this.linked=[])).push({doc:n,sharedHist:e.sharedHist}),n.linked=[{doc:this,isParent:!0,sharedHist:e.sharedHist}],function s(e,t){for(var r=0;r<t.length;r++){var n=t[r],i=n.find(),o=e.clipPos(i.from),a=e.clipPos(i.to);if(ve(o,a)){var l=Io(e,o,a,n.primary,n.primary.type);n.markers.push(l),l.parent=n}}}(n,ko(this)),n},unlinkDoc:function(e){if(e instanceof ka&&(e=e.doc),this.linked)for(var t=0;t<this.linked.length;++t){if(this.linked[t].doc==e){this.linked.splice(t,1),e.unlinkDoc(this),Mo(ko(this));break}}if(e.history==this.history){var r=[e.id];Di(e,function(e){return r.push(e.id)},!0),e.history=new Wi(null),e.history.done=$i(this.history.done,r),e.history.undone=$i(this.history.undone,r)}},iterLinkedDocs:function(e){Di(this,e)},getMode:function Bt(){return this.mode},getEditor:function(){return this.cm},splitLines:function(e){return this.lineSep?e.split(this.lineSep):It(e)},lineSeparator:function(){return this.lineSep||"\n"},setDirection:ii(function(e){"rtl"!=e&&(e="ltr"),e!=this.direction&&(this.direction=e,this.iter(function(e){return e.order=null}),this.cm&&function t(e){ti(e,function(){Vi(e),oi(e)})}(this.cm))})}),Fo.prototype.eachLine=Fo.prototype.iter;var Po=0;function Bo(e){var i=this;if(Do(i),!dt(i,e)&&!Ir(i.display,e)){vt(e),S&&(Po=+new Date);var o=mn(i,e,!0),t=e.dataTransfer.files;if(o&&!i.isReadOnly())if(t&&t.length&&window.FileReader&&window.File)for(var a=t.length,l=Array(a),s=0,u=function u(e,r){if(!i.options.allowDropFileTypes||-1!=W(i.options.allowDropFileTypes,e.type)){var n=new FileReader;n.onload=ri(i,function(){var e=n.result;if(/[\x00-\x08\x0e-\x1f]{2}/.test(e)&&(e=""),l[r]=e,++s==a){var t={from:o=Se(i.doc,o),to:o,text:i.doc.splitLines(l.join(i.doc.lineSeparator())),origin:"paste"};po(i.doc,t),to(i.doc,Ei(o,Ii(t)))}}),n.readAsText(e)}},r=0;r<a;++r)u(t[r],r);else{if(i.state.draggingText&&-1<i.doc.sel.contains(o))return i.state.draggingText(e),void setTimeout(function(){return i.display.input.focus()},20);try{var n=e.dataTransfer.getData("Text");if(n){var c;if(i.state.draggingText&&!i.state.draggingText.copy&&(c=i.listSelections()),no(i.doc,Ei(o,o)),c)for(var f=0;f<c.length;++f)yo(i.doc,"",c[f].anchor,c[f].head,"drag");i.replaceSelection(n,"around","paste"),i.display.input.focus()}}catch(e){}}}}function Do(e){e.display.dragCursor&&(e.display.lineSpace.removeChild(e.display.dragCursor),e.display.dragCursor=null)}function Xo(t){if(document.getElementsByClassName){for(var e=document.getElementsByClassName("CodeMirror"),r=[],n=0;n<e.length;n++){var i=e[n].CodeMirror;i&&r.push(i)}r.length&&r[0].operation(function(){for(var e=0;e<r.length;e++)t(r[e])})}}var Vo=!1;function Wo(){Vo||(!function t(){var e;ut(window,"resize",function(){null==e&&(e=setTimeout(function(){e=null,Xo(Ro)},100))}),ut(window,"blur",function(){return Xo(Nn)})}(),Vo=!0)}function Ro(e){var t=e.display;t.cachedCharWidth=t.cachedTextHeight=t.cachedPaddingH=null,t.scrollbarsClipped=!1,e.setSize()}for(var Ho={3:"Pause",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",145:"ScrollLock",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"},jo=0;jo<10;jo++)Ho[jo+48]=Ho[jo+96]=String(jo);for(var zo=65;zo<=90;zo++)Ho[zo]=String.fromCharCode(zo);for(var Go=1;Go<=12;Go++)Ho[Go+111]=Ho[Go+63235]="F"+Go;var Uo={};function Ko(e){var t,r,n,i,o=e.split(/-(?!$)/);e=o[o.length-1];for(var a=0;a<o.length-1;a++){var l=o[a];if(/^(cmd|meta|m)$/i.test(l))i=!0;else if(/^a(lt)?$/i.test(l))t=!0;else if(/^(c|ctrl|control)$/i.test(l))r=!0;else{if(!/^s(hift)?$/i.test(l))throw new Error("Unrecognized modifier name: "+l);n=!0}}return t&&(e="Alt-"+e),r&&(e="Ctrl-"+e),i&&(e="Cmd-"+e),n&&(e="Shift-"+e),e}function Yo(e){var t={};for(var r in e)if(e.hasOwnProperty(r)){var n=e[r];if(/^(name|fallthrough|(de|at)tach)$/.test(r))continue;if("..."==n){delete e[r];continue}for(var i=q(r.split(" "),Ko),o=0;o<i.length;o++){var a=void 0,l=void 0;a=o==i.length-1?(l=i.join(" "),n):(l=i.slice(0,o+1).join(" "),"...");var s=t[l];if(s){if(s!=a)throw new Error("Inconsistent bindings for "+l)}else t[l]=a}delete e[r]}for(var u in t)e[u]=t[u];return e}function $o(e,t,r,n){var i=(t=Qo(t)).call?t.call(e,n):t[e];if(!1===i)return"nothing";if("..."===i)return"multi";if(null!=i&&r(i))return"handled";if(t.fallthrough){if("[object Array]"!=Object.prototype.toString.call(t.fallthrough))return $o(e,t.fallthrough,r,n);for(var o=0;o<t.fallthrough.length;o++){var a=$o(e,t.fallthrough[o],r,n);if(a)return a}}}function qo(e){var t="string"==typeof e?e:Ho[e.keyCode];return"Ctrl"==t||"Alt"==t||"Shift"==t||"Mod"==t}function Jo(e,t,r){var n=e;return t.altKey&&"Alt"!=n&&(e="Alt-"+e),(y?t.metaKey:t.ctrlKey)&&"Ctrl"!=n&&(e="Ctrl-"+e),(y?t.ctrlKey:t.metaKey)&&"Cmd"!=n&&(e="Cmd-"+e),!r&&t.shiftKey&&"Shift"!=n&&(e="Shift-"+e),e}function Zo(e,t){if(g&&34==e.keyCode&&e["char"])return!1;var r=Ho[e.keyCode];return null!=r&&!e.altGraphKey&&(3==e.keyCode&&e.code&&(r=e.code),Jo(r,e,t))}function Qo(e){return"string"==typeof e?Uo[e]:e}function ea(t,e){for(var r=t.doc.sel.ranges,n=[],i=0;i<r.length;i++){for(var o=e(r[i]);n.length&&ve(o.from,$(n).to)<=0;){var a=n.pop();if(ve(a.from,o.from)<0){o.from=a.from;break}}n.push(o)}ti(t,function(){for(var e=n.length-1;0<=e;e--)yo(t.doc,"",n[e].from,n[e].to,"+delete");Fn(t)})}function ta(e,t,r){var n=oe(e.text,t+r,r);return n<0||n>e.text.length?null:n}function ra(e,t,r){var n=ta(e,t.ch,r);return null==n?null:new ge(t.line,n,r<0?"after":"before")}function na(e,t,r,n,i){if(e){var o=lt(r,t.doc.direction);if(o){var a,l=i<0?$(o):o[0],s=i<0==(1==l.level)?"after":"before";if(0<l.level||"rtl"==t.doc.direction){var u=Vr(t,r);a=i<0?r.text.length-1:0;var c=Wr(t,u,a).top;a=ae(function(e){return Wr(t,u,e).top==c},i<0==(1==l.level)?l.from:l.to-1,a),"before"==s&&(a=ta(r,a,1))}else a=i<0?l.to:l.from;return new ge(n,a,s)}}return new ge(n,i<0?r.text.length:0,i<0?"before":"after")}Uo.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"},Uo.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"},Uo.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","Ctrl-O":"openLine"},Uo.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"]},Uo["default"]=x?Uo.macDefault:Uo.pcDefault;var ia={selectAll:co,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),j)},killLine:function(r){return ea(r,function(e){if(e.empty()){var t=se(r.doc,e.head.line).text.length;return e.head.ch==t&&e.head.line<r.lastLine()?{from:e.head,to:ge(e.head.line+1,0)}:{from:e.head,to:ge(e.head.line,t)}}return{from:e.from(),to:e.to()}})},deleteLine:function(t){return ea(t,function(e){return{from:ge(e.from().line,0),to:Se(t.doc,ge(e.to().line+1,0))}})},delLineLeft:function(e){return ea(e,function(e){return{from:ge(e.from().line,0),to:e.from()}})},delWrappedLineLeft:function(r){return ea(r,function(e){var t=r.charCoords(e.head,"div").top+5;return{from:r.coordsChar({left:0,top:t},"div"),to:e.from()}})},delWrappedLineRight:function(n){return ea(n,function(e){var t=n.charCoords(e.head,"div").top+5,r=n.coordsChar({left:n.display.lineDiv.offsetWidth+100,top:t},"div");return{from:e.from(),to:r}})},undo:function(e){return e.undo()},redo:function(e){return e.redo()},undoSelection:function(e){return e.undoSelection()},redoSelection:function(e){return e.redoSelection()},goDocStart:function(e){return e.extendSelection(ge(e.firstLine(),0))},goDocEnd:function(e){return e.extendSelection(ge(e.lastLine()))},goLineStart:function(t){return t.extendSelectionsBy(function(e){return oa(t,e.head.line)},{origin:"+move",bias:1})},goLineStartSmart:function(t){return t.extendSelectionsBy(function(e){return aa(t,e.head)},{origin:"+move",bias:1})},goLineEnd:function(t){return t.extendSelectionsBy(function(e){return function o(e,t){var r=se(e.doc,t),n=function i(e){for(var t;t=Ve(e);)e=t.find(1,!0).line;return e}(r);n!=r&&(t=pe(n));return na(!0,e,r,t,-1)}(t,e.head.line)},{origin:"+move",bias:-1})},goLineRight:function(r){return r.extendSelectionsBy(function(e){var t=r.cursorCoords(e.head,"div").top+5;return r.coordsChar({left:r.display.lineDiv.offsetWidth+100,top:t},"div")},G)},goLineLeft:function(r){return r.extendSelectionsBy(function(e){var t=r.cursorCoords(e.head,"div").top+5;return r.coordsChar({left:0,top:t},"div")},G)},goLineLeftSmart:function(n){return n.extendSelectionsBy(function(e){var t=n.cursorCoords(e.head,"div").top+5,r=n.coordsChar({left:0,top:t},"div");return r.ch<n.getLine(r.line).search(/\S/)?aa(n,e.head):r},G)},goLineUp:function(e){return e.moveV(-1,"line")},goLineDown:function(e){return e.moveV(1,"line")},goPageUp:function(e){return e.moveV(-1,"page")},goPageDown:function(e){return e.moveV(1,"page")},goCharLeft:function(e){return e.moveH(-1,"char")},goCharRight:function(e){return e.moveH(1,"char")},goColumnLeft:function(e){return e.moveH(-1,"column")},goColumnRight:function(e){return e.moveH(1,"column")},goWordLeft:function(e){return e.moveH(-1,"word")},goGroupRight:function(e){return e.moveH(1,"group")},goGroupLeft:function(e){return e.moveH(-1,"group")},goWordRight:function(e){return e.moveH(1,"word")},delCharBefore:function(e){return e.deleteH(-1,"char")},delCharAfter:function(e){return e.deleteH(1,"char")},delWordBefore:function(e){return e.deleteH(-1,"word")},delWordAfter:function(e){return e.deleteH(1,"word")},delGroupBefore:function(e){return e.deleteH(-1,"group")},delGroupAfter:function(e){return e.deleteH(1,"group")},indentAuto:function(e){return e.indentSelection("smart")},indentMore:function(e){return e.indentSelection("add")},indentLess:function(e){return e.indentSelection("subtract")},insertTab:function(e){return e.replaceSelection("\t")},insertSoftTab:function(e){for(var t=[],r=e.listSelections(),n=e.options.tabSize,i=0;i<r.length;i++){var o=r[i].from(),a=X(e.getLine(o.line),o.ch,n);t.push(Y(n-a%n))}e.replaceSelections(t)},defaultTab:function(e){e.somethingSelected()?e.indentSelection("add"):e.execCommand("insertTab")},transposeChars:function(a){return ti(a,function(){for(var e=a.listSelections(),t=[],r=0;r<e.length;r++)if(e[r].empty()){var n=e[r].head,i=se(a.doc,n.line).text;if(i)if(n.ch==i.length&&(n=new ge(n.line,n.ch-1)),0<n.ch)n=new ge(n.line,n.ch+1),a.replaceRange(i.charAt(n.ch-1)+i.charAt(n.ch-2),ge(n.line,n.ch-2),n,"+transpose");else if(n.line>a.doc.first){var o=se(a.doc,n.line-1).text;o&&(n=new ge(n.line,1),a.replaceRange(i.charAt(0)+a.doc.lineSeparator()+o.charAt(o.length-1),ge(n.line-1,o.length-1),n,"+transpose"))}t.push(new Ni(n,n))}a.setSelections(t)})},newlineAndIndent:function(n){return ti(n,function(){for(var e=n.listSelections(),t=e.length-1;0<=t;t--)n.replaceRange(n.doc.lineSeparator(),e[t].anchor,e[t].head,"+input");e=n.listSelections();for(var r=0;r<e.length;r++)n.indentLine(e[r].from().line,null,!0);Fn(n)})},openLine:function(e){return e.replaceSelection("\n","start")},toggleOverwrite:function(e){return e.toggleOverwrite()}};function oa(e,t){var r=se(e.doc,t),n=He(r);return n!=r&&(t=pe(n)),na(!0,e,n,t,1)}function aa(e,t){var r=oa(e,t.line),n=se(e.doc,r.line),i=lt(n,e.doc.direction);if(i&&0!=i[0].level)return r;var o=Math.max(0,n.text.search(/\S/)),a=t.line==r.line&&t.ch<=o&&t.ch;return ge(r.line,a?0:o,r.sticky)}function la(e,t,r){if("string"==typeof t&&!(t=ia[t]))return!1;e.display.input.ensurePolled();var n=e.display.shift,i=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),r&&(e.display.shift=!1),i=t(e)!=H}finally{e.display.shift=n,e.state.suppressEdits=!1}return i}var sa=new V;function ua(e,t,r,n){var i=e.state.keySeq;if(i){if(qo(t))return"handled";if(/\'$/.test(t)?e.state.keySeq=null:sa.set(50,function(){e.state.keySeq==i&&(e.state.keySeq=null,e.display.input.reset())}),ca(e,i+" "+t,r,n))return!0}return ca(e,t,r,n)}function ca(e,t,r,n){var i=function o(e,t,r){for(var n=0;n<e.state.keyMaps.length;n++){var i=$o(t,e.state.keyMaps[n],r,e);if(i)return i}return e.options.extraKeys&&$o(t,e.options.extraKeys,r,e)||$o(t,e.options.keyMap,r,e)}(e,t,n);return"multi"==i&&(e.state.keySeq=t),"handled"==i&&gr(e,"keyHandled",e,t,r),"handled"!=i&&"multi"!=i||(vt(r),Cn(e)),!!i}function fa(t,e){var r=Zo(e,!0);return!!r&&(e.shiftKey&&!t.state.keySeq?ua(t,"Shift-"+r,e,function(e){return la(t,e,!0)})||ua(t,r,e,function(e){if("string"==typeof e?/^go[A-Z]/.test(e):e.motion)return la(t,e)}):ua(t,r,e,function(e){return la(t,e)}))}var pa=null;function da(e){var t=this;if(t.curOp.focus=M(),!dt(t,e)){S&&T<11&&27==e.keyCode&&(e.returnValue=!1);var r=e.keyCode;t.display.shift=16==r||e.shiftKey;var n=fa(t,e);g&&(pa=n?r:null,!n&&88==r&&!kt&&(x?e.metaKey:e.ctrlKey)&&t.replaceSelection("",null,"cut")),18!=r||/\bCodeMirror-crosshair\b/.test(t.display.lineDiv.className)||function i(e){var t=e.display.lineDiv;function r(e){18!=e.keyCode&&e.altKey||(N(t,"CodeMirror-crosshair"),ft(document,"keyup",r),ft(document,"mouseover",r))}A(t,"CodeMirror-crosshair"),ut(document,"keyup",r),ut(document,"mouseover",r)}(t)}}function ha(e){16==e.keyCode&&(this.doc.sel.shift=!1),dt(this,e)}function ma(e){var t=this;if(!(Ir(t.display,e)||dt(t,e)||e.ctrlKey&&!e.altKey||x&&e.metaKey)){var r=e.keyCode,n=e.charCode;if(g&&r==pa)return pa=null,void vt(e);if(!g||e.which&&!(e.which<10)||!fa(t,e)){var i=String.fromCharCode(null==n?r:n);"\b"==i||function o(t,e,r){return ua(t,"'"+r+"'",e,function(e){return la(t,e,!0)})}(t,e,i)||t.display.input.onKeyPress(e)}}}var ga,va,ya=function ya(e,t,r){this.time=e,this.pos=t,this.button=r};function ba(e){var t=this,r=t.display;if(!(dt(t,e)||r.activeTouch&&r.input.supportsTouch()))if(r.input.ensurePolled(),r.shift=e.shiftKey,Ir(r,e))w||(r.scroller.draggable=!1,setTimeout(function(){return r.scroller.draggable=!0},100));else if(!Ca(t,e)){var n=mn(t,e),i=Ct(e),o=n?function a(e,t){var r=+new Date;return va&&va.compare(r,e,t)?(ga=va=null,"triple"):ga&&ga.compare(r,e,t)?(va=new ya(r,e,t),ga=null,"double"):(ga=new ya(r,e,t),va=null,"single")}(n,i):"single";window.focus(),1==i&&t.state.selectingText&&t.state.selectingText(e),n&&function l(r,e,n,t,i){var o="Click";"double"==t?o="Double"+o:"triple"==t&&(o="Triple"+o);return ua(r,Jo(o=(1==e?"Left":2==e?"Middle":"Right")+o,i),i,function(e){if("string"==typeof e&&(e=ia[e]),!e)return!1;var t=!1;try{r.isReadOnly()&&(r.state.suppressEdits=!0),t=e(r,n)!=H}finally{r.state.suppressEdits=!1}return t})}(t,i,n,o,e)||(1==i?n?function s(e,t,r,n){S?setTimeout(B(Sn,e),0):e.curOp.focus=M();var i,o=function l(e,t,r){var n=e.getOption("configureMouse"),i=n?n(e,t,r):{};if(null==i.unit){var o=d?r.shiftKey&&r.metaKey:r.altKey;i.unit=o?"rectangle":"single"==t?"char":"double"==t?"word":"line"}null!=i.extend&&!e.doc.extend||(i.extend=e.doc.extend||r.shiftKey);null==i.addNew&&(i.addNew=x?r.metaKey:r.ctrlKey);null==i.moveOnDrag&&(i.moveOnDrag=!(x?r.altKey:r.ctrlKey));return i}(e,r,n),a=e.doc.sel;(e.options.dragDrop&&Ot&&!e.isReadOnly()&&"single"==r&&-1<(i=a.contains(t))&&(ve((i=a.ranges[i]).from(),t)<0||0<t.xRel)&&(0<ve(i.to(),t)||t.xRel<0)?function c(t,r,n,i){var o=t.display,a=!1,l=ri(t,function(e){w&&(o.scroller.draggable=!1),t.state.draggingText=!1,ft(o.wrapper.ownerDocument,"mouseup",l),ft(o.wrapper.ownerDocument,"mousemove",s),ft(o.scroller,"dragstart",u),ft(o.scroller,"drop",l),a||(vt(e),i.addNew||Ji(t.doc,n,null,null,i.extend),w||S&&9==T?setTimeout(function(){o.wrapper.ownerDocument.body.focus(),o.input.focus()},20):o.input.focus())}),s=function s(e){a=a||10<=Math.abs(r.clientX-e.clientX)+Math.abs(r.clientY-e.clientY)},u=function u(){return a=!0};w&&(o.scroller.draggable=!0);(t.state.draggingText=l).copy=!i.moveOnDrag,o.scroller.dragDrop&&o.scroller.dragDrop();ut(o.wrapper.ownerDocument,"mouseup",l),ut(o.wrapper.ownerDocument,"mousemove",s),ut(o.scroller,"dragstart",u),ut(o.scroller,"drop",l),Tn(t),setTimeout(function(){return o.input.focus()},20)}:function f(v,e,y,b){var a=v.display,w=v.doc;vt(e);var x,C,S=w.sel,t=S.ranges;b.addNew&&!b.extend?(C=w.sel.contains(y),x=-1<C?t[C]:new Ni(y,y)):(x=w.sel.primary(),C=w.sel.primIndex);if("rectangle"==b.unit)b.addNew||(x=new Ni(y,y)),y=mn(v,e,!0,!0),C=-1;else{var r=wa(v,y,b.unit);x=b.extend?qi(x,r.anchor,r.head,b.extend):r}b.addNew?-1==C?(C=t.length,ro(w,Li(v,t.concat([x]),C),{scroll:!1,origin:"*mouse"})):1<t.length&&t[C].empty()&&"char"==b.unit&&!b.extend?(ro(w,Li(v,t.slice(0,C).concat(t.slice(C+1)),0),{scroll:!1,origin:"*mouse"}),S=w.sel):Qi(w,C,x,z):(ro(w,new Oi([x],C=0),z),S=w.sel);var T=y;function l(e){if(0!=ve(T,e))if(T=e,"rectangle"==b.unit){for(var t=[],r=v.options.tabSize,n=X(se(w,y.line).text,y.ch,r),i=X(se(w,e.line).text,e.ch,r),o=Math.min(n,i),a=Math.max(n,i),l=Math.min(y.line,e.line),s=Math.min(v.lastLine(),Math.max(y.line,e.line));l<=s;l++){var u=se(w,l).text,c=U(u,o,r);o==a?t.push(new Ni(ge(l,c),ge(l,c))):u.length>c&&t.push(new Ni(ge(l,c),ge(l,U(u,a,r))))}t.length||t.push(new Ni(y,y)),ro(w,Li(v,S.ranges.slice(0,C).concat(t),C),{origin:"*mouse",scroll:!1}),v.scrollIntoView(e)}else{var f,p=x,d=wa(v,e,b.unit),h=p.anchor;h=0<ve(d.anchor,h)?(f=d.head,xe(p.from(),d.anchor)):(f=d.anchor,we(p.to(),d.head));var m=S.ranges.slice(0);m[C]=function g(e,t){var r=t.anchor,n=t.head,i=se(e.doc,r.line);if(0==ve(r,n)&&r.sticky==n.sticky)return t;var o=lt(i);if(!o)return t;var a=Je(o,r.ch,r.sticky),l=o[a];if(l.from!=r.ch&&l.to!=r.ch)return t;var s,u=a+(l.from==r.ch==(1!=l.level)?0:1);if(0==u||u==o.length)return t;if(n.line!=r.line)s=0<(n.line-r.line)*("ltr"==e.doc.direction?1:-1);else{var c=Je(o,n.ch,n.sticky),f=c-a||(n.ch-r.ch)*(1==l.level?-1:1);s=c==u-1||c==u?f<0:0<f}var p=o[u+(s?-1:0)],d=s==(1==p.level),h=d?p.from:p.to,m=d?"after":"before";return r.ch==h&&r.sticky==m?t:new Ni(new ge(r.line,h,m),n)}(v,new Ni(Se(w,h),f)),ro(w,Li(v,m,C),z)}}var s=a.wrapper.getBoundingClientRect(),u=0;function n(e){v.state.selectingText=!1,u=Infinity,vt(e),a.input.focus(),ft(a.wrapper.ownerDocument,"mousemove",i),ft(a.wrapper.ownerDocument,"mouseup",o),w.history.lastSelOrigin=null}var i=ri(v,function(e){(0!==e.buttons&&Ct(e)?function o(e){var t=++u,r=mn(v,e,!0,"rectangle"==b.unit);if(r)if(0!=ve(r,T)){v.curOp.focus=M(),l(r);var n=In(a,w);(r.line>=n.to||r.line<n.from)&&setTimeout(ri(v,function(){u==t&&o(e)}),150)}else{var i=e.clientY<s.top?-20:e.clientY>s.bottom?20:0;i&&setTimeout(ri(v,function(){u==t&&(a.scroller.scrollTop+=i,o(e))}),50)}}:n)(e)}),o=ri(v,n);v.state.selectingText=o,ut(a.wrapper.ownerDocument,"mousemove",i),ut(a.wrapper.ownerDocument,"mouseup",o)})(e,n,t,o)}(t,n,o,e):xt(e)==r.scroller&&vt(e):2==i?(n&&Ji(t.doc,n),setTimeout(function(){return r.input.focus()},20)):3==i&&(b?t.display.input.onContextMenu(e):Tn(t)))}}function wa(e,t,r){if("char"==r)return new Ni(t,t);if("word"==r)return e.findWordAt(t);if("line"==r)return new Ni(ge(t.line,0),Se(e.doc,ge(t.line+1,0)));var n=r(e,t);return new Ni(n.from,n.to)}function xa(e,t,r,n){var i,o;if(t.touches)i=t.touches[0].clientX,o=t.touches[0].clientY;else try{i=t.clientX,o=t.clientY}catch(t){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;n&&vt(t);var a=e.display,l=a.lineDiv.getBoundingClientRect();if(o>l.bottom||!mt(e,r))return bt(t);o-=l.top-a.viewOffset;for(var s=0;s<e.options.gutters.length;++s){var u=a.gutters.childNodes[s];if(u&&u.getBoundingClientRect().right>=i)return pt(e,r,e,de(e.doc,o),e.options.gutters[s],t),bt(t)}}function Ca(e,t){return xa(e,t,"gutterClick",!0)}function Sa(e,t){Ir(e.display,t)||function r(e,t){return mt(e,"gutterContextMenu")&&xa(e,t,"gutterContextMenu",!1)}(e,t)||dt(e,t,"contextmenu")||b||e.display.input.onContextMenu(t)}function Ta(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),Kr(e)}ya.prototype.compare=function(e,t,r){return this.time+400>e&&0==ve(t,this.pos)&&r==this.button};var Oa={toString:function(){return"CodeMirror.Init"}},Na={},La={};function Ea(e){yi(e),oi(e),_n(e)}function Ia(e,t,r){if(!t!=!(r&&r!=Oa)){var n=e.display.dragFunctions,i=t?ut:ft;i(e.display.scroller,"dragstart",n.start),i(e.display.scroller,"dragenter",n.enter),i(e.display.scroller,"dragover",n.over),i(e.display.scroller,"dragleave",n.leave),i(e.display.scroller,"drop",n.drop)}}function _a(e){e.options.lineWrapping?(A(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(N(e.display.wrapper,"CodeMirror-wrap"),$e(e)),hn(e),oi(e),Kr(e),setTimeout(function(){return zn(e)},100)}function ka(e,t){var r=this;if(!(this instanceof ka))return new ka(e,t);this.options=t=t?D(t):{},D(Na,t,!1),bi(t);var n=t.value;"string"==typeof n?n=new Fo(n,t.mode,null,t.lineSeparator,t.direction):t.mode&&(n.modeOption=t.mode),this.doc=n;var i=new ka.inputStyles[t.inputStyle](this),o=this.display=new le(e,n,i);for(var a in yi(o.wrapper.CodeMirror=this),Ta(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),Kn(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 V,keySeq:null,specialChars:null},t.autofocus&&!p&&o.input.focus(),S&&T<11&&setTimeout(function(){return r.display.input.reset(!0)},20),function u(o){var i=o.display;ut(i.scroller,"mousedown",ri(o,ba)),ut(i.scroller,"dblclick",S&&T<11?ri(o,function(e){if(!dt(o,e)){var t=mn(o,e);if(t&&!Ca(o,e)&&!Ir(o.display,e)){vt(e);var r=o.findWordAt(t);Ji(o.doc,r.anchor,r.head)}}}):function(e){return dt(o,e)||vt(e)});ut(i.scroller,"contextmenu",function(e){return Sa(o,e)});var n,a={end:0};function l(){i.activeTouch&&(n=setTimeout(function(){return i.activeTouch=null},1e3),(a=i.activeTouch).end=+new Date)}function s(e,t){if(null==t.left)return 1;var r=t.left-e.left,n=t.top-e.top;return 400<r*r+n*n}ut(i.scroller,"touchstart",function(e){if(!dt(o,e)&&!function r(e){if(1==e.touches.length){var t=e.touches[0];return t.radiusX<=1&&t.radiusY<=1}}(e)&&!Ca(o,e)){i.input.ensurePolled(),clearTimeout(n);var t=+new Date;i.activeTouch={start:t,moved:!1,prev:t-a.end<=300?a:null},1==e.touches.length&&(i.activeTouch.left=e.touches[0].pageX,i.activeTouch.top=e.touches[0].pageY)}}),ut(i.scroller,"touchmove",function(){i.activeTouch&&(i.activeTouch.moved=!0)}),ut(i.scroller,"touchend",function(e){var t=i.activeTouch;if(t&&!Ir(i,e)&&null!=t.left&&!t.moved&&new Date-t.start<300){var r,n=o.coordsChar(i.activeTouch,"page");r=!t.prev||s(t,t.prev)?new Ni(n,n):!t.prev.prev||s(t,t.prev.prev)?o.findWordAt(n):new Ni(ge(n.line,0),Se(o.doc,ge(n.line+1,0))),o.setSelection(r.anchor,r.head),o.focus(),vt(e)}l()}),ut(i.scroller,"touchcancel",l),ut(i.scroller,"scroll",function(){i.scroller.clientHeight&&(Xn(o,i.scroller.scrollTop),Wn(o,i.scroller.scrollLeft,!0),pt(o,"scroll",o))}),ut(i.scroller,"mousewheel",function(e){return Ti(o,e)}),ut(i.scroller,"DOMMouseScroll",function(e){return Ti(o,e)}),ut(i.wrapper,"scroll",function(){return i.wrapper.scrollTop=i.wrapper.scrollLeft=0}),i.dragFunctions={enter:function(e){dt(o,e)||wt(e)},over:function(e){dt(o,e)||(!function i(e,t){var r=mn(e,t);if(r){var n=document.createDocumentFragment();bn(e,r,n),e.display.dragCursor||(e.display.dragCursor=_("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),e.display.lineSpace.insertBefore(e.display.dragCursor,e.display.cursorDiv)),E(e.display.dragCursor,n)}}(o,e),wt(e))},start:function(e){return function n(e,t){if(S&&(!e.state.draggingText||new Date-Po<100))wt(t);else if(!dt(e,t)&&!Ir(e.display,t)&&(t.dataTransfer.setData("Text",e.getSelection()),t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.setDragImage&&!c)){var r=_("img",null,null,"position: fixed; left: 0; top: 0;");r.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",g&&(r.width=r.height=1,e.display.wrapper.appendChild(r),r._top=r.offsetTop),t.dataTransfer.setDragImage(r,0,0),g&&r.parentNode.removeChild(r)}}(o,e)},drop:ri(o,Bo),leave:function(e){dt(o,e)||Do(o)}};var e=i.input.getField();ut(e,"keyup",function(e){return ha.call(o,e)}),ut(e,"keydown",ri(o,da)),ut(e,"keypress",ri(o,ma)),ut(e,"focus",function(e){return On(o,e)}),ut(e,"blur",function(e){return Nn(o,e)})}(this),Wo(),$n(this),this.curOp.forceUpdate=!0,Xi(this,n),t.autofocus&&!p||this.hasFocus()?setTimeout(B(On,this),20):Nn(this),La)La.hasOwnProperty(a)&&La[a](r,t[a],Oa);kn(this),t.finishInit&&t.finishInit(this);for(var l=0;l<Ma.length;++l)Ma[l](r);qn(this),w&&t.lineWrapping&&"optimizelegibility"==getComputedStyle(o.lineDiv).textRendering&&(o.lineDiv.style.textRendering="auto")}ka.defaults=Na,ka.optionHandlers=La;var Ma=[];function Aa(e,t,r,n){var i,o=e.doc;null==r&&(r="add"),"smart"==r&&(o.mode.indent?i=Kt(e,t).state:r="prev");var a=e.options.tabSize,l=se(o,t),s=X(l.text,null,a);l.stateAfter&&(l.stateAfter=null);var u,c=l.text.match(/^\s*/)[0];if(n||/\S/.test(l.text)){if("smart"==r&&((u=o.mode.indent(i,l.text.slice(c.length),l.text))==H||150<u)){if(!n)return;r="prev"}}else u=0,r="not";"prev"==r?u=t>o.first?X(se(o,t-1).text,null,a):0:"add"==r?u=s+e.options.indentUnit:"subtract"==r?u=s-e.options.indentUnit:"number"==typeof r&&(u=s+r),u=Math.max(0,u);var f="",p=0;if(e.options.indentWithTabs)for(var d=Math.floor(u/a);d;--d)p+=a,f+="\t";if(p<u&&(f+=Y(u-p)),f!=c)return yo(o,f,ge(t,0),ge(t,c.length),"+input"),!(l.stateAfter=null);for(var h=0;h<o.sel.ranges.length;h++){var m=o.sel.ranges[h];if(m.head.line==t&&m.head.ch<c.length){var g=ge(t,c.length);Qi(o,h,new Ni(g,g));break}}}ka.defineInitHook=function(e){return Ma.push(e)};var Fa=null;function Pa(e){Fa=e}function Ba(e,t,r,n,i){var o=e.doc;e.display.shift=!1,n=n||o.sel;var a=e.state.pasteIncoming||"paste"==i,l=It(t),s=null;if(a&&1<n.ranges.length)if(Fa&&Fa.text.join("\n")==t){if(n.ranges.length%Fa.text.length==0){s=[];for(var u=0;u<Fa.text.length;u++)s.push(o.splitLines(Fa.text[u]))}}else l.length==n.ranges.length&&e.options.pasteLinesPerSelection&&(s=q(l,function(e){return[e]}));for(var c=e.curOp.updateInput,f=n.ranges.length-1;0<=f;f--){var p=n.ranges[f],d=p.from(),h=p.to();p.empty()&&(r&&0<r?d=ge(d.line,d.ch-r):e.state.overwrite&&!a?h=ge(h.line,Math.min(se(o,h.line).text.length,h.ch+$(l).length)):a&&Fa&&Fa.lineWise&&Fa.text.join("\n")==t&&(d=h=ge(d.line,0)));var m={from:d,to:h,text:s?s[f%s.length]:l,origin:i||(a?"paste":e.state.cutIncoming?"cut":"+input")};po(e.doc,m),gr(e,"inputRead",e,m)}t&&!a&&Xa(e,t),Fn(e),e.curOp.updateInput<2&&(e.curOp.updateInput=c),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=!1}function Da(e,t){var r=e.clipboardData&&e.clipboardData.getData("Text");return r&&(e.preventDefault(),t.isReadOnly()||t.options.disableInput||ti(t,function(){return Ba(t,r,0,null,"paste")}),1)}function Xa(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var r=e.doc.sel,n=r.ranges.length-1;0<=n;n--){var i=r.ranges[n];if(!(100<i.head.ch||n&&r.ranges[n-1].head.line==i.head.line)){var o=e.getModeAt(i.head),a=!1;if(o.electricChars){for(var l=0;l<o.electricChars.length;l++)if(-1<t.indexOf(o.electricChars.charAt(l))){a=Aa(e,i.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(se(e.doc,i.head.line).text.slice(0,i.head.ch))&&(a=Aa(e,i.head.line,"smart"));a&&gr(e,"electricInput",e,i.head.line)}}}function Va(e){for(var t=[],r=[],n=0;n<e.doc.sel.ranges.length;n++){var i=e.doc.sel.ranges[n].head.line,o={anchor:ge(i,0),head:ge(i+1,0)};r.push(o),t.push(e.getRange(o.anchor,o.head))}return{text:t,ranges:r}}function Wa(e,t){e.setAttribute("autocorrect","off"),e.setAttribute("autocapitalize","off"),e.setAttribute("spellcheck",!!t)}function Ra(){var e=_("textarea",null,null,"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"),t=_("div",[e],null,"overflow: hidden; position: relative; width: 3px; height: 0px;");return w?e.style.width="1000px":e.setAttribute("wrap","off"),s&&(e.style.border="1px solid black"),Wa(e),t}function Ha(n,i,o,e,a){var t=i,r=o,l=se(n,i.line);function s(e){var t;if(null==(t=a?function v(t,r,l,e){var s=lt(r,t.doc.direction);if(!s)return ra(r,l,e);l.ch>=r.text.length?(l.ch=r.text.length,l.sticky="before"):l.ch<=0&&(l.ch=0,l.sticky="after");var n=Je(s,l.ch,l.sticky),i=s[n];if("ltr"==t.doc.direction&&i.level%2==0&&(0<e?i.to>l.ch:i.from<l.ch))return ra(r,l,e);var o,u=function u(e,t){return ta(r,e instanceof ge?e.ch:e,t)},a=function a(e){return t.options.lineWrapping?(o=o||Vr(t,r),an(t,r,o,e)):{begin:0,end:r.text.length}},c=a("before"==l.sticky?u(l,-1):l.ch);if("rtl"==t.doc.direction||1==i.level){var f=1==i.level==e<0,p=u(l,f?1:-1);if(null!=p&&(f?p<=i.to&&p<=c.end:p>=i.from&&p>=c.begin)){var d=f?"before":"after";return new ge(l.line,p,d)}}var h=function h(e,t,r){for(var n=function n(e,t){return t?new ge(l.line,u(e,1),"before"):new ge(l.line,e,"after")};0<=e&&e<s.length;e+=t){var i=s[e],o=0<t==(1!=i.level),a=o?r.begin:u(r.end,-1);if(i.from<=a&&a<i.to)return n(a,o);if(a=o?i.from:u(i.to,-1),r.begin<=a&&a<r.end)return n(a,o)}},m=h(n+e,e,c);if(m)return m;var g=0<e?c.end:u(c.begin,-1);return null==g||0<e&&g==r.text.length||!(m=h(0<e?0:s.length-1,e,a(g)))?null:m}(n.cm,l,i,o):ra(l,i,o))){if(e||!function r(){var e=i.line+o;return!(e<n.first||e>=n.first+n.size)&&(i=new ge(e,i.ch,i.sticky),l=se(n,e))}())return;i=na(a,n.cm,l,i.line,o)}else i=t;return 1}if("char"==e)s();else if("column"==e)s(!0);else if("word"==e||"group"==e)for(var u=null,c="group"==e,f=n.cm&&n.cm.getHelper(i,"wordChars"),p=!0;!(o<0)||s(!p);p=!1){var d=l.text.charAt(i.ch)||"\n",h=te(d,f)?"w":c&&"\n"==d?"n":!c||/\s/.test(d)?null:"p";if(!c||p||h||(h="s"),u&&u!=h){o<0&&(o=1,s(),i.sticky="after");break}if(h&&(u=h),0<o&&!s(!p))break}var m=so(n,i,t,r,!0);return ye(t,m)&&(m.hitSide=!0),m}function ja(e,t,r,n){var i,o,a=e.doc,l=t.left;if("page"==n){var s=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),u=Math.max(s-.5*un(e.display),3);i=(0<r?t.bottom:t.top)+r*u}else"line"==n&&(i=0<r?t.bottom+3:t.top-3);for(;(o=nn(e,l,i)).outside;){if(r<0?i<=0:i>=a.height){o.hitSide=!0;break}i+=5*r}return o}var za=function za(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new V,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function Ga(e,t){var r=Xr(e,t.line);if(!r||r.hidden)return null;var n=se(e.doc,t.line),i=Br(r,n,t.line),o=lt(n,e.doc.direction),a="left";o&&(a=Je(o,t.ch)%2?"right":"left");var l=jr(i.map,t.ch,a);return l.offset="right"==l.collapse?l.end:l.start,l}function Ua(e,t){return t&&(e.bad=!0),e}function Ka(e,t,r){var n;if(t==e.display.lineDiv){if(!(n=e.display.lineDiv.childNodes[r]))return Ua(e.clipPos(ge(e.display.viewTo-1)),!0);t=null,r=0}else for(n=t;;n=n.parentNode){if(!n||n==e.display.lineDiv)return null;if(n.parentNode&&n.parentNode==e.display.lineDiv)break}for(var i=0;i<e.display.view.length;i++){var o=e.display.view[i];if(o.node==n)return Ya(o,t,r)}}function Ya(u,e,t){var r=u.text.firstChild,n=!1;if(!e||!k(r,e))return Ua(ge(pe(u.line),0),!0);if(e==r&&(n=!0,e=r.childNodes[t],t=0,!e)){var i=u.rest?$(u.rest):u.line;return Ua(ge(pe(i),i.text.length),n)}var o=3==e.nodeType?e:null,a=e;for(o||1!=e.childNodes.length||3!=e.firstChild.nodeType||(o=e.firstChild,t=t&&o.nodeValue.length);a.parentNode!=r;)a=a.parentNode;var c=u.measure,f=c.maps;function l(e,t,r){for(var n=-1;n<(f?f.length:0);n++)for(var i=n<0?c.map:f[n],o=0;o<i.length;o+=3){var a=i[o+2];if(a==e||a==t){var l=pe(n<0?u.line:u.rest[n]),s=i[o]+r;return(r<0||a!=e)&&(s=i[o+(r?1:0)]),ge(l,s)}}}var s=l(o,a,t);if(s)return Ua(s,n);for(var p=a.nextSibling,d=o?o.nodeValue.length-t:0;p;p=p.nextSibling){if(s=l(p,p.firstChild,0))return Ua(ge(s.line,s.ch-d),n);d+=p.textContent.length}for(var h=a.previousSibling,m=t;h;h=h.previousSibling){if(s=l(h,h.firstChild,-1))return Ua(ge(s.line,s.ch+m),n);m+=h.textContent.length}}za.prototype.init=function(e){var t=this,a=this,l=a.cm,s=a.div=e.lineDiv;function r(e){if(!dt(l,e)){if(l.somethingSelected())Pa({lineWise:!1,text:l.getSelections()}),"cut"==e.type&&l.replaceSelection("",null,"cut");else{if(!l.options.lineWiseCopyCut)return;var t=Va(l);Pa({lineWise:!0,text:t.text}),"cut"==e.type&&l.operation(function(){l.setSelections(t.ranges,0,j),l.replaceSelection("",null,"cut")})}if(e.clipboardData){e.clipboardData.clearData();var r=Fa.text.join("\n");if(e.clipboardData.setData("Text",r),e.clipboardData.getData("Text")==r)return void e.preventDefault()}var n=Ra(),i=n.firstChild;l.display.lineSpace.insertBefore(n,l.display.lineSpace.firstChild),i.value=Fa.text.join("\n");var o=document.activeElement;P(i),setTimeout(function(){l.display.lineSpace.removeChild(n),o.focus(),o==s&&a.showPrimarySelection()},50)}}Wa(s,l.options.spellcheck),ut(s,"paste",function(e){dt(l,e)||Da(e,l)||T<=11&&setTimeout(ri(l,function(){return t.updateFromDOM()}),20)}),ut(s,"compositionstart",function(e){t.composing={data:e.data,done:!1}}),ut(s,"compositionupdate",function(e){t.composing||(t.composing={data:e.data,done:!1})}),ut(s,"compositionend",function(e){t.composing&&(e.data!=t.composing.data&&t.readFromDOMSoon(),t.composing.done=!0)}),ut(s,"touchstart",function(){return a.forceCompositionEnd()}),ut(s,"input",function(){t.composing||t.readFromDOMSoon()}),ut(s,"copy",r),ut(s,"cut",r)},za.prototype.prepareSelection=function(){var e=yn(this.cm,!1);return e.focus=this.cm.state.focused,e},za.prototype.showSelection=function(e,t){e&&this.cm.display.view.length&&((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},za.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},za.prototype.showPrimarySelection=function(){var e=this.getSelection(),t=this.cm,r=t.doc.sel.primary(),n=r.from(),i=r.to();if(t.display.viewTo==t.display.viewFrom||n.line>=t.display.viewTo||i.line<t.display.viewFrom)e.removeAllRanges();else{var o=Ka(t,e.anchorNode,e.anchorOffset),a=Ka(t,e.focusNode,e.focusOffset);if(!o||o.bad||!a||a.bad||0!=ve(xe(o,a),n)||0!=ve(we(o,a),i)){var l=t.display.view,s=n.line>=t.display.viewFrom&&Ga(t,n)||{node:l[0].measure.map[2],offset:0},u=i.line<t.display.viewTo&&Ga(t,i);if(!u){var c=l[l.length-1].measure,f=c.maps?c.maps[c.maps.length-1]:c.map;u={node:f[f.length-1],offset:f[f.length-2]-f[f.length-3]}}if(s&&u){var p,d=e.rangeCount&&e.getRangeAt(0);try{p=O(s.node,s.offset,u.offset,u.node)}catch(h){}p&&(!m&&t.state.focused?(e.collapse(s.node,s.offset),p.collapsed||(e.removeAllRanges(),e.addRange(p))):(e.removeAllRanges(),e.addRange(p)),d&&null==e.anchorNode?e.addRange(d):m&&this.startGracePeriod()),this.rememberSelection()}else e.removeAllRanges()}}},za.prototype.startGracePeriod=function(){var e=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){e.gracePeriod=!1,e.selectionChanged()&&e.cm.operation(function(){return e.cm.curOp.selectionChanged=!0})},20)},za.prototype.showMultipleSelections=function(e){E(this.cm.display.cursorDiv,e.cursors),E(this.cm.display.selectionDiv,e.selection)},za.prototype.rememberSelection=function(){var e=this.getSelection();this.lastAnchorNode=e.anchorNode,this.lastAnchorOffset=e.anchorOffset,this.lastFocusNode=e.focusNode,this.lastFocusOffset=e.focusOffset},za.prototype.selectionInEditor=function(){var e=this.getSelection();if(!e.rangeCount)return!1;var t=e.getRangeAt(0).commonAncestorContainer;return k(this.div,t)},za.prototype.focus=function(){"nocursor"!=this.cm.options.readOnly&&(this.selectionInEditor()||this.showSelection(this.prepareSelection(),!0),this.div.focus())},za.prototype.blur=function(){this.div.blur()},za.prototype.getField=function(){return this.div},za.prototype.supportsTouch=function(){return!0},za.prototype.receivedFocus=function(){var e=this;this.selectionInEditor()?this.pollSelection():ti(this.cm,function(){return e.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,function t(){e.cm.state.focused&&(e.pollSelection(),e.polling.set(e.cm.options.pollInterval,t))})},za.prototype.selectionChanged=function(){var e=this.getSelection();return e.anchorNode!=this.lastAnchorNode||e.anchorOffset!=this.lastAnchorOffset||e.focusNode!=this.lastFocusNode||e.focusOffset!=this.lastFocusOffset},za.prototype.pollSelection=function(){if(null==this.readDOMTimeout&&!this.gracePeriod&&this.selectionChanged()){var e=this.getSelection(),t=this.cm;if(f&&a&&this.cm.options.gutters.length&&function i(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return 1;return}(e.anchorNode))return this.cm.triggerOnKeyDown({type:"keydown",keyCode:8,preventDefault:Math.abs}),this.blur(),void this.focus();if(!this.composing){this.rememberSelection();var r=Ka(t,e.anchorNode,e.anchorOffset),n=Ka(t,e.focusNode,e.focusOffset);r&&n&&ti(t,function(){ro(t.doc,Ei(r,n),j),(r.bad||n.bad)&&(t.curOp.selectionChanged=!0)})}}},za.prototype.pollContent=function(){null!=this.readDOMTimeout&&(clearTimeout(this.readDOMTimeout),this.readDOMTimeout=null);var e,t,r,n=this.cm,i=n.display,o=n.doc.sel.primary(),a=o.from(),l=o.to();if(0==a.ch&&a.line>n.firstLine()&&(a=ge(a.line-1,se(n.doc,a.line-1).length)),l.ch==se(n.doc,l.line).text.length&&l.line<n.lastLine()&&(l=ge(l.line+1,0)),a.line<i.viewFrom||l.line>i.viewTo-1)return!1;r=a.line==i.viewFrom||0==(e=gn(n,a.line))?(t=pe(i.view[0].line),i.view[0].node):(t=pe(i.view[e].line),i.view[e-1].node.nextSibling);var s,u,c=gn(n,l.line);if(u=c==i.view.length-1?(s=i.viewTo-1,i.lineDiv.lastChild):(s=pe(i.view[c+1].line)-1,i.view[c+1].node.previousSibling),!r)return!1;for(var f=n.doc.splitLines(function S(s,e,t,u,c){var r="",f=!1,p=s.doc.lineSeparator(),d=!1;function h(){f&&(r+=p,d&&(r+=p),f=d=!1)}function m(e){e&&(h(),r+=e)}function g(e){if(1==e.nodeType){var t=e.getAttribute("cm-text");if(t)return void m(t);var r,n=e.getAttribute("cm-marker");if(n){var i=s.findMarks(ge(u,0),ge(c+1,0),function l(t){return function(e){return e.id==t}}(+n));return void(i.length&&(r=i[0].find(0))&&m(ue(s.doc,r.from,r.to).join(p)))}if("false"==e.getAttribute("contenteditable"))return;var o=/^(pre|div|p|li|table|br)$/i.test(e.nodeName);if(!/^br$/i.test(e.nodeName)&&0==e.textContent.length)return;o&&h();for(var a=0;a<e.childNodes.length;a++)g(e.childNodes[a]);/^(pre|p)$/i.test(e.nodeName)&&(d=!0),o&&(f=!0)}else 3==e.nodeType&&m(e.nodeValue.replace(/\u200b/g,"").replace(/\u00a0/g," "))}for(;g(e),e!=t;)e=e.nextSibling,d=!1;return r}(n,r,u,t,s)),p=ue(n.doc,ge(t,0),ge(s,se(n.doc,s).text.length));1<f.length&&1<p.length;)if($(f)==$(p))f.pop(),p.pop(),s--;else{if(f[0]!=p[0])break;f.shift(),p.shift(),t++}for(var d=0,h=0,m=f[0],g=p[0],v=Math.min(m.length,g.length);d<v&&m.charCodeAt(d)==g.charCodeAt(d);)++d;for(var y=$(f),b=$(p),w=Math.min(y.length-(1==f.length?d:0),b.length-(1==p.length?d:0));h<w&&y.charCodeAt(y.length-h-1)==b.charCodeAt(b.length-h-1);)++h;if(1==f.length&&1==p.length&&t==a.line)for(;d&&d>a.ch&&y.charCodeAt(y.length-h-1)==b.charCodeAt(b.length-h-1);)d--,h++;f[f.length-1]=y.slice(0,y.length-h).replace(/^\u200b+/,""),f[0]=f[0].slice(d).replace(/\u200b+$/,"");var x=ge(t,d),C=ge(s,p.length?$(p).length-h:0);return 1<f.length||f[0]||ve(x,C)?(yo(n.doc,f,x,C,"+input"),!0):void 0},za.prototype.ensurePolled=function(){this.forceCompositionEnd()},za.prototype.reset=function(){this.forceCompositionEnd()},za.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},za.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()},80))},za.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||ti(this.cm,function(){return oi(e.cm)})},za.prototype.setUneditable=function(e){e.contentEditable="false"},za.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||ri(this.cm,Ba)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},za.prototype.readOnlyChanged=function(e){this.div.contentEditable=String("nocursor"!=e)},za.prototype.onContextMenu=function(){},za.prototype.resetPosition=function(){},za.prototype.needsContentAttribute=!0;var $a=function $a(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new V,this.hasSelection=!1,this.composing=null};$a.prototype.init=function(t){var e=this,r=this,n=this.cm;this.createField(t);var i=this.textarea;function o(e){if(!dt(n,e)){if(n.somethingSelected())Pa({lineWise:!1,text:n.getSelections()});else{if(!n.options.lineWiseCopyCut)return;var t=Va(n);Pa({lineWise:!0,text:t.text}),"cut"==e.type?n.setSelections(t.ranges,null,j):(r.prevInput="",i.value=t.text.join("\n"),P(i))}"cut"==e.type&&(n.state.cutIncoming=!0)}}t.wrapper.insertBefore(this.wrapper,t.wrapper.firstChild),s&&(i.style.width="0px"),ut(i,"input",function(){S&&9<=T&&e.hasSelection&&(e.hasSelection=null),r.poll()}),ut(i,"paste",function(e){dt(n,e)||Da(e,n)||(n.state.pasteIncoming=!0,r.fastPoll())}),ut(i,"cut",o),ut(i,"copy",o),ut(t.scroller,"paste",function(e){Ir(t,e)||dt(n,e)||(n.state.pasteIncoming=!0,r.focus())}),ut(t.lineSpace,"selectstart",function(e){Ir(t,e)||vt(e)}),ut(i,"compositionstart",function(){var e=n.getCursor("from");r.composing&&r.composing.range.clear(),r.composing={start:e,range:n.markText(e,n.getCursor("to"),{className:"CodeMirror-composing"})}}),ut(i,"compositionend",function(){r.composing&&(r.poll(),r.composing.range.clear(),r.composing=null)})},$a.prototype.createField=function(e){this.wrapper=Ra(),this.textarea=this.wrapper.firstChild},$a.prototype.prepareSelection=function(){var e=this.cm,t=e.display,r=e.doc,n=yn(e);if(e.options.moveInputWithCursor){var i=en(e,r.sel.primary().head,"div"),o=t.wrapper.getBoundingClientRect(),a=t.lineDiv.getBoundingClientRect();n.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+a.top-o.top)),n.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+a.left-o.left))}return n},$a.prototype.showSelection=function(e){var t=this.cm.display;E(t.cursorDiv,e.cursors),E(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},$a.prototype.reset=function(e){if(!this.contextMenuPending&&!this.composing){var t=this.cm;if(t.somethingSelected()){this.prevInput="";var r=t.getSelection();this.textarea.value=r,t.state.focused&&P(this.textarea),S&&9<=T&&(this.hasSelection=r)}else e||(this.prevInput=this.textarea.value="",S&&9<=T&&(this.hasSelection=null))}},$a.prototype.getField=function(){return this.textarea},$a.prototype.supportsTouch=function(){return!1},$a.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!p||M()!=this.textarea))try{this.textarea.focus()}catch(e){}},$a.prototype.blur=function(){this.textarea.blur()},$a.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},$a.prototype.receivedFocus=function(){this.slowPoll()},$a.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},$a.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0,t.polling.set(20,function r(){t.poll()||e?(t.pollingFast=!1,t.slowPoll()):(e=!0,t.polling.set(60,r))})},$a.prototype.poll=function(){var e=this,t=this.cm,r=this.textarea,n=this.prevInput;if(this.contextMenuPending||!t.state.focused||_t(r)&&!n&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=r.value;if(i==n&&!t.somethingSelected())return!1;if(S&&9<=T&&this.hasSelection===i||x&&/[\uf700-\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var o=i.charCodeAt(0);if(8203!=o||n||(n="​"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var a=0,l=Math.min(n.length,i.length);a<l&&n.charCodeAt(a)==i.charCodeAt(a);)++a;return ti(t,function(){Ba(t,i.slice(a),n.length-a,null,e.composing?"*compose":null),1e3<i.length||-1<i.indexOf("\n")?r.value=e.prevInput="":e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},$a.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},$a.prototype.onKeyPress=function(){S&&9<=T&&(this.hasSelection=null),this.fastPoll()},$a.prototype.onContextMenu=function(e){var r=this,n=r.cm,i=n.display,o=r.textarea;r.contextMenuPending&&r.contextMenuPending();var t=mn(n,e),a=i.scroller.scrollTop;if(t&&!g){n.options.resetSelectionOnContextMenu&&-1==n.doc.sel.contains(t)&&ri(n,ro)(n.doc,Ei(t),j);var l,s=o.style.cssText,u=r.wrapper.style.cssText,c=r.wrapper.offsetParent.getBoundingClientRect();if(r.wrapper.style.cssText="position: static",o.style.cssText="position: absolute; width: 30px; height: 30px;\n      top: "+(e.clientY-c.top-5)+"px; left: "+(e.clientX-c.left-5)+"px;\n      z-index: 1000; background: "+(S?"rgba(255, 255, 255, .05)":"transparent")+";\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",w&&(l=window.scrollY),i.input.focus(),w&&window.scrollTo(null,l),i.input.reset(),n.somethingSelected()||(o.value=r.prevInput=" "),r.contextMenuPending=d,i.selForContextMenu=n.doc.sel,clearTimeout(i.detectingSelectAll),S&&9<=T&&p(),b){wt(e);var f=function f(){ft(window,"mouseup",f),setTimeout(d,20)};ut(window,"mouseup",f)}else setTimeout(d,50)}function p(){if(null!=o.selectionStart){var e=n.somethingSelected(),t="​"+(e?o.value:"");o.value="⇚",o.value=t,r.prevInput=e?"":"​",o.selectionStart=1,o.selectionEnd=t.length,i.selForContextMenu=n.doc.sel}}function d(){if(r.contextMenuPending==d&&(r.contextMenuPending=!1,r.wrapper.style.cssText=u,o.style.cssText=s,S&&T<9&&i.scrollbars.setScrollTop(i.scroller.scrollTop=a),null!=o.selectionStart)){(!S||S&&T<9)&&p();var e=0,t=function t(){i.selForContextMenu==n.doc.sel&&0==o.selectionStart&&0<o.selectionEnd&&"​"==r.prevInput?ri(n,co)(n):e++<10?i.detectingSelectAll=setTimeout(t,500):(i.selForContextMenu=null,i.input.reset())};i.detectingSelectAll=setTimeout(t,200)}}},$a.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled="nocursor"==e},$a.prototype.setUneditable=function(){},$a.prototype.needsContentAttribute=!1,function Za(i){var o=i.optionHandlers;function e(e,t,n,r){i.defaults[e]=t,n&&(o[e]=r?function(e,t,r){r!=Oa&&n(e,t,r)}:n)}i.defineOption=e,i.Init=Oa,e("value","",function(e,t){return e.setValue(t)},!0),e("mode",null,function(e,t){e.doc.modeOption=t,Ai(e)},!0),e("indentUnit",2,Ai,!0),e("indentWithTabs",!1),e("smartIndent",!0),e("tabSize",4,function(e){Fi(e),Kr(e),oi(e)},!0),e("lineSeparator",null,function(e,n){if(e.doc.lineSep=n){var i=[],o=e.doc.first;e.doc.iter(function(e){for(var t=0;;){var r=e.text.indexOf(n,t);if(-1==r)break;t=r+n.length,i.push(ge(o,r))}o++});for(var t=i.length-1;0<=t;t--)yo(e.doc,n,i[t],ge(i[t].line,i[t].ch+n.length))}}),e("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g,function(e,t,r){e.state.specialChars=new RegExp(t.source+(t.test("\t")?"":"|\t"),"g"),r!=Oa&&e.refresh()}),e("specialCharPlaceholder",ar,function(e){return e.refresh()},!0),e("electricChars",!0),e("inputStyle",p?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),e("spellcheck",!1,function(e,t){return e.getInputField().spellcheck=t},!0),e("rtlMoveVisually",!h),e("wholeLineUpdateBefore",!0),e("theme","default",function(e){Ta(e),Ea(e)},!0),e("keyMap","default",function(e,t,r){var n=Qo(t),i=r!=Oa&&Qo(r);i&&i.detach&&i.detach(e,n),n.attach&&n.attach(e,i||null)}),e("extraKeys",null),e("configureMouse",null),e("lineWrapping",!1,_a,!0),e("gutters",[],function(e){bi(e.options),Ea(e)},!0),e("fixedGutter",!0,function(e,t){e.display.gutters.style.left=t?pn(e.display)+"px":"0",e.refresh()},!0),e("coverGutterNextToScrollbar",!1,function(e){return zn(e)},!0),e("scrollbarStyle","native",function(e){Kn(e),zn(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),e("lineNumbers",!1,function(e){bi(e.options),Ea(e)},!0),e("firstLineNumber",1,Ea,!0),e("lineNumberFormatter",function(e){return e},Ea,!0),e("showCursorWhenSelecting",!1,vn,!0),e("resetSelectionOnContextMenu",!0),e("lineWiseCopyCut",!0),e("pasteLinesPerSelection",!0),e("selectionsMayTouch",!1),e("readOnly",!1,function(e,t){"nocursor"==t&&(Nn(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)}),e("disableInput",!1,function(e,t){t||e.display.input.reset()},!0),e("dragDrop",!0,Ia),e("allowDropFileTypes",null),e("cursorBlinkRate",530),e("cursorScrollMargin",0),e("cursorHeight",1,vn,!0),e("singleCursorHeightPerLine",!0,vn,!0),e("workTime",100),e("workDelay",100),e("flattenSpans",!0,Fi,!0),e("addModeClass",!1,Fi,!0),e("pollInterval",100),e("undoDepth",200,function(e,t){return e.doc.history.undoDepth=t}),e("historyEventDelay",1250),e("viewportMargin",10,function(e){return e.refresh()},!0),e("maxHighlightLength",1e4,Fi,!0),e("moveInputWithCursor",!0,function(e,t){t||e.display.input.resetPosition()}),e("tabindex",null,function(e,t){return e.display.input.getField().tabIndex=t||""}),e("autofocus",null),e("direction","ltr",function(e,t){return e.doc.setDirection(t)},!0),e("phrases",null)}(ka),function Qa(i){var o=i.optionHandlers,u=i.helpers={};i.prototype={constructor:i,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,t){var r=this.options,n=r[e];r[e]==t&&"mode"!=e||(r[e]=t,o.hasOwnProperty(e)&&ri(this,o[e])(this,t,n),pt(this,"optionChange",this,e))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"](Qo(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,r=0;r<t.length;++r)if(t[r]==e||t[r].name==e)return t.splice(r,1),!0},addOverlay:ni(function(e,t){var r=e.token?e:i.getMode(this.options,e);if(r.startState)throw new Error("Overlays may not be stateful.");!function o(e,t,r){for(var n=0,i=r(t);n<e.length&&r(e[n])<=i;)n++;e.splice(n,0,t)}(this.state.overlays,{mode:r,modeSpec:e,opaque:t&&t.opaque,priority:t&&t.priority||0},function(e){return e.priority}),this.state.modeGen++,oi(this)}),removeOverlay:ni(function(e){for(var t=this.state.overlays,r=0;r<t.length;++r){var n=t[r].modeSpec;if(n==e||"string"==typeof e&&n.name==e)return t.splice(r,1),this.state.modeGen++,void oi(this)}}),indentLine:ni(function(e,t,r){"string"!=typeof t&&"number"!=typeof t&&(t=null==t?this.options.smartIndent?"smart":"prev":t?"add":"subtract"),he(this.doc,e)&&Aa(this,e,t,r)}),indentSelection:ni(function(e){for(var t=this.doc.sel.ranges,r=-1,n=0;n<t.length;n++){var i=t[n];if(i.empty())i.head.line>r&&(Aa(this,i.head.line,e,!0),r=i.head.line,n==this.doc.sel.primIndex&&Fn(this));else{var o=i.from(),a=i.to(),l=Math.max(r,o.line);r=Math.min(this.lastLine(),a.line-(a.ch?0:1))+1;for(var s=l;s<r;++s)Aa(this,s,e);var u=this.doc.sel.ranges;0==o.ch&&t.length==u.length&&0<u[n].from().ch&&Qi(this.doc,n,new Ni(o,u[n].to()),j)}}}),getTokenAt:function(e,t){return Zt(this,e,t)},getLineTokens:function(e,t){return Zt(this,ge(e),t,!0)},getTokenTypeAt:function(e){e=Se(this.doc,e);var t,r=Ut(this,se(this.doc,e.line)),n=0,i=(r.length-1)/2,o=e.ch;if(0==o)t=r[2];else for(;;){var a=n+i>>1;if((a?r[2*a-1]:0)>=o)i=a;else{if(!(r[2*a+1]<o)){t=r[2*a+2];break}n=1+a}}var l=t?t.indexOf("overlay "):-1;return l<0?t:0==l?null:t.slice(0,l-1)},getModeAt:function(e){var t=this.doc.mode;return t.innerMode?i.innerMode(t,this.getTokenAt(e).state).mode:t},getHelper:function(e,t){return this.getHelpers(e,t)[0]},getHelpers:function(e,t){var r=[];if(!u.hasOwnProperty(t))return r;var n=u[t],i=this.getModeAt(e);if("string"==typeof i[t])n[i[t]]&&r.push(n[i[t]]);else if(i[t])for(var o=0;o<i[t].length;o++){var a=n[i[t][o]];a&&r.push(a)}else i.helperType&&n[i.helperType]?r.push(n[i.helperType]):n[i.name]&&r.push(n[i.name]);for(var l=0;l<n._global.length;l++){var s=n._global[l];s.pred(i,this)&&-1==W(r,s.val)&&r.push(s.val)}return r},getStateAfter:function(e,t){var r=this.doc;return Kt(this,(e=Ce(r,null==e?r.first+r.size-1:e))+1,t).state},cursorCoords:function(e,t){var r=this.doc.sel.primary();return en(this,null==e?r.head:"object"==nl(e)?Se(this.doc,e):e?r.from():r.to(),t||"page")},charCoords:function(e,t){return Qr(this,Se(this.doc,e),t||"page")},coordsChar:function(e,t){return nn(this,(e=Zr(this,e,t||"page")).left,e.top)},lineAtHeight:function(e,t){return e=Zr(this,{top:e,left:0},t||"page").top,de(this.doc,e+this.display.viewOffset)},heightAtLine:function(e,t,r){var n,i=!1;if("number"==typeof e){var o=this.doc.first+this.doc.size-1;e<this.doc.first?e=this.doc.first:o<e&&(e=o,i=!0),n=se(this.doc,e)}else n=e;return Jr(this,n,{top:0,left:0},t||"page",r||i).top+(i?this.doc.height-Ke(n):0)},defaultTextHeight:function(){return un(this.display)},defaultCharWidth:function(){return cn(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,r,n,i){var o=this.display,a=(e=en(this,Se(this.doc,e))).bottom,l=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),o.sizer.appendChild(t),"over"==n)a=e.top;else if("above"==n||"near"==n){var s=Math.max(o.wrapper.clientHeight,this.doc.height),u=Math.max(o.sizer.clientWidth,o.lineSpace.clientWidth);("above"==n||e.bottom+t.offsetHeight>s)&&e.top>t.offsetHeight?a=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=s&&(a=e.bottom),l+t.offsetWidth>u&&(l=u-t.offsetWidth)}t.style.top=a+"px",t.style.left=t.style.right="","right"==i?(l=o.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==i?l=0:"middle"==i&&(l=(o.sizer.clientWidth-t.offsetWidth)/2),t.style.left=l+"px"),r&&function c(e,t){var r=Mn(e,t);null!=r.scrollTop&&Xn(e,r.scrollTop),null!=r.scrollLeft&&Wn(e,r.scrollLeft)}(this,{left:l,top:a,right:l+t.offsetWidth,bottom:a+t.offsetHeight})},triggerOnKeyDown:ni(da),triggerOnKeyPress:ni(ma),triggerOnKeyUp:ha,triggerOnMouseDown:ni(ba),execCommand:function(e){if(ia.hasOwnProperty(e))return ia[e].call(null,this)},triggerElectric:ni(function(e){Xa(this,e)}),findPosH:function(e,t,r,n){var i=1;t<0&&(i=-1,t=-t);for(var o=Se(this.doc,e),a=0;a<t&&!(o=Ha(this.doc,o,i,r,n)).hitSide;++a);return o},moveH:ni(function(t,r){var n=this;this.extendSelectionsBy(function(e){return n.display.shift||n.doc.extend||e.empty()?Ha(n.doc,e.head,t,r,n.options.rtlMoveVisually):t<0?e.from():e.to()},G)}),deleteH:ni(function(r,n){var e=this.doc.sel,i=this.doc;e.somethingSelected()?i.replaceSelection("",null,"+delete"):ea(this,function(e){var t=Ha(i,e.head,r,n,!1);return r<0?{from:t,to:e.head}:{from:e.head,to:t}})}),findPosV:function(e,t,r,n){var i=1,o=n;t<0&&(i=-1,t=-t);for(var a=Se(this.doc,e),l=0;l<t;++l){var s=en(this,a,"div");if(null==o?o=s.left:s.left=o,(a=ja(this,s,i,r)).hitSide)break}return a},moveV:ni(function(n,i){var o=this,a=this.doc,l=[],s=!this.display.shift&&!a.extend&&a.sel.somethingSelected();if(a.extendSelectionsBy(function(e){if(s)return n<0?e.from():e.to();var t=en(o,e.head,"div");null!=e.goalColumn&&(t.left=e.goalColumn),l.push(t.left);var r=ja(o,t,n,i);return"page"==i&&e==a.sel.primary()&&An(o,Qr(o,r,"div").top-t.top),r},G),l.length)for(var e=0;e<a.sel.ranges.length;e++)a.sel.ranges[e].goalColumn=l[e]}),findWordAt:function(e){var t=se(this.doc,e.line).text,r=e.ch,n=e.ch;if(t){var i=this.getHelper(e,"wordChars");"before"!=e.sticky&&n!=t.length||!r?++n:--r;for(var o=t.charAt(r),a=te(o,i)?function(e){return te(e,i)}:/\s/.test(o)?function(e){return/\s/.test(e)}:function(e){return!/\s/.test(e)&&!te(e)};0<r&&a(t.charAt(r-1));)--r;for(;n<t.length&&a(t.charAt(n));)++n}return new Ni(ge(e.line,r),ge(e.line,n))},toggleOverwrite:function(e){null!=e&&e==this.state.overwrite||(((this.state.overwrite=!this.state.overwrite)?A:N)(this.display.cursorDiv,"CodeMirror-overwrite"),pt(this,"overwriteToggle",this,this.state.overwrite))},hasFocus:function(){return this.display.input.getField()==M()},isReadOnly:function(){return!(!this.options.readOnly&&!this.doc.cantEdit)},scrollTo:ni(function(e,t){Pn(this,e,t)}),getScrollInfo:function(){var e=this.display.scroller;return{left:e.scrollLeft,top:e.scrollTop,height:e.scrollHeight-Ar(this)-this.display.barHeight,width:e.scrollWidth-Ar(this)-this.display.barWidth,clientHeight:Pr(this),clientWidth:Fr(this)}},scrollIntoView:ni(function(e,t){null==e?(e={from:this.doc.sel.primary().head,to:null},null==t&&(t=this.options.cursorScrollMargin)):"number"==typeof e?e={from:ge(e,0),to:null}:null==e.from&&(e={from:e,to:null}),e.to||(e.to=e.from),e.margin=t||0,null!=e.from.line?function r(e,t){Bn(e),e.curOp.scrollToPos=t}(this,e):Dn(this,e.from,e.to,e.margin)}),setSize:ni(function(e,t){var r=this,n=function n(e){return"number"==typeof e||/^\d+$/.test(String(e))?e+"px":e};null!=e&&(this.display.wrapper.style.width=n(e)),null!=t&&(this.display.wrapper.style.height=n(t)),this.options.lineWrapping&&Ur(this);var i=this.display.viewFrom;this.doc.iter(i,this.display.viewTo,function(e){if(e.widgets)for(var t=0;t<e.widgets.length;t++)if(e.widgets[t].noHScroll){ai(r,i,"widget");break}++i}),this.curOp.forceUpdate=!0,pt(this,"refresh",this)}),operation:function(e){return ti(this,e)},startOperation:function(){return $n(this)},endOperation:function(){return qn(this)},refresh:ni(function(){var e=this.display.cachedTextHeight;oi(this),this.curOp.forceUpdate=!0,Kr(this),Pn(this,this.doc.scrollLeft,this.doc.scrollTop),gi(this),(null==e||.5<Math.abs(e-un(this.display)))&&hn(this),pt(this,"refresh",this)}),swapDoc:ni(function(e){var t=this.doc;return t.cm=null,Xi(this,e),Kr(this),this.display.input.reset(),Pn(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,gr(this,"swapDoc",this,t),t}),phrase:function(e){var t=this.options.phrases;return t&&Object.prototype.hasOwnProperty.call(t,e)?t[e]:e},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}},gt(i),i.registerHelper=function(e,t,r){u.hasOwnProperty(e)||(u[e]=i[e]={_global:[]}),u[e][t]=r},i.registerGlobalHelper=function(e,t,r,n){i.registerHelper(e,t,n),u[e]._global.push({pred:r,val:n})}}(ka);var qa="iter insert remove copy getEditor constructor".split(" ");for(var Ja in Fo.prototype)Fo.prototype.hasOwnProperty(Ja)&&W(qa,Ja)<0&&(ka.prototype[Ja]=function(e){return function(){return e.apply(this.doc,arguments)}}(Fo.prototype[Ja]));return gt(Fo),ka.inputStyles={textarea:$a,contenteditable:za},ka.defineMode=function(e){ka.defaults.mode||"null"==e||(ka.defaults.mode=e),function r(e,t){2<arguments.length&&(t.dependencies=Array.prototype.slice.call(arguments,2)),At[e]=t}.apply(this,arguments)},ka.defineMIME=function el(e,t){Ft[e]=t},ka.defineMode("null",function(){return{token:function(e){return e.skipToEnd()}}}),ka.defineMIME("text/plain","null"),ka.defineExtension=function(e,t){ka.prototype[e]=t},ka.defineDocExtension=function(e,t){Fo.prototype[e]=t},ka.fromTextArea=function tl(t,e){if((e=e?D(e):{}).value=t.value,!e.tabindex&&t.tabIndex&&(e.tabindex=t.tabIndex),!e.placeholder&&t.placeholder&&(e.placeholder=t.placeholder),null==e.autofocus){var r=M();e.autofocus=r==t||null!=t.getAttribute("autofocus")&&r==document.body}function n(){t.value=l.getValue()}var i;if(t.form&&(ut(t.form,"submit",n),!e.leaveSubmitMethodAlone)){var o=t.form;i=o.submit;try{var a=o.submit=function(){n(),o.submit=i,o.submit(),o.submit=a}}catch(s){}}e.finishInit=function(e){e.save=n,e.getTextArea=function(){return t},e.toTextArea=function(){e.toTextArea=isNaN,n(),t.parentNode.removeChild(e.getWrapperElement()),t.style.display="",t.form&&(ft(t.form,"submit",n),"function"==typeof t.form.submit&&(t.form.submit=i))}},t.style.display="none";var l=ka(function(e){return t.parentNode.insertBefore(e,t.nextSibling)},e);return l},function rl(e){e.off=ft,e.on=ut,e.wheelEventPixels=Si,e.Doc=Fo,e.splitLines=It,e.countColumn=X,e.findColumn=U,e.isWordChar=ee,e.Pass=H,e.signal=pt,e.Line=tr,e.changeEnd=Ii,e.scrollbarModel=Un,e.Pos=ge,e.cmpPos=ve,e.modes=At,e.mimeModes=Ft,e.resolveMode=Pt,e.getMode=Bt,e.modeExtensions=Dt,e.extendMode=Xt,e.copyState=Vt,e.startState=Rt,e.innerMode=Wt,e.commands=ia,e.keyMap=Uo,e.keyName=Zo,e.isModifierKey=qo,e.lookupKey=$o,e.normalizeKeyMap=Yo,e.StringStream=Ht,e.SharedTextMarker=_o,e.TextMarker=Eo,e.LineWidget=Oo,e.e_preventDefault=vt,e.e_stopPropagation=yt,e.e_stop=wt,e.addClass=A,e.contains=k,e.rmClass=N,e.keyNames=Ho}(ka),ka.version="5.42.2",ka},"object"===nl(t)&&void 0!==e?e.exports=o():(i="function"==typeof(n=o)?n.call(t,r,t,e):n)===undefined||(e.exports=i)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FormulaFunctionItem=void 0;var n,i,o,a=r(1);function l(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var u=(0,r(0).shortcut)()((o=i=function(o){function e(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return s(function i(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e=o.call.apply(o,[this].concat(r))||this),"props",{baseCls:"bi-list-item-select",text:"",title:"",value:""}),e}return l(e,o),e.prototype.render=function(){var n=this;return{type:a.TextButtonXtype,text:this.options.text,value:this.options.value,trigger:"dblclick",textAlign:"left",hgap:5,handler:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];n.fireEvent.apply(n,[BI.Controller.EVENT_CHANGE,BI.Events.CLICK].concat(t))}}},e}(BI.BasicButton),s(i,"xtype","bi.formula.function_item"),n=o))||n;t.FormulaFunctionItem=u},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FormulaVarItem=void 0;var n,i,o,a=r(1);function l(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function s(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function u(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var c=(0,r(0).shortcut)()((o=i=function(i){function e(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return u(l(e=i.call.apply(i,[this].concat(r))||this),"leaf",void 0),u(l(e),"props",{text:"",title:"",value:"",layoutType:a.MidTreeLeafItemXtype}),e}s(e,i);var t=e.prototype;return t.render=function(){var n=this;return{type:a.HtapeXtype,items:[{type:a.LabelXtype,width:16},{type:this.options.layoutType,cls:"bi-list-item-select",ref:function(e){n.leaf=e},text:this.options.text,value:this.options.value,trigger:"dblclick",textAlign:"left",handler:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];n.fireEvent.apply(n,[BI.Controller.EVENT_CHANGE,BI.Events.CLICK].concat(t))}}]}},t.setSelected=function(e){i.prototype.setSelected.call(this,e),this.leaf.setSelected(e)},e}(BI.BasicButton),u(i,"xtype","bi.formula.var_item"),n=o))||n;t.FormulaVarItem=c},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ComplexFormulaInserter=void 0;var n,i,o,a=r(3),l=r(1);function s(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function u(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function c(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var f=(0,r(0).shortcut)()((o=i=function(i){function e(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return c(s(e=i.call.apply(i,[this].concat(r))||this),"props",{value:{formula:"",keepFormulaWhenExportOrEdit:!1,keepFormulaWhenReportOrAnalyze:!0}}),c(s(e),"exportOrEditCheckbox",void 0),c(s(e),"reportOrAnalyzeCheckbox",void 0),e}u(e,i);var t=e.prototype;return t.getToolbarLayout=function(){var t=this;return{type:l.VerticalAdaptXtype,items:[{type:l.MultiSelectItemXtype,ref:function(e){t.exportOrEditCheckbox=e},width:180,lgap:10,text:BI.i18nText("BI-Basic_Export_Or_Edit_Keep_Formula"),selected:this.options.value.keepFormulaWhenExportOrEdit,listeners:[{eventName:BI.MultiSelectItem.EVENT_CHANGE,action:function(){t.exportOrEditCheckbox.isSelected()?(t.reportOrAnalyzeCheckbox.setEnable(!1),t.reportOrAnalyzeCheckbox.setSelected(!0)):t.reportOrAnalyzeCheckbox.setEnable(!0)}}]},{type:l.MultiSelectItemXtype,ref:function(e){t.reportOrAnalyzeCheckbox=e},width:220,lgap:10,text:BI.i18nText("BI-Basic_Report_Or_Analyze_Keep_Formula"),disabled:this.options.value.keepFormulaWhenExportOrEdit,selected:this.options.value.keepFormulaWhenReportOrAnalyze},{type:l.ButtonXtype,text:BI.i18nText("BI-Basic_Check_Validation"),handler:function(){t.validate()}}]}},t.getValue=function(){return{formula:this.formulaEditor.getValue(),keepFormulaWhenExportOrEdit:this.exportOrEditCheckbox.isSelected(),keepFormulaWhenReportOrAnalyze:this.reportOrAnalyzeCheckbox.isSelected()}},e}(a.FormulaInserter),c(i,"xtype","bi.formula_operating_panel.complex.inserter"),n=o))||n;t.ComplexFormulaInserter=f},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RegularFormulaInserter=void 0;var n,i,o,a=r(3),l=r(1);function s(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}var u=(0,r(0).shortcut)()((o=i=function(e){function t(){return e.apply(this,arguments)||this}return s(t,e),t.prototype.getToolbarLayout=function(){var e=this;return{type:l.AbsoluteXtype,items:[{el:{type:l.ButtonXtype,text:BI.i18nText("BI-Basic_Check_Validation"),handler:function(){e.validate()}},right:93,top:12}]}},t}(a.FormulaInserter),function c(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}(i,"xtype","bi.formula_operating_panel.regular.inserter"),n=o))||n;t.RegularFormulaInserter=u},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FormulaOpeartingPanel=void 0;var n,i,o,a=r(1),l=r(0),s=r(4),u=r(16),c=r(3),f=r(5);function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function d(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function h(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var m=(0,l.shortcut)()(n=(0,l.store)(u.FormulaModel)((o=i=function(o){function e(){for(var t,e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];return h(p(t=o.call.apply(o,[this].concat(r))||this),"functionTypeGroup",void 0),h(p(t),"functionNameGroup",void 0),h(p(t),"model",void 0),h(p(t),"store",void 0),h(p(t),"descriptionLabel",void 0),h(p(t),"searchEditor",void 0),h(p(t),"relatedFunctionNameGroup",void 0),h(p(t),"formulaEditor",void 0),h(p(t),"varTree",void 0),h(p(t),"props",{inserterType:c.FormulaInserter.xtype,value:{formula:""},configLoader:function(){return new Promise(function(e){e({vars:[],JSONs:[]})})}}),h(p(t),"watch",{functionNames:function(){t.functionNameGroup.populate(t.model.functionNames),t.scrollFunctionName2View()},selectedFunctionNameOrVarName:function(){(0,s.isBelong2FormulaFunction)(t.model.selectedFunctionNameOrVarName)&&(t.functionNameGroup.setValue(t.model.selectedFunctionNameOrVarName),t.scrollFunctionName2View())},selectedFunctionType:function(){t.functionTypeGroup.setValue(t.model.selectedFunctionType),t.functionNameGroup.setValue(t.model.selectedFunctionNameOrVarName)},functionDescription:function(){t.descriptionLabel.setText(t.model.functionDescription)},relatedFunctionNames:function i(){var i=t.model.relatedFunctionNames;t.relatedFunctionNameGroup.populate(i);var e=BI.isEmptyArray(i)?null:BI.first(i).value;t.relatedFunctionNameGroup.setValue(e),e&&t.store.setSelectedFunctionName(e)},isCached:function(){t.functionTypeGroup.populate((0,s.transformFormulaJSONs2FunctionTypes)()),t.functionTypeGroup.setValue(t.model.selectedFunctionType),t.functionNameGroup.setValue(t.model.selectedFunctionNameOrVarName),t.varTree.populate((0,s.transformFormulaVarItems)())}}),t}d(e,o);var t=e.prototype;return t.render=function(){var i=this;return{type:a.VtapeXtype,items:[{el:{type:a.LeftRightVerticalAdaptLayoutXtype,items:{left:[{type:a.LabelXtype,text:BI.i18nText("BI-Basic_Please_Input_Formula")}],right:[{type:a.SearchEditorXtype,ref:function(e){i.searchEditor=e},width:194,listeners:[{eventName:BI.SearchEditor.EVENT_ENTER,action:function(){i.store.setKeyword(i.searchEditor.getValue())}},{eventName:BI.SearchEditor.EVENT_EMPTY,action:function(){i.store.setKeyword("")}}]},{lgap:5,el:{type:a.ButtonXtype,text:BI.i18nText("BI-Basic_Search"),minWidth:0,width:54,handler:function(){i.store.setKeyword(i.searchEditor.getValue())}}}]}},height:24},{el:{type:a.HtapeXtype,items:[{type:this.options.inserterType,ref:function(e){i.formulaEditor=e},value:this.options.value,rgap:10,listeners:[{eventName:"EVENT_SHOW_HINT",action:function(e){i.store.setSelectedFunctionName(e),i.scrollFunctionName2View()}},{eventName:"EVENT_SELECT_HINT",action:function(e){i.store.setSelectedFunctionName(e),i.scrollFunctionName2View()}}]},{el:{type:a.ButtonGroupXtype,ref:function(e){i.relatedFunctionNameGroup=e},cls:"bi-border",items:this.model.relatedFunctionNames,layouts:[{type:a.VerticalXtype}],listeners:[{eventName:BI.ButtonGroup.EVENT_CHANGE,action:function(e){i.store.setSelectedFunctionName(e)}}]},width:253}]},height:200,tgap:10},{type:a.HtapeXtype,items:[{el:{type:a.VtapeXtype,items:[{el:{type:a.LabelXtype,text:BI.i18nText("BI-Basic_Function_Type"),textAlign:"left"},height:24},{type:a.ButtonGroupXtype,ref:function(e){i.functionTypeGroup=e},value:this.model.selectedFunctionType,cls:"bi-border",items:(0,s.transformFormulaJSONs2FunctionTypes)(),layouts:[{type:a.VerticalXtype}],listeners:[{eventName:BI.ButtonGroup.EVENT_CHANGE,action:function(e){i.store.setSelectedFunctionType(e)}}]}]},width:135},{el:{type:a.VtapeXtype,items:[{el:{type:a.LabelXtype,text:BI.i18nText("BI-Basic_Function_Name"),textAlign:"left"},height:24},{type:a.ButtonGroupXtype,ref:function(e){i.functionNameGroup=e},value:this.model.selectedFunctionNameOrVarName,cls:"bi-border",items:this.model.functionNames,layouts:[{type:a.VerticalXtype}],listeners:[{eventName:BI.Controller.EVENT_CHANGE,action:function(e,t,r,n){i.store.setSelectedFunctionName(t,!1),"dblclick"===n.type&&i.formulaEditor.insertFunction(t)}}]}]},lgap:5,width:135},{el:{type:a.VtapeXtype,items:[{el:{type:a.LabelXtype,text:BI.i18nText("BI-Basic_Vars"),textAlign:"left"},height:24},{type:a.CustomTreeXtype,cls:"bi-border",chooseType:BI.Selection.Single,ref:function(e){i.varTree=e},el:{type:a.ButtonTreeXtype,layouts:[{type:a.VerticalXtype}]},items:(0,s.transformFormulaVarItems)(),listeners:[{eventName:BI.Controller.EVENT_CHANGE,action:function(e,t,r,n){e===BI.Events.CLICK&&(i.store.setSelectedVarName(t),n&&"dblclick"===n.type&&i.formulaEditor.insertField(t))}}]}]},lgap:5,width:300},{el:{type:a.VtapeXtype,items:[{el:{type:a.LabelXtype,text:BI.i18nText("BI-Basic_Function_Description"),textAlign:"left"},height:24},{type:a.VerticalXtype,cls:"bi-border",items:[{el:{type:a.TextXtype,ref:function(e){i.descriptionLabel=e},text:this.model.functionDescription,whiteSpace:"normal",hgap:5}}]}]},lgap:5}]}]}},t.beforeInit=function(t){var r=this;(0,s.isFormulaConfigCached)()?t():this.options.configLoader().then(function(e){(0,s.setFormulaConfigCache)(e),r.store.setSelectedFunctionName(f.DEFAULT_FUNCTION_NAME),t()})},t.scrollFunctionName2View=function(){var t=this;if(this.model.needScrollToView){var e=this.functionNameGroup.getAllButtons().find(function(e){return e.getValue()===t.model.selectedFunctionNameOrVarName});BI.isNull(e)||e.element[0].scrollIntoView()}},t.getValue=function(){return this.formulaEditor.getValue()},t.loadConfigData=function(e){(0,s.isFormulaConfigCached)()||((0,s.setFormulaConfigCache)(e),this.store.setSelectedFunctionName(f.DEFAULT_FUNCTION_NAME))},e}(BI.LoadingPane),h(i,"xtype","bi.formula_operating_panel"),n=o))||n)||n;t.FormulaOpeartingPanel=m},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FormulaModel=void 0;var n,i,o,a=r(0),l=r(4),s=r(5);function u(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function c(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function f(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var p=(0,a.model)()((o=i=function(n){function e(){for(var i,e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return f(u(i=n.call.apply(n,[this].concat(t))||this),"computed",{functionNames:function(){return(0,l.transformFormulaJSONs2FunctionNames)(i.model.selectedFunctionType)},functionDescription:function(){return(0,l.getFunctionDescriptionByFunctionName)(i.model.selectedFunctionNameOrVarName)||(0,l.getVarDescriptionByVarName)(i.model.selectedFunctionNameOrVarName)},relatedFunctionNames:function(){return(0,l.getSearchedFunctionNames)(i.model.keyword)}}),f(u(i),"actions",{setSelectedFunctionType:function(e){i.model.selectedFunctionType=e,i.model.selectedFunctionNameOrVarName=(BI.first((0,l.transformFormulaJSONs2FunctionNames)(i.model.selectedFunctionType))||{}).value},setSelectedFunctionName:function(e){var t=!(1<arguments.length&&arguments[1]!==undefined)||arguments[1],r=e.toUpperCase(),n=(0,l.getFunctionTypeByFunctionName)(r);BI.isNull(n)||(i.model.selectedFunctionType=n,i.model.selectedFunctionNameOrVarName=r,i.model.needScrollToView=t)},setKeyword:function(e){i.model.keyword=e},setSelectedVarName:function(e){i.model.selectedFunctionNameOrVarName=e}}),i}return c(e,n),e.prototype.state=function(){return{selectedFunctionType:(0,l.getFunctionTypeByFunctionName)(s.DEFAULT_FUNCTION_NAME)||s.DEFAULT_FUNCTION_TYPE,selectedFunctionNameOrVarName:s.DEFAULT_FUNCTION_NAME,keyword:"",needScrollToView:!0}},e}(a.Model),f(i,"xtype","bi.model.formula_operating_panel"),n=o))||n;t.FormulaModel=p},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ParameterEditor=void 0;var n,i,o,a=r(0),l=r(1),s=r(18),u=r(19),c=r(29),f=r(6);function p(e){return function n(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}(e)||function t(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function r(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function d(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function g(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var v=(0,a.shortcut)()(n=(0,a.store)(s.ParameterModel)((o=i=function(i){function e(){for(var t,e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];return g(h(t=i.call.apply(i,[this].concat(r))||this),"props",{height:200,title:"",headers:f.defaultHeaderItems,value:[]}),g(h(t),"parameterInputs",void 0),g(h(t),"model",void 0),g(h(t),"store",void 0),g(h(t),"watch",{parameters:function(){t.parameterInputs.populate(t.renderParameterInputs())},selectedId:function(e){t.parameterInputs.setValue(e)}}),t}m(e,i);var t=e.prototype;return t.render=function(){var t=this;return this.setDefaultValue(),{type:l.VtapeXtype,items:[{el:this.renderHeader(),height:25},{el:{type:l.CenterXtype,cls:"bi-border",items:[{type:l.LabelXtype,text:BI.i18nText("BI-Basic_Parameter_Name")},{type:l.LabelXtype,cls:"bi-border-left",text:BI.i18nText("BI-Basic_Parameter_Value")}]},height:25},{type:l.ButtonGroupXtype,cls:"bi-border",layouts:[{type:l.VerticalXtype}],items:this.renderParameterInputs(),ref:function(e){t.parameterInputs=e}}]}},t.renderHeader=function(){var e=this,t=this.options,r=t.title,n=t.headers;return{type:c.ParameterHeader.xtype,title:r,headers:n,listeners:[{eventName:"EVENT_INSERT",action:function(){e.addItem({name:"",value:"",id:BI.UUID(),type:"String"})}},{eventName:"EVENT_DELETE",action:function(){e.removeSelectedItem()}},{eventName:"EVENT_MOVE_UP",action:function(){e.moveUp()}},{eventName:"EVENT_MOVE_DOWN",action:function(){e.moveDown()}},{eventName:"EVENT_REFRESH",action:function(){e.refresh()}}]}},t.getValue=function(){return this.model.parameters.map(function(e){return{name:e.name,value:e.value,type:e.type}})},t.setValue=function(e){this.store.setParameters(e.map(function(e){return function n(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?d(Object(r),!0).forEach(function(e){g(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):d(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}({},e,{id:BI.UUID()})}))},t.addItem=function(e){var t=e.name,r=void 0===t?"":t,n=e.value,i=void 0===n?"":n,o=e.type,a=void 0===o?"String":o;this.store.setParameters([{name:r,value:i,type:a,id:BI.UUID()}].concat(p(this.model.parameters)))},t.removeSelectedItem=function(){var t=this;this.model.selectedId?BI.Msg.confirm(BI.i18nText("BI-Basic_Prompt"),BI.i18nText("BI-Basic_Parameter_Delete_Confirm"),function(e){e&&t.store.removeSelectedParameter()}):BI.Msg.alert(BI.i18nText("BI-Basic_Prompt"),BI.i18nText("BI-Basic_Parameter_Delete_Alert"))},t.moveUp=function(){this.store.move("up")},t.moveDown=function(){this.store.move("down")},t.refresh=function(){this.setDefaultValue()},t.setDefaultValue=function(){var e=this.options.value,t=void 0===e?[]:e;this.setValue(t)},t.renderParameterInputs=function(){var t=this;return this.model.parameters.map(function(e){return{type:u.ParameterInput.xtype,inputName:e.name,inputValue:e.value,inputType:e.type,id:e.id,value:e.id,selected:e.id===t.model.selectedId}})},e}(BI.Widget),g(i,"xtype","bi.parameter_editor"),n=o))||n)||n;t.ParameterEditor=v},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ParameterModel=void 0;var n,i,o,a=r(0);function l(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function s(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function u(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var c=(0,a.model)()((o=i=function(n){function e(){for(var i,e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return u(l(i=n.call.apply(n,[this].concat(t))||this),"childContext",["selectedId","parameters"]),u(l(i),"actions",{setParameters:function(e){i.model.parameters=e},removeSelectedParameter:function(){i.setParameters(i.model.parameters.filter(function(e){return e.id!==i.model.selectedId}))},move:function(e){if(i.model.selectedId){var t=i.model.parameters.findIndex(function(e){return e.id===i.model.selectedId});if("up"===e&&0<t){var r=i.model.parameters.splice(t,1)[0];i.model.parameters.splice(t-1,0,r)}if("down"===e&&t<i.model.parameters.length-1){var n=i.model.parameters.splice(t,1)[0];i.model.parameters.splice(t+1,0,n)}}}}),i}return s(e,n),e.prototype.state=function(){return{parameters:[],selectedId:""}},e}(a.Model),u(i,"xtype","bi.model.parameter_editor"),n=o))||n;t.ParameterModel=c},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ParameterInput=void 0;var n,i,o,a=r(0),l=r(1),s=r(20),u=r(2);function c(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function f(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function p(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}r(21),r(28);var d=(0,a.shortcut)()(n=(0,a.store)(s.ParameterInputModel)((o=i=function(i){function e(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return p(c(e=i.call.apply(i,[this].concat(r))||this),"props",{inputName:"",inputValue:"",inputType:"String",height:22,id:"",baseCls:"parameter-editor-input"}),p(c(e),"store",void 0),p(c(e),"model",void 0),p(c(e),"tab",void 0),p(c(e),"parameterName",void 0),p(c(e),"parameterValue",void 0),p(c(e),"iconCombo",void 0),e}f(e,i);var t=e.prototype;return t.render=function(){var t=this,e=this.options,r=e.inputName,n=(e.inputValue,this.options.inputType),i=this.options.id;return{type:l.CenterXtype,cls:"bi-border",items:[{type:l.EditorXtype,height:22,allowBlank:!0,value:r,ref:function(e){t.parameterName=e},listeners:[{eventName:BI.TextEditor.EVENT_CHANGE,action:function(){r=t.parameterName.getValue(),t.tab.setSelect(r?n:"tip"),t.store.setParameterName(i,r)}},{eventName:BI.TextEditor.EVENT_FOCUS,action:function(){t.store.setSelectedId(i)}}]},{type:l.HtapeXtype,items:[{type:l.TabXtype,single:!0,showIndex:r?n:"tip",ref:function(e){t.tab=e},cardCreator:function(e){return t.renderInputs(e)}}]}]}},t.renderInputs=function(e){var r=this,t=this.options,n=t.inputValue,i=t.id;if("tip"===e)return{type:l.TextButtonXtype,cls:"bi-error bi-border-left",text:BI.i18nText("BI-Basic_Parameter_Please_Set_Parameter_Name"),handler:function(){r.parameterName.focus()}};var o=(0,u.getInput)(e);return{type:l.HtapeXtype,items:[{el:{type:l.IconComboXtype,cls:"bi-border-left bi-border-right",height:22,width:25,value:e,items:this.renderDownList(),ref:function(e){r.iconCombo=e},listeners:[{eventName:"EVENT_CHANGE",action:function(){r.tab.setSelect("tip");var e=r.iconCombo.getValue()[0];e&&r.tab.setSelect(e)}}]},width:25},{type:o,value:n,listeners:[{eventName:"EVENT_CHANGE",action:function(e){var t=r.iconCombo.getValue()[0];r.store.setParameterValue(i,e,t)}},{eventName:"EVENT_FOCUS",action:function(){r.store.setSelectedId(i)}}]}]}},t.renderDownList=function(){return[{text:BI.i18nText("BI-Basic_Parameter_Type_String"),value:"String",iconCls:"parameter-string-font"},{text:BI.i18nText("BI-Basic_Parameter_Type_Int"),value:"Integer",iconCls:"parameter-int-font"},{text:BI.i18nText("BI-Basic_Parameter_Type_Number"),value:"Double",iconCls:"parameter-double-font"},{text:BI.i18nText("BI-Basic_Parameter_Type_Date"),value:"Date",iconCls:"parameter-date-font"},{text:BI.i18nText("BI-Basic_Parameter_Type_Boolean"),value:"Boolean",iconCls:"parameter-boolean-font"},{text:BI.i18nText("BI-Basic_Parameter_Type_Formula"),value:"Formula",iconCls:"parameter-formula-font"}]},e}(BI.BasicButton),p(i,"xtype","bi.parameter_editor.parameter_input"),n=o))||n)||n;t.ParameterInput=d},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ParameterInputModel=void 0;var n,i,o,a=r(0);function l(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function s(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function u(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var c=(0,a.model)()((o=i=function(n){function e(){for(var i,e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return u(l(i=n.call.apply(n,[this].concat(t))||this),"context",["selectedId","parameters"]),u(l(i),"actions",{setSelectedId:function(e){i.model.selectedId=e},setParameterName:function(e,t){var r=i.getParameter(e);r&&(r.name=t)},setParameterValue:function(e,t,r){var n=i.getParameter(e);n&&(n.value=t,n.type=r)}}),i}return s(e,n),e.prototype.getParameter=function(t){return this.model.parameters.find(function(e){return e.id===t})},e}(a.Model),u(i,"xtype","bi.model.parameter_editor.parameter_input"),n=o))||n;t.ParameterInputModel=c},function(e,t,r){"use strict";r(22),r(23),r(24),r(25),r(26),r(27)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InputBoolean=void 0;var n,i,o,a=r(0),l=r(1),s=r(2);function u(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function c(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function f(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var p=(0,a.shortcut)()(n=(0,s.input)("Boolean")((o=i=function(i){function e(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return f(u(e=i.call.apply(i,[this].concat(r))||this),"props",{value:""}),f(u(e),"input",void 0),f(u(e),"hasSelected",void 0),e}c(e,i);var t=e.prototype;return t.render=function(){var t=this,e=this.options.value;return this.hasSelected=!!e,{type:l.MultiSelectItemXtype,width:80,selected:!!e,text:"true",ref:function(e){t.input=e},listeners:[{eventName:BI.MultiSelectItem.EVENT_CHANGE,action:function(){t.hasSelected=!t.hasSelected,t.fireEvent("EVENT_CHANGE",t.hasSelected)}}]}},t.doClick=function(){this.fireEvent("EVENT_FOCUS")},e}(BI.BasicButton),f(i,"xtype","bi.parameter_editor.parameter_input.boolean"),n=o))||n)||n;t.InputBoolean=p},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InputDate=void 0;var n,i,o,a=r(0),l=r(1),s=r(2);function u(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function c(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function f(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var p=(0,a.shortcut)()(n=(0,s.input)("Date")((o=i=function(i){function e(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return f(u(e=i.call.apply(i,[this].concat(r))||this),"props",{value:""}),f(u(e),"input",void 0),e}return c(e,i),e.prototype.render=function(){var i=this,e=this.options.value.split("-");return{type:l.DynamicDateComboXtype,height:22,allowBlank:!0,value:3===e.length?{year:e[0],month:e[1],day:e[2]}:"",ref:function(e){i.input=e},listeners:[{eventName:BI.DynamicDateCombo.EVENT_CONFIRM,action:function(){var e=i.input.getValue().value,t=e.day,r=e.month,n=e.year;i.fireEvent("EVENT_CHANGE","".concat(n,"-").concat(r,"-").concat(t))}},{eventName:BI.DynamicDateCombo.EVENT_FOCUS,action:function(){i.fireEvent("EVENT_FOCUS")}}]}},e}(BI.Widget),f(i,"xtype","bi.parameter_editor.parameter_input.date"),n=o))||n)||n;t.InputDate=p},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InputInt=void 0;var n,i,o,a=r(0),l=r(1),s=r(2);function u(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function c(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function f(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var p=(0,a.shortcut)()(n=(0,s.input)("Integer")((o=i=function(i){function e(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return f(u(e=i.call.apply(i,[this].concat(r))||this),"props",{value:""}),f(u(e),"input",void 0),e}return c(e,i),e.prototype.render=function(){var t=this,e=this.options.value;return{type:l.EditorXtype,height:22,allowBlank:!0,value:e,ref:function(e){t.input=e},validationChecker:function(e){return BI.isInteger(e)},listeners:[{eventName:BI.Editor.EVENT_CHANGE,action:function(){var e=t.input.getValue();t.fireEvent("EVENT_CHANGE",e)}},{eventName:BI.Editor.EVENT_FOCUS,action:function(){t.fireEvent("EVENT_FOCUS")}}]}},e}(BI.Widget),f(i,"xtype","bi.parameter_editor.parameter_input.int"),n=o))||n)||n;t.InputInt=p},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InputDouble=void 0;var n,i,o,a=r(0),l=r(1),s=r(2);function u(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function c(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function f(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var p=(0,a.shortcut)()(n=(0,s.input)("Double")((o=i=function(i){function e(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return f(u(e=i.call.apply(i,[this].concat(r))||this),"props",{value:""}),f(u(e),"input",void 0),e}return c(e,i),e.prototype.render=function(){var t=this,e=this.options.value;return{type:l.EditorXtype,height:22,allowBlank:!0,value:e,ref:function(e){t.input=e},validationChecker:function(e){return BI.isNumeric(e)},listeners:[{eventName:BI.Editor.EVENT_CHANGE,action:function(){var e=t.input.getValue();t.fireEvent("EVENT_CHANGE",e)}},{eventName:BI.Editor.EVENT_FOCUS,action:function(){t.fireEvent("EVENT_FOCUS")}}]}},e}(BI.Widget),f(i,"xtype","bi.parameter_editor.parameter_input.double"),n=o))||n)||n;t.InputDouble=p},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InputString=void 0;var n,i,o,a=r(0),l=r(1),s=r(2);function u(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function c(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function f(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var p=(0,a.shortcut)()(n=(0,s.input)("String")((o=i=function(i){function e(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return f(u(e=i.call.apply(i,[this].concat(r))||this),"props",{value:""}),f(u(e),"input",void 0),e}return c(e,i),e.prototype.render=function(){var t=this,e=this.options.value;return{type:l.EditorXtype,height:22,allowBlank:!0,value:e,ref:function(e){t.input=e},listeners:[{eventName:BI.Editor.EVENT_CHANGE,action:function(){var e=t.input.getValue();t.fireEvent("EVENT_CHANGE",e)}},{eventName:BI.Editor.EVENT_FOCUS,action:function(){t.fireEvent("EVENT_FOCUS")}}]}},e}(BI.Widget),f(i,"xtype","bi.parameter_editor.parameter_input.string"),n=o))||n)||n;t.InputString=p},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InputFormula=void 0;var n,i,o,a=r(0),l=r(1),s=r(2);function u(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function c(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function f(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var p=(0,a.shortcut)()(n=(0,s.input)("Formula")((o=i=function(i){function e(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return f(u(e=i.call.apply(i,[this].concat(r))||this),"props",{value:""}),f(u(e),"input",void 0),e}c(e,i);var t=e.prototype;return t.mounted=function(){},t.render=function(){var t=this,e=this.options.value;return{type:l.EditorXtype,height:22,allowBlank:!0,value:e,ref:function(e){t.input=e},listeners:[{eventName:BI.Editor.EVENT_CHANGE,action:function(){var e=t.input.getValue();t.fireEvent("EVENT_CHANGE",e)}},{eventName:BI.Editor.EVENT_FOCUS,action:function(){t.fireEvent("EVENT_FOCUS")}}]}},e}(BI.Widget),f(i,"xtype","bi.parameter_editor.parameter_input.formula"),n=o))||n)||n;t.InputFormula=p},function(e,t,r){},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ParameterHeader=void 0;var n,i,o,a=r(0),l=r(1),s=r(6);function u(e,t){e.prototype=Object.create(t.prototype),function a(e,t){for(var r=Object.getOwnPropertyNames(t),n=0;n<r.length;n++){var i=r[n],o=Object.getOwnPropertyDescriptor(t,i);o&&o.configurable&&e[i]===undefined&&Object.defineProperty(e,i,o)}return e}(e.prototype.constructor=e,t)}function c(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var f=(0,a.shortcut)()((o=i=function(o){function e(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return c(function i(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e=o.call.apply(o,[this].concat(r))||this),"props",{title:"",headers:s.defaultHeaderItems}),e}u(e,o);var t=e.prototype;return t.render=function(){var e=this.options.title;return{type:l.LeftRightVerticalAdaptLayoutXtype,items:{left:[{type:l.LabelXtype,lgap:2,text:e,textAlign:"left"}],right:this.renderItem()}}},t.renderItem=function(){var r=this;return this.options.headers.map(function(t){if(BI.isString(t)){var e=s.headerItemsData.find(function(e){return e.type===t});return e?{type:l.IconButtonXtype,cls:e.cls,width:25,title:BI.i18nText(e.title),handler:function(){r.fireEvent(e.event)}}:{type:"bi.default"}}return t})},e}(BI.Widget),c(i,"xtype","bi.parameter_editor.header"),n=o))||n;t.ParameterHeader=f}]);